twitter-bootstrap-rails 2.2.8 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of twitter-bootstrap-rails might be problematic. Click here for more details.

Files changed (181) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +82 -119
  3. data/Rakefile +4 -6
  4. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  5. data/app/assets/fonts/fontawesome-webfont.svg +471 -366
  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 -13
  13. data/app/assets/javascripts/twitter/bootstrap/affix.js +137 -0
  14. data/app/assets/javascripts/twitter/bootstrap/alert.js +88 -0
  15. data/app/assets/javascripts/twitter/bootstrap/button.js +107 -0
  16. data/app/assets/javascripts/twitter/bootstrap/carousel.js +205 -0
  17. data/app/assets/javascripts/twitter/bootstrap/collapse.js +170 -0
  18. data/app/assets/javascripts/twitter/bootstrap/dropdown.js +147 -0
  19. data/app/assets/javascripts/twitter/bootstrap/modal.js +243 -0
  20. data/app/assets/javascripts/twitter/bootstrap/popover.js +110 -0
  21. data/app/assets/javascripts/twitter/bootstrap/scrollspy.js +153 -0
  22. data/app/assets/javascripts/twitter/bootstrap/tab.js +125 -0
  23. data/app/assets/javascripts/twitter/bootstrap/tooltip.js +399 -0
  24. data/app/assets/javascripts/twitter/bootstrap/transition.js +48 -0
  25. data/app/assets/stylesheets/twitter-bootstrap-static/bootstrap.css.erb +1 -890
  26. data/app/assets/stylesheets/twitter-bootstrap-static/fontawesome.css.erb +4 -787
  27. data/app/assets/stylesheets/twitter-bootstrap-static/sprites.css.erb +1 -146
  28. data/app/helpers/bootstrap_flash_helper.rb +7 -5
  29. data/app/helpers/form_errors_helper.rb +22 -0
  30. data/app/helpers/glyph_helper.rb +8 -6
  31. data/app/helpers/modal_helper.rb +29 -21
  32. data/app/helpers/navbar_helper.rb +42 -30
  33. data/app/helpers/twitter_breadcrumbs_helper.rb +3 -2
  34. data/app/views/twitter-bootstrap/_breadcrumbs.html.erb +4 -4
  35. data/lib/generators/bootstrap/install/install_generator.rb +3 -2
  36. data/lib/generators/bootstrap/install/templates/bootstrap_and_overrides.less +7 -8
  37. data/lib/generators/bootstrap/install/templates/en.bootstrap.yml +5 -0
  38. data/lib/generators/bootstrap/layout/layout_generator.rb +1 -4
  39. data/lib/generators/bootstrap/layout/templates/layout.html.erb +22 -43
  40. data/lib/generators/bootstrap/layout/templates/layout.html.haml +16 -31
  41. data/lib/generators/bootstrap/layout/templates/layout.html.slim +10 -25
  42. data/lib/generators/bootstrap/partial/templates/_login.html.erb +2 -3
  43. data/lib/generators/bootstrap/themed/templates/_form.html.erb +25 -8
  44. data/lib/generators/bootstrap/themed/templates/_form.html.haml +7 -7
  45. data/lib/generators/bootstrap/themed/templates/_form.html.slim +7 -7
  46. data/lib/generators/bootstrap/themed/templates/index.html.erb +2 -2
  47. data/lib/generators/bootstrap/themed/templates/index.html.haml +2 -2
  48. data/lib/generators/bootstrap/themed/templates/index.html.slim +2 -2
  49. data/lib/generators/bootstrap/themed/templates/show.html.erb +5 -7
  50. data/lib/generators/bootstrap/themed/templates/show.html.haml +4 -4
  51. data/lib/generators/bootstrap/themed/templates/show.html.slim +5 -6
  52. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.erb +5 -5
  53. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.haml +3 -3
  54. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.slim +4 -4
  55. data/lib/generators/bootstrap/themed/themed_generator.rb +2 -2
  56. data/lib/twitter/bootstrap/rails/{twitter-bootstrap-breadcrumbs.rb → breadcrumbs.rb} +24 -8
  57. data/lib/twitter/bootstrap/rails/engine.rb +5 -2
  58. data/lib/twitter/bootstrap/rails/version.rb +2 -2
  59. data/spec/lib/breadcrumbs_spec.rb +74 -0
  60. data/spec/lib/twitter_bootstrap_rails/badge_label_helper_spec.rb +4 -2
  61. data/spec/lib/twitter_bootstrap_rails/modal_helper_spec.rb +15 -15
  62. data/spec/lib/twitter_bootstrap_rails/navbar_helper_spec.rb +157 -173
  63. data/spec/lib/twitter_bootstrap_rails/uri_state_spec.rb +18 -16
  64. data/spec/spec_helper.rb +7 -1
  65. data/vendor/assets/stylesheets/twitter-bootstrap-static/bootstrap.css.erb +5797 -0
  66. data/vendor/static-source/bootstrap.less +0 -1
  67. data/vendor/static-source/fontawesome.less +0 -1
  68. data/vendor/static-source/sprites.less +1 -1
  69. data/vendor/toolkit/fontawesome/bordered-pulled.less +16 -0
  70. data/vendor/toolkit/fontawesome/core.less +9 -126
  71. data/vendor/toolkit/fontawesome/fixed-width.less +6 -0
  72. data/vendor/toolkit/fontawesome/font-awesome.less +9 -25
  73. data/vendor/toolkit/fontawesome/icons.less +503 -378
  74. data/vendor/toolkit/fontawesome/larger.less +13 -0
  75. data/vendor/toolkit/fontawesome/list.less +19 -0
  76. data/vendor/toolkit/fontawesome/mixins.less +14 -42
  77. data/vendor/toolkit/fontawesome/path.less +1 -1
  78. data/vendor/toolkit/fontawesome/rotated-flipped.less +9 -0
  79. data/vendor/toolkit/fontawesome/spinning.less +32 -0
  80. data/vendor/toolkit/fontawesome/stacked.less +20 -0
  81. data/vendor/toolkit/fontawesome/variables.less +511 -731
  82. data/vendor/toolkit/twitter/bootstrap/alerts.less +47 -58
  83. data/vendor/toolkit/twitter/bootstrap/badges.less +55 -0
  84. data/vendor/toolkit/twitter/bootstrap/bootstrap.less +27 -39
  85. data/vendor/toolkit/twitter/bootstrap/breadcrumbs.less +11 -9
  86. data/vendor/toolkit/twitter/bootstrap/button-groups.less +168 -152
  87. data/vendor/toolkit/twitter/bootstrap/buttons.less +101 -170
  88. data/vendor/toolkit/twitter/bootstrap/carousel.less +150 -65
  89. data/vendor/toolkit/twitter/bootstrap/close.less +20 -19
  90. data/vendor/toolkit/twitter/bootstrap/code.less +38 -30
  91. data/vendor/toolkit/twitter/bootstrap/component-animations.less +12 -3
  92. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +115 -148
  93. data/vendor/toolkit/twitter/bootstrap/forms.less +401 -547
  94. data/vendor/toolkit/twitter/bootstrap/glyphicons.less +233 -0
  95. data/vendor/toolkit/twitter/bootstrap/grid.less +74 -11
  96. data/vendor/toolkit/twitter/bootstrap/input-groups.less +166 -0
  97. data/vendor/toolkit/twitter/bootstrap/jumbotron.less +48 -0
  98. data/vendor/toolkit/twitter/bootstrap/labels.less +64 -0
  99. data/vendor/toolkit/twitter/bootstrap/list-group.less +132 -0
  100. data/vendor/toolkit/twitter/bootstrap/media.less +8 -7
  101. data/vendor/toolkit/twitter/bootstrap/mixins.less +36 -699
  102. data/vendor/toolkit/twitter/bootstrap/mixins/alerts.less +14 -0
  103. data/vendor/toolkit/twitter/bootstrap/mixins/background-variant.less +8 -0
  104. data/vendor/toolkit/twitter/bootstrap/mixins/border-radius.less +18 -0
  105. data/vendor/toolkit/twitter/bootstrap/mixins/buttons.less +52 -0
  106. data/vendor/toolkit/twitter/bootstrap/mixins/center-block.less +7 -0
  107. data/vendor/toolkit/twitter/bootstrap/mixins/clearfix.less +22 -0
  108. data/vendor/toolkit/twitter/bootstrap/mixins/forms.less +85 -0
  109. data/vendor/toolkit/twitter/bootstrap/mixins/gradients.less +59 -0
  110. data/vendor/toolkit/twitter/bootstrap/mixins/grid-framework.less +91 -0
  111. data/vendor/toolkit/twitter/bootstrap/mixins/grid.less +122 -0
  112. data/vendor/toolkit/twitter/bootstrap/mixins/hide-text.less +21 -0
  113. data/vendor/toolkit/twitter/bootstrap/mixins/image.less +33 -0
  114. data/vendor/toolkit/twitter/bootstrap/mixins/labels.less +12 -0
  115. data/vendor/toolkit/twitter/bootstrap/mixins/list-group.less +29 -0
  116. data/vendor/toolkit/twitter/bootstrap/mixins/nav-divider.less +10 -0
  117. data/vendor/toolkit/twitter/bootstrap/mixins/nav-vertical-align.less +9 -0
  118. data/vendor/toolkit/twitter/bootstrap/mixins/opacity.less +8 -0
  119. data/vendor/toolkit/twitter/bootstrap/mixins/pagination.less +23 -0
  120. data/vendor/toolkit/twitter/bootstrap/mixins/panels.less +24 -0
  121. data/vendor/toolkit/twitter/bootstrap/mixins/progress-bar.less +10 -0
  122. data/vendor/toolkit/twitter/bootstrap/mixins/reset-filter.less +8 -0
  123. data/vendor/toolkit/twitter/bootstrap/mixins/resize.less +6 -0
  124. data/vendor/toolkit/twitter/bootstrap/mixins/responsive-visibility.less +15 -0
  125. data/vendor/toolkit/twitter/bootstrap/mixins/size.less +10 -0
  126. data/vendor/toolkit/twitter/bootstrap/mixins/tab-focus.less +9 -0
  127. data/vendor/toolkit/twitter/bootstrap/mixins/table-row.less +28 -0
  128. data/vendor/toolkit/twitter/bootstrap/mixins/text-emphasis.less +8 -0
  129. data/vendor/toolkit/twitter/bootstrap/mixins/text-overflow.less +8 -0
  130. data/vendor/toolkit/twitter/bootstrap/mixins/vendor-prefixes.less +224 -0
  131. data/vendor/toolkit/twitter/bootstrap/modals.less +109 -54
  132. data/vendor/toolkit/twitter/bootstrap/navbar.less +542 -384
  133. data/vendor/toolkit/twitter/bootstrap/navs.less +192 -359
  134. data/vendor/toolkit/twitter/bootstrap/normalize.less +425 -0
  135. data/vendor/toolkit/twitter/bootstrap/pager.less +46 -34
  136. data/vendor/toolkit/twitter/bootstrap/pagination.less +70 -105
  137. data/vendor/toolkit/twitter/bootstrap/panels.less +248 -0
  138. data/vendor/toolkit/twitter/bootstrap/popovers.less +61 -61
  139. data/vendor/toolkit/twitter/bootstrap/print.less +101 -0
  140. data/vendor/toolkit/twitter/bootstrap/progress-bars.less +51 -73
  141. data/vendor/toolkit/twitter/bootstrap/responsive-embed.less +34 -0
  142. data/vendor/toolkit/twitter/bootstrap/responsive-utilities.less +177 -42
  143. data/vendor/toolkit/twitter/bootstrap/scaffolding.less +120 -23
  144. data/vendor/toolkit/twitter/bootstrap/tables.less +171 -182
  145. data/vendor/toolkit/twitter/bootstrap/theme.less +260 -0
  146. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +26 -43
  147. data/vendor/toolkit/twitter/bootstrap/tooltip.less +49 -24
  148. data/vendor/toolkit/twitter/bootstrap/type.less +208 -147
  149. data/vendor/toolkit/twitter/bootstrap/utilities.less +33 -7
  150. data/vendor/toolkit/twitter/bootstrap/variables.less +761 -215
  151. data/vendor/toolkit/twitter/bootstrap/wells.less +7 -7
  152. metadata +128 -138
  153. data/app/assets/javascripts/twitter/bootstrap/bootstrap-affix.js +0 -117
  154. data/app/assets/javascripts/twitter/bootstrap/bootstrap-alert.js +0 -99
  155. data/app/assets/javascripts/twitter/bootstrap/bootstrap-button.js +0 -105
  156. data/app/assets/javascripts/twitter/bootstrap/bootstrap-carousel.js +0 -207
  157. data/app/assets/javascripts/twitter/bootstrap/bootstrap-collapse.js +0 -167
  158. data/app/assets/javascripts/twitter/bootstrap/bootstrap-dropdown.js +0 -169
  159. data/app/assets/javascripts/twitter/bootstrap/bootstrap-modal.js +0 -247
  160. data/app/assets/javascripts/twitter/bootstrap/bootstrap-popover.js +0 -114
  161. data/app/assets/javascripts/twitter/bootstrap/bootstrap-scrollspy.js +0 -162
  162. data/app/assets/javascripts/twitter/bootstrap/bootstrap-tab.js +0 -144
  163. data/app/assets/javascripts/twitter/bootstrap/bootstrap-tooltip.js +0 -361
  164. data/app/assets/javascripts/twitter/bootstrap/bootstrap-transition.js +0 -60
  165. data/app/assets/javascripts/twitter/bootstrap/bootstrap-typeahead.js +0 -335
  166. data/test/lib/breadcrumbs_test.rb +0 -75
  167. data/test/test_helper.rb +0 -11
  168. data/vendor/toolkit/fontawesome/bootstrap.less +0 -84
  169. data/vendor/toolkit/fontawesome/extras.less +0 -93
  170. data/vendor/toolkit/fontawesome/font-awesome-ie7.less +0 -1953
  171. data/vendor/toolkit/twitter/bootstrap/accordion.less +0 -34
  172. data/vendor/toolkit/twitter/bootstrap/hero-unit.less +0 -25
  173. data/vendor/toolkit/twitter/bootstrap/labels-badges.less +0 -84
  174. data/vendor/toolkit/twitter/bootstrap/layouts.less +0 -16
  175. data/vendor/toolkit/twitter/bootstrap/reset.less +0 -216
  176. data/vendor/toolkit/twitter/bootstrap/responsive-1200px-min.less +0 -28
  177. data/vendor/toolkit/twitter/bootstrap/responsive-767px-max.less +0 -193
  178. data/vendor/toolkit/twitter/bootstrap/responsive-768px-979px.less +0 -19
  179. data/vendor/toolkit/twitter/bootstrap/responsive-navbar.less +0 -189
  180. data/vendor/toolkit/twitter/bootstrap/responsive.less +0 -48
  181. 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
  }