twitter-bootstrap-rails 2.0 → 2.0.1.0

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.

Potentially problematic release.


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

Files changed (77) hide show
  1. data/README.md +31 -37
  2. data/Rakefile +11 -0
  3. data/lib/generators/bootstrap/install/install_generator.rb +37 -13
  4. data/lib/generators/bootstrap/install/templates/application.css +0 -1
  5. data/lib/generators/bootstrap/install/templates/bootstrap.coffee +6 -15
  6. data/lib/generators/bootstrap/install/templates/bootstrap_and_overrides.less +13 -0
  7. data/lib/generators/bootstrap/layout/layout_generator.rb +4 -4
  8. data/lib/generators/bootstrap/layout/templates/layout.html.erb +96 -49
  9. data/lib/generators/bootstrap/layout/templates/layout.html.haml +76 -0
  10. data/lib/generators/bootstrap/layout/templates/layout.html.slim +77 -0
  11. data/lib/generators/bootstrap/themed/templates/_form.html.erb +5 -4
  12. data/lib/generators/bootstrap/themed/templates/_form.html.haml +11 -0
  13. data/lib/generators/bootstrap/themed/templates/_form.html.slim +11 -0
  14. data/lib/generators/bootstrap/themed/templates/edit.html.erb +1 -2
  15. data/lib/generators/bootstrap/themed/templates/edit.html.haml +3 -0
  16. data/lib/generators/bootstrap/themed/templates/edit.html.slim +3 -0
  17. data/lib/generators/bootstrap/themed/templates/index.html.erb +27 -28
  18. data/lib/generators/bootstrap/themed/templates/index.html.haml +25 -0
  19. data/lib/generators/bootstrap/themed/templates/index.html.slim +25 -0
  20. data/lib/generators/bootstrap/themed/templates/new.html.haml +2 -0
  21. data/lib/generators/bootstrap/themed/templates/new.html.slim +2 -0
  22. data/lib/generators/bootstrap/themed/templates/show.html.erb +5 -4
  23. data/lib/generators/bootstrap/themed/templates/show.html.haml +9 -0
  24. data/lib/generators/bootstrap/themed/templates/show.html.slim +9 -0
  25. data/lib/generators/bootstrap/themed/themed_generator.rb +13 -13
  26. data/lib/twitter/bootstrap/rails/version.rb +1 -1
  27. data/vendor/assets/images/twitter/bootstrap/glyphicons-halflings-white.png +0 -0
  28. data/vendor/assets/images/twitter/bootstrap/glyphicons-halflings.png +0 -0
  29. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-alert.js +16 -7
  30. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-button.js +3 -3
  31. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-carousel.js +7 -4
  32. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-collapse.js +7 -5
  33. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-dropdown.js +16 -7
  34. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-modal.js +12 -7
  35. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-popover.js +5 -5
  36. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-scrollspy.js +4 -3
  37. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tab.js +11 -6
  38. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tooltip.js +2 -2
  39. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-transition.js +3 -3
  40. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-typeahead.js +40 -21
  41. data/vendor/toolkit/twitter/bootstrap/accordion.less +5 -4
  42. data/vendor/toolkit/twitter/bootstrap/alerts.less +1 -0
  43. data/vendor/toolkit/twitter/bootstrap/bootstrap.less +10 -8
  44. data/vendor/toolkit/twitter/bootstrap/breadcrumbs.less +1 -1
  45. data/vendor/toolkit/twitter/bootstrap/button-groups.less +49 -17
  46. data/vendor/toolkit/twitter/bootstrap/buttons.less +156 -89
  47. data/vendor/toolkit/twitter/bootstrap/carousel.less +12 -5
  48. data/vendor/toolkit/twitter/bootstrap/code.less +57 -0
  49. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +24 -4
  50. data/vendor/toolkit/twitter/bootstrap/forms.less +117 -91
  51. data/vendor/toolkit/twitter/bootstrap/grid.less +8 -0
  52. data/vendor/toolkit/twitter/bootstrap/hero-unit.less +20 -0
  53. data/vendor/toolkit/twitter/bootstrap/labels.less +23 -7
  54. data/vendor/toolkit/twitter/bootstrap/layouts.less +17 -0
  55. data/vendor/toolkit/twitter/bootstrap/mixins.less +253 -36
  56. data/vendor/toolkit/twitter/bootstrap/modals.less +20 -2
  57. data/vendor/toolkit/twitter/bootstrap/navbar.less +82 -34
  58. data/vendor/toolkit/twitter/bootstrap/navs.less +87 -72
  59. data/vendor/toolkit/twitter/bootstrap/pager.less +7 -2
  60. data/vendor/toolkit/twitter/bootstrap/pagination.less +1 -0
  61. data/vendor/toolkit/twitter/bootstrap/popovers.less +25 -25
  62. data/vendor/toolkit/twitter/bootstrap/progress-bars.less +14 -18
  63. data/vendor/toolkit/twitter/bootstrap/reset.less +3 -4
  64. data/vendor/toolkit/twitter/bootstrap/responsive.less +224 -165
  65. data/vendor/toolkit/twitter/bootstrap/scaffolding.less +6 -89
  66. data/vendor/toolkit/twitter/bootstrap/sprites.less +139 -99
  67. data/vendor/toolkit/twitter/bootstrap/tables.less +15 -57
  68. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +4 -2
  69. data/vendor/toolkit/twitter/bootstrap/type.less +15 -44
  70. data/vendor/toolkit/twitter/bootstrap/variables.less +38 -21
  71. data/vendor/toolkit/twitter/bootstrap_base.less +2 -0
  72. metadata +36 -21
  73. data/lib/generators/bootstrap/install/templates/bootstrap.less +0 -5
  74. data/vendor/assets/stylesheets/twitter/bootstrap.css.less +0 -1
  75. data/vendor/toolkit/twitter/bootstrap.less +0 -1
  76. data/vendor/toolkit/twitter/bootstrap/patterns.less +0 -30
  77. data/vendor/toolkit/twitter/bootstrap/print.less +0 -18
