diff --git a/.rvmrc b/.rvmrc new file mode 100644 index 0000000..662bfdf --- /dev/null +++ b/.rvmrc @@ -0,0 +1 @@ +rvm use @bootstrap-generators diff --git a/vendor/assets/javascripts/bootstrap-alert.js b/vendor/assets/javascripts/bootstrap-alert.js index 4a65b13..2242ddd 100644 --- a/vendor/assets/javascripts/bootstrap-alert.js +++ b/vendor/assets/javascripts/bootstrap-alert.js @@ -1,5 +1,5 @@ /* ========================================================== - * bootstrap-alert.js v2.0.0 + * bootstrap-alert.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#alerts * ========================================================== * Copyright 2012 Twitter, Inc. @@ -51,11 +51,14 @@ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) - $parent.removeClass('in') + $parent + .trigger('close') + .removeClass('in') function removeElement() { - $parent.remove() - $parent.trigger('closed') + $parent + .trigger('closed') + .remove() } $.support.transition && $parent.hasClass('fade') ? @@ -88,4 +91,4 @@ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-button.js b/vendor/assets/javascripts/bootstrap-button.js index d85c829..a0e0535 100644 --- a/vendor/assets/javascripts/bootstrap-button.js +++ b/vendor/assets/javascripts/bootstrap-button.js @@ -1,5 +1,5 @@ /* ============================================================ - * bootstrap-button.js v2.0.0 + * bootstrap-button.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#buttons * ============================================================ * Copyright 2012 Twitter, Inc. @@ -91,8 +91,8 @@ $(function () { $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { - $(e.target).button('toggle') + $(e.currentTarget).button('toggle') }) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-carousel.js b/vendor/assets/javascripts/bootstrap-carousel.js index 2f47edb..810256e 100644 --- a/vendor/assets/javascripts/bootstrap-carousel.js +++ b/vendor/assets/javascripts/bootstrap-carousel.js @@ -1,5 +1,5 @@ /* ========================================================== - * bootstrap-carousel.js v2.0.0 + * bootstrap-carousel.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#carousel * ========================================================== * Copyright 2012 Twitter, Inc. @@ -61,6 +61,7 @@ , pause: function () { clearInterval(this.interval) + this.interval = null return this } @@ -82,6 +83,8 @@ , fallback = type == 'next' ? 'first' : 'last' , that = this + if (!$next.length) return + this.sliding = true isCycling && this.pause() @@ -151,4 +154,4 @@ }) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-collapse.js b/vendor/assets/javascripts/bootstrap-collapse.js index 8134cc4..d195efc 100644 --- a/vendor/assets/javascripts/bootstrap-collapse.js +++ b/vendor/assets/javascripts/bootstrap-collapse.js @@ -1,5 +1,5 @@ /* ============================================================= - * bootstrap-collapse.js v2.0.0 + * bootstrap-collapse.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#collapse * ============================================================= * Copyright 2012 Twitter, Inc. @@ -133,4 +133,4 @@ }) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-dropdown.js b/vendor/assets/javascripts/bootstrap-dropdown.js index 48d3ce0..f1f6c33 100644 --- a/vendor/assets/javascripts/bootstrap-dropdown.js +++ b/vendor/assets/javascripts/bootstrap-dropdown.js @@ -1,5 +1,5 @@ /* ============================================================ - * bootstrap-dropdown.js v2.0.0 + * bootstrap-dropdown.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#dropdowns * ============================================================ * Copyright 2012 Twitter, Inc. @@ -89,4 +89,4 @@ $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-modal.js b/vendor/assets/javascripts/bootstrap-modal.js index 180f0b6..bceb303 100644 --- a/vendor/assets/javascripts/bootstrap-modal.js +++ b/vendor/assets/javascripts/bootstrap-modal.js @@ -1,5 +1,5 @@ /* ========================================================= - * bootstrap-modal.js v2.0.0 + * bootstrap-modal.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#modals * ========================================================= * Copyright 2012 Twitter, Inc. @@ -177,7 +177,7 @@ return this.each(function () { var $this = $(this) , data = $this.data('modal') - , options = $.extend({}, $.fn.modal.defaults, typeof option == 'object' && option) + , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option) if (!data) $this.data('modal', (data = new Modal(this, options))) if (typeof option == 'string') data[option]() else if (options.show) data.show() @@ -207,4 +207,4 @@ }) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-popover.js b/vendor/assets/javascripts/bootstrap-popover.js index 35ff9d0..924844e 100644 --- a/vendor/assets/javascripts/bootstrap-popover.js +++ b/vendor/assets/javascripts/bootstrap-popover.js @@ -1,5 +1,5 @@ /* =========================================================== - * bootstrap-popover.js v2.0.0 + * bootstrap-popover.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#popovers * =========================================================== * Copyright 2012 Twitter, Inc. @@ -92,4 +92,4 @@ , template: '

' }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-scrollspy.js b/vendor/assets/javascripts/bootstrap-scrollspy.js index e8bd071..5f09cfe 100644 --- a/vendor/assets/javascripts/bootstrap-scrollspy.js +++ b/vendor/assets/javascripts/bootstrap-scrollspy.js @@ -1,5 +1,5 @@ /* ============================================================= - * bootstrap-scrollspy.js v2.0.0 + * bootstrap-scrollspy.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#scrollspy * ============================================================= * Copyright 2012 Twitter, Inc. @@ -122,4 +122,4 @@ }) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-tab.js b/vendor/assets/javascripts/bootstrap-tab.js index f19db5d..26c9ece 100644 --- a/vendor/assets/javascripts/bootstrap-tab.js +++ b/vendor/assets/javascripts/bootstrap-tab.js @@ -1,5 +1,5 @@ /* ======================================================== - * bootstrap-tab.js v2.0.0 + * bootstrap-tab.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#tabs * ======================================================== * Copyright 2012 Twitter, Inc. @@ -127,4 +127,4 @@ }) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-tooltip.js b/vendor/assets/javascripts/bootstrap-tooltip.js index 21f2311..d76e51e 100644 --- a/vendor/assets/javascripts/bootstrap-tooltip.js +++ b/vendor/assets/javascripts/bootstrap-tooltip.js @@ -1,5 +1,5 @@ /* =========================================================== - * bootstrap-tooltip.js v2.0.0 + * bootstrap-tooltip.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#tooltips * Inspired by the original jQuery.tipsy by Jason Frame * =========================================================== @@ -267,4 +267,4 @@ , template: '
' } -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-transition.js b/vendor/assets/javascripts/bootstrap-transition.js index 956350b..52196c4 100644 --- a/vendor/assets/javascripts/bootstrap-transition.js +++ b/vendor/assets/javascripts/bootstrap-transition.js @@ -1,5 +1,5 @@ /* =================================================== - * bootstrap-transition.js v2.0.0 + * bootstrap-transition.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#transitions * =================================================== * Copyright 2012 Twitter, Inc. @@ -47,5 +47,5 @@ })() }) - -}( window.jQuery ) + +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/javascripts/bootstrap-typeahead.js b/vendor/assets/javascripts/bootstrap-typeahead.js index 1426185..5031559 100644 --- a/vendor/assets/javascripts/bootstrap-typeahead.js +++ b/vendor/assets/javascripts/bootstrap-typeahead.js @@ -1,5 +1,5 @@ /* ============================================================= - * bootstrap-typeahead.js v2.0.0 + * bootstrap-typeahead.js v2.0.1 * http://twitter.github.com/bootstrap/javascript.html#typeahead * ============================================================= * Copyright 2012 Twitter, Inc. @@ -268,4 +268,4 @@ }) }) -}( window.jQuery ) +}( window.jQuery ); \ No newline at end of file diff --git a/vendor/assets/stylesheets/less/bootstrap.less b/vendor/assets/stylesheets/less/bootstrap.less index ea84f48..4b09b7a 100644 --- a/vendor/assets/stylesheets/less/bootstrap.less +++ b/vendor/assets/stylesheets/less/bootstrap.less @@ -1,5 +1,5 @@ /*! - * Bootstrap v2.0.0 + * Bootstrap v2.0.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 diff --git a/vendor/assets/stylesheets/less/breadcrumbs.less b/vendor/assets/stylesheets/less/breadcrumbs.less index 19b8081..39060ba 100644 --- a/vendor/assets/stylesheets/less/breadcrumbs.less +++ b/vendor/assets/stylesheets/less/breadcrumbs.less @@ -9,7 +9,7 @@ .border-radius(3px); .box-shadow(inset 0 1px 0 @white); li { - display: inline; + display: inline-block; text-shadow: 0 1px 0 @white; } .divider { diff --git a/vendor/assets/stylesheets/less/button-groups.less b/vendor/assets/stylesheets/less/button-groups.less index 4b0523d..a04220a 100644 --- a/vendor/assets/stylesheets/less/button-groups.less +++ b/vendor/assets/stylesheets/less/button-groups.less @@ -133,7 +133,8 @@ .btn-primary, .btn-danger, .btn-info, -.btn-success { +.btn-success, +.btn-inverse { .caret { border-top-color: @white; .opacity(75); diff --git a/vendor/assets/stylesheets/less/buttons.less b/vendor/assets/stylesheets/less/buttons.less index 5823503..55e9fbf 100644 --- a/vendor/assets/stylesheets/less/buttons.less +++ b/vendor/assets/stylesheets/less/buttons.less @@ -9,12 +9,14 @@ .btn { display: inline-block; padding: 4px 10px 4px; + margin-bottom: 0; // For input.btn font-size: @baseFontSize; line-height: @baseLineHeight; color: @grayDark; text-align: center; text-shadow: 0 1px 1px rgba(255,255,255,.75); - #gradient > .vertical-three-colors(@white, @white, 25%, darken(@white, 10%)); // Don't use .gradientbar() here since it does a three-color gradient + vertical-align: middle; + .buttonBackground(@white, darken(@white, 10%)); border: 1px solid #ccc; border-bottom-color: #bbb; .border-radius(4px); @@ -23,6 +25,7 @@ cursor: pointer; // Give IE7 some love + .reset-filter(); .ie7-restore-left-whitespace(); } @@ -51,7 +54,6 @@ .box-shadow(@shadow); background-color: darken(@white, 10%); background-color: darken(@white, 15%) e("\9"); - color: rgba(0,0,0,.5); outline: 0; } @@ -76,7 +78,7 @@ line-height: normal; .border-radius(5px); } -.btn-large .icon { +.btn-large [class^="icon-"] { margin-top: 1px; } @@ -86,10 +88,17 @@ font-size: @baseFontSize - 2px; line-height: @baseLineHeight - 2px; } -.btn-small .icon { +.btn-small [class^="icon-"] { margin-top: -1px; } +// Mini +.btn-mini { + padding: 2px 6px; + font-size: @baseFontSize - 2px; + line-height: @baseLineHeight - 4px; +} + // Alternate buttons // -------------------------------------------------- @@ -105,7 +114,9 @@ .btn-success, .btn-success:hover, .btn-info, -.btn-info:hover { +.btn-info:hover, +.btn-inverse, +.btn-inverse:hover { text-shadow: 0 -1px 0 rgba(0,0,0,.25); color: @white; } @@ -114,7 +125,8 @@ .btn-warning.active, .btn-danger.active, .btn-success.active, -.btn-info.active { +.btn-info.active, +.btn-dark.active { color: rgba(255,255,255,.75); } @@ -139,6 +151,10 @@ .btn-info { .buttonBackground(#5bc0de, #2f96b4); } +// Inverse appears as dark gray +.btn-inverse { + .buttonBackground(#454545, #262626); +} // Cross-browser Jank @@ -146,8 +162,10 @@ button.btn, input[type="submit"].btn { + + // Firefox 3.6 only I believe &::-moz-focus-inner { - padding: 0; + padding: 0; border: 0; } diff --git a/vendor/assets/stylesheets/less/code.less b/vendor/assets/stylesheets/less/code.less index 0cc3db8..e2157d8 100644 --- a/vendor/assets/stylesheets/less/code.less +++ b/vendor/assets/stylesheets/less/code.less @@ -11,12 +11,16 @@ pre { color: @grayDark; .border-radius(3px); } + +// Inline code code { padding: 3px 4px; color: #d14; background-color: #f7f7f9; border: 1px solid #e1e1e8; } + +// Blocks of code pre { display: block; padding: (@baseLineHeight - 1) / 2; @@ -30,6 +34,7 @@ pre { white-space: pre; white-space: pre-wrap; word-break: break-all; + word-wrap: break-word; // Make prettyprint styles more spaced out for readability &.prettyprint { @@ -39,6 +44,14 @@ pre { // Account for some code outputs that place code tags in pre tags code { padding: 0; + color: inherit; background-color: transparent; + border: 0; } } + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} \ No newline at end of file diff --git a/vendor/assets/stylesheets/less/dropdowns.less b/vendor/assets/stylesheets/less/dropdowns.less index 83f535a..1ec06b0 100644 --- a/vendor/assets/stylesheets/less/dropdowns.less +++ b/vendor/assets/stylesheets/less/dropdowns.less @@ -46,7 +46,6 @@ float: left; display: none; // none by default, but block on "open" of the menu min-width: 160px; - max-width: 220px; _width: 160px; padding: 4px 0; margin: 0; // override default ul @@ -93,7 +92,7 @@ padding: 3px 15px; clear: both; font-weight: normal; - line-height: 18px; + line-height: @baseLineHeight; color: @gray; white-space: nowrap; } diff --git a/vendor/assets/stylesheets/less/forms.less b/vendor/assets/stylesheets/less/forms.less index 9c9a9b8..0a5fa2b 100644 --- a/vendor/assets/stylesheets/less/forms.less +++ b/vendor/assets/stylesheets/less/forms.less @@ -28,6 +28,12 @@ legend { color: @grayDark; border: 0; border-bottom: 1px solid #eee; + + // Small + small { + font-size: @baseLineHeight * .75; + color: @grayLight; + } } // Set font for forms @@ -36,7 +42,13 @@ input, button, select, textarea { - #font > .sans-serif(@baseFontSize,normal,@baseLineHeight); + #font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here +} +input, +button, +select, +textarea { + #font > #family > .sans-serif(); // And only set font-family here for those that need it (note the missing label element) } // Identify controls by their labels @@ -84,13 +96,17 @@ input[type="radio"] { margin: 3px 0; *margin-top: 0; /* IE7 */ line-height: normal; - border: 0; cursor: pointer; .border-radius(0); + border: 0 \9; /* IE9 and down */ +} +input[type="image"] { + border: 0; } // Reset the file input to browser defaults input[type="file"] { + width: auto; padding: initial; line-height: initial; border: initial; @@ -115,6 +131,11 @@ input[type="file"] { line-height: 28px; } +// Reset line-height for IE +input[type="file"] { + line-height: 18px \9; +} + // Chrome on Linux and Mobile Safari need background-color select { width: 220px; // default input width + 10px of padding that doesn't get applied @@ -165,9 +186,11 @@ input[type="hidden"] { } // Radios and checkboxes on same line +// TODO v3: Convert .inline to .control-inline .radio.inline, .checkbox.inline { display: inline-block; + padding-top: 5px; margin-bottom: 0; vertical-align: middle; } @@ -175,11 +198,6 @@ input[type="hidden"] { .checkbox.inline + .checkbox.inline { margin-left: 10px; // space out consecutive inline controls } -// But don't forget to remove their padding on first-child -.controls > .radio.inline:first-child, -.controls > .checkbox.inline:first-child { - padding-top: 0; -} @@ -198,9 +216,10 @@ textarea:focus { @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); .box-shadow(@shadow); outline: 0; - outline: thin dotted \9; /* IE6-8 */ + outline: thin dotted \9; /* IE6-9 */ } input[type="file"]:focus, +input[type="radio"]:focus, input[type="checkbox"]:focus, select:focus { .box-shadow(none); // override for file inputs @@ -260,33 +279,6 @@ textarea[readonly] { // FORM FIELD FEEDBACK STATES // -------------------------- -// Mixin for form field states -.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) { - // Set the text color - > label, - .help-block, - .help-inline { - color: @textColor; - } - // Style inputs accordingly - input, - select, - textarea { - color: @textColor; - border-color: @borderColor; - &:focus { - border-color: darken(@borderColor, 10%); - .box-shadow(0 0 6px lighten(@borderColor, 20%)); - } - } - // Give a small background color for input-prepend/-append - .input-prepend .add-on, - .input-append .add-on { - color: @textColor; - background-color: @backgroundColor; - border-color: @textColor; - } -} // Warning .control-group.warning { .formFieldState(@warningText, @warningText, @warningBackground); @@ -344,6 +336,7 @@ select:focus:required:invalid { // --------- .help-block { + display: block; // account for any element using help-block margin-top: 5px; margin-bottom: 0; color: @grayLight; @@ -412,6 +405,7 @@ select:focus:required:invalid { .border-radius(3px 0 0 3px); } .uneditable-input { + border-left-color: #eee; border-right-color: #ccc; } .add-on { @@ -461,6 +455,10 @@ select:focus:required:invalid { display: inline-block; margin-bottom: 0; } + // Re-hide hidden elements due to specifity + .hide { + display: none; + } } .form-search label, .form-inline label, @@ -477,28 +475,37 @@ select:focus:required:invalid { .form-inline .input-prepend .add-on { vertical-align: middle; } +// Inline checkbox/radio labels +.form-search .radio, +.form-inline .radio, +.form-search .checkbox, +.form-inline .checkbox { + margin-bottom: 0; + vertical-align: middle; +} // Margin to space out fieldsets .control-group { margin-bottom: @baseLineHeight / 2; } +// Legend collapses margin, so next element is responsible for spacing +legend + .control-group { + margin-top: @baseLineHeight; + -webkit-margin-top-collapse: separate; +} + // Horizontal-specific styles // -------------------------- .form-horizontal { - // Legend collapses margin, so we're relegated to padding - legend + .control-group { - margin-top: @baseLineHeight; - -webkit-margin-top-collapse: separate; - } // Increase spacing between groups .control-group { margin-bottom: @baseLineHeight; .clearfix(); } // Float the labels left - .control-group > label { + .control-label { float: left; width: 140px; padding-top: 5px; diff --git a/vendor/assets/stylesheets/less/labels.less b/vendor/assets/stylesheets/less/labels.less index c0f4277..268435a 100644 --- a/vendor/assets/stylesheets/less/labels.less +++ b/vendor/assets/stylesheets/less/labels.less @@ -1,16 +1,32 @@ // LABELS // ------ +// Base .label { - padding: 1px 3px 2px; - font-size: @baseFontSize * .75; + padding: 2px 4px 3px; + font-size: @baseFontSize * .85; font-weight: bold; color: @white; - text-transform: uppercase; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); background-color: @grayLight; .border-radius(3px); } -.label-important { background-color: @errorText; } -.label-warning { background-color: @orange; } -.label-success { background-color: @successText; } -.label-info { background-color: @infoText; } + +// Hover state +.label:hover { + color: @white; + text-decoration: none; +} + +// Colors +.label-important { background-color: @errorText; } +.label-important:hover { background-color: darken(@errorText, 10%); } + +.label-warning { background-color: @orange; } +.label-warning:hover { background-color: darken(@orange, 10%); } + +.label-success { background-color: @successText; } +.label-success:hover { background-color: darken(@successText, 10%); } + +.label-info { background-color: @infoText; } +.label-info:hover { background-color: darken(@infoText, 10%); } diff --git a/vendor/assets/stylesheets/less/mixins.less b/vendor/assets/stylesheets/less/mixins.less index 545ccb9..3cf1a37 100644 --- a/vendor/assets/stylesheets/less/mixins.less +++ b/vendor/assets/stylesheets/less/mixins.less @@ -9,7 +9,7 @@ // Clearfix // -------- // For clearing floats like a boss h5bp.com/q -.clearfix() { +.clearfix { *zoom: 1; &:before, &:after { @@ -25,7 +25,7 @@ // ------------------ .tab-focus() { // Default - outline: thin dotted; + outline: thin dotted #333; // Webkit outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; @@ -89,6 +89,15 @@ } } +// Text overflow +// ------------------------- +// Requires inline-block or block for proper styling +.text-overflow() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + // FONTS @@ -199,13 +208,13 @@ // Setup the mixins to be used .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, @columns) { width: 1% * (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)); - } + } .gridColumn(@fluidGridGutterWidth) { float: left; margin-left: @fluidGridGutterWidth; } // Take these values and mixins, and make 'em do their thang - .generate(@gridColumns, @fluidGridColumnWidth, @fluidGridGutterWidth) { + .generate(@gridColumns, @fluidGridColumnWidth, @fluidGridGutterWidth) { // Row surrounds the columns .row-fluid { width: 100%; @@ -219,24 +228,22 @@ margin-left: 0; } // Default columns - .span1 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 1); } - .span2 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 2); } - .span3 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 3); } - .span4 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 4); } - .span5 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 5); } - .span6 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 6); } - .span7 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 7); } - .span8 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 8); } - .span9 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 9); } - .span10 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 10); } - .span11 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 11); } - .span12 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 12); } + > .span1 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 1); } + > .span2 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 2); } + > .span3 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 3); } + > .span4 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 4); } + > .span5 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 5); } + > .span6 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 6); } + > .span7 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 7); } + > .span8 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 8); } + > .span9 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 9); } + > .span10 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 10); } + > .span11 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 11); } + > .span12 { #fluidGridSystem > .columns(@fluidGridGutterWidth, @fluidGridColumnWidth, 12); } } } } - - // Input grid system // ------------------------- #inputGridSystem { @@ -263,6 +270,52 @@ } } +// Make a Grid +// ------------------------- +// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior +.makeRow() { + margin-left: @gridGutterWidth * -1; + .clearfix(); +} +.makeColumn(@columns: 1) { + float: left; + margin-left: @gridGutterWidth; + width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)); +} + + + +// Form field states (used in forms.less) +// -------------------------------------------------- + +// Mixin for form field states +.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) { + // Set the text color + > label, + .help-block, + .help-inline { + color: @textColor; + } + // Style inputs accordingly + input, + select, + textarea { + color: @textColor; + border-color: @borderColor; + &:focus { + border-color: darken(@borderColor, 10%); + .box-shadow(0 0 6px lighten(@borderColor, 20%)); + } + } + // Give a small background color for input-prepend/-append + .input-prepend .add-on, + .input-append .add-on { + color: @textColor; + background-color: @backgroundColor; + border-color: @textColor; + } +} + // CSS3 PROPERTIES @@ -313,13 +366,6 @@ -o-transform: translate(@x, @y); transform: translate(@x, @y); } -.skew(@x: 0, @y: 0) { - -webkit-transform: translate(@x, @y); - -moz-transform: translate(@x, @y); - -ms-transform: translate(@x, @y); - -o-transform: translate(@x, @y); - transform: translate(@x, @y); -} .skew(@x: 0, @y: 0) { -webkit-transform: skew(@x, @y); -moz-transform: skew(@x, @y); @@ -327,6 +373,13 @@ -o-transform: skew(@x, @y); transform: skew(@x, @y); } +.translate3d(@x: 0, @y: 0, @z: 0) { + -webkit-transform: translate(@x, @y, @z); + -moz-transform: translate(@x, @y, @z); + -ms-transform: translate(@x, @y, @z); + -o-transform: translate(@x, @y, @z); + transform: translate(@x, @y, @z); +} // Background clipping // Heads up: FF 3.6 and under need "padding" instead of "padding-box" diff --git a/vendor/assets/stylesheets/less/modals.less b/vendor/assets/stylesheets/less/modals.less index aa14675..d1e06dc 100644 --- a/vendor/assets/stylesheets/less/modals.less +++ b/vendor/assets/stylesheets/less/modals.less @@ -1,6 +1,7 @@ // MODALS // ------ +// Recalculate z-index where appropriate .modal-open { .dropdown-menu { z-index: @zindexDropdown + @zindexModal; } .dropdown.open { *z-index: @zindexDropdown + @zindexModal; } @@ -8,6 +9,7 @@ .tooltip { z-index: @zindexTooltip + @zindexModal; } } +// Background .modal-backdrop { position: fixed; top: 0; @@ -25,6 +27,7 @@ .opacity(80); } +// Base modal .modal { position: fixed; top: 50%; @@ -53,9 +56,17 @@ // Close icon .close { margin-top: 2px; } } + +// Body (where all modal content resises) .modal-body { padding: 15px; } +// Remove bottom margin if need be +.modal-body .modal-form { + margin-bottom: 0; +} + +// Footer (for actions) .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; diff --git a/vendor/assets/stylesheets/less/navbar.less b/vendor/assets/stylesheets/less/navbar.less index 93c0400..16553c1 100644 --- a/vendor/assets/stylesheets/less/navbar.less +++ b/vendor/assets/stylesheets/less/navbar.less @@ -81,7 +81,7 @@ margin-top: 5px; // make buttons vertically centered in navbar } .btn-group .btn { - margin-top: 0; + margin-top: 0; // then undo the margin here so we don't accidentally double it } } @@ -104,6 +104,14 @@ input[type="radio"] { margin-top: 3px; } + .input-append, + .input-prepend { + margin-top: 6px; + white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left + input { + margin-top: 0; // remove the margin on top since it's on the parent + } + } } // Navbar search @@ -133,7 +141,7 @@ background-color: @grayLight; background-color: rgba(255,255,255,.5); } - // Focus states (we use .focused since IE8 and down doesn't support :focus) + // Focus states (we use .focused since IE7-8 and down doesn't support :focus) &:focus, &.focused { padding: 5px 10px; @@ -194,7 +202,7 @@ } // Hover .navbar .nav > li > a:hover { - background-color: transparent; + background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active color: @navbarLinkColorHover; text-decoration: none; } @@ -205,7 +213,6 @@ color: @navbarLinkColorHover; text-decoration: none; background-color: @navbarBackground; - background-color: rgba(0,0,0,.5); } // Dividers (basically a vertical hr) diff --git a/vendor/assets/stylesheets/less/navs.less b/vendor/assets/stylesheets/less/navs.less index a29cb71..06219fa 100644 --- a/vendor/assets/stylesheets/less/navs.less +++ b/vendor/assets/stylesheets/less/navs.less @@ -21,6 +21,21 @@ background-color: @grayLighter; } +// Nav headers (for dropdowns and lists) +.nav .nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: @baseLineHeight; + color: @grayLight; + text-shadow: 0 1px 0 rgba(255,255,255,.5); + text-transform: uppercase; +} +// Space them out when they follow another list item (link) +.nav li + .nav-header { + margin-top: 9px; +} // NAV LIST @@ -33,21 +48,12 @@ } .nav-list > li > a, .nav-list .nav-header { - display: block; - padding: 3px 15px; margin-left: -15px; margin-right: -15px; text-shadow: 0 1px 0 rgba(255,255,255,.5); } -.nav-list .nav-header { - font-size: 11px; - font-weight: bold; - line-height: @baseLineHeight; - color: @grayLight; - text-transform: uppercase; -} -.nav-list > li + .nav-header { - margin-top: 9px; +.nav-list > li > a { + padding: 3px 15px; } .nav-list .active > a, .nav-list .active > a:hover { @@ -249,6 +255,9 @@ .tabbable { .clearfix(); } +.tab-content { + overflow: hidden; // prevent content from running below tabs +} // Remove border on bottom, left, right .tabs-below .nav-tabs, diff --git a/vendor/assets/stylesheets/less/reset.less b/vendor/assets/stylesheets/less/reset.less index 28d8eb6..1115f59 100644 --- a/vendor/assets/stylesheets/less/reset.less +++ b/vendor/assets/stylesheets/less/reset.less @@ -108,7 +108,7 @@ input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; // Cursors on all buttons applied consistently - -webkit-appearance: button; // Style clicable inputs in iOS + -webkit-appearance: button; // Style clickable inputs in iOS } input[type="search"] { // Appearance in Safari/Chrome -webkit-appearance: textfield; diff --git a/vendor/assets/stylesheets/less/responsive.less b/vendor/assets/stylesheets/less/responsive.less index 7d494a3..1547dce 100644 --- a/vendor/assets/stylesheets/less/responsive.less +++ b/vendor/assets/stylesheets/less/responsive.less @@ -1,5 +1,5 @@ /*! - * Bootstrap Responsive v2.0.0 + * Bootstrap Responsive v2.0.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 @@ -56,7 +56,7 @@ .uneditable-input { display: block; width: 100%; - height: 28px; /* Make inputs at least the height of their button counterpart */ + min-height: 28px; /* Make inputs at least the height of their button counterpart */ /* Makes inputs behave like true block-level elements */ -webkit-box-sizing: border-box; /* Older Webkit */ -moz-box-sizing: border-box; /* Older FF */ @@ -123,7 +123,7 @@ // LANDSCAPE PHONE TO SMALL DESKTOP & PORTRAIT TABLET // -------------------------------------------------- -@media (max-width: 768px) { +@media (max-width: 767px) { // GRID & CONTAINERS // ----------------- // Remove width from containers @@ -154,7 +154,7 @@ // PORTRAIT TABLET TO DEFAULT DESKTOP // ---------------------------------- -@media (min-width: 768px) and (max-width: 980px) { +@media (min-width: 768px) and (max-width: 979px) { // Fixed grid #gridSystem > .generate(12, 42px, 20px); @@ -171,7 +171,7 @@ // TABLETS AND BELOW // ----------------- -@media (max-width: 980px) { +@media (max-width: 979px) { // UNFIX THE TOPBAR // ---------------- @@ -215,6 +215,10 @@ .navbar .nav > .divider-vertical { display: none; } + .navbar .nav .nav-header { + color: @navbarText; + text-shadow: none; + } // Nav and dropdown links in navbar .navbar .nav > li > a, .navbar .dropdown-menu a { diff --git a/vendor/assets/stylesheets/less/sprites.less b/vendor/assets/stylesheets/less/sprites.less index 44d87d8..a774166 100644 --- a/vendor/assets/stylesheets/less/sprites.less +++ b/vendor/assets/stylesheets/less/sprites.less @@ -9,24 +9,26 @@ // All icons receive the styles of the tag with a base class // of .i and are then given a unique class to add width, height, // and background-position. Your resulting HTML will look like -// . +// . // For the white version of the icons, just add the .icon-white class: -// +// -[class^="icon-"] { +[class^="icon-"], +[class*=" icon-"] { display: inline-block; width: 14px; height: 14px; + line-height: 14px; vertical-align: text-top; - background-image: url(glyphicons-halflings.png); + background-image: url(@iconSpritePath); background-position: 14px 14px; background-repeat: no-repeat; .ie7-restore-right-whitespace(); } .icon-white { - background-image: url(glyphicons-halflings-white.png); + background-image: url(@iconWhiteSpritePath); } .icon-glass { background-position: 0 0; } diff --git a/vendor/assets/stylesheets/less/tables.less b/vendor/assets/stylesheets/less/tables.less index c069ed5..3a4066d 100644 --- a/vendor/assets/stylesheets/less/tables.less +++ b/vendor/assets/stylesheets/less/tables.less @@ -25,14 +25,15 @@ table { padding: 8px; line-height: @baseLineHeight; text-align: left; + vertical-align: top; border-top: 1px solid #ddd; } th { font-weight: bold; - vertical-align: bottom; } - td { - vertical-align: top; + // Bottom align for column headings + thead th { + vertical-align: bottom; } // Remove top border from thead by default thead:first-child tr th, @@ -113,6 +114,16 @@ table { } +// HOVER EFFECT +// ------------ +// Placed here since it has to come after the potential zebra striping +.table { + tbody tr:hover td, + tbody tr:hover th { + background-color: #f5f5f5; + } +} + // TABLE CELL SIZING // ----------------- diff --git a/vendor/assets/stylesheets/less/thumbnails.less b/vendor/assets/stylesheets/less/thumbnails.less index 541fbd6..3a12d4e 100644 --- a/vendor/assets/stylesheets/less/thumbnails.less +++ b/vendor/assets/stylesheets/less/thumbnails.less @@ -2,13 +2,13 @@ // ---------- .thumbnails { - margin-left: -20px; + margin-left: -@gridGutterWidth; list-style: none; .clearfix(); } .thumbnails > li { float: left; - margin: 0 0 @baseLineHeight 20px; + margin: 0 0 @baseLineHeight @gridGutterWidth; } .thumbnail { display: block; diff --git a/vendor/assets/stylesheets/less/type.less b/vendor/assets/stylesheets/less/type.less index 7841bb0..6ba83bc 100644 --- a/vendor/assets/stylesheets/less/type.less +++ b/vendor/assets/stylesheets/less/type.less @@ -110,7 +110,8 @@ ol { li { line-height: @baseLineHeight; } -ul.unstyled { +ul.unstyled, +ol.unstyled { margin-left: 0; list-style: none; } @@ -137,7 +138,7 @@ dd { hr { margin: @baseLineHeight 0; border: 0; - border-top: 1px solid #e5e5e5; + border-top: 1px solid @hrBorder; border-bottom: 1px solid @white; } diff --git a/vendor/assets/stylesheets/less/variables.less b/vendor/assets/stylesheets/less/variables.less index f01c232..3d448ab 100644 --- a/vendor/assets/stylesheets/less/variables.less +++ b/vendor/assets/stylesheets/less/variables.less @@ -47,20 +47,28 @@ // Z-index master list // Used for a bird's eye view of components dependent on the z-axis // Try to avoid customizing these :) -@zindexDropdown: 1000; -@zindexPopover: 1010; -@zindexTooltip: 1020; -@zindexFixedNavbar: 1030; -@zindexModalBackdrop: 1040; -@zindexModal: 1050; +@zindexDropdown: 1000; +@zindexPopover: 1010; +@zindexTooltip: 1020; +@zindexFixedNavbar: 1030; +@zindexModalBackdrop: 1040; +@zindexModal: 1050; + +// Sprite icons path +@iconSpritePath: "../img/glyphicons-halflings.png"; +@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; // Input placeholder text color -@placeholderText: @grayLight; +@placeholderText: @grayLight; + +// Hr border color +@hrBorder: @grayLighter; // Navbar @navbarHeight: 40px; @navbarBackground: @grayDarker; @navbarBackgroundHighlight: @grayDark; +@navbarLinkBackgroundHover: transparent; @navbarText: @grayLight; @navbarLinkColor: @grayLight;