twitter-bootstrap-rails 2.2.1 → 2.2.3

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

Potentially problematic release.


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

Files changed (46) hide show
  1. data/README.md +4 -0
  2. data/lib/generators/bootstrap/themed/themed_generator.rb +1 -1
  3. data/lib/twitter/bootstrap/rails/version.rb +2 -2
  4. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-affix.js +1 -1
  5. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-alert.js +1 -1
  6. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-button.js +1 -1
  7. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-carousel.js +31 -9
  8. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-collapse.js +4 -4
  9. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-dropdown.js +14 -10
  10. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-modal.js +13 -11
  11. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-popover.js +5 -5
  12. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-scrollspy.js +2 -2
  13. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tab.js +1 -1
  14. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tooltip.js +95 -29
  15. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-transition.js +1 -1
  16. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-typeahead.js +16 -4
  17. data/vendor/assets/stylesheets/twitter-bootstrap-static/bootstrap.css.erb +108 -103
  18. data/vendor/assets/stylesheets/twitter-bootstrap-static/sprites.css.erb +2 -2
  19. data/vendor/toolkit/twitter/bootstrap/bootstrap.less +4 -4
  20. data/vendor/toolkit/twitter/bootstrap/button-groups.less +4 -2
  21. data/vendor/toolkit/twitter/bootstrap/buttons.less +8 -10
  22. data/vendor/toolkit/twitter/bootstrap/carousel.less +34 -7
  23. data/vendor/toolkit/twitter/bootstrap/close.less +2 -1
  24. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +16 -12
  25. data/vendor/toolkit/twitter/bootstrap/forms.less +5 -2
  26. data/vendor/toolkit/twitter/bootstrap/labels-badges.less +4 -2
  27. data/vendor/toolkit/twitter/bootstrap/media.less +2 -2
  28. data/vendor/toolkit/twitter/bootstrap/mixins.less +20 -4
  29. data/vendor/toolkit/twitter/bootstrap/navbar.less +20 -13
  30. data/vendor/toolkit/twitter/bootstrap/navs.less +39 -21
  31. data/vendor/toolkit/twitter/bootstrap/pager.less +3 -1
  32. data/vendor/toolkit/twitter/bootstrap/pagination.less +3 -1
  33. data/vendor/toolkit/twitter/bootstrap/popovers.less +5 -1
  34. data/vendor/toolkit/twitter/bootstrap/reset.less +1 -1
  35. data/vendor/toolkit/twitter/bootstrap/responsive-767px-max.less +2 -2
  36. data/vendor/toolkit/twitter/bootstrap/responsive-navbar.less +6 -2
  37. data/vendor/toolkit/twitter/bootstrap/responsive-utilities.less +16 -0
  38. data/vendor/toolkit/twitter/bootstrap/responsive.less +1 -10
  39. data/vendor/toolkit/twitter/bootstrap/scaffolding.less +2 -1
  40. data/vendor/toolkit/twitter/bootstrap/sprites.less +9 -5
  41. data/vendor/toolkit/twitter/bootstrap/tables.less +24 -17
  42. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +3 -2
  43. data/vendor/toolkit/twitter/bootstrap/tooltip.less +6 -6
  44. data/vendor/toolkit/twitter/bootstrap/type.less +19 -7
  45. data/vendor/toolkit/twitter/bootstrap/variables.less +1 -1
  46. metadata +14 -14
@@ -20,7 +20,8 @@
20
20
  border: 1px solid #ddd;
21
21
  .border-radius(15px);
22
22
  }
23
- .pager li > a:hover {
23
+ .pager li > a:hover,
24
+ .pager li > a:focus {
24
25
  text-decoration: none;
25
26
  background-color: #f5f5f5;
26
27
  }
@@ -34,6 +35,7 @@
34
35
  }
35
36
  .pager .disabled > a,
36
37
  .pager .disabled > a:hover,
38
+ .pager .disabled > a:focus,
37
39
  .pager .disabled > span {
38
40
  color: @grayLight;
39
41
  background-color: #fff;
@@ -32,6 +32,7 @@
32
32
  border-left-width: 0;
33
33
  }
34
34
  .pagination ul > li > a:hover,
35
+ .pagination ul > li > a:focus,
35
36
  .pagination ul > .active > a,