@@ -0,0 +1,8 @@
1
+ // GRID SYSTEM
2
+ // -----------
3
+
4
+ // Fixed (940px)
5
+ #gridSystem > .generate(@gridColumns, @gridColumnWidth, @gridGutterWidth);
6
+
7
+ // Fluid (940px)
8
+ #fluidGridSystem > .generate(@gridColumns, @fluidGridColumnWidth, @fluidGridGutterWidth);
@@ -0,0 +1,20 @@
1
+ // HERO UNIT
2
+ // ---------
3
+
4
+ .hero-unit {
5
+ padding: 60px;
6
+ margin-bottom: 30px;
7
+ background-color: #f5f5f5;
8
+ .border-radius(6px);
9
+ h1 {
10
+ margin-bottom: 0;
11
+ font-size: 60px;
12
+ line-height: 1;
13
+ letter-spacing: -1px;
14
+ }
15
+ p {
16
+ font-size: 18px;
17
+ font-weight: 200;
18
+ line-height: @baseLineHeight * 1.5;
19
+ }
20
+ }
@@ -1,16 +1,32 @@
1
1
  // LABELS
2
2
  // ------
3
3
 
4
+ // Base
4
5
  .label {
5
- padding: 1px 3px 2px;
6
- font-size: @baseFontSize * .75;
6
+ padding: 2px 4px 3px;
7
+ font-size: @baseFontSize * .85;
7
8
  font-weight: bold;
8
9
  color: @white;
9
- text-transform: uppercase;
10
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
10
11
  background-color: @grayLight;
11
12
  .border-radius(3px);
12
- &.important { background-color: #c43c35; }
13
- &.warning { background-color: @orange; }
14
- &.success { background-color: @green; }
15
- &.notice { background-color: lighten(@blue, 25%); }
16
13
  }
14
+
15
+ // Hover state
16
+ .label:hover {
17
+ color: @white;
18
+ text-decoration: none;
19
+ }
20
+
21
+ // Colors
22
+ .label-important { background-color: @errorText; }
23
+ .label-important:hover { background-color: darken(@errorText, 10%); }
24
+
25
+ .label-warning { background-color: @orange; }
26
+ .label-warning:hover { background-color: darken(@orange, 10%); }
27
+
28
+ .label-success { background-color: @successText; }
29
+ .label-success:hover { background-color: darken(@successText, 10%); }
30
+
31
+ .label-info { background-color: @infoText; }
32
+ .label-info:hover { background-color: darken(@infoText, 10%); }
@@ -0,0 +1,17 @@
1
+ //
2
+ // Layouts
3
+ // Fixed-width and fluid (with sidebar) layouts
4
+ // --------------------------------------------
5
+
6
+
7
+ // Container (centered, fixed-width layouts)
8
+ .container {
9
+ .container-fixed();
10
+ }
11
+
12
+ // Fluid layouts (left aligned, with sidebar, min- & max-width content)
13
+ .container-fluid {
14
+ padding-left: @gridGutterWidth;
15
+ padding-right: @gridGutterWidth;
16
+ .clearfix();
17
+ }
@@ -7,9 +7,9 @@
7
7
  // --------------------------------------------------
8
8
 
9
9
  // Clearfix
10
- // -------------------------
10
+ // --------
11
11
  // For clearing floats like a boss h5bp.com/q
12
- .clearfix() {
12
+ .clearfix {
13
13
  *zoom: 1;
14
14
  &:before,
15
15
  &:after {
@@ -21,8 +21,18 @@
21
21
  }
22
22
  }
23
23
 
24
+ // Webkit-style focus
25
+ // ------------------
26
+ .tab-focus() {
27
+ // Default
28
+ outline: thin dotted #333;
29
+ // Webkit
30
+ outline: 5px auto -webkit-focus-ring-color;
31
+ outline-offset: -2px;
32
+ }
33
+
24
34
  // Center-align a block level element
25
- // -------------------------
35
+ // ----------------------------------
26
36
  .center-block() {
27
37
  display: block;
28
38
  margin-left: auto;
@@ -30,12 +40,34 @@
30
40
  }
31
41
 
32
42
  // IE7 inline-block
33
- // -------------------------
43
+ // ----------------
34
44
  .ie7-inline-block() {
35
45
  *display: inline; /* IE7 inline-block hack */
36
46
  *zoom: 1;
37
47
  }
38
48
 
49
+ // IE7 likes to collapse whitespace on either side of the inline-block elements.
50
+ // Ems because we're attempting to match the width of a space character. Left
51
+ // version is for form buttons, which typically come after other elements, and
52
+ // right version is for icons, which come before. Applying both is ok, but it will
53
+ // mean that space between those elements will be .6em (~2 space characters) in IE7,
54
+ // instead of the 1 space in other browsers.
55
+ .ie7-restore-left-whitespace() {
56
+ *margin-left: .3em;
57
+
58
+ &:first-child {
59
+ *margin-left: 0;
60
+ }
61
+ }
62
+
63
+ .ie7-restore-right-whitespace() {
64
+ *margin-right: .3em;
65
+
66
+ &:last-child {
67
+ *margin-left: 0;
68
+ }
69
+ }
70
+
39
71
  // Sizing shortcuts
40
72
  // -------------------------
41
73
  .size(@height: 5px, @width: 5px) {
@@ -57,6 +89,15 @@
57
89
  }
58
90
  }
59
91
 
92
+ // Text overflow
93
+ // -------------------------
94
+ // Requires inline-block or block for proper styling
95
+ .text-overflow() {
96
+ overflow: hidden;
97
+ text-overflow: ellipsis;
98
+ white-space: nowrap;
99
+ }
100
+
60
101
 
61
102
 
62
103
  // FONTS
@@ -101,29 +142,178 @@
101
142
  // Site container
102
143
  // -------------------------
103
144
  .container-fixed() {
104
- width: @siteWidth;
145
+ width: @gridRowWidth;
105
146
  margin-left: auto;
106
147
  margin-right: auto;
107
148
  .clearfix();
108
149
  }
109
150
 
110
- // Columns and offseting
151
+ // Le grid system
111
152
  // -------------------------
112
- .columns(@columns: 1) {
113
- width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
153
+ #gridSystem {
154
+ // Setup the mixins to be used
155
+ .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, @columns) {
156
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
157
+ }
158
+ .offset(@gridColumnWidth, @gridGutterWidth, @columns) {
159
+ margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)) + (@gridGutterWidth * 2);
160
+ }
161
+ .gridColumn(@gridGutterWidth) {
162
+ float: left;
163
+ margin-left: @gridGutterWidth;
164
+ }
165
+ // Take these values and mixins, and make 'em do their thang
166
+ .generate(@gridColumns, @gridColumnWidth, @gridGutterWidth) {
167
+ // Row surrounds the columns
168
+ .row {
169
+ margin-left: @gridGutterWidth * -1;
170
+ .clearfix();
171
+ }
172
+ // Find all .span# classes within .row and give them the necessary properties for grid columns (supported by all browsers back to IE7, thanks @dhg)
173
+ [class*="span"] {
174
+ #gridSystem > .gridColumn(@gridGutterWidth);
175
+ }
176
+ // Default columns
177
+ .span1 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 1); }
178
+ .span2 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 2); }
179
+ .span3 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 3); }
180
+ .span4 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 4); }
181
+ .span5 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 5); }
182
+ .span6 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 6); }
183
+ .span7 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 7); }
184
+ .span8 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 8); }
185
+ .span9 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 9); }
186
+ .span10 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 10); }
187
+ .span11 { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 11); }
188
+ .span12,
189
+ .container { #gridSystem > .columns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 12); }
190
+ // Offset column options
191
+ .offset1 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 1); }
192
+ .offset2 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 2); }
193
+ .offset3 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 3); }
194
+ .offset4 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 4); }
195
+ .offset5 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 5); }
196
+ .offset6 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 6); }
197
+ .offset7 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 7); }
198
+ .offset8 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 8); }
199
+ .offset9 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 9); }
200
+ .offset10 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 10); }
201
+ .offset11 { #gridSystem > .offset(@gridColumnWidth, @gridGutterWidth, 11); }
202
+ }
114
203
  }
