shoelace-rails-ui 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +42 -0
- data/LICENSE.txt +21 -0
- data/README-real.md +24 -0
- data/README.md +43 -0
- data/Rakefile +16 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/lib/shoelace/rails/ui/version.rb +9 -0
- data/lib/shoelace/rails/ui.rb +12 -0
- data/regenerate.rb +48 -0
- data/remote-src/.DS_Store +0 -0
- data/remote-src/2.0.0.beta64/.DS_Store +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.editorconfig +15 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/CODE_OF_CONDUCT.md +44 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/FUNDING.yml +1 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/config.yml +4 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/SECURITY.md +7 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/node.js.yml +30 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/release.yml +17 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.gitignore +8 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.husky/pre-commit +4 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.prettierignore +12 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.vscode/extensions.json +9 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.vscode/settings.json +4 -0
- data/remote-src/2.0.0.beta64/shoelace-next/CONTRIBUTING.md +5 -0
- data/remote-src/2.0.0.beta64/shoelace-next/LICENSE.md +7 -0
- data/remote-src/2.0.0.beta64/shoelace-next/README.md +94 -0
- data/remote-src/2.0.0.beta64/shoelace-next/cspell.json +110 -0
- data/remote-src/2.0.0.beta64/shoelace-next/custom-elements-manifest.config.js +104 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/404.md +5 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/_sidebar.md +89 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/icons/sprite.svg +1 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/chrome.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/edge.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/firefox.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/logo.svg +7 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/og-image.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/opera.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/safari.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/shoe.svg +134 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/tie.webp +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/touch-icon.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/twitter-card.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-content-team.svg +80 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-not-found.svg +1 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/walk.gif +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/wordmark.svg +7 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.css +228 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.js +376 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/metadata/metadata.js +537 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/scroll-position/scroll-position.js +24 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/lunr.min.js +1311 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.css +180 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.js +293 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.css +29 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.js +83 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/styles/docs.css +642 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/alert.md +441 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animated-image.md +128 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animation.md +351 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/avatar.md +201 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/badge.md +191 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb-item.md +35 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb.md +266 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button-group.md +470 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button.md +453 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/card.md +311 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/checkbox.md +71 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/color-picker.md +101 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/details.md +89 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dialog.md +265 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/divider.md +152 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/drawer.md +452 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dropdown.md +389 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-bytes.md +126 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-date.md +120 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-number.md +124 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon-button.md +160 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon.md +711 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/image-comparer.md +51 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/include.md +47 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/input.md +283 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-item.md +255 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-label.md +52 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu.md +49 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/mutation-observer.md +196 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-bar.md +144 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-ring.md +178 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/qr-code.md +167 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio-group.md +52 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio.md +59 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/range.md +180 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/rating.md +153 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/relative-time.md +105 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/resize-observer.md +68 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/responsive-media.md +73 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/select.md +457 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/skeleton.md +439 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/spinner.md +86 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/split-panel.md +671 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/switch.md +77 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-group.md +359 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-panel.md +41 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab.md +29 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tag.md +142 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/textarea.md +184 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tooltip.md +410 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/visually-hidden.md +47 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/angular.md +46 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/react.md +156 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/vue.md +92 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/customizing.md +153 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/form-controls.md +336 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/installation.md +137 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/localization.md +140 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/overview.md +131 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/themes.md +139 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/usage.md +173 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/index.html +98 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/accessibility.md +18 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/changelog.md +925 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/community.md +53 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/contributing.md +261 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/border-radius.md +12 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/color.md +439 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/elevation.md +11 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/spacing.md +16 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/transition.md +11 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/typography.md +58 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/z-index.md +11 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-laravel.md +117 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-nextjs.md +137 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-rails.md +103 -0
- data/remote-src/2.0.0.beta64/shoelace-next/lint-staged.config.js +4 -0
- data/remote-src/2.0.0.beta64/shoelace-next/package-lock.json +9534 -0
- data/remote-src/2.0.0.beta64/shoelace-next/package.json +93 -0
- data/remote-src/2.0.0.beta64/shoelace-next/prettier.config.cjs +17 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/build.js +158 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-css.js +42 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-icons.js +71 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-metadata.js +11 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-react.js +63 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-search.js +100 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-vscode-data.js +58 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/plopfile.js +67 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/component.hbs +44 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/docs.hbs +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/styles.hbs +10 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/tests.hbs +13 -0
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/shared.js +18 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.styles.ts +95 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.test.ts +93 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.ts +238 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.styles.ts +52 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.test.ts +13 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.ts +120 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.styles.ts +10 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.ts +222 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animations.ts +15 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.styles.ts +66 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.test.ts +111 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.ts +83 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.styles.ts +94 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.test.ts +77 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.ts +53 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.styles.ts +12 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.test.ts +104 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.ts +82 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.styles.ts +85 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.test.ts +160 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.ts +92 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.styles.ts +637 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.ts +209 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.styles.ts +15 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.ts +84 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.styles.ts +62 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.test.ts +139 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.ts +68 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.styles.ts +108 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.test.ts +47 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.ts +203 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.styles.ts +326 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.test.ts +43 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.ts +853 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.styles.ts +73 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.test.ts +153 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.ts +192 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.styles.ts +106 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.test.ts +135 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.ts +296 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.styles.ts +25 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.ts +34 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.styles.ts +142 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.test.ts +135 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.ts +377 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.styles.ts +58 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.test.ts +147 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.ts +459 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-bytes/format-bytes.ts +35 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-date/format-date.ts +81 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-number/format-number.ts +69 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.styles.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.ts +131 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.default.ts +9 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.system.ts +97 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.ts +49 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/request.ts +36 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.styles.ts +48 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.ts +100 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.styles.ts +77 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.ts +147 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.styles.ts +10 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.test.ts +62 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.ts +80 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/request.ts +23 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.styles.ts +282 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.test.ts +35 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.ts +410 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.styles.ts +18 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.ts +205 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.styles.ts +84 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.ts +92 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.styles.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.ts +30 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.styles.ts +10 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.test.ts +13 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.ts +118 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.styles.ts +57 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.test.ts +89 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.ts +74 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.styles.ts +66 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.test.ts +68 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.ts +84 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.styles.ts +22 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.ts +90 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.styles.ts +107 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.test.ts +65 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.ts +226 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.styles.ts +47 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.ts +66 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.styles.ts +192 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.ts +273 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.styles.ts +79 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.ts +249 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/relative-time/relative-time.ts +116 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.styles.ts +10 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.ts +87 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.styles.ts +36 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.ts +50 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.styles.ts +331 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.test.ts +56 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.ts +560 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.styles.ts +60 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.ts +46 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.styles.ts +56 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.test.ts +24 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.ts +34 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.styles.ts +76 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.test.ts +13 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.ts +272 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.styles.ts +135 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.test.ts +64 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.ts +187 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.styles.ts +61 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.ts +104 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.styles.ts +209 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.ts +409 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.styles.ts +17 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.ts +49 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.styles.ts +110 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.ts +92 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.styles.ts +167 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.test.ts +35 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.ts +339 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.styles.ts +131 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.test.ts +117 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.ts +355 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.styles.ts +18 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.test.ts +39 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.ts +24 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/declaration.d.ts +8 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/animate.ts +70 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/event.ts +35 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/focus-visible.ts +26 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/form-control.ts +203 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/formdata-event-polyfill.ts +93 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/math.ts +8 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/modal.ts +53 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/number.ts +32 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/offset.ts +13 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/scroll.ts +57 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/slot.ts +91 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/string.ts +3 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/support.ts +15 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/tabbable.ts +81 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/watch.ts +40 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/shoelace.ts +58 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/styles/component.styles.ts +23 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/styles/form-control.styles.ts +52 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/styles/utility.styles.ts +23 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/themes/dark.styles.ts +524 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/themes/light.styles.ts +524 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de-ch.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/en.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/es.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/fr.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/he.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ja.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/nl.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pl.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pt.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ru.ts +21 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation-registry.ts +59 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation.ts +1 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/base-path.ts +43 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/form.ts +22 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/icon-library.ts +1 -0
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/localize.ts +5 -0
- data/remote-src/2.0.0.beta64/shoelace-next/tsconfig.json +35 -0
- data/remote-src/2.0.0.beta64/shoelace-next/vercel.json +4 -0
- data/remote-src/2.0.0.beta64/shoelace-next/web-test-runner.config.js +14 -0
- data/shoelace-rails-ui.gemspec +39 -0
- data/shoelace-rails-ui.rb +0 -0
- metadata +377 -0
@@ -0,0 +1,184 @@
|
|
1
|
+
# Textarea
|
2
|
+
|
3
|
+
[component-header:sl-textarea]
|
4
|
+
|
5
|
+
Textareas collect data from the user and allow multiple lines of text.
|
6
|
+
|
7
|
+
```html preview
|
8
|
+
<sl-textarea></sl-textarea>
|
9
|
+
```
|
10
|
+
|
11
|
+
```jsx react
|
12
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
13
|
+
|
14
|
+
const App = () => (
|
15
|
+
<SlTextarea />
|
16
|
+
);
|
17
|
+
```
|
18
|
+
|
19
|
+
?> This component works with standard `<form>` elements. Please refer to the section on [form controls](/getting-started/form-controls) to learn more about form submission and client-side validation.
|
20
|
+
|
21
|
+
## Examples
|
22
|
+
|
23
|
+
### Rows
|
24
|
+
|
25
|
+
Use the `rows` attribute to change the number of text rows that get shown.
|
26
|
+
|
27
|
+
```html preview
|
28
|
+
<sl-textarea rows="2"></sl-textarea>
|
29
|
+
```
|
30
|
+
|
31
|
+
```jsx react
|
32
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
33
|
+
|
34
|
+
const App = () => (
|
35
|
+
<SlTextarea rows={2} />
|
36
|
+
);
|
37
|
+
```
|
38
|
+
|
39
|
+
### Placeholders
|
40
|
+
|
41
|
+
Use the `placeholder` attribute to add a placeholder.
|
42
|
+
|
43
|
+
```html preview
|
44
|
+
<sl-textarea placeholder="Type something"></sl-textarea>
|
45
|
+
```
|
46
|
+
|
47
|
+
```jsx react
|
48
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
49
|
+
|
50
|
+
const App = () => (
|
51
|
+
<SlTextarea placeholder="Type something" />
|
52
|
+
);
|
53
|
+
```
|
54
|
+
|
55
|
+
### Filled Textareas
|
56
|
+
|
57
|
+
Add the `filled` attribute to draw a filled textarea.
|
58
|
+
|
59
|
+
```html preview
|
60
|
+
<sl-textarea placeholder="Type something" filled></sl-textarea>
|
61
|
+
```
|
62
|
+
|
63
|
+
```jsx react
|
64
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
65
|
+
|
66
|
+
const App = () => (
|
67
|
+
<SlTextarea placeholder="Type something" filled />
|
68
|
+
);
|
69
|
+
```
|
70
|
+
|
71
|
+
### Disabled
|
72
|
+
|
73
|
+
Use the `disabled` attribute to disable a textarea.
|
74
|
+
|
75
|
+
```html preview
|
76
|
+
<sl-textarea placeholder="Textarea" disabled></sl-textarea>
|
77
|
+
```
|
78
|
+
|
79
|
+
```jsx react
|
80
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
81
|
+
|
82
|
+
const App = () => (
|
83
|
+
<SlTextarea placeholder="Textarea" disabled />
|
84
|
+
);
|
85
|
+
```
|
86
|
+
|
87
|
+
### Sizes
|
88
|
+
|
89
|
+
Use the `size` attribute to change a textarea's size.
|
90
|
+
|
91
|
+
```html preview
|
92
|
+
<sl-textarea placeholder="Small" size="small"></sl-textarea>
|
93
|
+
<br>
|
94
|
+
<sl-textarea placeholder="Medium" size="medium"></sl-textarea>
|
95
|
+
<br>
|
96
|
+
<sl-textarea placeholder="Large" size="large"></sl-textarea>
|
97
|
+
```
|
98
|
+
|
99
|
+
```jsx react
|
100
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
101
|
+
|
102
|
+
const App = () => (
|
103
|
+
<>
|
104
|
+
<SlTextarea placeholder="Small" size="small"></SlTextarea>
|
105
|
+
<br />
|
106
|
+
<SlTextarea placeholder="Medium" size="medium"></SlTextarea>
|
107
|
+
<br />
|
108
|
+
<SlTextarea placeholder="Large" size="large"></SlTextarea>
|
109
|
+
</>
|
110
|
+
);
|
111
|
+
```
|
112
|
+
|
113
|
+
### Labels
|
114
|
+
|
115
|
+
Use the `label` attribute to give the textarea an accessible label. For labels that contain HTML, use the `label` slot instead.
|
116
|
+
|
117
|
+
```html preview
|
118
|
+
<sl-textarea label="Comments"></sl-textarea>
|
119
|
+
```
|
120
|
+
|
121
|
+
```jsx react
|
122
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
123
|
+
|
124
|
+
const App = () => (
|
125
|
+
<SlTextarea label="Comments" />
|
126
|
+
);
|
127
|
+
```
|
128
|
+
|
129
|
+
### Help Text
|
130
|
+
|
131
|
+
Add descriptive help text to a textarea with the `help-text` attribute. For help texts that contain HTML, use the `help-text` slot instead.
|
132
|
+
|
133
|
+
```html preview
|
134
|
+
<sl-textarea
|
135
|
+
label="Feedback"
|
136
|
+
help-text="Please tell us what you think."
|
137
|
+
>
|
138
|
+
</sl-textarea>
|
139
|
+
```
|
140
|
+
|
141
|
+
```jsx react
|
142
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
143
|
+
|
144
|
+
const App = () => (
|
145
|
+
<SlTextarea
|
146
|
+
label="Feedback"
|
147
|
+
help-text="Please tell us what you think."
|
148
|
+
/>
|
149
|
+
);
|
150
|
+
```
|
151
|
+
|
152
|
+
### Prevent Resizing
|
153
|
+
|
154
|
+
By default, textareas can be resized vertically by the user. To prevent resizing, set the `resize` attribute to `none`.
|
155
|
+
|
156
|
+
```html preview
|
157
|
+
<sl-textarea resize="none"></sl-textarea>
|
158
|
+
```
|
159
|
+
|
160
|
+
```jsx react
|
161
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
162
|
+
|
163
|
+
const App = () => (
|
164
|
+
<SlTextarea resize="none" />
|
165
|
+
);
|
166
|
+
```
|
167
|
+
|
168
|
+
### Expand with Content
|
169
|
+
|
170
|
+
Textareas will automatically resize to expand to fit their content when `resize` is set to `auto`.
|
171
|
+
|
172
|
+
```html preview
|
173
|
+
<sl-textarea resize="auto"></sl-textarea>
|
174
|
+
```
|
175
|
+
|
176
|
+
```jsx react
|
177
|
+
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
|
178
|
+
|
179
|
+
const App = () => (
|
180
|
+
<SlTextarea resize="auto" />
|
181
|
+
);
|
182
|
+
```
|
183
|
+
|
184
|
+
[component-metadata:sl-textarea]
|
@@ -0,0 +1,410 @@
|
|
1
|
+
# Tooltip
|
2
|
+
|
3
|
+
[component-header:sl-tooltip]
|
4
|
+
|
5
|
+
Tooltips display additional information based on a specific action.
|
6
|
+
|
7
|
+
A tooltip's target is its _first child element_, so you should only wrap one element inside of the tooltip. If you need the tooltip to show up for multiple elements, nest them inside a container first.
|
8
|
+
|
9
|
+
Tooltips use `display: contents` so they won't interfere with how elements are positioned in a flex or grid layout.
|
10
|
+
|
11
|
+
```html preview
|
12
|
+
<sl-tooltip content="This is a tooltip">
|
13
|
+
<sl-button>Hover Me</sl-button>
|
14
|
+
</sl-tooltip>
|
15
|
+
```
|
16
|
+
|
17
|
+
```jsx react
|
18
|
+
import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react';
|
19
|
+
|
20
|
+
const App = () => (
|
21
|
+
<SlTooltip content="This is a tooltip">
|
22
|
+
<SlButton>Hover Me</SlButton>
|
23
|
+
</SlTooltip>
|
24
|
+
);
|
25
|
+
```
|
26
|
+
|
27
|
+
## Examples
|
28
|
+
|
29
|
+
### Placement
|
30
|
+
|
31
|
+
Use the `placement` attribute to set the preferred placement of the tooltip.
|
32
|
+
|
33
|
+
```html preview
|
34
|
+
<div class="tooltip-placement-example">
|
35
|
+
<div class="tooltip-placement-example-row">
|
36
|
+
<sl-tooltip content="top-start" placement="top-start">
|
37
|
+
<sl-button></sl-button>
|
38
|
+
</sl-tooltip>
|
39
|
+
|
40
|
+
<sl-tooltip content="top" placement="top">
|
41
|
+
<sl-button></sl-button>
|
42
|
+
</sl-tooltip>
|
43
|
+
|
44
|
+
<sl-tooltip content="top-end" placement="top-end">
|
45
|
+
<sl-button></sl-button>
|
46
|
+
</sl-tooltip>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="tooltip-placement-example-row">
|
50
|
+
<sl-tooltip content="left-start" placement="left-start">
|
51
|
+
<sl-button></sl-button>
|
52
|
+
</sl-tooltip>
|
53
|
+
|
54
|
+
<sl-tooltip content="right-start" placement="right-start">
|
55
|
+
<sl-button></sl-button>
|
56
|
+
</sl-tooltip>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<div class="tooltip-placement-example-row">
|
60
|
+
<sl-tooltip content="left" placement="left">
|
61
|
+
<sl-button></sl-button>
|
62
|
+
</sl-tooltip>
|
63
|
+
|
64
|
+
<sl-tooltip content="right" placement="right">
|
65
|
+
<sl-button></sl-button>
|
66
|
+
</sl-tooltip>
|
67
|
+
</div>
|
68
|
+
|
69
|
+
<div class="tooltip-placement-example-row">
|
70
|
+
<sl-tooltip content="left-end" placement="left-end">
|
71
|
+
<sl-button></sl-button>
|
72
|
+
</sl-tooltip>
|
73
|
+
|
74
|
+
<sl-tooltip content="right-end" placement="right-end">
|
75
|
+
<sl-button></sl-button>
|
76
|
+
</sl-tooltip>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<div class="tooltip-placement-example-row">
|
80
|
+
<sl-tooltip content="bottom-start" placement="bottom-start">
|
81
|
+
<sl-button></sl-button>
|
82
|
+
</sl-tooltip>
|
83
|
+
|
84
|
+
<sl-tooltip content="bottom" placement="bottom">
|
85
|
+
<sl-button></sl-button>
|
86
|
+
</sl-tooltip>
|
87
|
+
|
88
|
+
<sl-tooltip content="bottom-end" placement="bottom-end">
|
89
|
+
<sl-button></sl-button>
|
90
|
+
</sl-tooltip>
|
91
|
+
</div>
|
92
|
+
</div>
|
93
|
+
|
94
|
+
<style>
|
95
|
+
.tooltip-placement-example {
|
96
|
+
width: 250px;
|
97
|
+
}
|
98
|
+
|
99
|
+
.tooltip-placement-example-row:after {
|
100
|
+
content: '';
|
101
|
+
display: table;
|
102
|
+
clear: both;
|
103
|
+
}
|
104
|
+
|
105
|
+
.tooltip-placement-example sl-button {
|
106
|
+
float: left;
|
107
|
+
width: 2.5rem;
|
108
|
+
margin-right: 0.25rem;
|
109
|
+
margin-bottom: 0.25rem;
|
110
|
+
}
|
111
|
+
|
112
|
+
.tooltip-placement-example-row:nth-child(1) sl-tooltip:first-child sl-button,
|
113
|
+
.tooltip-placement-example-row:nth-child(5) sl-tooltip:first-child sl-button {
|
114
|
+
margin-left: calc(40px + 0.25rem);
|
115
|
+
}
|
116
|
+
|
117
|
+
.tooltip-placement-example-row:nth-child(2) sl-tooltip:nth-child(2) sl-button,
|
118
|
+
.tooltip-placement-example-row:nth-child(3) sl-tooltip:nth-child(2) sl-button,
|
119
|
+
.tooltip-placement-example-row:nth-child(4) sl-tooltip:nth-child(2) sl-button {
|
120
|
+
margin-left: calc((40px * 3) + (0.25rem * 3));
|
121
|
+
}
|
122
|
+
</style>
|
123
|
+
```
|
124
|
+
|
125
|
+
```jsx react
|
126
|
+
import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react';
|
127
|
+
|
128
|
+
const css = `
|
129
|
+
.tooltip-placement-example {
|
130
|
+
width: 250px;
|
131
|
+
}
|
132
|
+
|
133
|
+
.tooltip-placement-example-row:after {
|
134
|
+
content: '';
|
135
|
+
display: table;
|
136
|
+
clear: both;
|
137
|
+
}
|
138
|
+
|
139
|
+
.tooltip-placement-example sl-button {
|
140
|
+
float: left;
|
141
|
+
width: 2.5rem;
|
142
|
+
margin-right: 0.25rem;
|
143
|
+
margin-bottom: 0.25rem;
|
144
|
+
}
|
145
|
+
|
146
|
+
.tooltip-placement-example-row:nth-child(1) sl-tooltip:first-child sl-button,
|
147
|
+
.tooltip-placement-example-row:nth-child(5) sl-tooltip:first-child sl-button {
|
148
|
+
margin-left: calc(40px + 0.25rem);
|
149
|
+
}
|
150
|
+
|
151
|
+
.tooltip-placement-example-row:nth-child(2) sl-tooltip:nth-child(2) sl-button,
|
152
|
+
.tooltip-placement-example-row:nth-child(3) sl-tooltip:nth-child(2) sl-button,
|
153
|
+
.tooltip-placement-example-row:nth-child(4) sl-tooltip:nth-child(2) sl-button {
|
154
|
+
margin-left: calc((40px * 3) + (0.25rem * 3));
|
155
|
+
}
|
156
|
+
`;
|
157
|
+
|
158
|
+
const App = () => (
|
159
|
+
<>
|
160
|
+
<div className="tooltip-placement-example">
|
161
|
+
<div className="tooltip-placement-example-row">
|
162
|
+
<SlTooltip content="top-start" placement="top-start">
|
163
|
+
<SlButton />
|
164
|
+
</SlTooltip>
|
165
|
+
|
166
|
+
<SlTooltip content="top" placement="top">
|
167
|
+
<SlButton />
|
168
|
+
</SlTooltip>
|
169
|
+
|
170
|
+
<SlTooltip content="top-end" placement="top-end">
|
171
|
+
<SlButton />
|
172
|
+
</SlTooltip>
|
173
|
+
</div>
|
174
|
+
|
175
|
+
<div className="tooltip-placement-example-row">
|
176
|
+
<SlTooltip content="left-start" placement="left-start">
|
177
|
+
<SlButton />
|
178
|
+
</SlTooltip>
|
179
|
+
|
180
|
+
<SlTooltip content="right-start" placement="right-start">
|
181
|
+
<SlButton />
|
182
|
+
</SlTooltip>
|
183
|
+
</div>
|
184
|
+
|
185
|
+
<div className="tooltip-placement-example-row">
|
186
|
+
<SlTooltip content="left" placement="left">
|
187
|
+
<SlButton />
|
188
|
+
</SlTooltip>
|
189
|
+
|
190
|
+
<SlTooltip content="right" placement="right">
|
191
|
+
<SlButton />
|
192
|
+
</SlTooltip>
|
193
|
+
</div>
|
194
|
+
|
195
|
+
<div className="tooltip-placement-example-row">
|
196
|
+
<SlTooltip content="left-end" placement="left-end">
|
197
|
+
<SlButton />
|
198
|
+
</SlTooltip>
|
199
|
+
|
200
|
+
<SlTooltip content="right-end" placement="right-end">
|
201
|
+
<SlButton />
|
202
|
+
</SlTooltip>
|
203
|
+
</div>
|
204
|
+
|
205
|
+
<div className="tooltip-placement-example-row">
|
206
|
+
<SlTooltip content="bottom-start" placement="bottom-start">
|
207
|
+
<SlButton />
|
208
|
+
</SlTooltip>
|
209
|
+
|
210
|
+
<SlTooltip content="bottom" placement="bottom">
|
211
|
+
<SlButton />
|
212
|
+
</SlTooltip>
|
213
|
+
|
214
|
+
<SlTooltip content="bottom-end" placement="bottom-end">
|
215
|
+
<SlButton />
|
216
|
+
</SlTooltip>
|
217
|
+
</div>
|
218
|
+
</div>
|
219
|
+
|
220
|
+
<style>{css}</style>
|
221
|
+
</>
|
222
|
+
);
|
223
|
+
```
|
224
|
+
|
225
|
+
### Click Trigger
|
226
|
+
|
227
|
+
Set the `trigger` attribute to `click` to toggle the tooltip on click instead of hover.
|
228
|
+
|
229
|
+
```html preview
|
230
|
+
<sl-tooltip content="Click again to dismiss" trigger="click">
|
231
|
+
<sl-button>Click to Toggle</sl-button>
|
232
|
+
</sl-tooltip>
|
233
|
+
```
|
234
|
+
|
235
|
+
```jsx react
|
236
|
+
import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react';
|
237
|
+
|
238
|
+
const App = () => (
|
239
|
+
<SlTooltip content="Click again to dismiss" trigger="click">
|
240
|
+
<SlButton>Click to Toggle</SlButton>
|
241
|
+
</SlTooltip>
|
242
|
+
);
|
243
|
+
```
|
244
|
+
|
245
|
+
### Manual Trigger
|
246
|
+
|
247
|
+
Tooltips can be controller programmatically by setting the `trigger` attribute to `manual`. Use the `open` attribute to control when the tooltip is shown.
|
248
|
+
|
249
|
+
```html preview
|
250
|
+
<sl-button style="margin-right: 4rem;">Toggle Manually</sl-button>
|
251
|
+
|
252
|
+
<sl-tooltip content="This is an avatar" trigger="manual" class="manual-tooltip">
|
253
|
+
<sl-avatar></sl-avatar>
|
254
|
+
</sl-tooltip>
|
255
|
+
|
256
|
+
<script>
|
257
|
+
const tooltip = document.querySelector('.manual-tooltip');
|
258
|
+
const toggle = tooltip.previousElementSibling;
|
259
|
+
|
260
|
+
toggle.addEventListener('click', () => (tooltip.open = !tooltip.open));
|
261
|
+
</script>
|
262
|
+
```
|
263
|
+
|
264
|
+
```jsx react
|
265
|
+
import { useState } from 'react';
|
266
|
+
import { SlAvatar, SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react';
|
267
|
+
|
268
|
+
const App = () => {
|
269
|
+
const [open, setOpen] = useState(false);
|
270
|
+
|
271
|
+
return (
|
272
|
+
<>
|
273
|
+
<SlButton
|
274
|
+
style={{ marginRight: '4rem' }}
|
275
|
+
onClick={() => setOpen(!open)}
|
276
|
+
>
|
277
|
+
Toggle Manually
|
278
|
+
</SlButton>
|
279
|
+
|
280
|
+
<SlTooltip open={open} content="This is an avatar" trigger="manual">
|
281
|
+
<SlAvatar />
|
282
|
+
</SlTooltip>
|
283
|
+
</>
|
284
|
+
);
|
285
|
+
};
|
286
|
+
```
|
287
|
+
|
288
|
+
### Remove Arrows
|
289
|
+
|
290
|
+
You can control the size of tooltip arrows by overriding the `--sl-tooltip-arrow-size` design token.
|
291
|
+
|
292
|
+
```html preview
|
293
|
+
<div style="--sl-tooltip-arrow-size: 0;">
|
294
|
+
<sl-tooltip content="This is a tooltip">
|
295
|
+
<sl-button>Above</sl-button>
|
296
|
+
</sl-tooltip>
|
297
|
+
|
298
|
+
<sl-tooltip content="This is a tooltip" placement="bottom">
|
299
|
+
<sl-button>Below</sl-button>
|
300
|
+
</sl-tooltip>
|
301
|
+
</div>
|
302
|
+
```
|
303
|
+
|
304
|
+
```jsx react
|
305
|
+
import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react';
|
306
|
+
|
307
|
+
const App = () => (
|
308
|
+
<div style={{ '--sl-tooltip-arrow-size': '0' }}>
|
309
|
+
<SlTooltip content="This is a tooltip">
|
310
|
+
<SlButton>Above</SlButton>
|
311
|
+
</SlTooltip>
|
312
|
+
|
313
|
+
<SlTooltip content="This is a tooltip" placement="bottom">
|
314
|
+
<SlButton>Below</SlButton>
|
315
|
+
</SlTooltip>
|
316
|
+
</div>
|
317
|
+
);
|
318
|
+
```
|
319
|
+
|
320
|
+
To override it globally, set it in a root block in your stylesheet after the Shoelace stylesheet is loaded.
|
321
|
+
|
322
|
+
```css
|
323
|
+
:root {
|
324
|
+
--sl-tooltip-arrow-size: 0;
|
325
|
+
}
|
326
|
+
```
|
327
|
+
|
328
|
+
### HTML in Tooltips
|
329
|
+
|
330
|
+
Use the `content` slot to create tooltips with HTML content. Tooltips are designed only for text and presentational elements. Avoid placing interactive content, such as buttons, links, and form controls, in a tooltip.
|
331
|
+
|
332
|
+
```html preview
|
333
|
+
<sl-tooltip>
|
334
|
+
<div slot="content">
|
335
|
+
I'm not <strong>just</strong> a tooltip, I'm a <em>tooltip</em> with HTML!
|
336
|
+
</div>
|
337
|
+
|
338
|
+
<sl-button>Hover me</sl-button>
|
339
|
+
</sl-tooltip>
|
340
|
+
```
|
341
|
+
|
342
|
+
```jsx react
|
343
|
+
import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react';
|
344
|
+
|
345
|
+
const App = () => (
|
346
|
+
<SlTooltip content="This is a tooltip">
|
347
|
+
<div slot="content">
|
348
|
+
I'm not <strong>just</strong> a tooltip, I'm a <em>tooltip</em> with HTML!
|
349
|
+
</div>
|
350
|
+
|
351
|
+
<SlButton>Hover Me</SlButton>
|
352
|
+
</SlTooltip>
|
353
|
+
);
|
354
|
+
```
|
355
|
+
|
356
|
+
### Hoisting
|
357
|
+
|
358
|
+
Tooltips will be clipped if they're inside a container that has `overflow: auto|hidden|scroll`. The `hoist` attribute forces the tooltip to use a fixed positioning strategy, allowing it to break out of the container. In this case, the tooltip will be positioned relative to its containing block, which is usually the viewport unless an ancestor uses a `transform`, `perspective`, or `filter`. [Refer to this page](https://developer.mozilla.org/en-US/docs/Web/CSS/position#fixed) for more details.
|
359
|
+
|
360
|
+
```html preview
|
361
|
+
<div class="tooltip-hoist">
|
362
|
+
<sl-tooltip content="This is a tooltip">
|
363
|
+
<sl-button>No Hoist</sl-button>
|
364
|
+
</sl-tooltip>
|
365
|
+
|
366
|
+
<sl-tooltip content="This is a tooltip" hoist>
|
367
|
+
<sl-button>Hoist</sl-button>
|
368
|
+
</sl-tooltip>
|
369
|
+
</div>
|
370
|
+
|
371
|
+
<style>
|
372
|
+
.tooltip-hoist {
|
373
|
+
border: solid 2px var(--sl-panel-border-color);
|
374
|
+
overflow: hidden;
|
375
|
+
padding: var(--sl-spacing-medium);
|
376
|
+
position: relative;
|
377
|
+
}
|
378
|
+
</style>
|
379
|
+
```
|
380
|
+
|
381
|
+
```jsx react
|
382
|
+
import { SlButton, SlTooltip } from '@shoelace-style/shoelace/dist/react';
|
383
|
+
|
384
|
+
const css = `
|
385
|
+
.tooltip-hoist {
|
386
|
+
border: solid 2px var(--sl-panel-border-color);
|
387
|
+
overflow: hidden;
|
388
|
+
padding: var(--sl-spacing-medium);
|
389
|
+
position: relative;
|
390
|
+
}
|
391
|
+
`;
|
392
|
+
|
393
|
+
const App = () => (
|
394
|
+
<>
|
395
|
+
<div class="tooltip-hoist">
|
396
|
+
<SlTooltip content="This is a tooltip">
|
397
|
+
<SlButton>No Hoist</SlButton>
|
398
|
+
</SlTooltip>
|
399
|
+
|
400
|
+
<SlTooltip content="This is a tooltip" hoist>
|
401
|
+
<SlButton>Hoist</SlButton>
|
402
|
+
</SlTooltip>
|
403
|
+
</div>
|
404
|
+
|
405
|
+
<style>{css}</style>
|
406
|
+
</>
|
407
|
+
);
|
408
|
+
```
|
409
|
+
|
410
|
+
[component-metadata:sl-tooltip]
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# Visually Hidden
|
2
|
+
|
3
|
+
[component-header:sl-visually-hidden]
|
4
|
+
|
5
|
+
The visually hidden utility makes content accessible to assistive devices without displaying it on the screen.
|
6
|
+
|
7
|
+
According to [The A11Y Project](https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/), "there are real world situations where visually hiding content may be appropriate, while the content should remain available to assistive technologies, such as screen readers. For instance, hiding a search field's label as a common magnifying glass icon is used in its stead."
|
8
|
+
|
9
|
+
Since visually hidden content can receive focus when tabbing, the element will become visible when something inside receives focus. This behavior is intentional, as sighted keyboards user won't be able to determine where the focus indicator is without it.
|
10
|
+
|
11
|
+
```html preview
|
12
|
+
<div style="min-height: 100px;">
|
13
|
+
<sl-visually-hidden>
|
14
|
+
<a href="#">Skip to main content</a>
|
15
|
+
</sl-visually-hidden>
|
16
|
+
</div>
|
17
|
+
```
|
18
|
+
|
19
|
+
## Examples
|
20
|
+
|
21
|
+
### Links That Open in New Windows
|
22
|
+
|
23
|
+
In this example, the link will open a new window. Screen readers will announce "opens in a new window" even though the text content isn't visible to sighted users.
|
24
|
+
|
25
|
+
```html preview
|
26
|
+
<a href="https://example.com/" target="_blank">
|
27
|
+
Visit External Page
|
28
|
+
<sl-icon name="box-arrow-up-right"></sl-icon>
|
29
|
+
<sl-visually-hidden>opens in a new window</sl-visually-hidden>
|
30
|
+
</a>
|
31
|
+
```
|
32
|
+
|
33
|
+
### Content Conveyed By Context
|
34
|
+
|
35
|
+
Adding a title or label may seem redundant at times, but they're very helpful for unsighted users. Rather than omit them, you can provide context to unsighted users with visually hidden content.
|
36
|
+
|
37
|
+
```html preview
|
38
|
+
<sl-card style="width: 100%; max-width: 360px;">
|
39
|
+
<header>
|
40
|
+
<sl-visually-hidden>Personal Info</sl-visually-hidden>
|
41
|
+
</header>
|
42
|
+
<sl-input label="Name" style="margin-bottom: .5rem;"></sl-input>
|
43
|
+
<sl-input label="Email" type="email"></sl-input>
|
44
|
+
</sl-card>
|
45
|
+
```
|
46
|
+
|
47
|
+
[component-metadata:sl-visually-hidden]
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Angular
|
2
|
+
|
3
|
+
Angular [plays nice](https://custom-elements-everywhere.com/#angular) with custom elements, so you can use Shoelace in your Angular apps with ease.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
To add Shoelace to your Angular app, install the package from npm.
|
8
|
+
|
9
|
+
```bash
|
10
|
+
npm install @shoelace-style/shoelace
|
11
|
+
```
|
12
|
+
|
13
|
+
Next, [include a theme](/getting-started/themes) and set the [base path](/getting-started/installation#setting-the-base-path) for icons and other assets. In this example, we'll import the light theme and use the CDN as a base path.
|
14
|
+
|
15
|
+
```jsx
|
16
|
+
import '@shoelace-style/shoelace/dist/themes/light.css';
|
17
|
+
import { setBasePath } from '@shoelace-style/shoelace/dist/utilities/base-path';
|
18
|
+
|
19
|
+
setBasePath('https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@%VERSION%/dist/');
|
20
|
+
```
|
21
|
+
|
22
|
+
?> If you'd rather not use the CDN for assets, you can create a build task that copies `node_modules/@shoelace-style/shoelace/dist/assets` into a public folder in your app. Then you can point the base path to that folder instead.
|
23
|
+
|
24
|
+
## Configuration
|
25
|
+
|
26
|
+
Then make sure to apply the custom elements schema as shown below.
|
27
|
+
|
28
|
+
```js
|
29
|
+
import { BrowserModule } from '@angular/platform-browser';
|
30
|
+
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
31
|
+
|
32
|
+
import { AppComponent } from './app.component';
|
33
|
+
|
34
|
+
@NgModule({
|
35
|
+
declarations: [AppComponent],
|
36
|
+
imports: [BrowserModule],
|
37
|
+
providers: [],
|
38
|
+
bootstrap: [AppComponent],
|
39
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
40
|
+
})
|
41
|
+
export class AppModule {}
|
42
|
+
```
|
43
|
+
|
44
|
+
Now you can start using Shoelace components in your app!
|
45
|
+
|
46
|
+
?> Are you using Shoelace with Angular? [Help us improve this page!](https://github.com/shoelace-style/shoelace/blob/next/docs/frameworks/angular.md)
|