36
37
  .pagination ul > .active > span {
37
38
  background-color: @paginationActiveBackground;
@@ -43,7 +44,8 @@
43
44
  }
44
45
  .pagination ul > .disabled > span,
45
46
  .pagination ul > .disabled > a,
46
- .pagination ul > .disabled > a:hover {
47
+ .pagination ul > .disabled > a:hover,
48
+ .pagination ul > .disabled > a:focus {
47
49
  color: @grayLight;
48
50
  background-color: transparent;
49
51
  cursor: default;
@@ -9,7 +9,7 @@
9
9
  left: 0;
10
10
  z-index: @zindexPopover;
11
11
  display: none;
12
- width: 236px;
12
+ max-width: 276px;
13
13
  padding: 1px;
14
14
  text-align: left; // Reset given new insertion method
15
15
  background-color: @popoverBackground;
@@ -40,6 +40,10 @@
40
40
  background-color: @popoverTitleBackground;
41
41
  border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
42
42
  .border-radius(5px 5px 0 0);
43
+
44
+ &:empty {
45
+ display: none;
46
+ }
43
47
  }
44
48
 
45
49
  .popover-content {
@@ -213,4 +213,4 @@ textarea {
213
213
  h3 {
214
214
  page-break-after: avoid;
215
215
  }
216
- }
216
+ }
@@ -72,8 +72,8 @@
72
72
  .box-sizing(border-box);
73
73
  }
74
74
  .row-fluid [class*="offset"]:first-child {
75
- margin-left: 0;
76
- }
75
+ margin-left: 0;
76
+ }
77
77
 
78
78
  // FORM FIELDS
79
79
  // -----------
@@ -81,7 +81,9 @@
81
81
  margin-bottom: 2px;
82
82
  }
83
83
  .nav-collapse .nav > li > a:hover,
84
- .nav-collapse .dropdown-menu a:hover {
84
+ .nav-collapse .nav > li > a:focus,
85
+ .nav-collapse .dropdown-menu a:hover,
86
+ .nav-collapse .dropdown-menu a:focus {
85
87
  background-color: @navbarBackground;
86
88
  }
87
89
  .navbar-inverse .nav-collapse .nav > li > a,
@@ -89,7 +91,9 @@
89
91
  color: @navbarInverseLinkColor;
90
92
  }
91
93
  .navbar-inverse .nav-collapse .nav > li > a:hover,