115
- .offset(@columns: 1) {
116
- margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)) + (@gridGutterWidth * 2);
204
+
205
+ // Fluid grid system
206
+ // -------------------------
207
+ #fluidGridSystem {
208
+ // Setup the mixins to be used
209
+ .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, @columns) {
210
+ width: 1% * (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
211
+ }
212
+ .gridColumn(@fluidGridGutterWidth) {
213
+ float: left;
214
+ margin-left: @fluidGridGutterWidth;
215
+ }
216
+ // Take these values and mixins, and make 'em do their thang
217
+ .generate(@gridColumns, @fluidGridColumnWidth, @fluidGridGutterWidth) {
218
+ // Row surrounds the columns
219
+ .row-fluid {
220
+ width: 100%;
221
+ .clearfix();
222
+
223
+ // Find all .span# classes within .row and give them the necessary properties for grid columns (supported by all browsers back to IE7, thanks @dhg)
224
+ > [class*="span"] {
225
+ #fluidGridSystem > .gridColumn(@fluidGridGutterWidth);
226
+ }
227
+ > [class*="span"]:first-child {
228
+ margin-left: 0;
229
+ }
230
+ // Default columns
231
+ > .span1 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 1); }
232
+ > .span2 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 2); }
233
+ > .span3 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 3); }
234
+ > .span4 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 4); }
235
+ > .span5 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 5); }
236
+ > .span6 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 6); }
237
+ > .span7 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 7); }
238
+ > .span8 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 8); }
239
+ > .span9 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 9); }
240
+ > .span10 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 10); }
241
+ > .span11 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 11); }
242
+ > .span12 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 12); }
243
+ }
244
+ }
117
245
  }
