bootstrap_v3 0.0.1

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 (58) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +20 -0
  4. data/README.md +4 -0
  5. data/Rakefile +1 -0
  6. data/bootstrap_v3.gemspec +28 -0
  7. data/lib/bootstrap/v3/rails.rb +10 -0
  8. data/lib/bootstrap/v3/rails/engine.rb +8 -0
  9. data/lib/bootstrap/v3/rails/version.rb +7 -0
  10. data/lib/generators/bootstrap/install/install_generator.rb +38 -0
  11. data/lib/generators/bootstrap/install/templates/bootstrap_v3.js +1 -0
  12. data/lib/generators/bootstrap/install/templates/bootstrap_v3/modules.less +40 -0
  13. data/vendor/assets/fonts/bootstrap_v3/glyphicons-halflings-regular.eot +0 -0
  14. data/vendor/assets/fonts/bootstrap_v3/glyphicons-halflings-regular.svg +228 -0
  15. data/vendor/assets/fonts/bootstrap_v3/glyphicons-halflings-regular.ttf +0 -0
  16. data/vendor/assets/fonts/bootstrap_v3/glyphicons-halflings-regular.woff +0 -0
  17. data/vendor/assets/javascripts/bootstrap_v3/modules/bootstrap.js +1999 -0
  18. data/vendor/assets/stylesheets/bootstrap_v3/modules/alerts.less +67 -0
  19. data/vendor/assets/stylesheets/bootstrap_v3/modules/badges.less +51 -0
  20. data/vendor/assets/stylesheets/bootstrap_v3/modules/bootstrap.less +59 -0
  21. data/vendor/assets/stylesheets/bootstrap_v3/modules/breadcrumbs.less +23 -0
  22. data/vendor/assets/stylesheets/bootstrap_v3/modules/button-groups.less +248 -0
  23. data/vendor/assets/stylesheets/bootstrap_v3/modules/buttons.less +160 -0
  24. data/vendor/assets/stylesheets/bootstrap_v3/modules/carousel.less +209 -0
  25. data/vendor/assets/stylesheets/bootstrap_v3/modules/close.less +33 -0
  26. data/vendor/assets/stylesheets/bootstrap_v3/modules/code.less +56 -0
  27. data/vendor/assets/stylesheets/bootstrap_v3/modules/component-animations.less +29 -0
  28. data/vendor/assets/stylesheets/bootstrap_v3/modules/dropdowns.less +193 -0
  29. data/vendor/assets/stylesheets/bootstrap_v3/modules/forms.less +353 -0
  30. data/vendor/assets/stylesheets/bootstrap_v3/modules/glyphicons.less +232 -0
  31. data/vendor/assets/stylesheets/bootstrap_v3/modules/grid.less +346 -0
  32. data/vendor/assets/stylesheets/bootstrap_v3/modules/input-groups.less +127 -0
  33. data/vendor/assets/stylesheets/bootstrap_v3/modules/jumbotron.less +40 -0
  34. data/vendor/assets/stylesheets/bootstrap_v3/modules/labels.less +58 -0
  35. data/vendor/assets/stylesheets/bootstrap_v3/modules/list-group.less +88 -0
  36. data/vendor/assets/stylesheets/bootstrap_v3/modules/media.less +56 -0
  37. data/vendor/assets/stylesheets/bootstrap_v3/modules/mixins.less +723 -0
  38. data/vendor/assets/stylesheets/bootstrap_v3/modules/modals.less +141 -0
  39. data/vendor/assets/stylesheets/bootstrap_v3/modules/navbar.less +621 -0
  40. data/vendor/assets/stylesheets/bootstrap_v3/modules/navs.less +229 -0
  41. data/vendor/assets/stylesheets/bootstrap_v3/modules/normalize.less +396 -0
  42. data/vendor/assets/stylesheets/bootstrap_v3/modules/pager.less +55 -0
  43. data/vendor/assets/stylesheets/bootstrap_v3/modules/pagination.less +83 -0
  44. data/vendor/assets/stylesheets/bootstrap_v3/modules/panels.less +148 -0
  45. data/vendor/assets/stylesheets/bootstrap_v3/modules/popovers.less +133 -0
  46. data/vendor/assets/stylesheets/bootstrap_v3/modules/print.less +100 -0
  47. data/vendor/assets/stylesheets/bootstrap_v3/modules/progress-bars.less +95 -0
  48. data/vendor/assets/stylesheets/bootstrap_v3/modules/responsive-utilities.less +220 -0
  49. data/vendor/assets/stylesheets/bootstrap_v3/modules/scaffolding.less +130 -0
  50. data/vendor/assets/stylesheets/bootstrap_v3/modules/tables.less +236 -0
  51. data/vendor/assets/stylesheets/bootstrap_v3/modules/theme.less +232 -0
  52. data/vendor/assets/stylesheets/bootstrap_v3/modules/thumbnails.less +31 -0
  53. data/vendor/assets/stylesheets/bootstrap_v3/modules/tooltip.less +95 -0
  54. data/vendor/assets/stylesheets/bootstrap_v3/modules/type.less +238 -0
  55. data/vendor/assets/stylesheets/bootstrap_v3/modules/utilities.less +42 -0
  56. data/vendor/assets/stylesheets/bootstrap_v3/modules/variables.less +620 -0
  57. data/vendor/assets/stylesheets/bootstrap_v3/modules/wells.less +29 -0
  58. metadata +185 -0
