rvnstat 1.0.4

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 (271) hide show
  1. checksums.yaml +7 -0
  2. data/._README.md +0 -0
  3. data/._ss.png +0 -0
  4. data/.gitignore +17 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +34 -0
  8. data/Rakefile +1 -0
  9. data/bin/._rvnstat +0 -0
  10. data/bin/rvnstat +9 -0
  11. data/config.ru +4 -0
  12. data/config.yml +3 -0
  13. data/lib/._app.rb +0 -0
  14. data/lib/._config.rb +0 -0
  15. data/lib/._require.rb +0 -0
  16. data/lib/._rvnstat.rb +0 -0
  17. data/lib/._vnstat.rb +0 -0
  18. data/lib/app.rb +102 -0
  19. data/lib/config.rb +13 -0
  20. data/lib/require.rb +10 -0
  21. data/lib/rvnstat.rb +5 -0
  22. data/lib/rvnstat/._version.rb +0 -0
  23. data/lib/rvnstat/version.rb +3 -0
  24. data/lib/vnstat.rb +74 -0
  25. data/public/CNAME +1 -0
  26. data/public/CONTRIBUTING.md +192 -0
  27. data/public/Gruntfile.js +418 -0
  28. data/public/LICENSE +21 -0
  29. data/public/README.md +173 -0
  30. data/public/_config.yml +35 -0
  31. data/public/bower.json +24 -0
  32. data/public/browserstack.json +44 -0
  33. data/public/composer.json +25 -0
  34. data/public/dist/css/._custom.css +0 -0
  35. data/public/dist/css/bootstrap-theme.css +347 -0
  36. data/public/dist/css/bootstrap-theme.css.map +1 -0
  37. data/public/dist/css/bootstrap-theme.min.css +7 -0
  38. data/public/dist/css/bootstrap.css +5831 -0
  39. data/public/dist/css/bootstrap.css.map +1 -0
  40. data/public/dist/css/bootstrap.min.css +7 -0
  41. data/public/dist/css/custom.css +20 -0
  42. data/public/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  43. data/public/dist/fonts/glyphicons-halflings-regular.svg +229 -0
  44. data/public/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  45. data/public/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  46. data/public/dist/js/bootstrap.js +1951 -0
  47. data/public/dist/js/bootstrap.min.js +6 -0
  48. data/public/docs/LICENSE +319 -0
  49. data/public/docs/_data/glyphicons.yml +203 -0
  50. data/public/docs/_data/showcase.yml +19 -0
  51. data/public/docs/_includes/ads.html +1 -0
  52. data/public/docs/_includes/customizer-variables.html +1690 -0
  53. data/public/docs/_includes/footer.html +70 -0
  54. data/public/docs/_includes/header.html +42 -0
  55. data/public/docs/_includes/nav-about.html +9 -0
  56. data/public/docs/_includes/nav-components.html +138 -0
  57. data/public/docs/_includes/nav-css.html +127 -0
  58. data/public/docs/_includes/nav-customize.html +46 -0
  59. data/public/docs/_includes/nav-getting-started.html +62 -0
  60. data/public/docs/_includes/nav-javascript.html +89 -0
  61. data/public/docs/_includes/nav-main.html +36 -0
  62. data/public/docs/_includes/nav-migration.html +12 -0
  63. data/public/docs/_includes/social-buttons.html +16 -0
  64. data/public/docs/_layouts/default.html +55 -0
  65. data/public/docs/_layouts/home.html +18 -0
  66. data/public/docs/about.html +149 -0
  67. data/public/docs/assets/css/docs.css +1394 -0
  68. data/public/docs/assets/css/docs.min.css +6 -0
  69. data/public/docs/assets/css/pygments-manni.css +66 -0
  70. data/public/docs/assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  71. data/public/docs/assets/ico/favicon.ico +0 -0
  72. data/public/docs/assets/img/components.png +0 -0
  73. data/public/docs/assets/img/devices.png +0 -0
  74. data/public/docs/assets/img/sass-less.png +0 -0
  75. data/public/docs/assets/js/application.js +101 -0
  76. data/public/docs/assets/js/customize.min.js +49 -0
  77. data/public/docs/assets/js/customizer.js +348 -0
  78. data/public/docs/assets/js/docs.min.js +16 -0
  79. data/public/docs/assets/js/ie8-responsive-file-warning.js +12 -0
  80. data/public/docs/assets/js/raw-files.min.js +8 -0
  81. data/public/docs/assets/js/vendor/blob.js +166 -0
  82. data/public/docs/assets/js/vendor/filesaver.js +236 -0
  83. data/public/docs/assets/js/vendor/holder.js +645 -0
  84. data/public/docs/assets/js/vendor/jszip.js +1474 -0
  85. data/public/docs/assets/js/vendor/less.min.js +16 -0
  86. data/public/docs/assets/js/vendor/uglify.min.js +14 -0
  87. data/public/docs/components.html +3001 -0
  88. data/public/docs/css.html +3346 -0
  89. data/public/docs/customize.html +356 -0
  90. data/public/docs/customizer-nav.jade +15 -0
  91. data/public/docs/customizer-variables.jade +21 -0
  92. data/public/docs/dist/css/bootstrap-theme.css.map +1 -0
  93. data/public/docs/dist/css/bootstrap-theme.min.css +7 -0
  94. data/public/docs/dist/css/bootstrap.css.map +1 -0
  95. data/public/docs/dist/css/bootstrap.min.css +7 -0
  96. data/public/docs/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  97. data/public/docs/dist/fonts/glyphicons-halflings-regular.svg +229 -0
  98. data/public/docs/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  99. data/public/docs/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  100. data/public/docs/dist/js/bootstrap.min.js +7 -0
  101. data/public/docs/examples/blog/blog.css +168 -0
  102. data/public/docs/examples/blog/index.html +171 -0
  103. data/public/docs/examples/carousel/carousel.css +148 -0
  104. data/public/docs/examples/carousel/index.html +206 -0
  105. data/public/docs/examples/cover/cover.css +161 -0
  106. data/public/docs/examples/cover/index.html +75 -0
  107. data/public/docs/examples/dashboard/dashboard.css +93 -0
  108. data/public/docs/examples/dashboard/index.html +243 -0
  109. data/public/docs/examples/grid/grid.css +28 -0
  110. data/public/docs/examples/grid/index.html +152 -0
  111. data/public/docs/examples/jumbotron-narrow/index.html +82 -0
  112. data/public/docs/examples/jumbotron-narrow/jumbotron-narrow.css +79 -0
  113. data/public/docs/examples/jumbotron/index.html +99 -0
  114. data/public/docs/examples/jumbotron/jumbotron.css +5 -0
  115. data/public/docs/examples/justified-nav/index.html +84 -0
  116. data/public/docs/examples/justified-nav/justified-nav.css +88 -0
  117. data/public/docs/examples/navbar-fixed-top/index.html +91 -0
  118. data/public/docs/examples/navbar-fixed-top/navbar-fixed-top.css +4 -0
  119. data/public/docs/examples/navbar-static-top/index.html +92 -0
  120. data/public/docs/examples/navbar-static-top/navbar-static-top.css +7 -0
  121. data/public/docs/examples/navbar/index.html +90 -0
  122. data/public/docs/examples/navbar/navbar.css +8 -0
  123. data/public/docs/examples/non-responsive/index.html +105 -0
  124. data/public/docs/examples/non-responsive/non-responsive.css +120 -0
  125. data/public/docs/examples/offcanvas/index.html +130 -0
  126. data/public/docs/examples/offcanvas/offcanvas.css +51 -0
  127. data/public/docs/examples/offcanvas/offcanvas.js +5 -0
  128. data/public/docs/examples/screenshots/blog.jpg +0 -0
  129. data/public/docs/examples/screenshots/carousel.jpg +0 -0
  130. data/public/docs/examples/screenshots/cover.jpg +0 -0
  131. data/public/docs/examples/screenshots/dashboard.jpg +0 -0
  132. data/public/docs/examples/screenshots/grid.jpg +0 -0
  133. data/public/docs/examples/screenshots/jumbotron-narrow.jpg +0 -0
  134. data/public/docs/examples/screenshots/jumbotron.jpg +0 -0
  135. data/public/docs/examples/screenshots/justified-nav.jpg +0 -0
  136. data/public/docs/examples/screenshots/navbar-fixed.jpg +0 -0
  137. data/public/docs/examples/screenshots/navbar-static.jpg +0 -0
  138. data/public/docs/examples/screenshots/navbar.jpg +0 -0
  139. data/public/docs/examples/screenshots/non-responsive.jpg +0 -0
  140. data/public/docs/examples/screenshots/offcanvas.jpg +0 -0
  141. data/public/docs/examples/screenshots/sign-in.jpg +0 -0
  142. data/public/docs/examples/screenshots/starter-template.jpg +0 -0
  143. data/public/docs/examples/screenshots/sticky-footer-navbar.jpg +0 -0
  144. data/public/docs/examples/screenshots/sticky-footer.jpg +0 -0
  145. data/public/docs/examples/screenshots/theme.jpg +0 -0
  146. data/public/docs/examples/signin/index.html +50 -0
  147. data/public/docs/examples/signin/signin.css +40 -0
  148. data/public/docs/examples/starter-template/index.html +68 -0
  149. data/public/docs/examples/starter-template/starter-template.css +7 -0
  150. data/public/docs/examples/sticky-footer-navbar/index.html +91 -0
  151. data/public/docs/examples/sticky-footer-navbar/sticky-footer-navbar.css +45 -0
  152. data/public/docs/examples/sticky-footer/index.html +55 -0
  153. data/public/docs/examples/sticky-footer/sticky-footer.css +38 -0
  154. data/public/docs/examples/theme/index.html +384 -0
  155. data/public/docs/examples/theme/theme.css +14 -0
  156. data/public/docs/getting-started.html +773 -0
  157. data/public/docs/grunt/bs-glyphicons-data-generator.js +33 -0
  158. data/public/docs/grunt/bs-lessdoc-parser.js +236 -0
  159. data/public/docs/grunt/bs-raw-files-generator.js +31 -0
  160. data/public/docs/index.html +72 -0
  161. data/public/docs/javascript.html +2141 -0
  162. data/public/docs/migration.html +423 -0
  163. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  164. data/public/fonts/glyphicons-halflings-regular.svg +229 -0
  165. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  166. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  167. data/public/js/._exporting.js +0 -0
  168. data/public/js/._highcharts-all.js +0 -0
  169. data/public/js/._jquery-min.js +0 -0
  170. data/public/js/.jscs.json +15 -0
  171. data/public/js/.jshintrc +14 -0
  172. data/public/js/affix.js +137 -0
  173. data/public/js/alert.js +88 -0
  174. data/public/js/bootstrap.min.js +6 -0
  175. data/public/js/button.js +107 -0
  176. data/public/js/carousel.js +205 -0
  177. data/public/js/collapse.js +170 -0
  178. data/public/js/dropdown.js +147 -0
  179. data/public/js/highcharts.js +294 -0
  180. data/public/js/jquery-1.11.0.min.js +4 -0
  181. data/public/js/modal.js +243 -0
  182. data/public/js/popover.js +110 -0
  183. data/public/js/scrollspy.js +153 -0
  184. data/public/js/tab.js +125 -0
  185. data/public/js/tests/index.html +54 -0
  186. data/public/js/tests/unit/affix.js +50 -0
  187. data/public/js/tests/unit/alert.js +62 -0
  188. data/public/js/tests/unit/button.js +122 -0
  189. data/public/js/tests/unit/carousel.js +110 -0
  190. data/public/js/tests/unit/collapse.js +164 -0
  191. data/public/js/tests/unit/dropdown.js +218 -0
  192. data/public/js/tests/unit/modal.js +195 -0
  193. data/public/js/tests/unit/phantom.js +69 -0
  194. data/public/js/tests/unit/popover.js +133 -0
  195. data/public/js/tests/unit/scrollspy.js +36 -0
  196. data/public/js/tests/unit/tab.js +86 -0
  197. data/public/js/tests/unit/tooltip.js +432 -0
  198. data/public/js/tests/vendor/jquery.js +6 -0
  199. data/public/js/tests/vendor/qunit.css +245 -0
  200. data/public/js/tests/vendor/qunit.js +2210 -0
  201. data/public/js/tooltip.js +399 -0
  202. data/public/js/transition.js +48 -0
  203. data/public/less/.csscomb.json +297 -0
  204. data/public/less/.csslintrc +19 -0
  205. data/public/less/alerts.less +67 -0
  206. data/public/less/badges.less +55 -0
  207. data/public/less/bootstrap.less +49 -0
  208. data/public/less/breadcrumbs.less +26 -0
  209. data/public/less/button-groups.less +226 -0
  210. data/public/less/buttons.less +155 -0
  211. data/public/less/carousel.less +232 -0
  212. data/public/less/close.less +33 -0
  213. data/public/less/code.less +63 -0
  214. data/public/less/component-animations.less +29 -0
  215. data/public/less/dropdowns.less +213 -0
  216. data/public/less/forms.less +419 -0
  217. data/public/less/glyphicons.less +233 -0
  218. data/public/less/grid.less +100 -0
  219. data/public/less/input-groups.less +157 -0
  220. data/public/less/jumbotron.less +44 -0
  221. data/public/less/labels.less +64 -0
  222. data/public/less/list-group.less +110 -0
  223. data/public/less/media.less +56 -0
  224. data/public/less/mixins.less +926 -0
  225. data/public/less/modals.less +138 -0
  226. data/public/less/navbar.less +616 -0
  227. data/public/less/navs.less +242 -0
  228. data/public/less/normalize.less +423 -0
  229. data/public/less/pager.less +55 -0
  230. data/public/less/pagination.less +88 -0
  231. data/public/less/panels.less +230 -0
  232. data/public/less/popovers.less +133 -0
  233. data/public/less/print.less +101 -0
  234. data/public/less/progress-bars.less +80 -0
  235. data/public/less/responsive-utilities.less +93 -0
  236. data/public/less/scaffolding.less +134 -0
  237. data/public/less/tables.less +233 -0
  238. data/public/less/theme.less +247 -0
  239. data/public/less/thumbnails.less +36 -0
  240. data/public/less/tooltip.less +95 -0
  241. data/public/less/type.less +296 -0
  242. data/public/less/utilities.less +56 -0
  243. data/public/less/variables.less +827 -0
  244. data/public/less/wells.less +29 -0
  245. data/public/package.json +71 -0
  246. data/public/test-infra/README.md +100 -0
  247. data/public/test-infra/npm-shrinkwrap.canonical.json +1 -0
  248. data/public/test-infra/requirements.txt +1 -0
  249. data/public/test-infra/s3_cache.py +107 -0
  250. data/public/test-infra/sauce_browsers.yml +83 -0
  251. data/public/test-infra/shrinkwrap.js +24 -0
  252. data/public/test-infra/uncached-npm-install.sh +4 -0
  253. data/rvnstat.gemspec +26 -0
  254. data/rvnstat.yml +3 -0
  255. data/ss.png +0 -0
  256. data/untitled.txt +0 -0
  257. data/views/._hourly.erb +0 -0
  258. data/views/._index.erb +0 -0
  259. data/views/._live_traffic.erb +0 -0
  260. data/views/._monthly.erb +0 -0
  261. data/views/._top_ten.erb +0 -0
  262. data/views/day_detail.erb +44 -0
  263. data/views/day_total.erb +42 -0
  264. data/views/graph_test.erb +2 -0
  265. data/views/hourly.erb +19 -0
  266. data/views/index.erb +71 -0
  267. data/views/layout.erb +28 -0
  268. data/views/live_traffic.erb +57 -0
  269. data/views/monthly.erb +21 -0
  270. data/views/top_ten.erb +21 -0
  271. metadata +385 -0
