kcy1 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (467) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +4 -0
  3. data/.gitattributes +2 -0
  4. data/.github/issue_template.md +22 -0
  5. data/.github/pull_request_template.md +6 -0
  6. data/.gitignore +21 -0
  7. data/.rubocop.yml +100 -0
  8. data/.travis.yml +43 -0
  9. data/CONTRIBUTING.md +35 -0
  10. data/Gemfile +29 -0
  11. data/LICENSE +20 -0
  12. data/README.md +116 -0
  13. data/Rakefile +5 -0
  14. data/app/assets/fonts/comfy/admin/cms/lib/redactor-font.eot +0 -0
  15. data/app/assets/javascripts/comfy/admin/cms/application.js +39 -0
  16. data/app/assets/javascripts/comfy/admin/cms/base.js +46 -0
  17. data/app/assets/javascripts/comfy/admin/cms/categories.js +17 -0
  18. data/app/assets/javascripts/comfy/admin/cms/codemirror.js +31 -0
  19. data/app/assets/javascripts/comfy/admin/cms/custom.js +1 -0
  20. data/app/assets/javascripts/comfy/admin/cms/diff.js +10 -0
  21. data/app/assets/javascripts/comfy/admin/cms/file_link.js +67 -0
  22. data/app/assets/javascripts/comfy/admin/cms/file_upload.js +194 -0
  23. data/app/assets/javascripts/comfy/admin/cms/files_modal.js +40 -0
  24. data/app/assets/javascripts/comfy/admin/cms/page_fragments.js +22 -0
  25. data/app/assets/javascripts/comfy/admin/cms/slugify.js +34 -0
  26. data/app/assets/javascripts/comfy/admin/cms/sortable_list.js +40 -0
  27. data/app/assets/javascripts/comfy/admin/cms/timepicker.js +30 -0
  28. data/app/assets/javascripts/comfy/admin/cms/wysiwyg.js +65 -0
  29. data/app/assets/javascripts/comfy/vendor/Moxie.swf +0 -0
  30. data/app/assets/javascripts/comfy/vendor/Moxie.xap +0 -0
  31. data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js +7 -0
  32. data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js.map +1 -0
  33. data/app/assets/javascripts/comfy/vendor/codemirror.js +9653 -0
  34. data/app/assets/javascripts/comfy/vendor/codemirror/addon/edit/closetag.js +169 -0
  35. data/app/assets/javascripts/comfy/vendor/codemirror/mode/css/css.js +832 -0
  36. data/app/assets/javascripts/comfy/vendor/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
  37. data/app/assets/javascripts/comfy/vendor/codemirror/mode/javascript/javascript.js +875 -0
  38. data/app/assets/javascripts/comfy/vendor/codemirror/mode/markdown/markdown.js +861 -0
  39. data/app/assets/javascripts/comfy/vendor/codemirror/mode/xml/xml.js +394 -0
  40. data/app/assets/javascripts/comfy/vendor/diff/diff_match_patch.min.js +49 -0
  41. data/app/assets/javascripts/comfy/vendor/diff/pretty_text_diff.js +76 -0
  42. data/app/assets/javascripts/comfy/vendor/flatpickr.min.js +2 -0
  43. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ar.js +52 -0
  44. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bg.js +65 -0
  45. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bn.js +65 -0
  46. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ca.js +83 -0
  47. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cs.js +70 -0
  48. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cy.js +92 -0
  49. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/da.js +71 -0
  50. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/de.js +70 -0
  51. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/default.js +80 -0
  52. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/eo.js +73 -0
  53. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/es.js +69 -0
  54. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/et.js +73 -0
  55. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fa.js +68 -0
  56. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fi.js +69 -0
  57. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fr.js +75 -0
  58. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/gr.js +74 -0
  59. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/he.js +57 -0
  60. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hi.js +65 -0
  61. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hr.js +66 -0
  62. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hu.js +72 -0
  63. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/id.js +61 -0
  64. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/it.js +70 -0
  65. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ja.js +57 -0
  66. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ko.js +60 -0
  67. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lt.js +72 -0
  68. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lv.js +67 -0
  69. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mk.js +69 -0
  70. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mn.js +67 -0
  71. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ms.js +68 -0
  72. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/my.js +69 -0
  73. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/nl.js +75 -0
  74. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/no.js +73 -0
  75. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pa.js +65 -0
  76. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pl.js +68 -0
  77. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt-BR.js +66 -0
  78. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt.js +66 -0
  79. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ro.js +69 -0
  80. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ru.js +66 -0
  81. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/si.js +65 -0
  82. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sk.js +70 -0
  83. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sl.js +70 -0
  84. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sq.js +65 -0
  85. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sr.js +69 -0
  86. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sv.js +70 -0
  87. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/th.js +72 -0
  88. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/tr.js +66 -0
  89. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/uk.js +66 -0
  90. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/vn.js +66 -0
  91. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-CN.js +61 -0
  92. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-TW.js +61 -0
  93. data/app/assets/javascripts/comfy/vendor/fontawesome.js +5 -0
  94. data/app/assets/javascripts/comfy/vendor/moxie.min.js +16 -0
  95. data/app/assets/javascripts/comfy/vendor/plupload.dev.js +2497 -0
  96. data/app/assets/javascripts/comfy/vendor/redactor.js +9561 -0
  97. data/app/assets/javascripts/comfy/vendor/redactor/definedlinks.js +53 -0
  98. data/app/assets/javascripts/comfy/vendor/redactor/filemanager.js +64 -0
  99. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ar.js +76 -0
  100. data/app/assets/javascripts/comfy/vendor/redactor/i18n/az.js +75 -0
  101. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ba.js +79 -0
  102. data/app/assets/javascripts/comfy/vendor/redactor/i18n/bg.js +77 -0
  103. data/app/assets/javascripts/comfy/vendor/redactor/i18n/by.js +77 -0
  104. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ca.js +75 -0
  105. data/app/assets/javascripts/comfy/vendor/redactor/i18n/cs.js +87 -0
  106. data/app/assets/javascripts/comfy/vendor/redactor/i18n/da.js +75 -0
  107. data/app/assets/javascripts/comfy/vendor/redactor/i18n/de.js +80 -0
  108. data/app/assets/javascripts/comfy/vendor/redactor/i18n/el.js +76 -0
  109. data/app/assets/javascripts/comfy/vendor/redactor/i18n/en.js +75 -0
  110. data/app/assets/javascripts/comfy/vendor/redactor/i18n/eo.js +76 -0
  111. data/app/assets/javascripts/comfy/vendor/redactor/i18n/es.js +75 -0
  112. data/app/assets/javascripts/comfy/vendor/redactor/i18n/es_AR.js +76 -0
  113. data/app/assets/javascripts/comfy/vendor/redactor/i18n/fa.js +76 -0
  114. data/app/assets/javascripts/comfy/vendor/redactor/i18n/fi.js +75 -0
  115. data/app/assets/javascripts/comfy/vendor/redactor/i18n/fr.js +75 -0
  116. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ge.js +75 -0
  117. data/app/assets/javascripts/comfy/vendor/redactor/i18n/gr.js +75 -0
  118. data/app/assets/javascripts/comfy/vendor/redactor/i18n/he.js +75 -0
  119. data/app/assets/javascripts/comfy/vendor/redactor/i18n/hr.js +76 -0
  120. data/app/assets/javascripts/comfy/vendor/redactor/i18n/hu.js +77 -0
  121. data/app/assets/javascripts/comfy/vendor/redactor/i18n/id.js +76 -0
  122. data/app/assets/javascripts/comfy/vendor/redactor/i18n/it.js +78 -0
  123. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ja.js +76 -0
  124. data/app/assets/javascripts/comfy/vendor/redactor/i18n/kn.js +75 -0
  125. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ko.js +76 -0
  126. data/app/assets/javascripts/comfy/vendor/redactor/i18n/lt.js +75 -0
  127. data/app/assets/javascripts/comfy/vendor/redactor/i18n/lv.js +75 -0
  128. data/app/assets/javascripts/comfy/vendor/redactor/i18n/mk.js +75 -0
  129. data/app/assets/javascripts/comfy/vendor/redactor/i18n/nb.js +75 -0
  130. data/app/assets/javascripts/comfy/vendor/redactor/i18n/nl.js +80 -0
  131. data/app/assets/javascripts/comfy/vendor/redactor/i18n/pl.js +76 -0
  132. data/app/assets/javascripts/comfy/vendor/redactor/i18n/pt-BR.js +75 -0
  133. data/app/assets/javascripts/comfy/vendor/redactor/i18n/pt.js +75 -0
  134. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ro.js +76 -0
  135. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ru.js +76 -0
  136. data/app/assets/javascripts/comfy/vendor/redactor/i18n/sk.js +76 -0
  137. data/app/assets/javascripts/comfy/vendor/redactor/i18n/sl.js +79 -0
  138. data/app/assets/javascripts/comfy/vendor/redactor/i18n/sq.js +79 -0
  139. data/app/assets/javascripts/comfy/vendor/redactor/i18n/sr-CIR.js +79 -0
  140. data/app/assets/javascripts/comfy/vendor/redactor/i18n/sr-LAT.js +79 -0
  141. data/app/assets/javascripts/comfy/vendor/redactor/i18n/sv.js +74 -0
  142. data/app/assets/javascripts/comfy/vendor/redactor/i18n/th.js +74 -0
  143. data/app/assets/javascripts/comfy/vendor/redactor/i18n/tr.js +75 -0
  144. data/app/assets/javascripts/comfy/vendor/redactor/i18n/ua.js +77 -0
  145. data/app/assets/javascripts/comfy/vendor/redactor/i18n/uk.js +77 -0
  146. data/app/assets/javascripts/comfy/vendor/redactor/i18n/vi.js +74 -0
  147. data/app/assets/javascripts/comfy/vendor/redactor/i18n/zh-CN.js +75 -0
  148. data/app/assets/javascripts/comfy/vendor/redactor/i18n/zh-TW.js +75 -0
  149. data/app/assets/javascripts/comfy/vendor/redactor/imagemanager.js +57 -0
  150. data/app/assets/javascripts/comfy/vendor/redactor/table.js +337 -0
  151. data/app/assets/javascripts/comfy/vendor/redactor/video.js +77 -0
  152. data/app/assets/javascripts/comfy/vendor/sortable.min.js +5 -0
  153. data/app/assets/stylesheets/comfy/admin/cms/application.sass +11 -0
  154. data/app/assets/stylesheets/comfy/admin/cms/base.sass +256 -0
  155. data/app/assets/stylesheets/comfy/admin/cms/codemirror_overrides.sass +19 -0
  156. data/app/assets/stylesheets/comfy/admin/cms/custom.sass +1 -0
  157. data/app/assets/stylesheets/comfy/admin/cms/redactor_overrides.sass +22 -0
  158. data/app/assets/stylesheets/comfy/vendor/bootstrap/_alert.scss +51 -0
  159. data/app/assets/stylesheets/comfy/vendor/bootstrap/_badge.scss +54 -0
  160. data/app/assets/stylesheets/comfy/vendor/bootstrap/_breadcrumb.scss +41 -0
  161. data/app/assets/stylesheets/comfy/vendor/bootstrap/_button-group.scss +163 -0
  162. data/app/assets/stylesheets/comfy/vendor/bootstrap/_buttons.scss +137 -0
  163. data/app/assets/stylesheets/comfy/vendor/bootstrap/_card.scss +289 -0
  164. data/app/assets/stylesheets/comfy/vendor/bootstrap/_carousel.scss +197 -0
  165. data/app/assets/stylesheets/comfy/vendor/bootstrap/_close.scss +41 -0
  166. data/app/assets/stylesheets/comfy/vendor/bootstrap/_code.scss +48 -0
  167. data/app/assets/stylesheets/comfy/vendor/bootstrap/_custom-forms.scss +507 -0
  168. data/app/assets/stylesheets/comfy/vendor/bootstrap/_dropdown.scss +191 -0
  169. data/app/assets/stylesheets/comfy/vendor/bootstrap/_forms.scss +330 -0
  170. data/app/assets/stylesheets/comfy/vendor/bootstrap/_functions.scss +86 -0
  171. data/app/assets/stylesheets/comfy/vendor/bootstrap/_grid.scss +52 -0
  172. data/app/assets/stylesheets/comfy/vendor/bootstrap/_images.scss +42 -0
  173. data/app/assets/stylesheets/comfy/vendor/bootstrap/_input-group.scss +193 -0
  174. data/app/assets/stylesheets/comfy/vendor/bootstrap/_jumbotron.scss +17 -0
  175. data/app/assets/stylesheets/comfy/vendor/bootstrap/_list-group.scss +149 -0
  176. data/app/assets/stylesheets/comfy/vendor/bootstrap/_media.scss +8 -0
  177. data/app/assets/stylesheets/comfy/vendor/bootstrap/_mixins.scss +47 -0
  178. data/app/assets/stylesheets/comfy/vendor/bootstrap/_modal.scss +229 -0
  179. data/app/assets/stylesheets/comfy/vendor/bootstrap/_nav.scss +120 -0
  180. data/app/assets/stylesheets/comfy/vendor/bootstrap/_navbar.scss +294 -0
  181. data/app/assets/stylesheets/comfy/vendor/bootstrap/_pagination.scss +73 -0
  182. data/app/assets/stylesheets/comfy/vendor/bootstrap/_popover.scss +171 -0
  183. data/app/assets/stylesheets/comfy/vendor/bootstrap/_print.scss +141 -0
  184. data/app/assets/stylesheets/comfy/vendor/bootstrap/_progress.scss +43 -0
  185. data/app/assets/stylesheets/comfy/vendor/bootstrap/_reboot.scss +483 -0
  186. data/app/assets/stylesheets/comfy/vendor/bootstrap/_root.scss +19 -0
  187. data/app/assets/stylesheets/comfy/vendor/bootstrap/_spinners.scss +55 -0
  188. data/app/assets/stylesheets/comfy/vendor/bootstrap/_tables.scss +185 -0
  189. data/app/assets/stylesheets/comfy/vendor/bootstrap/_toasts.scss +44 -0
  190. data/app/assets/stylesheets/comfy/vendor/bootstrap/_tooltip.scss +115 -0
  191. data/app/assets/stylesheets/comfy/vendor/bootstrap/_transitions.scss +20 -0
  192. data/app/assets/stylesheets/comfy/vendor/bootstrap/_type.scss +125 -0
  193. data/app/assets/stylesheets/comfy/vendor/bootstrap/_utilities.scss +17 -0
  194. data/app/assets/stylesheets/comfy/vendor/bootstrap/_variables.scss +1123 -0
  195. data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap-grid.scss +29 -0
  196. data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap-reboot.scss +12 -0
  197. data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap.scss +44 -0
  198. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_alert.scss +13 -0
  199. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_background-variant.scss +21 -0
  200. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_badge.scss +17 -0
  201. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_border-radius.scss +63 -0
  202. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_box-shadow.scss +20 -0
  203. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_breakpoints.scss +123 -0
  204. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_buttons.scss +107 -0
  205. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_caret.scss +62 -0
  206. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_clearfix.scss +7 -0
  207. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_deprecate.scss +10 -0
  208. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_float.scss +14 -0
  209. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_forms.scss +192 -0
  210. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_gradients.scss +45 -0
  211. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_grid-framework.scss +66 -0
  212. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_grid.scss +51 -0
  213. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_hover.scss +37 -0
  214. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_image.scss +36 -0
  215. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_list-group.scss +21 -0
  216. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_lists.scss +7 -0
  217. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_nav-divider.scss +10 -0
  218. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_pagination.scss +22 -0
  219. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_reset-text.scss +17 -0
  220. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_resize.scss +6 -0
  221. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_screen-reader.scss +33 -0
  222. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_size.scss +7 -0
  223. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_table-row.scss +39 -0
  224. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_text-emphasis.scss +16 -0
  225. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_text-hide.scss +11 -0
  226. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_text-truncate.scss +8 -0
  227. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_transition.scss +16 -0
  228. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_visibility.scss +8 -0
  229. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_align.scss +8 -0
  230. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_background.scss +19 -0
  231. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_borders.scss +75 -0
  232. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_clearfix.scss +3 -0
  233. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_display.scss +26 -0
  234. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_embed.scss +39 -0
  235. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_flex.scss +51 -0
  236. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_float.scss +11 -0
  237. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_overflow.scss +5 -0
  238. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_position.scss +32 -0
  239. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_screenreaders.scss +11 -0
  240. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_shadows.scss +6 -0
  241. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_sizing.scss +20 -0
  242. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_spacing.scss +73 -0
  243. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_stretched-link.scss +19 -0
  244. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_text.scss +72 -0
  245. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_visibility.scss +13 -0
  246. data/app/assets/stylesheets/comfy/vendor/bootstrap/vendor/_rfs.scss +204 -0
  247. data/app/assets/stylesheets/comfy/vendor/codemirror.css +346 -0
  248. data/app/assets/stylesheets/comfy/vendor/flatpickr.min.css +13 -0
  249. data/app/assets/stylesheets/comfy/vendor/fontawesome.css +343 -0
  250. data/app/assets/stylesheets/comfy/vendor/redactor.css +948 -0
  251. data/app/controllers/application_controller.rb +7 -0
  252. data/app/controllers/comfy/admin/base_controller.rb +22 -0
  253. data/app/controllers/comfy/admin/cms/base_controller.rb +55 -0
  254. data/app/controllers/comfy/admin/cms/categories_controller.rb +40 -0
  255. data/app/controllers/comfy/admin/cms/files_controller.rb +142 -0
  256. data/app/controllers/comfy/admin/cms/layouts_controller.rb +69 -0
  257. data/app/controllers/comfy/admin/cms/pages_controller.rb +156 -0
  258. data/app/controllers/comfy/admin/cms/revisions/base_controller.rb +50 -0
  259. data/app/controllers/comfy/admin/cms/revisions/layout_controller.rb +18 -0
  260. data/app/controllers/comfy/admin/cms/revisions/page_controller.rb +30 -0
  261. data/app/controllers/comfy/admin/cms/revisions/snippet_controller.rb +18 -0
  262. data/app/controllers/comfy/admin/cms/revisions/translation_controller.rb +31 -0
  263. data/app/controllers/comfy/admin/cms/sites_controller.rb +69 -0
  264. data/app/controllers/comfy/admin/cms/snippets_controller.rb +66 -0
  265. data/app/controllers/comfy/admin/cms/translations_controller.rb +107 -0
  266. data/app/controllers/comfy/cms/assets_controller.rb +40 -0
  267. data/app/controllers/comfy/cms/base_controller.rb +33 -0
  268. data/app/controllers/comfy/cms/content_controller.rb +87 -0
  269. data/app/controllers/concerns/comfy/paginate.rb +16 -0
  270. data/app/controllers/concerns/comfy/reorder_action.rb +19 -0
  271. data/app/helpers/comfy/admin/cms_helper.rb +49 -0
  272. data/app/helpers/comfy/cms_helper.rb +73 -0
  273. data/app/models/comfy/cms/categorization.rb +16 -0
  274. data/app/models/comfy/cms/category.rb +24 -0
  275. data/app/models/comfy/cms/file.rb +57 -0
  276. data/app/models/comfy/cms/fragment.rb +59 -0
  277. data/app/models/comfy/cms/layout.rb +113 -0
  278. data/app/models/comfy/cms/page.rb +169 -0
  279. data/app/models/comfy/cms/revision.rb +12 -0
  280. data/app/models/comfy/cms/site.rb +94 -0
  281. data/app/models/comfy/cms/snippet.rb +45 -0
  282. data/app/models/comfy/cms/translation.rb +43 -0
  283. data/app/models/concerns/comfy/cms/with_categories.rb +53 -0
  284. data/app/models/concerns/comfy/cms/with_fragments.rb +125 -0
  285. data/app/views/comfy/admin/cms/categories/_categories.html.haml +4 -0
  286. data/app/views/comfy/admin/cms/categories/_edit.html.haml +7 -0
  287. data/app/views/comfy/admin/cms/categories/_form.html.haml +5 -0
  288. data/app/views/comfy/admin/cms/categories/_index.html.haml +28 -0
  289. data/app/views/comfy/admin/cms/categories/_show.html.haml +15 -0
  290. data/app/views/comfy/admin/cms/categories/create.js.erb +7 -0
  291. data/app/views/comfy/admin/cms/categories/destroy.js.erb +8 -0
  292. data/app/views/comfy/admin/cms/categories/edit.js.erb +3 -0
  293. data/app/views/comfy/admin/cms/categories/update.js.erb +6 -0
  294. data/app/views/comfy/admin/cms/files/_file.html.haml +31 -0
  295. data/app/views/comfy/admin/cms/files/_form.html.haml +26 -0
  296. data/app/views/comfy/admin/cms/files/_modal.html.haml +3 -0
  297. data/app/views/comfy/admin/cms/files/destroy.js.erb +4 -0
  298. data/app/views/comfy/admin/cms/files/edit.html.haml +5 -0
  299. data/app/views/comfy/admin/cms/files/index.html.haml +29 -0
  300. data/app/views/comfy/admin/cms/files/new.html.haml +5 -0
  301. data/app/views/comfy/admin/cms/fragments/_form_fragment_attachments.html.haml +23 -0
  302. data/app/views/comfy/admin/cms/fragments/_form_fragments.html.haml +38 -0
  303. data/app/views/comfy/admin/cms/layouts/_form.html.haml +20 -0
  304. data/app/views/comfy/admin/cms/layouts/_index_branch.html.haml +26 -0
  305. data/app/views/comfy/admin/cms/layouts/edit.html.haml +9 -0
  306. data/app/views/comfy/admin/cms/layouts/index.html.haml +10 -0
  307. data/app/views/comfy/admin/cms/layouts/new.html.haml +5 -0
  308. data/app/views/comfy/admin/cms/pages/_form.html.haml +31 -0
  309. data/app/views/comfy/admin/cms/pages/_index_branch.html.haml +44 -0
  310. data/app/views/comfy/admin/cms/pages/edit.html.haml +10 -0
  311. data/app/views/comfy/admin/cms/pages/index.html.haml +13 -0
  312. data/app/views/comfy/admin/cms/pages/new.html.haml +5 -0
  313. data/app/views/comfy/admin/cms/pages/toggle_branch.js.erb +13 -0
  314. data/app/views/comfy/admin/cms/revisions/_sidebar.html.haml +2 -0
  315. data/app/views/comfy/admin/cms/revisions/show.html.haml +36 -0
  316. data/app/views/comfy/admin/cms/sites/_form.html.haml +15 -0
  317. data/app/views/comfy/admin/cms/sites/edit.html.haml +5 -0
  318. data/app/views/comfy/admin/cms/sites/index.html.haml +28 -0
  319. data/app/views/comfy/admin/cms/sites/new.html.haml +5 -0
  320. data/app/views/comfy/admin/cms/snippets/_form.html.haml +13 -0
  321. data/app/views/comfy/admin/cms/snippets/edit.html.haml +9 -0
  322. data/app/views/comfy/admin/cms/snippets/index.html.haml +33 -0
  323. data/app/views/comfy/admin/cms/snippets/new.html.haml +5 -0
  324. data/app/views/comfy/admin/cms/translations/_form.html.haml +20 -0
  325. data/app/views/comfy/admin/cms/translations/_sidebar.html.haml +19 -0
  326. data/app/views/comfy/admin/cms/translations/edit.html.haml +10 -0
  327. data/app/views/comfy/admin/cms/translations/new.html.haml +5 -0
  328. data/app/views/kaminari/comfy/_first_page.html.haml +3 -0
  329. data/app/views/kaminari/comfy/_gap.html.haml +2 -0
  330. data/app/views/kaminari/comfy/_last_page.html.haml +3 -0
  331. data/app/views/kaminari/comfy/_next_page.html.haml +2 -0
  332. data/app/views/kaminari/comfy/_page.html.haml +2 -0
  333. data/app/views/kaminari/comfy/_paginator.html.haml +11 -0
  334. data/app/views/kaminari/comfy/_prev_page.html.haml +2 -0
  335. data/app/views/layouts/comfy/admin/cms.html.haml +4 -0
  336. data/app/views/layouts/comfy/admin/cms/_body.html.haml +14 -0
  337. data/app/views/layouts/comfy/admin/cms/_flash.html.haml +4 -0
  338. data/app/views/layouts/comfy/admin/cms/_footer_js.html.haml +6 -0
  339. data/app/views/layouts/comfy/admin/cms/_head.html.haml +19 -0
  340. data/app/views/layouts/comfy/admin/cms/_left.html.haml +39 -0
  341. data/app/views/layouts/comfy/admin/cms/_right.html.haml +5 -0
  342. data/bin/bundle +3 -0
  343. data/bin/rails +4 -0
  344. data/bin/rake +4 -0
  345. data/bin/setup +36 -0
  346. data/bin/update +31 -0
  347. data/bin/yarn +11 -0
  348. data/comfortable_mexican_sofa.gemspec +33 -0
  349. data/config.ru +6 -0
  350. data/config/application.rb +39 -0
  351. data/config/boot.rb +7 -0
  352. data/config/cms_routes.rb +8 -0
  353. data/config/database.yml +11 -0
  354. data/config/environment.rb +7 -0
  355. data/config/environments/development.rb +64 -0
  356. data/config/environments/test.rb +55 -0
  357. data/config/initializers/comfortable_mexican_sofa.rb +122 -0
  358. data/config/locales/ca.yml +263 -0
  359. data/config/locales/cs.yml +263 -0
  360. data/config/locales/da.yml +263 -0
  361. data/config/locales/de.yml +263 -0
  362. data/config/locales/en.yml +263 -0
  363. data/config/locales/es.yml +263 -0
  364. data/config/locales/fi.yml +263 -0
  365. data/config/locales/fr.yml +263 -0
  366. data/config/locales/gr.yml +263 -0
  367. data/config/locales/hr.yml +263 -0
  368. data/config/locales/it.yml +263 -0
  369. data/config/locales/ja.yml +263 -0
  370. data/config/locales/nb.yml +263 -0
  371. data/config/locales/nl.yml +263 -0
  372. data/config/locales/pl.yml +263 -0
  373. data/config/locales/pt-BR.yml +263 -0
  374. data/config/locales/ru.yml +263 -0
  375. data/config/locales/sk.yml +263 -0
  376. data/config/locales/sv.yml +263 -0
  377. data/config/locales/tr.yml +263 -0
  378. data/config/locales/uk.yml +263 -0
  379. data/config/locales/zh-CN.yml +263 -0
  380. data/config/locales/zh-TW.yml +263 -0
  381. data/config/storage.yml +35 -0
  382. data/db/cms_seeds/sample-site/files/_default.jpg.yml +5 -0
  383. data/db/cms_seeds/sample-site/files/default.jpg +0 -0
  384. data/db/cms_seeds/sample-site/layouts/default/content.html +16 -0
  385. data/db/cms_seeds/sample-site/layouts/default/nested/content.html +14 -0
  386. data/db/cms_seeds/sample-site/pages/index/child_a/content.html +7 -0
  387. data/db/cms_seeds/sample-site/pages/index/child_b/content.html +6 -0
  388. data/db/cms_seeds/sample-site/pages/index/cms logo.png +0 -0
  389. data/db/cms_seeds/sample-site/pages/index/content.es.html +6 -0
  390. data/db/cms_seeds/sample-site/pages/index/content.fr.html +6 -0
  391. data/db/cms_seeds/sample-site/pages/index/content.html +25 -0
  392. data/db/cms_seeds/sample-site/pages/index/footer.png +0 -0
  393. data/db/cms_seeds/sample-site/pages/index/header.png +0 -0
  394. data/db/cms_seeds/sample-site/snippets/default.html +8 -0
  395. data/db/migrate/00_create_active_storage_tables.active_storage.rb +26 -0
  396. data/db/migrate/01_create_cms.rb +142 -0
  397. data/lib/comfortable_mexican_sofa.rb +60 -0
  398. data/lib/comfortable_mexican_sofa/access_control/admin_authentication.rb +24 -0
  399. data/lib/comfortable_mexican_sofa/access_control/admin_authorization.rb +12 -0
  400. data/lib/comfortable_mexican_sofa/access_control/public_authentication.rb +12 -0
  401. data/lib/comfortable_mexican_sofa/access_control/public_authorization.rb +12 -0
  402. data/lib/comfortable_mexican_sofa/configuration.rb +139 -0
  403. data/lib/comfortable_mexican_sofa/content.rb +31 -0
  404. data/lib/comfortable_mexican_sofa/content/block.rb +14 -0
  405. data/lib/comfortable_mexican_sofa/content/params_parser.rb +149 -0
  406. data/lib/comfortable_mexican_sofa/content/renderer.rb +149 -0
  407. data/lib/comfortable_mexican_sofa/content/tag.rb +50 -0
  408. data/lib/comfortable_mexican_sofa/content/tags/asset.rb +59 -0
  409. data/lib/comfortable_mexican_sofa/content/tags/checkbox.rb +29 -0
  410. data/lib/comfortable_mexican_sofa/content/tags/date.rb +21 -0
  411. data/lib/comfortable_mexican_sofa/content/tags/datetime.rb +44 -0
  412. data/lib/comfortable_mexican_sofa/content/tags/file.rb +72 -0
  413. data/lib/comfortable_mexican_sofa/content/tags/file_link.rb +63 -0
  414. data/lib/comfortable_mexican_sofa/content/tags/files.rb +43 -0
  415. data/lib/comfortable_mexican_sofa/content/tags/fragment.rb +66 -0
  416. data/lib/comfortable_mexican_sofa/content/tags/helper.rb +55 -0
  417. data/lib/comfortable_mexican_sofa/content/tags/markdown.rb +24 -0
  418. data/lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb +43 -0
  419. data/lib/comfortable_mexican_sofa/content/tags/number.rb +20 -0
  420. data/lib/comfortable_mexican_sofa/content/tags/page_file_link.rb +84 -0
  421. data/lib/comfortable_mexican_sofa/content/tags/partial.rb +49 -0
  422. data/lib/comfortable_mexican_sofa/content/tags/snippet.rb +34 -0
  423. data/lib/comfortable_mexican_sofa/content/tags/template.rb +44 -0
  424. data/lib/comfortable_mexican_sofa/content/tags/text.rb +20 -0
  425. data/lib/comfortable_mexican_sofa/content/tags/textarea.rb +20 -0
  426. data/lib/comfortable_mexican_sofa/content/tags/wysiwyg.rb +21 -0
  427. data/lib/comfortable_mexican_sofa/engine.rb +31 -0
  428. data/lib/comfortable_mexican_sofa/error.rb +32 -0
  429. data/lib/comfortable_mexican_sofa/extensions/acts_as_tree.rb +120 -0
  430. data/lib/comfortable_mexican_sofa/extensions/has_revisions.rb +72 -0
  431. data/lib/comfortable_mexican_sofa/form_builder.rb +47 -0
  432. data/lib/comfortable_mexican_sofa/render_methods.rb +112 -0
  433. data/lib/comfortable_mexican_sofa/routes/cms.rb +18 -0
  434. data/lib/comfortable_mexican_sofa/routes/cms_admin.rb +58 -0
  435. data/lib/comfortable_mexican_sofa/routing.rb +12 -0
  436. data/lib/comfortable_mexican_sofa/seeds.rb +114 -0
  437. data/lib/comfortable_mexican_sofa/seeds/file/exporter.rb +43 -0
  438. data/lib/comfortable_mexican_sofa/seeds/file/importer.rb +63 -0
  439. data/lib/comfortable_mexican_sofa/seeds/layout/exporter.rb +40 -0
  440. data/lib/comfortable_mexican_sofa/seeds/layout/importer.rb +62 -0
  441. data/lib/comfortable_mexican_sofa/seeds/page/exporter.rb +92 -0
  442. data/lib/comfortable_mexican_sofa/seeds/page/importer.rb +219 -0
  443. data/lib/comfortable_mexican_sofa/seeds/snippet/exporter.rb +34 -0
  444. data/lib/comfortable_mexican_sofa/seeds/snippet/importer.rb +51 -0
  445. data/lib/comfortable_mexican_sofa/version.rb +7 -0
  446. data/lib/comfortable_mexican_sofa/view_hooks.rb +35 -0
  447. data/lib/generators/comfy/cms/README +17 -0
  448. data/lib/generators/comfy/cms/assets_generator.rb +18 -0
  449. data/lib/generators/comfy/cms/cms_generator.rb +69 -0
  450. data/lib/generators/comfy/cms/controllers_generator.rb +17 -0
  451. data/lib/generators/comfy/cms/models_generator.rb +17 -0
  452. data/lib/generators/comfy/cms/views_generator.rb +17 -0
  453. data/lib/generators/comfy/scaffold/scaffold_generator.rb +80 -0
  454. data/lib/generators/comfy/scaffold/templates/controller.rb.tt +62 -0
  455. data/lib/generators/comfy/scaffold/templates/migration.rb.tt +11 -0
  456. data/lib/generators/comfy/scaffold/templates/model.rb.tt +21 -0
  457. data/lib/generators/comfy/scaffold/templates/tests/controller.rb.tt +115 -0
  458. data/lib/generators/comfy/scaffold/templates/tests/fixture.yml.tt +4 -0
  459. data/lib/generators/comfy/scaffold/templates/tests/model.rb.tt +26 -0
  460. data/lib/generators/comfy/scaffold/templates/views/_form.haml.tt +7 -0
  461. data/lib/generators/comfy/scaffold/templates/views/edit.haml.tt +5 -0
  462. data/lib/generators/comfy/scaffold/templates/views/index.haml.tt +21 -0
  463. data/lib/generators/comfy/scaffold/templates/views/new.haml.tt +5 -0
  464. data/lib/generators/comfy/scaffold/templates/views/show.haml.tt +4 -0
  465. data/lib/tasks/cms_seeds.rake +40 -0
  466. data/public/favicon.ico +0 -0
  467. metadata +648 -0
