twitter-bootstrap-rails 2.2.3 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +460 -185
  3. data/Rakefile +7 -1
  4. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  5. data/app/assets/fonts/fontawesome-webfont.svg +640 -0
  6. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  7. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  8. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  9. data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  10. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  11. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  12. data/app/assets/javascripts/twitter/bootstrap.js +12 -0
  13. data/app/assets/javascripts/twitter/bootstrap/affix.js +142 -0
  14. data/app/assets/javascripts/twitter/bootstrap/alert.js +92 -0
  15. data/app/assets/javascripts/twitter/bootstrap/button.js +110 -0
  16. data/app/assets/javascripts/twitter/bootstrap/carousel.js +223 -0
  17. data/app/assets/javascripts/twitter/bootstrap/collapse.js +170 -0
  18. data/app/assets/javascripts/twitter/bootstrap/dropdown.js +151 -0
  19. data/app/assets/javascripts/twitter/bootstrap/modal.js +280 -0
  20. data/app/assets/javascripts/twitter/bootstrap/popover.js +113 -0
  21. data/app/assets/javascripts/twitter/bootstrap/scrollspy.js +170 -0
  22. data/app/assets/javascripts/twitter/bootstrap/tab.js +128 -0
  23. data/app/assets/javascripts/twitter/bootstrap/tooltip.js +457 -0
  24. data/app/assets/javascripts/twitter/bootstrap/transition.js +59 -0
  25. data/{vendor → app}/assets/javascripts/twitter/bootstrap_ujs.js +0 -0
  26. data/app/assets/stylesheets/twitter-bootstrap-static/bootstrap.css.erb +1 -0
  27. data/app/assets/stylesheets/twitter-bootstrap-static/fontawesome.css.erb +2026 -0
  28. data/app/assets/stylesheets/twitter-bootstrap-static/sprites.css.erb +1 -0
  29. data/app/helpers/badge_label_helper.rb +16 -0
  30. data/app/helpers/bootstrap_flash_helper.rb +20 -6
  31. data/app/helpers/form_errors_helper.rb +22 -0
  32. data/app/helpers/glyph_helper.rb +13 -5
  33. data/app/helpers/modal_helper.rb +37 -20
  34. data/app/helpers/navbar_helper.rb +209 -0
  35. data/app/helpers/twitter_breadcrumbs_helper.rb +11 -2
  36. data/app/views/twitter-bootstrap/_breadcrumbs.html.erb +9 -9
  37. data/lib/generators/bootstrap/install/install_generator.rb +13 -8
  38. data/lib/generators/bootstrap/install/templates/bootstrap.coffee +2 -3
  39. data/lib/generators/bootstrap/install/templates/bootstrap.js +2 -3
  40. data/lib/generators/bootstrap/install/templates/bootstrap_and_overrides.less +14 -13
  41. data/lib/generators/bootstrap/install/templates/en.bootstrap.yml +11 -5
  42. data/lib/generators/bootstrap/layout/layout_generator.rb +1 -4
  43. data/lib/generators/bootstrap/layout/templates/layout.html.erb +34 -58
  44. data/lib/generators/bootstrap/layout/templates/layout.html.haml +25 -44
  45. data/lib/generators/bootstrap/layout/templates/layout.html.slim +20 -39
  46. data/lib/generators/bootstrap/partial/templates/_login.html.erb +2 -3
  47. data/lib/generators/bootstrap/themed/templates/_form.html.erb +30 -10
  48. data/lib/generators/bootstrap/themed/templates/_form.html.haml +10 -8
  49. data/lib/generators/bootstrap/themed/templates/_form.html.slim +11 -9
  50. data/lib/generators/bootstrap/themed/templates/edit.html.erb +1 -2
  51. data/lib/generators/bootstrap/themed/templates/edit.html.haml +1 -1
  52. data/lib/generators/bootstrap/themed/templates/edit.html.slim +2 -2
  53. data/lib/generators/bootstrap/themed/templates/index.html.erb +3 -3
  54. data/lib/generators/bootstrap/themed/templates/index.html.haml +3 -3
  55. data/lib/generators/bootstrap/themed/templates/index.html.slim +5 -6
  56. data/lib/generators/bootstrap/themed/templates/new.html.erb +1 -2
  57. data/lib/generators/bootstrap/themed/templates/new.html.haml +1 -1
  58. data/lib/generators/bootstrap/themed/templates/new.html.slim +2 -2
  59. data/lib/generators/bootstrap/themed/templates/show.html.erb +6 -8
  60. data/lib/generators/bootstrap/themed/templates/show.html.haml +5 -5
  61. data/lib/generators/bootstrap/themed/templates/show.html.slim +7 -8
  62. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.erb +5 -5
  63. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.haml +3 -3
  64. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.slim +4 -4
  65. data/lib/generators/bootstrap/themed/themed_generator.rb +4 -4
  66. data/lib/twitter-bootstrap-rails.rb +4 -4
  67. data/lib/twitter/bootstrap/rails/breadcrumbs.rb +69 -0
  68. data/lib/twitter/bootstrap/rails/engine.rb +17 -7
  69. data/lib/twitter/bootstrap/rails/version.rb +1 -1
  70. data/spec/lib/breadcrumbs_spec.rb +99 -0
  71. data/spec/lib/twitter_bootstrap_rails/badge_label_helper_spec.rb +30 -0
  72. data/spec/lib/twitter_bootstrap_rails/bootstrap_flash_helper_spec.rb +128 -0
  73. data/spec/lib/twitter_bootstrap_rails/form_errors_helper_spec.rb +148 -0
  74. data/spec/lib/twitter_bootstrap_rails/glyph_helper_spec.rb +24 -0
  75. data/spec/lib/twitter_bootstrap_rails/modal_helper_spec.rb +62 -0
  76. data/spec/lib/twitter_bootstrap_rails/navbar_helper_spec.rb +396 -0
  77. data/spec/lib/twitter_bootstrap_rails/uri_state_spec.rb +49 -0
  78. data/spec/spec_helper.rb +21 -0
  79. data/vendor/assets/stylesheets/twitter-bootstrap-static/bootstrap.css.erb +5990 -195
  80. data/vendor/static-source/bootstrap.less +0 -1
  81. data/vendor/static-source/fontawesome.less +7 -6
  82. data/vendor/static-source/sprites.less +3 -3
  83. data/vendor/toolkit/fontawesome/bordered-pulled.less +16 -0
  84. data/vendor/toolkit/fontawesome/core.less +11 -0
  85. data/vendor/toolkit/fontawesome/fixed-width.less +6 -0
  86. data/vendor/toolkit/fontawesome/font-awesome.less +17 -0
  87. data/vendor/toolkit/fontawesome/icons.less +552 -0
  88. data/vendor/toolkit/fontawesome/larger.less +13 -0
  89. data/vendor/toolkit/fontawesome/list.less +19 -0
  90. data/vendor/toolkit/fontawesome/mixins.less +25 -0
  91. data/vendor/toolkit/fontawesome/path.less +14 -0
  92. data/vendor/toolkit/fontawesome/rotated-flipped.less +20 -0
  93. data/vendor/toolkit/fontawesome/spinning.less +29 -0
  94. data/vendor/toolkit/fontawesome/stacked.less +20 -0
  95. data/vendor/toolkit/fontawesome/variables.less +561 -0
  96. data/vendor/toolkit/twitter/bootstrap/alerts.less +47 -58
  97. data/vendor/toolkit/twitter/bootstrap/badges.less +55 -0
  98. data/vendor/toolkit/twitter/bootstrap/bootstrap.less +26 -39
  99. data/vendor/toolkit/twitter/bootstrap/breadcrumbs.less +11 -9
  100. data/vendor/toolkit/twitter/bootstrap/button-groups.less +168 -152
  101. data/vendor/toolkit/twitter/bootstrap/buttons.less +101 -170
  102. data/vendor/toolkit/twitter/bootstrap/carousel.less +150 -65
  103. data/vendor/toolkit/twitter/bootstrap/close.less +20 -19
  104. data/vendor/toolkit/twitter/bootstrap/code.less +38 -30
  105. data/vendor/toolkit/twitter/bootstrap/component-animations.less +12 -3
  106. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +124 -146
  107. data/vendor/toolkit/twitter/bootstrap/forms.less +401 -547
  108. data/vendor/toolkit/twitter/bootstrap/glyphicons.less +234 -0
  109. data/vendor/toolkit/twitter/bootstrap/grid.less +74 -11
  110. data/vendor/toolkit/twitter/bootstrap/input-groups.less +166 -0
  111. data/vendor/toolkit/twitter/bootstrap/jumbotron.less +48 -0
  112. data/vendor/toolkit/twitter/bootstrap/labels.less +64 -0
  113. data/vendor/toolkit/twitter/bootstrap/list-group.less +132 -0
  114. data/vendor/toolkit/twitter/bootstrap/media.less +8 -7
  115. data/vendor/toolkit/twitter/bootstrap/mixins.less +36 -699
  116. data/vendor/toolkit/twitter/bootstrap/mixins/alerts.less +14 -0
  117. data/vendor/toolkit/twitter/bootstrap/mixins/background-variant.less +8 -0
  118. data/vendor/toolkit/twitter/bootstrap/mixins/border-radius.less +18 -0
  119. data/vendor/toolkit/twitter/bootstrap/mixins/buttons.less +52 -0
  120. data/vendor/toolkit/twitter/bootstrap/mixins/center-block.less +7 -0
  121. data/vendor/toolkit/twitter/bootstrap/mixins/clearfix.less +22 -0
  122. data/vendor/toolkit/twitter/bootstrap/mixins/forms.less +85 -0
  123. data/vendor/toolkit/twitter/bootstrap/mixins/gradients.less +59 -0
  124. data/vendor/toolkit/twitter/bootstrap/mixins/grid-framework.less +91 -0
  125. data/vendor/toolkit/twitter/bootstrap/mixins/grid.less +122 -0
  126. data/vendor/toolkit/twitter/bootstrap/mixins/hide-text.less +21 -0
  127. data/vendor/toolkit/twitter/bootstrap/mixins/image.less +33 -0
  128. data/vendor/toolkit/twitter/bootstrap/mixins/labels.less +12 -0
  129. data/vendor/toolkit/twitter/bootstrap/mixins/list-group.less +29 -0
  130. data/vendor/toolkit/twitter/bootstrap/mixins/nav-divider.less +10 -0
  131. data/vendor/toolkit/twitter/bootstrap/mixins/nav-vertical-align.less +9 -0
  132. data/vendor/toolkit/twitter/bootstrap/mixins/opacity.less +8 -0
  133. data/vendor/toolkit/twitter/bootstrap/mixins/pagination.less +23 -0
  134. data/vendor/toolkit/twitter/bootstrap/mixins/panels.less +24 -0
  135. data/vendor/toolkit/twitter/bootstrap/mixins/progress-bar.less +10 -0
  136. data/vendor/toolkit/twitter/bootstrap/mixins/reset-filter.less +8 -0
  137. data/vendor/toolkit/twitter/bootstrap/mixins/resize.less +6 -0
  138. data/vendor/toolkit/twitter/bootstrap/mixins/responsive-visibility.less +15 -0
  139. data/vendor/toolkit/twitter/bootstrap/mixins/size.less +10 -0
  140. data/vendor/toolkit/twitter/bootstrap/mixins/tab-focus.less +9 -0
  141. data/vendor/toolkit/twitter/bootstrap/mixins/table-row.less +28 -0
  142. data/vendor/toolkit/twitter/bootstrap/mixins/text-emphasis.less +8 -0
  143. data/vendor/toolkit/twitter/bootstrap/mixins/text-overflow.less +8 -0
  144. data/vendor/toolkit/twitter/bootstrap/mixins/vendor-prefixes.less +224 -0
  145. data/vendor/toolkit/twitter/bootstrap/modals.less +109 -54
  146. data/vendor/toolkit/twitter/bootstrap/navbar.less +542 -384
  147. data/vendor/toolkit/twitter/bootstrap/navs.less +192 -359
  148. data/vendor/toolkit/twitter/bootstrap/normalize.less +425 -0
  149. data/vendor/toolkit/twitter/bootstrap/pager.less +46 -34
  150. data/vendor/toolkit/twitter/bootstrap/pagination.less +70 -105
  151. data/vendor/toolkit/twitter/bootstrap/panels.less +248 -0
  152. data/vendor/toolkit/twitter/bootstrap/popovers.less +61 -61
  153. data/vendor/toolkit/twitter/bootstrap/print.less +101 -0
  154. data/vendor/toolkit/twitter/bootstrap/progress-bars.less +51 -73
  155. data/vendor/toolkit/twitter/bootstrap/responsive-embed.less +34 -0
  156. data/vendor/toolkit/twitter/bootstrap/responsive-utilities.less +177 -42
  157. data/vendor/toolkit/twitter/bootstrap/scaffolding.less +120 -23
  158. data/vendor/toolkit/twitter/bootstrap/tables.less +171 -182
  159. data/vendor/toolkit/twitter/bootstrap/theme.less +260 -0
  160. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +26 -43
  161. data/vendor/toolkit/twitter/bootstrap/tooltip.less +49 -24
  162. data/vendor/toolkit/twitter/bootstrap/type.less +208 -147
  163. data/vendor/toolkit/twitter/bootstrap/utilities.less +33 -7
  164. data/vendor/toolkit/twitter/bootstrap/variables.less +761 -215
  165. data/vendor/toolkit/twitter/bootstrap/wells.less +7 -7
  166. metadata +199 -92
  167. data/lib/generators/bootstrap/partial/templates/_navbar.html.erb +0 -13
  168. data/lib/twitter/bootstrap/rails/twitter-bootstrap-breadcrumbs.rb +0 -42
  169. data/test/lib/breadcrumbs_test.rb +0 -75
  170. data/test/test_helper.rb +0 -8
  171. data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
  172. data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
  173. data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
  174. data/vendor/assets/images/twitter/bootstrap/glyphicons-halflings-white.png +0 -0
  175. data/vendor/assets/images/twitter/bootstrap/glyphicons-halflings.png +0 -0
  176. data/vendor/assets/javascripts/twitter/bootstrap.js +0 -13
  177. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-affix.js +0 -117
  178. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-alert.js +0 -99
  179. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-button.js +0 -105
  180. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-carousel.js +0 -207
  181. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-collapse.js +0 -167
  182. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-dropdown.js +0 -165
  183. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-modal.js +0 -247
  184. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-popover.js +0 -114
  185. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-scrollspy.js +0 -162
  186. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tab.js +0 -144
  187. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tooltip.js +0 -353
  188. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-transition.js +0 -60
  189. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-typeahead.js +0 -335
  190. data/vendor/assets/stylesheets/twitter-bootstrap-static/fontawesome.css.erb +0 -531
  191. data/vendor/assets/stylesheets/twitter-bootstrap-static/sprites.css.erb +0 -146
  192. data/vendor/toolkit/fontawesome-ie7.less +0 -350
  193. data/vendor/toolkit/fontawesome.less +0 -532
  194. data/vendor/toolkit/twitter/bootstrap/accordion.less +0 -34
  195. data/vendor/toolkit/twitter/bootstrap/hero-unit.less +0 -25
  196. data/vendor/toolkit/twitter/bootstrap/labels-badges.less +0 -84
  197. data/vendor/toolkit/twitter/bootstrap/layouts.less +0 -16
  198. data/vendor/toolkit/twitter/bootstrap/reset.less +0 -216
  199. data/vendor/toolkit/twitter/bootstrap/responsive-1200px-min.less +0 -28
  200. data/vendor/toolkit/twitter/bootstrap/responsive-767px-max.less +0 -193
  201. data/vendor/toolkit/twitter/bootstrap/responsive-768px-979px.less +0 -19
  202. data/vendor/toolkit/twitter/bootstrap/responsive-navbar.less +0 -189
  203. data/vendor/toolkit/twitter/bootstrap/responsive.less +0 -48
  204. data/vendor/toolkit/twitter/bootstrap/sprites.less +0 -197