118
- // Necessary grid styles for every column to make them appear next to each other horizontally
119
- .gridColumn() {
246
+
247
+ // Input grid system
248
+ // -------------------------
249
+ #inputGridSystem {
250
+ .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, @columns) {
251
+ width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 10;
252
+ }
253
+ .generate(@gridColumns, @gridColumnWidth, @gridGutterWidth) {
254
+ input,
255
+ textarea,
256
+ .uneditable-input {
257
+ &.span1 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 1); }
258
+ &.span2 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 2); }
259
+ &.span3 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 3); }
260
+ &.span4 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 4); }
261
+ &.span5 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 5); }
262
+ &.span6 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 6); }
263
+ &.span7 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 7); }
264
+ &.span8 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 8); }
265
+ &.span9 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 9); }
266
+ &.span10 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 10); }
267
+ &.span11 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 11); }
268
+ &.span12 { #inputGridSystem > .inputColumns(@gridGutterWidth, @gridColumnWidth, @gridRowWidth, 12); }
269
+ }
270
+ }
271
+ }
272
+
273
+ // Make a Grid
274
+ // -------------------------
275
+ // Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
276
+ .makeRow() {
277
+ margin-left: @gridGutterWidth * -1;
278
+ .clearfix();
279
+ }
280
+ .makeColumn(@columns: 1) {
120
281
  float: left;
121
282
  margin-left: @gridGutterWidth;
283
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
122
284
  }
