twitter-bootstrap-rails 5.3.1 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -0
  3. data/README.md +149 -3
  4. data/app/assets/javascripts/twitter/bootstrap/bootstrap.min.js +3 -3
  5. data/app/assets/stylesheets/twitter-bootstrap-static/bootstrap.css +3 -3
  6. data/lib/generators/bootstrap/badge/badge_generator.rb +13 -0
  7. data/lib/generators/bootstrap/breadcrumb/breadcrumb_generator.rb +13 -0
  8. data/lib/generators/bootstrap/button/button_generator.rb +13 -0
  9. data/lib/generators/bootstrap/cdn/cdn_generator.rb +39 -0
  10. data/lib/generators/bootstrap/cdn_tags.rb +43 -0
  11. data/lib/generators/bootstrap/dropdown/dropdown_generator.rb +13 -0
  12. data/lib/generators/bootstrap/features/features_generator.rb +13 -0
  13. data/lib/generators/bootstrap/footer/footer_generator.rb +13 -0
  14. data/lib/generators/bootstrap/header/header_generator.rb +13 -0
  15. data/lib/generators/bootstrap/hero/hero_generator.rb +13 -0
  16. data/lib/generators/bootstrap/install/install_generator.rb +120 -61
  17. data/lib/generators/bootstrap/install/templates/application.js +1 -1
  18. data/lib/generators/bootstrap/install/templates/bootstrap.js +10 -3
  19. data/lib/generators/bootstrap/install/templates/bootstrap_and_overrides.css +2 -2
  20. data/lib/generators/bootstrap/jumbotron/jumbotron_generator.rb +13 -0
  21. data/lib/generators/bootstrap/layout/layout_generator.rb +65 -1
  22. data/lib/generators/bootstrap/layout/templates/layout.html.erb +14 -9
  23. data/lib/generators/bootstrap/layout/templates/layout.html.haml +28 -43
  24. data/lib/generators/bootstrap/layout/templates/layout.html.slim +25 -40
  25. data/lib/generators/bootstrap/list_group/list_group_generator.rb +13 -0
  26. data/lib/generators/bootstrap/modal/modal_generator.rb +13 -0
  27. data/lib/generators/bootstrap/sidebar/sidebar_generator.rb +13 -0
  28. data/lib/generators/bootstrap/snippets/snippet_base.rb +126 -0
  29. data/lib/generators/bootstrap/snippets/snippet_catalog.rb +134 -0
  30. data/lib/generators/bootstrap/snippets/templates/badges/pills.html.erb +10 -0
  31. data/lib/generators/bootstrap/snippets/templates/badges/subtle.html.erb +10 -0
  32. data/lib/generators/bootstrap/snippets/templates/badges/subtle_bordered.html.erb +20 -0
  33. data/lib/generators/bootstrap/snippets/templates/badges/with_avatar.html.erb +34 -0
  34. data/lib/generators/bootstrap/snippets/templates/badges/with_avatar_divider.html.erb +66 -0
  35. data/lib/generators/bootstrap/snippets/templates/badges/with_icons.html.erb +26 -0
  36. data/lib/generators/bootstrap/snippets/templates/breadcrumbs/basic.html.erb +9 -0
  37. data/lib/generators/bootstrap/snippets/templates/breadcrumbs/chevron.html.erb +18 -0
  38. data/lib/generators/bootstrap/snippets/templates/breadcrumbs/custom.html.erb +18 -0
  39. data/lib/generators/bootstrap/snippets/templates/breadcrumbs/with_icons.html.erb +18 -0
  40. data/lib/generators/bootstrap/snippets/templates/buttons/circle.html.erb +20 -0
  41. data/lib/generators/bootstrap/snippets/templates/buttons/grid.html.erb +6 -0
  42. data/lib/generators/bootstrap/snippets/templates/buttons/loading.html.erb +10 -0
  43. data/lib/generators/bootstrap/snippets/templates/buttons/pills.html.erb +11 -0
  44. data/lib/generators/bootstrap/snippets/templates/buttons/with_icons.html.erb +14 -0
  45. data/lib/generators/bootstrap/snippets/templates/dropdowns/calendar.html.erb +156 -0
  46. data/lib/generators/bootstrap/snippets/templates/dropdowns/mega_menu.html.erb +140 -0
  47. data/lib/generators/bootstrap/snippets/templates/dropdowns/simple.html.erb +20 -0
  48. data/lib/generators/bootstrap/snippets/templates/dropdowns/with_icons.html.erb +88 -0
  49. data/lib/generators/bootstrap/snippets/templates/dropdowns/with_search.html.erb +64 -0
  50. data/lib/generators/bootstrap/snippets/templates/features/columns_with_icons.html.erb +46 -0
  51. data/lib/generators/bootstrap/snippets/templates/features/custom_cards.html.erb +79 -0
  52. data/lib/generators/bootstrap/snippets/templates/features/hanging_icons.html.erb +41 -0
  53. data/lib/generators/bootstrap/snippets/templates/features/icon_grid.html.erb +77 -0
  54. data/lib/generators/bootstrap/snippets/templates/features/with_title.html.erb +50 -0
  55. data/lib/generators/bootstrap/snippets/templates/footers/columns.html.erb +43 -0
  56. data/lib/generators/bootstrap/snippets/templates/footers/simple.html.erb +15 -0
  57. data/lib/generators/bootstrap/snippets/templates/footers/with_brand.html.erb +22 -0
  58. data/lib/generators/bootstrap/snippets/templates/footers/with_nav.html.erb +12 -0
  59. data/lib/generators/bootstrap/snippets/templates/footers/with_newsletter.html.erb +62 -0
  60. data/lib/generators/bootstrap/snippets/templates/headers/centered.html.erb +15 -0
  61. data/lib/generators/bootstrap/snippets/templates/headers/dark_double.html.erb +66 -0
  62. data/lib/generators/bootstrap/snippets/templates/headers/dark_search.html.erb +25 -0
  63. data/lib/generators/bootstrap/snippets/templates/headers/double.html.erb +28 -0
  64. data/lib/generators/bootstrap/snippets/templates/headers/grid_dropdown.html.erb +47 -0
  65. data/lib/generators/bootstrap/snippets/templates/headers/light_search.html.erb +34 -0
  66. data/lib/generators/bootstrap/snippets/templates/headers/nav_pills.html.erb +11 -0
  67. data/lib/generators/bootstrap/snippets/templates/headers/with_auth_buttons.html.erb +22 -0
  68. data/lib/generators/bootstrap/snippets/templates/heroes/centered.html.erb +13 -0
  69. data/lib/generators/bootstrap/snippets/templates/heroes/centered_screenshot.html.erb +17 -0
  70. data/lib/generators/bootstrap/snippets/templates/heroes/cropped_image.html.erb +17 -0
  71. data/lib/generators/bootstrap/snippets/templates/heroes/dark.html.erb +14 -0
  72. data/lib/generators/bootstrap/snippets/templates/heroes/signup_form.html.erb +26 -0
  73. data/lib/generators/bootstrap/snippets/templates/heroes/with_image.html.erb +17 -0
  74. data/lib/generators/bootstrap/snippets/templates/icons/_bootstrap_icons.html.erb +134 -0
  75. data/lib/generators/bootstrap/snippets/templates/jumbotrons/basic.html.erb +10 -0
  76. data/lib/generators/bootstrap/snippets/templates/jumbotrons/full_width.html.erb +12 -0
  77. data/lib/generators/bootstrap/snippets/templates/jumbotrons/placeholder.html.erb +13 -0
  78. data/lib/generators/bootstrap/snippets/templates/jumbotrons/with_icon.html.erb +22 -0
  79. data/lib/generators/bootstrap/snippets/templates/list-groups/checkable.html.erb +24 -0
  80. data/lib/generators/bootstrap/snippets/templates/list-groups/checkboxes.html.erb +45 -0
  81. data/lib/generators/bootstrap/snippets/templates/list-groups/checkboxes_expanded.html.erb +52 -0
  82. data/lib/generators/bootstrap/snippets/templates/list-groups/radios.html.erb +32 -0
  83. data/lib/generators/bootstrap/snippets/templates/list-groups/with_avatars.html.erb +36 -0
  84. data/lib/generators/bootstrap/snippets/templates/modals/confirm.html.erb +18 -0
  85. data/lib/generators/bootstrap/snippets/templates/modals/sheet.html.erb +19 -0
  86. data/lib/generators/bootstrap/snippets/templates/modals/signup.html.erb +44 -0
  87. data/lib/generators/bootstrap/snippets/templates/modals/whats_new.html.erb +41 -0
  88. data/lib/generators/bootstrap/snippets/templates/sidebars/collapsible.html.erb +90 -0
  89. data/lib/generators/bootstrap/snippets/templates/sidebars/dark.html.erb +67 -0
  90. data/lib/generators/bootstrap/snippets/templates/sidebars/icon_only.html.erb +59 -0
  91. data/lib/generators/bootstrap/snippets/templates/sidebars/light.html.erb +67 -0
  92. data/lib/generators/bootstrap/snippets/templates/sidebars/list_group.html.erb +94 -0
  93. data/lib/generators/bootstrap/starter/starter_generator.rb +37 -0
  94. data/lib/generators/bootstrap/starter/templates/starter.html.erb +13 -0
  95. data/lib/twitter/bootstrap/rails/bootstrap.rb +1 -0
  96. data/lib/twitter/bootstrap/rails/config.rb +54 -0
  97. data/lib/twitter/bootstrap/rails/engine.rb +0 -8
  98. data/lib/twitter/bootstrap/rails/version.rb +28 -1
  99. data/lib/twitter-bootstrap-rails.rb +0 -1
  100. data/spec/lib/generators/cdn_generator_spec.rb +42 -0
  101. data/spec/lib/generators/install_generator_spec.rb +148 -0
  102. data/spec/lib/generators/layout_generator_spec.rb +124 -0
  103. data/spec/lib/generators/no_hardcoded_versions_spec.rb +45 -0
  104. data/spec/lib/generators/snippet_generators_spec.rb +201 -0
  105. data/spec/lib/generators/starter_generator_spec.rb +54 -0
  106. data/spec/spec_helper.rb +5 -0
  107. data/spec/support/generator_spec_helper.rb +87 -0
  108. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap.bundle.min.js +3 -3
  109. data/vendor/assets/stylesheets/twitter/bootstrap/bootstrap.min.css +3 -3
  110. metadata +99 -123
  111. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  112. data/app/assets/fonts/glyphicons-halflings-regular.svg +0 -288
  113. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  114. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  115. data/app/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  116. data/app/helpers/glyph_helper.rb +0 -23
  117. data/lib/generators/bootstrap/install/templates/bootstrap.coffee +0 -3
  118. data/lib/generators/bootstrap/install/templates/bootstrap_and_overrides.less +0 -21
  119. data/spec/lib/twitter_bootstrap_rails/glyph_helper_spec.rb +0 -24
  120. data/vendor/assets/stylesheets/twitter-bootstrap-static/bootstrap.css.erb +0 -6684
  121. data/vendor/static-source/bootstrap.less +0 -1
  122. data/vendor/static-source/sprites.less +0 -6
  123. data/vendor/toolkit/twitter/bootstrap/alerts.less +0 -73
  124. data/vendor/toolkit/twitter/bootstrap/badges.less +0 -66
  125. data/vendor/toolkit/twitter/bootstrap/bootstrap.less +0 -55
  126. data/vendor/toolkit/twitter/bootstrap/breadcrumbs.less +0 -26
  127. data/vendor/toolkit/twitter/bootstrap/button-groups.less +0 -244
  128. data/vendor/toolkit/twitter/bootstrap/buttons.less +0 -166
  129. data/vendor/toolkit/twitter/bootstrap/carousel.less +0 -270
  130. data/vendor/toolkit/twitter/bootstrap/close.less +0 -34
  131. data/vendor/toolkit/twitter/bootstrap/code.less +0 -69
  132. data/vendor/toolkit/twitter/bootstrap/component-animations.less +0 -33
  133. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +0 -216
  134. data/vendor/toolkit/twitter/bootstrap/forms.less +0 -613
  135. data/vendor/toolkit/twitter/bootstrap/glyphicons.less +0 -305
  136. data/vendor/toolkit/twitter/bootstrap/grid.less +0 -84
  137. data/vendor/toolkit/twitter/bootstrap/input-groups.less +0 -171
  138. data/vendor/toolkit/twitter/bootstrap/jumbotron.less +0 -54
  139. data/vendor/toolkit/twitter/bootstrap/labels.less +0 -64
  140. data/vendor/toolkit/twitter/bootstrap/list-group.less +0 -130
  141. data/vendor/toolkit/twitter/bootstrap/media.less +0 -66
  142. data/vendor/toolkit/twitter/bootstrap/mixins/alerts.less +0 -14
  143. data/vendor/toolkit/twitter/bootstrap/mixins/background-variant.less +0 -9
  144. data/vendor/toolkit/twitter/bootstrap/mixins/border-radius.less +0 -18
  145. data/vendor/toolkit/twitter/bootstrap/mixins/buttons.less +0 -65
  146. data/vendor/toolkit/twitter/bootstrap/mixins/center-block.less +0 -7
  147. data/vendor/toolkit/twitter/bootstrap/mixins/clearfix.less +0 -22
  148. data/vendor/toolkit/twitter/bootstrap/mixins/forms.less +0 -85
  149. data/vendor/toolkit/twitter/bootstrap/mixins/gradients.less +0 -59
  150. data/vendor/toolkit/twitter/bootstrap/mixins/grid-framework.less +0 -91
  151. data/vendor/toolkit/twitter/bootstrap/mixins/grid.less +0 -122
  152. data/vendor/toolkit/twitter/bootstrap/mixins/hide-text.less +0 -21
  153. data/vendor/toolkit/twitter/bootstrap/mixins/image.less +0 -33
  154. data/vendor/toolkit/twitter/bootstrap/mixins/labels.less +0 -12
  155. data/vendor/toolkit/twitter/bootstrap/mixins/list-group.less +0 -30
  156. data/vendor/toolkit/twitter/bootstrap/mixins/nav-divider.less +0 -10
  157. data/vendor/toolkit/twitter/bootstrap/mixins/nav-vertical-align.less +0 -9
  158. data/vendor/toolkit/twitter/bootstrap/mixins/opacity.less +0 -8
  159. data/vendor/toolkit/twitter/bootstrap/mixins/pagination.less +0 -24
  160. data/vendor/toolkit/twitter/bootstrap/mixins/panels.less +0 -24
  161. data/vendor/toolkit/twitter/bootstrap/mixins/progress-bar.less +0 -10
  162. data/vendor/toolkit/twitter/bootstrap/mixins/reset-filter.less +0 -8
  163. data/vendor/toolkit/twitter/bootstrap/mixins/reset-text.less +0 -18
  164. data/vendor/toolkit/twitter/bootstrap/mixins/resize.less +0 -6
  165. data/vendor/toolkit/twitter/bootstrap/mixins/responsive-visibility.less +0 -15
  166. data/vendor/toolkit/twitter/bootstrap/mixins/size.less +0 -10
  167. data/vendor/toolkit/twitter/bootstrap/mixins/tab-focus.less +0 -9
  168. data/vendor/toolkit/twitter/bootstrap/mixins/table-row.less +0 -28
  169. data/vendor/toolkit/twitter/bootstrap/mixins/text-emphasis.less +0 -9
  170. data/vendor/toolkit/twitter/bootstrap/mixins/text-overflow.less +0 -8
  171. data/vendor/toolkit/twitter/bootstrap/mixins/vendor-prefixes.less +0 -227
  172. data/vendor/toolkit/twitter/bootstrap/mixins.less +0 -40
  173. data/vendor/toolkit/twitter/bootstrap/modals.less +0 -150
  174. data/vendor/toolkit/twitter/bootstrap/navbar.less +0 -660
  175. data/vendor/toolkit/twitter/bootstrap/navs.less +0 -242
  176. data/vendor/toolkit/twitter/bootstrap/normalize.less +0 -424
  177. data/vendor/toolkit/twitter/bootstrap/pager.less +0 -54
  178. data/vendor/toolkit/twitter/bootstrap/pagination.less +0 -89
  179. data/vendor/toolkit/twitter/bootstrap/panels.less +0 -271
  180. data/vendor/toolkit/twitter/bootstrap/popovers.less +0 -131
  181. data/vendor/toolkit/twitter/bootstrap/print.less +0 -101
  182. data/vendor/toolkit/twitter/bootstrap/progress-bars.less +0 -87
  183. data/vendor/toolkit/twitter/bootstrap/responsive-embed.less +0 -35
  184. data/vendor/toolkit/twitter/bootstrap/responsive-utilities.less +0 -194
  185. data/vendor/toolkit/twitter/bootstrap/scaffolding.less +0 -161
  186. data/vendor/toolkit/twitter/bootstrap/tables.less +0 -234
  187. data/vendor/toolkit/twitter/bootstrap/theme.less +0 -291
  188. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +0 -36
  189. data/vendor/toolkit/twitter/bootstrap/tooltip.less +0 -101
  190. data/vendor/toolkit/twitter/bootstrap/type.less +0 -302
  191. data/vendor/toolkit/twitter/bootstrap/utilities.less +0 -55
  192. data/vendor/toolkit/twitter/bootstrap/variables.less +0 -1751
  193. data/vendor/toolkit/twitter/bootstrap/wells.less +0 -29
  194. data/vendor/toolkit/twitter/bootstrap_base.less +0 -2
