twigg-app 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. checksums.yaml +4 -4
  2. data/assets/javascripts/_bootstrap.js +7 -0
  3. data/assets/javascripts/_jquery.js +19 -0
  4. data/assets/javascripts/_tables.js +3 -0
  5. data/assets/javascripts/_views.js +10 -0
  6. data/assets/javascripts/application.js +9 -0
  7. data/{public/application.js → assets/javascripts/views/_commit_set_bar_chart.js} +32 -34
  8. data/assets/javascripts/views/_russia.js +61 -0
  9. data/assets/javascripts/views/_tags.js +56 -0
  10. data/assets/javascripts/views/_tags_word_cloud.js +51 -0
  11. data/assets/stylesheets/_bootstrap_overrides.scss +15 -0
  12. data/assets/stylesheets/_footer.scss +28 -0
  13. data/assets/stylesheets/_global.scss +14 -0
  14. data/assets/stylesheets/_tables.scss +20 -0
  15. data/assets/stylesheets/application.scss +10 -0
  16. data/assets/stylesheets/d3/_bar_chart.scss +25 -0
  17. data/assets/stylesheets/d3/_bubble_chart.scss +22 -0
  18. data/lib/twigg-app/app/routes.rb +4 -0
  19. data/lib/twigg-app/app/server.rb +78 -21
  20. data/lib/twigg-app/app/version.rb +1 -1
  21. data/public/vendor/bootstrap/Gruntfile.js +32 -10
  22. data/public/vendor/bootstrap/README.md +2 -0
  23. data/public/vendor/bootstrap/_config.yml +5 -10
  24. data/public/vendor/bootstrap/_includes/footer.html +2 -1
  25. data/public/vendor/bootstrap/_includes/nav-components.html +33 -31
  26. data/public/vendor/bootstrap/_includes/nav-css.html +32 -22
  27. data/public/vendor/bootstrap/_includes/nav-getting-started.html +17 -1
  28. data/public/vendor/bootstrap/_includes/nav-javascript.html +1 -1
  29. data/public/vendor/bootstrap/_includes/nav-main.html +1 -1
  30. data/public/vendor/bootstrap/_includes/social-buttons.html +1 -1
  31. data/public/vendor/bootstrap/_layouts/default.html +18 -14
  32. data/public/vendor/bootstrap/_layouts/home.html +9 -6
  33. data/public/vendor/bootstrap/assets/css/docs.css +584 -396
  34. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-114-precomposed.png +0 -0
  35. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  36. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-57-precomposed.png +0 -0
  37. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-72-precomposed.png +0 -0
  38. data/public/vendor/bootstrap/assets/ico/favicon.png +0 -0
  39. data/public/vendor/bootstrap/assets/js/application.js +2 -1
  40. data/public/vendor/bootstrap/assets/js/customizer.js +160 -45
  41. data/public/vendor/bootstrap/assets/js/filesaver.js +169 -0
  42. data/public/vendor/bootstrap/assets/js/jquery.js +6 -5
  43. data/public/vendor/bootstrap/assets/js/raw-files.js +3 -0
  44. data/public/vendor/bootstrap/bower.json +1 -1
  45. data/public/vendor/bootstrap/components.html +787 -364
  46. data/public/vendor/bootstrap/composer.json +1 -1
  47. data/public/vendor/bootstrap/css.html +413 -248
  48. data/public/vendor/bootstrap/customize.html +413 -447
  49. data/public/vendor/bootstrap/dist/css/bootstrap-theme.css +384 -0
  50. data/public/vendor/bootstrap/dist/css/bootstrap-theme.min.css +1 -0
  51. data/public/vendor/bootstrap/dist/css/bootstrap.css +3033 -1807
  52. data/public/vendor/bootstrap/dist/css/bootstrap.min.css +1 -1
  53. data/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  54. data/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +228 -0
  55. data/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  56. data/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  57. data/public/vendor/bootstrap/dist/js/bootstrap.js +18 -12
  58. data/public/vendor/bootstrap/dist/js/bootstrap.min.js +1 -1
  59. data/public/vendor/bootstrap/examples/carousel/carousel.css +128 -0
  60. data/public/vendor/bootstrap/examples/carousel/index.html +201 -0
  61. data/public/vendor/bootstrap/examples/grid/grid.css +28 -0
  62. data/public/vendor/bootstrap/examples/grid/index.html +119 -0
  63. data/public/vendor/bootstrap/examples/jumbotron/index.html +111 -0
  64. data/public/vendor/bootstrap/examples/jumbotron/jumbotron.css +5 -0
  65. data/public/vendor/bootstrap/examples/jumbotron-narrow/index.html +78 -0
  66. data/public/vendor/bootstrap/examples/jumbotron-narrow/jumbotron-narrow.css +79 -0
  67. data/public/vendor/bootstrap/examples/justified-nav/index.html +79 -0
  68. data/public/vendor/bootstrap/examples/justified-nav/justified-nav.css +88 -0
  69. data/public/vendor/bootstrap/examples/navbar/index.html +83 -0
  70. data/public/vendor/bootstrap/examples/navbar/navbar.css +7 -0
  71. data/public/vendor/bootstrap/examples/navbar-fixed-top/index.html +86 -0
  72. data/public/vendor/bootstrap/examples/navbar-fixed-top/navbar-fixed-top.css +4 -0
  73. data/public/vendor/bootstrap/examples/navbar-static-top/index.html +87 -0
  74. data/public/vendor/bootstrap/examples/navbar-static-top/navbar-static-top.css +7 -0
  75. data/public/vendor/bootstrap/examples/non-responsive/index.html +96 -0
  76. data/public/vendor/bootstrap/examples/non-responsive/non-responsive.css +117 -0
  77. data/public/vendor/bootstrap/examples/offcanvas/index.html +127 -0
  78. data/public/vendor/bootstrap/examples/offcanvas/offcanvas.css +48 -0
  79. data/public/vendor/bootstrap/examples/offcanvas/offcanvas.js +5 -0
  80. data/public/vendor/bootstrap/examples/screenshots/carousel.jpg +0 -0
  81. data/public/vendor/bootstrap/examples/screenshots/grid.jpg +0 -0
  82. data/public/vendor/bootstrap/examples/screenshots/jumbotron-narrow.jpg +0 -0
  83. data/public/vendor/bootstrap/examples/screenshots/jumbotron.jpg +0 -0
  84. data/public/vendor/bootstrap/examples/screenshots/justified-nav.jpg +0 -0
  85. data/public/vendor/bootstrap/examples/screenshots/navbar-fixed.jpg +0 -0
  86. data/public/vendor/bootstrap/examples/screenshots/navbar-static.jpg +0 -0
  87. data/public/vendor/bootstrap/examples/screenshots/navbar.jpg +0 -0
  88. data/public/vendor/bootstrap/examples/screenshots/non-responsive.jpg +0 -0
  89. data/public/vendor/bootstrap/examples/screenshots/offcanvas.jpg +0 -0
  90. data/public/vendor/bootstrap/examples/screenshots/sign-in.jpg +0 -0
  91. data/public/vendor/bootstrap/examples/screenshots/starter-template.jpg +0 -0
  92. data/public/vendor/bootstrap/examples/screenshots/sticky-footer-navbar.jpg +0 -0
  93. data/public/vendor/bootstrap/examples/screenshots/sticky-footer.jpg +0 -0
  94. data/public/vendor/bootstrap/examples/screenshots/theme.jpg +0 -0
  95. data/public/vendor/bootstrap/examples/signin/index.html +46 -0
  96. data/public/vendor/bootstrap/examples/signin/signin.css +40 -0
  97. data/public/vendor/bootstrap/examples/starter-template/index.html +63 -0
  98. data/public/vendor/bootstrap/examples/starter-template/starter-template.css +7 -0
  99. data/public/vendor/bootstrap/examples/sticky-footer/index.html +51 -0
  100. data/public/vendor/bootstrap/examples/sticky-footer/sticky-footer.css +39 -0
  101. data/public/vendor/bootstrap/examples/sticky-footer-navbar/index.html +86 -0
  102. data/public/vendor/bootstrap/examples/sticky-footer-navbar/sticky-footer-navbar.css +46 -0
  103. data/public/vendor/bootstrap/examples/theme/index.html +387 -0
  104. data/public/vendor/bootstrap/examples/theme/theme.css +14 -0
  105. data/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  106. data/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg +228 -0
  107. data/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  108. data/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  109. data/public/vendor/bootstrap/getting-started.html +513 -22
  110. data/public/vendor/bootstrap/index.html +3 -4
  111. data/public/vendor/bootstrap/javascript.html +123 -115
  112. data/public/vendor/bootstrap/js/dropdown.js +3 -3
  113. data/public/vendor/bootstrap/js/modal.js +5 -3
  114. data/public/vendor/bootstrap/js/tests/unit/modal.js +19 -0
  115. data/public/vendor/bootstrap/js/tests/vendor/jquery.js +6 -5
  116. data/public/vendor/bootstrap/js/tooltip.js +9 -5
  117. data/public/vendor/bootstrap/js/transition.js +1 -1
  118. data/public/vendor/bootstrap/less/alerts.less +7 -11
  119. data/public/vendor/bootstrap/less/bootstrap.less +17 -21
  120. data/public/vendor/bootstrap/less/button-groups.less +14 -10
  121. data/public/vendor/bootstrap/less/buttons.less +3 -2
  122. data/public/vendor/bootstrap/less/carousel.less +6 -1
  123. data/public/vendor/bootstrap/less/dropdowns.less +22 -5
  124. data/public/vendor/bootstrap/less/forms.less +36 -15
  125. data/public/vendor/bootstrap/less/glyphicons.less +232 -0
  126. data/public/vendor/bootstrap/less/grid.less +9 -3
  127. data/public/vendor/bootstrap/less/input-groups.less +1 -1
  128. data/public/vendor/bootstrap/less/jumbotron.less +16 -5
  129. data/public/vendor/bootstrap/less/labels.less +9 -5
  130. data/public/vendor/bootstrap/less/mixins.less +73 -43
  131. data/public/vendor/bootstrap/less/modals.less +8 -0
  132. data/public/vendor/bootstrap/less/navbar.less +251 -189
  133. data/public/vendor/bootstrap/less/navs.less +13 -12
  134. data/public/vendor/bootstrap/less/pager.less +1 -1
  135. data/public/vendor/bootstrap/less/pagination.less +20 -9
  136. data/public/vendor/bootstrap/less/panels.less +28 -8
  137. data/public/vendor/bootstrap/less/progress-bars.less +6 -10
  138. data/public/vendor/bootstrap/less/responsive-utilities.less +120 -49
  139. data/public/vendor/bootstrap/less/scaffolding.less +37 -18
  140. data/public/vendor/bootstrap/less/tables.less +84 -59
  141. data/public/vendor/bootstrap/less/theme.less +232 -0
  142. data/public/vendor/bootstrap/less/thumbnails.less +8 -19
  143. data/public/vendor/bootstrap/less/type.less +2 -2
  144. data/public/vendor/bootstrap/less/variables.less +63 -50
  145. data/public/vendor/bootstrap/package.json +2 -1
  146. data/public/vendor/components-backbone/LICENSE +22 -0
  147. data/public/vendor/components-backbone/README.md +10 -0
  148. data/public/vendor/components-backbone/backbone-min.js +4 -0
  149. data/public/vendor/components-backbone/backbone.js +1571 -0
  150. data/public/vendor/components-backbone/bower.json +17 -0
  151. data/public/vendor/components-backbone/component.json +21 -0
  152. data/public/vendor/components-backbone/composer.json +37 -0
  153. data/public/vendor/components-backbone/package.json +24 -0
  154. data/public/vendor/d3.layout.cloud.js +401 -0
  155. data/public/vendor/replacejs/CHANGELOG.md +4 -0
  156. data/public/vendor/replacejs/replace.js +21 -2
  157. data/public/vendor/underscore/CNAME +1 -0
  158. data/public/vendor/underscore/CONTRIBUTING.md +9 -0
  159. data/public/vendor/underscore/LICENSE +22 -0
  160. data/public/vendor/underscore/README.md +19 -0
  161. data/public/vendor/underscore/Rakefile +10 -0
  162. data/public/vendor/underscore/docs/docco.css +192 -0
  163. data/public/vendor/underscore/docs/favicon.ico +0 -0
  164. data/public/vendor/underscore/docs/images/background.png +0 -0
  165. data/public/vendor/underscore/docs/images/underscore.png +0 -0
  166. data/public/vendor/underscore/docs/underscore.html +823 -0
  167. data/public/vendor/underscore/favicon.ico +0 -0
  168. data/public/vendor/underscore/index.html +2467 -0
  169. data/public/vendor/underscore/index.js +1 -0
  170. data/public/vendor/underscore/package.json +16 -0
  171. data/public/vendor/underscore/test/arrays.js +200 -0
  172. data/public/vendor/underscore/test/chaining.js +59 -0
  173. data/public/vendor/underscore/test/collections.js +453 -0
  174. data/public/vendor/underscore/test/functions.js +265 -0
  175. data/public/vendor/underscore/test/index.html +44 -0
  176. data/public/vendor/underscore/test/objects.js +570 -0
  177. data/public/vendor/underscore/test/speed.js +75 -0
  178. data/public/vendor/underscore/test/utility.js +266 -0
  179. data/public/vendor/underscore/test/vendor/jquery.js +9404 -0
  180. data/public/vendor/underscore/test/vendor/jslitmus.js +670 -0
  181. data/public/vendor/underscore/test/vendor/qunit.css +235 -0
  182. data/public/vendor/underscore/test/vendor/qunit.js +1977 -0
  183. data/public/vendor/underscore/test/vendor/runner.js +98 -0
  184. data/public/vendor/underscore/underscore-min.js +1 -0
  185. data/public/vendor/underscore/underscore.js +1226 -0
  186. data/views/dashboard.haml +1 -1
  187. data/views/layout.haml +8 -4
  188. metadata +132 -25
  189. data/public/vendor/bootstrap/_layouts/customize.html +0 -52
  190. data/public/vendor/bootstrap/assets/js/jquery.bbq.min.js +0 -1287
  191. data/public/vendor/bootstrap-glyphicons/CHANGELOG.md +0 -3
  192. data/public/vendor/bootstrap-glyphicons/CNAME +0 -1
  193. data/public/vendor/bootstrap-glyphicons/CONTRIBUTING.md +0 -54
  194. data/public/vendor/bootstrap-glyphicons/LICENSE +0 -19
  195. data/public/vendor/bootstrap-glyphicons/README.md +0 -61
  196. data/public/vendor/bootstrap-glyphicons/_config.yml +0 -12
  197. data/public/vendor/bootstrap-glyphicons/composer.json +0 -9
  198. data/public/vendor/bootstrap-glyphicons/css/bootstrap-glyphicons.css +0 -2
  199. data/public/vendor/bootstrap-glyphicons/css/bootstrap.css +0 -9
  200. data/public/vendor/bootstrap-glyphicons/css/docs.css +0 -160
  201. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.eot +0 -0
  202. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.otf +0 -0
  203. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.svg +0 -175
  204. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.ttf +0 -0
  205. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.woff +0 -0
  206. data/public/vendor/bootstrap-glyphicons/index.html +0 -255
  207. data/public/vendor/bootstrap-glyphicons/less/bootstrap-glyphicons.less +0 -201
  208. data/public/vendor/bootstrap-glyphicons/package.json +0 -18