123
- // makeColumn can be used to mark any element (e.g., .content-primary) as a column without changing markup to .span something
124
- .makeColumn(@columnSpan: 1) {
125
- .gridColumn();
126
- .columns(@columnSpan);
285
+
286
+
287
+
288
+ // Form field states (used in forms.less)
289
+ // --------------------------------------------------
290
+
291
+ // Mixin for form field states
292
+ .formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
293
+ // Set the text color
294
+ > label,
295
+ .help-block,
296
+ .help-inline {
297
+ color: @textColor;
298
+ }
299
+ // Style inputs accordingly
300
+ input,
301
+ select,
302
+ textarea {
303
+ color: @textColor;
304
+ border-color: @borderColor;
305
+ &:focus {
306
+ border-color: darken(@borderColor, 10%);
307
+ .box-shadow(0 0 6px lighten(@borderColor, 20%));
308
+ }
309
+ }
310
+ // Give a small background color for input-prepend/-append
311
+ .input-prepend .add-on,
312
+ .input-append .add-on {
313
+ color: @textColor;
314
+ background-color: @backgroundColor;
315
+ border-color: @textColor;
316
+ }
127
317
  }
128
318
 
129
319
 
@@ -176,9 +366,23 @@
176
366
  -o-transform: translate(@x, @y);
177
367
  transform: translate(@x, @y);
178
368
  }
369
+ .skew(@x: 0, @y: 0) {
370
+ -webkit-transform: skew(@x, @y);
371
+ -moz-transform: skew(@x, @y);
372
+ -ms-transform: skew(@x, @y);
373
+ -o-transform: skew(@x, @y);
374
+ transform: skew(@x, @y);
375
+ }
376
+ .translate3d(@x: 0, @y: 0, @z: 0) {
377
+ -webkit-transform: translate(@x, @y, @z);
378
+ -moz-transform: translate(@x, @y, @z);
379
+ -ms-transform: translate(@x, @y, @z);
380
+ -o-transform: translate(@x, @y, @z);
381
+ transform: translate(@x, @y, @z);
382
+ }
179
383
 
180
384
  // Background clipping
181
- // Heads up: FF 3.6 and under need padding instead of padding-box
385
+ // Heads up: FF 3.6 and under need "padding" instead of "padding-box"
182
386
  .background-clip(@clip) {
183
387
  -webkit-background-clip: @clip;
184
388
  -moz-background-clip: @clip;
@@ -228,9 +432,8 @@
228
432
 
229
433
  // Opacity
230
434
  .opacity(@opacity: 100) {
231
- filter: e(%("alpha(opacity=%d)", @opacity));
232
- -moz-opacity: @opacity / 100;
233
- opacity: @opacity / 100;
435
+ opacity: @opacity / 100;
436
+ filter: e(%("alpha(opacity=%d)", @opacity));
234
437
  }
235
438
 
236
439
 
@@ -245,9 +448,7 @@
245
448
  }
