shoelace-rails-ui 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (346) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +49 -22
  4. data/Rakefile +5 -13
  5. data/app/assets/config/shoelace_rails_ui_manifest.js +1 -0
  6. data/app/assets/javascripts/shoelace.js +300 -0
  7. data/app/assets/stylesheets/sl_styles_light.css +455 -0
  8. data/app/controllers/shoelace/rails/ui/application_controller.rb +8 -0
  9. data/app/helpers/shoelace/rails/ui/application_helper.rb +11 -0
  10. data/app/helpers/shoelace/rails/ui/form_helper.rb +442 -0
  11. data/app/jobs/shoelace/rails/ui/application_job.rb +8 -0
  12. data/app/mailers/shoelace/rails/ui/application_mailer.rb +10 -0
  13. data/app/models/shoelace/rails/ui/application_record.rb +9 -0
  14. data/app/views/layouts/shoelace/rails/ui/application.html.erb +15 -0
  15. data/config/routes.rb +2 -0
  16. data/lib/shoelace/rails/ui/engine.rb +15 -0
  17. data/lib/shoelace/rails/ui/version.rb +1 -3
  18. data/lib/shoelace/rails/ui.rb +2 -4
  19. data/lib/tasks/shoelace/rails/ui_tasks.rake +4 -0
  20. metadata +36 -334
  21. data/.DS_Store +0 -0
  22. data/CHANGELOG.md +0 -5
  23. data/CODE_OF_CONDUCT.md +0 -84
  24. data/Gemfile +0 -12
  25. data/Gemfile.lock +0 -42
  26. data/LICENSE.txt +0 -21
  27. data/README-real.md +0 -24
  28. data/bin/console +0 -15
  29. data/bin/setup +0 -8
  30. data/regenerate.rb +0 -48
  31. data/remote-src/.DS_Store +0 -0
  32. data/remote-src/2.0.0.beta64/.DS_Store +0 -0
  33. data/remote-src/2.0.0.beta64/shoelace-next/.editorconfig +0 -15
  34. data/remote-src/2.0.0.beta64/shoelace-next/.github/CODE_OF_CONDUCT.md +0 -44
  35. data/remote-src/2.0.0.beta64/shoelace-next/.github/FUNDING.yml +0 -1
  36. data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/bug_report.md +0 -36
  37. data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/config.yml +0 -4
  38. data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  39. data/remote-src/2.0.0.beta64/shoelace-next/.github/SECURITY.md +0 -7
  40. data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/node.js.yml +0 -30
  41. data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/release.yml +0 -17
  42. data/remote-src/2.0.0.beta64/shoelace-next/.gitignore +0 -8
  43. data/remote-src/2.0.0.beta64/shoelace-next/.husky/pre-commit +0 -4
  44. data/remote-src/2.0.0.beta64/shoelace-next/.prettierignore +0 -12
  45. data/remote-src/2.0.0.beta64/shoelace-next/.vscode/extensions.json +0 -9
  46. data/remote-src/2.0.0.beta64/shoelace-next/.vscode/settings.json +0 -4
  47. data/remote-src/2.0.0.beta64/shoelace-next/CONTRIBUTING.md +0 -5
  48. data/remote-src/2.0.0.beta64/shoelace-next/LICENSE.md +0 -7
  49. data/remote-src/2.0.0.beta64/shoelace-next/README.md +0 -94
  50. data/remote-src/2.0.0.beta64/shoelace-next/cspell.json +0 -110
  51. data/remote-src/2.0.0.beta64/shoelace-next/custom-elements-manifest.config.js +0 -104
  52. data/remote-src/2.0.0.beta64/shoelace-next/docs/404.md +0 -5
  53. data/remote-src/2.0.0.beta64/shoelace-next/docs/_sidebar.md +0 -89
  54. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/icons/sprite.svg +0 -1
  55. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/chrome.png +0 -0
  56. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/edge.png +0 -0
  57. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/firefox.png +0 -0
  58. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/logo.svg +0 -7
  59. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/og-image.png +0 -0
  60. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/opera.png +0 -0
  61. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/safari.png +0 -0
  62. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/shoe.svg +0 -134
  63. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/tie.webp +0 -0
  64. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/touch-icon.png +0 -0
  65. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/twitter-card.png +0 -0
  66. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-content-team.svg +0 -80
  67. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-not-found.svg +0 -1
  68. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/walk.gif +0 -0
  69. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/wordmark.svg +0 -7
  70. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.css +0 -228
  71. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.js +0 -376
  72. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/metadata/metadata.js +0 -537
  73. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/scroll-position/scroll-position.js +0 -24
  74. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/lunr.min.js +0 -1311
  75. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.css +0 -180
  76. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.js +0 -293
  77. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.css +0 -29
  78. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.js +0 -83
  79. data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/styles/docs.css +0 -642
  80. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/alert.md +0 -441
  81. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animated-image.md +0 -128
  82. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animation.md +0 -351
  83. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/avatar.md +0 -201
  84. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/badge.md +0 -191
  85. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb-item.md +0 -35
  86. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb.md +0 -266
  87. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button-group.md +0 -470
  88. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button.md +0 -453
  89. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/card.md +0 -311
  90. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/checkbox.md +0 -71
  91. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/color-picker.md +0 -101
  92. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/details.md +0 -89
  93. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dialog.md +0 -265
  94. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/divider.md +0 -152
  95. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/drawer.md +0 -452
  96. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dropdown.md +0 -389
  97. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-bytes.md +0 -126
  98. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-date.md +0 -120
  99. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-number.md +0 -124
  100. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon-button.md +0 -160
  101. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon.md +0 -711
  102. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/image-comparer.md +0 -51
  103. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/include.md +0 -47
  104. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/input.md +0 -283
  105. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-item.md +0 -255
  106. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-label.md +0 -52
  107. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu.md +0 -49
  108. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/mutation-observer.md +0 -196
  109. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-bar.md +0 -144
  110. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-ring.md +0 -178
  111. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/qr-code.md +0 -167
  112. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio-group.md +0 -52
  113. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio.md +0 -59
  114. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/range.md +0 -180
  115. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/rating.md +0 -153
  116. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/relative-time.md +0 -105
  117. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/resize-observer.md +0 -68
  118. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/responsive-media.md +0 -73
  119. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/select.md +0 -457
  120. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/skeleton.md +0 -439
  121. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/spinner.md +0 -86
  122. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/split-panel.md +0 -671
  123. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/switch.md +0 -77
  124. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-group.md +0 -359
  125. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-panel.md +0 -41
  126. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab.md +0 -29
  127. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tag.md +0 -142
  128. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/textarea.md +0 -184
  129. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tooltip.md +0 -410
  130. data/remote-src/2.0.0.beta64/shoelace-next/docs/components/visually-hidden.md +0 -47
  131. data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/angular.md +0 -46
  132. data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/react.md +0 -156
  133. data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/vue.md +0 -92
  134. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/customizing.md +0 -153
  135. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/form-controls.md +0 -336
  136. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/installation.md +0 -137
  137. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/localization.md +0 -140
  138. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/overview.md +0 -131
  139. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/themes.md +0 -139
  140. data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/usage.md +0 -173
  141. data/remote-src/2.0.0.beta64/shoelace-next/docs/index.html +0 -98
  142. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/accessibility.md +0 -18
  143. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/changelog.md +0 -925
  144. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/community.md +0 -53
  145. data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/contributing.md +0 -261
  146. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/border-radius.md +0 -12
  147. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/color.md +0 -439
  148. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/elevation.md +0 -11
  149. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/spacing.md +0 -16
  150. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/transition.md +0 -11
  151. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/typography.md +0 -58
  152. data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/z-index.md +0 -11
  153. data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-laravel.md +0 -117
  154. data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-nextjs.md +0 -137
  155. data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-rails.md +0 -103
  156. data/remote-src/2.0.0.beta64/shoelace-next/lint-staged.config.js +0 -4
  157. data/remote-src/2.0.0.beta64/shoelace-next/package-lock.json +0 -9534
  158. data/remote-src/2.0.0.beta64/shoelace-next/package.json +0 -93
  159. data/remote-src/2.0.0.beta64/shoelace-next/prettier.config.cjs +0 -17
  160. data/remote-src/2.0.0.beta64/shoelace-next/scripts/build.js +0 -158
  161. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-css.js +0 -42
  162. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-icons.js +0 -71
  163. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-metadata.js +0 -11
  164. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-react.js +0 -63
  165. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-search.js +0 -100
  166. data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-vscode-data.js +0 -58
  167. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/plopfile.js +0 -67
  168. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/component.hbs +0 -44
  169. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/docs.hbs +0 -21
  170. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/styles.hbs +0 -10
  171. data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/tests.hbs +0 -13
  172. data/remote-src/2.0.0.beta64/shoelace-next/scripts/shared.js +0 -18
  173. data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.styles.ts +0 -95
  174. data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.test.ts +0 -93
  175. data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.ts +0 -238
  176. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.styles.ts +0 -52
  177. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.test.ts +0 -13
  178. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.ts +0 -120
  179. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.styles.ts +0 -10
  180. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.ts +0 -222
  181. data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animations.ts +0 -15
  182. data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.styles.ts +0 -66
  183. data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.test.ts +0 -111
  184. data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.ts +0 -83
  185. data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.styles.ts +0 -94
  186. data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.test.ts +0 -77
  187. data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.ts +0 -53
  188. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.styles.ts +0 -12
  189. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.test.ts +0 -104
  190. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.ts +0 -82
  191. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.styles.ts +0 -85
  192. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.test.ts +0 -160
  193. data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.ts +0 -92
  194. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.styles.ts +0 -637
  195. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.ts +0 -209
  196. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.styles.ts +0 -15
  197. data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.ts +0 -84
  198. data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.styles.ts +0 -62
  199. data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.test.ts +0 -139
  200. data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.ts +0 -68
  201. data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.styles.ts +0 -108
  202. data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.test.ts +0 -47
  203. data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.ts +0 -203
  204. data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.styles.ts +0 -326
  205. data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.test.ts +0 -43
  206. data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.ts +0 -853
  207. data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.styles.ts +0 -73
  208. data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.test.ts +0 -153
  209. data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.ts +0 -192
  210. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.styles.ts +0 -106
  211. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.test.ts +0 -135
  212. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.ts +0 -296
  213. data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.styles.ts +0 -25
  214. data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.ts +0 -34
  215. data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.styles.ts +0 -142
  216. data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.test.ts +0 -135
  217. data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.ts +0 -377
  218. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.styles.ts +0 -58
  219. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.test.ts +0 -147
  220. data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.ts +0 -459
  221. data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-bytes/format-bytes.ts +0 -35
  222. data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-date/format-date.ts +0 -81
  223. data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-number/format-number.ts +0 -69
  224. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.styles.ts +0 -21
  225. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.ts +0 -131
  226. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.default.ts +0 -9
  227. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.system.ts +0 -97
  228. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.ts +0 -49
  229. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/request.ts +0 -36
  230. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.styles.ts +0 -48
  231. data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.ts +0 -100
  232. data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.styles.ts +0 -77
  233. data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.ts +0 -147
  234. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.styles.ts +0 -10
  235. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.test.ts +0 -62
  236. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.ts +0 -80
  237. data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/request.ts +0 -23
  238. data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.styles.ts +0 -282
  239. data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.test.ts +0 -35
  240. data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.ts +0 -410
  241. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.styles.ts +0 -18
  242. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.ts +0 -205
  243. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.styles.ts +0 -84
  244. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.ts +0 -92
  245. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.styles.ts +0 -21
  246. data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.ts +0 -30
  247. data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.styles.ts +0 -10
  248. data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.test.ts +0 -13
  249. data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.ts +0 -118
  250. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.styles.ts +0 -57
  251. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.test.ts +0 -89
  252. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.ts +0 -74
  253. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.styles.ts +0 -66
  254. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.test.ts +0 -68
  255. data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.ts +0 -84
  256. data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.styles.ts +0 -22
  257. data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.ts +0 -90
  258. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.styles.ts +0 -107
  259. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.test.ts +0 -65
  260. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.ts +0 -226
  261. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.styles.ts +0 -47
  262. data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.ts +0 -66
  263. data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.styles.ts +0 -192
  264. data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.ts +0 -273
  265. data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.styles.ts +0 -79
  266. data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.ts +0 -249
  267. data/remote-src/2.0.0.beta64/shoelace-next/src/components/relative-time/relative-time.ts +0 -116
  268. data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.styles.ts +0 -10
  269. data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.ts +0 -87
  270. data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.styles.ts +0 -36
  271. data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.ts +0 -50
  272. data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.styles.ts +0 -331
  273. data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.test.ts +0 -56
  274. data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.ts +0 -560
  275. data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.styles.ts +0 -60
  276. data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.ts +0 -46
  277. data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.styles.ts +0 -56
  278. data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.test.ts +0 -24
  279. data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.ts +0 -34
  280. data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.styles.ts +0 -76
  281. data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.test.ts +0 -13
  282. data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.ts +0 -272
  283. data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.styles.ts +0 -135
  284. data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.test.ts +0 -64
  285. data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.ts +0 -187
  286. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.styles.ts +0 -61
  287. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.ts +0 -104
  288. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.styles.ts +0 -209
  289. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.ts +0 -409
  290. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.styles.ts +0 -17
  291. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.ts +0 -49
  292. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.styles.ts +0 -110
  293. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.ts +0 -92
  294. data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.styles.ts +0 -167
  295. data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.test.ts +0 -35
  296. data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.ts +0 -339
  297. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.styles.ts +0 -131
  298. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.test.ts +0 -117
  299. data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.ts +0 -355
  300. data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.styles.ts +0 -18
  301. data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.test.ts +0 -39
  302. data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.ts +0 -24
  303. data/remote-src/2.0.0.beta64/shoelace-next/src/declaration.d.ts +0 -8
  304. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/animate.ts +0 -70
  305. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/event.ts +0 -35
  306. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/focus-visible.ts +0 -26
  307. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/form-control.ts +0 -203
  308. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/formdata-event-polyfill.ts +0 -93
  309. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/math.ts +0 -8
  310. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/modal.ts +0 -53
  311. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/number.ts +0 -32
  312. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/offset.ts +0 -13
  313. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/scroll.ts +0 -57
  314. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/slot.ts +0 -91
  315. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/string.ts +0 -3
  316. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/support.ts +0 -15
  317. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/tabbable.ts +0 -81
  318. data/remote-src/2.0.0.beta64/shoelace-next/src/internal/watch.ts +0 -40
  319. data/remote-src/2.0.0.beta64/shoelace-next/src/shoelace.ts +0 -58
  320. data/remote-src/2.0.0.beta64/shoelace-next/src/styles/component.styles.ts +0 -23
  321. data/remote-src/2.0.0.beta64/shoelace-next/src/styles/form-control.styles.ts +0 -52
  322. data/remote-src/2.0.0.beta64/shoelace-next/src/styles/utility.styles.ts +0 -23
  323. data/remote-src/2.0.0.beta64/shoelace-next/src/themes/dark.styles.ts +0 -524
  324. data/remote-src/2.0.0.beta64/shoelace-next/src/themes/light.styles.ts +0 -524
  325. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de-ch.ts +0 -21
  326. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de.ts +0 -21
  327. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/en.ts +0 -21
  328. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/es.ts +0 -21
  329. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/fr.ts +0 -21
  330. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/he.ts +0 -21
  331. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ja.ts +0 -21
  332. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/nl.ts +0 -21
  333. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pl.ts +0 -21
  334. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pt.ts +0 -21
  335. data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ru.ts +0 -21
  336. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation-registry.ts +0 -59
  337. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation.ts +0 -1
  338. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/base-path.ts +0 -43
  339. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/form.ts +0 -22
  340. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/icon-library.ts +0 -1
  341. data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/localize.ts +0 -5
  342. data/remote-src/2.0.0.beta64/shoelace-next/tsconfig.json +0 -35
  343. data/remote-src/2.0.0.beta64/shoelace-next/vercel.json +0 -4
  344. data/remote-src/2.0.0.beta64/shoelace-next/web-test-runner.config.js +0 -14
  345. data/shoelace-rails-ui.gemspec +0 -39
  346. data/shoelace-rails-ui.rb +0 -0
