praxis 0.0.1 → 0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (484) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.ruby-version +1 -0
  5. data/.simplecov +7 -0
  6. data/.travis.yml +4 -0
  7. data/CONTRIBUTING.md +183 -0
  8. data/Gemfile +3 -0
  9. data/Guardfile +8 -0
  10. data/LICENSE +22 -0
  11. data/MAINTAINERS +2 -0
  12. data/MAINTAINERS.md +86 -0
  13. data/README.md +69 -3
  14. data/Rakefile +18 -0
  15. data/bin/praxis +10 -0
  16. data/lib/api_browser/.bowerrc +3 -0
  17. data/lib/api_browser/.editorconfig +21 -0
  18. data/lib/api_browser/Gruntfile.js +264 -0
  19. data/lib/api_browser/app/bower_components/angular/.bower.json +16 -0
  20. data/lib/api_browser/app/bower_components/angular/README.md +48 -0
  21. data/lib/api_browser/app/bower_components/angular/angular-csp.css +18 -0
  22. data/lib/api_browser/app/bower_components/angular/angular.js +21464 -0
  23. data/lib/api_browser/app/bower_components/angular/angular.min.js +210 -0
  24. data/lib/api_browser/app/bower_components/angular/angular.min.js.gzip +0 -0
  25. data/lib/api_browser/app/bower_components/angular/angular.min.js.map +8 -0
  26. data/lib/api_browser/app/bower_components/angular/bower.json +7 -0
  27. data/lib/api_browser/app/bower_components/angular-sanitize/.bower.json +19 -0
  28. data/lib/api_browser/app/bower_components/angular-sanitize/README.md +54 -0
  29. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.js +624 -0
  30. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js +14 -0
  31. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js.map +8 -0
  32. data/lib/api_browser/app/bower_components/angular-sanitize/bower.json +8 -0
  33. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/.bower.json +24 -0
  34. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/bower.json +11 -0
  35. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js +4116 -0
  36. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.min.js +10 -0
  37. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.js +3799 -0
  38. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.min.js +9 -0
  39. data/lib/api_browser/app/bower_components/angular-ui-router/.bower.json +34 -0
  40. data/lib/api_browser/app/bower_components/angular-ui-router/CHANGELOG.md +23 -0
  41. data/lib/api_browser/app/bower_components/angular-ui-router/LICENSE +21 -0
  42. data/lib/api_browser/app/bower_components/angular-ui-router/README.md +280 -0
  43. data/lib/api_browser/app/bower_components/angular-ui-router/bower.json +23 -0
  44. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.js +3223 -0
  45. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.min.js +7 -0
  46. data/lib/api_browser/app/bower_components/angular-ui-router/src/common.js +246 -0
  47. data/lib/api_browser/app/bower_components/angular-ui-router/src/compat.js +146 -0
  48. data/lib/api_browser/app/bower_components/angular-ui-router/src/resolve.js +242 -0
  49. data/lib/api_browser/app/bower_components/angular-ui-router/src/state.js +1204 -0
  50. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateDirectives.js +226 -0
  51. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateFilters.js +35 -0
  52. data/lib/api_browser/app/bower_components/angular-ui-router/src/templateFactory.js +110 -0
  53. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlMatcherFactory.js +325 -0
  54. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlRouter.js +273 -0
  55. data/lib/api_browser/app/bower_components/angular-ui-router/src/view.js +71 -0
  56. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewDirective.js +290 -0
  57. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewScroll.js +52 -0
  58. data/lib/api_browser/app/bower_components/bootstrap-sass/.bower.json +26 -0
  59. data/lib/api_browser/app/bower_components/bootstrap-sass/CNAME +1 -0
  60. data/lib/api_browser/app/bower_components/bootstrap-sass/CONTRIBUTING.md +61 -0
  61. data/lib/api_browser/app/bower_components/bootstrap-sass/DOCS-LICENSE +319 -0
  62. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile +5 -0
  63. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile.lock +14 -0
  64. data/lib/api_browser/app/bower_components/bootstrap-sass/Gruntfile.js +244 -0
  65. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE +176 -0
  66. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE-MIT +21 -0
  67. data/lib/api_browser/app/bower_components/bootstrap-sass/README.md +277 -0
  68. data/lib/api_browser/app/bower_components/bootstrap-sass/Rakefile +44 -0
  69. data/lib/api_browser/app/bower_components/bootstrap-sass/_config.yml +25 -0
  70. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/ads.html +1 -0
  71. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/footer.html +34 -0
  72. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/header.html +42 -0
  73. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-about.html +12 -0
  74. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-components.html +137 -0
  75. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-css.html +99 -0
  76. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-customize.html +40 -0
  77. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-getting-started.html +44 -0
  78. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-javascript.html +88 -0
  79. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-main.html +37 -0
  80. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/old-bs-docs.html +8 -0
  81. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/social-buttons.html +16 -0
  82. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/default.html +79 -0
  83. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/home.html +47 -0
  84. data/lib/api_browser/app/bower_components/bootstrap-sass/about.html +93 -0
  85. data/lib/api_browser/app/bower_components/bootstrap-sass/bower.json +11 -0
  86. data/lib/api_browser/app/bower_components/bootstrap-sass/browserstack.json +37 -0
  87. data/lib/api_browser/app/bower_components/bootstrap-sass/components.html +3689 -0
  88. data/lib/api_browser/app/bower_components/bootstrap-sass/composer.json +28 -0
  89. data/lib/api_browser/app/bower_components/bootstrap-sass/css.html +2674 -0
  90. data/lib/api_browser/app/bower_components/bootstrap-sass/customize.html +1715 -0
  91. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.css +427 -0
  92. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.min.css +1 -0
  93. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.css +6350 -0
  94. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.min.css +1 -0
  95. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  96. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.svg +229 -0
  97. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  98. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  99. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.js +2002 -0
  100. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.min.js +9 -0
  101. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/docs.css +1195 -0
  102. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/pygments-manni.css +66 -0
  103. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  104. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
  105. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/application.js +103 -0
  106. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/customizer.js +332 -0
  107. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/filesaver.js +169 -0
  108. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/holder.js +404 -0
  109. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +12 -0
  110. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/jszip.js +1467 -0
  111. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/less.js +9 -0
  112. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/raw-files.js +3 -0
  113. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/uglify.js +14 -0
  114. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/carousel.css +148 -0
  115. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/index.html +206 -0
  116. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/grid.css +28 -0
  117. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/index.html +148 -0
  118. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/index.html +99 -0
  119. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/jumbotron.css +5 -0
  120. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/index.html +82 -0
  121. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +79 -0
  122. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/index.html +83 -0
  123. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/justified-nav.css +88 -0
  124. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/index.html +88 -0
  125. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/navbar.css +8 -0
  126. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/index.html +91 -0
  127. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +4 -0
  128. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/index.html +92 -0
  129. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +7 -0
  130. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/index.html +101 -0
  131. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/non-responsive.css +116 -0
  132. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/index.html +130 -0
  133. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.css +50 -0
  134. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.js +5 -0
  135. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
  136. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
  137. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
  138. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
  139. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
  140. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
  141. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
  142. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
  143. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
  144. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
  145. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
  146. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
  147. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
  148. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
  149. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
  150. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/index.html +50 -0
  151. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/signin.css +40 -0
  152. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/index.html +68 -0
  153. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/starter-template.css +7 -0
  154. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/index.html +55 -0
  155. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +38 -0
  156. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/index.html +91 -0
  157. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +45 -0
  158. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/index.html +384 -0
  159. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/theme.css +14 -0
  160. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
  161. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +229 -0
  162. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
  163. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
  164. data/lib/api_browser/app/bower_components/bootstrap-sass/getting-started.html +1021 -0
  165. data/lib/api_browser/app/bower_components/bootstrap-sass/index.html +16 -0
  166. data/lib/api_browser/app/bower_components/bootstrap-sass/javascript.html +1983 -0
  167. data/lib/api_browser/app/bower_components/bootstrap-sass/js/affix.js +126 -0
  168. data/lib/api_browser/app/bower_components/bootstrap-sass/js/alert.js +98 -0
  169. data/lib/api_browser/app/bower_components/bootstrap-sass/js/button.js +109 -0
  170. data/lib/api_browser/app/bower_components/bootstrap-sass/js/carousel.js +217 -0
  171. data/lib/api_browser/app/bower_components/bootstrap-sass/js/collapse.js +179 -0
  172. data/lib/api_browser/app/bower_components/bootstrap-sass/js/dropdown.js +154 -0
  173. data/lib/api_browser/app/bower_components/bootstrap-sass/js/modal.js +246 -0
  174. data/lib/api_browser/app/bower_components/bootstrap-sass/js/popover.js +117 -0
  175. data/lib/api_browser/app/bower_components/bootstrap-sass/js/scrollspy.js +158 -0
  176. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tab.js +135 -0
  177. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/index.html +52 -0
  178. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/affix.js +25 -0
  179. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/alert.js +62 -0
  180. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/button.js +116 -0
  181. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/carousel.js +87 -0
  182. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/collapse.js +164 -0
  183. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/dropdown.js +219 -0
  184. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/modal.js +196 -0
  185. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/phantom.js +69 -0
  186. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/popover.js +133 -0
  187. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/scrollspy.js +37 -0
  188. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tab.js +86 -0
  189. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tooltip.js +437 -0
  190. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/transition.js +13 -0
  191. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/jquery.js +6 -0
  192. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.css +232 -0
  193. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.js +1510 -0
  194. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tooltip.js +386 -0
  195. data/lib/api_browser/app/bower_components/bootstrap-sass/js/transition.js +56 -0
  196. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_alerts.scss +67 -0
  197. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_badges.scss +51 -0
  198. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_breadcrumbs.scss +23 -0
  199. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_button-groups.scss +253 -0
  200. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_buttons.scss +158 -0
  201. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_carousel.scss +231 -0
  202. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_close.scss +35 -0
  203. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_code.scss +53 -0
  204. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_component-animations.scss +29 -0
  205. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_dropdowns.scss +193 -0
  206. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_forms.scss +363 -0
  207. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_glyphicons.scss +237 -0
  208. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_grid.scss +93 -0
  209. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_input-groups.scss +136 -0
  210. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_jumbotron.scss +40 -0
  211. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_labels.scss +58 -0
  212. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_list-group.scss +88 -0
  213. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_media.scss +56 -0
  214. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_mixins.scss +861 -0
  215. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_modals.scss +132 -0
  216. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_navbar.scss +628 -0
  217. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_navs.scss +262 -0
  218. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_normalize.scss +406 -0
  219. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_pager.scss +55 -0
  220. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_pagination.scss +85 -0
  221. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_panels.scss +172 -0
  222. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_popovers.scss +133 -0
  223. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_print.scss +105 -0
  224. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_progress-bars.scss +92 -0
  225. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_responsive-utilities.scss +198 -0
  226. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_scaffolding.scss +119 -0
  227. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_tables.scss +244 -0
  228. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_theme.scss +247 -0
  229. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_thumbnails.scss +32 -0
  230. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_tooltip.scss +95 -0
  231. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_type.scss +279 -0
  232. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_utilities.scss +56 -0
  233. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_variables.scss +637 -0
  234. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_wells.scss +29 -0
  235. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/bootstrap.scss +49 -0
  236. data/lib/api_browser/app/bower_components/bootstrap-sass/package.json +40 -0
  237. data/lib/api_browser/app/bower_components/jquery/.bower.json +38 -0
  238. data/lib/api_browser/app/bower_components/jquery/MIT-LICENSE.txt +21 -0
  239. data/lib/api_browser/app/bower_components/jquery/bower.json +27 -0
  240. data/lib/api_browser/app/bower_components/jquery/dist/jquery.js +9190 -0
  241. data/lib/api_browser/app/bower_components/jquery/dist/jquery.min.js +5 -0
  242. data/lib/api_browser/app/bower_components/jquery/dist/jquery.min.map +1 -0
  243. data/lib/api_browser/app/bower_components/jquery/src/ajax/jsonp.js +89 -0
  244. data/lib/api_browser/app/bower_components/jquery/src/ajax/load.js +75 -0
  245. data/lib/api_browser/app/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  246. data/lib/api_browser/app/bower_components/jquery/src/ajax/parseXML.js +28 -0
  247. data/lib/api_browser/app/bower_components/jquery/src/ajax/script.js +64 -0
  248. data/lib/api_browser/app/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  249. data/lib/api_browser/app/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  250. data/lib/api_browser/app/bower_components/jquery/src/ajax/xhr.js +135 -0
  251. data/lib/api_browser/app/bower_components/jquery/src/ajax.js +806 -0
  252. data/lib/api_browser/app/bower_components/jquery/src/attributes/attr.js +143 -0
  253. data/lib/api_browser/app/bower_components/jquery/src/attributes/classes.js +158 -0
  254. data/lib/api_browser/app/bower_components/jquery/src/attributes/prop.js +96 -0
  255. data/lib/api_browser/app/bower_components/jquery/src/attributes/support.js +35 -0
  256. data/lib/api_browser/app/bower_components/jquery/src/attributes/val.js +163 -0
  257. data/lib/api_browser/app/bower_components/jquery/src/attributes.js +11 -0
  258. data/lib/api_browser/app/bower_components/jquery/src/callbacks.js +205 -0
  259. data/lib/api_browser/app/bower_components/jquery/src/core/access.js +60 -0
  260. data/lib/api_browser/app/bower_components/jquery/src/core/init.js +123 -0
  261. data/lib/api_browser/app/bower_components/jquery/src/core/parseHTML.js +39 -0
  262. data/lib/api_browser/app/bower_components/jquery/src/core/ready.js +97 -0
  263. data/lib/api_browser/app/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  264. data/lib/api_browser/app/bower_components/jquery/src/core.js +498 -0
  265. data/lib/api_browser/app/bower_components/jquery/src/css/addGetHookIf.js +24 -0
  266. data/lib/api_browser/app/bower_components/jquery/src/css/curCSS.js +57 -0
  267. data/lib/api_browser/app/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  268. data/lib/api_browser/app/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  269. data/lib/api_browser/app/bower_components/jquery/src/css/support.js +91 -0
  270. data/lib/api_browser/app/bower_components/jquery/src/css/swap.js +28 -0
  271. data/lib/api_browser/app/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  272. data/lib/api_browser/app/bower_components/jquery/src/css/var/getStyles.js +5 -0
  273. data/lib/api_browser/app/bower_components/jquery/src/css/var/isHidden.js +13 -0
  274. data/lib/api_browser/app/bower_components/jquery/src/css/var/rmargin.js +3 -0
  275. data/lib/api_browser/app/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  276. data/lib/api_browser/app/bower_components/jquery/src/css.js +451 -0
  277. data/lib/api_browser/app/bower_components/jquery/src/data/Data.js +181 -0
  278. data/lib/api_browser/app/bower_components/jquery/src/data/accepts.js +20 -0
  279. data/lib/api_browser/app/bower_components/jquery/src/data/var/data_priv.js +5 -0
  280. data/lib/api_browser/app/bower_components/jquery/src/data/var/data_user.js +5 -0
  281. data/lib/api_browser/app/bower_components/jquery/src/data.js +179 -0
  282. data/lib/api_browser/app/bower_components/jquery/src/deferred.js +149 -0
  283. data/lib/api_browser/app/bower_components/jquery/src/deprecated.js +13 -0
  284. data/lib/api_browser/app/bower_components/jquery/src/dimensions.js +50 -0
  285. data/lib/api_browser/app/bower_components/jquery/src/effects/Tween.js +114 -0
  286. data/lib/api_browser/app/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  287. data/lib/api_browser/app/bower_components/jquery/src/effects.js +649 -0
  288. data/lib/api_browser/app/bower_components/jquery/src/event/alias.js +39 -0
  289. data/lib/api_browser/app/bower_components/jquery/src/event/support.js +9 -0
  290. data/lib/api_browser/app/bower_components/jquery/src/event.js +868 -0
  291. data/lib/api_browser/app/bower_components/jquery/src/exports/amd.js +24 -0
  292. data/lib/api_browser/app/bower_components/jquery/src/exports/global.js +32 -0
  293. data/lib/api_browser/app/bower_components/jquery/src/intro.js +44 -0
  294. data/lib/api_browser/app/bower_components/jquery/src/jquery.js +36 -0
  295. data/lib/api_browser/app/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  296. data/lib/api_browser/app/bower_components/jquery/src/manipulation/support.js +31 -0
  297. data/lib/api_browser/app/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  298. data/lib/api_browser/app/bower_components/jquery/src/manipulation.js +582 -0
  299. data/lib/api_browser/app/bower_components/jquery/src/offset.js +204 -0
  300. data/lib/api_browser/app/bower_components/jquery/src/outro.js +1 -0
  301. data/lib/api_browser/app/bower_components/jquery/src/queue/delay.js +22 -0
  302. data/lib/api_browser/app/bower_components/jquery/src/queue.js +142 -0
  303. data/lib/api_browser/app/bower_components/jquery/src/selector-native.js +172 -0
  304. data/lib/api_browser/app/bower_components/jquery/src/selector-sizzle.js +14 -0
  305. data/lib/api_browser/app/bower_components/jquery/src/selector.js +1 -0
  306. data/lib/api_browser/app/bower_components/jquery/src/serialize.js +111 -0
  307. data/lib/api_browser/app/bower_components/jquery/src/sizzle/dist/sizzle.js +2044 -0
  308. data/lib/api_browser/app/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  309. data/lib/api_browser/app/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  310. data/lib/api_browser/app/bower_components/jquery/src/traversing/findFilter.js +100 -0
  311. data/lib/api_browser/app/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  312. data/lib/api_browser/app/bower_components/jquery/src/traversing.js +200 -0
  313. data/lib/api_browser/app/bower_components/jquery/src/var/arr.js +3 -0
  314. data/lib/api_browser/app/bower_components/jquery/src/var/class2type.js +4 -0
  315. data/lib/api_browser/app/bower_components/jquery/src/var/concat.js +5 -0
  316. data/lib/api_browser/app/bower_components/jquery/src/var/hasOwn.js +5 -0
  317. data/lib/api_browser/app/bower_components/jquery/src/var/indexOf.js +5 -0
  318. data/lib/api_browser/app/bower_components/jquery/src/var/pnum.js +3 -0
  319. data/lib/api_browser/app/bower_components/jquery/src/var/push.js +5 -0
  320. data/lib/api_browser/app/bower_components/jquery/src/var/rnotwhite.js +3 -0
  321. data/lib/api_browser/app/bower_components/jquery/src/var/slice.js +5 -0
  322. data/lib/api_browser/app/bower_components/jquery/src/var/strundefined.js +3 -0
  323. data/lib/api_browser/app/bower_components/jquery/src/var/support.js +4 -0
  324. data/lib/api_browser/app/bower_components/jquery/src/var/toString.js +5 -0
  325. data/lib/api_browser/app/bower_components/jquery/src/wrap.js +78 -0
  326. data/lib/api_browser/app/bower_components/lodash/.bower.json +34 -0
  327. data/lib/api_browser/app/bower_components/lodash/LICENSE.txt +22 -0
  328. data/lib/api_browser/app/bower_components/lodash/bower.json +23 -0
  329. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.js +7157 -0
  330. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.min.js +61 -0
  331. data/lib/api_browser/app/bower_components/lodash/dist/lodash.js +6785 -0
  332. data/lib/api_browser/app/bower_components/lodash/dist/lodash.min.js +56 -0
  333. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.js +4979 -0
  334. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.min.js +39 -0
  335. data/lib/api_browser/app/css/main.css +4510 -0
  336. data/lib/api_browser/app/index.html +51 -0
  337. data/lib/api_browser/app/js/app.js +32 -0
  338. data/lib/api_browser/app/js/controllers/action.js +51 -0
  339. data/lib/api_browser/app/js/controllers/controller.js +10 -0
  340. data/lib/api_browser/app/js/controllers/menu.js +49 -0
  341. data/lib/api_browser/app/js/controllers/type.js +28 -0
  342. data/lib/api_browser/app/js/directives/attribute_description.js +43 -0
  343. data/lib/api_browser/app/js/directives/attribute_table.js +27 -0
  344. data/lib/api_browser/app/js/directives/attribute_table_row.js +17 -0
  345. data/lib/api_browser/app/js/directives/no_container.js +8 -0
  346. data/lib/api_browser/app/js/directives/request_body.js +25 -0
  347. data/lib/api_browser/app/js/directives/request_headers.js +20 -0
  348. data/lib/api_browser/app/js/directives/request_parameters.js +20 -0
  349. data/lib/api_browser/app/js/directives/type_label.js +53 -0
  350. data/lib/api_browser/app/js/factories/Documentation.js +16 -0
  351. data/lib/api_browser/app/js/factories/PayloadTemplates.js +10 -0
  352. data/lib/api_browser/app/js/factories/TemplateProvider.js +45 -0
  353. data/lib/api_browser/app/js/factories/TypeTemplates.js +11 -0
  354. data/lib/api_browser/app/js/filters/attribute_name.js +9 -0
  355. data/lib/api_browser/app/js/filters/friendly_json.js +5 -0
  356. data/lib/api_browser/app/js/filters/is_empty.js +8 -0
  357. data/lib/api_browser/app/js/filters/resource_name.js +5 -0
  358. data/lib/api_browser/app/sass/main.scss +59 -0
  359. data/lib/api_browser/app/sass/modules/_body.scss +11 -0
  360. data/lib/api_browser/app/sass/modules/_cloke.scss +8 -0
  361. data/lib/api_browser/app/sass/modules/_header.scss +15 -0
  362. data/lib/api_browser/app/sass/modules/_nav.scss +7 -0
  363. data/lib/api_browser/app/sass/modules/_sidebar.scss +26 -0
  364. data/lib/api_browser/app/sass/modules/_switch.scss +55 -0
  365. data/lib/api_browser/app/sass/modules/_table.scss +13 -0
  366. data/lib/api_browser/app/sass/variables/_bootstrap-variables.scss +762 -0
  367. data/lib/api_browser/app/views/action.html +83 -0
  368. data/lib/api_browser/app/views/controller.html +24 -0
  369. data/lib/api_browser/app/views/directives/attribute_description/_default.html +2 -0
  370. data/lib/api_browser/app/views/directives/attribute_description/_example.html +8 -0
  371. data/lib/api_browser/app/views/directives/attribute_description/_headers.html +8 -0
  372. data/lib/api_browser/app/views/directives/attribute_description.html +2 -0
  373. data/lib/api_browser/app/views/directives/attribute_table.html +23 -0
  374. data/lib/api_browser/app/views/directives/attribute_table_row/_default.html +10 -0
  375. data/lib/api_browser/app/views/directives/attribute_table_row/_links.html +10 -0
  376. data/lib/api_browser/app/views/directives/attribute_table_row/_struct.html +2 -0
  377. data/lib/api_browser/app/views/directives/request_body/_default.html +20 -0
  378. data/lib/api_browser/app/views/directives/request_body/_struct.html +1 -0
  379. data/lib/api_browser/app/views/home.html +7 -0
  380. data/lib/api_browser/app/views/layout.html +50 -0
  381. data/lib/api_browser/app/views/resource/_actions.html +23 -0
  382. data/lib/api_browser/app/views/type/_details.html +29 -0
  383. data/lib/api_browser/app/views/type.html +25 -0
  384. data/lib/api_browser/bower.json +26 -0
  385. data/lib/api_browser/package.json +30 -0
  386. data/lib/praxis/action_definition/headers_dsl_compiler.rb +36 -0
  387. data/lib/praxis/action_definition.rb +153 -0
  388. data/lib/praxis/api_definition.rb +59 -0
  389. data/lib/praxis/application.rb +65 -0
  390. data/lib/praxis/bootloader.rb +91 -0
  391. data/lib/praxis/bootloader_stages/environment.rb +57 -0
  392. data/lib/praxis/bootloader_stages/file_loader.rb +31 -0
  393. data/lib/praxis/bootloader_stages/routing.rb +34 -0
  394. data/lib/praxis/bootloader_stages/subgroup_loader.rb +27 -0
  395. data/lib/praxis/bootloader_stages/warn_unloaded_files.rb +40 -0
  396. data/lib/praxis/config.rb +92 -0
  397. data/lib/praxis/content_type_parser.rb +62 -0
  398. data/lib/praxis/controller.rb +59 -0
  399. data/lib/praxis/dispatcher.rb +102 -0
  400. data/lib/praxis/exception.rb +4 -0
  401. data/lib/praxis/exceptions/config.rb +6 -0
  402. data/lib/praxis/exceptions/config_load.rb +9 -0
  403. data/lib/praxis/exceptions/config_validation.rb +9 -0
  404. data/lib/praxis/exceptions/invalid_configuration.rb +6 -0
  405. data/lib/praxis/exceptions/invalid_response.rb +6 -0
  406. data/lib/praxis/exceptions/invalid_trait.rb +6 -0
  407. data/lib/praxis/exceptions/stage_not_found.rb +6 -0
  408. data/lib/praxis/exceptions/validation.rb +6 -0
  409. data/lib/praxis/file_group.rb +39 -0
  410. data/lib/praxis/links.rb +110 -0
  411. data/lib/praxis/media_type.rb +40 -0
  412. data/lib/praxis/media_type_collection.rb +120 -0
  413. data/lib/praxis/multipart/parser.rb +213 -0
  414. data/lib/praxis/multipart/part.rb +26 -0
  415. data/lib/praxis/plugin.rb +30 -0
  416. data/lib/praxis/request.rb +131 -0
  417. data/lib/praxis/request_stages/action.rb +20 -0
  418. data/lib/praxis/request_stages/load_request.rb +13 -0
  419. data/lib/praxis/request_stages/request_stage.rb +52 -0
  420. data/lib/praxis/request_stages/response.rb +26 -0
  421. data/lib/praxis/request_stages/validate.rb +20 -0
  422. data/lib/praxis/request_stages/validate_params_and_headers.rb +38 -0
  423. data/lib/praxis/request_stages/validate_payload.rb +32 -0
  424. data/lib/praxis/resource_definition.rb +89 -0
  425. data/lib/praxis/response.rb +107 -0
  426. data/lib/praxis/response_definition.rb +264 -0
  427. data/lib/praxis/response_template.rb +34 -0
  428. data/lib/praxis/responses/http.rb +166 -0
  429. data/lib/praxis/responses/validation_error.rb +36 -0
  430. data/lib/praxis/route.rb +27 -0
  431. data/lib/praxis/router.rb +89 -0
  432. data/lib/praxis/simple_media_type.rb +24 -0
  433. data/lib/praxis/skeletor/restful_routing_config.rb +45 -0
  434. data/lib/praxis/stage.rb +94 -0
  435. data/lib/praxis/tasks/api_docs.rb +336 -0
  436. data/lib/praxis/tasks/console.rb +11 -0
  437. data/lib/praxis/tasks/environment.rb +5 -0
  438. data/lib/praxis/tasks/routes.rb +45 -0
  439. data/lib/praxis/tasks.rb +4 -0
  440. data/lib/praxis/types/collection.rb +17 -0
  441. data/lib/praxis/types/multipart.rb +69 -0
  442. data/lib/praxis/version.rb +3 -0
  443. data/lib/praxis.rb +119 -1
  444. data/praxis.gemspec +50 -0
  445. data/spec/functional_spec.rb +186 -0
  446. data/spec/praxis/action_definition_spec.rb +134 -0
  447. data/spec/praxis/api_resource_spec.rb +0 -0
  448. data/spec/praxis/application_spec.rb +46 -0
  449. data/spec/praxis/bootloader_spec.rb +58 -0
  450. data/spec/praxis/config_spec.rb +118 -0
  451. data/spec/praxis/content_type_parser_spec.rb +91 -0
  452. data/spec/praxis/controller_spec.rb +73 -0
  453. data/spec/praxis/dispatcher_spec.rb +0 -0
  454. data/spec/praxis/file_group_spec.rb +34 -0
  455. data/spec/praxis/links_spec.rb +45 -0
  456. data/spec/praxis/media_type_collection_spec.rb +145 -0
  457. data/spec/praxis/media_type_spec.rb +80 -0
  458. data/spec/praxis/multipart/parser_spec.rb +54 -0
  459. data/spec/praxis/request_spec.rb +109 -0
  460. data/spec/praxis/request_stages_validate_spec.rb +34 -0
  461. data/spec/praxis/resource_definition_spec.rb +116 -0
  462. data/spec/praxis/response_definition_spec.rb +500 -0
  463. data/spec/praxis/response_spec.rb +166 -0
  464. data/spec/praxis/restful_routing_config_spec.rb +88 -0
  465. data/spec/praxis/route_spec.rb +42 -0
  466. data/spec/praxis/router_spec.rb +148 -0
  467. data/spec/praxis/stage_spec.rb +110 -0
  468. data/spec/praxis/types/multipart_spec.rb +81 -0
  469. data/spec/spec_app/app/controllers/instances.rb +63 -0
  470. data/spec/spec_app/app/responses/bulk_response.rb +6 -0
  471. data/spec/spec_app/app/responses/multipart.rb +10 -0
  472. data/spec/spec_app/app/responses/other_response.rb +6 -0
  473. data/spec/spec_app/config/environment.rb +17 -0
  474. data/spec/spec_app/config.ru +17 -0
  475. data/spec/spec_app/design/api.rb +27 -0
  476. data/spec/spec_app/design/media_types/instance.rb +35 -0
  477. data/spec/spec_app/design/media_types/volume.rb +34 -0
  478. data/spec/spec_app/design/media_types/volume_snapshot.rb +38 -0
  479. data/spec/spec_app/design/resources/instances.rb +161 -0
  480. data/spec/spec_helper.rb +39 -0
  481. data/spec/support/spec_media_types.rb +46 -0
  482. data/spec/support/spec_resource_definitions.rb +33 -0
  483. data/tasks/praxis_app_generator.thor +307 -0
  484. metadata +847 -12
