theme.less 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. //
  2. // Load core variables and mixins
  3. // --------------------------------------------------
  4. @import 'variables.less';
  5. @import 'mixins.less';
  6. //
  7. // Buttons
  8. // --------------------------------------------------
  9. // Common styles
  10. .btn-default,
  11. .btn-primary,
  12. .btn-success,
  13. .btn-info,
  14. .btn-warning,
  15. .btn-danger {
  16. text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
  17. @shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),
  18. 0 1px 1px rgba(0, 0, 0, 0.075);
  19. .box-shadow(@shadow);
  20. // Reset the shadow
  21. &:active,
  22. &.active {
  23. .box-shadow(inset 0 3px 5px rgba(0, 0, 0, 0.125));
  24. }
  25. }
  26. // Mixin for generating new styles
  27. .btn-styles(@btn-color: #555) {
  28. // prettier-ignore
  29. #gradient >
  30. .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));
  31. .reset-filter(
  32. ); // Disable gradients for IE9 because filter bleeds through rounded corners
  33. background-repeat: repeat-x;
  34. border-color: darken(@btn-color, 14%);
  35. &:hover,
  36. &:focus {
  37. background-color: darken(@btn-color, 12%);
  38. background-position: 0 -15px;
  39. }
  40. &:active,
  41. &.active {
  42. background-color: darken(@btn-color, 12%);
  43. border-color: darken(@btn-color, 14%);
  44. }
  45. }
  46. // Common styles
  47. .btn {
  48. // Remove the gradient for the pressed/active state
  49. &:active,
  50. &.active {
  51. background-image: none;
  52. }
  53. }
  54. // Apply the mixin to the buttons
  55. .btn-default {
  56. .btn-styles(@btn-default-bg);
  57. text-shadow: 0 1px 0 #fff;
  58. border-color: #ccc;
  59. }
  60. .btn-primary {
  61. .btn-styles(@btn-primary-bg);
  62. }
  63. .btn-success {
  64. .btn-styles(@btn-success-bg);
  65. }
  66. .btn-info {
  67. .btn-styles(@btn-info-bg);
  68. }
  69. .btn-warning {
  70. .btn-styles(@btn-warning-bg);
  71. }
  72. .btn-danger {
  73. .btn-styles(@btn-danger-bg);
  74. }
  75. //
  76. // Images
  77. // --------------------------------------------------
  78. .thumbnail,
  79. .img-thumbnail {
  80. .box-shadow(0 1px 2px rgba(0, 0, 0, 0.075));
  81. }
  82. //
  83. // Dropdowns
  84. // --------------------------------------------------
  85. .dropdown-menu > li > a:hover,
  86. .dropdown-menu > li > a:focus {
  87. // prettier-ignore
  88. #gradient >
  89. .vertical(
  90. @start-color: @dropdown-link-hover-bg; @end-color:
  91. darken(@dropdown-link-hover-bg, 5%)
  92. );
  93. background-color: darken(@dropdown-link-hover-bg, 5%);
  94. }
  95. .dropdown-menu > .active > a,
  96. .dropdown-menu > .active > a:hover,
  97. .dropdown-menu > .active > a:focus {
  98. // prettier-ignore
  99. #gradient >
  100. .vertical(
  101. @start-color: @dropdown-link-active-bg; @end-color:
  102. darken(@dropdown-link-active-bg, 5%)
  103. );
  104. background-color: darken(@dropdown-link-active-bg, 5%);
  105. }
  106. //
  107. // Navbar
  108. // --------------------------------------------------
  109. // Default navbar
  110. .navbar-default {
  111. // prettier-ignore
  112. #gradient >
  113. .vertical(
  114. @start-color: lighten(@navbar-default-bg, 10%) ; @end-color:
  115. @navbar-default-bg
  116. );
  117. .reset-filter(
  118. ); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
  119. border-radius: @navbar-border-radius;
  120. @shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),
  121. 0 1px 5px rgba(0, 0, 0, 0.075);
  122. .box-shadow(@shadow);
  123. .navbar-nav > .active > a {
  124. // prettier-ignore
  125. #gradient >
  126. .vertical(
  127. @start-color: darken(@navbar-default-bg, 5%) ; @end-color:
  128. darken(@navbar-default-bg, 2%)
  129. );
  130. .box-shadow(inset 0 3px 9px rgba(0, 0, 0, 0.075));
  131. }
  132. }
  133. .navbar-brand,
  134. .navbar-nav > li > a {
  135. text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
  136. }
  137. // Inverted navbar
  138. .navbar-inverse {
  139. // prettier-ignore
  140. #gradient >
  141. .vertical(
  142. @start-color: lighten(@navbar-inverse-bg, 10%) ; @end-color:
  143. @navbar-inverse-bg
  144. );
  145. .reset-filter(
  146. ); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
  147. .navbar-nav > .active > a {
  148. // prettier-ignore
  149. #gradient >
  150. .vertical(
  151. @start-color: @navbar-inverse-bg; @end-color:
  152. lighten(@navbar-inverse-bg, 2.5%)
  153. );
  154. .box-shadow(inset 0 3px 9px rgba(0, 0, 0, 0.25));
  155. }
  156. .navbar-brand,
  157. .navbar-nav > li > a {
  158. text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  159. }
  160. }
  161. // Undo rounded corners in static and fixed navbars
  162. .navbar-static-top,
  163. .navbar-fixed-top,
  164. .navbar-fixed-bottom {
  165. border-radius: 0;
  166. }
  167. //
  168. // Alerts
  169. // --------------------------------------------------
  170. // Common styles
  171. .alert {
  172. text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
  173. @shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25),
  174. 0 1px 2px rgba(0, 0, 0, 0.05);
  175. .box-shadow(@shadow);
  176. }
  177. // Mixin for generating new styles
  178. .alert-styles(@color) {
  179. // prettier-ignore
  180. #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));
  181. border-color: darken(@color, 15%);
  182. }
  183. // Apply the mixin to the alerts
  184. .alert-success {
  185. .alert-styles(@alert-success-bg);
  186. }
  187. .alert-info {
  188. .alert-styles(@alert-info-bg);
  189. }
  190. .alert-warning {
  191. .alert-styles(@alert-warning-bg);
  192. }
  193. .alert-danger {
  194. .alert-styles(@alert-danger-bg);
  195. }
  196. //
  197. // Progress bars
  198. // --------------------------------------------------
  199. // Give the progress background some depth
  200. .progress {
  201. // prettier-ignore
  202. #gradient >
  203. .vertical(@start-color: darken(@progress-bg, 4%) ; @end-color: @progress-bg);
  204. }
  205. // Mixin for generating new styles
  206. .progress-bar-styles(@color) {
  207. // prettier-ignore
  208. #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));
  209. }
  210. // Apply the mixin to the progress bars
  211. .progress-bar {
  212. .progress-bar-styles(@progress-bar-bg);
  213. }
  214. .progress-bar-success {
  215. .progress-bar-styles(@progress-bar-success-bg);
  216. }
  217. .progress-bar-info {
  218. .progress-bar-styles(@progress-bar-info-bg);
  219. }
  220. .progress-bar-warning {
  221. .progress-bar-styles(@progress-bar-warning-bg);
  222. }
  223. .progress-bar-danger {
  224. .progress-bar-styles(@progress-bar-danger-bg);
  225. }
  226. //
  227. // List groups
  228. // --------------------------------------------------
  229. .list-group {
  230. border-radius: @border-radius-base;
  231. .box-shadow(0 1px 2px rgba(0, 0, 0, 0.075));
  232. }
  233. .list-group-item.active,
  234. .list-group-item.active:hover,
  235. .list-group-item.active:focus {
  236. text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);
  237. // prettier-ignore
  238. #gradient >
  239. .vertical(
  240. @start-color: @list-group-active-bg; @end-color:
  241. darken(@list-group-active-bg, 7.5%)
  242. );
  243. border-color: darken(@list-group-active-border, 7.5%);
  244. }
  245. //
  246. // Panels
  247. // --------------------------------------------------
  248. // Common styles
  249. .panel {
  250. .box-shadow(0 1px 2px rgba(0, 0, 0, 0.05));
  251. }
  252. // Mixin for generating new styles
  253. .panel-heading-styles(@color) {
  254. // prettier-ignore
  255. #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));
  256. }
  257. // Apply the mixin to the panel headings only
  258. .panel-default > .panel-heading {
  259. .panel-heading-styles(@panel-default-heading-bg);
  260. }
  261. .panel-primary > .panel-heading {
  262. .panel-heading-styles(@panel-primary-heading-bg);
  263. }
  264. .panel-success > .panel-heading {
  265. .panel-heading-styles(@panel-success-heading-bg);
  266. }
  267. .panel-info > .panel-heading {
  268. .panel-heading-styles(@panel-info-heading-bg);
  269. }
  270. .panel-warning > .panel-heading {
  271. .panel-heading-styles(@panel-warning-heading-bg);
  272. }
  273. .panel-danger > .panel-heading {
  274. .panel-heading-styles(@panel-danger-heading-bg);
  275. }
  276. //
  277. // Wells
  278. // --------------------------------------------------
  279. .well {
  280. // prettier-ignore
  281. #gradient >
  282. .vertical(@start-color: darken(@well-bg, 5%) ; @end-color: @well-bg);
  283. border-color: darken(@well-bg, 10%);
  284. @shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
  285. .box-shadow(@shadow);
  286. }