@@ -108,10 +108,11 @@
108
108
 
109
109
  clearTimeout(self.timeout)
110
110
 
111
+ self.hoverState = 'in'
112
+
111
113
  if (!self.options.delay || !self.options.delay.show) return self.show()
112
114
 
113
- self.hoverState = 'in'
114
- self.timeout = setTimeout(function () {
115
+ self.timeout = setTimeout(function () {
115
116
  if (self.hoverState == 'in') self.show()
116
117
  }, self.options.delay.show)
117
118
  }
@@ -122,10 +123,11 @@
122
123
 
123
124
  clearTimeout(self.timeout)
124
125
 
126
+ self.hoverState = 'out'
127
+
125
128
  if (!self.options.delay || !self.options.delay.hide) return self.hide()
126
129
 
127
- self.hoverState = 'out'
128
- self.timeout = setTimeout(function () {
130
+ self.timeout = setTimeout(function () {
129
131
  if (self.hoverState == 'out') self.hide()
130
132
  }, self.options.delay.hide)
131
133
  }
@@ -258,7 +260,9 @@
258
260
  var $tip = this.tip()
259
261
  var e = $.Event('hide.bs.' + this.type)
260
262
 
261
- function complete() { $tip.detach() }
263
+ function complete() {
264
+ if (that.hoverState != 'in') $tip.detach()
265
+ }
262
266
 
263
267
  this.$element.trigger(e)
264
268
 
@@ -42,7 +42,7 @@
42
42
 
43
43
  // http://blog.alexmaccaw.com/css-transitions
44
44
  $.fn.emulateTransitionEnd = function (duration) {
45
- var called = false, $el = this
45
+ var called = false, $el = this
46
46
  $(this).one($.support.transition.end, function () { called = true })
47
47
  var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
48
48
  setTimeout(callback, duration)
@@ -9,9 +9,7 @@
9
9
  .alert {
10
10
  padding: @alert-padding;
11
11
  margin-bottom: @line-height-computed;
12
- color: @alert-text;
13
- background-color: @alert-bg;
14
- border: 1px solid @alert-border;
12
+ border: 1px solid transparent;
15
13
  border-radius: @alert-border-radius;
16
14
 
17
15
  // Headings for larger alerts
@@ -20,14 +18,9 @@
20
18
  // Specified for the h4 to prevent conflicts of changing @headingsColor
21
19
  color: inherit;
22
20
  }
23
- // Match the hr to the border of the alert
24
- hr {
25
- border-top-color: darken(@alert-border, 5%);
26
- }
27
21
  // Provide class for links that match alerts
28
22
  .alert-link {
29
23
  font-weight: @alert-link-font-weight;
30
- color: darken(@alert-text, 10%);
31
24
  }
32
25
 
33
26
  // Improve alignment and spacing of inner content
@@ -63,9 +56,12 @@
63
56
  .alert-success {
64
57
  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);
65
58
  }
66
- .alert-danger {
67
- .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
68
- }
69
59
  .alert-info {
70
60
  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);
71
61
  }
62
+ .alert-warning {
63
+ .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);
64
+ }
65
+ .alert-danger {
66
+ .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
67
+ }
@@ -21,43 +21,39 @@
21
21
  @import "type.less";