246
449
  .border(@color: @white, @alpha: 1) {
247
450
  border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
248
- -webkit-background-clip: padding-box;
249
- -moz-background-clip: padding;
250
- background-clip: padding-box;
451
+ .background-clip(padding-box);
251
452
  }
252
453
  }
253
454
 
@@ -262,10 +463,9 @@
262
463
  #gradient {
263
464
  .horizontal(@startColor: #555, @endColor: #333) {
264
465
  background-color: @endColor;
265
- background-image: -khtml-gradient(linear, left top, right top, from(@startColor), to(@endColor)); // Konqueror
266
466
  background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
267
467
  background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10
268
- background-image: -webkit-gradient(linear, left top, right top, color-stop(0%, @startColor), color-stop(100%, @endColor)); // Safari 4+, Chrome 2+
468
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
269
469
  background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
270
470
  background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
271
471
  background-image: linear-gradient(left, @startColor, @endColor); // Le standard
@@ -273,16 +473,15 @@
273
473
  filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down
274
474
  }
275
475
  .vertical(@startColor: #555, @endColor: #333) {
276
- background-color: @endColor;
277
- background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor)); // Konqueror
476
+ background-color: mix(@startColor, @endColor, 60%);
278
477
  background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
279
478
  background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
280
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, @startColor), color-stop(100%, @endColor)); // Safari 4+, Chrome 2+
479
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
281
480
  background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
282
481
  background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
283
482
  background-image: linear-gradient(top, @startColor, @endColor); // The standard
284
483
  background-repeat: repeat-x;
285
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
484
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
286
485
  }
287
486
  .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
288
487
  background-color: @endColor;
@@ -294,7 +493,7 @@
294
493
  background-image: linear-gradient(@deg, @startColor, @endColor); // The standard
295
494
  }
296
495
  .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
297
- background-color: @endColor;
496
+ background-color: mix(@midColor, @endColor, 80%);
298
497
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
299
498
  background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
300
499
  background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
@@ -305,11 +504,11 @@
305
504
  filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
306
505
  }
307
506
  .radial(@innerColor: #555, @outerColor: #333) {
308
- background-color: @outsideColor;
309
- background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@centerColor), to(@outsideColor));
310
- background-image: -webkit-radial-gradient(circle, @centerColor, @outsideColor);
311
- background-image: -moz-radial-gradient(circle, @centerColor, @outsideColor);
312
- background-image: -ms-radial-gradient(circle, @centerColor, @outsideColor);
507
+ background-color: @outerColor;
508
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
509
+ background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
510
+ background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
511
+ background-image: -ms-radial-gradient(circle, @innerColor, @outerColor);
313
512
  background-repeat: no-repeat;
314
513
  // Opera cannot do radial gradients yet
315
514
  }
@@ -323,13 +522,31 @@
323
522
  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);
324
523
  }
325
524
  }
326
-
327
525
  // Reset filters for IE
328
526
  .reset-filter() {
329
527
  filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
330
528
  }
331
529
 
332
530
 
531
+ // Mixin for generating button backgrounds
532
+ // ---------------------------------------
533
+ .buttonBackground(@startColor, @endColor) {
534
+ // gradientBar will set the background to a pleasing blend of these, to support IE<=9
535
+ .gradientBar(@startColor, @endColor);
536
+ .reset-filter();
537
+
538
+ // in these cases the gradient won't cover the background, so we override
539
+ &:hover, &:active, &.active, &.disabled, &[disabled] {
540
+ background-color: @endColor;
541
+ }
542
+
543
+ // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
544
+ &:active,
545
+ &.active {
546
+ background-color: darken(@endColor, 10%) e("\9");
547
+ }
548
+ }
549
+
333
550
 
334
551
  // COMPONENT MIXINS
335
552
  // --------------------------------------------------