@@ -0,0 +1,17 @@
1
+ @import "utilities/align";
2
+ @import "utilities/background";
3
+ @import "utilities/borders";
4
+ @import "utilities/clearfix";
5
+ @import "utilities/display";
6
+ @import "utilities/embed";
7
+ @import "utilities/flex";
8
+ @import "utilities/float";
9
+ @import "utilities/overflow";
10
+ @import "utilities/position";
11
+ @import "utilities/screenreaders";
12
+ @import "utilities/shadows";
13
+ @import "utilities/sizing";
14
+ @import "utilities/stretched-link";
15
+ @import "utilities/spacing";
16
+ @import "utilities/text";
17
+ @import "utilities/visibility";
@@ -0,0 +1,1123 @@
1
+ // Variables
2
+ //
3
+ // Variables should follow the `$component-state-property-size` formula for
4
+ // consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
5
+
6
+ // Color system
7
+
8
+ $white: #fff !default;
9
+ $gray-100: #f8f9fa !default;
10
+ $gray-200: #e9ecef !default;
11
+ $gray-300: #dee2e6 !default;
12
+ $gray-400: #ced4da !default;
13
+ $gray-500: #adb5bd !default;
14
+ $gray-600: #6c757d !default;
15
+ $gray-700: #495057 !default;
16
+ $gray-800: #343a40 !default;
17
+ $gray-900: #212529 !default;
18
+ $black: #000 !default;
19
+
20
+ $grays: () !default;
21
+ // stylelint-disable-next-line scss/dollar-variable-default
22
+ $grays: map-merge(
23
+ (
24
+ "100": $gray-100,
25
+ "200": $gray-200,
26
+ "300": $gray-300,
27
+ "400": $gray-400,
28
+ "500": $gray-500,
29
+ "600": $gray-600,
30
+ "700": $gray-700,
31
+ "800": $gray-800,
32
+ "900": $gray-900
33
+ ),
34
+ $grays
35
+ );
36
+
37
+ $blue: #007bff !default;
38
+ $indigo: #6610f2 !default;
39
+ $purple: #6f42c1 !default;
40
+ $pink: #e83e8c !default;
41
+ $red: #dc3545 !default;
42
+ $orange: #fd7e14 !default;
43
+ $yellow: #ffc107 !default;
44
+ $green: #28a745 !default;
45
+ $teal: #20c997 !default;
46
+ $cyan: #17a2b8 !default;
47
+
48
+ $colors: () !default;
49
+ // stylelint-disable-next-line scss/dollar-variable-default
50
+ $colors: map-merge(
51
+ (
52
+ "blue": $blue,
53
+ "indigo": $indigo,
54
+ "purple": $purple,
55
+ "pink": $pink,
56
+ "red": $red,
57
+ "orange": $orange,
58
+ "yellow": $yellow,
59
+ "green": $green,
60
+ "teal": $teal,
61
+ "cyan": $cyan,
62
+ "white": $white,
63
+ "gray": $gray-600,
64
+ "gray-dark": $gray-800
65
+ ),
66
+ $colors
67
+ );
68
+
69
+ $primary: $blue !default;
70
+ $secondary: $gray-600 !default;
71
+ $success: $green !default;
72
+ $info: $cyan !default;
73
+ $warning: $yellow !default;
74
+ $danger: $red !default;
75
+ $light: $gray-100 !default;
76
+ $dark: $gray-800 !default;
77
+
78
+ $theme-colors: () !default;
79
+ // stylelint-disable-next-line scss/dollar-variable-default
80
+ $theme-colors: map-merge(
81
+ (
82
+ "primary": $primary,
83
+ "secondary": $secondary,
84
+ "success": $success,
85
+ "info": $info,
86
+ "warning": $warning,
87
+ "danger": $danger,
88
+ "light": $light,
89
+ "dark": $dark
90
+ ),
91
+ $theme-colors
92
+ );
93
+
94
+ // Set a specific jump point for requesting color jumps
95
+ $theme-color-interval: 8% !default;
96
+
97
+ // The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
98
+ $yiq-contrasted-threshold: 150 !default;
99
+
100
+ // Customize the light and dark text colors for use in our YIQ color contrast function.
101
+ $yiq-text-dark: $gray-900 !default;
102
+ $yiq-text-light: $white !default;
103
+
104
+
105
+ // Options
106
+ //
107
+ // Quickly modify global styling by enabling or disabling optional features.
108
+
109
+ $enable-caret: true !default;
110
+ $enable-rounded: true !default;
111
+ $enable-shadows: false !default;
112
+ $enable-gradients: false !default;
113
+ $enable-transitions: true !default;
114
+ $enable-prefers-reduced-motion-media-query: true !default;
115
+ $enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS
116
+ $enable-grid-classes: true !default;
117
+ $enable-pointer-cursor-for-buttons: true !default;
118
+ $enable-print-styles: true !default;
119
+ $enable-responsive-font-sizes: false !default;
120
+ $enable-validation-icons: true !default;
121
+ $enable-deprecation-messages: true !default;
122
+
123
+
124
+ // Spacing
125
+ //
126
+ // Control the default styling of most Bootstrap elements by modifying these
127
+ // variables. Mostly focused on spacing.
128
+ // You can add more entries to the $spacers map, should you need more variation.
129
+
130
+ $spacer: 1rem !default;
131
+ $spacers: () !default;
132
+ // stylelint-disable-next-line scss/dollar-variable-default
133
+ $spacers: map-merge(
134
+ (
135
+ 0: 0,
136
+ 1: ($spacer * .25),
137
+ 2: ($spacer * .5),
138
+ 3: $spacer,
139
+ 4: ($spacer * 1.5),
140
+ 5: ($spacer * 3)
141
+ ),
142
+ $spacers
143
+ );
144
+
145
+ // This variable affects the `.h-*` and `.w-*` classes.
146
+ $sizes: () !default;
147
+ // stylelint-disable-next-line scss/dollar-variable-default
148
+ $sizes: map-merge(
149
+ (
150
+ 25: 25%,
151
+ 50: 50%,
152
+ 75: 75%,
153
+ 100: 100%,
154
+ auto: auto
155
+ ),
156
+ $sizes
157
+ );
158
+
159
+
160
+ // Body
161
+ //
162
+ // Settings for the `<body>` element.
163
+
164
+ $body-bg: $white !default;
165
+ $body-color: $gray-900 !default;
166
+
167
+
168
+ // Links
169
+ //
170
+ // Style anchor elements.
171
+
172
+ $link-color: theme-color("primary") !default;
173
+ $link-decoration: none !default;
174
+ $link-hover-color: darken($link-color, 15%) !default;
175
+ $link-hover-decoration: underline !default;
176
+ // Darken percentage for links with `.text-*` class (e.g. `.text-success`)
177
+ $emphasized-link-hover-darken-percentage: 15% !default;
178
+
179
+ // Paragraphs
180
+ //
181
+ // Style p element.
182
+
183
+ $paragraph-margin-bottom: 1rem !default;
184
+
185
+
186
+ // Grid breakpoints
187
+ //
188
+ // Define the minimum dimensions at which your layout will change,
189
+ // adapting to different screen sizes, for use in media queries.
190
+
191
+ $grid-breakpoints: (
192
+ xs: 0,
193
+ sm: 576px,
194
+ md: 768px,
195
+ lg: 992px,
196
+ xl: 1200px
197
+ ) !default;
198
+
199
+ @include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
200
+ @include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
201
+
202
+
203
+ // Grid containers
204
+ //
205
+ // Define the maximum width of `.container` for different screen sizes.
206
+
207
+ $container-max-widths: (
208
+ sm: 540px,
209
+ md: 720px,
210
+ lg: 960px,
211
+ xl: 1140px
212
+ ) !default;
213
+
214
+ @include _assert-ascending($container-max-widths, "$container-max-widths");
215
+
216
+
217
+ // Grid columns
218
+ //
219
+ // Set the number of columns and specify the width of the gutters.
220
+
221
+ $grid-columns: 12 !default;
222
+ $grid-gutter-width: 30px !default;
223
+
224
+
225
+ // Components
226
+ //
227
+ // Define common padding and border radius sizes and more.
228
+
229
+ $line-height-lg: 1.5 !default;
230
+ $line-height-sm: 1.5 !default;
231
+
232
+ $border-width: 1px !default;
233
+ $border-color: $gray-300 !default;
234
+
235
+ $border-radius: .25rem !default;
236
+ $border-radius-lg: .3rem !default;
237
+ $border-radius-sm: .2rem !default;
238
+
239
+ $rounded-pill: 50rem !default;
240
+
241
+ $box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;
242
+ $box-shadow: 0 .5rem 1rem rgba($black, .15) !default;
243
+ $box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;
244
+
245
+ $component-active-color: $white !default;
246
+ $component-active-bg: theme-color("primary") !default;
247
+
248
+ $caret-width: .3em !default;
249
+ $caret-vertical-align: $caret-width * .85 !default;
250
+ $caret-spacing: $caret-width * .85 !default;
251
+
252
+ $transition-base: all .2s ease-in-out !default;
253
+ $transition-fade: opacity .15s linear !default;
254
+ $transition-collapse: height .35s ease !default;
255
+
256
+ $embed-responsive-aspect-ratios: () !default;
257
+ // stylelint-disable-next-line scss/dollar-variable-default
258
+ $embed-responsive-aspect-ratios: join(
259
+ (
260
+ (21 9),
261
+ (16 9),
262
+ (4 3),
263
+ (1 1),
264
+ ),
265
+ $embed-responsive-aspect-ratios
266
+ );
267
+
268
+ // Typography
269
+ //
270
+ // Font, line-height, and color for body text, headings, and more.
271
+
272
+ // stylelint-disable value-keyword-case
273
+ $font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
274
+ $font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
275
+ $font-family-base: $font-family-sans-serif !default;
276
+ // stylelint-enable value-keyword-case
277
+
278
+ $font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
279
+ $font-size-lg: $font-size-base * 1.25 !default;
280
+ $font-size-sm: $font-size-base * .875 !default;
281
+
282
+ $font-weight-lighter: lighter !default;
283
+ $font-weight-light: 300 !default;
284
+ $font-weight-normal: 400 !default;
285
+ $font-weight-bold: 700 !default;
286
+ $font-weight-bolder: bolder !default;
287
+
288
+ $font-weight-base: $font-weight-normal !default;
289
+ $line-height-base: 1.5 !default;
290
+
291
+ $h1-font-size: $font-size-base * 2.5 !default;
292
+ $h2-font-size: $font-size-base * 2 !default;
293
+ $h3-font-size: $font-size-base * 1.75 !default;
294
+ $h4-font-size: $font-size-base * 1.5 !default;
295
+ $h5-font-size: $font-size-base * 1.25 !default;
296
+ $h6-font-size: $font-size-base !default;
297
+
298
+ $headings-margin-bottom: $spacer / 2 !default;
299
+ $headings-font-family: null !default;
300
+ $headings-font-weight: 500 !default;
301
+ $headings-line-height: 1.2 !default;
302
+ $headings-color: null !default;
303
+
304
+ $display1-size: 6rem !default;
305
+ $display2-size: 5.5rem !default;
306
+ $display3-size: 4.5rem !default;
307
+ $display4-size: 3.5rem !default;
308
+
309
+ $display1-weight: 300 !default;
310
+ $display2-weight: 300 !default;
311
+ $display3-weight: 300 !default;
312
+ $display4-weight: 300 !default;
313
+ $display-line-height: $headings-line-height !default;
314
+
315
+ $lead-font-size: $font-size-base * 1.25 !default;
316
+ $lead-font-weight: 300 !default;
317
+
318
+ $small-font-size: 80% !default;
319
+
320
+ $text-muted: $gray-600 !default;
321
+
322
+ $blockquote-small-color: $gray-600 !default;
323
+ $blockquote-small-font-size: $small-font-size !default;
324
+ $blockquote-font-size: $font-size-base * 1.25 !default;
325
+
326
+ $hr-border-color: rgba($black, .1) !default;
327
+ $hr-border-width: $border-width !default;
328
+
329
+ $mark-padding: .2em !default;
330
+
331
+ $dt-font-weight: $font-weight-bold !default;
332
+
333
+ $kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;
334
+ $nested-kbd-font-weight: $font-weight-bold !default;
335
+
336
+ $list-inline-padding: .5rem !default;
337
+
338
+ $mark-bg: #fcf8e3 !default;
339
+
340
+ $hr-margin-y: $spacer !default;
341
+
342
+
343
+ // Tables
344
+ //
345
+ // Customizes the `.table` component with basic values, each used across all table variations.
346
+
347
+ $table-cell-padding: .75rem !default;
348
+ $table-cell-padding-sm: .3rem !default;
349
+
350
+ $table-color: $body-color !default;
351
+ $table-bg: null !default;
352
+ $table-accent-bg: rgba($black, .05) !default;
353
+ $table-hover-color: $table-color !default;
354
+ $table-hover-bg: rgba($black, .075) !default;
355
+ $table-active-bg: $table-hover-bg !default;
356
+
357
+ $table-border-width: $border-width !default;
358
+ $table-border-color: $border-color !default;
359
+
360
+ $table-head-bg: $gray-200 !default;
361
+ $table-head-color: $gray-700 !default;
362
+
363
+ $table-dark-color: $white !default;
364
+ $table-dark-bg: $gray-800 !default;
365
+ $table-dark-accent-bg: rgba($white, .05) !default;
366
+ $table-dark-hover-color: $table-dark-color !default;
367
+ $table-dark-hover-bg: rgba($white, .075) !default;
368
+ $table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;
369
+ $table-dark-color: $white !default;
370
+
371
+ $table-striped-order: odd !default;
372
+
373
+ $table-caption-color: $text-muted !default;
374
+
375
+ $table-bg-level: -9 !default;
376
+ $table-border-level: -6 !default;
377
+
378
+
379
+ // Buttons + Forms
380
+ //
381
+ // Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
382
+
383
+ $input-btn-padding-y: .375rem !default;
384
+ $input-btn-padding-x: .75rem !default;
385
+ $input-btn-font-family: null !default;
386
+ $input-btn-font-size: $font-size-base !default;
387
+ $input-btn-line-height: $line-height-base !default;
388
+
389
+ $input-btn-focus-width: .2rem !default;
390
+ $input-btn-focus-color: rgba($component-active-bg, .25) !default;
391
+ $input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
392
+
393
+ $input-btn-padding-y-sm: .25rem !default;
394
+ $input-btn-padding-x-sm: .5rem !default;
395
+ $input-btn-font-size-sm: $font-size-sm !default;
396
+ $input-btn-line-height-sm: $line-height-sm !default;
397
+
398
+ $input-btn-padding-y-lg: .5rem !default;
399
+ $input-btn-padding-x-lg: 1rem !default;
400
+ $input-btn-font-size-lg: $font-size-lg !default;
401
+ $input-btn-line-height-lg: $line-height-lg !default;
402
+
403
+ $input-btn-border-width: $border-width !default;
404
+
405
+
406
+ // Buttons
407
+ //
408
+ // For each of Bootstrap's buttons, define text, background, and border color.
409
+
410
+ $btn-padding-y: $input-btn-padding-y !default;
411
+ $btn-padding-x: $input-btn-padding-x !default;
412
+ $btn-font-family: $input-btn-font-family !default;
413
+ $btn-font-size: $input-btn-font-size !default;
414
+ $btn-line-height: $input-btn-line-height !default;
415
+
416
+ $btn-padding-y-sm: $input-btn-padding-y-sm !default;
417
+ $btn-padding-x-sm: $input-btn-padding-x-sm !default;
418
+ $btn-font-size-sm: $input-btn-font-size-sm !default;
419
+ $btn-line-height-sm: $input-btn-line-height-sm !default;
420
+
421
+ $btn-padding-y-lg: $input-btn-padding-y-lg !default;
422
+ $btn-padding-x-lg: $input-btn-padding-x-lg !default;
423
+ $btn-font-size-lg: $input-btn-font-size-lg !default;
424
+ $btn-line-height-lg: $input-btn-line-height-lg !default;
425
+
426
+ $btn-border-width: $input-btn-border-width !default;
427
+
428
+ $btn-font-weight: $font-weight-normal !default;
429
+ $btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
430
+ $btn-focus-width: $input-btn-focus-width !default;
431
+ $btn-focus-box-shadow: $input-btn-focus-box-shadow !default;
432
+ $btn-disabled-opacity: .65 !default;
433
+ $btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;
434
+
435
+ $btn-link-disabled-color: $gray-600 !default;
436
+
437
+ $btn-block-spacing-y: .5rem !default;
438
+
439
+ // Allows for customizing button radius independently from global border radius
440
+ $btn-border-radius: $border-radius !default;
441
+ $btn-border-radius-lg: $border-radius-lg !default;
442
+ $btn-border-radius-sm: $border-radius-sm !default;
443
+
444
+ $btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
445
+
446
+
447
+ // Forms
448
+
449
+ $label-margin-bottom: .5rem !default;
450
+
451
+ $input-padding-y: $input-btn-padding-y !default;
452
+ $input-padding-x: $input-btn-padding-x !default;
453
+ $input-font-family: $input-btn-font-family !default;
454
+ $input-font-size: $input-btn-font-size !default;
455
+ $input-font-weight: $font-weight-base !default;
456
+ $input-line-height: $input-btn-line-height !default;
457
+
458
+ $input-padding-y-sm: $input-btn-padding-y-sm !default;
459
+ $input-padding-x-sm: $input-btn-padding-x-sm !default;
460
+ $input-font-size-sm: $input-btn-font-size-sm !default;
461
+ $input-line-height-sm: $input-btn-line-height-sm !default;
462
+
463
+ $input-padding-y-lg: $input-btn-padding-y-lg !default;
464
+ $input-padding-x-lg: $input-btn-padding-x-lg !default;
465
+ $input-font-size-lg: $input-btn-font-size-lg !default;
466
+ $input-line-height-lg: $input-btn-line-height-lg !default;
467
+
468
+ $input-bg: $white !default;
469
+ $input-disabled-bg: $gray-200 !default;
470
+
471
+ $input-color: $gray-700 !default;
472
+ $input-border-color: $gray-400 !default;
473
+ $input-border-width: $input-btn-border-width !default;
474
+ $input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;
475
+
476
+ $input-border-radius: $border-radius !default;
477
+ $input-border-radius-lg: $border-radius-lg !default;
478
+ $input-border-radius-sm: $border-radius-sm !default;
479
+
480
+ $input-focus-bg: $input-bg !default;
481
+ $input-focus-border-color: lighten($component-active-bg, 25%) !default;
482
+ $input-focus-color: $input-color !default;
483
+ $input-focus-width: $input-btn-focus-width !default;
484
+ $input-focus-box-shadow: $input-btn-focus-box-shadow !default;
485
+
486
+ $input-placeholder-color: $gray-600 !default;
487
+ $input-plaintext-color: $body-color !default;
488
+
489
+ $input-height-border: $input-border-width * 2 !default;
490
+
491
+ $input-height-inner: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;
492
+ $input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;
493
+ $input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;
494
+
495
+ $input-height: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2} + #{$input-height-border}) !default;
496
+ $input-height-sm: calc(#{$input-line-height-sm * 1em} + #{$input-btn-padding-y-sm * 2} + #{$input-height-border}) !default;
497
+ $input-height-lg: calc(#{$input-line-height-lg * 1em} + #{$input-btn-padding-y-lg * 2} + #{$input-height-border}) !default;
498
+
499
+ $input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
500
+
501
+ $form-text-margin-top: .25rem !default;
502
+
503
+ $form-check-input-gutter: 1.25rem !default;
504
+ $form-check-input-margin-y: .3rem !default;
505
+ $form-check-input-margin-x: .25rem !default;
506
+
507
+ $form-check-inline-margin-x: .75rem !default;
508
+ $form-check-inline-input-margin-x: .3125rem !default;
509
+
510
+ $form-grid-gutter-width: 10px !default;
511
+ $form-group-margin-bottom: 1rem !default;
512
+
513
+ $input-group-addon-color: $input-color !default;
514
+ $input-group-addon-bg: $gray-200 !default;
515
+ $input-group-addon-border-color: $input-border-color !default;
516
+
517
+ $custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
518
+
519
+ $custom-control-gutter: .5rem !default;
520
+ $custom-control-spacer-x: 1rem !default;
521
+
522
+ $custom-control-indicator-size: 1rem !default;
523
+ $custom-control-indicator-bg: $input-bg !default;
524
+
525
+ $custom-control-indicator-bg-size: 50% 50% !default;
526
+ $custom-control-indicator-box-shadow: $input-box-shadow !default;
527
+ $custom-control-indicator-border-color: $gray-500 !default;
528
+ $custom-control-indicator-border-width: $input-border-width !default;
529
+
530
+ $custom-control-indicator-disabled-bg: $input-disabled-bg !default;
531
+ $custom-control-label-disabled-color: $gray-600 !default;
532
+
533
+ $custom-control-indicator-checked-color: $component-active-color !default;
534
+ $custom-control-indicator-checked-bg: $component-active-bg !default;
535
+ $custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
536
+ $custom-control-indicator-checked-box-shadow: none !default;
537
+ $custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
538
+
539
+ $custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;
540
+ $custom-control-indicator-focus-border-color: $input-focus-border-color !default;
541
+
542
+ $custom-control-indicator-active-color: $component-active-color !default;
543
+ $custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
544
+ $custom-control-indicator-active-box-shadow: none !default;
545
+ $custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
546
+
547
+ $custom-checkbox-indicator-border-radius: $border-radius !default;
548
+ $custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"), "#", "%23") !default;
549
+
550
+ $custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
551
+ $custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
552
+ $custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e"), "#", "%23") !default;
553
+ $custom-checkbox-indicator-indeterminate-box-shadow: none !default;
554
+ $custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
555
+
556
+ $custom-radio-indicator-border-radius: 50% !default;
557
+ $custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
558
+
559
+ $custom-switch-width: $custom-control-indicator-size * 1.75 !default;
560
+ $custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;
561
+ $custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;
562
+
563
+ $custom-select-padding-y: $input-padding-y !default;
564
+ $custom-select-padding-x: $input-padding-x !default;
565
+ $custom-select-font-family: $input-font-family !default;
566
+ $custom-select-font-size: $input-font-size !default;
567
+ $custom-select-height: $input-height !default;
568
+ $custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
569
+ $custom-select-font-weight: $input-font-weight !default;
570
+ $custom-select-line-height: $input-line-height !default;
571
+ $custom-select-color: $input-color !default;
572
+ $custom-select-disabled-color: $gray-600 !default;
573
+ $custom-select-bg: $input-bg !default;
574
+ $custom-select-disabled-bg: $gray-200 !default;
575
+ $custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
576
+ $custom-select-indicator-color: $gray-800 !default;
577
+ $custom-select-indicator: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e"), "#", "%23") !default;
578
+ $custom-select-background: $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
579
+
580
+ $custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;
581
+ $custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
582
+ $custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;
583
+
584
+ $custom-select-border-width: $input-border-width !default;
585
+ $custom-select-border-color: $input-border-color !default;
586
+ $custom-select-border-radius: $border-radius !default;
587
+ $custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;
588
+
589
+ $custom-select-focus-border-color: $input-focus-border-color !default;
590
+ $custom-select-focus-width: $input-focus-width !default;
591
+ $custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
592
+
593
+ $custom-select-padding-y-sm: $input-padding-y-sm !default;
594
+ $custom-select-padding-x-sm: $input-padding-x-sm !default;
595
+ $custom-select-font-size-sm: $input-font-size-sm !default;
596
+ $custom-select-height-sm: $input-height-sm !default;
597
+
598
+ $custom-select-padding-y-lg: $input-padding-y-lg !default;
599
+ $custom-select-padding-x-lg: $input-padding-x-lg !default;
600
+ $custom-select-font-size-lg: $input-font-size-lg !default;
601
+ $custom-select-height-lg: $input-height-lg !default;
602
+
603
+ $custom-range-track-width: 100% !default;
604
+ $custom-range-track-height: .5rem !default;
605
+ $custom-range-track-cursor: pointer !default;
606
+ $custom-range-track-bg: $gray-300 !default;
607
+ $custom-range-track-border-radius: 1rem !default;
608
+ $custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;
609
+
610
+ $custom-range-thumb-width: 1rem !default;
611
+ $custom-range-thumb-height: $custom-range-thumb-width !default;
612
+ $custom-range-thumb-bg: $component-active-bg !default;
613
+ $custom-range-thumb-border: 0 !default;
614
+ $custom-range-thumb-border-radius: 1rem !default;
615
+ $custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;
616
+ $custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;
617
+ $custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge
618
+ $custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;
619
+ $custom-range-thumb-disabled-bg: $gray-500 !default;
620
+
621
+ $custom-file-height: $input-height !default;
622
+ $custom-file-height-inner: $input-height-inner !default;
623
+ $custom-file-focus-border-color: $input-focus-border-color !default;
624
+ $custom-file-focus-box-shadow: $input-focus-box-shadow !default;
625
+ $custom-file-disabled-bg: $input-disabled-bg !default;
626
+
627
+ $custom-file-padding-y: $input-padding-y !default;
628
+ $custom-file-padding-x: $input-padding-x !default;
629
+ $custom-file-line-height: $input-line-height !default;
630
+ $custom-file-font-family: $input-font-family !default;
631
+ $custom-file-font-weight: $input-font-weight !default;
632
+ $custom-file-color: $input-color !default;
633
+ $custom-file-bg: $input-bg !default;
634
+ $custom-file-border-width: $input-border-width !default;
635
+ $custom-file-border-color: $input-border-color !default;
636
+ $custom-file-border-radius: $input-border-radius !default;
637
+ $custom-file-box-shadow: $input-box-shadow !default;
638
+ $custom-file-button-color: $custom-file-color !default;
639
+ $custom-file-button-bg: $input-group-addon-bg !default;
640
+ $custom-file-text: (
641
+ en: "Browse"
642
+ ) !default;
643
+
644
+
645
+ // Form validation
646
+
647
+ $form-feedback-margin-top: $form-text-margin-top !default;
648
+ $form-feedback-font-size: $small-font-size !default;
649
+ $form-feedback-valid-color: theme-color("success") !default;
650
+ $form-feedback-invalid-color: theme-color("danger") !default;
651
+
652
+ $form-feedback-icon-valid-color: $form-feedback-valid-color !default;
653
+ $form-feedback-icon-valid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"), "#", "%23") !default;
654
+ $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
655
+ $form-feedback-icon-invalid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"), "#", "%23") !default;
656
+
657
+ $form-validation-states: () !default;
658
+ // stylelint-disable-next-line scss/dollar-variable-default
659
+ $form-validation-states: map-merge(
660
+ (
661
+ "valid": (
662
+ "color": $form-feedback-valid-color,
663
+ "icon": $form-feedback-icon-valid
664
+ ),
665
+ "invalid": (
666
+ "color": $form-feedback-invalid-color,
667
+ "icon": $form-feedback-icon-invalid
668
+ ),
669
+ ),
670
+ $form-validation-states
671
+ );
672
+
673
+ // Z-index master list
674
+ //
675
+ // Warning: Avoid customizing these values. They're used for a bird's eye view
676
+ // of components dependent on the z-axis and are designed to all work together.
677
+
678
+ $zindex-dropdown: 1000 !default;
679
+ $zindex-sticky: 1020 !default;
680
+ $zindex-fixed: 1030 !default;
681
+ $zindex-modal-backdrop: 1040 !default;
682
+ $zindex-modal: 1050 !default;
683
+ $zindex-popover: 1060 !default;
684
+ $zindex-tooltip: 1070 !default;
685
+
686
+
687
+ // Navs
688
+
689
+ $nav-link-padding-y: .5rem !default;
690
+ $nav-link-padding-x: 1rem !default;
691
+ $nav-link-disabled-color: $gray-600 !default;
692
+
693
+ $nav-tabs-border-color: $gray-300 !default;
694
+ $nav-tabs-border-width: $border-width !default;
695
+ $nav-tabs-border-radius: $border-radius !default;
696
+ $nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;
697
+ $nav-tabs-link-active-color: $gray-700 !default;
698
+ $nav-tabs-link-active-bg: $body-bg !default;
699
+ $nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
700
+
701
+ $nav-pills-border-radius: $border-radius !default;
702
+ $nav-pills-link-active-color: $component-active-color !default;
703
+ $nav-pills-link-active-bg: $component-active-bg !default;
704
+
705
+ $nav-divider-color: $gray-200 !default;
706
+ $nav-divider-margin-y: $spacer / 2 !default;
707
+
708
+
709
+ // Navbar
710
+
711
+ $navbar-padding-y: $spacer / 2 !default;
712
+ $navbar-padding-x: $spacer !default;
713
+
714
+ $navbar-nav-link-padding-x: .5rem !default;
715
+
716
+ $navbar-brand-font-size: $font-size-lg !default;
717
+ // Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
718
+ $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
719
+ $navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;
720
+ $navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;
721
+
722
+ $navbar-toggler-padding-y: .25rem !default;
723
+ $navbar-toggler-padding-x: .75rem !default;
724
+ $navbar-toggler-font-size: $font-size-lg !default;
725
+ $navbar-toggler-border-radius: $btn-border-radius !default;
726
+
727
+ $navbar-dark-color: rgba($white, .5) !default;
728
+ $navbar-dark-hover-color: rgba($white, .75) !default;
729
+ $navbar-dark-active-color: $white !default;
730
+ $navbar-dark-disabled-color: rgba($white, .25) !default;
731
+ $navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
732
+ $navbar-dark-toggler-border-color: rgba($white, .1) !default;
733
+
734
+ $navbar-light-color: rgba($black, .5) !default;
735
+ $navbar-light-hover-color: rgba($black, .7) !default;
736
+ $navbar-light-active-color: rgba($black, .9) !default;
737
+ $navbar-light-disabled-color: rgba($black, .3) !default;
738
+ $navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
739
+ $navbar-light-toggler-border-color: rgba($black, .1) !default;
740
+
741
+ $navbar-light-brand-color: $navbar-light-active-color !default;
742
+ $navbar-light-brand-hover-color: $navbar-light-active-color !default;
743
+ $navbar-dark-brand-color: $navbar-dark-active-color !default;
744
+ $navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
745
+
746
+
747
+ // Dropdowns
748
+ //
749
+ // Dropdown menu container and contents.
750
+
751
+ $dropdown-min-width: 10rem !default;
752
+ $dropdown-padding-y: .5rem !default;
753
+ $dropdown-spacer: .125rem !default;
754
+ $dropdown-font-size: $font-size-base !default;
755
+ $dropdown-color: $body-color !default;
756
+ $dropdown-bg: $white !default;
757
+ $dropdown-border-color: rgba($black, .15) !default;
758
+ $dropdown-border-radius: $border-radius !default;
759
+ $dropdown-border-width: $border-width !default;
760
+ $dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;
761
+ $dropdown-divider-bg: $gray-200 !default;
762
+ $dropdown-divider-margin-y: $nav-divider-margin-y !default;
763
+ $dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
764
+
765
+ $dropdown-link-color: $gray-900 !default;
766
+ $dropdown-link-hover-color: darken($gray-900, 5%) !default;
767
+ $dropdown-link-hover-bg: $gray-100 !default;
768
+
769
+ $dropdown-link-active-color: $component-active-color !default;
770
+ $dropdown-link-active-bg: $component-active-bg !default;
771
+
772
+ $dropdown-link-disabled-color: $gray-600 !default;
773
+
774
+ $dropdown-item-padding-y: .25rem !default;
775
+ $dropdown-item-padding-x: 1.5rem !default;
776
+
777
+ $dropdown-header-color: $gray-600 !default;
778
+
779
+
780
+ // Pagination
781
+
782
+ $pagination-padding-y: .5rem !default;
783
+ $pagination-padding-x: .75rem !default;
784
+ $pagination-padding-y-sm: .25rem !default;
785
+ $pagination-padding-x-sm: .5rem !default;
786
+ $pagination-padding-y-lg: .75rem !default;
787
+ $pagination-padding-x-lg: 1.5rem !default;
788
+ $pagination-line-height: 1.25 !default;
789
+
790
+ $pagination-color: $link-color !default;
791
+ $pagination-bg: $white !default;
792
+ $pagination-border-width: $border-width !default;
793
+ $pagination-border-color: $gray-300 !default;
794
+
795
+ $pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;
796
+ $pagination-focus-outline: 0 !default;
797
+
798
+ $pagination-hover-color: $link-hover-color !default;
799
+ $pagination-hover-bg: $gray-200 !default;
800
+ $pagination-hover-border-color: $gray-300 !default;
801
+
802
+ $pagination-active-color: $component-active-color !default;
803
+ $pagination-active-bg: $component-active-bg !default;
804
+ $pagination-active-border-color: $pagination-active-bg !default;
805
+
806
+ $pagination-disabled-color: $gray-600 !default;
807
+ $pagination-disabled-bg: $white !default;
808
+ $pagination-disabled-border-color: $gray-300 !default;
809
+
810
+
811
+ // Jumbotron
812
+
813
+ $jumbotron-padding: 2rem !default;
814
+ $jumbotron-color: null !default;
815
+ $jumbotron-bg: $gray-200 !default;
816
+
817
+
818
+ // Cards
819
+
820
+ $card-spacer-y: .75rem !default;
821
+ $card-spacer-x: 1.25rem !default;
822
+ $card-border-width: $border-width !default;
823
+ $card-border-radius: $border-radius !default;
824
+ $card-border-color: rgba($black, .125) !default;
825
+ $card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
826
+ $card-cap-bg: rgba($black, .03) !default;
827
+ $card-cap-color: null !default;
828
+ $card-color: null !default;
829
+ $card-bg: $white !default;
830
+
831
+ $card-img-overlay-padding: 1.25rem !default;
832
+
833
+ $card-group-margin: $grid-gutter-width / 2 !default;
834
+ $card-deck-margin: $card-group-margin !default;
835
+
836
+ $card-columns-count: 3 !default;
837
+ $card-columns-gap: 1.25rem !default;
838
+ $card-columns-margin: $card-spacer-y !default;
839
+
840
+
841
+ // Tooltips
842
+
843
+ $tooltip-font-size: $font-size-sm !default;
844
+ $tooltip-max-width: 200px !default;
845
+ $tooltip-color: $white !default;
846
+ $tooltip-bg: $black !default;
847
+ $tooltip-border-radius: $border-radius !default;
848
+ $tooltip-opacity: .9 !default;
849
+ $tooltip-padding-y: .25rem !default;
850
+ $tooltip-padding-x: .5rem !default;
851
+ $tooltip-margin: 0 !default;
852
+
853
+ $tooltip-arrow-width: .8rem !default;
854
+ $tooltip-arrow-height: .4rem !default;
855
+ $tooltip-arrow-color: $tooltip-bg !default;
856
+
857
+ // Form tooltips must come after regular tooltips
858
+ $form-feedback-tooltip-padding-y: $tooltip-padding-y !default;
859
+ $form-feedback-tooltip-padding-x: $tooltip-padding-x !default;
860
+ $form-feedback-tooltip-font-size: $tooltip-font-size !default;
861
+ $form-feedback-tooltip-line-height: $line-height-base !default;
862
+ $form-feedback-tooltip-opacity: $tooltip-opacity !default;
863
+ $form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
864
+
865
+
866
+ // Popovers
867
+
868
+ $popover-font-size: $font-size-sm !default;
869
+ $popover-bg: $white !default;
870
+ $popover-max-width: 276px !default;
871
+ $popover-border-width: $border-width !default;
872
+ $popover-border-color: rgba($black, .2) !default;
873
+ $popover-border-radius: $border-radius-lg !default;
874
+ $popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;
875
+
876
+ $popover-header-bg: darken($popover-bg, 3%) !default;
877
+ $popover-header-color: $headings-color !default;
878
+ $popover-header-padding-y: .5rem !default;
879
+ $popover-header-padding-x: .75rem !default;
880
+
881
+ $popover-body-color: $body-color !default;
882
+ $popover-body-padding-y: $popover-header-padding-y !default;
883
+ $popover-body-padding-x: $popover-header-padding-x !default;
884
+
885
+ $popover-arrow-width: 1rem !default;
886
+ $popover-arrow-height: .5rem !default;
887
+ $popover-arrow-color: $popover-bg !default;
888
+
889
+ $popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
890
+
891
+
892
+ // Toasts
893
+
894
+ $toast-max-width: 350px !default;
895
+ $toast-padding-x: .75rem !default;
896
+ $toast-padding-y: .25rem !default;
897
+ $toast-font-size: .875rem !default;
898
+ $toast-color: null !default;
899
+ $toast-background-color: rgba($white, .85) !default;
900
+ $toast-border-width: 1px !default;
901
+ $toast-border-color: rgba(0, 0, 0, .1) !default;
902
+ $toast-border-radius: .25rem !default;
903
+ $toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;
904
+
905
+ $toast-header-color: $gray-600 !default;
906
+ $toast-header-background-color: rgba($white, .85) !default;
907
+ $toast-header-border-color: rgba(0, 0, 0, .05) !default;
908
+
909
+
910
+ // Badges
911
+
912
+ $badge-font-size: 75% !default;
913
+ $badge-font-weight: $font-weight-bold !default;
914
+ $badge-padding-y: .25em !default;
915
+ $badge-padding-x: .4em !default;
916
+ $badge-border-radius: $border-radius !default;
917
+
918
+ $badge-transition: $btn-transition !default;
919
+ $badge-focus-width: $input-btn-focus-width !default;
920
+
921
+ $badge-pill-padding-x: .6em !default;
922
+ // Use a higher than normal value to ensure completely rounded edges when
923
+ // customizing padding or font-size on labels.
924
+ $badge-pill-border-radius: 10rem !default;
925
+
926
+
927
+ // Modals
928
+
929
+ // Padding applied to the modal body
930
+ $modal-inner-padding: 1rem !default;
931
+
932
+ $modal-dialog-margin: .5rem !default;
933
+ $modal-dialog-margin-y-sm-up: 1.75rem !default;
934
+
935
+ $modal-title-line-height: $line-height-base !default;
936
+
937
+ $modal-content-color: null !default;
938
+ $modal-content-bg: $white !default;
939
+ $modal-content-border-color: rgba($black, .2) !default;
940
+ $modal-content-border-width: $border-width !default;
941
+ $modal-content-border-radius: $border-radius-lg !default;
942
+ $modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;
943
+ $modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;
944
+
945
+ $modal-backdrop-bg: $black !default;
946
+ $modal-backdrop-opacity: .5 !default;
947
+ $modal-header-border-color: $border-color !default;
948
+ $modal-footer-border-color: $modal-header-border-color !default;
949
+ $modal-header-border-width: $modal-content-border-width !default;
950
+ $modal-footer-border-width: $modal-header-border-width !default;
951
+ $modal-header-padding-y: 1rem !default;
952
+ $modal-header-padding-x: 1rem !default;
953
+ $modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
954
+
955
+ $modal-xl: 1140px !default;
956
+ $modal-lg: 800px !default;
957
+ $modal-md: 500px !default;
958
+ $modal-sm: 300px !default;
959
+
960
+ $modal-fade-transform: translate(0, -50px) !default;
961
+ $modal-show-transform: none !default;
962
+ $modal-transition: transform .3s ease-out !default;
963
+
964
+
965
+ // Alerts
966
+ //
967
+ // Define alert colors, border radius, and padding.
968
+
969
+ $alert-padding-y: .75rem !default;
970
+ $alert-padding-x: 1.25rem !default;
971
+ $alert-margin-bottom: 1rem !default;
972
+ $alert-border-radius: $border-radius !default;
973
+ $alert-link-font-weight: $font-weight-bold !default;
974
+ $alert-border-width: $border-width !default;
975
+
976
+ $alert-bg-level: -10 !default;
977
+ $alert-border-level: -9 !default;
978
+ $alert-color-level: 6 !default;
979
+
980
+
981
+ // Progress bars
982
+
983
+ $progress-height: 1rem !default;
984
+ $progress-font-size: $font-size-base * .75 !default;
985
+ $progress-bg: $gray-200 !default;
986
+ $progress-border-radius: $border-radius !default;
987
+ $progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;
988
+ $progress-bar-color: $white !default;
989
+ $progress-bar-bg: theme-color("primary") !default;
990
+ $progress-bar-animation-timing: 1s linear infinite !default;
991
+ $progress-bar-transition: width .6s ease !default;
992
+
993
+
994
+ // List group
995
+
996
+ $list-group-color: null !default;
997
+ $list-group-bg: $white !default;
998
+ $list-group-border-color: rgba($black, .125) !default;
999
+ $list-group-border-width: $border-width !default;
1000
+ $list-group-border-radius: $border-radius !default;
1001
+
1002
+ $list-group-item-padding-y: .75rem !default;
1003
+ $list-group-item-padding-x: 1.25rem !default;
1004
+
1005
+ $list-group-hover-bg: $gray-100 !default;
1006
+ $list-group-active-color: $component-active-color !default;
1007
+ $list-group-active-bg: $component-active-bg !default;
1008
+ $list-group-active-border-color: $list-group-active-bg !default;
1009
+
1010
+ $list-group-disabled-color: $gray-600 !default;
1011
+ $list-group-disabled-bg: $list-group-bg !default;
1012
+
1013
+ $list-group-action-color: $gray-700 !default;
1014
+ $list-group-action-hover-color: $list-group-action-color !default;
1015
+
1016
+ $list-group-action-active-color: $body-color !default;
1017
+ $list-group-action-active-bg: $gray-200 !default;
1018
+
1019
+
1020
+ // Image thumbnails
1021
+
1022
+ $thumbnail-padding: .25rem !default;
1023
+ $thumbnail-bg: $body-bg !default;
1024
+ $thumbnail-border-width: $border-width !default;
1025
+ $thumbnail-border-color: $gray-300 !default;
1026
+ $thumbnail-border-radius: $border-radius !default;
1027
+ $thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;
1028
+
1029
+
1030
+ // Figures
1031
+
1032
+ $figure-caption-font-size: 90% !default;
1033
+ $figure-caption-color: $gray-600 !default;
1034
+
1035
+
1036
+ // Breadcrumbs
1037
+
1038
+ $breadcrumb-padding-y: .75rem !default;
1039
+ $breadcrumb-padding-x: 1rem !default;
1040
+ $breadcrumb-item-padding: .5rem !default;
1041
+
1042
+ $breadcrumb-margin-bottom: 1rem !default;
1043
+
1044
+ $breadcrumb-bg: $gray-200 !default;
1045
+ $breadcrumb-divider-color: $gray-600 !default;
1046
+ $breadcrumb-active-color: $gray-600 !default;
1047
+ $breadcrumb-divider: quote("/") !default;
1048
+
1049
+ $breadcrumb-border-radius: $border-radius !default;
1050
+
1051
+
1052
+ // Carousel
1053
+
1054
+ $carousel-control-color: $white !default;
1055
+ $carousel-control-width: 15% !default;
1056
+ $carousel-control-opacity: .5 !default;
1057
+ $carousel-control-hover-opacity: .9 !default;
1058
+ $carousel-control-transition: opacity .15s ease !default;
1059
+
1060
+ $carousel-indicator-width: 30px !default;
1061
+ $carousel-indicator-height: 3px !default;
1062
+ $carousel-indicator-hit-area-height: 10px !default;
1063
+ $carousel-indicator-spacer: 3px !default;
1064
+ $carousel-indicator-active-bg: $white !default;
1065
+ $carousel-indicator-transition: opacity .6s ease !default;
1066
+
1067
+ $carousel-caption-width: 70% !default;
1068
+ $carousel-caption-color: $white !default;
1069
+
1070
+ $carousel-control-icon-width: 20px !default;
1071
+
1072
+ $carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"), "#", "%23") !default;
1073
+ $carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"), "#", "%23") !default;
1074
+
1075
+ $carousel-transition-duration: .6s !default;
1076
+ $carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
1077
+
1078
+
1079
+ // Spinners
1080
+
1081
+ $spinner-width: 2rem !default;
1082
+ $spinner-height: $spinner-width !default;
1083
+ $spinner-border-width: .25em !default;
1084
+
1085
+ $spinner-width-sm: 1rem !default;
1086
+ $spinner-height-sm: $spinner-width-sm !default;
1087
+ $spinner-border-width-sm: .2em !default;
1088
+
1089
+
1090
+ // Close
1091
+
1092
+ $close-font-size: $font-size-base * 1.5 !default;
1093
+ $close-font-weight: $font-weight-bold !default;
1094
+ $close-color: $black !default;
1095
+ $close-text-shadow: 0 1px 0 $white !default;
1096
+
1097
+
1098
+ // Code
1099
+
1100
+ $code-font-size: 87.5% !default;
1101
+ $code-color: $pink !default;
1102
+
1103
+ $kbd-padding-y: .2rem !default;
1104
+ $kbd-padding-x: .4rem !default;
1105
+ $kbd-font-size: $code-font-size !default;
1106
+ $kbd-color: $white !default;
1107
+ $kbd-bg: $gray-900 !default;
1108
+
1109
+ $pre-color: $gray-900 !default;
1110
+ $pre-scrollable-max-height: 340px !default;
1111
+
1112
+
1113
+ // Utilities
1114
+
1115
+ $displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
1116
+ $overflows: auto, hidden !default;
1117
+ $positions: static, relative, absolute, fixed, sticky !default;
1118
+
1119
+
1120
+ // Printing
1121
+
1122
+ $print-page-size: a3 !default;
1123
+ $print-body-min-width: map-get($grid-breakpoints, "lg") !default;