compass-bootstrap 0.1.2 → 0.1.3

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 (38) hide show
  1. data/.gitignore +4 -0
  2. data/README.mkdn +112 -21
  3. data/lib/compass-bootstrap.rb +6 -1
  4. data/lib/compass-bootstrap/rails.rb +7 -0
  5. data/lib/compass-bootstrap/rails/engine.rb +7 -0
  6. data/lib/compass-bootstrap/version.rb +1 -1
  7. data/stylesheets/compass-bootstrap/_compass_bootstrap.scss +5 -2
  8. data/stylesheets/compass-bootstrap/_forms.scss +139 -67
  9. data/stylesheets/compass-bootstrap/_mixins.scss +210 -0
  10. data/stylesheets/compass-bootstrap/_patterns.scss +331 -146
  11. data/stylesheets/compass-bootstrap/_reset.scss +6 -2
  12. data/stylesheets/compass-bootstrap/_scaffolding.scss +89 -62
  13. data/stylesheets/compass-bootstrap/_tables.scss +35 -12
  14. data/stylesheets/compass-bootstrap/_type.scss +7 -8
  15. data/stylesheets/compass-bootstrap/_variables.scss +60 -0
  16. data/vendor/assets/javascripts/bootstrap-alerts.js +104 -0
  17. data/vendor/assets/javascripts/bootstrap-dropdown.js +50 -0
  18. data/vendor/assets/javascripts/bootstrap-modal.js +227 -0
  19. data/vendor/assets/javascripts/bootstrap-popover.js +77 -0
  20. data/vendor/assets/javascripts/bootstrap-scrollspy.js +105 -0
  21. data/vendor/assets/javascripts/bootstrap-tabs.js +62 -0
  22. data/vendor/assets/javascripts/bootstrap-twipsy.js +307 -0
  23. data/vendor/assets/stylesheets/compass-bootstrap/_compass_bootstrap.scss +29 -0
  24. data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_forms.scss +139 -67
  25. data/vendor/assets/stylesheets/compass-bootstrap/_mixins.scss +210 -0
  26. data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_patterns.scss +331 -146
  27. data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_reset.scss +6 -2
  28. data/vendor/assets/stylesheets/compass-bootstrap/_scaffolding.scss +137 -0
  29. data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_tables.scss +35 -12
  30. data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_type.scss +7 -8
  31. data/vendor/assets/stylesheets/compass-bootstrap/_variables.scss +60 -0
  32. data/{templates → vendor/assets/stylesheets}/compass-bootstrap/compass_bootstrap.scss +5 -2
  33. data/vendor/assets/stylesheets/compass-bootstrap/manifest.rb +20 -0
  34. metadata +50 -61
  35. data/stylesheets/compass-bootstrap/_preboot.scss +0 -276
  36. data/templates/compass-bootstrap/_preboot.scss +0 -292
  37. data/templates/compass-bootstrap/_scaffolding.scss +0 -110
  38. data/templates/compass-bootstrap/manifest.rb +0 -12
