shoelace-rails-ui 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (332) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/CHANGELOG.md +5 -0
  4. data/CODE_OF_CONDUCT.md +84 -0
  5. data/Gemfile +12 -0
  6. data/Gemfile.lock +42 -0
  7. data/LICENSE.txt +21 -0
  8. data/README-real.md +24 -0
  9. data/README.md +43 -0
  10. data/Rakefile +16 -0
  11. data/bin/console +15 -0
  12. data/bin/setup +8 -0
  13. data/lib/shoelace/rails/ui/version.rb +9 -0
  14. data/lib/shoelace/rails/ui.rb +12 -0
  15. data/regenerate.rb +48 -0
  16. data/remote-src/.DS_Store +0 -0
  17. data/remote-src/2.0.0.beta64/.DS_Store +0 -0
  18. data/remote-src/2.0.0.beta64/shoelace-next/.editorconfig +15 -0
  19. data/remote-src/2.0.0.beta64/shoelace-next/.github/CODE_OF_CONDUCT.md +44 -0
  20. data/remote-src/2.0.0.beta64/shoelace-next/.github/FUNDING.yml +1 -0
  21. data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  22. data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/config.yml +4 -0
  23. data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
  24. data/remote-src/2.0.0.beta64/shoelace-next/.github/SECURITY.md +7 -0
  25. data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/node.js.yml +30 -0
  26. data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/release.yml +17 -0
  27. data/remote-src/2.0.0.beta64/shoelace-next/.gitignore +8 -0
  28. data/remote-src/2.0.0.beta64/shoelace-next/.husky/pre-commit +4 -0
  29. data/remote-src/2.0.0.beta64/shoelace-next/.prettierignore +12 -0
  30. data/remote-src/2.0.0.beta64/shoelace-next/.vscode/extensions.json +9 -0
  31. data/remote-src/2.0.0.beta64/shoelace-next/.vscode/settings.json +4 -0
  32. data/remote-src/2.0.0.beta64/shoelace-next/CONTRIBUTING.md +5 -0
  33. data/remote-src/2.0.0.beta64/shoelace-next/LICENSE.md +7 -0
  34. data/remote-src/2.0.0.beta64/shoelace-next/README.md +94 -0
  35. data/remote-src/2.0.0.beta64/shoelace-next/cspell.json +110 -0
  36. data/remote-src/2.0.0.beta64/shoelace-next/custom-elements-manifest.config.js +104 -0
  37. data/remote-src/2.0.0.beta64/shoelace-next/docs/404.md +5 -0
  38. data/remote-src/2.0.0.beta64/shoelace-next/docs/_sidebar.md +89 -0
  39. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/icons/sprite.svg +1 -0
  40. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/chrome.png +0 -0
  41. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/edge.png +0 -0
  42. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/firefox.png +0 -0
  43. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/logo.svg +7 -0
  44. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/og-image.png +0 -0
  45. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/opera.png +0 -0
  46. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/safari.png +0 -0
  47. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/shoe.svg +134 -0
  48. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/tie.webp +0 -0
  49. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/touch-icon.png +0 -0
  50. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/twitter-card.png +0 -0
  51. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-content-team.svg +80 -0
  52. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-not-found.svg +1 -0
  53. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/walk.gif +0 -0
  54. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/wordmark.svg +7 -0
  55. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.css +228 -0
  56. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.js +376 -0
  57. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/metadata/metadata.js +537 -0
  58. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/scroll-position/scroll-position.js +24 -0
  59. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/lunr.min.js +1311 -0
  60. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.css +180 -0
  61. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.js +293 -0
  62. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.css +29 -0
  63. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.js +83 -0
  64. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/styles/docs.css +642 -0
  65. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/alert.md +441 -0
  66. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animated-image.md +128 -0
  67. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animation.md +351 -0
  68. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/avatar.md +201 -0
  69. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/badge.md +191 -0
  70. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb-item.md +35 -0
  71. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb.md +266 -0
  72. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button-group.md +470 -0
  73. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button.md +453 -0
  74. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/card.md +311 -0
  75. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/checkbox.md +71 -0
  76. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/color-picker.md +101 -0
  77. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/details.md +89 -0
  78. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dialog.md +265 -0
  79. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/divider.md +152 -0
  80. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/drawer.md +452 -0
  81. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dropdown.md +389 -0
  82. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-bytes.md +126 -0
  83. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-date.md +120 -0
  84. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-number.md +124 -0
  85. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon-button.md +160 -0
  86. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon.md +711 -0
  87. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/image-comparer.md +51 -0
  88. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/include.md +47 -0
  89. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/input.md +283 -0
  90. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-item.md +255 -0
  91. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-label.md +52 -0
  92. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu.md +49 -0
  93. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/mutation-observer.md +196 -0
  94. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-bar.md +144 -0
  95. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-ring.md +178 -0
  96. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/qr-code.md +167 -0
  97. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio-group.md +52 -0
  98. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio.md +59 -0
  99. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/range.md +180 -0
  100. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/rating.md +153 -0
  101. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/relative-time.md +105 -0
  102. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/resize-observer.md +68 -0
  103. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/responsive-media.md +73 -0
  104. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/select.md +457 -0
  105. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/skeleton.md +439 -0
  106. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/spinner.md +86 -0
  107. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/split-panel.md +671 -0
  108. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/switch.md +77 -0
  109. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-group.md +359 -0
  110. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-panel.md +41 -0
  111. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab.md +29 -0
  112. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tag.md +142 -0
  113. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/textarea.md +184 -0
  114. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tooltip.md +410 -0
  115. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/visually-hidden.md +47 -0
  116. data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/angular.md +46 -0
  117. data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/react.md +156 -0
  118. data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/vue.md +92 -0
  119. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/customizing.md +153 -0
  120. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/form-controls.md +336 -0
  121. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/installation.md +137 -0
  122. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/localization.md +140 -0
  123. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/overview.md +131 -0
  124. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/themes.md +139 -0
  125. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/usage.md +173 -0
  126. data/remote-src/2.0.0.beta64/shoelace-next/docs/index.html +98 -0
  127. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/accessibility.md +18 -0
  128. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/changelog.md +925 -0
  129. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/community.md +53 -0
  130. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/contributing.md +261 -0
  131. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/border-radius.md +12 -0
  132. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/color.md +439 -0
  133. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/elevation.md +11 -0
  134. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/spacing.md +16 -0
  135. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/transition.md +11 -0
  136. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/typography.md +58 -0
  137. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/z-index.md +11 -0
  138. data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-laravel.md +117 -0
  139. data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-nextjs.md +137 -0
  140. data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-rails.md +103 -0
  141. data/remote-src/2.0.0.beta64/shoelace-next/lint-staged.config.js +4 -0
  142. data/remote-src/2.0.0.beta64/shoelace-next/package-lock.json +9534 -0
  143. data/remote-src/2.0.0.beta64/shoelace-next/package.json +93 -0
  144. data/remote-src/2.0.0.beta64/shoelace-next/prettier.config.cjs +17 -0
  145. data/remote-src/2.0.0.beta64/shoelace-next/scripts/build.js +158 -0
  146. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-css.js +42 -0
  147. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-icons.js +71 -0
  148. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-metadata.js +11 -0
  149. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-react.js +63 -0
  150. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-search.js +100 -0
  151. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-vscode-data.js +58 -0
  152. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/plopfile.js +67 -0
  153. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/component.hbs +44 -0
  154. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/docs.hbs +21 -0
  155. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/styles.hbs +10 -0
  156. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/tests.hbs +13 -0
  157. data/remote-src/2.0.0.beta64/shoelace-next/scripts/shared.js +18 -0
  158. data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.styles.ts +95 -0
  159. data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.test.ts +93 -0
  160. data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.ts +238 -0
  161. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.styles.ts +52 -0
  162. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.test.ts +13 -0
  163. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.ts +120 -0
  164. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.styles.ts +10 -0
  165. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.ts +222 -0
  166. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animations.ts +15 -0
  167. data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.styles.ts +66 -0
  168. data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.test.ts +111 -0
  169. data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.ts +83 -0
  170. data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.styles.ts +94 -0
  171. data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.test.ts +77 -0
  172. data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.ts +53 -0
  173. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.styles.ts +12 -0
  174. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.test.ts +104 -0
  175. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.ts +82 -0
  176. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.styles.ts +85 -0
  177. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.test.ts +160 -0
  178. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.ts +92 -0
  179. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.styles.ts +637 -0
  180. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.ts +209 -0
  181. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.styles.ts +15 -0
  182. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.ts +84 -0
  183. data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.styles.ts +62 -0
  184. data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.test.ts +139 -0
  185. data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.ts +68 -0
  186. data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.styles.ts +108 -0
  187. data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.test.ts +47 -0
  188. data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.ts +203 -0
  189. data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.styles.ts +326 -0
  190. data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.test.ts +43 -0
  191. data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.ts +853 -0
  192. data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.styles.ts +73 -0
  193. data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.test.ts +153 -0
  194. data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.ts +192 -0
  195. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.styles.ts +106 -0
  196. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.test.ts +135 -0
  197. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.ts +296 -0
  198. data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.styles.ts +25 -0
  199. data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.ts +34 -0
  200. data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.styles.ts +142 -0
  201. data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.test.ts +135 -0
  202. data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.ts +377 -0
  203. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.styles.ts +58 -0
  204. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.test.ts +147 -0
  205. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.ts +459 -0
  206. data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-bytes/format-bytes.ts +35 -0
  207. data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-date/format-date.ts +81 -0
  208. data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-number/format-number.ts +69 -0
  209. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.styles.ts +21 -0
  210. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.ts +131 -0
  211. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.default.ts +9 -0
  212. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.system.ts +97 -0
  213. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.ts +49 -0
  214. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/request.ts +36 -0
  215. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.styles.ts +48 -0
  216. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.ts +100 -0
  217. data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.styles.ts +77 -0
  218. data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.ts +147 -0
  219. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.styles.ts +10 -0
  220. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.test.ts +62 -0
  221. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.ts +80 -0
  222. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/request.ts +23 -0
  223. data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.styles.ts +282 -0
  224. data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.test.ts +35 -0
  225. data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.ts +410 -0
  226. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.styles.ts +18 -0
  227. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.ts +205 -0
  228. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.styles.ts +84 -0
  229. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.ts +92 -0
  230. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.styles.ts +21 -0
  231. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.ts +30 -0
  232. data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.styles.ts +10 -0
  233. data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.test.ts +13 -0
  234. data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.ts +118 -0
  235. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.styles.ts +57 -0
  236. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.test.ts +89 -0
  237. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.ts +74 -0
  238. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.styles.ts +66 -0
  239. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.test.ts +68 -0
  240. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.ts +84 -0
  241. data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.styles.ts +22 -0
  242. data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.ts +90 -0
  243. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.styles.ts +107 -0
  244. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.test.ts +65 -0
  245. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.ts +226 -0
  246. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.styles.ts +47 -0
  247. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.ts +66 -0
  248. data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.styles.ts +192 -0
  249. data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.ts +273 -0
  250. data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.styles.ts +79 -0
  251. data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.ts +249 -0
  252. data/remote-src/2.0.0.beta64/shoelace-next/src/components/relative-time/relative-time.ts +116 -0
  253. data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.styles.ts +10 -0
  254. data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.ts +87 -0
  255. data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.styles.ts +36 -0
  256. data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.ts +50 -0
  257. data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.styles.ts +331 -0
  258. data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.test.ts +56 -0
  259. data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.ts +560 -0
  260. data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.styles.ts +60 -0
  261. data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.ts +46 -0
  262. data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.styles.ts +56 -0
  263. data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.test.ts +24 -0
  264. data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.ts +34 -0
  265. data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.styles.ts +76 -0
  266. data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.test.ts +13 -0
  267. data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.ts +272 -0
  268. data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.styles.ts +135 -0
  269. data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.test.ts +64 -0
  270. data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.ts +187 -0
  271. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.styles.ts +61 -0
  272. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.ts +104 -0
  273. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.styles.ts +209 -0
  274. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.ts +409 -0
  275. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.styles.ts +17 -0
  276. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.ts +49 -0
  277. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.styles.ts +110 -0
  278. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.ts +92 -0
  279. data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.styles.ts +167 -0
  280. data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.test.ts +35 -0
  281. data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.ts +339 -0
  282. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.styles.ts +131 -0
  283. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.test.ts +117 -0
  284. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.ts +355 -0
  285. data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.styles.ts +18 -0
  286. data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.test.ts +39 -0
  287. data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.ts +24 -0
  288. data/remote-src/2.0.0.beta64/shoelace-next/src/declaration.d.ts +8 -0
  289. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/animate.ts +70 -0
  290. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/event.ts +35 -0
  291. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/focus-visible.ts +26 -0
  292. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/form-control.ts +203 -0
  293. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/formdata-event-polyfill.ts +93 -0
  294. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/math.ts +8 -0
  295. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/modal.ts +53 -0
  296. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/number.ts +32 -0
  297. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/offset.ts +13 -0
  298. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/scroll.ts +57 -0
  299. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/slot.ts +91 -0
  300. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/string.ts +3 -0
  301. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/support.ts +15 -0
  302. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/tabbable.ts +81 -0
  303. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/watch.ts +40 -0
  304. data/remote-src/2.0.0.beta64/shoelace-next/src/shoelace.ts +58 -0
  305. data/remote-src/2.0.0.beta64/shoelace-next/src/styles/component.styles.ts +23 -0
  306. data/remote-src/2.0.0.beta64/shoelace-next/src/styles/form-control.styles.ts +52 -0
  307. data/remote-src/2.0.0.beta64/shoelace-next/src/styles/utility.styles.ts +23 -0
  308. data/remote-src/2.0.0.beta64/shoelace-next/src/themes/dark.styles.ts +524 -0
  309. data/remote-src/2.0.0.beta64/shoelace-next/src/themes/light.styles.ts +524 -0
  310. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de-ch.ts +21 -0
  311. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de.ts +21 -0
  312. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/en.ts +21 -0
  313. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/es.ts +21 -0
  314. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/fr.ts +21 -0
  315. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/he.ts +21 -0
  316. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ja.ts +21 -0
  317. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/nl.ts +21 -0
  318. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pl.ts +21 -0
  319. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pt.ts +21 -0
  320. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ru.ts +21 -0
  321. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation-registry.ts +59 -0
  322. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation.ts +1 -0
  323. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/base-path.ts +43 -0
  324. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/form.ts +22 -0
  325. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/icon-library.ts +1 -0
  326. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/localize.ts +5 -0
  327. data/remote-src/2.0.0.beta64/shoelace-next/tsconfig.json +35 -0
  328. data/remote-src/2.0.0.beta64/shoelace-next/vercel.json +4 -0
  329. data/remote-src/2.0.0.beta64/shoelace-next/web-test-runner.config.js +14 -0
  330. data/shoelace-rails-ui.gemspec +39 -0
  331. data/shoelace-rails-ui.rb +0 -0
  332. 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)