@@ -2,82 +2,109 @@
2
2
  // Modals
3
3
  // --------------------------------------------------
4
4
 
5
- // Background
6
- .modal-backdrop {
5
+ // .modal-open - body class for killing the scroll
6
+ // .modal - container to scroll within
7
+ // .modal-dialog - positioning shell for the actual modal
8
+ // .modal-content - actual modal w/ bg and corners and shit
9
+
10
+ // Kill the scroll on the body
11
+ .modal-open {
12
+ overflow: hidden;
13
+ }
14
+
15
+ // Container that the modal scrolls within
16
+ .modal {
17
+ display: none;
18
+ overflow: hidden;
7
19
  position: fixed;
8
20
  top: 0;
9
21
  right: 0;
10
22
  bottom: 0;
11
23
  left: 0;
12
- z-index: @zindexModalBackdrop;
13
- background-color: @black;
14
- // Fade for backdrop
15
- &.fade { opacity: 0; }
24
+ z-index: @zindex-modal;
25
+ -webkit-overflow-scrolling: touch;
26
+
27
+ // Prevent Chrome on Windows from adding a focus outline. For details, see
28
+ // https://github.com/twbs/bootstrap/pull/10951.
29
+ outline: 0;
30
+
31
+ // When fading in the modal, animate it to slide down
32
+ &.fade .modal-dialog {
33
+ .translate3d(0, -25%, 0);
34
+ .transition-transform(~"0.3s ease-out");
35
+ }
36
+ &.in .modal-dialog { .translate3d(0, 0, 0) }
37
+ }
38
+ .modal-open .modal {
39
+ overflow-x: hidden;
40
+ overflow-y: auto;
16
41
  }
17
42
 
18
- .modal-backdrop,
19
- .modal-backdrop.fade.in {
20
- .opacity(80);
43
+ // Shell div to position the modal with bottom padding
44
+ .modal-dialog {
45
+ position: relative;
46
+ width: auto;
47
+ margin: 10px;
21
48
  }
22
49
 
23
- // Base modal
24
- .modal {
25
- position: fixed;
26
- top: 10%;
27
- left: 50%;
28
- z-index: @zindexModal;
29
- width: 560px;
30
- margin-left: -280px;
31
- background-color: @white;
32
- border: 1px solid #999;
33
- border: 1px solid rgba(0,0,0,.3);
34
- *border: 1px solid #999; /* IE6-7 */
35
- .border-radius(6px);
36
- .box-shadow(0 3px 7px rgba(0,0,0,0.3));
37
- .background-clip(padding-box);
50
+ // Actual modal
51
+ .modal-content {
52
+ position: relative;
53
+ background-color: @modal-content-bg;
54
+ border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
55
+ border: 1px solid @modal-content-border-color;
56
+ border-radius: @border-radius-large;
57
+ .box-shadow(0 3px 9px rgba(0,0,0,.5));
58
+ background-clip: padding-box;
38
59
  // Remove focus outline from opened modal
39
- outline: none;
60
+ outline: 0;
61
+ }
40
62
 
41
- &.fade {
42
- .transition(e('opacity .3s linear, top .3s ease-out'));
43
- top: -25%;
44
- }
45
- &.fade.in { top: 10%; }
63
+ // Modal background
64
+ .modal-backdrop {
65
+ position: fixed;
66
+ top: 0;
67
+ right: 0;
68
+ bottom: 0;
69
+ left: 0;
70
+ z-index: @zindex-modal-background;
71
+ background-color: @modal-backdrop-bg;
72
+ // Fade for backdrop
73
+ &.fade { .opacity(0); }
74
+ &.in { .opacity(@modal-backdrop-opacity); }
46
75
  }
76
+
77
+ // Modal header
78
+ // Top section of the modal w/ title and dismiss
47
79
  .modal-header {
48
- padding: 9px 15px;
49
- border-bottom: 1px solid #eee;
50
- // Close icon
51
- .close { margin-top: 2px; }
52
- // Heading
53
- h3 {
54
- margin: 0;
55
- line-height: 30px;
56
- }
80
+ padding: @modal-title-padding;
81
+ border-bottom: 1px solid @modal-header-border-color;
82
+ min-height: (@modal-title-padding + @modal-title-line-height);
83
+ }
84
+ // Close icon
85
+ .modal-header .close {
86
+ margin-top: -2px;
57
87
  }
58
88
 
59
- // Body (where all modal content resides)
89
+ // Title text within header
90
+ .modal-title {
91
+ margin: 0;
92
+ line-height: @modal-title-line-height;
93
+ }
94
+
95
+ // Modal body
96
+ // Where all modal content resides (sibling of .modal-header and .modal-footer)
60
97
  .modal-body {
61
98
  position: relative;
62
- overflow-y: auto;
63
- max-height: 400px;
64
- padding: 15px;
65
- }
66
- // Remove bottom margin if need be
67
- .modal-form {
68
- margin-bottom: 0;
99
+ padding: @modal-inner-padding;
69
100
  }
70
101
 
71
102
  // Footer (for actions)
72
103
  .modal-footer {
73
- padding: 14px 15px 15px;
74
- margin-bottom: 0;
104
+ padding: @modal-inner-padding;
75
105
  text-align: right; // right align buttons
76
- background-color: #f5f5f5;
77
- border-top: 1px solid #ddd;
78
- .border-radius(0 0 6px 6px);
79
- .box-shadow(inset 0 1px 0 @white);
80
- .clearfix(); // clear it in case folks use .pull-* classes on buttons
106
+ border-top: 1px solid @modal-footer-border-color;
107
+ &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons
81
108
 
82
109
  // Properly space out buttons
83
110
  .btn + .btn {
@@ -93,3 +120,31 @@
93
120
  margin-left: 0;
94
121
  }
95
122
  }
123
+
124
+ // Measure scrollbar width for padding body during modal show/hide
125
+ .modal-scrollbar-measure {
126
+ position: absolute;
127
+ top: -9999px;
128
+ width: 50px;
129
+ height: 50px;
130
+ overflow: scroll;
131
+ }
132
+
133
+ // Scale up the modal
134
+ @media (min-width: @screen-sm-min) {
135
+ // Automatically set modal's width for larger viewports
136
+ .modal-dialog {
137
+ width: @modal-md;
138
+ margin: 30px auto;
139
+ }
140
+ .modal-content {
141
+ .box-shadow(0 5px 15px rgba(0,0,0,.5));
142
+ }
143
+
144
+ // Modal sizes
145
+ .modal-sm { width: @modal-sm; }
146
+ }
147
+
148
+ @media (min-width: @screen-md-min) {
149
+ .modal-lg { width: @modal-lg; }
150
+ }
@@ -1,497 +1,655 @@
1
1
  //
2
- // Navbars (Redux)
2
+ // Navbars
3
3
  // --------------------------------------------------
4
4
 
5
5
 
6
- // COMMON STYLES
7
- // -------------
6
+ // Wrapper and base class
7
+ //
8
+ // Provide a static navbar from which we expand to create full-width, fixed, and
9
+ // other navbar variations.
8
10
 
9
- // Base class and wrapper
10
11
  .navbar {
11
- overflow: visible;
12
- margin-bottom: @baseLineHeight;
13
-
14
- // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
15
- *position: relative;
16
- *z-index: 2;
17
- }
18
-
19
- // Inner for background effects
20
- // Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
21
- .navbar-inner {
22
- min-height: @navbarHeight;
23
- padding-left: 20px;
24
- padding-right: 20px;
25
- #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
26
- border: 1px solid @navbarBorder;
27
- .border-radius(@baseBorderRadius);
28
- .box-shadow(0 1px 4px rgba(0,0,0,.065));
12
+ position: relative;
13
+ min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
14
+ margin-bottom: @navbar-margin-bottom;
15
+ border: 1px solid transparent;
29
16
 
30
17
  // Prevent floats from breaking the navbar
31
- .clearfix();
32
- }
18
+ &:extend(.clearfix all);
33
19
 
34
- // Set width to auto for default container
35
- // We then reset it for fixed navbars in the #gridSystem mixin
36
- .navbar .container {
37
- width: auto;
20
+ @media (min-width: @grid-float-breakpoint) {
21
+ border-radius: @navbar-border-radius;
22
+ }
38
23
  }
39
24
 
40
- // Override the default collapsed state
41
- .nav-collapse.collapse {
42
- height: auto;
43
- overflow: visible;
44
- }
45
25
 
26
+ // Navbar heading
27
+ //
28
+ // Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
29
+ // styling of responsive aspects.
46
30
 
47
- // Brand: website or project name
48
- // -------------------------
49
- .navbar .brand {
50
- float: left;
51
- display: block;
52
- // Vertically center the text given @navbarHeight
53
- padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2);
54
- margin-left: -20px; // negative indent to left-align the text down the page
55
- font-size: 20px;
56
- font-weight: 200;
57
- color: @navbarBrandColor;
58
- text-shadow: 0 1px 0 @navbarBackgroundHighlight;
59
- &:hover,
60
- &:focus {
61
- text-decoration: none;
31
+ .navbar-header {
32
+ &:extend(.clearfix all);
33
+
34
+ @media (min-width: @grid-float-breakpoint) {
35
+ float: left;
62
36
  }
63
37
  }
64
38
 
65
- // Plain text in topbar
66
- // -------------------------
67
- .navbar-text {
68
- margin-bottom: 0;
69
- line-height: @navbarHeight;
70
- color: @navbarText;
71
- }
72
39
 
73
- // Janky solution for now to account for links outside the .nav
74
- // -------------------------
75
- .navbar-link {
76
- color: @navbarLinkColor;
77
- &:hover,
78
- &:focus {
79
- color: @navbarLinkColorHover;
40
+ // Navbar collapse (body)
41
+ //
42
+ // Group your navbar content into this for easy collapsing and expanding across
43
+ // various device sizes. By default, this content is collapsed when <768px, but
44
+ // will expand past that for a horizontal display.
45
+ //
46
+ // To start (on mobile devices) the navbar links, forms, and buttons are stacked
47
+ // vertically and include a `max-height` to overflow in case you have too much
48
+ // content for the user's viewport.
49
+
50
+ .navbar-collapse {
51
+ overflow-x: visible;
52
+ padding-right: @navbar-padding-horizontal;
53
+ padding-left: @navbar-padding-horizontal;
54
+ border-top: 1px solid transparent;
55
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
56
+ &:extend(.clearfix all);
57
+ -webkit-overflow-scrolling: touch;
58
+
59
+ &.in {
60
+ overflow-y: auto;
80
61
  }
81
- }
82
62
 
83
- // Dividers in navbar
84
- // -------------------------
85
- .navbar .divider-vertical {
86
- height: @navbarHeight;
87
- margin: 0 9px;
88
- border-left: 1px solid @navbarBackground;
89
- border-right: 1px solid @navbarBackgroundHighlight;
90
- }
63
+ @media (min-width: @grid-float-breakpoint) {
64
+ width: auto;
65
+ border-top: 0;
66
+ box-shadow: none;
91
67
 
92
- // Buttons in navbar
93
- // -------------------------
94
- .navbar .btn,
95
- .navbar .btn-group {
96
- .navbarVerticalAlign(30px); // Vertically center in navbar
97
- }
98
- .navbar .btn-group .btn,
99
- .navbar .input-prepend .btn,
100
- .navbar .input-append .btn,
101
- .navbar .input-prepend .btn-group,
102
- .navbar .input-append .btn-group {
103
- margin-top: 0; // then undo the margin here so we don't accidentally double it
104
- }
68
+ &.collapse {
69
+ display: block !important;
70
+ height: auto !important;
71
+ padding-bottom: 0; // Override default setting
72
+ overflow: visible !important;
73
+ }
105
74
 
106
- // Navbar forms
107
- // -------------------------
108
- .navbar-form {
109
- margin-bottom: 0; // remove default bottom margin
110
- .clearfix();
111
- input,
112
- select,
113
- .radio,
114
- .checkbox {
115
- .navbarVerticalAlign(30px); // Vertically center in navbar
116
- }
117
- input,
118
- select,
119
- .btn {
120
- display: inline-block;
121
- margin-bottom: 0;
122
- }
123
- input[type="image"],
124
- input[type="checkbox"],
125
- input[type="radio"] {
126
- margin-top: 3px;
127
- }
128
- .input-append,
129
- .input-prepend {
130
- margin-top: 5px;
131
- white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left
132
- input {
133
- margin-top: 0; // remove the margin on top since it's on the parent
75
+ &.in {
76
+ overflow-y: visible;
134
77
  }
135
- }
136
- }
137
78
 
138
- // Navbar search
139
- // -------------------------
140
- .navbar-search {
141
- position: relative;
142
- float: left;
143
- .navbarVerticalAlign(30px); // Vertically center in navbar
144
- margin-bottom: 0;
145
- .search-query {
146
- margin-bottom: 0;
147
- padding: 4px 14px;
148
- #font > .sans-serif(13px, normal, 1);
149
- .border-radius(15px); // redeclare because of specificity of the type attribute
79
+ // Undo the collapse side padding for navbars with containers to ensure
80
+ // alignment of right-aligned contents.
81
+ .navbar-fixed-top &,
82
+ .navbar-static-top &,
83
+ .navbar-fixed-bottom & {
84
+ padding-left: 0;
85
+ padding-right: 0;
86
+ }
150
87
  }
151
88
  }
152
89
 
90
+ .navbar-fixed-top,
91
+ .navbar-fixed-bottom {
92
+ .navbar-collapse {
93
+ max-height: @navbar-collapse-max-height;
153
94
 
95
+ @media (max-device-width: @screen-xs-min) and (orientation: landscape) {
96
+ max-height: 200px;
97
+ }
98
+ }
99
+ }
154
100
 
155
- // Static navbar
156
- // -------------------------
157
101
 
158
- .navbar-static-top {
159
- position: static;
160
- margin-bottom: 0; // remove 18px margin for default navbar
161
- .navbar-inner {
162
- .border-radius(0);
102
+ // Both navbar header and collapse
103
+ //
104
+ // When a container is present, change the behavior of the header and collapse.
105
+
106
+ .container,
107
+ .container-fluid {
108
+ > .navbar-header,
109
+ > .navbar-collapse {
110
+ margin-right: -@navbar-padding-horizontal;
111
+ margin-left: -@navbar-padding-horizontal;
112
+
113
+ @media (min-width: @grid-float-breakpoint) {
114
+ margin-right: 0;
115
+ margin-left: 0;
116
+ }
163
117
  }
164
118
  }
165
119
 
166
120
 
121
+ //
122
+ // Navbar alignment options
123
+ //
124
+ // Display the navbar across the entirety of the page or fixed it to the top or
125
+ // bottom of the page.
167
126
 
168
- // Fixed navbar
169
- // -------------------------
127
+ // Static top (unfixed, but 100% wide) navbar
128
+ .navbar-static-top {
129
+ z-index: @zindex-navbar;
130
+ border-width: 0 0 1px;
131
+
132
+ @media (min-width: @grid-float-breakpoint) {
133
+ border-radius: 0;
134
+ }
135
+ }
170
136
 
171
- // Shared (top/bottom) styles
137
+ // Fix the top/bottom navbars when screen real estate supports it
172
138
  .navbar-fixed-top,
173
139
  .navbar-fixed-bottom {
174
140
  position: fixed;
175
141
  right: 0;
176
142
  left: 0;
177
- z-index: @zindexFixedNavbar;
178
- margin-bottom: 0; // remove 18px margin for default navbar
143
+ z-index: @zindex-navbar-fixed;
144
+ .translate3d(0, 0, 0);
145
+
146
+ // Undo the rounded corners
147
+ @media (min-width: @grid-float-breakpoint) {
148
+ border-radius: 0;
149
+ }
179
150
  }
180
- .navbar-fixed-top .navbar-inner,
181
- .navbar-static-top .navbar-inner {
151
+ .navbar-fixed-top {
152
+ top: 0;
182
153
  border-width: 0 0 1px;
183
154
  }
184
- .navbar-fixed-bottom .navbar-inner {
155
+ .navbar-fixed-bottom {
156
+ bottom: 0;
157
+ margin-bottom: 0; // override .navbar defaults
185
158
  border-width: 1px 0 0;
186
159
  }
187
- .navbar-fixed-top .navbar-inner,
188
- .navbar-fixed-bottom .navbar-inner {
189
- padding-left: 0;
190
- padding-right: 0;
191
- .border-radius(0);
192
- }
193
160
 
194
- // Reset container width
195
- // Required here as we reset the width earlier on and the grid mixins don't override early enough
196
- .navbar-static-top .container,
197
- .navbar-fixed-top .container,
198
- .navbar-fixed-bottom .container {
199
- #grid > .core > .span(@gridColumns);
200
- }
201
161
 
202
- // Fixed to top
203
- .navbar-fixed-top {
204
- top: 0;
205
- }
206
- .navbar-fixed-top,
207
- .navbar-static-top {
208
- .navbar-inner {
209
- .box-shadow(~"0 1px 10px rgba(0,0,0,.1)");
162
+ // Brand/project name
163
+
164
+ .navbar-brand {
165
+ float: left;
166
+ padding: @navbar-padding-vertical @navbar-padding-horizontal;
167
+ font-size: @font-size-large;
168
+ line-height: @line-height-computed;
169
+ height: @navbar-height;
170
+
171
+ &:hover,
172
+ &:focus {
173
+ text-decoration: none;
210
174
  }
211
- }
212
175
 
213
- // Fixed to bottom
214
- .navbar-fixed-bottom {
215
- bottom: 0;
216
- .navbar-inner {
217
- .box-shadow(~"0 -1px 10px rgba(0,0,0,.1)");
176
+ > img {
177
+ display: block;
218
178
  }
219
- }
220
179
 
180
+ @media (min-width: @grid-float-breakpoint) {
181
+ .navbar > .container &,
182
+ .navbar > .container-fluid & {
183
+ margin-left: -@navbar-padding-horizontal;
184
+ }
185
+ }
186
+ }
221
187
 
222
188
 
223
- // NAVIGATION
224
- // ----------
189
+ // Navbar toggle
190
+ //
191
+ // Custom button for toggling the `.navbar-collapse`, powered by the collapse
192
+ // JavaScript plugin.
225
193
 
226
- .navbar .nav {
194
+ .navbar-toggle {
227
195
  position: relative;
228
- left: 0;
229
- display: block;
230
- float: left;
231
- margin: 0 10px 0 0;
232
- }
233
- .navbar .nav.pull-right {
234
- float: right; // redeclare due to specificity
235
- margin-right: 0; // remove margin on float right nav
236
- }
237
- .navbar .nav > li {
238
- float: left;
239
- }
196
+ float: right;
197
+ margin-right: @navbar-padding-horizontal;
198
+ padding: 9px 10px;
199
+ .navbar-vertical-align(34px);
200
+ background-color: transparent;
201
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
202
+ border: 1px solid transparent;
203
+ border-radius: @border-radius-base;
204
+
205
+ // We remove the `outline` here, but later compensate by attaching `:hover`
206
+ // styles to `:focus`.
207
+ &:focus {
208
+ outline: 0;
209
+ }
240
210
 
241
- // Links
242
- .navbar .nav > li > a {
243
- float: none;
244
- // Vertically center the text given @navbarHeight
245
- padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2);
246
- color: @navbarLinkColor;
247
- text-decoration: none;
248
- text-shadow: 0 1px 0 @navbarBackgroundHighlight;
249
- }
250
- .navbar .nav .dropdown-toggle .caret {
251
- margin-top: 8px;
252
- }
211
+ // Bars
212
+ .icon-bar {
213
+ display: block;
214
+ width: 22px;
215
+ height: 2px;
216
+ border-radius: 1px;
217
+ }
218
+ .icon-bar + .icon-bar {
219
+ margin-top: 4px;
220
+ }
253
221
 
254
- // Hover/focus
255
- .navbar .nav > li > a:focus,
256
- .navbar .nav > li > a:hover {
257
- background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active
258
- color: @navbarLinkColorHover;
259
- text-decoration: none;
222
+ @media (min-width: @grid-float-breakpoint) {
223
+ display: none;
224
+ }
260
225
  }
261
226
 
262
- // Active nav items
263
- .navbar .nav > .active > a,
264
- .navbar .nav > .active > a:hover,
265
- .navbar .nav > .active > a:focus {
266
- color: @navbarLinkColorActive;
267
- text-decoration: none;
268
- background-color: @navbarLinkBackgroundActive;
269
- .box-shadow(inset 0 3px 8px rgba(0,0,0,.125));
270
- }
271
227
 
272
- // Navbar button for toggling navbar items in responsive layouts
273
- // These definitions need to come after '.navbar .btn'
274
- .navbar .btn-navbar {
275
- display: none;
276
- float: right;
277
- padding: 7px 10px;
278
- margin-left: 5px;
279
- margin-right: 5px;
280
- .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%));
281
- .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
282
- }
283
- .navbar .btn-navbar .icon-bar {
284
- display: block;
285
- width: 18px;
286
- height: 2px;
287
- background-color: #f5f5f5;
288
- .border-radius(1px);
289
- .box-shadow(0 1px 0 rgba(0,0,0,.25));
290
- }
291
- .btn-navbar .icon-bar + .icon-bar {
292
- margin-top: 3px;
228
+ // Navbar nav links
229
+ //
230
+ // Builds on top of the `.nav` components with its own modifier class to make
231
+ // the nav the full height of the horizontal nav (above 768px).
232
+
233
+ .navbar-nav {
234
+ margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;
235
+
236
+ > li > a {
237
+ padding-top: 10px;
238
+ padding-bottom: 10px;
239
+ line-height: @line-height-computed;
240
+ }
241
+
242
+ @media (max-width: @grid-float-breakpoint-max) {
243
+ // Dropdowns get custom display when collapsed
244
+ .open .dropdown-menu {
245
+ position: static;
246
+ float: none;
247
+ width: auto;
248
+ margin-top: 0;
249
+ background-color: transparent;
250
+ border: 0;
251
+ box-shadow: none;
252
+ > li > a,
253
+ .dropdown-header {
254
+ padding: 5px 15px 5px 25px;
255
+ }
256
+ > li > a {
257
+ line-height: @line-height-computed;
258
+ &:hover,
259
+ &:focus {
260
+ background-image: none;
261
+ }
262
+ }
263
+ }
264
+ }
265
+
266
+ // Uncollapse the nav
267
+ @media (min-width: @grid-float-breakpoint) {
268
+ float: left;
269
+ margin: 0;
270
+
271
+ > li {
272
+ float: left;
273
+ > a {
274
+ padding-top: @navbar-padding-vertical;
275
+ padding-bottom: @navbar-padding-vertical;
276
+ }
277
+ }
278
+ }
293
279
  }
294
280
 
295
281
 
282
+ // Navbar form
283
+ //
284
+ // Extension of the `.form-inline` with some extra flavor for optimum display in
285
+ // our navbars.
286
+
287
+ .navbar-form {
288
+ margin-left: -@navbar-padding-horizontal;
289
+ margin-right: -@navbar-padding-horizontal;
290
+ padding: 10px @navbar-padding-horizontal;
291
+ border-top: 1px solid transparent;
292
+ border-bottom: 1px solid transparent;
293
+ @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
294
+ .box-shadow(@shadow);
295
+
296
+ // Mixin behavior for optimum display
297
+ .form-inline();
298
+
299
+ .form-group {
300
+ @media (max-width: @grid-float-breakpoint-max) {
301
+ margin-bottom: 5px;
302
+ }
303
+ }
304
+
305
+ // Vertically center in expanded, horizontal navbar
306
+ .navbar-vertical-align(@input-height-base);
307
+
308
+ // Undo 100% width for pull classes
309
+ @media (min-width: @grid-float-breakpoint) {
310
+ width: auto;
311
+ border: 0;
312
+ margin-left: 0;
313
+ margin-right: 0;
314
+ padding-top: 0;
315
+ padding-bottom: 0;
316
+ .box-shadow(none);
317
+ }
318
+ }
319
+
296
320
 
297
321
  // Dropdown menus
298
- // --------------
299
322
 
300
323
  // Menu position and menu carets
301
- .navbar .nav > li > .dropdown-menu {
302
- &:before {
303
- content: '';
304
- display: inline-block;
305
- border-left: 7px solid transparent;
306
- border-right: 7px solid transparent;
307
- border-bottom: 7px solid #ccc;
308
- border-bottom-color: @dropdownBorder;
309
- position: absolute;
310
- top: -7px;
311
- left: 9px;
312
- }
313
- &:after {
314
- content: '';
315
- display: inline-block;
316
- border-left: 6px solid transparent;
317
- border-right: 6px solid transparent;
318
- border-bottom: 6px solid @dropdownBackground;
319
- position: absolute;
320
- top: -6px;
321
- left: 10px;
322
- }
324
+ .navbar-nav > li > .dropdown-menu {
325
+ margin-top: 0;
326
+ .border-top-radius(0);
323
327
  }
324
328
  // Menu position and menu caret support for dropups via extra dropup class
325
- .navbar-fixed-bottom .nav > li > .dropdown-menu {
326
- &:before {
327
- border-top: 7px solid #ccc;
328
- border-top-color: @dropdownBorder;
329
- border-bottom: 0;
330
- bottom: -7px;
331
- top: auto;
332
- }
333
- &:after {
334
- border-top: 6px solid @dropdownBackground;
335
- border-bottom: 0;
336
- bottom: -6px;
337
- top: auto;
338
- }
329
+ .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
330
+ .border-bottom-radius(0);
339
331
  }
340
332
 
341
- // Caret should match text color on hover/focus
342
- .navbar .nav li.dropdown > a:hover .caret,
343
- .navbar .nav li.dropdown > a:focus .caret {
344
- border-top-color: @navbarLinkColorHover;
345
- border-bottom-color: @navbarLinkColorHover;
346
- }
347
333
 
348
- // Remove background color from open dropdown
349
- .navbar .nav li.dropdown.open > .dropdown-toggle,
350
- .navbar .nav li.dropdown.active > .dropdown-toggle,
351
- .navbar .nav li.dropdown.open.active > .dropdown-toggle {
352
- background-color: @navbarLinkBackgroundActive;
353
- color: @navbarLinkColorActive;
334
+ // Buttons in navbars
335
+ //
336
+ // Vertically center a button within a navbar (when *not* in a form).
337
+
338
+ .navbar-btn {
339
+ .navbar-vertical-align(@input-height-base);
340
+
341
+ &.btn-sm {
342
+ .navbar-vertical-align(@input-height-small);
343
+ }
344
+ &.btn-xs {
345
+ .navbar-vertical-align(22);
346
+ }
354
347
  }
355
- .navbar .nav li.dropdown > .dropdown-toggle .caret {
356
- border-top-color: @navbarLinkColor;
357
- border-bottom-color: @navbarLinkColor;
348
+
349
+
350
+ // Text in navbars
351
+ //
352
+ // Add a class to make any element properly align itself vertically within the navbars.
353
+
354
+ .navbar-text {
355
+ .navbar-vertical-align(@line-height-computed);
356
+
357
+ @media (min-width: @grid-float-breakpoint) {
358
+ float: left;
359
+ margin-left: @navbar-padding-horizontal;
360
+ margin-right: @navbar-padding-horizontal;
361
+ }
358
362
  }
359
- .navbar .nav li.dropdown.open > .dropdown-toggle .caret,
360
- .navbar .nav li.dropdown.active > .dropdown-toggle .caret,
361
- .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
362
- border-top-color: @navbarLinkColorActive;
363
- border-bottom-color: @navbarLinkColorActive;
363
+
364
+
365
+ // Component alignment
366
+ //
367
+ // Repurpose the pull utilities as their own navbar utilities to avoid specificity
368
+ // issues with parents and chaining. Only do this when the navbar is uncollapsed
369
+ // though so that navbar contents properly stack and align in mobile.
370
+ //
371
+ // Declared after the navbar components to ensure more specificity on the margins.
372
+
373
+ @media (min-width: @grid-float-breakpoint) {
374
+ .navbar-left { .pull-left(); }
375
+ .navbar-right {
376
+ .pull-right();
377
+ margin-right: -@navbar-padding-horizontal;
378
+
379
+ ~ .navbar-right {
380
+ margin-right: 0;
381
+ }
382
+ }
364
383
  }
365
384
 
366
- // Right aligned menus need alt position
367
- .navbar .pull-right > li > .dropdown-menu,
368
- .navbar .nav > li > .dropdown-menu.pull-right {
369
- left: auto;
370
- right: 0;
371
- &:before {
372
- left: auto;
373
- right: 12px;
385
+
386
+ // Alternate navbars
387
+ // --------------------------------------------------
388
+
389
+ // Default navbar
390
+ .navbar-default {
391
+ background-color: @navbar-default-bg;
392
+ border-color: @navbar-default-border;
393
+
394
+ .navbar-brand {
395
+ color: @navbar-default-brand-color;
396
+ &:hover,
397
+ &:focus {
398
+ color: @navbar-default-brand-hover-color;
399
+ background-color: @navbar-default-brand-hover-bg;
400
+ }
374
401
  }
375
- &:after {
376
- left: auto;
377
- right: 13px;
402
+
403
+ .navbar-text {
404
+ color: @navbar-default-color;
378
405
  }
379
- .dropdown-menu {
380
- left: auto;
381
- right: 100%;
382
- margin-left: 0;
383
- margin-right: -1px;
384
- .border-radius(6px 0 6px 6px);
406
+
407
+ .navbar-nav {
408
+ > li > a {
409
+ color: @navbar-default-link-color;
410
+
411
+ &:hover,
412
+ &:focus {
413
+ color: @navbar-default-link-hover-color;
414
+ background-color: @navbar-default-link-hover-bg;
415
+ }
416
+ }
417
+ > .active > a {
418
+ &,
419
+ &:hover,
420
+ &:focus {
421
+ color: @navbar-default-link-active-color;
422
+ background-color: @navbar-default-link-active-bg;
423
+ }
424
+ }
425
+ > .disabled > a {
426
+ &,
427
+ &:hover,
428
+ &:focus {
429
+ color: @navbar-default-link-disabled-color;
430
+ background-color: @navbar-default-link-disabled-bg;
431
+ }
432
+ }
385
433
  }
386
- }
387
434
 
435
+ .navbar-toggle {
436
+ border-color: @navbar-default-toggle-border-color;
437
+ &:hover,
438
+ &:focus {
439
+ background-color: @navbar-default-toggle-hover-bg;
440
+ }
441
+ .icon-bar {
442
+ background-color: @navbar-default-toggle-icon-bar-bg;
443
+ }
444
+ }
388
445
 
389
- // Inverted navbar
390
- // -------------------------
446
+ .navbar-collapse,
447
+ .navbar-form {
448
+ border-color: @navbar-default-border;
449
+ }
391
450
 
392
- .navbar-inverse {
451
+ // Dropdown menu items
452
+ .navbar-nav {
453
+ // Remove background color from open dropdown
454
+ > .open > a {
455
+ &,
456
+ &:hover,
457
+ &:focus {
458
+ background-color: @navbar-default-link-active-bg;
459
+ color: @navbar-default-link-active-color;
460
+ }
461
+ }
393
462
 
394
- .navbar-inner {
395
- #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
396
- border-color: @navbarInverseBorder;
463
+ @media (max-width: @grid-float-breakpoint-max) {
464
+ // Dropdowns get custom display when collapsed
465
+ .open .dropdown-menu {
466
+ > li > a {
467
+ color: @navbar-default-link-color;
468
+ &:hover,
469
+ &:focus {
470
+ color: @navbar-default-link-hover-color;
471
+ background-color: @navbar-default-link-hover-bg;
472
+ }
473
+ }
474
+ > .active > a {
475
+ &,
476
+ &:hover,
477
+ &:focus {
478
+ color: @navbar-default-link-active-color;
479
+ background-color: @navbar-default-link-active-bg;
480
+ }
481
+ }
482
+ > .disabled > a {
483
+ &,
484
+ &:hover,
485
+ &:focus {
486
+ color: @navbar-default-link-disabled-color;
487
+ background-color: @navbar-default-link-disabled-bg;
488
+ }
489
+ }
490
+ }
491
+ }
397
492
  }
398
493
 
399
- .brand,
400
- .nav > li > a {
401
- color: @navbarInverseLinkColor;
402
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
494
+
495
+ // Links in navbars
496
+ //
497
+ // Add a class to ensure links outside the navbar nav are colored correctly.
498
+
499
+ .navbar-link {
500
+ color: @navbar-default-link-color;
501
+ &:hover {
502
+ color: @navbar-default-link-hover-color;
503
+ }
504
+ }
505
+
506
+ .btn-link {
507
+ color: @navbar-default-link-color;
403
508
  &:hover,
404
509
  &:focus {
405
- color: @navbarInverseLinkColorHover;
510
+ color: @navbar-default-link-hover-color;
511
+ }
512
+ &[disabled],
513
+ fieldset[disabled] & {
514
+ &:hover,
515
+ &:focus {
516
+ color: @navbar-default-link-disabled-color;
517
+ }
406
518
  }
407
519
  }
520
+ }
521
+
522
+ // Inverse navbar
408
523
 
409
- .brand {
410
- color: @navbarInverseBrandColor;
524
+ .navbar-inverse {
525
+ background-color: @navbar-inverse-bg;
526
+ border-color: @navbar-inverse-border;
527
+
528
+ .navbar-brand {
529
+ color: @navbar-inverse-brand-color;
530
+ &:hover,
531
+ &:focus {
532
+ color: @navbar-inverse-brand-hover-color;
533
+ background-color: @navbar-inverse-brand-hover-bg;
534
+ }
411
535
  }
412
536
 
413
537
  .navbar-text {
414
- color: @navbarInverseText;
538
+ color: @navbar-inverse-color;
415
539
  }
416
540
 
417
- .nav > li > a:focus,
418
- .nav > li > a:hover {
419
- background-color: @navbarInverseLinkBackgroundHover;
420
- color: @navbarInverseLinkColorHover;
421
- }
541
+ .navbar-nav {
542
+ > li > a {
543
+ color: @navbar-inverse-link-color;
422
544
 
423
- .nav .active > a,
424
- .nav .active > a:hover,
425
- .nav .active > a:focus {
426
- color: @navbarInverseLinkColorActive;
427
- background-color: @navbarInverseLinkBackgroundActive;
545
+ &:hover,
546
+ &:focus {
547
+ color: @navbar-inverse-link-hover-color;
548
+ background-color: @navbar-inverse-link-hover-bg;
549
+ }
550
+ }
551
+ > .active > a {
552
+ &,
553
+ &:hover,
554
+ &:focus {
555
+ color: @navbar-inverse-link-active-color;
556
+ background-color: @navbar-inverse-link-active-bg;
557
+ }
558
+ }
559
+ > .disabled > a {
560
+ &,
561
+ &:hover,
562
+ &:focus {
563
+ color: @navbar-inverse-link-disabled-color;
564
+ background-color: @navbar-inverse-link-disabled-bg;
565
+ }
566
+ }
428
567
  }
429
568
 
430
- // Inline text links
431
- .navbar-link {
432
- color: @navbarInverseLinkColor;
569
+ // Darken the responsive nav toggle
570
+ .navbar-toggle {
571
+ border-color: @navbar-inverse-toggle-border-color;
433
572
  &:hover,
434
573
  &:focus {
435
- color: @navbarInverseLinkColorHover;
574
+ background-color: @navbar-inverse-toggle-hover-bg;
575
+ }
576
+ .icon-bar {
577
+ background-color: @navbar-inverse-toggle-icon-bar-bg;
436
578
  }
437
579
  }
438
580
 
439
- // Dividers in navbar
440
- .divider-vertical {
441
- border-left-color: @navbarInverseBackground;
442
- border-right-color: @navbarInverseBackgroundHighlight;
581
+ .navbar-collapse,
582
+ .navbar-form {
583
+ border-color: darken(@navbar-inverse-bg, 7%);
443
584
  }
444
585
 
445
586
  // Dropdowns
446
- .nav li.dropdown.open > .dropdown-toggle,
447
- .nav li.dropdown.active > .dropdown-toggle,
448
- .nav li.dropdown.open.active > .dropdown-toggle {
449
- background-color: @navbarInverseLinkBackgroundActive;
450
- color: @navbarInverseLinkColorActive;
451
- }
452
- .nav li.dropdown > a:hover .caret,
453
- .nav li.dropdown > a:focus .caret {
454
- border-top-color: @navbarInverseLinkColorActive;
455
- border-bottom-color: @navbarInverseLinkColorActive;
456
- }
457
- .nav li.dropdown > .dropdown-toggle .caret {
458
- border-top-color: @navbarInverseLinkColor;
459
- border-bottom-color: @navbarInverseLinkColor;
460
- }
461
- .nav li.dropdown.open > .dropdown-toggle .caret,
462
- .nav li.dropdown.active > .dropdown-toggle .caret,
463
- .nav li.dropdown.open.active > .dropdown-toggle .caret {
464
- border-top-color: @navbarInverseLinkColorActive;
465
- border-bottom-color: @navbarInverseLinkColorActive;
466
- }
467
-
468
- // Navbar search
469
- .navbar-search {
470
- .search-query {
471
- color: @white;
472
- background-color: @navbarInverseSearchBackground;
473
- border-color: @navbarInverseSearchBorder;
474
- .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
475
- .transition(none);
476
- .placeholder(@navbarInverseSearchPlaceholderColor);
477
-
478
- // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
479
- &:focus,
480
- &.focused {
481
- padding: 5px 15px;
482
- color: @grayDark;
483
- text-shadow: 0 1px 0 @white;
484
- background-color: @navbarInverseSearchBackgroundFocus;
485
- border: 0;
486
- .box-shadow(0 0 3px rgba(0,0,0,.15));
487
- outline: 0;
587
+ .navbar-nav {
588
+ > .open > a {
589
+ &,
590
+ &:hover,
591
+ &:focus {
592
+ background-color: @navbar-inverse-link-active-bg;
593
+ color: @navbar-inverse-link-active-color;
594
+ }
595
+ }
596
+
597
+ @media (max-width: @grid-float-breakpoint-max) {
598
+ // Dropdowns get custom display
599
+ .open .dropdown-menu {
600
+ > .dropdown-header {
601
+ border-color: @navbar-inverse-border;
602
+ }
603
+ .divider {
604
+ background-color: @navbar-inverse-border;
605
+ }
606
+ > li > a {
607
+ color: @navbar-inverse-link-color;
608
+ &:hover,
609
+ &:focus {
610
+ color: @navbar-inverse-link-hover-color;
611
+ background-color: @navbar-inverse-link-hover-bg;
612
+ }
613
+ }
614
+ > .active > a {
615
+ &,
616
+ &:hover,
617
+ &:focus {
618
+ color: @navbar-inverse-link-active-color;
619
+ background-color: @navbar-inverse-link-active-bg;
620
+ }
621
+ }
622
+ > .disabled > a {
623
+ &,
624
+ &:hover,
625
+ &:focus {
626
+ color: @navbar-inverse-link-disabled-color;
627
+ background-color: @navbar-inverse-link-disabled-bg;
628
+ }
629
+ }
488
630
  }
489
631
  }
490
632
  }
491
633
 
492
- // Navbar collapse button
493
- .btn-navbar {
494
- .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%));
634
+ .navbar-link {
635
+ color: @navbar-inverse-link-color;
636
+ &:hover {
637
+ color: @navbar-inverse-link-hover-color;
638
+ }
495
639
  }
496
640
 
641
+ .btn-link {
642
+ color: @navbar-inverse-link-color;
643
+ &:hover,
644
+ &:focus {
645
+ color: @navbar-inverse-link-hover-color;
646
+ }
647
+ &[disabled],
648
+ fieldset[disabled] & {
649
+ &:hover,
650
+ &:focus {
651
+ color: @navbar-inverse-link-disabled-color;
652
+ }
653
+ }
654
+ }
497
655
  }