@@ -0,0 +1,62 @@
1
+ /* ========================================================
2
+ * bootstrap-tabs.js v1.3.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
4
+ * ========================================================
5
+ * Copyright 2011 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ======================================================== */
19
+
20
+
21
+ (function( $ ){
22
+
23
+ function activate ( element, container ) {
24
+ container.find('.active').removeClass('active')
25
+ element.addClass('active')
26
+ }
27
+
28
+ function tab( e ) {
29
+ var $this = $(this)
30
+ , href = $this.attr('href')
31
+ , $ul = $(e.liveFired)
32
+ , $controlled
33
+
34
+ if (/^#\w+/.test(href)) {
35
+ e.preventDefault()
36
+
37
+ if ($this.hasClass('active')) {
38
+ return
39
+ }
40
+
41
+ $href = $(href)
42
+
43
+ activate($this.parent('li'), $ul)
44
+ activate($href, $href.parent())
45
+ }
46
+ }
47
+
48
+
49
+ /* TABS/PILLS PLUGIN DEFINITION
50
+ * ============================ */
51
+
52
+ $.fn.tabs = $.fn.pills = function ( selector ) {
53
+ return this.each(function () {
54
+ $(this).delegate(selector || '.tabs li > a, .pills > li > a', 'click', tab)
55
+ })
56
+ }
57
+
58
+ $(document).ready(function () {
59
+ $('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
60
+ })
61
+
62
+ })( window.jQuery || window.ender )
@@ -0,0 +1,307 @@
1
+ /* ==========================================================
2
+ * bootstrap-twipsy.js v1.3.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#twipsy
4
+ * Adapted from the original jQuery.tipsy by Jason Frame
5
+ * ==========================================================
6
+ * Copyright 2011 Twitter, Inc.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================== */
20
+
21
+
22
+ (function( $ ) {
23
+
24
+ /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
25
+ * ======================================================= */
26
+
27
+ var transitionEnd
28
+
29
+ $(document).ready(function () {
30
+
31
+ $.support.transition = (function () {
32
+ var thisBody = document.body || document.documentElement
33
+ , thisStyle = thisBody.style
34
+ , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
35
+ return support
36
+ })()
37
+
38
+ // set CSS transition event type
39
+ if ( $.support.transition ) {
40
+ transitionEnd = "TransitionEnd"
41
+ if ( $.browser.webkit ) {
42
+ transitionEnd = "webkitTransitionEnd"
43
+ } else if ( $.browser.mozilla ) {
44
+ transitionEnd = "transitionend"
45
+ } else if ( $.browser.opera ) {
46
+ transitionEnd = "oTransitionEnd"
47
+ }
48
+ }
49
+
50
+ })
51
+
52
+
53
+ /* TWIPSY PUBLIC CLASS DEFINITION
54
+ * ============================== */
55
+
56
+ var Twipsy = function ( element, options ) {
57
+ this.$element = $(element)
58
+ this.options = options
59
+ this.enabled = true
60
+ this.fixTitle()
61
+ }
62
+
63
+ Twipsy.prototype = {
64
+
65
+ show: function() {
66
+ var pos
67
+ , actualWidth
68
+ , actualHeight
69
+ , placement
70
+ , $tip
71
+ , tp
72
+
73
+ if (this.getTitle() && this.enabled) {
74
+ $tip = this.tip()
75
+ this.setContent()
76
+
77
+ if (this.options.animate) {
78
+ $tip.addClass('fade')
79
+ }
80
+
81
+ $tip
82
+ .remove()
83
+ .css({ top: 0, left: 0, display: 'block' })
84
+ .prependTo(document.body)
85
+
86
+ pos = $.extend({}, this.$element.offset(), {
87
+ width: this.$element[0].offsetWidth
88
+ , height: this.$element[0].offsetHeight
89
+ })
90
+
91
+ actualWidth = $tip[0].offsetWidth
92
+ actualHeight = $tip[0].offsetHeight
93
+ placement = _.maybeCall(this.options.placement, this.$element[0])
94
+
95
+ switch (placement) {
96
+ case 'below':
97
+ tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
98
+ break
99
+ case 'above':
100
+ tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
101
+ break
102
+ case 'left':
103
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}
104
+ break
105
+ case 'right':
106
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}
107
+ break
108
+ }
109
+
110
+ $tip
111
+ .css(tp)
112
+ .addClass(placement)
113
+ .addClass('in')
114
+ }
115
+ }
116
+
117
+ , setContent: function () {
118
+ var $tip = this.tip()
119
+ $tip.find('.twipsy-inner')[this.options.html ? 'html' : 'text'](this.getTitle())
120
+ $tip[0].className = 'twipsy'
121
+ }
122
+
123
+ , hide: function() {
124
+ var that = this
125
+ , $tip = this.tip()
126
+
127
+ $tip.removeClass('in')
128
+
129
+ function removeElement () {
130
+ $tip.remove()
131
+ }
132
+
133
+ $.support.transition && this.$tip.hasClass('fade') ?
134
+ $tip.bind(transitionEnd, removeElement) :
135
+ removeElement()
136
+ }
137
+
138
+ , fixTitle: function() {
139
+ var $e = this.$element
140
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
141
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
142
+ }
143
+ }
144
+
145
+ , getTitle: function() {
146
+ var title
147
+ , $e = this.$element
148
+ , o = this.options
149
+
150
+ this.fixTitle()
151
+
152
+ if (typeof o.title == 'string') {
153
+ title = $e.attr(o.title == 'title' ? 'data-original-title' : o.title)
154
+ } else if (typeof o.title == 'function') {
155
+ title = o.title.call($e[0])
156
+ }
157
+
158
+ title = ('' + title).replace(/(^\s*|\s*$)/, "")
159
+
160
+ return title || o.fallback
161
+ }
162
+
163
+ , tip: function() {
164
+ if (!this.$tip) {
165
+ this.$tip = $('<div class="twipsy" />').html('<div class="twipsy-arrow"></div><div class="twipsy-inner"></div>')
166
+ }
167
+ return this.$tip
168
+ }
169
+
170
+ , validate: function() {
171
+ if (!this.$element[0].parentNode) {
172
+ this.hide()
173
+ this.$element = null
174
+ this.options = null
175
+ }
176
+ }
177
+
178
+ , enable: function() {
179
+ this.enabled = true
180
+ }
181
+
182
+ , disable: function() {
183
+ this.enabled = false
184
+ }
185
+
186
+ , toggleEnabled: function() {
187
+ this.enabled = !this.enabled
188
+ }
189
+
190
+ }
191
+
192
+
193
+ /* TWIPSY PRIVATE METHODS
194
+ * ====================== */
195
+
196
+ var _ = {
197
+
198
+ maybeCall: function ( thing, ctx ) {
199
+ return (typeof thing == 'function') ? (thing.call(ctx)) : thing
200
+ }
201
+
202
+ }
203
+
204
+
205
+ /* TWIPSY PLUGIN DEFINITION
206
+ * ======================== */
207
+
208
+ $.fn.twipsy = function (options) {
209
+ $.fn.twipsy.initWith.call(this, options, Twipsy, 'twipsy')
210
+ return this
211
+ }
212
+
213
+ $.fn.twipsy.initWith = function (options, Constructor, name) {
214
+ var twipsy
215
+ , binder
216
+ , eventIn
217
+ , eventOut
218
+
219
+ if (options === true) {
220
+ return this.data(name)
221
+ } else if (typeof options == 'string') {
222
+ twipsy = this.data(name)
223
+ if (twipsy) {
224
+ twipsy[options]()
225
+ }
226
+ return this
227
+ }
228
+
229
+ options = $.extend({}, $.fn[name].defaults, options)
230
+
231
+ function get(ele) {
232
+ var twipsy = $.data(ele, name)
233
+
234
+ if (!twipsy) {
235
+ twipsy = new Constructor(ele, $.fn.twipsy.elementOptions(ele, options))
236
+ $.data(ele, name, twipsy)
237
+ }
238
+
239
+ return twipsy
240
+ }
241
+
242
+ function enter() {
243
+ var twipsy = get(this)
244
+ twipsy.hoverState = 'in'
245
+
246
+ if (options.delayIn == 0) {
247
+ twipsy.show()
248
+ } else {
249
+ twipsy.fixTitle()
250
+ setTimeout(function() {
251
+ if (twipsy.hoverState == 'in') {
252
+ twipsy.show()
253
+ }
254
+ }, options.delayIn)
255
+ }
256
+ }
257
+
258
+ function leave() {
259
+ var twipsy = get(this)
260
+ twipsy.hoverState = 'out'
261
+ if (options.delayOut == 0) {
262
+ twipsy.hide()
263
+ } else {
264
+ setTimeout(function() {
265
+ if (twipsy.hoverState == 'out') {
266
+ twipsy.hide()
267
+ }
268
+ }, options.delayOut)
269
+ }
270
+ }
271
+
272
+ if (!options.live) {
273
+ this.each(function() {
274
+ get(this)
275
+ })
276
+ }
277
+
278
+ if (options.trigger != 'manual') {
279
+ binder = options.live ? 'live' : 'bind'
280
+ eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus'
281
+ eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'
282
+ this[binder](eventIn, enter)[binder](eventOut, leave)
283
+ }
284
+
285
+ return this
286
+ }
287
+
288
+ $.fn.twipsy.Twipsy = Twipsy
289
+
290
+ $.fn.twipsy.defaults = {
291
+ animate: true
292
+ , delayIn: 0
293
+ , delayOut: 0
294
+ , fallback: ''
295
+ , placement: 'above'
296
+ , html: false
297
+ , live: false
298
+ , offset: 0
299
+ , title: 'title'
300
+ , trigger: 'hover'
301
+ }
302
+
303
+ $.fn.twipsy.elementOptions = function(ele, options) {
304
+ return $.metadata ? $.extend({}, options, $(ele).metadata()) : options
305
+ }
306
+
307
+ })( window.jQuery || window.ender )
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * this is a port to SCSS version of the bootstrap less
3
+
4
+ * ==========================================
5
+ * Bootstrap @VERSION
6
+ *
7
+ * Copyright 2011 Twitter, Inc
8
+ * Licensed under the Apache License v2.0
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
12
+ * Date: @DATE
13
+ */
14
+
15
+ // CSS Reset
16
+ @import "reset.scss";
17
+
18
+ // Core
19
+ @import "variables.scss"; // Modify this for custom colors, font-sizes, etc
20
+ @import "mixins.scss";
21
+
22
+ // Grid system and page structure
23
+ @import "scaffolding.scss";
24
+
25
+ // Styled patterns and elements
26
+ @import "type.scss";
27
+ @import "forms.scss";
28
+ @import "tables.scss";
29
+ @import "patterns.scss";
@@ -16,18 +16,19 @@ fieldset {
16
16
  padding-top: $baseline;
17
17
  legend {
18
18
  display: block;
19
- margin-left: 150px;
20
- font-size: 20px;
19
+ padding-left: 150px;
20
+ font-size: $basefont * 1.5;
21
21
  line-height: 1;
22
- *margin: 0 0 5px 145px; /* IE6-7 */
23
- *line-height: 1.5; /* IE6-7 */
24
22
  color: $grayDark;
23
+ *padding: 0 0 5px 145px; /* IE6-7 */
24
+ *line-height: 1.5; /* IE6-7 */
25
25
  }
26
26
  }