22
22
  @import "code.less";
23
23
  @import "grid.less";
24
-
25
24
  @import "tables.less";
26
25
  @import "forms.less";
27
26
  @import "buttons.less";
28
27
 
29
- // Components: common
28
+ // Components
30
29
  @import "component-animations.less";
31
- @import "input-groups.less";
30
+ @import "glyphicons.less";
32
31
  @import "dropdowns.less";
33
- @import "list-group.less";
34
- @import "panels.less";
35
- @import "wells.less";
36
- @import "close.less";
37
-
38
- // Components: Nav
32
+ @import "button-groups.less";
33
+ @import "input-groups.less";
39
34
  @import "navs.less";
40
35
  @import "navbar.less";
41
- @import "button-groups.less";
42
36
  @import "breadcrumbs.less";
43
37
  @import "pagination.less";
44
38
  @import "pager.less";
39
+ @import "labels.less";
40
+ @import "badges.less";
41
+ @import "jumbotron.less";
42
+ @import "thumbnails.less";
43
+ @import "alerts.less";
44
+ @import "progress-bars.less";
45
+ @import "media.less";
46
+ @import "list-group.less";
47
+ @import "panels.less";
48
+ @import "wells.less";
49
+ @import "close.less";
45
50
 
46
- // Components: Popovers
51
+ // Components w/ JavaScript
47
52
  @import "modals.less";