@@ -0,0 +1,36 @@
1
+ <div class="d-flex flex-column flex-md-row p-4 gap-4 py-md-5 align-items-center justify-content-center">
2
+ <div class="list-group">
3
+ <a href="#" class="list-group-item list-group-item-action d-flex gap-3 py-3" aria-current="true">
4
+ <img src="https://github.com/twbs.png" alt="" width="32" height="32" class="rounded-circle flex-shrink-0">
5
+ <div class="d-flex gap-2 w-100 justify-content-between">
6
+ <div>
7
+ <h6 class="mb-0">List group item heading</h6>
8
+ <p class="mb-0 opacity-75">Some placeholder content in a paragraph.</p>
9
+ </div>
10
+ <small class="opacity-50 text-nowrap">now</small>
11
+ </div>
12
+ </a>
13
+ <a href="#" class="list-group-item list-group-item-action d-flex gap-3 py-3" aria-current="true">
14
+ <img src="https://github.com/twbs.png" alt="" width="32" height="32" class="rounded-circle flex-shrink-0">
15
+ <div class="d-flex gap-2 w-100 justify-content-between">
16
+ <div>
17
+ <h6 class="mb-0">Another title here</h6>
18
+ <p class="mb-0 opacity-75">
19
+ Some placeholder content in a paragraph that goes a little longer so it wraps to a new line.
20
+ </p>
21
+ </div>
22
+ <small class="opacity-50 text-nowrap">3d</small>
23
+ </div>
24
+ </a>
25
+ <a href="#" class="list-group-item list-group-item-action d-flex gap-3 py-3" aria-current="true">
26
+ <img src="https://github.com/twbs.png" alt="" width="32" height="32" class="rounded-circle flex-shrink-0">
27
+ <div class="d-flex gap-2 w-100 justify-content-between">
28
+ <div>
29
+ <h6 class="mb-0">Third heading</h6>
30
+ <p class="mb-0 opacity-75">Some placeholder content in a paragraph.</p>
31
+ </div>
32
+ <small class="opacity-50 text-nowrap">1w</small>
33
+ </div>
34
+ </a>
35
+ </div>
36
+ </div>
@@ -0,0 +1,18 @@
1
+ <div class="modal modal-sheet position-static d-block bg-body-secondary p-4 py-md-5" tabindex="-1" role="dialog" id="modalChoice">
2
+ <div class="modal-dialog">
3
+ <div class="modal-content rounded-3 shadow">
4
+ <div class="modal-body p-4 text-center">
5
+ <h5 class="mb-0">Enable this setting?</h5>
6
+ <p class="mb-0">You can always change your mind in your account settings.</p>
7
+ </div>
8
+ <div class="modal-footer flex-nowrap p-0">
9
+ <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 py-3 m-0 rounded-0 border-end">
10
+ <strong>Yes, enable</strong>
11
+ </button>
12
+ <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 py-3 m-0 rounded-0" data-bs-dismiss="modal">
13
+ No thanks
14
+ </button>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </div>
@@ -0,0 +1,19 @@
1
+ <div class="modal modal-sheet position-static d-block bg-body-secondary p-4 py-md-5" tabindex="-1" role="dialog" id="modalSheet">
2
+ <div class="modal-dialog">
3
+ <div class="modal-content rounded-4 shadow">
4
+ <div class="modal-header border-bottom-0">
5
+ <h1 class="modal-title fs-5">Modal title</h1>
6
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
7
+ </div>
8
+ <div class="modal-body py-0">
9
+ <p>
10
+ This is a modal sheet, a variation of the modal that docs itself to the bottom of the viewport like the newer share sheets in iOS.
11
+ </p>
12
+ </div>
13
+ <div class="modal-footer flex-column align-items-stretch w-100 gap-2 pb-3 border-top-0">
14
+ <button type="button" class="btn btn-lg btn-primary">Save changes</button>
15
+ <button type="button" class="btn btn-lg btn-secondary" data-bs-dismiss="modal">Close</button>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ </div>
@@ -0,0 +1,44 @@
1
+ <div class="modal modal-sheet position-static d-block bg-body-secondary p-4 py-md-5" tabindex="-1" role="dialog" id="modalSignin">
2
+ <div class="modal-dialog">
3
+ <div class="modal-content rounded-4 shadow">
4
+ <div class="modal-header p-5 pb-4 border-bottom-0">
5
+ <h1 class="fw-bold mb-0 fs-2">Sign up for free</h1>
6
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
7
+ </div>
8
+ <div class="modal-body p-5 pt-0">
9
+ <form>
10
+ <div class="form-floating mb-3">
11
+ <input type="email" class="form-control rounded-3" id="floatingInput" placeholder="name@example.com">
12
+ <label for="floatingInput">Email address</label>
13
+ </div>
14
+ <div class="form-floating mb-3">
15
+ <input type="password" class="form-control rounded-3" id="floatingPassword" placeholder="Password">
16
+ <label for="floatingPassword">Password</label>
17
+ </div>
18
+ <button class="w-100 mb-2 btn btn-lg rounded-3 btn-primary" type="submit">Sign up</button>
19
+ <small class="text-body-secondary">By clicking Sign up, you agree to the terms of use.</small>
20
+ <hr class="my-4">
21
+ <h2 class="fs-5 fw-bold mb-3">Or use a third-party</h2>
22
+ <button class="w-100 py-2 mb-2 btn btn-outline-secondary rounded-3" type="submit">
23
+ <svg class="bi me-1" width="16" height="16" aria-hidden="true">
24
+ <use xlink:href="#google"></use>
25
+ </svg>
26
+ Sign up with Google
27
+ </button>
28
+ <button class="w-100 py-2 mb-2 btn btn-outline-primary rounded-3" type="submit">
29
+ <svg class="bi me-1" width="16" height="16" aria-hidden="true">
30
+ <use xlink:href="#facebook"></use>
31
+ </svg>
32
+ Sign up with Facebook
33
+ </button>
34
+ <button class="w-100 py-2 mb-2 btn btn-outline-secondary rounded-3" type="submit">
35
+ <svg class="bi me-1" width="16" height="16" aria-hidden="true">
36
+ <use xlink:href="#github"></use>
37
+ </svg>
38
+ Sign up with GitHub
39
+ </button>
40
+ </form>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
@@ -0,0 +1,41 @@
1
+ <div class="modal modal-sheet position-static d-block bg-body-secondary p-4 py-md-5" tabindex="-1" role="dialog" id="modalTour">
2
+ <div class="modal-dialog">
3
+ <div class="modal-content rounded-4 shadow">
4
+ <div class="modal-body p-5">
5
+ <h2 class="fw-bold mb-0">What's new</h2>
6
+ <ul class="d-grid gap-4 my-5 list-unstyled small">
7
+ <li class="d-flex gap-4">
8
+ <svg class="bi text-body-secondary flex-shrink-0" width="48" height="48" aria-hidden="true">
9
+ <use xlink:href="#grid-fill"></use>
10
+ </svg>
11
+ <div>
12
+ <h5 class="mb-0">Grid view</h5>
13
+ Not into lists? Try the new grid view.
14
+ </div>
15
+ </li>
16
+ <li class="d-flex gap-4">
17
+ <svg class="bi text-warning flex-shrink-0" width="48" height="48" aria-hidden="true">
18
+ <use xlink:href="#bookmark-star"></use>
19
+ </svg>
20
+ <div>
21
+ <h5 class="mb-0">Bookmarks</h5>
22
+ Save items you love for easy access later.
23
+ </div>
24
+ </li>
25
+ <li class="d-flex gap-4">
26
+ <svg class="bi text-primary flex-shrink-0" width="48" height="48" aria-hidden="true">
27
+ <use xlink:href="#film"></use>
28
+ </svg>
29
+ <div>
30
+ <h5 class="mb-0">Video embeds</h5>
31
+ Share videos wherever you go.
32
+ </div>
33
+ </li>
34
+ </ul>
35
+ <button type="button" class="btn btn-lg btn-primary mt-5 w-100" data-bs-dismiss="modal">
36
+ Great, thanks!
37
+ </button>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </div>
@@ -0,0 +1,90 @@
1
+ <div class="flex-shrink-0 p-3" style="width: 280px;">
2
+ <a href="/" class="d-flex align-items-center pb-3 mb-3 link-body-emphasis text-decoration-none border-bottom">
3
+ <svg class="bi pe-none me-2" width="30" height="24" aria-hidden="true">
4
+ <use xlink:href="#bootstrap"></use>
5
+ </svg>
6
+ <span class="fs-5 fw-semibold">Collapsible</span>
7
+ </a>
8
+ <ul class="list-unstyled ps-0">
9
+ <li class="mb-1">
10
+ <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#home-collapse" aria-expanded="true">
11
+ Home
12
+ </button>
13
+ <div class="collapse show" id="home-collapse">
14
+ <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small">
15
+ <li>
16
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Overview</a>
17
+ </li>
18
+ <li>
19
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Updates</a>
20
+ </li>
21
+ <li>
22
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Reports</a>
23
+ </li>
24
+ </ul>
25
+ </div>
26
+ </li>
27
+ <li class="mb-1">
28
+ <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#dashboard-collapse" aria-expanded="false">
29
+ Dashboard
30
+ </button>
31
+ <div class="collapse" id="dashboard-collapse">
32
+ <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small">
33
+ <li>
34
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Overview</a>
35
+ </li>
36
+ <li>
37
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Weekly</a>
38
+ </li>
39
+ <li>
40
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Monthly</a>
41
+ </li>
42
+ <li>
43
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Annually</a>
44
+ </li>
45
+ </ul>
46
+ </div>
47
+ </li>
48
+ <li class="mb-1">
49
+ <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#orders-collapse" aria-expanded="false">
50
+ Orders
51
+ </button>
52
+ <div class="collapse" id="orders-collapse">
53
+ <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small">
54
+ <li><a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">New</a></li>
55
+ <li>
56
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Processed</a>
57
+ </li>
58
+ <li>
59
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Shipped</a>
60
+ </li>
61
+ <li>
62
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Returned</a>
63
+ </li>
64
+ </ul>
65
+ </div>
66
+ </li>
67
+ <li class="border-top my-3"></li>
68
+ <li class="mb-1">
69
+ <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#account-collapse" aria-expanded="false">
70
+ Account
71
+ </button>
72
+ <div class="collapse" id="account-collapse">
73
+ <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small">
74
+ <li>
75
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">New...</a>
76
+ </li>
77
+ <li>
78
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Profile</a>
79
+ </li>
80
+ <li>
81
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Settings</a>
82
+ </li>
83
+ <li>
84
+ <a href="#" class="link-body-emphasis d-inline-flex text-decoration-none rounded">Sign out</a>
85
+ </li>
86
+ </ul>
87
+ </div>
88
+ </li>
89
+ </ul>
90
+ </div>
@@ -0,0 +1,67 @@
1
+ <div class="d-flex flex-column flex-shrink-0 p-3 text-bg-dark" style="width: 280px;">
2
+ <a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-white text-decoration-none">
3
+ <svg class="bi pe-none me-2" width="40" height="32" aria-hidden="true">
4
+ <use xlink:href="#bootstrap"></use>
5
+ </svg>
6
+ <span class="fs-4">Sidebar</span>
7
+ </a>
8
+ <hr>
9
+ <ul class="nav nav-pills flex-column mb-auto">
10
+ <li class="nav-item">
11
+ <a href="#" class="nav-link active" aria-current="page">
12
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
13
+ <use xlink:href="#home"></use>
14
+ </svg>
15
+ Home
16
+ </a>
17
+ </li>
18
+ <li>
19
+ <a href="#" class="nav-link text-white">
20
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
21
+ <use xlink:href="#speedometer2"></use>
22
+ </svg>
23
+ Dashboard
24
+ </a>
25
+ </li>
26
+ <li>
27
+ <a href="#" class="nav-link text-white">
28
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
29
+ <use xlink:href="#table"></use>
30
+ </svg>
31
+ Orders
32
+ </a>
33
+ </li>
34
+ <li>
35
+ <a href="#" class="nav-link text-white">
36
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
37
+ <use xlink:href="#grid"></use>
38
+ </svg>
39
+ Products
40
+ </a>
41
+ </li>
42
+ <li>
43
+ <a href="#" class="nav-link text-white">
44
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
45
+ <use xlink:href="#people-circle"></use>
46
+ </svg>
47
+ Customers
48
+ </a>
49
+ </li>
50
+ </ul>
51
+ <hr>
52
+ <div class="dropdown">
53
+ <a href="#" class="d-flex align-items-center text-white text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
54
+ <img src="https://github.com/mdo.png" alt="" width="32" height="32" class="rounded-circle me-2">
55
+ <strong>mdo</strong>
56
+ </a>
57
+ <ul class="dropdown-menu dropdown-menu-dark text-small shadow">
58
+ <li><a class="dropdown-item" href="#">New project...</a></li>
59
+ <li><a class="dropdown-item" href="#">Settings</a></li>
60
+ <li><a class="dropdown-item" href="#">Profile</a></li>
61
+ <li>
62
+ <hr class="dropdown-divider">
63
+ </li>
64
+ <li><a class="dropdown-item" href="#">Sign out</a></li>
65
+ </ul>
66
+ </div>
67
+ </div>
@@ -0,0 +1,59 @@
1
+ <div class="d-flex flex-column flex-shrink-0 bg-body-tertiary" style="width: 4.5rem;">
2
+ <a href="/" class="d-block p-3 link-body-emphasis text-decoration-none" title="Icon-only" data-bs-toggle="tooltip" data-bs-placement="right">
3
+ <svg class="bi pe-none" width="40" height="32" aria-hidden="true">
4
+ <use xlink:href="#bootstrap"></use>
5
+ </svg>
6
+ <span class="visually-hidden">Icon-only</span>
7
+ </a>
8
+ <ul class="nav nav-pills nav-flush flex-column mb-auto text-center">
9
+ <li class="nav-item">
10
+ <a href="#" class="nav-link active py-3 border-bottom rounded-0" aria-current="page" title="Home" data-bs-toggle="tooltip" data-bs-placement="right">
11
+ <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Home">
12
+ <use xlink:href="#home"></use>
13
+ </svg>
14
+ </a>
15
+ </li>
16
+ <li>
17
+ <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Dashboard" data-bs-toggle="tooltip" data-bs-placement="right">
18
+ <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Dashboard">
19
+ <use xlink:href="#speedometer2"></use>
20
+ </svg>
21
+ </a>
22
+ </li>
23
+ <li>
24
+ <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Orders" data-bs-toggle="tooltip" data-bs-placement="right">
25
+ <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Orders">
26
+ <use xlink:href="#table"></use>
27
+ </svg>
28
+ </a>
29
+ </li>
30
+ <li>
31
+ <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Products" data-bs-toggle="tooltip" data-bs-placement="right">
32
+ <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Products">
33
+ <use xlink:href="#grid"></use>
34
+ </svg>
35
+ </a>
36
+ </li>
37
+ <li>
38
+ <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Customers" data-bs-toggle="tooltip" data-bs-placement="right">
39
+ <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Customers">
40
+ <use xlink:href="#people-circle"></use>
41
+ </svg>
42
+ </a>
43
+ </li>
44
+ </ul>
45
+ <div class="dropdown border-top">
46
+ <a href="#" class="d-flex align-items-center justify-content-center p-3 link-body-emphasis text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
47
+ <img src="https://github.com/mdo.png" alt="mdo" width="24" height="24" class="rounded-circle">
48
+ </a>
49
+ <ul class="dropdown-menu text-small shadow">
50
+ <li><a class="dropdown-item" href="#">New project...</a></li>
51
+ <li><a class="dropdown-item" href="#">Settings</a></li>
52
+ <li><a class="dropdown-item" href="#">Profile</a></li>
53
+ <li>
54
+ <hr class="dropdown-divider">
55
+ </li>
56
+ <li><a class="dropdown-item" href="#">Sign out</a></li>
57
+ </ul>
58
+ </div>
59
+ </div>
@@ -0,0 +1,67 @@
1
+ <div class="d-flex flex-column flex-shrink-0 p-3 bg-body-tertiary" style="width: 280px;">
2
+ <a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-body-emphasis text-decoration-none">
3
+ <svg class="bi pe-none me-2" width="40" height="32" aria-hidden="true">
4
+ <use xlink:href="#bootstrap"></use>
5
+ </svg>
6
+ <span class="fs-4">Sidebar</span>
7
+ </a>
8
+ <hr>
9
+ <ul class="nav nav-pills flex-column mb-auto">
10
+ <li class="nav-item">
11
+ <a href="#" class="nav-link active" aria-current="page">
12
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
13
+ <use xlink:href="#home"></use>
14
+ </svg>
15
+ Home
16
+ </a>
17
+ </li>
18
+ <li>
19
+ <a href="#" class="nav-link link-body-emphasis">
20
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
21
+ <use xlink:href="#speedometer2"></use>
22
+ </svg>
23
+ Dashboard
24
+ </a>
25
+ </li>
26
+ <li>
27
+ <a href="#" class="nav-link link-body-emphasis">
28
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
29
+ <use xlink:href="#table"></use>
30
+ </svg>
31
+ Orders
32
+ </a>
33
+ </li>
34
+ <li>
35
+ <a href="#" class="nav-link link-body-emphasis">
36
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
37
+ <use xlink:href="#grid"></use>
38
+ </svg>
39
+ Products
40
+ </a>
41
+ </li>
42
+ <li>
43
+ <a href="#" class="nav-link link-body-emphasis">
44
+ <svg class="bi pe-none me-2" width="16" height="16" aria-hidden="true">
45
+ <use xlink:href="#people-circle"></use>
46
+ </svg>
47
+ Customers
48
+ </a>
49
+ </li>
50
+ </ul>
51
+ <hr>
52
+ <div class="dropdown">
53
+ <a href="#" class="d-flex align-items-center link-body-emphasis text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
54
+ <img src="https://github.com/mdo.png" alt="" width="32" height="32" class="rounded-circle me-2">
55
+ <strong>mdo</strong>
56
+ </a>
57
+ <ul class="dropdown-menu text-small shadow">
58
+ <li><a class="dropdown-item" href="#">New project...</a></li>
59
+ <li><a class="dropdown-item" href="#">Settings</a></li>
60
+ <li><a class="dropdown-item" href="#">Profile</a></li>
61
+ <li>
62
+ <hr class="dropdown-divider">
63
+ </li>
64
+ <li><a class="dropdown-item" href="#">Sign out</a></li>
65
+ </ul>
66
+ </div>
67
+ </div>
@@ -0,0 +1,94 @@
1
+ <div class="d-flex flex-column align-items-stretch flex-shrink-0 bg-body-tertiary" style="width: 380px;">
2
+ <a href="/" class="d-flex align-items-center flex-shrink-0 p-3 link-body-emphasis text-decoration-none border-bottom">
3
+ <svg class="bi pe-none me-2" width="30" height="24" aria-hidden="true">
4
+ <use xlink:href="#bootstrap"></use>
5
+ </svg>
6
+ <span class="fs-5 fw-semibold">List group</span>
7
+ </a>
8
+ <div class="list-group list-group-flush border-bottom scrollarea">
9
+ <a href="#" class="list-group-item list-group-item-action active py-3 lh-sm" aria-current="true">
10
+ <div class="d-flex w-100 align-items-center justify-content-between">
11
+ <strong class="mb-1">List group item heading</strong>
12
+ <small>Wed</small>
13
+ </div>
14
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
15
+ </a>
16
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
17
+ <div class="d-flex w-100 align-items-center justify-content-between">
18
+ <strong class="mb-1">List group item heading</strong>
19
+ <small class="text-body-secondary">Tues</small>
20
+ </div>
21
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
22
+ </a>
23
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
24
+ <div class="d-flex w-100 align-items-center justify-content-between">
25
+ <strong class="mb-1">List group item heading</strong>
26
+ <small class="text-body-secondary">Mon</small>
27
+ </div>
28
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
29
+ </a>
30
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm" aria-current="true">
31
+ <div class="d-flex w-100 align-items-center justify-content-between">
32
+ <strong class="mb-1">List group item heading</strong>
33
+ <small class="text-body-secondary">Wed</small>
34
+ </div>
35
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
36
+ </a>
37
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
38
+ <div class="d-flex w-100 align-items-center justify-content-between">
39
+ <strong class="mb-1">List group item heading</strong>
40
+ <small class="text-body-secondary">Tues</small>
41
+ </div>
42
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
43
+ </a>
44
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
45
+ <div class="d-flex w-100 align-items-center justify-content-between">
46
+ <strong class="mb-1">List group item heading</strong>
47
+ <small class="text-body-secondary">Mon</small>
48
+ </div>
49
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
50
+ </a>
51
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm" aria-current="true">
52
+ <div class="d-flex w-100 align-items-center justify-content-between">
53
+ <strong class="mb-1">List group item heading</strong>
54
+ <small class="text-body-secondary">Wed</small>
55
+ </div>
56
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
57
+ </a>
58
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
59
+ <div class="d-flex w-100 align-items-center justify-content-between">
60
+ <strong class="mb-1">List group item heading</strong>
61
+ <small class="text-body-secondary">Tues</small>
62
+ </div>
63
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
64
+ </a>
65
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
66
+ <div class="d-flex w-100 align-items-center justify-content-between">
67
+ <strong class="mb-1">List group item heading</strong>
68
+ <small class="text-body-secondary">Mon</small>
69
+ </div>
70
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
71
+ </a>
72
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm" aria-current="true">
73
+ <div class="d-flex w-100 align-items-center justify-content-between">
74
+ <strong class="mb-1">List group item heading</strong>
75
+ <small class="text-body-secondary">Wed</small>
76
+ </div>
77
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
78
+ </a>
79
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
80
+ <div class="d-flex w-100 align-items-center justify-content-between">
81
+ <strong class="mb-1">List group item heading</strong>
82
+ <small class="text-body-secondary">Tues</small>
83
+ </div>
84
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
85
+ </a>
86
+ <a href="#" class="list-group-item list-group-item-action py-3 lh-sm">
87
+ <div class="d-flex w-100 align-items-center justify-content-between">
88
+ <strong class="mb-1">List group item heading</strong>
89
+ <small class="text-body-secondary">Mon</small>
90
+ </div>
91
+ <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div>
92
+ </a>
93
+ </div>
94
+ </div>
@@ -0,0 +1,37 @@
1
+ require 'rails/generators'
2
+ require 'twitter/bootstrap/rails/version'
3
+ require 'generators/bootstrap/cdn_tags'
4
+
5
+ module Bootstrap
6
+ module Generators
7
+ # Writes the starter template from
8
+ # https://getbootstrap.com/docs/5.3/getting-started/introduction/
9
+ class StarterGenerator < ::Rails::Generators::Base
10
+ include CdnTags
11
+
12
+ source_root File.expand_path("../templates", __FILE__)
13
+ desc "Writes the Bootstrap #{Twitter::Bootstrap::Rails::BOOTSTRAP_VERSION} starter HTML template"
14
+
15
+ class_option :path, :type => :string, :default => 'public/bootstrap-starter.html',
16
+ :desc => 'Where to write the starter template'
17
+ class_option :'separate-popper', :type => :boolean, :default => false,
18
+ :desc => 'Emit Popper and bootstrap.js as separate tags instead of the bundle'
19
+
20
+ def create_starter_template
21
+ template "starter.html.erb", options[:path]
22
+ end
23
+
24
+ def report
25
+ say "Open #{options[:path]} in a browser to check your Bootstrap setup."
26
+ end
27
+
28
+ private
29
+
30
+ # The docs' starter uses the single bundle; --separate-popper swaps in the pair.
31
+ def script_tags
32
+ tags = options[:'separate-popper'] ? separate_popper_tags : bundle_tag
33
+ tags.split("\n").join("\n ")
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Bootstrap demo</title>
7
+ <%= css_tag %>
8
+ </head>
9
+ <body>
10
+ <h1>Hello, world!</h1>
11
+ <%= script_tags %>
12
+ </body>
13
+ </html>
@@ -1,2 +1,3 @@
1
1
  require "twitter/bootstrap/rails/engine"
2
2
  require "twitter/bootstrap/rails/version"
3
+ require "twitter/bootstrap/rails/config"