@@ -1,711 +0,0 @@
1
- # Icon
2
-
3
- [component-header:sl-icon]
4
-
5
- Icons are symbols that can be used to represent various options within an application.
6
-
7
- Shoelace comes bundled with over 1,500 icons courtesy of the [Bootstrap Icons](https://icons.getbootstrap.com/) project. These icons are part of the `default` icon library. If you prefer, you can register [custom icon libraries](#icon-libraries) as well.
8
-
9
- Click or tap on an icon below to copy its name and use it like this.
10
-
11
- ```html
12
- <sl-icon name="icon-name-here"></sl-icon>
13
- ```
14
-
15
- <div class="icon-search">
16
- <div class="icon-search-controls">
17
- <sl-input placeholder="Search Icons" clearable>
18
- <sl-icon slot="prefix" name="search"></sl-icon>
19
- </sl-input>
20
- <sl-select value="outline">
21
- <sl-menu-item value="outline">Outlined</sl-menu-item>
22
- <sl-menu-item value="fill">Filled</sl-menu-item>
23
- <sl-menu-item value="all">All icons</sl-menu-item>
24
- </sl-select>
25
- </div>
26
- <div class="icon-list"></div>
27
- <input type="text" class="icon-copy-input">
28
- </div>
29
-
30
- ## Examples
31
-
32
- ### Sizing
33
-
34
- Icons are sized relative to the current font size. To change their size, set the `font-size` property on the icon itself or on a parent element as shown below.
35
-
36
- ```html preview
37
- <div style="font-size: 32px;">
38
- <sl-icon name="exclamation-triangle"></sl-icon>
39
- <sl-icon name="archive"></sl-icon>
40
- <sl-icon name="battery-charging"></sl-icon>
41
- <sl-icon name="bell"></sl-icon>
42
- <sl-icon name="clock"></sl-icon>
43
- <sl-icon name="cloud"></sl-icon>
44
- <sl-icon name="download"></sl-icon>
45
- <sl-icon name="file-earmark"></sl-icon>
46
- <sl-icon name="flag"></sl-icon>
47
- <sl-icon name="heart"></sl-icon>
48
- <sl-icon name="image"></sl-icon>
49
- <sl-icon name="lightning"></sl-icon>
50
- <sl-icon name="mic"></sl-icon>
51
- <sl-icon name="search"></sl-icon>
52
- <sl-icon name="star"></sl-icon>
53
- <sl-icon name="trash"></sl-icon>
54
- </div>
55
- ```
56
-
57
- ```jsx react
58
- import { SlIcon } from '@shoelace-style/shoelace/dist/react';
59
-
60
- const App = () => (
61
- <div style={{ fontSize: '32px' }}>
62
- <SlIcon name="exclamation-triangle" />
63
- <SlIcon name="archive" />
64
- <SlIcon name="battery-charging" />
65
- <SlIcon name="bell" />
66
- <SlIcon name="clock" />
67
- <SlIcon name="cloud" />
68
- <SlIcon name="download" />
69
- <SlIcon name="file-earmark" />
70
- <SlIcon name="flag" />
71
- <SlIcon name="heart" />
72
- <SlIcon name="image" />
73
- <SlIcon name="lightning" />
74
- <SlIcon name="mic" />
75
- <SlIcon name="search" />
76
- <SlIcon name="star" />
77
- <SlIcon name="trash" />
78
- </div>
79
- );
80
- ```
81
-
82
- ### Labels
83
-
84
- For non-decorative icons, use the `label` attribute to announce it to assistive devices.
85
-
86
- ```html preview
87
- <sl-icon name="star-fill" label="Add to favorites"></sl-icon>
88
- ```
89
-
90
- ```jsx react
91
- import { SlIcon } from '@shoelace-style/shoelace/dist/react';
92
-
93
- const App = () => (
94
- <SlIcon name="star-fill" label="Add to favorites" />
95
- );
96
- ```
97
-
98
- ### Custom Icons
99
-
100
- Custom icons can be loaded individually with the `src` attribute. Only SVGs on a local or CORS-enabled endpoint are supported. If you're using more than one custom icon, it might make sense to register a [custom icon library](#icon-libraries).
101
-
102
- ```html preview
103
- <sl-icon src="https://shoelace.style/assets/images/shoe.svg" style="font-size: 8rem;"></sl-icon>
104
- ```
105
-
106
-
107
- ```jsx react
108
- import { SlIcon } from '@shoelace-style/shoelace/dist/react';
109
-
110
- const App = () => (
111
- <SlIcon src="https://shoelace.style/assets/images/shoe.svg" style={{ fontSize: '8rem' }}></SlIcon>
112
- );
113
- ```
114
-
115
- ## Icon Libraries
116
-
117
- You can register additional icons to use with the `<sl-icon>` component through icon libraries. Icon files can exist locally or on a CORS-enabled endpoint (e.g. a CDN). There is no limit to how many icon libraries you can register and there is no cost associated with registering them, as individual icons are only requested when they're used.
118
-
119
- Shoelace ships with two built-in icon libraries, `default` and `system`. The [default icon library](#customizing-the-default-library) contains all of the icons in the Bootstrap Icons project. The [system icon library](#customizing-the-system-library) contains only a small subset of icons that are used internally by Shoelace components.
120
-
121
- To register an additional icon library, use the `registerIconLibrary()` function that's exported from `utilities/icon-library.js`. At a minimum, you must provide a name and a resolver function. The resolver function translates an icon name to a URL where the corresponding SVG file exists. Refer to the examples below to better understand how it works.
122
-
123
- If necessary, a mutator function can be used to mutate the SVG element before rendering. This is necessary for some libraries due to the many possible ways SVGs are crafted. For example, icons should ideally inherit the current text color via `currentColor`, so you may need to apply `fill="currentColor` or `stroke="currentColor"` to the SVG element using this function.
124
-
125
- Here's an example that registers an icon library located in the `/assets/icons` directory.
126
-
127
- ```html
128
- <script type="module">
129
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
130
-
131
- registerIconLibrary('my-icons', {
132
- resolver: name => `/assets/icons/${name}.svg`,
133
- mutator: svg => svg.setAttribute('fill', 'currentColor')
134
- });
135
- </script>
136
- ```
137
-
138
- To display an icon, set the `library` and `name` attributes of an `<sl-icon>` element.
139
-
140
- ```html
141
- <!-- This will show the icon located at /assets/icons/smile.svg -->
142
- <sl-icon library="my-icons" name="smile"></sl-icon>
143
- ```
144
-
145
- If an icon is used before registration occurs, it will be empty initially but shown when registered.
146
-
147
- The following examples demonstrate how to register a number of popular, open source icon libraries via CDN. Feel free to adapt the code as you see fit to use your own origin or naming conventions.
148
-
149
- ### Boxicons
150
-
151
- This will register the [Boxicons](https://boxicons.com/) library using the jsDelivr CDN. This library has three variations: regular (`bx-*`), solid (`bxs-*`), and logos (`bxl-*`). A mutator function is required to set the SVG's `fill` to `currentColor`.
152
-
153
- Icons in this library are licensed under the [Creative Commons 4.0 License](https://github.com/atisawd/boxicons#license).
154
-
155
- ```html preview
156
- <script type="module">
157
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
158
-
159
- registerIconLibrary('boxicons', {
160
- resolver: name => {
161
- let folder = 'regular';
162
- if (name.substring(0, 4) === 'bxs-') folder = 'solid';
163
- if (name.substring(0, 4) === 'bxl-') folder = 'logos';
164
- return `https://cdn.jsdelivr.net/npm/boxicons@2.0.5/svg/${folder}/${name}.svg`;
165
- },
166
- mutator:svg => svg.setAttribute('fill', 'currentColor')
167
- });
168
- </script>
169
-
170
- <div style="font-size: 24px;">
171
- <sl-icon library="boxicons" name="bx-bot"></sl-icon>
172
- <sl-icon library="boxicons" name="bx-cookie"></sl-icon>
173
- <sl-icon library="boxicons" name="bx-joystick"></sl-icon>
174
- <sl-icon library="boxicons" name="bx-save"></sl-icon>
175
- <sl-icon library="boxicons" name="bx-server"></sl-icon>
176
- <sl-icon library="boxicons" name="bx-wine"></sl-icon>
177
- <br>
178
- <sl-icon library="boxicons" name="bxs-bot"></sl-icon>
179
- <sl-icon library="boxicons" name="bxs-cookie"></sl-icon>
180
- <sl-icon library="boxicons" name="bxs-joystick"></sl-icon>
181
- <sl-icon library="boxicons" name="bxs-save"></sl-icon>
182
- <sl-icon library="boxicons" name="bxs-server"></sl-icon>
183
- <sl-icon library="boxicons" name="bxs-wine"></sl-icon>
184
- <br>
185
- <sl-icon library="boxicons" name="bxl-apple"></sl-icon>
186
- <sl-icon library="boxicons" name="bxl-chrome"></sl-icon>
187
- <sl-icon library="boxicons" name="bxl-edge"></sl-icon>
188
- <sl-icon library="boxicons" name="bxl-firefox"></sl-icon>
189
- <sl-icon library="boxicons" name="bxl-opera"></sl-icon>
190
- <sl-icon library="boxicons" name="bxl-microsoft"></sl-icon>
191
- </div>
192
- ```
193
-
194
- ### Feather Icons
195
-
196
- This will register the [Feather Icons](https://feathericons.com/) library using the jsDelivr CDN.
197
-
198
- Icons in this library are licensed under the [MIT License](https://github.com/feathericons/feather/blob/master/LICENSE).
199
-
200
- ```html preview
201
- <div style="font-size: 24px;">
202
- <sl-icon library="feather" name="feather"></sl-icon>
203
- <sl-icon library="feather" name="pie-chart"></sl-icon>
204
- <sl-icon library="feather" name="settings"></sl-icon>
205
- <sl-icon library="feather" name="map-pin"></sl-icon>
206
- <sl-icon library="feather" name="printer"></sl-icon>
207
- <sl-icon library="feather" name="shopping-cart"></sl-icon>
208
- </div>
209
-
210
- <script type="module">
211
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
212
-
213
- registerIconLibrary('feather', {
214
- resolver: name => `https://cdn.jsdelivr.net/npm/feather-icons@4.28.0/dist/icons/${name}.svg`
215
- });
216
- </script>
217
- ```
218
-
219
- ### Font Awesome
220
-
221
- This will register the [Font Awesome Free](https://fontawesome.com/) library using the jsDelivr CDN. This library has three variations: regular (`far-*`), solid (`fas-*`), and brands (`fab-*`). A mutator function is required to set the SVG's `fill` to `currentColor`.
222
-
223
- Icons in this library are licensed under the [Font Awesome Free License](https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt). Some of the icons that appear on the Font Awesome website require a license and are therefore not available in the CDN.
224
-
225
- ```html preview
226
- <script type="module">
227
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
228
-
229
- registerIconLibrary('fa', {
230
- resolver: name => {
231
- const filename = name.replace(/^fa[rbs]-/, '');
232
- let folder = 'regular';
233
- if (name.substring(0, 4) === 'fas-') folder = 'solid';
234
- if (name.substring(0, 4) === 'fab-') folder = 'brands';
235
- return `https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/svgs/${folder}/${filename}.svg`;
236
- },
237
- mutator: svg => svg.setAttribute('fill', 'currentColor')
238
- });
239
- </script>
240
-
241
- <div style="font-size: 24px;">
242
- <sl-icon library="fa" name="far-bell"></sl-icon>
243
- <sl-icon library="fa" name="far-comment"></sl-icon>
244
- <sl-icon library="fa" name="far-hand-point-right"></sl-icon>
245
- <sl-icon library="fa" name="far-hdd"></sl-icon>
246
- <sl-icon library="fa" name="far-heart"></sl-icon>
247
- <sl-icon library="fa" name="far-star"></sl-icon>
248
- <br>
249
- <sl-icon library="fa" name="fas-archive"></sl-icon>
250
- <sl-icon library="fa" name="fas-book"></sl-icon>
251
- <sl-icon library="fa" name="fas-chess-knight"></sl-icon>
252
- <sl-icon library="fa" name="fas-dice"></sl-icon>
253
- <sl-icon library="fa" name="fas-pizza-slice"></sl-icon>
254
- <sl-icon library="fa" name="fas-scroll"></sl-icon>
255
- <br>
256
- <sl-icon library="fa" name="fab-apple"></sl-icon>
257
- <sl-icon library="fa" name="fab-chrome"></sl-icon>
258
- <sl-icon library="fa" name="fab-edge"></sl-icon>
259
- <sl-icon library="fa" name="fab-firefox"></sl-icon>
260
- <sl-icon library="fa" name="fab-opera"></sl-icon>
261
- <sl-icon library="fa" name="fab-microsoft"></sl-icon>
262
- </div>
263
- ```
264
-
265
- ### Heroicons
266
-
267
- This will register the [Heroicons](https://heroicons.com/) library using the jsDelivr CDN.
268
-
269
- Icons in this library are licensed under the [MIT License](https://github.com/tailwindlabs/heroicons/blob/master/LICENSE).
270
-
271
- ```html preview
272
- <script type="module">
273
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
274
-
275
- registerIconLibrary('heroicons', {
276
- resolver: name => `https://cdn.jsdelivr.net/npm/heroicons@0.4.2/outline/${name}.svg`
277
- });
278
- </script>
279
-
280
- <div style="font-size: 24px;">
281
- <sl-icon library="heroicons" name="chat"></sl-icon>
282
- <sl-icon library="heroicons" name="cloud"></sl-icon>
283
- <sl-icon library="heroicons" name="cog"></sl-icon>
284
- <sl-icon library="heroicons" name="document-text"></sl-icon>
285
- <sl-icon library="heroicons" name="gift"></sl-icon>
286
- <sl-icon library="heroicons" name="volume-up"></sl-icon>
287
- </div>
288
- ```
289
-
290
- ### Iconoir
291
-
292
- This will register the [Iconoir](https://iconoir.com/) library using the jsDelivr CDN.
293
-
294
- Icons in this library are licensed under the [MIT License](https://github.com/lucaburgio/iconoir/blob/master/LICENSE).
295
-
296
- ```html preview
297
- <script type="module">
298
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
299
-
300
- registerIconLibrary('iconoir', {
301
- resolver: name => `https://cdn.jsdelivr.net/gh/lucaburgio/iconoir@latest/icons/${name}.svg`
302
- });
303
- </script>
304
-
305
- <div style="font-size: 24px;">
306
- <sl-icon library="iconoir" name="check-circled-outline"></sl-icon>
307
- <sl-icon library="iconoir" name="drawer"></sl-icon>
308
- <sl-icon library="iconoir" name="keyframes"></sl-icon>
309
- <sl-icon library="iconoir" name="headset-help"></sl-icon>
310
- <sl-icon library="iconoir" name="color-picker"></sl-icon>
311
- <sl-icon library="iconoir" name="wifi"></sl-icon>
312
- </div>
313
- ```
314
-
315
- ### Ionicons
316
-
317
- This will register the [Ionicons](https://ionicons.com/) library using the jsDelivr CDN. This library has three variations: outline (default), filled (`*-filled`), and sharp (`*-sharp`). A mutator function is required to polyfill a handful of styles we're not including.
318
-
319
- Icons in this library are licensed under the [MIT License](https://github.com/ionic-team/ionicons/blob/master/LICENSE).
320
-
321
- ```html preview
322
- <script type="module">
323
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
324
-
325
- registerIconLibrary('ionicons', {
326
- resolver: name => `https://cdn.jsdelivr.net/npm/ionicons@5.1.2/dist/ionicons/svg/${name}.svg`,
327
- mutator: svg => {
328
- svg.setAttribute('fill', 'currentColor');
329
- svg.setAttribute('stroke', 'currentColor');
330
- [...svg.querySelectorAll('.ionicon-fill-none')].map(el => el.setAttribute('fill', 'none'));
331
- [...svg.querySelectorAll('.ionicon-stroke-width')].map(el => el.setAttribute('stroke-width', '32px'));
332
- }
333
- });
334
- </script>
335
-
336
- <div style="font-size: 24px;">
337
- <sl-icon library="ionicons" name="alarm"></sl-icon>
338
- <sl-icon library="ionicons" name="american-football"></sl-icon>
339
- <sl-icon library="ionicons" name="bug"></sl-icon>
340
- <sl-icon library="ionicons" name="chatbubble"></sl-icon>
341
- <sl-icon library="ionicons" name="settings"></sl-icon>
342
- <sl-icon library="ionicons" name="warning"></sl-icon>
343
- <br>
344
- <sl-icon library="ionicons" name="alarm-outline"></sl-icon>
345
- <sl-icon library="ionicons" name="american-football-outline"></sl-icon>
346
- <sl-icon library="ionicons" name="bug-outline"></sl-icon>
347
- <sl-icon library="ionicons" name="chatbubble-outline"></sl-icon>
348
- <sl-icon library="ionicons" name="settings-outline"></sl-icon>
349
- <sl-icon library="ionicons" name="warning-outline"></sl-icon>
350
- <br>
351
- <sl-icon library="ionicons" name="alarm-sharp"></sl-icon>
352
- <sl-icon library="ionicons" name="american-football-sharp"></sl-icon>
353
- <sl-icon library="ionicons" name="bug-sharp"></sl-icon>
354
- <sl-icon library="ionicons" name="chatbubble-sharp"></sl-icon>
355
- <sl-icon library="ionicons" name="settings-sharp"></sl-icon>
356
- <sl-icon library="ionicons" name="warning-sharp"></sl-icon>
357
- </div>
358
- ```
359
-
360
- ### Jam Icons
361
-
362
- This will register the [Jam Icons](https://jam-icons.com/) library using the jsDelivr CDN. This library has two variations: regular (default) and filled (`*-f`). A mutator function is required to set the SVG's `fill` to `currentColor`.
363
-
364
- Icons in this library are licensed under the [MIT License](https://github.com/michaelampr/jam/blob/master/LICENSE).
365
-
366
- ```html preview
367
- <script type="module">
368
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
369
-
370
- registerIconLibrary('jam', {
371
- resolver: name => `https://cdn.jsdelivr.net/npm/jam-icons@2.0.0/svg/${name}.svg`,
372
- mutator: svg => svg.setAttribute('fill', 'currentColor')
373
- });
374
- </script>
375
-
376
- <div style="font-size: 24px;">
377
- <sl-icon library="jam" name="calendar"></sl-icon>
378
- <sl-icon library="jam" name="camera"></sl-icon>
379
- <sl-icon library="jam" name="filter"></sl-icon>
380
- <sl-icon library="jam" name="leaf"></sl-icon>
381
- <sl-icon library="jam" name="picture"></sl-icon>
382
- <sl-icon library="jam" name="set-square"></sl-icon>
383
- <br>
384
- <sl-icon library="jam" name="calendar-f"></sl-icon>
385
- <sl-icon library="jam" name="camera-f"></sl-icon>
386
- <sl-icon library="jam" name="filter-f"></sl-icon>
387
- <sl-icon library="jam" name="leaf-f"></sl-icon>
388
- <sl-icon library="jam" name="picture-f"></sl-icon>
389
- <sl-icon library="jam" name="set-square-f"></sl-icon>
390
- </div>
391
- ```
392
-
393
- ### Material Icons
394
-
395
- This will register the [Material Icons](https://material.io/resources/icons/?style=baseline) library using the jsDelivr CDN. This library has three variations: outline (default), round (`*_round`), and sharp (`*_sharp`). A mutator function is required to set the SVG's `fill` to `currentColor`.
396
-
397
- Icons in this library are licensed under the [Apache 2.0 License](https://github.com/google/material-design-icons/blob/master/LICENSE).
398
-
399
- ```html preview
400
- <script type="module">
401
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
402
-
403
- registerIconLibrary('material', {
404
- resolver: name => {
405
- const match = name.match(/^(.*?)(_(round|sharp))?$/);
406
- return `https://cdn.jsdelivr.net/npm/@material-icons/svg@1.0.5/svg/${match[1]}/${match[3] || 'outline'}.svg`;
407
- },
408
- mutator: svg => svg.setAttribute('fill', 'currentColor')
409
- });
410
- </script>
411
-
412
- <div style="font-size: 24px;">
413
- <sl-icon library="material" name="notifications"></sl-icon>
414
- <sl-icon library="material" name="email"></sl-icon>
415
- <sl-icon library="material" name="delete"></sl-icon>
416
- <sl-icon library="material" name="volume_up"></sl-icon>
417
- <sl-icon library="material" name="settings"></sl-icon>
418
- <sl-icon library="material" name="shopping_basket"></sl-icon>
419
- <br>
420
- <sl-icon library="material" name="notifications_round"></sl-icon>
421
- <sl-icon library="material" name="email_round"></sl-icon>
422
- <sl-icon library="material" name="delete_round"></sl-icon>
423
- <sl-icon library="material" name="volume_up_round"></sl-icon>
424
- <sl-icon library="material" name="settings_round"></sl-icon>
425
- <sl-icon library="material" name="shopping_basket_round"></sl-icon>
426
- <br>
427
- <sl-icon library="material" name="notifications_sharp"></sl-icon>
428
- <sl-icon library="material" name="email_sharp"></sl-icon>
429
- <sl-icon library="material" name="delete_sharp"></sl-icon>
430
- <sl-icon library="material" name="volume_up_sharp"></sl-icon>
431
- <sl-icon library="material" name="settings_sharp"></sl-icon>
432
- <sl-icon library="material" name="shopping_basket_sharp"></sl-icon>
433
- </div>
434
- ```
435
-
436
- ### Remix Icon
437
-
438
- This will register the [Remix Icon](https://remixicon.com/) library using the jsDelivr CDN. This library groups icons by categories, so the name must include the category and icon separated by a slash, as well as the `-line` or `-fill` suffix as needed. A mutator function is required to set the SVG's `fill` to `currentColor`.
439
-
440
- Icons in this library are licensed under the [Apache 2.0 License](https://github.com/Remix-Design/RemixIcon/blob/master/License).
441
-
442
- ```html preview
443
- <script type="module">
444
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
445
-
446
- registerIconLibrary('remixicon', {
447
- resolver: name => {
448
- const match = name.match(/^(.*?)\/(.*?)?$/);
449
- match[1] = match[1].charAt(0).toUpperCase() + match[1].slice(1);
450
- return `https://cdn.jsdelivr.net/npm/remixicon@2.5.0/icons/${match[1]}/${match[2]}.svg`;
451
- },
452
- mutator: svg => svg.setAttribute('fill', 'currentColor')
453
- });
454
- </script>
455
-
456
- <div style="font-size: 24px;">
457
- <sl-icon library="remixicon" name="business/cloud-line"></sl-icon>
458
- <sl-icon library="remixicon" name="design/brush-line"></sl-icon>
459
- <sl-icon library="remixicon" name="business/pie-chart-line"></sl-icon>
460
- <sl-icon library="remixicon" name="development/bug-line"></sl-icon>
461
- <sl-icon library="remixicon" name="media/image-line"></sl-icon>
462
- <sl-icon library="remixicon" name="system/alert-line"></sl-icon>
463
- <br>
464
- <sl-icon library="remixicon" name="business/cloud-fill"></sl-icon>
465
- <sl-icon library="remixicon" name="design/brush-fill"></sl-icon>
466
- <sl-icon library="remixicon" name="business/pie-chart-fill"></sl-icon>
467
- <sl-icon library="remixicon" name="development/bug-fill"></sl-icon>
468
- <sl-icon library="remixicon" name="media/image-fill"></sl-icon>
469
- <sl-icon library="remixicon" name="system/alert-fill"></sl-icon>
470
- </div>
471
- ```
472
-
473
- ### Unicons
474
-
475
- This will register the [Unicons](https://iconscout.com/unicons) library using the jsDelivr CDN. This library has two variations: line (default) and solid (`*-s`). A mutator function is required to set the SVG's `fill` to `currentColor`.
476
-
477
- Icons in this library are licensed under the [Apache 2.0 License](https://github.com/Iconscout/unicons/blob/master/LICENSE). Some of the icons that appear on the Unicons website, particularly many of the solid variations, require a license and are therefore not available in the CDN.
478
-
479
- ```html preview
480
- <script type="module">
481
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
482
-
483
- registerIconLibrary('unicons', {
484
- resolver: name => {
485
- const match = name.match(/^(.*?)(-s)?$/);
486
- return `https://cdn.jsdelivr.net/npm/@iconscout/unicons@3.0.3/svg/${match[2] === '-s' ? 'solid' : 'line'}/${match[1]}.svg`;
487
- },
488
- mutator: svg => svg.setAttribute('fill', 'currentColor')
489
- });
490
- </script>
491
-
492
- <div style="font-size: 24px;">
493
- <sl-icon library="unicons" name="clock"></sl-icon>
494
- <sl-icon library="unicons" name="graph-bar"></sl-icon>
495
- <sl-icon library="unicons" name="padlock"></sl-icon>
496
- <sl-icon library="unicons" name="polygon"></sl-icon>
497
- <sl-icon library="unicons" name="rocket"></sl-icon>
498
- <sl-icon library="unicons" name="star"></sl-icon>
499
- <br>
500
- <sl-icon library="unicons" name="clock-s"></sl-icon>
501
- <sl-icon library="unicons" name="graph-bar-s"></sl-icon>
502
- <sl-icon library="unicons" name="padlock-s"></sl-icon>
503
- <sl-icon library="unicons" name="polygon-s"></sl-icon>
504
- <sl-icon library="unicons" name="rocket-s"></sl-icon>
505
- <sl-icon library="unicons" name="star-s"></sl-icon>
506
- </div>
507
- ```
508
-
509
- ### Customizing the Default Library
510
-
511
- The default icon library contains over 1,300 icons courtesy of the [Bootstrap Icons](https://icons.getbootstrap.com/) project. These are the icons that display when you use `<sl-icon>` without the `library` attribute. If you prefer to have these icons resolve elsewhere or to a different icon library, register an icon library using the `default` name and a custom resolver.
512
-
513
- This example will load the same set of icons from the jsDelivr CDN instead of your local assets folder.
514
-
515
- ```html
516
- <script type="module">
517
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
518
-
519
- registerIconLibrary('default', {
520
- resolver: name => `https://cdn.jsdelivr.net/npm/bootstrap-icons@1.0.0/icons/${name}.svg`
521
- });
522
- </script>
523
- ```
524
-
525
- ### Customizing the System Library
526
-
527
- The system library contains only the icons used internally by Shoelace components. Unlike the default icon library, the system library does not rely on physical assets. Instead, its icons are hard-coded as data URIs into the resolver to ensure their availability.
528
-
529
- If you want to change the icons Shoelace uses internally, you can register an icon library using the `system` name and a custom resolver. If you choose to do this, it's your responsibility to provide all of the icons that are required by components. You can reference `src/components/library.system.ts` for a complete list of system icons used by Shoelace.
530
-
531
- ```html
532
- <script type="module">
533
- import { registerIconLibrary } from '/dist/utilities/icon-library.js';
534
-
535
- registerIconLibrary('system', {
536
- resolver: name => `/path/to/custom/icons/${name}.svg`
537
- });
538
- </script>
539
- ```
540
-
541
- <!-- Supporting scripts and styles for the search utility -->
542
- <script>
543
- fetch('/dist/assets/icons/icons.json')
544
- .then(res => res.json())
545
- .then(icons => {
546
- const container = document.querySelector('.icon-search');
547
- const input = container.querySelector('sl-input');
548
- const select = container.querySelector('sl-select');
549
- const copyInput = container.querySelector('.icon-copy-input');
550
- const loader = container.querySelector('.icon-loader');
551
- const list = container.querySelector('.icon-list');
552
- const queue = [];
553
- let inputTimeout;
554
-
555
- // Generate icons
556
- icons.map(i => {
557
- const item = document.createElement('div');
558
- item.classList.add('icon-list-item');
559
- item.setAttribute('data-name', i.name);
560
- item.setAttribute('data-terms', [i.name, i.title, ...(i.tags || []), ...(i.categories || [])].join(' '));
561
- item.innerHTML = `
562
- <svg width="1em" height="1em" fill="currentColor">
563
- <use xlink:href="/assets/icons/sprite.svg#${i.name}"></use>
564
- </svg>
565
- `;
566
-
567
- const tooltip = document.createElement('sl-tooltip');
568
- tooltip.content = i.name;
569
-
570
- tooltip.appendChild(item);
571
- list.appendChild(tooltip);
572
-
573
- item.addEventListener('click', () => {
574
- copyInput.value = i.name;
575
- copyInput.select();
576
- document.execCommand('copy');
577
- tooltip.content = 'Copied!';
578
- setTimeout(() => tooltip.content = i.name, 1000);
579
- });
580
- });
581
-
582
- // Filter as the user types
583
- input.addEventListener('sl-input', () => {
584
- clearTimeout(inputTimeout);
585
- inputTimeout = setTimeout(() => {
586
- [...list.querySelectorAll('.icon-list-item')].map(item => {
587
- const filter = input.value.toLowerCase();
588
- if (filter === '') {
589
- item.hidden = false;
590
- } else {
591
- const terms = item.getAttribute('data-terms').toLowerCase();
592
- item.hidden = terms.indexOf(filter) < 0;
593
- }
594
- });
595
- }, 250);
596
- });
597
-
598
- // Sort by type and remember preference
599
- const iconType = localStorage.getItem('sl-icon:type') || 'outline';
600
- select.value = iconType;
601
- list.setAttribute('data-type', select.value);
602
- select.addEventListener('sl-change', () => {
603
- list.setAttribute('data-type', select.value);
604
- localStorage.setItem('sl-icon:type', select.value);
605
- });
606
- });
607
- </script>
608
-
609
- <style>
610
- .icon-search {
611
- border: solid 1px var(--sl-panel-border-color);
612
- border-radius: var(--sl-border-radius-medium);
613
- padding: var(--sl-spacing-medium);
614
- }
615
-
616
- .icon-search [hidden] {
617
- display: none;
618
- }
619
-
620
- .icon-search-controls {
621
- display: flex;
622
- }
623
-
624
- .icon-search-controls sl-input {
625
- flex: 1 1 auto;
626
- }
627
-
628
- .icon-search-controls sl-select {
629
- width: 10rem;
630
- flex: 0 0 auto;
631
- margin-left: 1rem;
632
- }
633
-
634
- .icon-loader {
635
- display: flex;
636
- align-items: center;
637
- justify-content: center;
638
- min-height: 30vh;
639
- }
640
-
641
- .icon-list {
642
- display: grid;
643
- grid-template-columns: repeat(12, 1fr);
644
- position: relative;
645
- margin-top: 1rem;
646
- }
647
-
648
- .icon-loader[hidden],
649
- .icon-list[hidden] {
650
- display: none;
651
- }
652
-
653
- .icon-list-item {
654
- display: inline-flex;
655
- align-items: center;
656
- justify-content: center;
657
- border-radius: var(--sl-border-radius-medium);
658
- font-size: 24px;
659
- width: 2em;
660
- height: 2em;
661
- margin: 0 auto;
662
- cursor: copy;
663
- transition: var(--sl-transition-medium) all;
664
- }
665
-
666
- .icon-list-item:hover {
667
- background-color: var(--sl-color-primary-50);
668
- color: var(--sl-color-primary-600);
669
- }
670
-
671
- .icon-list[data-type="outline"] .icon-list-item[data-name$="-fill"] {
672
- display: none;
673
- }
674
-
675
- .icon-list[data-type="fill"] .icon-list-item:not([data-name$="-fill"]) {
676
- display: none;
677
- }
678
-
679
- .icon-copy-input {
680
- position: absolute;
681
- opacity: 0;
682
- pointer-events: none;
683
- }
684
-
685
- @media screen and (max-width: 1000px) {
686
- .icon-list {
687
- grid-template-columns: repeat(8, 1fr);
688
- }
689
-
690
- .icon-list-item {
691
- font-size: 20px;
692
- }
693
-
694
- .icon-search-controls {
695
- display: block;
696
- }
697
-
698
- .icon-search-controls sl-select {
699
- width: auto;
700
- margin: 1rem 0 0 0;
701
- }
702
- }
703
-
704
- @media screen and (max-width: 500px) {
705
- .icon-list {
706
- grid-template-columns: repeat(4, 1fr);
707
- }
708
- }
709
- </style>
710
-
711
- [component-metadata:sl-icon]