48
53
  @import "tooltip.less";
49
54
  @import "popovers.less";
50
-
51
- // Components: Misc
52
- @import "alerts.less";
53
- @import "thumbnails.less";
54
- @import "media.less";
55
- @import "labels.less";
56
- @import "badges.less";
57
- @import "progress-bars.less";
58
55
  @import "carousel.less";
59
- @import "jumbotron.less";
60
56
 
61
57
  // Utility classes
62
- @import "utilities.less"; // Has to be last to override when necessary
58
+ @import "utilities.less";
63
59
  @import "responsive-utilities.less";
@@ -18,16 +18,18 @@
18
18
  border-top-color: #fff;
19
19
  }
20
20
  }
21
- .dropup .caret {
22
- .btn-default & {
21
+ .dropup {
22
+ & .btn-default .caret {
23
23
  border-bottom-color: @btn-default-color;
24
24
  }
25
- .btn-primary &,
26
- .btn-success &,
27
- .btn-warning &,
28
- .btn-danger &,
29
- .btn-info & {
30
- border-bottom-color: #fff;
25
+ .btn-primary,
26
+ .btn-success,
27
+ .btn-warning,
28
+ .btn-danger,
29
+ .btn-info {
30
+ .caret {
31
+ border-bottom-color: #fff;
32
+ }
31
33
  }
32
34
  }
33
35
 
@@ -157,11 +159,12 @@
157
159
  }
158
160
  // Carets in other button sizes
159
161
  .btn-lg .caret {
160
- border-width: @caret-width-large;
162
+ border-width: @caret-width-large @caret-width-large 0;
163
+ border-bottom-width: 0;
161
164
  }
162
165
  // Upside down carets for .dropup
163
166
  .dropup .btn-lg .caret {
164
- border-bottom-width: @caret-width-large;
167
+ border-width: 0 @caret-width-large @caret-width-large;
165
168
  }
166
169
 
167
170
 
@@ -229,6 +232,7 @@
229
232
  display: table;
230
233
  width: 100%;
231
234
  table-layout: fixed;
235
+ border-collapse: separate;
232
236
  .btn {
233
237
  float: none;
234
238
  display: table-cell;
@@ -35,13 +35,14 @@
35
35
  &:active,
36
36
  &.active {
37
37
  outline: 0;
38
+ background-image: none;
38
39
  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
39
40
  }
40
41
 
41
42
  &.disabled,
42
43
  &[disabled],
43
44
  fieldset[disabled] & {
44
- cursor: default;
45
+ cursor: not-allowed;
45
46
  pointer-events: none; // Future-proof disabling of clicks
46
47
  .opacity(.65);
47
48
  .box-shadow(none);
@@ -130,7 +131,7 @@
130
131
  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
131
132
  }
132
133
  .btn-xs {
133
- padding: 3px 5px;
134
+ padding: 1px 5px;
134
135
  }
135
136
 
136
137
 
@@ -98,12 +98,17 @@
98
98
 
99
99
  // Toggles
100
100
  .icon-prev,
101
- .icon-next {
101
+ .icon-next,
102
+ .glyphicon-chevron-left,
103
+ .glyphicon-chevron-right {
102
104
  position: absolute;
103
105
  top: 50%;
104
106
  left: 50%;
105
107
  z-index: 5;
106
108
  display: inline-block;
109
+ }
110
+ .icon-prev,
111
+ .icon-next {
107
112
  width: 20px;
108
113
  height: 20px;
109
114
  margin-top: -10px;
@@ -13,6 +13,9 @@
13
13
  border-top: @caret-width-base solid @dropdown-caret-color;
14
14
  border-right: @caret-width-base solid transparent;
15
15
  border-left: @caret-width-base solid transparent;
16
+ // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once fixed,
17
+ // we can just straight up remove this.
18
+ border-bottom: 0 dotted;
16
19
  content: "";
17
20
  }
18
21
 
@@ -75,8 +78,7 @@
75
78
  &:focus {
76
79
  text-decoration: none;
77
80
  color: @dropdown-link-hover-color;
78
- #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));
79
- background-color: darken(@dropdown-link-hover-bg, 5%);
81
+ background-color: @dropdown-link-hover-bg;
80
82
  }
81
83
  }
82
84
 
@@ -88,8 +90,7 @@
88
90
  color: @dropdown-link-active-color;
89
91
  text-decoration: none;
90
92
  outline: 0;
91
- #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
92
- background-color: darken(@dropdown-link-active-bg, 5%);
93
+ background-color: @dropdown-link-active-bg;
93
94
  }
94
95
  }
95
96
 
@@ -163,7 +164,9 @@
163
164
  .navbar-fixed-bottom .dropdown {
164
165
  // Reverse the caret
165
166
  .caret {
166
- border-top: 0;
167
+ // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once this
168
+ // gets fixed, restore `border-top: 0;`.
169
+ border-top: 0 dotted;
167
170
  border-bottom: 4px solid @dropdown-caret-color;
168
171
  content: "";
169
172
  }
@@ -174,3 +177,17 @@
174
177
  margin-bottom: 1px;
175
178
  }
176
179
  }