@@ -0,0 +1,127 @@
1
+ //
2
+ // Input groups
3
+ // --------------------------------------------------
4
+
5
+ // Base styles
6
+ // -------------------------
7
+ .input-group {
8
+ position: relative; // For dropdowns
9
+ display: table;
10
+ border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
11
+
12
+ // Undo padding and float of grid classes
13
+ &.col {
14
+ float: none;
15
+ padding-left: 0;
16
+ padding-right: 0;
17
+ }
18
+
19
+ .form-control {
20
+ width: 100%;
21
+ margin-bottom: 0;
22
+ }
23
+ }
24
+
25
+ // Sizing options
26
+ //
27
+ // Remix the default form control sizing classes into new ones for easier
28
+ // manipulation.
29
+
30
+ .input-group-lg > .form-control,
31
+ .input-group-lg > .input-group-addon,
32
+ .input-group-lg > .input-group-btn > .btn { .input-lg(); }
33
+ .input-group-sm > .form-control,
34
+ .input-group-sm > .input-group-addon,
35
+ .input-group-sm > .input-group-btn > .btn { .input-sm(); }
36
+
37
+
38
+ // Display as table-cell
39
+ // -------------------------
40
+ .input-group-addon,
41
+ .input-group-btn,
42
+ .input-group .form-control {
43
+ display: table-cell;
44
+
45
+ &:not(:first-child):not(:last-child) {
46
+ border-radius: 0;
47
+ }
48
+ }
49
+ // Addon and addon wrapper for buttons
50
+ .input-group-addon,
51
+ .input-group-btn {
52
+ width: 1%;
53
+ white-space: nowrap;
54
+ vertical-align: middle; // Match the inputs
55
+ }
56
+
57
+ // Text input groups
58
+ // -------------------------
59
+ .input-group-addon {
60
+ padding: @padding-base-vertical @padding-base-horizontal;
61
+ font-size: @font-size-base;
62
+ font-weight: normal;
63
+ line-height: 1;
64
+ text-align: center;
65
+ background-color: @input-group-addon-bg;
66
+ border: 1px solid @input-group-addon-border-color;
67
+ border-radius: @border-radius-base;
68
+
69
+ // Sizing
70
+ &.input-sm {
71
+ padding: @padding-small-vertical @padding-small-horizontal;
72
+ font-size: @font-size-small;
73
+ border-radius: @border-radius-small;
74
+ }
75
+ &.input-lg {
76
+ padding: @padding-large-vertical @padding-large-horizontal;
77
+ font-size: @font-size-large;
78
+ border-radius: @border-radius-large;
79
+ }
80
+
81
+ // Nuke default margins from checkboxes and radios to vertically center within.
82
+ input[type="radio"],
83
+ input[type="checkbox"] {
84
+ margin-top: 0;
85
+ }
86
+ }
87
+
88
+ // Reset rounded corners
89
+ .input-group .form-control:first-child,
90
+ .input-group-addon:first-child,
91
+ .input-group-btn:first-child > .btn,
92
+ .input-group-btn:first-child > .dropdown-toggle,
93
+ .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
94
+ .border-right-radius(0);
95
+ }
96
+ .input-group-addon:first-child {
97
+ border-right: 0;
98
+ }
99
+ .input-group .form-control:last-child,
100
+ .input-group-addon:last-child,
101
+ .input-group-btn:last-child > .btn,
102
+ .input-group-btn:last-child > .dropdown-toggle,
103
+ .input-group-btn:first-child > .btn:not(:first-child) {
104
+ .border-left-radius(0);
105
+ }
106
+ .input-group-addon:last-child {
107
+ border-left: 0;
108
+ }
109
+
110
+ // Button input groups
111
+ // -------------------------
112
+ .input-group-btn {
113
+ position: relative;
114
+ white-space: nowrap;
115
+ }
116
+ .input-group-btn > .btn {
117
+ position: relative;
118
+ // Jankily prevent input button groups from wrapping
119
+ + .btn {
120
+ margin-left: -4px;
121
+ }
122
+ // Bring the "active" button to the front
123
+ &:hover,
124
+ &:active {
125
+ z-index: 2;
126
+ }
127
+ }
@@ -0,0 +1,40 @@
1
+ //
2
+ // Jumbotron
3
+ // --------------------------------------------------
4
+
5
+
6
+ .jumbotron {
7
+ padding: @jumbotron-padding;
8
+ margin-bottom: @jumbotron-padding;
9
+ font-size: (@font-size-base * 1.5);
10
+ font-weight: 200;
11
+ line-height: (@line-height-base * 1.5);
12
+ color: @jumbotron-color;
13
+ background-color: @jumbotron-bg;
14
+
15
+ h1 {
16
+ line-height: 1;
17
+ color: @jumbotron-heading-color;
18
+ }
19
+ p {
20
+ line-height: 1.4;
21
+ }
22
+
23
+ .container & {
24
+ border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
25
+ }
26
+
27
+ @media screen and (min-width: @screen-tablet) {
28
+ padding-top: (@jumbotron-padding * 1.6);
29
+ padding-bottom: (@jumbotron-padding * 1.6);
30
+
31
+ .container & {
32
+ padding-left: (@jumbotron-padding * 2);
33
+ padding-right: (@jumbotron-padding * 2);
34
+ }
35
+
36
+ h1 {
37
+ font-size: (@font-size-base * 4.5);
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,58 @@
1
+ //
2
+ // Labels
3
+ // --------------------------------------------------
4
+
5
+ .label {
6
+ display: inline;
7
+ padding: .2em .6em .3em;
8
+ font-size: 75%;
9
+ font-weight: bold;
10
+ line-height: 1;
11
+ color: @label-color;
12
+ text-align: center;
13
+ white-space: nowrap;
14
+ vertical-align: baseline;
15
+ border-radius: .25em;
16
+
17
+ // Add hover effects, but only for links
18
+ &[href] {
19
+ &:hover,
20
+ &:focus {
21
+ color: @label-link-hover-color;
22
+ text-decoration: none;
23
+ cursor: pointer;
24
+ }
25
+ }
26
+
27
+ // Empty labels collapse automatically (not available in IE8)
28
+ &:empty {
29
+ display: none;
30
+ }
31
+ }
32
+
33
+ // Colors
34
+ // Contextual variations (linked labels get darker on :hover)
35
+
36
+ .label-default {
37
+ .label-variant(@label-default-bg);
38
+ }
39
+
40
+ .label-primary {
41
+ .label-variant(@label-primary-bg);
42
+ }
43
+
44
+ .label-success {
45
+ .label-variant(@label-success-bg);
46
+ }
47
+
48
+ .label-info {
49
+ .label-variant(@label-info-bg);
50
+ }
51
+
52
+ .label-warning {
53
+ .label-variant(@label-warning-bg);
54
+ }
55
+
56
+ .label-danger {
57
+ .label-variant(@label-danger-bg);
58
+ }
@@ -0,0 +1,88 @@
1
+ //
2
+ // List groups
3
+ // --------------------------------------------------
4
+
5
+ // Base class
6
+ //
7
+ // Easily usable on <ul>, <ol>, or <div>.
8
+ .list-group {
9
+ // No need to set list-style: none; since .list-group-item is block level
10
+ margin-bottom: 20px;
11
+ padding-left: 0; // reset padding because ul and ol
12
+ }
13
+
14
+ // Individual list items
15
+ // -------------------------
16
+
17
+ .list-group-item {
18
+ position: relative;
19
+ display: block;
20
+ padding: 10px 15px;
21
+ // Place the border on the list items and negative margin up for better styling
22
+ margin-bottom: -1px;
23
+ background-color: @list-group-bg;
24
+ border: 1px solid @list-group-border;
25
+
26
+ // Round the first and last items
27
+ &:first-child {
28
+ .border-top-radius(@list-group-border-radius);
29
+ }
30
+ &:last-child {
31
+ margin-bottom: 0;
32
+ .border-bottom-radius(@list-group-border-radius);
33
+ }
34
+
35
+ // Align badges within list items
36
+ > .badge {
37
+ float: right;
38
+ }
39
+ > .badge + .badge {
40
+ margin-right: 5px;
41
+ }
42
+
43
+ // Linked list items
44
+ a& {
45
+ color: @list-group-link-color;
46
+
47
+ .list-group-item-heading {
48
+ color: @list-group-link-heading-color;
49
+ }
50
+
51
+ // Hover state
52
+ &:hover,
53
+ &:focus {
54
+ text-decoration: none;
55
+ background-color: @list-group-hover-bg;
56
+ }
57
+ }
58
+
59
+ // Active class on item itself, not parent
60
+ &.active,
61
+ &.active:hover,
62
+ &.active:focus {
63
+ z-index: 2; // Place active items above their siblings for proper border styling
64
+ color: @list-group-active-color;
65
+ background-color: @list-group-active-bg;
66
+ border-color: @list-group-active-border;
67
+
68
+ // Force color to inherit for custom content
69
+ .list-group-item-heading {
70
+ color: inherit;
71
+ }
72
+ .list-group-item-text {
73
+ color: lighten(@list-group-active-bg, 40%);
74
+ }
75
+ }
76
+ }
77
+
78
+ // Custom content options
79
+ // -------------------------
80
+
81
+ .list-group-item-heading {
82
+ margin-top: 0;
83
+ margin-bottom: 5px;
84
+ }
85
+ .list-group-item-text {
86
+ margin-bottom: 0;
87
+ line-height: 1.3;
88
+ }
@@ -0,0 +1,56 @@
1
+ // Media objects
2
+ // Source: http://stubbornella.org/content/?p=497
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Common styles
7
+ // -------------------------
8
+
9
+ // Clear the floats
10
+ .media,
11
+ .media-body {
12
+ overflow: hidden;
13
+ zoom: 1;
14
+ }
15
+
16
+ // Proper spacing between instances of .media
17
+ .media,
18
+ .media .media {
19
+ margin-top: 15px;
20
+ }
21
+ .media:first-child {
22
+ margin-top: 0;
23
+ }
24
+
25
+ // For images and videos, set to block
26
+ .media-object {
27
+ display: block;
28
+ }
29
+
30
+ // Reset margins on headings for tighter default spacing
31
+ .media-heading {
32
+ margin: 0 0 5px;
33
+ }
34
+
35
+
36
+ // Media image alignment
37
+ // -------------------------
38
+
39
+ .media {
40
+ > .pull-left {
41
+ margin-right: 10px;
42
+ }
43
+ > .pull-right {
44
+ margin-left: 10px;
45
+ }
46
+ }
47
+
48
+
49
+ // Media list variation
50
+ // -------------------------
51
+
52
+ // Undo default ul/ol styles
53
+ .media-list {
54
+ padding-left: 0;
55
+ list-style: none;
56
+ }
@@ -0,0 +1,723 @@
1
+ //
2
+ // Mixins
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Utilities
7
+ // -------------------------
8
+
9
+ // Clearfix
10
+ // Source: http://nicolasgallagher.com/micro-clearfix-hack/
11
+ //
12
+ // For modern browsers
13
+ // 1. The space content is one way to avoid an Opera bug when the
14
+ // contenteditable attribute is included anywhere else in the document.
15
+ // Otherwise it causes space to appear at the top and bottom of elements
16
+ // that are clearfixed.
17
+ // 2. The use of `table` rather than `block` is only necessary if using
18
+ // `:before` to contain the top-margins of child elements.
19
+ .clearfix() {
20
+ &:before,
21
+ &:after {
22
+ content: " "; /* 1 */
23
+ display: table; /* 2 */
24
+ }
25
+ &:after {
26
+ clear: both;
27
+ }
28
+ }
29
+
30
+ // Webkit-style focus
31
+ .tab-focus() {
32
+ // Default
33
+ outline: thin dotted #333;
34
+ // Webkit
35
+ outline: 5px auto -webkit-focus-ring-color;
36
+ outline-offset: -2px;
37
+ }
38
+
39
+ // Center-align a block level element
40
+ .center-block() {
41
+ display: block;
42
+ margin-left: auto;
43
+ margin-right: auto;
44
+ }
45
+
46
+ // Sizing shortcuts
47
+ .size(@width; @height) {
48
+ width: @width;
49
+ height: @height;
50
+ }
51
+ .square(@size) {
52
+ .size(@size; @size);
53
+ }
54
+
55
+ // Placeholder text
56
+ .placeholder(@color: @input-color-placeholder) {
57
+ &:-moz-placeholder { color: @color; } // Firefox 4-18
58
+ &::-moz-placeholder { color: @color; } // Firefox 19+
59
+ &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
60
+ &::-webkit-input-placeholder { color: @color; } // Safari and Chrome
61
+ }
62
+
63
+ // Text overflow
64
+ // Requires inline-block or block for proper styling
65
+ .text-overflow() {
66
+ overflow: hidden;
67
+ text-overflow: ellipsis;
68
+ white-space: nowrap;
69
+ }
70
+
71
+ // CSS image replacement
72
+ // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
73
+ .hide-text() {
74
+ font: ~"0/0" a;
75
+ color: transparent;
76
+ text-shadow: none;
77
+ background-color: transparent;
78
+ border: 0;
79
+ }
80
+
81
+
82
+
83
+ // CSS3 PROPERTIES
84
+ // --------------------------------------------------
85
+
86
+ // Single side border-radius
87
+ .border-top-radius(@radius) {
88
+ border-top-right-radius: @radius;
89
+ border-top-left-radius: @radius;
90
+ }
91
+ .border-right-radius(@radius) {
92
+ border-bottom-right-radius: @radius;
93
+ border-top-right-radius: @radius;
94
+ }
95
+ .border-bottom-radius(@radius) {
96
+ border-bottom-right-radius: @radius;
97
+ border-bottom-left-radius: @radius;
98
+ }
99
+ .border-left-radius(@radius) {
100
+ border-bottom-left-radius: @radius;
101
+ border-top-left-radius: @radius;
102
+ }
103
+
104
+ // Drop shadows
105
+ .box-shadow(@shadow) {
106
+ -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1
107
+ box-shadow: @shadow;
108
+ }
109
+
110
+ // Transitions
111
+ .transition(@transition) {
112
+ -webkit-transition: @transition;
113
+ transition: @transition;
114
+ }
115
+ .transition-delay(@transition-delay) {
116
+ -webkit-transition-delay: @transition-delay;
117
+ transition-delay: @transition-delay;
118
+ }
119
+ .transition-duration(@transition-duration) {
120
+ -webkit-transition-duration: @transition-duration;
121
+ transition-duration: @transition-duration;
122
+ }
123
+ .transition-transform(@transition) {
124
+ -webkit-transition: -webkit-transform @transition;
125
+ -moz-transition: -moz-transform @transition;
126
+ -o-transition: -o-transform @transition;
127
+ transition: transform @transition;
128
+ }
129
+
130
+ // Transformations
131
+ .rotate(@degrees) {
132
+ -webkit-transform: rotate(@degrees);
133
+ -ms-transform: rotate(@degrees); // IE9+
134
+ transform: rotate(@degrees);
135
+ }
136
+ .scale(@ratio) {
137
+ -webkit-transform: scale(@ratio);
138
+ -ms-transform: scale(@ratio); // IE9+
139
+ transform: scale(@ratio);
140
+ }
141
+ .translate(@x; @y) {
142
+ -webkit-transform: translate(@x, @y);
143
+ -ms-transform: translate(@x, @y); // IE9+
144
+ transform: translate(@x, @y);
145
+ }
146
+ .skew(@x; @y) {
147
+ -webkit-transform: skew(@x, @y);
148
+ -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
149
+ transform: skew(@x, @y);
150
+ }
151
+ .translate3d(@x; @y; @z) {
152
+ -webkit-transform: translate3d(@x, @y, @z);
153
+ transform: translate3d(@x, @y, @z);
154
+ }
155
+
156
+ // Backface visibility
157
+ // Prevent browsers from flickering when using CSS 3D transforms.
158
+ // Default value is `visible`, but can be changed to `hidden`
159
+ // See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
160
+ .backface-visibility(@visibility){
161
+ -webkit-backface-visibility: @visibility;
162
+ -moz-backface-visibility: @visibility;
163
+ backface-visibility: @visibility;
164
+ }
165
+
166
+ // Box sizing
167
+ .box-sizing(@boxmodel) {
168
+ -webkit-box-sizing: @boxmodel;
169
+ -moz-box-sizing: @boxmodel;
170
+ box-sizing: @boxmodel;
171
+ }
172
+
173
+ // User select
174
+ // For selecting text on the page
175
+ .user-select(@select) {
176
+ -webkit-user-select: @select;
177
+ -moz-user-select: @select;
178
+ -ms-user-select: @select; // IE10+
179
+ -o-user-select: @select;
180
+ user-select: @select;
181
+ }
182
+
183
+ // Resize anything
184
+ .resizable(@direction) {
185
+ resize: @direction; // Options: horizontal, vertical, both
186
+ overflow: auto; // Safari fix
187
+ }
188
+
189
+ // CSS3 Content Columns
190
+ .content-columns(@column-count; @column-gap: @grid-gutter-width) {
191
+ -webkit-column-count: @column-count;
192
+ -moz-column-count: @column-count;
193
+ column-count: @column-count;
194
+ -webkit-column-gap: @column-gap;
195
+ -moz-column-gap: @column-gap;
196
+ column-gap: @column-gap;
197
+ }
198
+
199
+ // Optional hyphenation
200
+ .hyphens(@mode: auto) {
201
+ word-wrap: break-word;
202
+ -webkit-hyphens: @mode;
203
+ -moz-hyphens: @mode;
204
+ -ms-hyphens: @mode; // IE10+
205
+ -o-hyphens: @mode;
206
+ hyphens: @mode;
207
+ }
208
+
209
+ // Opacity
210
+ .opacity(@opacity) {
211
+ opacity: @opacity;
212
+ // IE8 filter
213
+ @opacity-ie: (@opacity * 100);
214
+ filter: ~"alpha(opacity=@{opacity-ie})";
215
+ }
216
+
217
+
218
+
219
+ // GRADIENTS
220
+ // --------------------------------------------------
221
+
222
+ #gradient {
223
+
224
+ // Horizontal gradient, from left to right
225
+ //
226
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
227
+ // Color stops are not available in IE9 and below.
228
+ .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
229
+ background-image: -webkit-gradient(linear, @start-percent top, @end-percent top, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+
230
+ background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1+, Chrome 10+
231
+ background-image: -moz-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // FF 3.6+
232
+ background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10
233
+ background-repeat: repeat-x;
234
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down
235
+ }
236
+
237
+ // Vertical gradient, from top to bottom
238
+ //
239
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
240
+ // Color stops are not available in IE9 and below.
241
+ .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
242
+ background-image: -webkit-gradient(linear, left @start-percent, left @end-percent, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+
243
+ background-image: -webkit-linear-gradient(top, @start-color, @start-percent, @end-color, @end-percent); // Safari 5.1+, Chrome 10+
244
+ background-image: -moz-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // FF 3.6+
245
+ background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10
246
+ background-repeat: repeat-x;
247
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down
248
+ }
249
+
250
+ .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {
251
+ background-repeat: repeat-x;
252
+ background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1+, Chrome 10+
253
+ background-image: -moz-linear-gradient(@deg, @start-color, @end-color); // FF 3.6+
254
+ background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10
255
+ }
256
+ .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
257
+ background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color));
258
+ background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
259
+ background-image: -moz-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
260
+ background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);
261
+ background-repeat: no-repeat;
262
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
263
+ }
264
+ .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
265
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color));
266
+ background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
267
+ background-image: -moz-linear-gradient(top, @start-color, @mid-color @color-stop, @end-color);
268
+ background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);
269
+ background-repeat: no-repeat;
270
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
271
+ }
272
+ .radial(@inner-color: #555; @outer-color: #333) {
273
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@inner-color), to(@outer-color));
274
+ background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);
275
+ background-image: -moz-radial-gradient(circle, @inner-color, @outer-color);
276
+ background-image: radial-gradient(circle, @inner-color, @outer-color);
277
+ background-repeat: no-repeat;
278
+ }
279
+ .striped(@color: #555; @angle: 45deg) {
280
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
281
+ background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
282
+ background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
283
+ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
284
+ }
285
+ }
286
+
287
+ // Reset filters for IE
288
+ //
289
+ // When you need to remove a gradient background, do not forget to use this to reset
290
+ // the IE filter for IE9 and below.
291
+ .reset-filter() {
292
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
293
+ }
294
+
295
+
296
+
297
+ // Retina images
298
+ //
299
+ // Short retina mixin for setting background-image and -size
300
+
301
+ .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
302
+ background-image: url("@{file-1x}");
303
+
304
+ @media
305
+ only screen and (-webkit-min-device-pixel-ratio: 2),
306
+ only screen and ( min--moz-device-pixel-ratio: 2),
307
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
308
+ only screen and ( min-device-pixel-ratio: 2),
309
+ only screen and ( min-resolution: 192dpi),
310
+ only screen and ( min-resolution: 2dppx) {
311
+ background-image: url("@{file-2x}");
312
+ background-size: @width-1x @height-1x;
313
+ }
314
+ }
315
+
316
+
317
+ // Responsive image
318
+ //
319
+ // Keep images from scaling beyond the width of their parents.
320
+
321
+ .img-responsive(@display: block;) {
322
+ display: @display;
323
+ max-width: 100%; // Part 1: Set a maximum relative to the parent
324
+ height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
325
+ }
326
+
327
+
328
+ // COMPONENT MIXINS
329
+ // --------------------------------------------------
330
+
331
+ // Horizontal dividers
332
+ // -------------------------
333
+ // Dividers (basically an hr) within dropdowns and nav lists
334
+ .nav-divider(@color: #e5e5e5) {
335
+ height: 1px;
336
+ margin: ((@line-height-computed / 2) - 1) 0;
337
+ overflow: hidden;
338
+ background-color: @color;
339
+ }
340
+
341
+ // Panels
342
+ // -------------------------
343
+ .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border;) {
344
+ border-color: @border;
345
+ & > .panel-heading {
346
+ color: @heading-text-color;
347
+ background-color: @heading-bg-color;
348
+ border-color: @heading-border;
349
+ + .panel-collapse .panel-body {
350
+ border-top-color: @border;
351
+ }
352
+ }
353
+ & > .panel-footer {
354
+ + .panel-collapse .panel-body {
355
+ border-bottom-color: @border;
356
+ }
357
+ }
358
+ }
359
+
360
+ // Alerts
361
+ // -------------------------
362
+ .alert-variant(@background; @border; @text-color) {
363
+ background-color: @background;
364
+ border-color: @border;
365
+ color: @text-color;
366
+ hr {
367
+ border-top-color: darken(@border, 5%);
368
+ }
369
+ .alert-link {
370
+ color: darken(@text-color, 10%);
371
+ }
372
+ }
373
+
374
+ // Tables
375
+ // -------------------------
376
+ .table-row-variant(@state; @background; @border) {
377
+ // Exact selectors below required to override `.table-striped` and prevent
378
+ // inheritance to nested tables.
379
+ .table > thead > tr,
380
+ .table > tbody > tr,
381
+ .table > tfoot > tr {
382
+ > td.@{state},
383
+ > th.@{state},
384
+ &.@{state} > td,
385
+ &.@{state} > th {
386
+ background-color: @background;
387
+ border-color: @border;
388
+ }
389
+ }
390
+
391
+ // Hover states for `.table-hover`
392
+ // Note: this is not available for cells or rows within `thead` or `tfoot`.
393
+ .table-hover > tbody > tr {
394
+ > td.@{state}:hover,
395
+ > th.@{state}:hover,
396
+ &.@{state}:hover > td {
397
+ background-color: darken(@background, 5%);
398
+ border-color: darken(@border, 5%);
399
+ }
400
+ }
401
+ }
402
+
403
+ // Button variants
404
+ // -------------------------
405
+ // Easily pump out default styles, as well as :hover, :focus, :active,
406
+ // and disabled options for all buttons
407
+ .button-variant(@color; @background; @border) {
408
+ color: @color;
409
+ background-color: @background;
410
+ border-color: @border;
411
+
412
+ &:hover,
413
+ &:focus,
414
+ &:active,
415
+ &.active,
416
+ .open .dropdown-toggle& {
417
+ color: @color;
418
+ background-color: darken(@background, 8%);
419
+ border-color: darken(@border, 12%);
420
+ }
421
+ &:active,
422
+ &.active,
423
+ .open .dropdown-toggle& {
424
+ background-image: none;
425
+ }
426
+ &.disabled,
427
+ &[disabled],
428
+ fieldset[disabled] & {
429
+ &,
430
+ &:hover,
431
+ &:focus,
432
+ &:active,
433
+ &.active {
434
+ background-color: @background;
435
+ border-color: @border
436
+ }
437
+ }
438
+ }
439
+
440
+ // Button sizes
441
+ // -------------------------
442
+ .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
443
+ padding: @padding-vertical @padding-horizontal;
444
+ font-size: @font-size;
445
+ line-height: @line-height;
446
+ border-radius: @border-radius;
447
+ }
448
+
449
+ // Pagination
450
+ // -------------------------
451
+ .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {
452
+ > li {
453
+ > a,
454
+ > span {
455
+ padding: @padding-vertical @padding-horizontal;
456
+ font-size: @font-size;
457
+ }
458
+ &:first-child {
459
+ > a,
460
+ > span {
461
+ .border-left-radius(@border-radius);
462
+ }
463
+ }
464
+ &:last-child {
465
+ > a,
466
+ > span {
467
+ .border-right-radius(@border-radius);
468
+ }
469
+ }
470
+ }
471
+ }
472
+
473
+ // Labels
474
+ // -------------------------
475
+ .label-variant(@color) {
476
+ background-color: @color;
477
+ &[href] {
478
+ &:hover,
479
+ &:focus {
480
+ background-color: darken(@color, 10%);
481
+ }
482
+ }
483
+ }
484
+
485
+ // Navbar vertical align
486
+ // -------------------------
487
+ // Vertically center elements in the navbar.
488
+ // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
489
+ .navbar-vertical-align(@element-height) {
490
+ margin-top: ((@navbar-height - @element-height) / 2);
491
+ margin-bottom: ((@navbar-height - @element-height) / 2);
492
+ }
493
+
494
+ // Progress bars
495
+ // -------------------------
496
+ .progress-bar-variant(@color) {
497
+ background-color: @color;
498
+ .progress-striped & {
499
+ #gradient > .striped(@color);
500
+ }
501
+ }
502
+
503
+ // Responsive utilities
504
+ // -------------------------
505
+ // More easily include all the states for responsive-utilities.less.
506
+ .responsive-visibility() {
507
+ display: block !important;
508
+ tr& { display: table-row !important; }
509
+ th&,
510
+ td& { display: table-cell !important; }
511
+ }
512
+
513
+ .responsive-invisibility() {
514
+ display: none !important;
515
+ tr& { display: none !important; }
516
+ th&,
517
+ td& { display: none !important; }
518
+ }
519
+
520
+ // Grid System
521
+ // -----------
522
+
523
+ // Centered container element
524
+ .container-fixed() {
525
+ margin-right: auto;
526
+ margin-left: auto;
527
+ padding-left: (@grid-gutter-width / 2);
528
+ padding-right: (@grid-gutter-width / 2);
529
+ .clearfix();
530
+ }
531
+
532
+ // Creates a wrapper for a series of columns
533
+ .make-row(@gutter: @grid-gutter-width) {
534
+ margin-left: (@gutter / -2);
535
+ margin-right: (@gutter / -2);
536
+ .clearfix();
537
+ }
538
+
539
+ // Generate the extra small columns
540
+ .make-xs-column(@columns; @gutter: @grid-gutter-width) {
541
+ position: relative;
542
+ float: left;
543
+ width: percentage((@columns / @grid-columns));
544
+ // Prevent columns from collapsing when empty
545
+ min-height: 1px;
546
+ // Inner gutter via padding
547
+ padding-left: (@gutter / 2);
548
+ padding-right: (@gutter / 2);
549
+ }
550
+
551
+ // Generate the small columns
552
+ .make-sm-column(@columns; @gutter: @grid-gutter-width) {
553
+ position: relative;
554
+ // Prevent columns from collapsing when empty
555
+ min-height: 1px;
556
+ // Inner gutter via padding
557
+ padding-left: (@gutter / 2);
558
+ padding-right: (@gutter / 2);
559
+
560
+ // Calculate width based on number of columns available
561
+ @media (min-width: @screen-sm) {
562
+ float: left;
563
+ width: percentage((@columns / @grid-columns));
564
+ }
565
+ }
566
+
567
+ // Generate the small column offsets
568
+ .make-sm-column-offset(@columns) {
569
+ @media (min-width: @screen-sm) {
570
+ margin-left: percentage((@columns / @grid-columns));
571
+ }
572
+ }
573
+ .make-sm-column-push(@columns) {
574
+ @media (min-width: @screen-sm) {
575
+ left: percentage((@columns / @grid-columns));
576
+ }
577
+ }
578
+ .make-sm-column-pull(@columns) {
579
+ @media (min-width: @screen-sm) {
580
+ right: percentage((@columns / @grid-columns));
581
+ }
582
+ }
583
+
584
+ // Generate the medium columns
585
+ .make-md-column(@columns; @gutter: @grid-gutter-width) {
586
+ position: relative;
587
+ // Prevent columns from collapsing when empty
588
+ min-height: 1px;
589
+ // Inner gutter via padding
590
+ padding-left: (@gutter / 2);
591
+ padding-right: (@gutter / 2);
592
+
593
+ // Calculate width based on number of columns available
594
+ @media (min-width: @screen-md) {
595
+ float: left;
596
+ width: percentage((@columns / @grid-columns));
597
+ }
598
+ }
599
+
600
+ // Generate the large column offsets
601
+ .make-md-column-offset(@columns) {
602
+ @media (min-width: @screen-md) {
603
+ margin-left: percentage((@columns / @grid-columns));
604
+ }
605
+ }
606
+ .make-md-column-push(@columns) {
607
+ @media (min-width: @screen-md) {
608
+ left: percentage((@columns / @grid-columns));
609
+ }
610
+ }
611
+ .make-md-column-pull(@columns) {
612
+ @media (min-width: @screen-md) {
613
+ right: percentage((@columns / @grid-columns));
614
+ }
615
+ }
616
+
617
+ // Generate the large columns
618
+ .make-lg-column(@columns; @gutter: @grid-gutter-width) {
619
+ position: relative;
620
+ // Prevent columns from collapsing when empty
621
+ min-height: 1px;
622
+ // Inner gutter via padding
623
+ padding-left: (@gutter / 2);
624
+ padding-right: (@gutter / 2);
625
+
626
+ // Calculate width based on number of columns available
627
+ @media (min-width: @screen-lg) {
628
+ float: left;
629
+ width: percentage((@columns / @grid-columns));
630
+ }
631
+ }
632
+
633
+ // Generate the large column offsets
634
+ .make-lg-column-offset(@columns) {
635
+ @media (min-width: @screen-lg) {
636
+ margin-left: percentage((@columns / @grid-columns));
637
+ }
638
+ }
639
+ .make-lg-column-push(@columns) {
640
+ @media (min-width: @screen-lg) {
641
+ left: percentage((@columns / @grid-columns));
642
+ }
643
+ }
644
+ .make-lg-column-pull(@columns) {
645
+ @media (min-width: @screen-lg) {
646
+ right: percentage((@columns / @grid-columns));
647
+ }
648
+ }
649
+
650
+
651
+ // Form validation states
652
+ //
653
+ // Used in forms.less to generate the form validation CSS for warnings, errors,
654
+ // and successes.
655
+
656
+ .form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {
657
+ // Color the label and help text
658
+ .help-block,
659
+ .control-label {
660
+ color: @text-color;
661
+ }
662
+ // Set the border and box shadow on specific inputs to match
663
+ .form-control {
664
+ border-color: @border-color;
665
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
666
+ &:focus {
667
+ border-color: darken(@border-color, 10%);
668
+ @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
669
+ .box-shadow(@shadow);
670
+ }
671
+ }
672
+ // Set validation states also for addons
673
+ .input-group-addon {
674
+ color: @text-color;
675
+ border-color: @border-color;
676
+ background-color: @background-color;
677
+ }
678
+ }
679
+
680
+ // Form control focus state
681
+ //
682
+ // Generate a customized focus state and for any input with the specified color,
683
+ // which defaults to the `@input-focus-border` variable.
684
+ //
685
+ // We highly encourage you to not customize the default value, but instead use
686
+ // this to tweak colors on an as-needed basis. This aesthetic change is based on
687
+ // WebKit's default styles, but applicable to a wider range of browsers. Its
688
+ // usability and accessibility should be taken into account with any change.
689
+ //
690
+ // Example usage: change the default blue border and shadow to white for better
691
+ // contrast against a dark gray background.
692
+
693
+ .form-control-focus(@color: @input-border-focus) {
694
+ @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);
695
+ &:focus {
696
+ border-color: @color;
697
+ outline: 0;
698
+ .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}");
699
+ }
700
+ }
701
+
702
+ // Form control sizing
703
+ //
704
+ // Relative text size, padding, and border-radii changes for form controls. For
705
+ // horizontal sizing, wrap controls in the predefined grid classes. `<select>`
706
+ // element gets special love because it's special, and that's a fact!
707
+
708
+ .input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
709
+ height: @input-height;
710
+ padding: @padding-vertical @padding-horizontal;
711
+ font-size: @font-size;
712
+ line-height: @line-height;
713
+ border-radius: @border-radius;
714
+
715
+ select& {
716
+ height: @input-height;
717
+ line-height: @input-height;
718
+ }
719
+
720
+ textarea& {
721
+ height: auto;
722
+ }
723
+ }