@@ -0,0 +1,861 @@
1
+ //
2
+ // Mixins
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Utilities
7
+ // -------------------------
8
+
9
+ // Clearfix
10
+ // Source: http://nicolasgallagher.com/micro-clearfix-hack/
11
+ //
12
+ // For modern browsers
13
+ // 1. The space content is one way to avoid an Opera bug when the
14
+ // contenteditable attribute is included anywhere else in the document.
15
+ // Otherwise it causes space to appear at the top and bottom of elements
16
+ // that are clearfixed.
17
+ // 2. The use of `table` rather than `block` is only necessary if using
18
+ // `:before` to contain the top-margins of child elements.
19
+ @mixin clearfix() {
20
+ &:before,
21
+ &:after {
22
+ content: " "; /* 1 */
23
+ display: table; /* 2 */
24
+ }
25
+ &:after {
26
+ clear: both;
27
+ }
28
+ }
29
+
30
+ // WebKit-style focus
31
+ @mixin tab-focus() {
32
+ // Default
33
+ outline: thin dotted #333;
34
+ // WebKit
35
+ outline: 5px auto -webkit-focus-ring-color;
36
+ outline-offset: -2px;
37
+ }
38
+
39
+ // Center-align a block level element
40
+ @mixin center-block() {
41
+ display: block;
42
+ margin-left: auto;
43
+ margin-right: auto;
44
+ }
45
+
46
+ // Sizing shortcuts
47
+ @mixin size($width, $height) {
48
+ width: $width;
49
+ height: $height;
50
+ }
51
+ @mixin square($size) {
52
+ @include size($size, $size);
53
+ }
54
+
55
+ // Placeholder text
56
+ @mixin placeholder($color: $input-color-placeholder) {
57
+ &:-moz-placeholder { color: $color; } // Firefox 4-18
58
+ &::-moz-placeholder { color: $color; } // Firefox 19+
59
+ &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
60
+ &::-webkit-input-placeholder { color: $color; } // Safari and Chrome
61
+ }
62
+
63
+ // Text overflow
64
+ // Requires inline-block or block for proper styling
65
+ @mixin text-overflow() {
66
+ overflow: hidden;
67
+ text-overflow: ellipsis;
68
+ white-space: nowrap;
69
+ }
70
+
71
+ // CSS image replacement
72
+ //
73
+ // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for
74
+ // mixins being reused as classes with the same name, this doesn't hold up. As
75
+ // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note
76
+ // that we cannot chain the mixins together in Less, so they are repeated.
77
+ //
78
+ // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
79
+
80
+ // Deprecated as of v3.0.1 (will be removed in v4)
81
+ @mixin hide-text() {
82
+ font: #{0/0} a;
83
+ color: transparent;
84
+ text-shadow: none;
85
+ background-color: transparent;
86
+ border: 0;
87
+ }
88
+ // New mixin to use as of v3.0.1
89
+ @mixin text-hide() {
90
+ font: #{0/0} a;
91
+ color: transparent;
92
+ text-shadow: none;
93
+ background-color: transparent;
94
+ border: 0;
95
+ }
96
+
97
+
98
+
99
+ // CSS3 PROPERTIES
100
+ // --------------------------------------------------
101
+
102
+ // Single side border-radius
103
+ @mixin border-top-radius($radius) {
104
+ border-top-right-radius: $radius;
105
+ border-top-left-radius: $radius;
106
+ }
107
+ @mixin border-right-radius($radius) {
108
+ border-bottom-right-radius: $radius;
109
+ border-top-right-radius: $radius;
110
+ }
111
+ @mixin border-bottom-radius($radius) {
112
+ border-bottom-right-radius: $radius;
113
+ border-bottom-left-radius: $radius;
114
+ }
115
+ @mixin border-left-radius($radius) {
116
+ border-bottom-left-radius: $radius;
117
+ border-top-left-radius: $radius;
118
+ }
119
+
120
+ // Drop shadows
121
+ @mixin box-shadow($shadow...) {
122
+ -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
123
+ box-shadow: $shadow;
124
+ }
125
+
126
+ // Transitions
127
+ @mixin transition($transition...) {
128
+ -webkit-transition: $transition;
129
+ transition: $transition;
130
+ }
131
+ @mixin transition-property($transition-property) {
132
+ -webkit-transition-property: $transition-property;
133
+ transition-property: $transition-property;
134
+ }
135
+ @mixin transition-delay($transition-delay) {
136
+ -webkit-transition-delay: $transition-delay;
137
+ transition-delay: $transition-delay;
138
+ }
139
+ @mixin transition-duration($transition-duration) {
140
+ -webkit-transition-duration: $transition-duration;
141
+ transition-duration: $transition-duration;
142
+ }
143
+ @mixin transition-transform($transition...) {
144
+ -webkit-transition: -webkit-transform $transition;
145
+ -moz-transition: -moz-transform $transition;
146
+ -o-transition: -o-transform $transition;
147
+ transition: transform $transition;
148
+ }
149
+
150
+ // Transformations
151
+ @mixin rotate($degrees) {
152
+ -webkit-transform: rotate($degrees);
153
+ -ms-transform: rotate($degrees); // IE9+
154
+ transform: rotate($degrees);
155
+ }
156
+ @mixin scale($ratio) {
157
+ -webkit-transform: scale($ratio);
158
+ -ms-transform: scale($ratio); // IE9+
159
+ transform: scale($ratio);
160
+ }
161
+ @mixin translate($x, $y) {
162
+ -webkit-transform: translate($x, $y);
163
+ -ms-transform: translate($x, $y); // IE9+
164
+ transform: translate($x, $y);
165
+ }
166
+ @mixin skew($x, $y) {
167
+ -webkit-transform: skew($x, $y);
168
+ -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
169
+ transform: skew($x, $y);
170
+ }
171
+ @mixin translate3d($x, $y, $z) {
172
+ -webkit-transform: translate3d($x, $y, $z);
173
+ transform: translate3d($x, $y, $z);
174
+ }
175
+
176
+ @mixin rotateX($degrees) {
177
+ -webkit-transform: rotateX($degrees);
178
+ -ms-transform: rotateX($degrees); // IE9+
179
+ transform: rotateX($degrees);
180
+ }
181
+ @mixin rotateY($degrees) {
182
+ -webkit-transform: rotateY($degrees);
183
+ -ms-transform: rotateY($degrees); // IE9+
184
+ transform: rotateY($degrees);
185
+ }
186
+ @mixin perspective($perspective) {
187
+ -webkit-perspective: $perspective;
188
+ -moz-perspective: $perspective;
189
+ perspective: $perspective;
190
+ }
191
+ @mixin perspective-origin($perspective) {
192
+ -webkit-perspective-origin: $perspective;
193
+ -moz-perspective-origin: $perspective;
194
+ perspective-origin: $perspective;
195
+ }
196
+ @mixin transform-origin($origin) {
197
+ -webkit-transform-origin: $origin;
198
+ -moz-transform-origin: $origin;
199
+ transform-origin: $origin;
200
+ }
201
+
202
+ // Animations
203
+ @mixin animation($animation) {
204
+ -webkit-animation: $animation;
205
+ animation: $animation;
206
+ }
207
+
208
+ // Backface visibility
209
+ // Prevent browsers from flickering when using CSS 3D transforms.
210
+ // Default value is `visible`, but can be changed to `hidden`
211
+ @mixin backface-visibility($visibility){
212
+ -webkit-backface-visibility: $visibility;
213
+ -moz-backface-visibility: $visibility;
214
+ backface-visibility: $visibility;
215
+ }
216
+
217
+ // Box sizing
218
+ @mixin box-sizing($boxmodel) {
219
+ -webkit-box-sizing: $boxmodel;
220
+ -moz-box-sizing: $boxmodel;
221
+ box-sizing: $boxmodel;
222
+ }
223
+
224
+ // User select
225
+ // For selecting text on the page
226
+ @mixin user-select($select) {
227
+ -webkit-user-select: $select;
228
+ -moz-user-select: $select;
229
+ -ms-user-select: $select; // IE10+
230
+ -o-user-select: $select;
231
+ user-select: $select;
232
+ }
233
+
234
+ // Resize anything
235
+ @mixin resizable($direction) {
236
+ resize: $direction; // Options: horizontal, vertical, both
237
+ overflow: auto; // Safari fix
238
+ }
239
+
240
+ // CSS3 Content Columns
241
+ @mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
242
+ -webkit-column-count: $column-count;
243
+ -moz-column-count: $column-count;
244
+ column-count: $column-count;
245
+ -webkit-column-gap: $column-gap;
246
+ -moz-column-gap: $column-gap;
247
+ column-gap: $column-gap;
248
+ }
249
+
250
+ // Optional hyphenation
251
+ @mixin hyphens($mode: auto) {
252
+ word-wrap: break-word;
253
+ -webkit-hyphens: $mode;
254
+ -moz-hyphens: $mode;
255
+ -ms-hyphens: $mode; // IE10+
256
+ -o-hyphens: $mode;
257
+ hyphens: $mode;
258
+ }
259
+
260
+ // Opacity
261
+ @mixin opacity($opacity) {
262
+ opacity: $opacity;
263
+ // IE8 filter
264
+ $opacity-ie: ($opacity * 100);
265
+ filter: #{alpha(opacity=$opacity-ie)};
266
+ }
267
+
268
+
269
+
270
+ // GRADIENTS
271
+ // --------------------------------------------------
272
+
273
+
274
+
275
+ // Horizontal gradient, from left to right
276
+ //
277
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
278
+ // Color stops are not available in IE9 and below.
279
+ @mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
280
+ background-image: -webkit-gradient(linear, $start-percent top, $end-percent top, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
281
+ background-image: -webkit-linear-gradient(left, color-stop($start-color $start-percent), color-stop($end-color $end-percent)); // Safari 5.1+, Chrome 10+
282
+ background-image: -moz-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
283
+ background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
284
+ background-repeat: repeat-x;
285
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
286
+ }
287
+
288
+ // Vertical gradient, from top to bottom
289
+ //
290
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
291
+ // Color stops are not available in IE9 and below.
292
+ @mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
293
+ background-image: -webkit-gradient(linear, left $start-percent, left $end-percent, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
294
+ background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1+, Chrome 10+
295
+ background-image: -moz-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
296
+ background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
297
+ background-repeat: repeat-x;
298
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
299
+ }
300
+
301
+ @mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
302
+ background-repeat: repeat-x;
303
+ background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1+, Chrome 10+
304
+ background-image: -moz-linear-gradient($deg, $start-color, $end-color); // FF 3.6+
305
+ background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10
306
+ }
307
+ @mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
308
+ background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
309
+ background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
310
+ background-image: -moz-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
311
+ background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
312
+ background-repeat: no-repeat;
313
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
314
+ }
315
+ @mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
316
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
317
+ background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
318
+ background-image: -moz-linear-gradient(top, $start-color, $mid-color $color-stop, $end-color);
319
+ background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
320
+ background-repeat: no-repeat;
321
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
322
+ }
323
+ @mixin gradient-radial($inner-color: #555, $outer-color: #333) {
324
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from($inner-color), to($outer-color));
325
+ background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
326
+ background-image: -moz-radial-gradient(circle, $inner-color, $outer-color);
327
+ background-image: radial-gradient(circle, $inner-color, $outer-color);
328
+ background-repeat: no-repeat;
329
+ }
330
+ @mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {
331
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, $color), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, $color), color-stop(.75, $color), color-stop(.75, transparent), to(transparent));
332
+ background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
333
+ background-image: -moz-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
334
+ background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
335
+ }
336
+
337
+ // Reset filters for IE
338
+ //
339
+ // When you need to remove a gradient background, do not forget to use this to reset
340
+ // the IE filter for IE9 and below.
341
+ @mixin reset-filter() {
342
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
343
+ }
344
+
345
+
346
+
347
+ // Retina images
348
+ //
349
+ // Short retina mixin for setting background-image and -size
350
+
351
+ @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
352
+ background-image: image-url("#{$file-1x}");
353
+
354
+ @media
355
+ only screen and (-webkit-min-device-pixel-ratio: 2),
356
+ only screen and ( min--moz-device-pixel-ratio: 2),
357
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
358
+ only screen and ( min-device-pixel-ratio: 2),
359
+ only screen and ( min-resolution: 192dpi),
360
+ only screen and ( min-resolution: 2dppx) {
361
+ background-image: image-url("#{$file-2x}");
362
+ background-size: $width-1x $height-1x;
363
+ }
364
+ }
365
+
366
+
367
+ // Responsive image
368
+ //
369
+ // Keep images from scaling beyond the width of their parents.
370
+
371
+ @mixin img-responsive($display: block) {
372
+ display: $display;
373
+ max-width: 100%; // Part 1: Set a maximum relative to the parent
374
+ height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
375
+ }
376
+
377
+
378
+ // COMPONENT MIXINS
379
+ // --------------------------------------------------
380
+
381
+ // Horizontal dividers
382
+ // -------------------------
383
+ // Dividers (basically an hr) within dropdowns and nav lists
384
+ @mixin nav-divider($color: #e5e5e5) {
385
+ height: 1px;
386
+ margin: (($line-height-computed / 2) - 1) 0;
387
+ overflow: hidden;
388
+ background-color: $color;
389
+ }
390
+
391
+ // Panels
392
+ // -------------------------
393
+ @mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
394
+ border-color: $border;
395
+
396
+ & > .panel-heading {
397
+ color: $heading-text-color;
398
+ background-color: $heading-bg-color;
399
+ border-color: $heading-border;
400
+
401
+ + .panel-collapse .panel-body {
402
+ border-top-color: $border;
403
+ }
404
+ & > .dropdown .caret {
405
+ border-color: $heading-text-color transparent;
406
+ }
407
+ }
408
+ & > .panel-footer {
409
+ + .panel-collapse .panel-body {
410
+ border-bottom-color: $border;
411
+ }
412
+ }
413
+ }
414
+
415
+ // Alerts
416
+ // -------------------------
417
+ @mixin alert-variant($background, $border, $text-color) {
418
+ background-color: $background;
419
+ border-color: $border;
420
+ color: $text-color;
421
+
422
+ hr {
423
+ border-top-color: darken($border, 5%);
424
+ }
425
+ .alert-link {
426
+ color: darken($text-color, 10%);
427
+ }
428
+ }
429
+
430
+ // Tables
431
+ // -------------------------
432
+ @mixin table-row-variant($state, $background, $border) {
433
+ // Exact selectors below required to override `.table-striped` and prevent
434
+ // inheritance to nested tables.
435
+ .table > thead > tr,
436
+ .table > tbody > tr,
437
+ .table > tfoot > tr {
438
+ > td.#{$state},
439
+ > th.#{$state},
440
+ &.#{$state} > td,
441
+ &.#{$state} > th {
442
+ background-color: $background;
443
+ }
444
+ }
445
+
446
+ // Hover states for `.table-hover`
447
+ // Note: this is not available for cells or rows within `thead` or `tfoot`.
448
+ .table-hover > tbody > tr {
449
+ > td.#{$state}:hover,
450
+ > th.#{$state}:hover,
451
+ &.#{$state}:hover > td,
452
+ &.#{$state}:hover > th {
453
+ background-color: darken($background, 5%);
454
+ }
455
+ }
456
+ }
457
+
458
+ // Button variants
459
+ // -------------------------
460
+ // Easily pump out default styles, as well as :hover, :focus, :active,
461
+ // and disabled options for all buttons
462
+ @mixin button-variant($color, $background, $border) {
463
+ color: $color;
464
+ background-color: $background;
465
+ border-color: $border;
466
+
467
+ &:hover,
468
+ &:focus,
469
+ &:active,
470
+ &.active {
471
+ color: $color;
472
+ background-color: darken($background, 8%);
473
+ border-color: darken($border, 12%);
474
+ }
475
+ .open & { &.dropdown-toggle {
476
+ color: $color;
477
+ background-color: darken($background, 8%);
478
+ border-color: darken($border, 12%);
479
+ } }
480
+ &:active,
481
+ &.active {
482
+ background-image: none;
483
+ }
484
+ .open & { &.dropdown-toggle {
485
+ background-image: none;
486
+ } }
487
+ &.disabled,
488
+ &[disabled],
489
+ fieldset[disabled] & {
490
+ &,
491
+ &:hover,
492
+ &:focus,
493
+ &:active,
494
+ &.active {
495
+ background-color: $background;
496
+ border-color: $border;
497
+ }
498
+ }
499
+ }
500
+
501
+ // Button sizes
502
+ // -------------------------
503
+ @mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
504
+ padding: $padding-vertical $padding-horizontal;
505
+ font-size: $font-size;
506
+ line-height: $line-height;
507
+ border-radius: $border-radius;
508
+ }
509
+
510
+ // Pagination
511
+ // -------------------------
512
+ @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) {
513
+ > li {
514
+ > a,
515
+ > span {
516
+ padding: $padding-vertical $padding-horizontal;
517
+ font-size: $font-size;
518
+ }
519
+ &:first-child {
520
+ > a,
521
+ > span {
522
+ @include border-left-radius($border-radius);
523
+ }
524
+ }
525
+ &:last-child {
526
+ > a,
527
+ > span {
528
+ @include border-right-radius($border-radius);
529
+ }
530
+ }
531
+ }
532
+ }
533
+
534
+ // Labels
535
+ // -------------------------
536
+ @mixin label-variant($color) {
537
+ background-color: $color;
538
+ &[href] {
539
+ &:hover,
540
+ &:focus {
541
+ background-color: darken($color, 10%);
542
+ }
543
+ }
544
+ }
545
+
546
+ // Navbar vertical align
547
+ // -------------------------
548
+ // Vertically center elements in the navbar.
549
+ // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
550
+ @mixin navbar-vertical-align($element-height) {
551
+ margin-top: (($navbar-height - $element-height) / 2);
552
+ margin-bottom: (($navbar-height - $element-height) / 2);
553
+ }
554
+
555
+ // Progress bars
556
+ // -------------------------
557
+ @mixin progress-bar-variant($color) {
558
+ background-color: $color;
559
+ .progress-striped & {
560
+ @include gradient-striped();
561
+ }
562
+ }
563
+
564
+ // Responsive utilities
565
+ // -------------------------
566
+ // More easily include all the states for responsive-utilities.less.
567
+ // [converter] $parent hack
568
+ @mixin responsive-visibility($parent) {
569
+ #{$parent} { display: block !important; }
570
+ tr#{$parent} { display: table-row !important; }
571
+ th#{$parent},
572
+ td#{$parent} { display: table-cell !important; }
573
+ }
574
+
575
+ // [converter] $parent hack
576
+ @mixin responsive-invisibility($parent) {
577
+ #{$parent},
578
+ tr#{$parent},
579
+ th#{$parent},
580
+ td#{$parent} { display: none !important; }
581
+ }
582
+
583
+
584
+ // Grid System
585
+ // -----------
586
+
587
+ // Centered container element
588
+ @mixin container-fixed() {
589
+ margin-right: auto;
590
+ margin-left: auto;
591
+ padding-left: ($grid-gutter-width / 2);
592
+ padding-right: ($grid-gutter-width / 2);
593
+ @include clearfix();
594
+ }
595
+
596
+ // Creates a wrapper for a series of columns
597
+ @mixin make-row($gutter: $grid-gutter-width) {
598
+ margin-left: ($gutter / -2);
599
+ margin-right: ($gutter / -2);
600
+ @include clearfix();
601
+ }
602
+
603
+ // Generate the extra small columns
604
+ @mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
605
+ position: relative;
606
+ float: left;
607
+ width: percentage(($columns / $grid-columns));
608
+ // Prevent columns from collapsing when empty
609
+ min-height: 1px;
610
+ // Inner gutter via padding
611
+ padding-left: ($gutter / 2);
612
+ padding-right: ($gutter / 2);
613
+ }
614
+
615
+ // Generate the small columns
616
+ @mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
617
+ position: relative;
618
+ // Prevent columns from collapsing when empty
619
+ min-height: 1px;
620
+ // Inner gutter via padding
621
+ padding-left: ($gutter / 2);
622
+ padding-right: ($gutter / 2);
623
+
624
+ // Calculate width based on number of columns available
625
+ @media (min-width: $screen-sm-min) {
626
+ float: left;
627
+ width: percentage(($columns / $grid-columns));
628
+ }
629
+ }
630
+
631
+ // Generate the small column offsets
632
+ @mixin make-sm-column-offset($columns) {
633
+ @media (min-width: $screen-sm-min) {
634
+ margin-left: percentage(($columns / $grid-columns));
635
+ }
636
+ }
637
+ @mixin make-sm-column-push($columns) {
638
+ @media (min-width: $screen-sm-min) {
639
+ left: percentage(($columns / $grid-columns));
640
+ }
641
+ }
642
+ @mixin make-sm-column-pull($columns) {
643
+ @media (min-width: $screen-sm-min) {
644
+ right: percentage(($columns / $grid-columns));
645
+ }
646
+ }
647
+
648
+ // Generate the medium columns
649
+ @mixin make-md-column($columns, $gutter: $grid-gutter-width) {
650
+ position: relative;
651
+ // Prevent columns from collapsing when empty
652
+ min-height: 1px;
653
+ // Inner gutter via padding
654
+ padding-left: ($gutter / 2);
655
+ padding-right: ($gutter / 2);
656
+
657
+ // Calculate width based on number of columns available
658
+ @media (min-width: $screen-md-min) {
659
+ float: left;
660
+ width: percentage(($columns / $grid-columns));
661
+ }
662
+ }
663
+
664
+ // Generate the medium column offsets
665
+ @mixin make-md-column-offset($columns) {
666
+ @media (min-width: $screen-md-min) {
667
+ margin-left: percentage(($columns / $grid-columns));
668
+ }
669
+ }
670
+ @mixin make-md-column-push($columns) {
671
+ @media (min-width: $screen-md) {
672
+ left: percentage(($columns / $grid-columns));
673
+ }
674
+ }
675
+ @mixin make-md-column-pull($columns) {
676
+ @media (min-width: $screen-md-min) {
677
+ right: percentage(($columns / $grid-columns));
678
+ }
679
+ }
680
+
681
+ // Generate the large columns
682
+ @mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
683
+ position: relative;
684
+ // Prevent columns from collapsing when empty
685
+ min-height: 1px;
686
+ // Inner gutter via padding
687
+ padding-left: ($gutter / 2);
688
+ padding-right: ($gutter / 2);
689
+
690
+ // Calculate width based on number of columns available
691
+ @media (min-width: $screen-lg-min) {
692
+ float: left;
693
+ width: percentage(($columns / $grid-columns));
694
+ }
695
+ }
696
+
697
+ // Generate the large column offsets
698
+ @mixin make-lg-column-offset($columns) {
699
+ @media (min-width: $screen-lg-min) {
700
+ margin-left: percentage(($columns / $grid-columns));
701
+ }
702
+ }
703
+ @mixin make-lg-column-push($columns) {
704
+ @media (min-width: $screen-lg-min) {
705
+ left: percentage(($columns / $grid-columns));
706
+ }
707
+ }
708
+ @mixin make-lg-column-pull($columns) {
709
+ @media (min-width: $screen-lg-min) {
710
+ right: percentage(($columns / $grid-columns));
711
+ }
712
+ }
713
+
714
+
715
+ // Framework grid generation
716
+ //
717
+ // Used only by Bootstrap to generate the correct number of grid classes given
718
+ // any value of `$grid-columns`.
719
+
720
+ // [converter] Grid converted to use SASS cycles (LESS uses recursive nested mixin defs not supported by SASS)
721
+ @mixin make-grid-columns() {
722
+ $list: '';
723
+ $i: 1;
724
+ $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}";
725
+ @for $i from 2 through $grid-columns {
726
+ $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}, #{$list}";
727
+ }
728
+ #{$list} {
729
+ position: relative;
730
+ // Prevent columns from collapsing when empty
731
+ min-height: 1px;
732
+ // Inner gutter via padding
733
+ padding-left: ($grid-gutter-width / 2);
734
+ padding-right: ($grid-gutter-width / 2);
735
+ }
736
+ }
737
+
738
+
739
+ // [converter] Grid converted to use SASS cycles (LESS uses recursive nested mixin defs not supported by SASS)
740
+ @mixin make-grid-columns-float($class) {
741
+ $list: '';
742
+ $i: 1;
743
+ $list: ".col-#{$class}-#{$i}";
744
+ @for $i from 2 through $grid-columns {
745
+ $list: ".col-#{$class}-#{$i}, #{$list}";
746
+ }
747
+ #{$list} {
748
+ float: left;
749
+ }
750
+ }
751
+
752
+
753
+ @mixin calc-grid($index, $class, $type) {
754
+ @if ($type == width) and ($index > 0) {
755
+ .col-#{$class}-#{$index} {
756
+ width: percentage(($index / $grid-columns));
757
+ }
758
+ }
759
+ @if ($type == push) {
760
+ .col-#{$class}-push-#{$index} {
761
+ left: percentage(($index / $grid-columns));
762
+ }
763
+ }
764
+ @if ($type == pull) {
765
+ .col-#{$class}-pull-#{$index} {
766
+ right: percentage(($index / $grid-columns));
767
+ }
768
+ }
769
+ @if ($type == offset) {
770
+ .col-#{$class}-offset-#{$index} {
771
+ margin-left: percentage(($index / $grid-columns));
772
+ }
773
+ }
774
+ }
775
+
776
+ // [converter] This is defined recursively in LESS, but SASS supports real loops
777
+ @mixin make-grid($columns, $class, $type) {
778
+ @for $i from 0 through $columns {
779
+ @include calc-grid($i, $class, $type);
780
+ }
781
+ }
782
+
783
+
784
+
785
+ // Form validation states
786
+ //
787
+ // Used in forms.less to generate the form validation CSS for warnings, errors,
788
+ // and successes.
789
+
790
+ @mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
791
+ // Color the label and help text
792
+ .help-block,
793
+ .control-label,
794
+ .radio,
795
+ .checkbox,
796
+ .radio-inline,
797
+ .checkbox-inline {
798
+ color: $text-color;
799
+ }
800
+ // Set the border and box shadow on specific inputs to match
801
+ .form-control {
802
+ border-color: $border-color;
803
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
804
+ &:focus {
805
+ border-color: darken($border-color, 10%);
806
+ $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
807
+ @include box-shadow($shadow);
808
+ }
809
+ }
810
+ // Set validation states also for addons
811
+ .input-group-addon {
812
+ color: $text-color;
813
+ border-color: $border-color;
814
+ background-color: $background-color;
815
+ }
816
+ }
817
+
818
+ // Form control focus state
819
+ //
820
+ // Generate a customized focus state and for any input with the specified color,
821
+ // which defaults to the `$input-focus-border` variable.
822
+ //
823
+ // We highly encourage you to not customize the default value, but instead use
824
+ // this to tweak colors on an as-needed basis. This aesthetic change is based on
825
+ // WebKit's default styles, but applicable to a wider range of browsers. Its
826
+ // usability and accessibility should be taken into account with any change.
827
+ //
828
+ // Example usage: change the default blue border and shadow to white for better
829
+ // contrast against a dark gray background.
830
+
831
+ @mixin form-control-focus($color: $input-border-focus) {
832
+ $color-rgba: rgba(red($color), green($color), blue($color), .6);
833
+ &:focus {
834
+ border-color: $color;
835
+ outline: 0;
836
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba);
837
+ }
838
+ }
839
+
840
+ // Form control sizing
841
+ //
842
+ // Relative text size, padding, and border-radii changes for form controls. For
843
+ // horizontal sizing, wrap controls in the predefined grid classes. `<select>`
844
+ // element gets special love because it's special, and that's a fact!
845
+
846
+ // [converter] $parent hack
847
+ @mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
848
+ #{$parent} { height: $input-height;
849
+ padding: $padding-vertical $padding-horizontal;
850
+ font-size: $font-size;
851
+ line-height: $line-height;
852
+ border-radius: $border-radius; }
853
+ select#{$parent} {
854
+ height: $input-height;
855
+ line-height: $input-height;
856
+ }
857
+
858
+ textarea#{$parent} {
859
+ height: auto;
860
+ }
861
+ }