92
- .navbar-inverse .nav-collapse .dropdown-menu a:hover {
94
+ .navbar-inverse .nav-collapse .nav > li > a:focus,
95
+ .navbar-inverse .nav-collapse .dropdown-menu a:hover,
96
+ .navbar-inverse .nav-collapse .dropdown-menu a:focus {
93
97
  background-color: @navbarInverseBackground;
94
98
  }
95
99
  // Buttons in the navbar
@@ -3,6 +3,13 @@
3
3
  // --------------------------------------------------
4
4
 
5
5
 
6
+ // IE10 Metro responsive
7
+ // Required for Windows 8 Metro split-screen snapping with IE10
8
+ // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
9
+ @-ms-viewport{
10
+ width: device-width;
11
+ }
12
+
6
13
  // Hide from screenreaders and browsers
7
14
  // Credit: HTML5 Boilerplate
8
15
  .hidden {
@@ -41,3 +48,12 @@
41
48
  // Hide
42
49
  .hidden-phone { display: none !important; }
43
50
  }
51
+
52
+ // Print utilities
53
+ .visible-print { display: none !important; }
54
+ .hidden-print { }
55
+
56
+ @media print {
57
+ .visible-print { display: inherit !important; }
58
+ .hidden-print { display: none !important; }
59
+ }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap Responsive v2.2.2
2
+ * Bootstrap Responsive v2.3.0
3
3
  *
4
4
  * Copyright 2012 Twitter, Inc
5
5
  * Licensed under the Apache License v2.0
@@ -14,15 +14,6 @@
14
14
  // -------------------------------------------------------------
15
15
 
16
16
 
17
- // IE10 Metro responsive
18
- // Required for Windows 8 Metro split-screen snapping with IE10
19
- // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
20
-
21
- @-ms-viewport{
22
- width: device-width;
23
- }
24
-
25
-
26
17
  // REPEAT VARIABLES & MIXINS
27
18
  // -------------------------
28
19
  // Required since we compile the responsive stuff separately
@@ -23,7 +23,8 @@ a {
23
23
  color: @linkColor;
24
24
  text-decoration: none;
25
25
  }
26
- a:hover {
26
+ a:hover,
27
+ a:focus {
27
28
  color: @linkColorHover;
28
29
  text-decoration: underline;
29
30
  }
@@ -22,13 +22,13 @@
22
22
  .ie7-restore-right-whitespace();
23
23
  line-height: 14px;
24
24
  vertical-align: text-top;
25
- background-image: url(@iconSpritePath);
25
+ background-image: url("@{iconSpritePath}");
26
26
  background-position: 14px 14px;
27
27
  background-repeat: no-repeat;
28
28
  margin-top: 1px;
29
29
  }
30
30
 
31
- /* White icons with optional class, or on hover/active states of certain elements */
31
+ /* White icons with optional class, or on hover/focus/active states of certain elements */
32
32
  .icon-white,
33
33
  .nav-pills > .active > a > [class^="icon-"],
34
34
  .nav-pills > .active > a > [class*=" icon-"],
@@ -37,12 +37,16 @@
37
37
  .navbar-inverse .nav > .active > a > [class^="icon-"],
38
38
  .navbar-inverse .nav > .active > a > [class*=" icon-"],
39
39
  .dropdown-menu > li > a:hover > [class^="icon-"],
40
+ .dropdown-menu > li > a:focus > [class^="icon-"],
40
41
  .dropdown-menu > li > a:hover > [class*=" icon-"],
42
+ .dropdown-menu > li > a:focus > [class*=" icon-"],
41
43
  .dropdown-menu > .active > a > [class^="icon-"],
42
44
  .dropdown-menu > .active > a > [class*=" icon-"],
43
45
  .dropdown-submenu:hover > a > [class^="icon-"],
44
- .dropdown-submenu:hover > a > [class*=" icon-"] {
45
- background-image: url(@iconWhiteSpritePath);
46
+ .dropdown-submenu:focus > a > [class^="icon-"],
47
+ .dropdown-submenu:hover > a > [class*=" icon-"],
48
+ .dropdown-submenu:focus > a > [class*=" icon-"] {
49
+ background-image: url("@{iconWhiteSpritePath}");
46
50
  }
47
51
 
48
52
  .icon-glass { background-position: 0 0; }
@@ -166,7 +170,7 @@
166
170
  .icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
167
171
  .icon-retweet { background-position: -336px -120px; }
168
172
  .icon-shopping-cart { background-position: -360px -120px; }
169
- .icon-folder-close { background-position: -384px -120px; }
173
+ .icon-folder-close { background-position: -384px -120px; width: 16px; }
170
174
  .icon-folder-open { background-position: -408px -120px; width: 16px; }
171
175
  .icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
172
176
  .icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
@@ -93,24 +93,32 @@ table {
93
93
  tbody:first-child tr:first-child td {
94
94
  border-top: 0;
95
95
  }
96
- // For first th or td in the first row in the first thead or tbody
96
+ // For first th/td in the first row in the first thead or tbody
97
97
  thead:first-child tr:first-child > th:first-child,
98
- tbody:first-child tr:first-child > td:first-child {
98
+ tbody:first-child tr:first-child > td:first-child,
99
+ tbody:first-child tr:first-child > th:first-child {
99
100
  .border-top-left-radius(@baseBorderRadius);
100
101
  }
102
+ // For last th/td in the first row in the first thead or tbody
101
103
  thead:first-child tr:first-child > th:last-child,
102
- tbody:first-child tr:first-child > td:last-child {
104
+ tbody:first-child tr:first-child > td:last-child,
105
+ tbody:first-child tr:first-child > th:last-child {
103
106
  .border-top-right-radius(@baseBorderRadius);
104
107
  }
105
- // For first th or td in the last row in the last thead or tbody
108
+ // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot
106
109
  thead:last-child tr:last-child > th:first-child,
107
110
  tbody:last-child tr:last-child > td:first-child,
108
- tfoot:last-child tr:last-child > td:first-child {
111
+ tbody:last-child tr:last-child > th:first-child,
112
+ tfoot:last-child tr:last-child > td:first-child,
113
+ tfoot:last-child tr:last-child > th:first-child {
109
114
  .border-bottom-left-radius(@baseBorderRadius);
110
115
  }
116
+ // For last th/td (can be either) in the last row in the last thead, tbody, and tfoot
111
117
  thead:last-child tr:last-child > th:last-child,
112
118
  tbody:last-child tr:last-child > td:last-child,
113
- tfoot:last-child tr:last-child > td:last-child {
119
+ tbody:last-child tr:last-child > th:last-child,
120
+ tfoot:last-child tr:last-child > td:last-child,
121
+ tfoot:last-child tr:last-child > th:last-child {
114
122
  .border-bottom-right-radius(@baseBorderRadius);
115
123
  }
116
124
 
@@ -122,7 +130,6 @@ table {
122
130
  .border-bottom-right-radius(0);
123
131
  }
124
132
 
125
-
126
133
  // Special fixes to round the left border on the first td/th
127
134
  caption + thead tr:first-child th:first-child,
128
135
  caption + tbody tr:first-child td:first-child,
@@ -161,8 +168,8 @@ table {
161
168
  // Placed here since it has to come after the potential zebra striping
162
169
  .table-hover {
163
170
  tbody {
164
- tr:hover td,
165
- tr:hover th {
171
+ tr:hover > td,
172
+ tr:hover > th {
166
173
  background-color: @tableBackgroundHover;
167
174
  }
168
175
  }
@@ -206,32 +213,32 @@ table th[class*="span"],
206
213
  // Exact selectors below required to override .table-striped
207
214
 
208
215
  .table tbody tr {
209
- &.success td {
216
+ &.success > td {
210
217
  background-color: @successBackground;
211
218
  }
212
- &.error td {
219
+ &.error > td {
213
220
  background-color: @errorBackground;
214
221
  }
215
- &.warning td {
222
+ &.warning > td {
216
223
  background-color: @warningBackground;
217
224
  }
218
- &.info td {
225
+ &.info > td {
219
226
  background-color: @infoBackground;
220
227
  }
221
228
  }
222
229
 
223
230
  // Hover states for .table-hover
224
231
  .table-hover tbody tr {
225
- &.success:hover td {
232
+ &.success:hover > td {
226
233
  background-color: darken(@successBackground, 5%);
227
234
  }
228
- &.error:hover td {
235
+ &.error:hover > td {
229
236
  background-color: darken(@errorBackground, 5%);
230
237
  }
231
- &.warning:hover td {
238
+ &.warning:hover > td {
232
239
  background-color: darken(@warningBackground, 5%);
233
240
  }
234
- &.info:hover td {
241
+ &.info:hover > td {
235
242
  background-color: darken(@infoBackground, 5%);
236
243
  }
237
244
  }
@@ -33,8 +33,9 @@
33
33
  .box-shadow(0 1px 3px rgba(0,0,0,.055));
34
34
  .transition(all .2s ease-in-out);
35
35
  }
36
- // Add a hover state for linked versions only
37
- a.thumbnail:hover {
36
+ // Add a hover/focus state for linked versions only
37
+ a.thumbnail:hover,
38
+ a.thumbnail:focus {
38
39
  border-color: @linkColor;
39
40
  .box-shadow(0 1px 4px rgba(0,105,214,.25));
40
41
  }
@@ -9,20 +9,20 @@
9
9
  z-index: @zindexTooltip;
10
10
  display: block;
11
11
  visibility: visible;
12
- padding: 5px;
13
12
  font-size: 11px;
13
+ line-height: 1.4;
14
14
  .opacity(0);
15
15
  &.in { .opacity(80); }
16
- &.top { margin-top: -3px; }
17
- &.right { margin-left: 3px; }
18
- &.bottom { margin-top: 3px; }
19
- &.left { margin-left: -3px; }
16
+ &.top { margin-top: -3px; padding: 5px 0; }
17
+ &.right { margin-left: 3px; padding: 0 5px; }
18
+ &.bottom { margin-top: 3px; padding: 5px 0; }
19
+ &.left { margin-left: -3px; padding: 0 5px; }
20
20
  }
21
21
 
22
22
  // Wrapper for the tooltip content
23
23
  .tooltip-inner {
24
24
  max-width: 200px;
25
- padding: 3px 8px;
25
+ padding: 8px;
26
26
  color: @tooltipColor;
27
27
  text-align: center;
28
28
  text-decoration: none;
@@ -29,19 +29,28 @@ cite { font-style: normal; }
29
29
 
30
30
  // Utility classes
31
31
  .muted { color: @grayLight; }
32
- a.muted:hover { color: darken(@grayLight, 10%); }
32
+ a.muted:hover,
33
+ a.muted:focus { color: darken(@grayLight, 10%); }
33
34
 
34
35
  .text-warning { color: @warningText; }
35
- a.text-warning:hover { color: darken(@warningText, 10%); }
36
+ a.text-warning:hover,
37
+ a.text-warning:focus { color: darken(@warningText, 10%); }
36
38
 
37
39
  .text-error { color: @errorText; }
38
- a.text-error:hover { color: darken(@errorText, 10%); }
40
+ a.text-error:hover,
41
+ a.text-error:focus { color: darken(@errorText, 10%); }
39
42
 
40
43
  .text-info { color: @infoText; }
41
- a.text-info:hover { color: darken(@infoText, 10%); }
44
+ a.text-info:hover,
45
+ a.text-info:focus { color: darken(@infoText, 10%); }
42
46
 
43
47
  .text-success { color: @successText; }
44
- a.text-success:hover { color: darken(@successText, 10%); }
48
+ a.text-success:hover,
49
+ a.text-success:focus { color: darken(@successText, 10%); }
50
+
51
+ .text-left { text-align: left; }
52
+ .text-right { text-align: right; }
53
+ .text-center { text-align: center; }
45
54
 
46
55
 
47
56
  // Headings
@@ -119,8 +128,9 @@ ul.inline,
119
128
  ol.inline {
120
129
  margin-left: 0;
121
130
  list-style: none;
122
- & > li {
131
+ > li {
123
132
  display: inline-block;
133
+ .ie7-inline-block();
124
134
  padding-left: 5px;
125
135
  padding-right: 5px;
126
136
  }
@@ -185,7 +195,9 @@ blockquote {
185
195
  border-left: 5px solid @grayLighter;
186
196
  p {
187
197
  margin-bottom: 0;
188
- #font > .shorthand(16px,300,@baseLineHeight * 1.25);
198
+ font-size: @baseFontSize * 1.25;
199
+ font-weight: 300;
200
+ line-height: 1.25;
189
201
  }
190
202
  small {
191
203
  display: block;
@@ -86,7 +86,7 @@
86
86
  // -------------------------
87
87
  @btnBackground: @white;
88
88
  @btnBackgroundHighlight: darken(@white, 10%);
89
- @btnBorder: #bbb;
89
+ @btnBorder: #ccc;
90
90
 
91
91
  @btnPrimaryBackground: @linkColor;
92
92
  @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter-bootstrap-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-08 00:00:00.000000000 Z
12
+ date: 2013-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
16
- requirement: &70276977738020 !ruby/object:Gem::Requirement
16
+ requirement: &70335346832680 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70276977738020
24
+ version_requirements: *70335346832680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: actionpack
27
- requirement: &70276977736700 !ruby/object:Gem::Requirement
27
+ requirement: &70335346830960 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.1'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70276977736700
35
+ version_requirements: *70335346830960
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: execjs
38
- requirement: &70276977736240 !ruby/object:Gem::Requirement
38
+ requirement: &70335346830560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70276977736240
46
+ version_requirements: *70335346830560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rails
49
- requirement: &70276977735540 !ruby/object:Gem::Requirement
49
+ requirement: &70335346829940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.1'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70276977735540
57
+ version_requirements: *70335346829940
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: less
60
- requirement: &70276977751000 !ruby/object:Gem::Requirement
60
+ requirement: &70335346829360 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70276977751000
68
+ version_requirements: *70335346829360
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: therubyracer
71
- requirement: &70276977750300 !ruby/object:Gem::Requirement
71
+ requirement: &70335346828540 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - =
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 0.11.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70276977750300
79
+ version_requirements: *70335346828540
80
80
  description: twitter-bootstrap-rails project integrates Bootstrap CSS toolkit for
81
81
  Rails 3.1 Asset Pipeline
82
82
  email: