nfg_ui 0.9.8.15

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 (384) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +431 -0
  4. data/Rakefile +23 -0
  5. data/app/assets/config/nfg_ui_manifest.js +3 -0
  6. data/app/assets/images/nfg_ui/app_icon/android-chrome-192x192.png +0 -0
  7. data/app/assets/images/nfg_ui/app_icon/android-chrome-384x384.png +0 -0
  8. data/app/assets/images/nfg_ui/app_icon/apple-touch-icon.png +0 -0
  9. data/app/assets/images/nfg_ui/app_icon/browserconfig.xml.erb +9 -0
  10. data/app/assets/images/nfg_ui/app_icon/favicon-16x16.png +0 -0
  11. data/app/assets/images/nfg_ui/app_icon/favicon-32x32.png +0 -0
  12. data/app/assets/images/nfg_ui/app_icon/favicon.ico +0 -0
  13. data/app/assets/images/nfg_ui/app_icon/mstile-150x150.png +0 -0
  14. data/app/assets/images/nfg_ui/app_icon/safari-pinned-tab.svg +38 -0
  15. data/app/assets/images/nfg_ui/app_icon/site.webmanifest.erb +19 -0
  16. data/app/assets/images/nfg_ui/email/icons/fa-caret-right.png +0 -0
  17. data/app/assets/images/nfg_ui/email/icons/fa-facebook.png +0 -0
  18. data/app/assets/images/nfg_ui/email/icons/fa-linkedin.png +0 -0
  19. data/app/assets/images/nfg_ui/email/icons/fa-twitter.png +0 -0
  20. data/app/assets/images/nfg_ui/email/icons/fa-youtube.png +0 -0
  21. data/app/assets/images/nfg_ui/email/nfg-logo.png +0 -0
  22. data/app/assets/javascripts/nfg_ui/application.coffee +16 -0
  23. data/app/assets/javascripts/nfg_ui/collapsible_toggle.coffee +47 -0
  24. data/app/assets/javascripts/nfg_ui/prevent_clickable_disabled_element.coffee +47 -0
  25. data/app/assets/javascripts/nfg_ui/vendor/select2.coffee +26 -0
  26. data/app/assets/javascripts/nfg_ui/vendor/tooltips.coffee +18 -0
  27. data/app/assets/stylesheets/nfg_ui/bootstrap/application.scss +2 -0
  28. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/_variables.scss +1123 -0
  29. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/application.scss +23 -0
  30. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_alert.scss +2 -0
  31. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_backgrounds.scss +9 -0
  32. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_button-group.scss +8 -0
  33. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_buttons.scss +17 -0
  34. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_card.scss +20 -0
  35. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_custom.scss +20 -0
  36. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_custom_forms.scss +156 -0
  37. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_dropdown.scss +24 -0
  38. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_forms.scss +85 -0
  39. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_media.scss +2 -0
  40. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_nav.scss +22 -0
  41. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_navbar.scss +132 -0
  42. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_progress.scss +3 -0
  43. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_reboot.scss +31 -0
  44. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_tables.scss +7 -0
  45. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_tooltip.scss +5 -0
  46. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_type.scss +82 -0
  47. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_card.scss +6 -0
  48. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_preview.scss +25 -0
  49. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_content_section_buttons.scss +11 -0
  50. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_custom_questions_questionnaire.scss +84 -0
  51. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_custom_receipt_language.scss +15 -0
  52. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_email_preview.scss +24 -0
  53. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_interaction.scss +2 -0
  54. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_mobile.scss +4 -0
  55. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_nav_step.scss +95 -0
  56. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_overlay_blocker.scss +49 -0
  57. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_page_header.scss +9 -0
  58. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_product_icons.scss +45 -0
  59. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_redactor.scss +25 -0
  60. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_share_dropdown.scss +53 -0
  61. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_slat.scss +113 -0
  62. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_social_share.scss +44 -0
  63. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_status_indicator.scss +9 -0
  64. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_ticket.scss +12 -0
  65. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_tile.scss +71 -0
  66. data/app/assets/stylesheets/nfg_ui/network_for_good/email/application.scss +38 -0
  67. data/app/assets/stylesheets/nfg_ui/network_for_good/email/foundation_emails/_alignment.scss +93 -0
  68. data/app/assets/stylesheets/nfg_ui/network_for_good/email/foundation_emails/_button.scss +345 -0
  69. data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_backgrounds.scss +15 -0
  70. data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_layout.scss +33 -0
  71. data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_rainbow_bar.scss +47 -0
  72. data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_spacers.scss +60 -0
  73. data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_typography.scss +6 -0
  74. data/app/assets/stylesheets/nfg_ui/network_for_good/email/settings/_settings.scss +148 -0
  75. data/app/assets/stylesheets/nfg_ui/network_for_good/public/_variables.scss +1124 -0
  76. data/app/assets/stylesheets/nfg_ui/network_for_good/public/application.scss +23 -0
  77. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/application.scss +19 -0
  78. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_badge.scss +6 -0
  79. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_buttons.scss +43 -0
  80. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_custom.scss +3 -0
  81. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_custom_forms.scss +50 -0
  82. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_forms.scss +12 -0
  83. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_functions.scss +29 -0
  84. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_navbar.scss +18 -0
  85. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_reboot.scss +6 -0
  86. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_type.scss +16 -0
  87. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_utilities.scss +8 -0
  88. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/custom/_everyday_default.scss +6 -0
  89. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/custom/_nav_step.scss +20 -0
  90. data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/plugins/_select2.scss +16 -0
  91. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/_variables.scss +13 -0
  92. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/application.scss +35 -0
  93. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_breadcrumb.scss +4 -0
  94. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_button-group.scss +10 -0
  95. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_card.scss +45 -0
  96. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_carousel.scss +18 -0
  97. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_custom-forms.scss +12 -0
  98. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_custom.scss +4 -0
  99. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_forms.scss +68 -0
  100. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_grid.scss +4 -0
  101. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_input-group.scss +25 -0
  102. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_list-group.scss +9 -0
  103. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_media.scss +5 -0
  104. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_mixins.scss +6 -0
  105. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_modal.scss +28 -0
  106. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_nav.scss +21 -0
  107. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_navbar.scss +54 -0
  108. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_pagination.scss +1 -0
  109. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_progress.scss +6 -0
  110. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_utilities.scss +2 -0
  111. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/custom/_everyday_giving.scss +8 -0
  112. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/custom/_nav_step.scss +13 -0
  113. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/custom/_slat.scss +66 -0
  114. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/mixins/_breakpoints.scss +123 -0
  115. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/mixins/_grid-framework.scss +30 -0
  116. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/mixins/_grid.scss +10 -0
  117. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/utilities/_display.scss +9 -0
  118. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/utilities/_flex.scss +49 -0
  119. data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/plugins/_sticky_div.scss +9 -0
  120. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_alert.scss +2 -0
  121. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_buttons.scss +17 -0
  122. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_card.scss +6 -0
  123. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_carousel.scss +9 -0
  124. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_custom.scss +12 -0
  125. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_custom_forms.scss +156 -0
  126. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_dropdown.scss +1 -0
  127. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_event.scss +19 -0
  128. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_forms.scss +83 -0
  129. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_list-group.scss +12 -0
  130. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_progress.scss +9 -0
  131. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_reboot.scss +31 -0
  132. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_tooltip.scss +5 -0
  133. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_type.scss +81 -0
  134. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_admin_bar.scss +20 -0
  135. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_background_variations.scss +12 -0
  136. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_everyday_default.scss +43 -0
  137. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_everyday_story.scss +21 -0
  138. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_footer_links.scss +8 -0
  139. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_nav_step.scss +95 -0
  140. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_slat.scss +110 -0
  141. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_social_share.scss +44 -0
  142. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_ticket.scss +12 -0
  143. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_tile.scss +63 -0
  144. data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_user_navbar.scss +33 -0
  145. data/app/assets/stylesheets/nfg_ui/network_for_good/public/plugins/_datepicker.scss +2 -0
  146. data/app/assets/stylesheets/nfg_ui/network_for_good/public/plugins/_select2.scss +216 -0
  147. data/app/assets/stylesheets/nfg_ui/network_for_good/public/plugins/_sticky_div.scss +11 -0
  148. data/app/controllers/nfg_ui/application_controller.rb +5 -0
  149. data/app/helpers/nfg_ui/application_helper.rb +27 -0
  150. data/app/helpers/nfg_ui/components/email_helpers.rb +8 -0
  151. data/app/helpers/nfg_ui/components/resource_themes_helper.rb +8 -0
  152. data/app/helpers/nfg_ui/components/tooltip_helper.rb +24 -0
  153. data/app/models/nfg_ui/application_record.rb +5 -0
  154. data/app/views/nfg_ui/app_icons/_icons.html.haml +10 -0
  155. data/app/views/nfg_ui/email/README.md +12 -0
  156. data/app/views/nfg_ui/email/_button.html.haml +12 -0
  157. data/app/views/nfg_ui/email/_email_signature.html.haml +4 -0
  158. data/app/views/nfg_ui/email/_footer.html.haml +16 -0
  159. data/app/views/nfg_ui/email/_header.html.haml +6 -0
  160. data/app/views/nfg_ui/email/_logo.html.haml +6 -0
  161. data/app/views/nfg_ui/email/_product_content_image.html.haml +7 -0
  162. data/app/views/nfg_ui/email/_rainbow_bar.html.haml +10 -0
  163. data/app/views/nfg_ui/email/_section_header.html.haml +8 -0
  164. data/app/views/nfg_ui/email/_social_network_link.html.haml +12 -0
  165. data/app/views/nfg_ui/email/_sub_footer.html.haml +9 -0
  166. data/app/views/nfg_ui/email/_table_row.html.haml +13 -0
  167. data/config/initializers/web_app_manifest.rb +3 -0
  168. data/config/locales/email.yml +34 -0
  169. data/config/locales/en.yml +63 -0
  170. data/config/routes.rb +2 -0
  171. data/config/spring.rb +1 -0
  172. data/lib/nfg_ui/bootstrap/components/alert.rb +52 -0
  173. data/lib/nfg_ui/bootstrap/components/badge.rb +39 -0
  174. data/lib/nfg_ui/bootstrap/components/base.rb +151 -0
  175. data/lib/nfg_ui/bootstrap/components/breadcrumb.rb +23 -0
  176. data/lib/nfg_ui/bootstrap/components/breadcrumb_item.rb +28 -0
  177. data/lib/nfg_ui/bootstrap/components/button.rb +74 -0
  178. data/lib/nfg_ui/bootstrap/components/button_group.rb +36 -0
  179. data/lib/nfg_ui/bootstrap/components/button_toolbar.rb +21 -0
  180. data/lib/nfg_ui/bootstrap/components/card.rb +81 -0
  181. data/lib/nfg_ui/bootstrap/components/card_body.rb +15 -0
  182. data/lib/nfg_ui/bootstrap/components/card_footer.rb +15 -0
  183. data/lib/nfg_ui/bootstrap/components/card_header.rb +35 -0
  184. data/lib/nfg_ui/bootstrap/components/card_image.rb +33 -0
  185. data/lib/nfg_ui/bootstrap/components/card_image_overlay.rb +46 -0
  186. data/lib/nfg_ui/bootstrap/components/carousel.rb +57 -0
  187. data/lib/nfg_ui/bootstrap/components/carousel_caption.rb +34 -0
  188. data/lib/nfg_ui/bootstrap/components/carousel_control.rb +73 -0
  189. data/lib/nfg_ui/bootstrap/components/carousel_indicators.rb +54 -0
  190. data/lib/nfg_ui/bootstrap/components/carousel_item.rb +49 -0
  191. data/lib/nfg_ui/bootstrap/components/collapse.rb +32 -0
  192. data/lib/nfg_ui/bootstrap/components/dropdown.rb +51 -0
  193. data/lib/nfg_ui/bootstrap/components/dropdown_divider.rb +19 -0
  194. data/lib/nfg_ui/bootstrap/components/dropdown_header.rb +23 -0
  195. data/lib/nfg_ui/bootstrap/components/dropdown_item.rb +41 -0
  196. data/lib/nfg_ui/bootstrap/components/dropdown_menu.rb +32 -0
  197. data/lib/nfg_ui/bootstrap/components/dropdown_toggle.rb +82 -0
  198. data/lib/nfg_ui/bootstrap/components/embed.rb +80 -0
  199. data/lib/nfg_ui/bootstrap/components/form.rb +13 -0
  200. data/lib/nfg_ui/bootstrap/components/input_group.rb +13 -0
  201. data/lib/nfg_ui/bootstrap/components/jumbotron.rb +13 -0
  202. data/lib/nfg_ui/bootstrap/components/list_group.rb +39 -0
  203. data/lib/nfg_ui/bootstrap/components/list_group_item.rb +69 -0
  204. data/lib/nfg_ui/bootstrap/components/media.rb +15 -0
  205. data/lib/nfg_ui/bootstrap/components/media_body.rb +15 -0
  206. data/lib/nfg_ui/bootstrap/components/media_object.rb +23 -0
  207. data/lib/nfg_ui/bootstrap/components/modal.rb +66 -0
  208. data/lib/nfg_ui/bootstrap/components/modal_body.rb +16 -0
  209. data/lib/nfg_ui/bootstrap/components/modal_footer.rb +16 -0
  210. data/lib/nfg_ui/bootstrap/components/modal_header.rb +37 -0
  211. data/lib/nfg_ui/bootstrap/components/nav.rb +71 -0
  212. data/lib/nfg_ui/bootstrap/components/nav_item.rb +103 -0
  213. data/lib/nfg_ui/bootstrap/components/nav_link.rb +62 -0
  214. data/lib/nfg_ui/bootstrap/components/navbar.rb +97 -0
  215. data/lib/nfg_ui/bootstrap/components/navbar_brand.rb +25 -0
  216. data/lib/nfg_ui/bootstrap/components/navbar_nav.rb +48 -0
  217. data/lib/nfg_ui/bootstrap/components/navbar_text.rb +21 -0
  218. data/lib/nfg_ui/bootstrap/components/navbar_toggler.rb +38 -0
  219. data/lib/nfg_ui/bootstrap/components/page_item.rb +66 -0
  220. data/lib/nfg_ui/bootstrap/components/pagination.rb +30 -0
  221. data/lib/nfg_ui/bootstrap/components/popover.rb +12 -0
  222. data/lib/nfg_ui/bootstrap/components/progress.rb +44 -0
  223. data/lib/nfg_ui/bootstrap/components/progress_bar.rb +51 -0
  224. data/lib/nfg_ui/bootstrap/components/tab_content.rb +15 -0
  225. data/lib/nfg_ui/bootstrap/components/tab_pane.rb +49 -0
  226. data/lib/nfg_ui/bootstrap/components/table.rb +17 -0
  227. data/lib/nfg_ui/bootstrap/readme.md +1 -0
  228. data/lib/nfg_ui/bootstrap/utilities/activatable.rb +32 -0
  229. data/lib/nfg_ui/bootstrap/utilities/alignable.rb +33 -0
  230. data/lib/nfg_ui/bootstrap/utilities/collapse_toggleable.rb +35 -0
  231. data/lib/nfg_ui/bootstrap/utilities/collapsible.rb +42 -0
  232. data/lib/nfg_ui/bootstrap/utilities/disableable.rb +49 -0
  233. data/lib/nfg_ui/bootstrap/utilities/dismissible.rb +24 -0
  234. data/lib/nfg_ui/bootstrap/utilities/dropdown_directionable.rb +40 -0
  235. data/lib/nfg_ui/bootstrap/utilities/headable.rb +20 -0
  236. data/lib/nfg_ui/bootstrap/utilities/modalable.rb +104 -0
  237. data/lib/nfg_ui/bootstrap/utilities/progressable.rb +42 -0
  238. data/lib/nfg_ui/bootstrap/utilities/remotable.rb +24 -0
  239. data/lib/nfg_ui/bootstrap/utilities/sizable.rb +40 -0
  240. data/lib/nfg_ui/bootstrap/utilities/themeable.rb +51 -0
  241. data/lib/nfg_ui/bootstrap/utilities/tooltipable.rb +95 -0
  242. data/lib/nfg_ui/bootstrap/utilities/wrappable.rb +48 -0
  243. data/lib/nfg_ui/components/base.rb +14 -0
  244. data/lib/nfg_ui/components/elements/activity.rb +10 -0
  245. data/lib/nfg_ui/components/elements/alert.rb +63 -0
  246. data/lib/nfg_ui/components/elements/badge.rb +32 -0
  247. data/lib/nfg_ui/components/elements/breadcrumb.rb +16 -0
  248. data/lib/nfg_ui/components/elements/breadcrumb_item.rb +16 -0
  249. data/lib/nfg_ui/components/elements/button.rb +97 -0
  250. data/lib/nfg_ui/components/elements/card_body.rb +15 -0
  251. data/lib/nfg_ui/components/elements/card_footer.rb +14 -0
  252. data/lib/nfg_ui/components/elements/card_header.rb +14 -0
  253. data/lib/nfg_ui/components/elements/card_image.rb +14 -0
  254. data/lib/nfg_ui/components/elements/card_image_overlay.rb +14 -0
  255. data/lib/nfg_ui/components/elements/carousel_caption.rb +14 -0
  256. data/lib/nfg_ui/components/elements/carousel_control.rb +14 -0
  257. data/lib/nfg_ui/components/elements/carousel_indicators.rb +23 -0
  258. data/lib/nfg_ui/components/elements/carousel_item.rb +16 -0
  259. data/lib/nfg_ui/components/elements/chart.rb +11 -0
  260. data/lib/nfg_ui/components/elements/dropdown_divider.rb +14 -0
  261. data/lib/nfg_ui/components/elements/dropdown_header.rb +14 -0
  262. data/lib/nfg_ui/components/elements/dropdown_item.rb +78 -0
  263. data/lib/nfg_ui/components/elements/dropdown_toggle.rb +37 -0
  264. data/lib/nfg_ui/components/elements/embed.rb +15 -0
  265. data/lib/nfg_ui/components/elements/form_control.rb +18 -0
  266. data/lib/nfg_ui/components/elements/input_group.rb +14 -0
  267. data/lib/nfg_ui/components/elements/key.rb +11 -0
  268. data/lib/nfg_ui/components/elements/list_group_item.rb +14 -0
  269. data/lib/nfg_ui/components/elements/loader.rb +11 -0
  270. data/lib/nfg_ui/components/elements/media_body.rb +14 -0
  271. data/lib/nfg_ui/components/elements/media_object.rb +12 -0
  272. data/lib/nfg_ui/components/elements/modal_body.rb +14 -0
  273. data/lib/nfg_ui/components/elements/modal_footer.rb +14 -0
  274. data/lib/nfg_ui/components/elements/modal_header.rb +14 -0
  275. data/lib/nfg_ui/components/elements/nav.rb +19 -0
  276. data/lib/nfg_ui/components/elements/nav_item.rb +39 -0
  277. data/lib/nfg_ui/components/elements/nav_link.rb +33 -0
  278. data/lib/nfg_ui/components/elements/navbar_brand.rb +15 -0
  279. data/lib/nfg_ui/components/elements/navbar_text.rb +14 -0
  280. data/lib/nfg_ui/components/elements/navbar_toggler.rb +14 -0
  281. data/lib/nfg_ui/components/elements/page_item.rb +14 -0
  282. data/lib/nfg_ui/components/elements/popover.rb +14 -0
  283. data/lib/nfg_ui/components/elements/progress_bar.rb +62 -0
  284. data/lib/nfg_ui/components/elements/slat_action.rb +14 -0
  285. data/lib/nfg_ui/components/elements/slat_body.rb +14 -0
  286. data/lib/nfg_ui/components/elements/slat_item.rb +62 -0
  287. data/lib/nfg_ui/components/elements/stat.rb +11 -0
  288. data/lib/nfg_ui/components/elements/step.rb +55 -0
  289. data/lib/nfg_ui/components/elements/step_indicator.rb +41 -0
  290. data/lib/nfg_ui/components/elements/tab_pane.rb +15 -0
  291. data/lib/nfg_ui/components/elements/table.rb +14 -0
  292. data/lib/nfg_ui/components/elements/task.rb +11 -0
  293. data/lib/nfg_ui/components/elements.rb +58 -0
  294. data/lib/nfg_ui/components/foundations/color.rb +11 -0
  295. data/lib/nfg_ui/components/foundations/grid.rb +11 -0
  296. data/lib/nfg_ui/components/foundations/icon.rb +82 -0
  297. data/lib/nfg_ui/components/foundations/image.rb +14 -0
  298. data/lib/nfg_ui/components/foundations/input.rb +11 -0
  299. data/lib/nfg_ui/components/foundations/typeface.rb +122 -0
  300. data/lib/nfg_ui/components/patterns/activity_feed.rb +11 -0
  301. data/lib/nfg_ui/components/patterns/button_group.rb +23 -0
  302. data/lib/nfg_ui/components/patterns/button_toolbar.rb +20 -0
  303. data/lib/nfg_ui/components/patterns/card.rb +39 -0
  304. data/lib/nfg_ui/components/patterns/carousel.rb +31 -0
  305. data/lib/nfg_ui/components/patterns/collapse.rb +31 -0
  306. data/lib/nfg_ui/components/patterns/dropdown.rb +27 -0
  307. data/lib/nfg_ui/components/patterns/dropdown_menu.rb +16 -0
  308. data/lib/nfg_ui/components/patterns/empty_state.rb +11 -0
  309. data/lib/nfg_ui/components/patterns/filter_bar.rb +11 -0
  310. data/lib/nfg_ui/components/patterns/form_group.rb +11 -0
  311. data/lib/nfg_ui/components/patterns/graph.rb +11 -0
  312. data/lib/nfg_ui/components/patterns/jumbotron.rb +14 -0
  313. data/lib/nfg_ui/components/patterns/list_group.rb +16 -0
  314. data/lib/nfg_ui/components/patterns/media.rb +14 -0
  315. data/lib/nfg_ui/components/patterns/modal.rb +15 -0
  316. data/lib/nfg_ui/components/patterns/navbar.rb +17 -0
  317. data/lib/nfg_ui/components/patterns/navbar_nav.rb +17 -0
  318. data/lib/nfg_ui/components/patterns/page_header.rb +85 -0
  319. data/lib/nfg_ui/components/patterns/pagination.rb +14 -0
  320. data/lib/nfg_ui/components/patterns/progress.rb +24 -0
  321. data/lib/nfg_ui/components/patterns/slat.rb +14 -0
  322. data/lib/nfg_ui/components/patterns/slat_actions.rb +115 -0
  323. data/lib/nfg_ui/components/patterns/slat_header.rb +23 -0
  324. data/lib/nfg_ui/components/patterns/slat_list.rb +18 -0
  325. data/lib/nfg_ui/components/patterns/slats.rb +14 -0
  326. data/lib/nfg_ui/components/patterns/steps.rb +27 -0
  327. data/lib/nfg_ui/components/patterns/tab_content.rb +14 -0
  328. data/lib/nfg_ui/components/patterns/task_list.rb +11 -0
  329. data/lib/nfg_ui/components/patterns/tile.rb +58 -0
  330. data/lib/nfg_ui/components/patterns/tile_body.rb +29 -0
  331. data/lib/nfg_ui/components/patterns/tile_header.rb +40 -0
  332. data/lib/nfg_ui/components/patterns/tile_section.rb +29 -0
  333. data/lib/nfg_ui/components/traits/active.rb +14 -0
  334. data/lib/nfg_ui/components/traits/alert.rb +36 -0
  335. data/lib/nfg_ui/components/traits/alignment.rb +26 -0
  336. data/lib/nfg_ui/components/traits/button.rb +47 -0
  337. data/lib/nfg_ui/components/traits/button_group.rb +22 -0
  338. data/lib/nfg_ui/components/traits/card.rb +14 -0
  339. data/lib/nfg_ui/components/traits/collapse.rb +29 -0
  340. data/lib/nfg_ui/components/traits/disable.rb +19 -0
  341. data/lib/nfg_ui/components/traits/disable_with.rb +14 -0
  342. data/lib/nfg_ui/components/traits/dismiss.rb +16 -0
  343. data/lib/nfg_ui/components/traits/dropdown_toggle.rb +14 -0
  344. data/lib/nfg_ui/components/traits/icon.rb +16 -0
  345. data/lib/nfg_ui/components/traits/list_group.rb +16 -0
  346. data/lib/nfg_ui/components/traits/muted.rb +16 -0
  347. data/lib/nfg_ui/components/traits/nav.rb +26 -0
  348. data/lib/nfg_ui/components/traits/nav_item.rb +16 -0
  349. data/lib/nfg_ui/components/traits/navbar.rb +18 -0
  350. data/lib/nfg_ui/components/traits/page_header.rb +16 -0
  351. data/lib/nfg_ui/components/traits/pill.rb +14 -0
  352. data/lib/nfg_ui/components/traits/progress_bar.rb +24 -0
  353. data/lib/nfg_ui/components/traits/remote.rb +14 -0
  354. data/lib/nfg_ui/components/traits/size.rb +18 -0
  355. data/lib/nfg_ui/components/traits/slat_item.rb +28 -0
  356. data/lib/nfg_ui/components/traits/step.rb +14 -0
  357. data/lib/nfg_ui/components/traits/theme.rb +57 -0
  358. data/lib/nfg_ui/components/traits/typeface.rb +53 -0
  359. data/lib/nfg_ui/components/traits/vertical.rb +16 -0
  360. data/lib/nfg_ui/components/traits.rb +43 -0
  361. data/lib/nfg_ui/components/utilities/browser_detectable.rb +16 -0
  362. data/lib/nfg_ui/components/utilities/confirmable.rb +24 -0
  363. data/lib/nfg_ui/components/utilities/describable.rb +22 -0
  364. data/lib/nfg_ui/components/utilities/disable_withable.rb +26 -0
  365. data/lib/nfg_ui/components/utilities/emailable.rb +44 -0
  366. data/lib/nfg_ui/components/utilities/iconable.rb +20 -0
  367. data/lib/nfg_ui/components/utilities/left_iconable.rb +22 -0
  368. data/lib/nfg_ui/components/utilities/methodable.rb +24 -0
  369. data/lib/nfg_ui/components/utilities/renderable.rb +24 -0
  370. data/lib/nfg_ui/components/utilities/resource_themeable.rb +49 -0
  371. data/lib/nfg_ui/components/utilities/titleable.rb +20 -0
  372. data/lib/nfg_ui/components/utilities/traitable.rb +32 -0
  373. data/lib/nfg_ui/components/utilities/vertically_alignable.rb +31 -0
  374. data/lib/nfg_ui/components/utilities.rb +22 -0
  375. data/lib/nfg_ui/engine.rb +45 -0
  376. data/lib/nfg_ui/ui/base.rb +35 -0
  377. data/lib/nfg_ui/ui/bootstrap.rb +44 -0
  378. data/lib/nfg_ui/ui/network_for_good.rb +54 -0
  379. data/lib/nfg_ui/ui/utilities/initializer.rb +88 -0
  380. data/lib/nfg_ui/ui/utilities.rb +10 -0
  381. data/lib/nfg_ui/version.rb +5 -0
  382. data/lib/nfg_ui.rb +174 -0
  383. data/lib/tasks/nfg_ui_tasks.rake +53 -0
  384. metadata +741 -0
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Elements
6
+ # Slat doc coming soon
7
+ class SlatItem < NfgUi::Components::Base
8
+ include Bootstrap::Utilities::Headable
9
+ include Bootstrap::Utilities::Sizable
10
+
11
+ include NfgUi::Components::Traits::Size
12
+ include NfgUi::Components::Traits::SlatItem
13
+
14
+ def component_family
15
+ :slats
16
+ end
17
+
18
+ def slat_header
19
+ options.fetch(:slat_header, nil)
20
+ end
21
+
22
+ def caption
23
+ options.fetch(:caption, nil)
24
+ end
25
+
26
+ def render
27
+ super do
28
+ if slat_header
29
+ concat(content_tag(:h6, slat_header, class: 'display-4'))
30
+ end
31
+ if heading
32
+ if href
33
+ concat(content_tag(:a, href: href) {
34
+ NfgUi::Components::Foundations::Typeface.new({ subheading: heading }, view_context).render
35
+ })
36
+ else
37
+ concat(NfgUi::Components::Foundations::Typeface.new({ subheading: heading }, view_context).render)
38
+ end
39
+ end
40
+ concat(block_given? ? yield : body)
41
+ if caption
42
+ concat(NfgUi::Components::Foundations::Typeface.new({ caption: caption, class: 'mb-0' }, view_context).render)
43
+ end
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def css_classes
50
+ [
51
+ super,
52
+ ('text-word-wrap' if size == :lg)
53
+ ]
54
+ end
55
+
56
+ def non_html_attribute_options
57
+ super.push(:slat_header, :caption)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Elements
6
+ # Stat doc coming soon
7
+ class Stat < NfgUi::Components::Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Elements
6
+ # Step doc coming soon
7
+ class Step < NfgUi::Components::Elements::NavItem
8
+ include Bootstrap::Utilities::Activatable
9
+
10
+ include NfgUi::Components::Utilities::Iconable
11
+
12
+ include NfgUi::Components::Traits::Step
13
+
14
+ def component_family
15
+ :steps
16
+ end
17
+
18
+ def step
19
+ options.fetch(:step, nil)
20
+ end
21
+
22
+ def visited
23
+ options.fetch(:visited, false)
24
+ end
25
+
26
+ def disabled
27
+ options[:disabled] || (!visited && !active)
28
+ end
29
+
30
+ def render
31
+ content_tag(as, html_options) do
32
+ NfgUi::Components::Elements::StepIndicator.new({ step: step.to_s, body: (block_given? ? yield : body), icon: icon, href: href, disabled: disabled }, view_context).render
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def base_element
39
+ as
40
+ end
41
+
42
+ def css_classes
43
+ [
44
+ super,
45
+ ('visited' if visited)
46
+ ].join(' ').squish
47
+ end
48
+
49
+ def non_html_attribute_options
50
+ super.push(:visited, :step)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Elements
6
+ # Step doc coming soon
7
+ class StepIndicator < NfgUi::Components::Elements::NavLink
8
+ def component_family
9
+ :steps
10
+ end
11
+
12
+ def href
13
+ options.fetch(:href, '#')
14
+ end
15
+
16
+ def step
17
+ options.fetch(:step, nil)
18
+ end
19
+
20
+ def render
21
+ content_tag(:a, html_options) do
22
+ concat(content_tag(:div, class: 'step-indicator') {
23
+ if icon
24
+ NfgUi::Components::Foundations::Icon.new({ traits: [icon,] }, view_context).render
25
+ else
26
+ step
27
+ end
28
+ })
29
+ concat(NfgUi::Components::Foundations::Typeface.new({ traits: [:muted], caption: (block_given? ? yield : body), class: 'mt-1 mb-0 step-text' }, view_context).render)
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def non_html_attribute_options
36
+ super.push(:step)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Elements
6
+ class TabPane < NfgUi::Bootstrap::Components::TabPane
7
+ include NfgUi::Components::Utilities::Traitable
8
+ include NfgUi::Components::Utilities::Describable
9
+ include NfgUi::Components::Utilities::Renderable
10
+
11
+ include NfgUi::Components::Traits::Active
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Elements
6
+ # Table doc coming soon
7
+ class Table < NfgUi::Bootstrap::Components::Table
8
+ include NfgUi::Components::Utilities::Traitable
9
+ include NfgUi::Components::Utilities::Describable
10
+ include NfgUi::Components::Utilities::Renderable
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Elements
6
+ # Task doc coming soon
7
+ class Task < NfgUi::Components::Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ # This is the authoritative document for 'Elements'
6
+ module Elements
7
+ require_relative 'elements/activity'
8
+ require_relative 'elements/alert'
9
+ require_relative 'elements/badge'
10
+ require_relative 'elements/breadcrumb'
11
+ require_relative 'elements/breadcrumb_item'
12
+ require_relative 'elements/button'
13
+ require_relative 'elements/card_body'
14
+ require_relative 'elements/card_footer'
15
+ require_relative 'elements/card_header'
16
+ require_relative 'elements/card_image'
17
+ require_relative 'elements/card_image_overlay'
18
+ require_relative 'elements/carousel_caption'
19
+ require_relative 'elements/carousel_control'
20
+ require_relative 'elements/carousel_indicators'
21
+ require_relative 'elements/carousel_item'
22
+ require_relative 'elements/chart'
23
+ require_relative 'elements/dropdown_divider'
24
+ require_relative 'elements/dropdown_header'
25
+ require_relative 'elements/dropdown_item'
26
+ require_relative 'elements/dropdown_toggle'
27
+ require_relative 'elements/embed'
28
+ require_relative 'elements/form_control'
29
+ require_relative 'elements/input_group'
30
+ require_relative 'elements/key'
31
+ require_relative 'elements/list_group_item'
32
+ require_relative 'elements/loader'
33
+ require_relative 'elements/media_body'
34
+ require_relative 'elements/media_object'
35
+ require_relative 'elements/modal_body'
36
+ require_relative 'elements/modal_footer'
37
+ require_relative 'elements/modal_header'
38
+ require_relative 'elements/nav'
39
+ require_relative 'elements/nav_item'
40
+ require_relative 'elements/nav_link'
41
+ require_relative 'elements/navbar_brand'
42
+ require_relative 'elements/navbar_text'
43
+ require_relative 'elements/navbar_toggler'
44
+ require_relative 'elements/page_item'
45
+ require_relative 'elements/popover'
46
+ require_relative 'elements/progress_bar'
47
+ require_relative 'elements/slat_action'
48
+ require_relative 'elements/slat_body'
49
+ require_relative 'elements/slat_item'
50
+ require_relative 'elements/stat'
51
+ require_relative 'elements/step'
52
+ require_relative 'elements/step_indicator'
53
+ require_relative 'elements/tab_pane'
54
+ require_relative 'elements/table'
55
+ require_relative 'elements/task'
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Foundations
6
+ # Color doc coming soon
7
+ class Color < NfgUi::Components::Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Foundations
6
+ # Grid doc coming soon
7
+ class Grid < NfgUi::Components::Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Foundations
6
+ # Icon doc coming soon
7
+ # Implementation and usage is designed to mimic the font_awesome_rails gem
8
+ #
9
+ # Example usage:
10
+ # = ui.nfg :icon, 'rocket', :right, text: 'Example text with icon on the right'
11
+ class Icon < NfgUi::Components::Base
12
+ include Bootstrap::Utilities::Themeable
13
+ include Bootstrap::Utilities::Tooltipable
14
+
15
+ include NfgUi::Components::Traits::Icon
16
+ include NfgUi::Components::Traits::Muted
17
+ include NfgUi::Components::Traits::Theme
18
+ include NfgUi::Components::Traits::Alignment
19
+
20
+ # Officially declare the icon spacer classes
21
+ # so that other iconable components that have more than one icon
22
+ # e.g.: :left_icon & :icon can use the spacer class manually
23
+ LEFT_ICON_SPACER_CSS_CLASS = 'mr-1'
24
+ RIGHT_ICON_SPACER_CSS_CLASS = 'ml-1'
25
+
26
+ def render
27
+ view_context.fa_icon icon, **html_options, text: text, right: right
28
+ end
29
+
30
+ def icon
31
+ options[:icon] || (traits.slice!(0).to_s if traits.first.is_a?(String))
32
+ end
33
+
34
+ def text
35
+ options.fetch(:text, nil)
36
+ end
37
+
38
+ def right
39
+ options.fetch(:right, false)
40
+ end
41
+
42
+ private
43
+
44
+ def css_classes
45
+ return super unless update_css_classes?
46
+ [
47
+ super,
48
+ (NfgUi::Components::Foundations::Icon::LEFT_ICON_SPACER_CSS_CLASS unless right),
49
+ (NfgUi::Components::Foundations::Icon::RIGHT_ICON_SPACER_CSS_CLASS if right)
50
+ ].join(' ').squish
51
+ end
52
+
53
+ def theme_css_class_prefix
54
+ 'text-'
55
+ end
56
+
57
+ def component_css_class
58
+ ''
59
+ end
60
+
61
+ def default_theme
62
+ nil
63
+ end
64
+
65
+ def non_html_attribute_options
66
+ super.push(:right, :text, :icon)
67
+ end
68
+
69
+ def outlineable?
70
+ false
71
+ end
72
+
73
+ # Several components need to utilize the icon with a spacer css class
74
+ # where text is supplied in the #render, and not passed to the icon
75
+ # thus, icons with :right trait are allowed through
76
+ def update_css_classes?
77
+ text || right
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Foundations
6
+ # Image doc coming soon
7
+ class Image < NfgUi::Components::Base
8
+ def render
9
+ content_tag(:img, html_options) {}
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Foundations
6
+ # Input doc coming soon
7
+ class Input < NfgUi::Components::Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,122 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Foundations
6
+ # Typeface doc coming soon
7
+ class Typeface < NfgUi::Components::Base
8
+ include Bootstrap::Utilities::Wrappable
9
+ include Bootstrap::Utilities::Themeable
10
+ include Bootstrap::Utilities::Tooltipable
11
+
12
+ include NfgUi::Components::Utilities::Iconable
13
+ include NfgUi::Components::Utilities::Titleable
14
+
15
+ include NfgUi::Components::Traits::Muted
16
+ include NfgUi::Components::Traits::Theme
17
+ include NfgUi::Components::Traits::Typeface
18
+
19
+ def render
20
+ super do
21
+ if icon
22
+ NfgUi::Components::Foundations::Icon.new({ icon: icon, text: body }, view_context).render
23
+ else
24
+ body
25
+ end
26
+ end
27
+ end
28
+
29
+ def as
30
+ if heading
31
+ heading_tag
32
+ elsif subheading
33
+ subheading_tag
34
+ elsif title
35
+ title_tag
36
+ elsif caption
37
+ caption_tag
38
+ else
39
+ super
40
+ end
41
+ end
42
+
43
+ def heading
44
+ options.fetch(:heading, nil)
45
+ end
46
+
47
+ def subheading
48
+ options.fetch(:subheading, nil)
49
+ end
50
+
51
+ def caption
52
+ options.fetch(:caption, nil)
53
+ end
54
+
55
+ def body
56
+ super || heading || title || caption || subheading
57
+ end
58
+
59
+ # def text_or_icon
60
+ # icon ? view_context.ui.nfg(:icon, icon, text: text) : text
61
+ # end
62
+
63
+ private
64
+
65
+ def base_element
66
+ as
67
+ end
68
+
69
+ def theme_css_class_prefix
70
+ 'text-'
71
+ end
72
+
73
+ def css_classes
74
+ [
75
+ super,
76
+ ('font-size-sm' if caption)
77
+ ].join(' ').squish
78
+ end
79
+
80
+ def default_theme
81
+ nil
82
+ end
83
+
84
+ def component_css_class
85
+ ''
86
+ end
87
+
88
+ def non_html_attribute_options
89
+ super.push(:heading, :body, :title, :caption, :subheading)
90
+ end
91
+
92
+ def caption_tag
93
+ :p
94
+ end
95
+
96
+ def body_tag
97
+ :p
98
+ end
99
+
100
+ def heading_tag
101
+ :h5
102
+ end
103
+
104
+ def title_tag
105
+ :h6
106
+ end
107
+
108
+ def subheading_tag
109
+ :h6
110
+ end
111
+
112
+ def default_html_wrapper_element
113
+ body_tag
114
+ end
115
+
116
+ def outlineable?
117
+ false
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Patterns
6
+ # ActivityFeed doc coming soon
7
+ class ActivityFeed < NfgUi::Components::Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Patterns
6
+ # Button Group doesn't have any customizations unique to the design system yet
7
+ # As such, the NFG UI button group is simply a bootstrap button group behind the scenes.
8
+ # Traits will eventually be connected here.
9
+ class ButtonGroup < NfgUi::Bootstrap::Components::ButtonGroup
10
+ include NfgUi::Components::Utilities::Traitable
11
+ include NfgUi::Components::Utilities::Describable
12
+ include NfgUi::Components::Utilities::Renderable
13
+
14
+ include NfgUi::Components::Traits::Size
15
+ include NfgUi::Components::Traits::Vertical
16
+
17
+ # TODO It's not clear to me whether the traits listed above actually do anything
18
+ # I think the note above implies that they don't, but then why include them? If they don't
19
+ # actually do anything yet, they should be removed, or at least commented out
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Patterns
6
+ # Button Toolbar doesn't have any customizations unique to the design system yet
7
+ # As such, the NFG UI button group is simply a bootstrap button group behind the scenes.
8
+ # Traits will eventually be connected here.
9
+ class ButtonToolbar < NfgUi::Bootstrap::Components::ButtonToolbar
10
+ include NfgUi::Components::Utilities::Traitable
11
+ include NfgUi::Components::Utilities::Describable
12
+ include NfgUi::Components::Utilities::Renderable
13
+
14
+ # TODO It's not clear to me whether the traits listed above actually do anything
15
+ # I think the note above implies that they don't, but then why include them? If they don't
16
+ # actually do anything yet, they should be removed, or at least commented out
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Patterns
6
+ # Card doesn't have any customizations unique to the design system yet
7
+ # As such, the NFG UI card is simply a bootstrap card behind the scenes.
8
+ # Traits will eventually be connected here.
9
+ class Card < NfgUi::Bootstrap::Components::Card
10
+ include NfgUi::Components::Utilities::Traitable
11
+ include NfgUi::Components::Utilities::Describable
12
+ include NfgUi::Components::Utilities::Renderable
13
+
14
+ include NfgUi::Components::Traits::Theme
15
+
16
+ # TODO: Confirm that the image overlays are correct. The tops are not being rounded. Should they be?
17
+ def render
18
+ if render_in_body
19
+ super
20
+ else
21
+ content_tag(:div, html_options) do
22
+ body
23
+ end
24
+ end
25
+ end
26
+
27
+ def render_in_body
28
+ options.fetch(:render_in_body, true)
29
+ end
30
+
31
+ private
32
+
33
+ def non_html_attribute_options
34
+ super.push(:render_in_body)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Patterns
6
+ # Carousel doesn't have any customizations unique to the design system yet
7
+ # As such, the NFG UI carousel is simply a bootstrap carousel behind the scenes.
8
+ # Traits will eventually be connected here.
9
+ class Carousel < NfgUi::Bootstrap::Components::Carousel
10
+ include NfgUi::Components::Utilities::Traitable
11
+ include NfgUi::Components::Utilities::Describable
12
+ include NfgUi::Components::Utilities::Renderable
13
+
14
+ def render
15
+ content_tag(:div, html_options) do
16
+ content_tag(:div, class: 'carousel-inner pb-3') do
17
+ concat((block_given? ? yield : body))
18
+ if controls
19
+ concat(NfgUi::Components::Elements::CarouselControl.new({ control: :next, carousel: "##{id}" }, view_context).render)
20
+ concat(NfgUi::Components::Elements::CarouselControl.new({ control: :prev, carousel: "##{id}" }, view_context).render)
21
+ end
22
+ if indicators > 0
23
+ concat(NfgUi::Components::Elements::CarouselIndicators.new({ count: indicators, carousel: "##{id}" }, view_context).render)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end