@@ -0,0 +1,138 @@
1
+ //
2
+ // Modals
3
+ // --------------------------------------------------
4
+
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: auto;
19
+ overflow-y: scroll;
20
+ position: fixed;
21
+ top: 0;
22
+ right: 0;
23
+ bottom: 0;
24
+ left: 0;
25
+ z-index: @zindex-modal;
26
+ -webkit-overflow-scrolling: touch;
27
+
28
+ // Prevent Chrome on Windows from adding a focus outline. For details, see
29
+ // https://github.com/twbs/bootstrap/pull/10951.
30
+ outline: 0;
31
+
32
+ // When fading in the modal, animate it to slide down
33
+ &.fade .modal-dialog {
34
+ .translate(0, -25%);
35
+ .transition-transform(~"0.3s ease-out");
36
+ }
37
+ &.in .modal-dialog { .translate(0, 0)}
38
+ }
39
+
40
+ // Shell div to position the modal with bottom padding
41
+ .modal-dialog {
42
+ position: relative;
43
+ width: auto;
44
+ margin: 10px;
45
+ }
46
+
47
+ // Actual modal
48
+ .modal-content {
49
+ position: relative;
50
+ background-color: @modal-content-bg;
51
+ border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
52
+ border: 1px solid @modal-content-border-color;
53
+ border-radius: @border-radius-large;
54
+ .box-shadow(0 3px 9px rgba(0,0,0,.5));
55
+ background-clip: padding-box;
56
+ // Remove focus outline from opened modal
57
+ outline: none;
58
+ }
59
+
60
+ // Modal background
61
+ .modal-backdrop {
62
+ position: fixed;
63
+ top: 0;
64
+ right: 0;
65
+ bottom: 0;
66
+ left: 0;
67
+ z-index: @zindex-modal-background;
68
+ background-color: @modal-backdrop-bg;
69
+ // Fade for backdrop
70
+ &.fade { .opacity(0); }
71
+ &.in { .opacity(@modal-backdrop-opacity); }
72
+ }
73
+
74
+ // Modal header
75
+ // Top section of the modal w/ title and dismiss
76
+ .modal-header {
77
+ padding: @modal-title-padding;
78
+ border-bottom: 1px solid @modal-header-border-color;
79
+ min-height: (@modal-title-padding + @modal-title-line-height);
80
+ }
81
+ // Close icon
82
+ .modal-header .close {
83
+ margin-top: -2px;
84
+ }
85
+
86
+ // Title text within header
87
+ .modal-title {
88
+ margin: 0;
89
+ line-height: @modal-title-line-height;
90
+ }
91
+
92
+ // Modal body
93
+ // Where all modal content resides (sibling of .modal-header and .modal-footer)
94
+ .modal-body {
95
+ position: relative;
96
+ padding: @modal-inner-padding;
97
+ }
98
+
99
+ // Footer (for actions)
100
+ .modal-footer {
101
+ margin-top: 15px;
102
+ padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;
103
+ text-align: right; // right align buttons
104
+ border-top: 1px solid @modal-footer-border-color;
105
+ &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons
106
+
107
+ // Properly space out buttons
108
+ .btn + .btn {
109
+ margin-left: 5px;
110
+ margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
111
+ }
112
+ // but override that for button groups
113
+ .btn-group .btn + .btn {
114
+ margin-left: -1px;
115
+ }
116
+ // and override it for block buttons as well
117
+ .btn-block + .btn-block {
118
+ margin-left: 0;
119
+ }
120
+ }
121
+
122
+ // Scale up the modal
123
+ @media (min-width: @screen-sm-min) {
124
+
125
+ // Automatically set modal's width for larger viewports
126
+ .modal-dialog {
127
+ width: @modal-md;
128
+ margin: 30px auto;
129
+ }
130
+ .modal-content {
131
+ .box-shadow(0 5px 15px rgba(0,0,0,.5));
132
+ }
133
+
134
+ // Modal sizes
135
+ .modal-sm { width: @modal-sm; }
136
+ .modal-lg { width: @modal-lg; }
137
+
138
+ }
@@ -0,0 +1,616 @@
1
+ //
2
+ // Navbars
3
+ // --------------------------------------------------
4
+
5
+
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.
10
+
11
+ .navbar {
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;
16
+
17
+ // Prevent floats from breaking the navbar
18
+ &:extend(.clearfix all);
19
+
20
+ @media (min-width: @grid-float-breakpoint) {
21
+ border-radius: @navbar-border-radius;
22
+ }
23
+ }
24
+
25
+
26
+ // Navbar heading
27
+ //
28
+ // Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
29
+ // styling of responsive aspects.
30
+
31
+ .navbar-header {
32
+ &:extend(.clearfix all);
33
+
34
+ @media (min-width: @grid-float-breakpoint) {
35
+ float: left;
36
+ }
37
+ }
38
+
39
+
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
+ max-height: @navbar-collapse-max-height;
52
+ overflow-x: visible;
53
+ padding-right: @navbar-padding-horizontal;
54
+ padding-left: @navbar-padding-horizontal;
55
+ border-top: 1px solid transparent;
56
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
57
+ &:extend(.clearfix all);
58
+ -webkit-overflow-scrolling: touch;
59
+
60
+ &.in {
61
+ overflow-y: auto;
62
+ }
63
+
64
+ @media (min-width: @grid-float-breakpoint) {
65
+ width: auto;
66
+ border-top: 0;
67
+ box-shadow: none;
68
+
69
+ &.collapse {
70
+ display: block !important;
71
+ height: auto !important;
72
+ padding-bottom: 0; // Override default setting
73
+ overflow: visible !important;
74
+ }
75
+
76
+ &.in {
77
+ overflow-y: visible;
78
+ }
79
+
80
+ // Undo the collapse side padding for navbars with containers to ensure
81
+ // alignment of right-aligned contents.
82
+ .navbar-fixed-top &,
83
+ .navbar-static-top &,
84
+ .navbar-fixed-bottom & {
85
+ padding-left: 0;
86
+ padding-right: 0;
87
+ }
88
+ }
89
+ }
90
+
91
+
92
+ // Both navbar header and collapse
93
+ //
94
+ // When a container is present, change the behavior of the header and collapse.
95
+
96
+ .container,
97
+ .container-fluid {
98
+ > .navbar-header,
99
+ > .navbar-collapse {
100
+ margin-right: -@navbar-padding-horizontal;
101
+ margin-left: -@navbar-padding-horizontal;
102
+
103
+ @media (min-width: @grid-float-breakpoint) {
104
+ margin-right: 0;
105
+ margin-left: 0;
106
+ }
107
+ }
108
+ }
109
+
110
+
111
+ //
112
+ // Navbar alignment options
113
+ //
114
+ // Display the navbar across the entirety of the page or fixed it to the top or
115
+ // bottom of the page.
116
+
117
+ // Static top (unfixed, but 100% wide) navbar
118
+ .navbar-static-top {
119
+ z-index: @zindex-navbar;
120
+ border-width: 0 0 1px;
121
+
122
+ @media (min-width: @grid-float-breakpoint) {
123
+ border-radius: 0;
124
+ }
125
+ }
126
+
127
+ // Fix the top/bottom navbars when screen real estate supports it
128
+ .navbar-fixed-top,
129
+ .navbar-fixed-bottom {
130
+ position: fixed;
131
+ right: 0;
132
+ left: 0;
133
+ z-index: @zindex-navbar-fixed;
134
+
135
+ // Undo the rounded corners
136
+ @media (min-width: @grid-float-breakpoint) {
137
+ border-radius: 0;
138
+ }
139
+ }
140
+ .navbar-fixed-top {
141
+ top: 0;
142
+ border-width: 0 0 1px;
143
+ }
144
+ .navbar-fixed-bottom {
145
+ bottom: 0;
146
+ margin-bottom: 0; // override .navbar defaults
147
+ border-width: 1px 0 0;
148
+ }
149
+
150
+
151
+ // Brand/project name
152
+
153
+ .navbar-brand {
154
+ float: left;
155
+ padding: @navbar-padding-vertical @navbar-padding-horizontal;
156
+ font-size: @font-size-large;
157
+ line-height: @line-height-computed;
158
+ height: @line-height-computed;
159
+
160
+ &:hover,
161
+ &:focus {
162
+ text-decoration: none;
163
+ }
164
+
165
+ @media (min-width: @grid-float-breakpoint) {
166
+ .navbar > .container &,
167
+ .navbar > .container-fluid & {
168
+ margin-left: -@navbar-padding-horizontal;
169
+ }
170
+ }
171
+ }
172
+
173
+
174
+ // Navbar toggle
175
+ //
176
+ // Custom button for toggling the `.navbar-collapse`, powered by the collapse
177
+ // JavaScript plugin.
178
+
179
+ .navbar-toggle {
180
+ position: relative;
181
+ float: right;
182
+ margin-right: @navbar-padding-horizontal;
183
+ padding: 9px 10px;
184
+ .navbar-vertical-align(34px);
185
+ background-color: transparent;
186
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
187
+ border: 1px solid transparent;
188
+ border-radius: @border-radius-base;
189
+
190
+ // We remove the `outline` here, but later compensate by attaching `:hover`
191
+ // styles to `:focus`.
192
+ &:focus {
193
+ outline: none;
194
+ }
195
+
196
+ // Bars
197
+ .icon-bar {
198
+ display: block;
199
+ width: 22px;
200
+ height: 2px;
201
+ border-radius: 1px;
202
+ }
203
+ .icon-bar + .icon-bar {
204
+ margin-top: 4px;
205
+ }
206
+
207
+ @media (min-width: @grid-float-breakpoint) {
208
+ display: none;
209
+ }
210
+ }
211
+
212
+
213
+ // Navbar nav links
214
+ //
215
+ // Builds on top of the `.nav` components with its own modifier class to make
216
+ // the nav the full height of the horizontal nav (above 768px).
217
+
218
+ .navbar-nav {
219
+ margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;
220
+
221
+ > li > a {
222
+ padding-top: 10px;
223
+ padding-bottom: 10px;
224
+ line-height: @line-height-computed;
225
+ }
226
+
227
+ @media (max-width: @grid-float-breakpoint-max) {
228
+ // Dropdowns get custom display when collapsed
229
+ .open .dropdown-menu {
230
+ position: static;
231
+ float: none;
232
+ width: auto;
233
+ margin-top: 0;
234
+ background-color: transparent;
235
+ border: 0;
236
+ box-shadow: none;
237
+ > li > a,
238
+ .dropdown-header {
239
+ padding: 5px 15px 5px 25px;
240
+ }
241
+ > li > a {
242
+ line-height: @line-height-computed;
243
+ &:hover,
244
+ &:focus {
245
+ background-image: none;
246
+ }
247
+ }
248
+ }
249
+ }
250
+
251
+ // Uncollapse the nav
252
+ @media (min-width: @grid-float-breakpoint) {
253
+ float: left;
254
+ margin: 0;
255
+
256
+ > li {
257
+ float: left;
258
+ > a {
259
+ padding-top: @navbar-padding-vertical;
260
+ padding-bottom: @navbar-padding-vertical;
261
+ }
262
+ }
263
+
264
+ &.navbar-right:last-child {
265
+ margin-right: -@navbar-padding-horizontal;
266
+ }
267
+ }
268
+ }
269
+
270
+
271
+ // Component alignment
272
+ //
273
+ // Repurpose the pull utilities as their own navbar utilities to avoid specificity
274
+ // issues with parents and chaining. Only do this when the navbar is uncollapsed
275
+ // though so that navbar contents properly stack and align in mobile.
276
+
277
+ @media (min-width: @grid-float-breakpoint) {
278
+ .navbar-left { .pull-left(); }
279
+ .navbar-right { .pull-right(); }
280
+ }
281
+
282
+
283
+ // Navbar form
284
+ //
285
+ // Extension of the `.form-inline` with some extra flavor for optimum display in
286
+ // our navbars.
287
+
288
+ .navbar-form {
289
+ margin-left: -@navbar-padding-horizontal;
290
+ margin-right: -@navbar-padding-horizontal;
291
+ padding: 10px @navbar-padding-horizontal;
292
+ border-top: 1px solid transparent;
293
+ border-bottom: 1px solid transparent;
294
+ @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
295
+ .box-shadow(@shadow);
296
+
297
+ // Mixin behavior for optimum display
298
+ .form-inline();
299
+
300
+ .form-group {
301
+ @media (max-width: @grid-float-breakpoint-max) {
302
+ margin-bottom: 5px;
303
+ }
304
+ }
305
+
306
+ // Vertically center in expanded, horizontal navbar
307
+ .navbar-vertical-align(@input-height-base);
308
+
309
+ // Undo 100% width for pull classes
310
+ @media (min-width: @grid-float-breakpoint) {
311
+ width: auto;
312
+ border: 0;
313
+ margin-left: 0;
314
+ margin-right: 0;
315
+ padding-top: 0;
316
+ padding-bottom: 0;
317
+ .box-shadow(none);
318
+
319
+ // Outdent the form if last child to line up with content down the page
320
+ &.navbar-right:last-child {
321
+ margin-right: -@navbar-padding-horizontal;
322
+ }
323
+ }
324
+ }
325
+
326
+
327
+ // Dropdown menus
328
+
329
+ // Menu position and menu carets
330
+ .navbar-nav > li > .dropdown-menu {
331
+ margin-top: 0;
332
+ .border-top-radius(0);
333
+ }
334
+ // Menu position and menu caret support for dropups via extra dropup class
335
+ .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
336
+ .border-bottom-radius(0);
337
+ }
338
+
339
+
340
+ // Buttons in navbars
341
+ //
342
+ // Vertically center a button within a navbar (when *not* in a form).
343
+
344
+ .navbar-btn {
345
+ .navbar-vertical-align(@input-height-base);
346
+
347
+ &.btn-sm {
348
+ .navbar-vertical-align(@input-height-small);
349
+ }
350
+ &.btn-xs {
351
+ .navbar-vertical-align(22);
352
+ }
353
+ }
354
+
355
+
356
+ // Text in navbars
357
+ //
358
+ // Add a class to make any element properly align itself vertically within the navbars.
359
+
360
+ .navbar-text {
361
+ .navbar-vertical-align(@line-height-computed);
362
+
363
+ @media (min-width: @grid-float-breakpoint) {
364
+ float: left;
365
+ margin-left: @navbar-padding-horizontal;
366
+ margin-right: @navbar-padding-horizontal;
367
+
368
+ // Outdent the form if last child to line up with content down the page
369
+ &.navbar-right:last-child {
370
+ margin-right: 0;
371
+ }
372
+ }
373
+ }
374
+
375
+ // Alternate navbars
376
+ // --------------------------------------------------
377
+
378
+ // Default navbar
379
+ .navbar-default {
380
+ background-color: @navbar-default-bg;
381
+ border-color: @navbar-default-border;
382
+
383
+ .navbar-brand {
384
+ color: @navbar-default-brand-color;
385
+ &:hover,
386
+ &:focus {
387
+ color: @navbar-default-brand-hover-color;
388
+ background-color: @navbar-default-brand-hover-bg;
389
+ }
390
+ }
391
+
392
+ .navbar-text {
393
+ color: @navbar-default-color;
394
+ }
395
+
396
+ .navbar-nav {
397
+ > li > a {
398
+ color: @navbar-default-link-color;
399
+
400
+ &:hover,
401
+ &:focus {
402
+ color: @navbar-default-link-hover-color;
403
+ background-color: @navbar-default-link-hover-bg;
404
+ }
405
+ }
406
+ > .active > a {
407
+ &,
408
+ &:hover,
409
+ &:focus {
410
+ color: @navbar-default-link-active-color;
411
+ background-color: @navbar-default-link-active-bg;
412
+ }
413
+ }
414
+ > .disabled > a {
415
+ &,
416
+ &:hover,
417
+ &:focus {
418
+ color: @navbar-default-link-disabled-color;
419
+ background-color: @navbar-default-link-disabled-bg;
420
+ }
421
+ }
422
+ }
423
+
424
+ .navbar-toggle {
425
+ border-color: @navbar-default-toggle-border-color;
426
+ &:hover,
427
+ &:focus {
428
+ background-color: @navbar-default-toggle-hover-bg;
429
+ }
430
+ .icon-bar {
431
+ background-color: @navbar-default-toggle-icon-bar-bg;
432
+ }
433
+ }
434
+
435
+ .navbar-collapse,
436
+ .navbar-form {
437
+ border-color: @navbar-default-border;
438
+ }
439
+
440
+ // Dropdown menu items
441
+ .navbar-nav {
442
+ // Remove background color from open dropdown
443
+ > .open > a {
444
+ &,
445
+ &:hover,
446
+ &:focus {
447
+ background-color: @navbar-default-link-active-bg;
448
+ color: @navbar-default-link-active-color;
449
+ }
450
+ }
451
+
452
+ @media (max-width: @grid-float-breakpoint-max) {
453
+ // Dropdowns get custom display when collapsed
454
+ .open .dropdown-menu {
455
+ > li > a {
456
+ color: @navbar-default-link-color;
457
+ &:hover,
458
+ &:focus {
459
+ color: @navbar-default-link-hover-color;
460
+ background-color: @navbar-default-link-hover-bg;
461
+ }
462
+ }
463
+ > .active > a {
464
+ &,
465
+ &:hover,
466
+ &:focus {
467
+ color: @navbar-default-link-active-color;
468
+ background-color: @navbar-default-link-active-bg;
469
+ }
470
+ }
471
+ > .disabled > a {
472
+ &,
473
+ &:hover,
474
+ &:focus {
475
+ color: @navbar-default-link-disabled-color;
476
+ background-color: @navbar-default-link-disabled-bg;
477
+ }
478
+ }
479
+ }
480
+ }
481
+ }
482
+
483
+
484
+ // Links in navbars
485
+ //
486
+ // Add a class to ensure links outside the navbar nav are colored correctly.
487
+
488
+ .navbar-link {
489
+ color: @navbar-default-link-color;
490
+ &:hover {
491
+ color: @navbar-default-link-hover-color;
492
+ }
493
+ }
494
+
495
+ }
496
+
497
+ // Inverse navbar
498
+
499
+ .navbar-inverse {
500
+ background-color: @navbar-inverse-bg;
501
+ border-color: @navbar-inverse-border;
502
+
503
+ .navbar-brand {
504
+ color: @navbar-inverse-brand-color;
505
+ &:hover,
506
+ &:focus {
507
+ color: @navbar-inverse-brand-hover-color;
508
+ background-color: @navbar-inverse-brand-hover-bg;
509
+ }
510
+ }
511
+
512
+ .navbar-text {
513
+ color: @navbar-inverse-color;
514
+ }
515
+
516
+ .navbar-nav {
517
+ > li > a {
518
+ color: @navbar-inverse-link-color;
519
+
520
+ &:hover,
521
+ &:focus {
522
+ color: @navbar-inverse-link-hover-color;
523
+ background-color: @navbar-inverse-link-hover-bg;
524
+ }
525
+ }
526
+ > .active > a {
527
+ &,
528
+ &:hover,
529
+ &:focus {
530
+ color: @navbar-inverse-link-active-color;
531
+ background-color: @navbar-inverse-link-active-bg;
532
+ }
533
+ }
534
+ > .disabled > a {
535
+ &,
536
+ &:hover,
537
+ &:focus {
538
+ color: @navbar-inverse-link-disabled-color;
539
+ background-color: @navbar-inverse-link-disabled-bg;
540
+ }
541
+ }
542
+ }
543
+
544
+ // Darken the responsive nav toggle
545
+ .navbar-toggle {
546
+ border-color: @navbar-inverse-toggle-border-color;
547
+ &:hover,
548
+ &:focus {
549
+ background-color: @navbar-inverse-toggle-hover-bg;
550
+ }
551
+ .icon-bar {
552
+ background-color: @navbar-inverse-toggle-icon-bar-bg;
553
+ }
554
+ }
555
+
556
+ .navbar-collapse,
557
+ .navbar-form {
558
+ border-color: darken(@navbar-inverse-bg, 7%);
559
+ }
560
+
561
+ // Dropdowns
562
+ .navbar-nav {
563
+ > .open > a {
564
+ &,
565
+ &:hover,
566
+ &:focus {
567
+ background-color: @navbar-inverse-link-active-bg;
568
+ color: @navbar-inverse-link-active-color;
569
+ }
570
+ }
571
+
572
+ @media (max-width: @grid-float-breakpoint-max) {
573
+ // Dropdowns get custom display
574
+ .open .dropdown-menu {
575
+ > .dropdown-header {
576
+ border-color: @navbar-inverse-border;
577
+ }
578
+ .divider {
579
+ background-color: @navbar-inverse-border;
580
+ }
581
+ > li > a {
582
+ color: @navbar-inverse-link-color;
583
+ &:hover,
584
+ &:focus {
585
+ color: @navbar-inverse-link-hover-color;
586
+ background-color: @navbar-inverse-link-hover-bg;
587
+ }
588
+ }
589
+ > .active > a {
590
+ &,
591
+ &:hover,
592
+ &:focus {
593
+ color: @navbar-inverse-link-active-color;
594
+ background-color: @navbar-inverse-link-active-bg;
595
+ }
596
+ }
597
+ > .disabled > a {
598
+ &,
599
+ &:hover,
600
+ &:focus {
601
+ color: @navbar-inverse-link-disabled-color;
602
+ background-color: @navbar-inverse-link-disabled-bg;
603
+ }
604
+ }
605
+ }
606
+ }
607
+ }
608
+
609
+ .navbar-link {
610
+ color: @navbar-inverse-link-color;
611
+ &:hover {
612
+ color: @navbar-inverse-link-hover-color;
613
+ }
614
+ }
615
+
616
+ }