27
27
 
28
28
  // Parent element that clears floats and wraps labels and fields together
29
29
  form .clearfix {
30
30
  margin-bottom: $baseline;
31
+ @include clearfix();
31
32
  }
32
33
 
33
34
  // Set font for forms
@@ -35,14 +36,14 @@ label,
35
36
  input,
36
37
  select,
37
38
  textarea {
38
- @include sans-serif(normal,13px,normal);
39
+ @include font-sans-serif(normal,13px,normal);
39
40
  }
40
41
 
41
42
  // Float labels left
42
43
  label {
43
44
  padding-top: 6px;
44
- font-size: 13px;
45
- line-height: 18px;
45
+ font-size: $basefont;
46
+ line-height: $baseline;
46
47
  float: left;
47
48
  width: 130px;
48
49
  text-align: right;
@@ -50,7 +51,7 @@ label {
50
51
  }
51
52
 
52
53
  // Shift over the inside div to align all label's relevant content
53
- div.input {
54
+ form .input {
54
55
  margin-left: 150px;
55
56
  }
56
57
 
@@ -69,7 +70,7 @@ select,
69
70
  width: 210px;
70
71
  height: $baseline;
71
72
  padding: 4px;
72
- font-size: 13px;
73
+ font-size: $basefont;
73
74
  line-height: $baseline;
74
75
  color: $gray;
75
76
  border: 1px solid #ccc;
@@ -89,11 +90,11 @@ input[type=radio] {
89
90
  }
90
91
 
91
92
  input[type=file] {
92
- background-color: #fff;
93
+ background-color: $white;
93
94
  padding: initial;
94
95
  border: initial;
95
96
  line-height: initial;
96
- @include bt-box-shadow(none);
97
+ @include box-shadow(none);
97
98
  }
98
99
 
99
100
  input[type=button],
@@ -105,19 +106,27 @@ input[type=submit] {
105
106
 
106
107
  select,
107
108
  input[type=file] {
108
- height: $baseline * 1.5;
109
+ height: $baseline * 1.5; // In IE7, the height of the select element cannot be changed by height, only font-size
109
110
  line-height: $baseline * 1.5;
111
+ *margin-top: 4px; /* For IE7, add top margin to align select with labels */
112
+ }
113
+
114
+ // Make multiple select elements height not fixed
115
+ select[multiple] {
116
+ height: inherit;
110
117
  }
111
118
 
112
119
  textarea {
113
120
  height: auto;
114
121
  }
115
122
 
123
+ // For text that needs to appear as an input but should not be an input
116
124
  .uneditable-input {
117
- background-color: #eee;
125
+ background-color: $white;
118
126
  display: block;
119
- border-color: #ccc;
120
- @include bt-box-shadow(inset 0 1px 2px rgba(0,0,0,.075));
127
+ border-color: #eee;
128
+ @include box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
129
+ cursor: not-allowed;
121
130
  }
122
131
 
123
132
  // Placeholder text gets special styles; can't be bundled together though for some reason
@@ -130,21 +139,27 @@ textarea {
130
139
 
131
140
  // Focus states
132
141
  input,
133
- select, textarea {
142
+ textarea {
134
143
  $transition: border linear .2s, box-shadow linear .2s;
135
144
  @include transition($transition);
136
- @include bt-box-shadow(inset 0 1px 3px rgba(0,0,0,.1));
145
+ @include box-shadow(inset 0 1px 3px rgba(0,0,0,.1));
137
146
  }
138
147
  input:focus,
139
148
  textarea:focus {
140
- outline: none;
149
+ outline: 0;
141
150
  border-color: rgba(82,168,236,.8);
142
151
  $shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
143
- @include bt-box-shadow($shadow);
152
+ @include box-shadow($shadow);
153
+ }
154
+ input[type=file]:focus,
155
+ input[type=checkbox]:focus,
156
+ select:focus {
157
+ @include box-shadow(none); // override for file inputs
158
+ outline: 1px dotted #666; // Selet elements don't get box-shadow styles, so instead we do outline
144
159
  }
145
160
 
146
161
  // Error styles
147
- form div.error {
162
+ form div.clearfix.error {
148
163
  background: lighten($red, 57%);
149
164
  padding: 10px 0;
150
165
  margin: -10px 0 10px;
@@ -158,10 +173,10 @@ form div.error {
158
173
  input,
159
174
  textarea {
160
175
  border-color: $error-text;
161
- @include bt-box-shadow(0 0 3px rgba(171,41,32,.25));
176
+ @include box-shadow(0 0 3px rgba(171,41,32,.25));
162
177
  &:focus {
163
178
  border-color: darken($error-text, 10%);
164
- @include bt-box-shadow(0 0 6px rgba(171,41,32,.5));
179
+ @include box-shadow(0 0 6px rgba(171,41,32,.5));
165
180
  }
166
181
  }
167
182
  .input-prepend,
@@ -175,35 +190,87 @@ form div.error {
175
190
  }
176
191
 
177
192
  // Form element sizes
178
- .input-mini, input.mini, textarea.mini, select.mini {
193
+ // TODO v2: remove duplication here and just stick to .input-[size] in light of adding .spanN sizes
194
+ .input-mini,
195
+ input.mini,
196
+ textarea.mini,
197
+ select.mini {
179
198
  width: 60px;
180
199
  }
181
- .input-small, input.small, textarea.small, select.small {
200
+ .input-small,
201
+ input.small,
202
+ textarea.small,
203
+ select.small {
182
204
  width: 90px;
183
205
  }
184
- .input-medium, input.medium, textarea.medium, select.medium {
206
+ .input-medium,
207
+ input.medium,
208
+ textarea.medium,
209
+ select.medium {
185
210
  width: 150px;
186
211
  }
187
- .input-large, input.large, textarea.large, select.large {
212
+ .input-large,
213
+ input.large,
214
+ textarea.large,
215
+ select.large {
188
216
  width: 210px;
189
217
  }
190
- .input-xlarge, input.xlarge, textarea.xlarge, select.xlarge {
218
+ .input-xlarge,
219
+ input.xlarge,
220
+ textarea.xlarge,
221
+ select.xlarge {
191
222
  width: 270px;
192
223
  }
193
- .input-xxlarge, input.xxlarge, textarea.xxlarge, select.xxlarge {
224
+ .input-xxlarge,
225
+ input.xxlarge,
226
+ textarea.xxlarge,
227
+ select.xxlarge {
194
228
  width: 530px;
195
229
  }
196
230
  textarea.xxlarge {
197
- overflow-y: scroll;
231
+ overflow-y: auto;
198
232
  }
199
233
 
200
- // Turn off focus for disabled (read-only) form elements
201
- input[readonly]:focus,
202
- textarea[readonly]:focus,
203
- input.disabled {
204
- background: #f5f5f5;
234
+ // Grid style input sizes
235
+ // This is a duplication of the main grid .columns() mixin, but subtracts 10px to account for input padding and border
236
+ @mixin formColumns($columnSpan: 1) {
237
+ display: inline-block;
238
+ float: none;
239
+ width: (($gridColumnWidth - 10) * $columnSpan) + (($gridColumnWidth - 10) * ($columnSpan - 1));
240
+ margin-left: 0;
241
+ }
242
+ input,
243
+ textarea,
244
+ select {
245
+ // Default columns
246
+ &.span1 { @include formColumns(1); }
247
+ &.span2 { @include formColumns(2); }
248
+ &.span3 { @include formColumns(3); }
249
+ &.span4 { @include formColumns(4); }
250
+ &.span5 { @include formColumns(5); }
251
+ &.span6 { @include formColumns(6); }
252
+ &.span7 { @include formColumns(7); }
253
+ &.span8 { @include formColumns(8); }
254
+ &.span9 { @include formColumns(9); }
255
+ &.span10 { @include formColumns(10); }
256
+ &.span11 { @include formColumns(11); }
257
+ &.span12 { @include formColumns(12); }
258
+ &.span13 { @include formColumns(13); }
259
+ &.span14 { @include formColumns(14); }
260
+ &.span15 { @include formColumns(15); }
261
+ &.span16 { @include formColumns(16); }
262
+ }
263
+
264
+ // Disabled and read-only inputs
265
+ input[disabled],
266
+ select[disabled],
267
+ textarea[disabled],
268
+ input[readonly],
269
+ select[readonly],
270
+ textarea[readonly] {
271
+ background-color: #f5f5f5;
205
272
  border-color: #ddd;
206
- @include bt-box-shadow(none);
273
+ cursor: not-allowed;
207
274
  }
208
275
 
209
276
  // Actions (the buttons)
@@ -228,7 +295,7 @@ input.disabled {
228
295
  // Help Text
229
296
  .help-inline,
230
297
  .help-block {
231
- font-size: 12px;
298
+ font-size: $basefont - 2;
232
299
  line-height: $baseline;
233
300
  color: $grayLight;
234
301
  }
@@ -268,20 +335,22 @@ input.disabled {
268
335
  @include border-radius(0 3px 3px 0);
269
336
  }
270
337
  .add-on {
338
+ position: relative;
271
339
  background: #f5f5f5;
340
+ border: 1px solid #ccc;
341
+ z-index: 2;
272
342
  float: left;
273
343
  display: block;
274
344
  width: auto;
275
345
  min-width: 16px;
346
+ height: 18px;
276
347
  padding: 4px 4px 4px 5px;
277
- color: $grayLight;
348
+ margin-right: -1px;
278
349
  font-weight: normal;
279
350
  line-height: 18px;
280
- height: 18px;
351
+ color: $grayLight;
281
352
  text-align: center;
282
- text-shadow: 0 1px 0 #fff;
283
- border: 1px solid #ccc;
284
- border-right-width: 0;
353
+ text-shadow: 0 1px 0 $white;
285
354
  @include border-radius(3px 0 0 3px);
286
355
  }
287
356
  .active {
@@ -301,8 +370,8 @@ input.disabled {
301
370
  }
302
371
  .add-on {
303
372
  @include border-radius(0 3px 3px 0);
304
- border-right-width: 1px;
305
- border-left-width: 0;
373
+ margin-right: 0;
374
+ margin-left: -1px;
306
375
  }
307
376
  }
308
377
 
@@ -314,31 +383,34 @@ input.disabled {
314
383
  display: block;
315
384
  padding: 0;
316
385
  width: 100%;
317
- label {
318
- display: block;
319
- float: none;
320
- width: auto;
321
- padding: 0;
322
- line-height: $baseline;
323
- text-align: left;
324
- white-space: normal;
325
- strong {
326
- color: $gray;
327
- }
328
- small {
329
- font-size: 12px;
330
- font-weight: normal;
331
- }
332
- }
333
- ul.inputs-list {
334
- margin-left: 25px;
335
- margin-bottom: 10px;
336
- padding-top: 0;
386
+ }
387
+ label {
388
+ display: block;
389
+ float: none;
390
+ width: auto;
391
+ padding: 0;
392
+ line-height: $baseline;
393
+ text-align: left;
394
+ white-space: normal;
395
+ strong {
396
+ color: $gray;
337
397
  }
338
- &:first-child {
339
- padding-top: 5px;
398
+ small {
399
+ font-size: $basefont - 2;
400
+ font-weight: normal;
340
401
  }
341
402
  }
403
+ .inputs-list {
404
+ margin-left: 25px;
405
+ margin-bottom: 10px;
406
+ padding-top: 0;
407
+ }
408
+ &:first-child {
409
+ padding-top: 6px;
410
+ }
411
+ li + li {
412
+ padding-top: 2px;
413
+ }
342
414
  input[type=radio],
343
415
  input[type=checkbox] {
344
416
  margin-bottom: 0;
@@ -352,7 +424,7 @@ input.disabled {
352
424
  padding-top: $baseline / 2;
353
425
  }
354
426
  legend {
355
- margin-left: 0;
427
+ padding-left: 0;
356
428
  }
357
429
  label {
358
430
  display: block;
@@ -379,7 +451,7 @@ input.disabled {
379
451
  }
380
452
  }
381
453
  }
382
- div.error {
454
+ div.clearfix.error {
383
455
  padding-top: 10px;
384
456
  padding-bottom: 10px;
385
457
  padding-left: 10px;