180
+
181
+
182
+ // Component alignment
183
+ //
184
+ // Reiterate per navbar.less and the modified component alignment there.
185
+
186
+ @media (min-width: @grid-float-breakpoint) {
187
+ .navbar-right {
188
+ .dropdown-menu {
189
+ .pull-right > .dropdown-menu();
190
+ }
191
+ }
192
+ }
193
+
@@ -133,9 +133,9 @@ input[type="number"] {
133
133
  .form-control-focus();
134
134
 
135
135
  // Disabled and read-only inputs
136
- // Note: HTML5 says that inputs under a fieldset > legend:first-child won't be
137
- // disabled if the fieldset is disabled. Due to implementation difficulty,
138
- // we don't honor that edge case; we style them as disabled anyway.
136
+ // Note: HTML5 says that controls under a fieldset > legend:first-child won't
137
+ // be disabled if the fieldset is disabled. Due to implementation difficulty,
138
+ // we don't honor that edge case; we style them as disabled anyway.
139
139
  &[disabled],
140
140
  &[readonly],
141
141
  fieldset[disabled] & {
@@ -207,6 +207,20 @@ input[type="number"] {
207
207
  margin-left: 10px; // space out consecutive inline controls
208
208
  }
209
209
 
210
+ // Apply same disabled cursor tweak as for inputs
211
+ //
212
+ // Note: Neither radios nor checkboxes can be readonly.
213
+ input[type="radio"],
214
+ input[type="checkbox"],
215
+ .radio,
216
+ .radio-inline,
217
+ .checkbox,
218
+ .checkbox-inline {
219
+ &[disabled],
220
+ fieldset[disabled] & {
221
+ cursor: not-allowed;
222
+ }
223
+ }
210
224
 
211
225
  // Form control sizing
212
226
  .input-sm {
@@ -243,7 +257,7 @@ input[type="number"] {
243
257
 
244
258
  .form-control-static {
245
259
  margin-bottom: 0; // Remove default margin from `p`
246
- padding-top: @padding-base-vertical;
260
+ padding-top: (@padding-base-vertical + 1);
247
261
  }
248
262
 
249
263
 
@@ -312,21 +326,28 @@ input[type="number"] {
312
326
  // Horizontal forms are built on grid classes and allow you to create forms with
313
327
  // labels on the left and inputs on the right.
314
328
 
315
- .form-horizontal .control-label,
316
- .form-horizontal .radio-inline,
317
- .form-horizontal .checkbox-inline {
318
- padding-top: @padding-base-vertical;
319
- }
320
-
321
329
  .form-horizontal {
330
+
331
+ // Consistent vertical alignment of labels, radios, and checkboxes
332
+ .control-label,
333
+ .radio,
334
+ .checkbox,
335
+ .radio-inline,
336
+ .checkbox-inline {
337
+ margin-top: 0;
338
+ margin-bottom: 0;
339
+ padding-top: (@padding-base-vertical + 1); // Default padding plus a border
340
+ }
341
+
342
+ // Make form groups behave like rows
322
343
  .form-group {
323
344
  .make-row();
324
345
  }
325
- }
326
346
 
327
- // Only right align form labels here when the columns stop stacking
328
- @media (min-width: @screen-tablet) {
329
- .form-horizontal .control-label {
330
- text-align: right;
347
+ // Only right align form labels here when the columns stop stacking
348
+ @media (min-width: @screen-tablet) {
349
+ .control-label {
350
+ text-align: right;
351
+ }
331
352
  }
332
353
  }
@@ -0,0 +1,232 @@
1
+ //
2
+ // Glyphicons for Bootstrap
3
+ //
4
+ // Since icons are fonts, they can be placed anywhere text is placed and are
5
+ // thus automatically sized to match the surrounding child. To use, create an
6
+ // inline element with the appropriate classes, like so:
7
+ //
8
+ // <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
9
+
10
+ // Import the fonts
11
+ @font-face {
12
+ font-family: 'Glyphicons Halflings';
13
+ src: url('@{icon-font-path}@{icon-font-name}.eot');
14
+ src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),
15
+ url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),
16
+ url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),
17
+ url('@{icon-font-path}@{icon-font-name}.svg#glyphicons-halflingsregular') format('svg');
18
+ }
19
+
20
+ // Catchall baseclass
21
+ .glyphicon {
22
+ position: relative;
23
+ top: 1px;
24
+ display: inline-block;
25
+ font-family: 'Glyphicons Halflings';
26
+ font-style: normal;
27
+ font-weight: normal;
28
+ line-height: 1;
29
+ -webkit-font-smoothing: antialiased;
30
+ }
31
+
32
+ // Individual icons
33
+ .glyphicon-asterisk { &:before { content: "\2a"; } }
34
+ .glyphicon-plus { &:before { content: "\2b"; } }
35
+ .glyphicon-euro { &:before { content: "\20ac"; } }
36
+ .glyphicon-minus { &:before { content: "\2212"; } }
37
+ .glyphicon-cloud { &:before { content: "\2601"; } }
38
+ .glyphicon-envelope { &:before { content: "\2709"; } }
39
+ .glyphicon-pencil { &:before { content: "\270f"; } }
40
+ .glyphicon-glass { &:before { content: "\e001"; } }
41
+ .glyphicon-music { &:before { content: "\e002"; } }
42
+ .glyphicon-search { &:before { content: "\e003"; } }
43
+ .glyphicon-heart { &:before { content: "\e005"; } }
44
+ .glyphicon-star { &:before { content: "\e006"; } }
45
+ .glyphicon-star-empty { &:before { content: "\e007"; } }
46
+ .glyphicon-user { &:before { content: "\e008"; } }
47
+ .glyphicon-film { &:before { content: "\e009"; } }
48
+ .glyphicon-th-large { &:before { content: "\e010"; } }
49
+ .glyphicon-th { &:before { content: "\e011"; } }
50
+ .glyphicon-th-list { &:before { content: "\e012"; } }
51
+ .glyphicon-ok { &:before { content: "\e013"; } }
52
+ .glyphicon-remove { &:before { content: "\e014"; } }
53
+ .glyphicon-zoom-in { &:before { content: "\e015"; } }
54
+ .glyphicon-zoom-out { &:before { content: "\e016"; } }
55
+ .glyphicon-off { &:before { content: "\e017"; } }
56
+ .glyphicon-signal { &:before { content: "\e018"; } }
57
+ .glyphicon-cog { &:before { content: "\e019"; } }
58
+ .glyphicon-trash { &:before { content: "\e020"; } }
59
+ .glyphicon-home { &:before { content: "\e021"; } }
60
+ .glyphicon-file { &:before { content: "\e022"; } }
61
+ .glyphicon-time { &:before { content: "\e023"; } }
62
+ .glyphicon-road { &:before { content: "\e024"; } }
63
+ .glyphicon-download-alt { &:before { content: "\e025"; } }
64
+ .glyphicon-download { &:before { content: "\e026"; } }
65
+ .glyphicon-upload { &:before { content: "\e027"; } }
66
+ .glyphicon-inbox { &:before { content: "\e028"; } }
67
+ .glyphicon-play-circle { &:before { content: "\e029"; } }
68
+ .glyphicon-repeat { &:before { content: "\e030"; } }
69
+ .glyphicon-refresh { &:before { content: "\e031"; } }
70
+ .glyphicon-list-alt { &:before { content: "\e032"; } }
71
+ .glyphicon-flag { &:before { content: "\e034"; } }
72
+ .glyphicon-headphones { &:before { content: "\e035"; } }
73
+ .glyphicon-volume-off { &:before { content: "\e036"; } }
74
+ .glyphicon-volume-down { &:before { content: "\e037"; } }
75
+ .glyphicon-volume-up { &:before { content: "\e038"; } }
76
+ .glyphicon-qrcode { &:before { content: "\e039"; } }
77
+ .glyphicon-barcode { &:before { content: "\e040"; } }
78
+ .glyphicon-tag { &:before { content: "\e041"; } }
79
+ .glyphicon-tags { &:before { content: "\e042"; } }
80
+ .glyphicon-book { &:before { content: "\e043"; } }
81
+ .glyphicon-print { &:before { content: "\e045"; } }
82
+ .glyphicon-font { &:before { content: "\e047"; } }
83
+ .glyphicon-bold { &:before { content: "\e048"; } }
84
+ .glyphicon-italic { &:before { content: "\e049"; } }
85
+ .glyphicon-text-height { &:before { content: "\e050"; } }
86
+ .glyphicon-text-width { &:before { content: "\e051"; } }
87
+ .glyphicon-align-left { &:before { content: "\e052"; } }
88
+ .glyphicon-align-center { &:before { content: "\e053"; } }
89
+ .glyphicon-align-right { &:before { content: "\e054"; } }
90
+ .glyphicon-align-justify { &:before { content: "\e055"; } }
91
+ .glyphicon-list { &:before { content: "\e056"; } }
92
+ .glyphicon-indent-left { &:before { content: "\e057"; } }
93
+ .glyphicon-indent-right { &:before { content: "\e058"; } }
94
+ .glyphicon-facetime-video { &:before { content: "\e059"; } }
95
+ .glyphicon-picture { &:before { content: "\e060"; } }
96
+ .glyphicon-map-marker { &:before { content: "\e062"; } }
97
+ .glyphicon-adjust { &:before { content: "\e063"; } }
98
+ .glyphicon-tint { &:before { content: "\e064"; } }
99
+ .glyphicon-edit { &:before { content: "\e065"; } }
100
+ .glyphicon-share { &:before { content: "\e066"; } }
101
+ .glyphicon-check { &:before { content: "\e067"; } }
102
+ .glyphicon-move { &:before { content: "\e068"; } }
103
+ .glyphicon-step-backward { &:before { content: "\e069"; } }
104
+ .glyphicon-fast-backward { &:before { content: "\e070"; } }
105
+ .glyphicon-backward { &:before { content: "\e071"; } }
106
+ .glyphicon-play { &:before { content: "\e072"; } }
107
+ .glyphicon-pause { &:before { content: "\e073"; } }
108
+ .glyphicon-stop { &:before { content: "\e074"; } }
109
+ .glyphicon-forward { &:before { content: "\e075"; } }
110
+ .glyphicon-fast-forward { &:before { content: "\e076"; } }
111
+ .glyphicon-step-forward { &:before { content: "\e077"; } }
112
+ .glyphicon-eject { &:before { content: "\e078"; } }
113
+ .glyphicon-chevron-left { &:before { content: "\e079"; } }
114
+ .glyphicon-chevron-right { &:before { content: "\e080"; } }
115
+ .glyphicon-plus-sign { &:before { content: "\e081"; } }
116
+ .glyphicon-minus-sign { &:before { content: "\e082"; } }
117
+ .glyphicon-remove-sign { &:before { content: "\e083"; } }
118
+ .glyphicon-ok-sign { &:before { content: "\e084"; } }
119
+ .glyphicon-question-sign { &:before { content: "\e085"; } }
120
+ .glyphicon-info-sign { &:before { content: "\e086"; } }
121
+ .glyphicon-screenshot { &:before { content: "\e087"; } }
122
+ .glyphicon-remove-circle { &:before { content: "\e088"; } }
123
+ .glyphicon-ok-circle { &:before { content: "\e089"; } }
124
+ .glyphicon-ban-circle { &:before { content: "\e090"; } }
125
+ .glyphicon-arrow-left { &:before { content: "\e091"; } }
126
+ .glyphicon-arrow-right { &:before { content: "\e092"; } }
127
+ .glyphicon-arrow-up { &:before { content: "\e093"; } }
128
+ .glyphicon-arrow-down { &:before { content: "\e094"; } }
129
+ .glyphicon-share-alt { &:before { content: "\e095"; } }
130
+ .glyphicon-resize-full { &:before { content: "\e096"; } }
131
+ .glyphicon-resize-small { &:before { content: "\e097"; } }
132
+ .glyphicon-exclamation-sign { &:before { content: "\e101"; } }
133
+ .glyphicon-gift { &:before { content: "\e102"; } }
134
+ .glyphicon-leaf { &:before { content: "\e103"; } }
135
+ .glyphicon-eye-open { &:before { content: "\e105"; } }
136
+ .glyphicon-eye-close { &:before { content: "\e106"; } }
137
+ .glyphicon-warning-sign { &:before { content: "\e107"; } }
138
+ .glyphicon-plane { &:before { content: "\e108"; } }
139
+ .glyphicon-random { &:before { content: "\e110"; } }
140
+ .glyphicon-comment { &:before { content: "\e111"; } }
141
+ .glyphicon-magnet { &:before { content: "\e112"; } }
142
+ .glyphicon-chevron-up { &:before { content: "\e113"; } }
143
+ .glyphicon-chevron-down { &:before { content: "\e114"; } }
144
+ .glyphicon-retweet { &:before { content: "\e115"; } }
145
+ .glyphicon-shopping-cart { &:before { content: "\e116"; } }
146
+ .glyphicon-folder-close { &:before { content: "\e117"; } }
147
+ .glyphicon-folder-open { &:before { content: "\e118"; } }
148
+ .glyphicon-resize-vertical { &:before { content: "\e119"; } }
149
+ .glyphicon-resize-horizontal { &:before { content: "\e120"; } }
150
+ .glyphicon-hdd { &:before { content: "\e121"; } }
151
+ .glyphicon-bullhorn { &:before { content: "\e122"; } }
152
+ .glyphicon-certificate { &:before { content: "\e124"; } }
153
+ .glyphicon-thumbs-up { &:before { content: "\e125"; } }
154
+ .glyphicon-thumbs-down { &:before { content: "\e126"; } }
155
+ .glyphicon-hand-right { &:before { content: "\e127"; } }
156
+ .glyphicon-hand-left { &:before { content: "\e128"; } }
157
+ .glyphicon-hand-up { &:before { content: "\e129"; } }
158
+ .glyphicon-hand-down { &:before { content: "\e130"; } }
159
+ .glyphicon-circle-arrow-right { &:before { content: "\e131"; } }
160
+ .glyphicon-circle-arrow-left { &:before { content: "\e132"; } }
161
+ .glyphicon-circle-arrow-up { &:before { content: "\e133"; } }
162
+ .glyphicon-circle-arrow-down { &:before { content: "\e134"; } }
163
+ .glyphicon-globe { &:before { content: "\e135"; } }
164
+ .glyphicon-tasks { &:before { content: "\e137"; } }
165
+ .glyphicon-filter { &:before { content: "\e138"; } }
166
+ .glyphicon-fullscreen { &:before { content: "\e140"; } }
167
+ .glyphicon-dashboard { &:before { content: "\e141"; } }
168
+ .glyphicon-heart-empty { &:before { content: "\e143"; } }
169
+ .glyphicon-link { &:before { content: "\e144"; } }
170
+ .glyphicon-phone { &:before { content: "\e145"; } }
171
+ .glyphicon-usd { &:before { content: "\e148"; } }
172
+ .glyphicon-gbp { &:before { content: "\e149"; } }
173
+ .glyphicon-sort { &:before { content: "\e150"; } }
174
+ .glyphicon-sort-by-alphabet { &:before { content: "\e151"; } }
175
+ .glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } }
176
+ .glyphicon-sort-by-order { &:before { content: "\e153"; } }
177
+ .glyphicon-sort-by-order-alt { &:before { content: "\e154"; } }
178
+ .glyphicon-sort-by-attributes { &:before { content: "\e155"; } }
179
+ .glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
180
+ .glyphicon-unchecked { &:before { content: "\e157"; } }
181
+ .glyphicon-expand { &:before { content: "\e158"; } }
182
+ .glyphicon-collapse-down { &:before { content: "\e159"; } }
183
+ .glyphicon-collapse-up { &:before { content: "\e160"; } }
184
+ .glyphicon-log-in { &:before { content: "\e161"; } }
185
+ .glyphicon-flash { &:before { content: "\e162"; } }
186
+ .glyphicon-log-out { &:before { content: "\e163"; } }
187
+ .glyphicon-new-window { &:before { content: "\e164"; } }
188
+ .glyphicon-record { &:before { content: "\e165"; } }
189
+ .glyphicon-save { &:before { content: "\e166"; } }
190
+ .glyphicon-open { &:before { content: "\e167"; } }
191
+ .glyphicon-saved { &:before { content: "\e168"; } }
192
+ .glyphicon-import { &:before { content: "\e169"; } }
193
+ .glyphicon-export { &:before { content: "\e170"; } }
194
+ .glyphicon-send { &:before { content: "\e171"; } }
195
+ .glyphicon-floppy-disk { &:before { content: "\e172"; } }
196
+ .glyphicon-floppy-saved { &:before { content: "\e173"; } }
197
+ .glyphicon-floppy-remove { &:before { content: "\e174"; } }
198
+ .glyphicon-floppy-save { &:before { content: "\e175"; } }
199
+ .glyphicon-floppy-open { &:before { content: "\e176"; } }
200
+ .glyphicon-credit-card { &:before { content: "\e177"; } }
201
+ .glyphicon-transfer { &:before { content: "\e178"; } }
202
+ .glyphicon-cutlery { &:before { content: "\e179"; } }
203
+ .glyphicon-header { &:before { content: "\e180"; } }
204
+ .glyphicon-compressed { &:before { content: "\e181"; } }
205
+ .glyphicon-earphone { &:before { content: "\e182"; } }
206
+ .glyphicon-phone-alt { &:before { content: "\e183"; } }
207
+ .glyphicon-tower { &:before { content: "\e184"; } }
208
+ .glyphicon-stats { &:before { content: "\e185"; } }
209
+ .glyphicon-sd-video { &:before { content: "\e186"; } }
210
+ .glyphicon-hd-video { &:before { content: "\e187"; } }
211
+ .glyphicon-subtitles { &:before { content: "\e188"; } }
212
+ .glyphicon-sound-stereo { &:before { content: "\e189"; } }
213
+ .glyphicon-sound-dolby { &:before { content: "\e190"; } }
214
+ .glyphicon-sound-5-1 { &:before { content: "\e191"; } }
215
+ .glyphicon-sound-6-1 { &:before { content: "\e192"; } }
216
+ .glyphicon-sound-7-1 { &:before { content: "\e193"; } }
217
+ .glyphicon-copyright-mark { &:before { content: "\e194"; } }
218
+ .glyphicon-registration-mark { &:before { content: "\e195"; } }
219
+ .glyphicon-cloud-download { &:before { content: "\e197"; } }
220
+ .glyphicon-cloud-upload { &:before { content: "\e198"; } }
221
+ .glyphicon-tree-conifer { &:before { content: "\e199"; } }
222
+ .glyphicon-tree-deciduous { &:before { content: "\e200"; } }
223
+ .glyphicon-briefcase { &:before { content: "\1f4bc"; } }
224
+ .glyphicon-calendar { &:before { content: "\1f4c5"; } }
225
+ .glyphicon-pushpin { &:before { content: "\1f4cc"; } }
226
+ .glyphicon-paperclip { &:before { content: "\1f4ce"; } }
227
+ .glyphicon-camera { &:before { content: "\1f4f7"; } }
228
+ .glyphicon-lock { &:before { content: "\1f512"; } }
229
+ .glyphicon-bell { &:before { content: "\1f514"; } }
230
+ .glyphicon-bookmark { &:before { content: "\1f516"; } }
231
+ .glyphicon-fire { &:before { content: "\1f525"; } }
232
+ .glyphicon-wrench { &:before { content: "\1f527"; } }