├── Gemfile ├── vendor └── assets │ ├── stylesheets │ ├── bootstrap.scss │ ├── bootstrap-responsive.scss │ └── bootstrap │ │ ├── _layouts.scss │ │ ├── _component-animations.scss │ │ ├── _grid.scss │ │ ├── _breadcrumbs.scss │ │ ├── _responsive-768px-979px.scss │ │ ├── _hero-unit.scss │ │ ├── _wells.scss │ │ ├── _responsive-1200px-min.scss │ │ ├── _utilities.scss │ │ ├── _accordion.scss │ │ ├── _close.scss │ │ ├── _pager.scss │ │ ├── _media.scss │ │ ├── _scaffolding.scss │ │ ├── responsive.scss │ │ ├── _thumbnails.scss │ │ ├── _code.scss │ │ ├── _alerts.scss │ │ ├── bootstrap.scss │ │ ├── _tooltip.scss │ │ ├── _responsive-utilities.scss │ │ ├── _labels-badges.scss │ │ ├── _modals.scss │ │ ├── _carousel.scss │ │ ├── _pagination.scss │ │ ├── _progress-bars.scss │ │ ├── _popovers.scss │ │ ├── _responsive-767px-max.scss │ │ ├── _responsive-navbar.scss │ │ ├── _reset.scss │ │ ├── _buttons.scss │ │ ├── _type.scss │ │ ├── _button-groups.scss │ │ ├── _dropdowns.scss │ │ ├── _tables.scss │ │ ├── _navs.scss │ │ └── _sprites.scss │ ├── images │ ├── glyphicons-halflings.png │ └── glyphicons-halflings-white.png │ └── javascripts │ ├── bootstrap.js │ ├── bootstrap-transition.js │ ├── bootstrap-alert.js │ ├── bootstrap-button.js │ ├── bootstrap-popover.js │ ├── bootstrap-affix.js │ ├── bootstrap-tab.js │ ├── bootstrap-dropdown.js │ ├── bootstrap-scrollspy.js │ ├── bootstrap-collapse.js │ ├── bootstrap-carousel.js │ ├── bootstrap-modal.js │ ├── bootstrap-typeahead.js │ └── bootstrap-tooltip.js ├── .gitignore ├── test ├── gemfiles │ ├── sass_3_2.gemfile │ └── sass_head.gemfile ├── test_helper.rb └── compilation_test.rb ├── .travis.yml ├── templates └── project │ ├── styles.scss │ ├── manifest.rb │ └── _variables.scss ├── lib ├── bootstrap-sass │ ├── engine.rb │ ├── sass_functions.rb │ └── compass_functions.rb └── bootstrap-sass.rb ├── LICENSE ├── bootstrap-sass.gemspec ├── Rakefile ├── asseturl.patch ├── update-bootstrap.sh ├── CONTRIBUTING.md ├── CHANGELOG.md └── README.md /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gemspec -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap.scss: -------------------------------------------------------------------------------- 1 | @import "bootstrap/bootstrap"; -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap-responsive.scss: -------------------------------------------------------------------------------- 1 | @import "bootstrap/responsive"; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .sass-cache 3 | bootstrap.css 4 | bootstrap-responsive.css 5 | Gemfile.lock 6 | .rvmrc 7 | -------------------------------------------------------------------------------- /test/gemfiles/sass_3_2.gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem 'sass', '~> 3.2' 4 | 5 | gemspec path: '../../' -------------------------------------------------------------------------------- /test/gemfiles/sass_head.gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem 'sass', github: 'nex3/sass' 4 | 5 | gemspec path: '../../' 6 | -------------------------------------------------------------------------------- /vendor/assets/images/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diasks2/bootstrap-sass/master/vendor/assets/images/glyphicons-halflings.png -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 1.9.3 4 | - jruby-19mode 5 | gemfile: 6 | - test/gemfiles/sass_3_2.gemfile 7 | - test/gemfiles/sass_head.gemfile -------------------------------------------------------------------------------- /vendor/assets/images/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diasks2/bootstrap-sass/master/vendor/assets/images/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /test/test_helper.rb: -------------------------------------------------------------------------------- 1 | $:.unshift("#{File.dirname(__FILE__)}/..") 2 | 3 | require 'test/unit' 4 | 5 | require 'sass' 6 | require 'lib/bootstrap-sass/compass_functions' 7 | require 'lib/bootstrap-sass/sass_functions' -------------------------------------------------------------------------------- /templates/project/styles.scss: -------------------------------------------------------------------------------- 1 | // Import all the variables into the main css file. 2 | @import "variables"; 3 | 4 | // I gather this file is a starting point for the project. 5 | @import "bootstrap"; 6 | 7 | // Include responsive Bootstrap styles 8 | // @import "bootstrap-responsive"; 9 | -------------------------------------------------------------------------------- /lib/bootstrap-sass/engine.rb: -------------------------------------------------------------------------------- 1 | module Bootstrap 2 | module Rails 3 | class Engine < ::Rails::Engine 4 | initializer "bootstrap-sass.assets.precompile" do |app| 5 | app.config.assets.precompile += %w(glyphicons-halflings.png glyphicons-halflings-white.png) 6 | end 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /test/compilation_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CompilationTest < Test::Unit::TestCase 4 | def test_compilation 5 | path = 'vendor/assets/stylesheets' 6 | %w(bootstrap bootstrap-responsive).each do |file| 7 | engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path]) 8 | assert_nothing_raised do 9 | engine.render 10 | end 11 | end 12 | end 13 | end -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_layouts.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Layouts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container (centered, fixed-width layouts) 7 | .container { 8 | @include container-fixed(); 9 | } 10 | 11 | // Fluid layouts (left aligned, with sidebar, min- & max-width content) 12 | .container-fluid { 13 | padding-right: $gridGutterWidth; 14 | padding-left: $gridGutterWidth; 15 | @include clearfix(); 16 | } 17 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap.js: -------------------------------------------------------------------------------- 1 | //= require bootstrap-transition 2 | //= require bootstrap-affix 3 | //= require bootstrap-alert 4 | //= require bootstrap-button 5 | //= require bootstrap-carousel 6 | //= require bootstrap-collapse 7 | //= require bootstrap-dropdown 8 | //= require bootstrap-modal 9 | //= require bootstrap-scrollspy 10 | //= require bootstrap-tab 11 | //= require bootstrap-tooltip 12 | //= require bootstrap-popover 13 | //= require bootstrap-typeahead -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_component-animations.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | 6 | .fade { 7 | opacity: 0; 8 | @include transition(opacity .15s linear); 9 | &.in { 10 | opacity: 1; 11 | } 12 | } 13 | 14 | .collapse { 15 | position: relative; 16 | height: 0; 17 | overflow: hidden; 18 | @include transition(height .35s ease); 19 | &.in { 20 | height: auto; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/bootstrap-sass/sass_functions.rb: -------------------------------------------------------------------------------- 1 | require 'sass' 2 | 3 | module Sass::Script::Functions 4 | # LARS: Snatched from compass - 2011-11-29 - used for gradients in IE6-9 5 | # returns an IE hex string for a color with an alpha channel 6 | # suitable for passing to IE filters. 7 | def ie_hex_str(color) 8 | assert_type color, :Color 9 | alpha = (color.alpha * 255).round 10 | alphastr = alpha.to_s(16).rjust(2, '0') 11 | Sass::Script::String.new("##{alphastr}#{color.send(:hex_str)[1..-1]}".upcase) 12 | end 13 | declare :ie_hex_str, [:color] 14 | end -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_grid.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Fixed (940px) 7 | @include grid-core($gridColumnWidth, $gridGutterWidth); 8 | 9 | // Fluid (940px) 10 | @include grid-fluid($fluidGridColumnWidth, $fluidGridGutterWidth); 11 | 12 | // Reset utility classes due to specificity 13 | [class*="span"].hide, 14 | .row-fluid [class*="span"].hide { 15 | display: none; 16 | } 17 | 18 | [class*="span"].pull-right, 19 | .row-fluid [class*="span"].pull-right { 20 | float: right; 21 | } 22 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: 8px 15px; 8 | margin: 0 0 $baseLineHeight; 9 | list-style: none; 10 | background-color: #f5f5f5; 11 | @include border-radius($baseBorderRadius); 12 | > li { 13 | display: inline-block; 14 | @include ie7-inline-block(); 15 | text-shadow: 0 1px 0 $white; 16 | > .divider { 17 | padding: 0 5px; 18 | color: #ccc; 19 | } 20 | } 21 | .active { 22 | color: $grayLight; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2011 Twitter, Inc. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_responsive-768px-979px.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Tablet to desktop 3 | // -------------------------------------------------- 4 | 5 | 6 | @media (min-width: 768px) and (max-width: 979px) { 7 | 8 | // Fixed grid 9 | @include grid-core($gridColumnWidth768, $gridGutterWidth768); 10 | 11 | // Fluid grid 12 | @include grid-fluid($fluidGridColumnWidth768, $fluidGridGutterWidth768); 13 | 14 | // Input grid 15 | @include grid-input($gridColumnWidth768, $gridGutterWidth768); 16 | 17 | // No need to reset .thumbnails here since it's the same $gridGutterWidth 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootstrap-sass.gemspec: -------------------------------------------------------------------------------- 1 | Gem::Specification.new do |s| 2 | s.name = "bootstrap-sass" 3 | s.version = '2.3.2.1' 4 | s.authors = ["Thomas McDonald"] 5 | s.email = 'tom@conceptcoding.co.uk' 6 | s.summary = "Twitter's Bootstrap, converted to Sass and ready to drop into Rails or Compass" 7 | s.homepage = "http://github.com/thomas-mcdonald/bootstrap-sass" 8 | s.license = "Apache 2.0" 9 | 10 | s.add_development_dependency 'compass' 11 | s.add_development_dependency 'sass-rails', '~> 3.2' 12 | s.add_runtime_dependency 'sass', '~> 3.2' 13 | 14 | s.files = `git ls-files`.split("\n") 15 | s.test_files = `git ls-files -- test/*`.split("\n") 16 | end -------------------------------------------------------------------------------- /templates/project/manifest.rb: -------------------------------------------------------------------------------- 1 | description "Bootstrap for Sass" 2 | 3 | # Stylesheet importing bootstrap 4 | stylesheet 'styles.scss' 5 | stylesheet '_variables.scss' 6 | 7 | # 8 | # Other Bootstrap assets 9 | basedir = '../../vendor/assets' 10 | 11 | # Glyphicons sprites 12 | %w(glyphicons-halflings glyphicons-halflings-white).each do |file| 13 | image "#{basedir}/images/#{file}.png", :to => "#{file}.png" 14 | end 15 | 16 | # Javascripts 17 | %w(affix alert button carousel collapse dropdown modal popover scrollspy tab tooltip transition typeahead).each do |file| 18 | javascript "#{basedir}/javascripts/bootstrap-#{file}.js", :to => "bootstrap-#{file}.js" 19 | end 20 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'rake/testtask' 2 | Rake::TestTask.new do |t| 3 | t.libs << "test" 4 | t.test_files = FileList['test/*_test.rb'] 5 | t.verbose = true 6 | end 7 | 8 | desc 'Dumps output to a CSS file for testing' 9 | task :debug do 10 | require 'sass' 11 | require './lib/bootstrap-sass/compass_functions' 12 | require './lib/bootstrap-sass/sass_functions' 13 | path = './vendor/assets/stylesheets' 14 | %w(bootstrap bootstrap-responsive).each do |file| 15 | engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path]) 16 | File.open("./#{file}.css", 'w') { |f| f.write(engine.render) } 17 | end 18 | end 19 | 20 | task default: :test -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_hero-unit.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Hero unit 3 | // -------------------------------------------------- 4 | 5 | 6 | .hero-unit { 7 | padding: 60px; 8 | margin-bottom: 30px; 9 | font-size: 18px; 10 | font-weight: 200; 11 | line-height: $baseLineHeight * 1.5; 12 | color: $heroUnitLeadColor; 13 | background-color: $heroUnitBackground; 14 | @include border-radius(6px); 15 | h1 { 16 | margin-bottom: 0; 17 | font-size: 60px; 18 | line-height: 1; 19 | color: $heroUnitHeadingColor; 20 | letter-spacing: -1px; 21 | } 22 | li { 23 | line-height: $baseLineHeight * 1.5; // Reset since we specify in type.scss 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /asseturl.patch: -------------------------------------------------------------------------------- 1 | diff --git a/vendor/assets/stylesheets/_variables.scss b/vendor/assets/stylesheets/_variables.scss 2 | index e29dc59..85f4d56 100644 3 | --- a/vendor/assets/stylesheets/_variables.scss 4 | +++ b/vendor/assets/stylesheets/_variables.scss 5 | @@ -151,8 +151,8 @@ $zindexModal: 1050 !default; 6 | 7 | // Sprite icons path 8 | // ------------------------- 9 | -$iconSpritePath: "../img/glyphicons-halflings.png" !default; 10 | -$iconWhiteSpritePath: "../img/glyphicons-halflings-white.png" !default; 11 | +$iconSpritePath: image-path("glyphicons-halflings.png") !default; 12 | +$iconWhiteSpritePath: image-path("glyphicons-halflings-white.png") !default; 13 | 14 | 15 | // Input placeholder text color 16 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_wells.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: $wellBackground; 12 | border: 1px solid darken($wellBackground, 7%); 13 | @include border-radius($baseBorderRadius); 14 | @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-large { 23 | padding: 24px; 24 | @include border-radius($borderRadiusLarge); 25 | } 26 | .well-small { 27 | padding: 9px; 28 | @include border-radius($borderRadiusSmall); 29 | } 30 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_responsive-1200px-min.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Large desktop and up 3 | // -------------------------------------------------- 4 | 5 | 6 | @media (min-width: 1200px) { 7 | 8 | // Fixed grid 9 | @include grid-core($gridColumnWidth1200, $gridGutterWidth1200); 10 | 11 | // Fluid grid 12 | @include grid-fluid($fluidGridColumnWidth1200, $fluidGridGutterWidth1200); 13 | 14 | // Input grid 15 | @include grid-input($gridColumnWidth1200, $gridGutterWidth1200); 16 | 17 | // Thumbnails 18 | .thumbnails { 19 | margin-left: -$gridGutterWidth1200; 20 | } 21 | .thumbnails > li { 22 | margin-left: $gridGutterWidth1200; 23 | } 24 | .row-fluid .thumbnails { 25 | margin-left: 0; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_utilities.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Quick floats 7 | .pull-right { 8 | float: right; 9 | } 10 | .pull-left { 11 | float: left; 12 | } 13 | 14 | // Toggling content 15 | .hide { 16 | display: none; 17 | } 18 | .show { 19 | display: block; 20 | } 21 | 22 | // Visibility 23 | .invisible { 24 | visibility: hidden; 25 | } 26 | 27 | // For Affix plugin 28 | .affix { 29 | position: fixed; 30 | } 31 | 32 | // Clearing floats 33 | .clearfix { 34 | @include clearfix(); 35 | } 36 | 37 | // Accessible yet invisible text 38 | .hide-text { 39 | @include hide-text(); 40 | } 41 | 42 | // Uses box-sizing mixin, so must be defined here 43 | .input-block-level { 44 | @include input-block-level(); 45 | } 46 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_accordion.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Accordion 3 | // -------------------------------------------------- 4 | 5 | 6 | // Parent container 7 | .accordion { 8 | margin-bottom: $baseLineHeight; 9 | } 10 | 11 | // Group == heading + body 12 | .accordion-group { 13 | margin-bottom: 2px; 14 | border: 1px solid #e5e5e5; 15 | @include border-radius($baseBorderRadius); 16 | } 17 | .accordion-heading { 18 | border-bottom: 0; 19 | } 20 | .accordion-heading .accordion-toggle { 21 | display: block; 22 | padding: 8px 15px; 23 | } 24 | 25 | // General toggle styles 26 | .accordion-toggle { 27 | cursor: pointer; 28 | } 29 | 30 | // Inner needs the styles because you can't animate properly with any styles on the element 31 | .accordion-inner { 32 | padding: 9px 15px; 33 | border-top: 1px solid #e5e5e5; 34 | } 35 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_close.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: 20px; 9 | font-weight: bold; 10 | line-height: $baseLineHeight; 11 | color: $black; 12 | text-shadow: 0 1px 0 rgba(255,255,255,1); 13 | @include opacity(20); 14 | &:hover, 15 | &:focus { 16 | color: $black; 17 | text-decoration: none; 18 | cursor: pointer; 19 | @include opacity(40); 20 | } 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button.close { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | -------------------------------------------------------------------------------- /lib/bootstrap-sass/compass_functions.rb: -------------------------------------------------------------------------------- 1 | # This contains functions for use with a project *only* using Compass. 2 | module Sass::Script::Functions 3 | def image_path(source, options = {}) 4 | if defined?(::Sprockets) 5 | ::Sass::Script::String.new sprockets_context.image_path(source.value).to_s, :string 6 | elsif defined?(::Compass) 7 | image_url(source, Sass::Script::Bool.new(true)) 8 | else 9 | # Revert to the old compass-agnostic path determination 10 | asset_sans_quotes = source.value.gsub('"', '') 11 | Sass::Script::String.new("/images/#{asset_sans_quotes}", :string) 12 | end 13 | end 14 | 15 | protected 16 | def sprockets_context # :nodoc: 17 | if options.key?(:sprockets) 18 | options[:sprockets][:context] 19 | else 20 | # Compatibility with sprockets pre 2.10.0 21 | options[:importer].context 22 | end 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /update-bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ROOT=`pwd`"/vendor/assets" 4 | TMP='tmp/sass-twitter-bootstrap' 5 | # Pull down sass-twitter-bootstrap sources 6 | git clone https://github.com/jlong/sass-twitter-bootstrap.git tmp/sass-twitter-bootstrap 7 | # Copy lib/ to stylesheets/ 8 | mkdir -p $ROOT/stylesheets/bootstrap 9 | cp -r $TMP/lib/* $ROOT/stylesheets/bootstrap 10 | # Copy js/ to javascripts/ 11 | cp -r $TMP/js/* $ROOT/javascripts 12 | # Copy img/ to images/ 13 | cp -r $TMP/img/* $ROOT/images 14 | # Remove tests 15 | rm -r $ROOT/javascripts/tests 16 | rm -r $ROOT/stylesheets/bootstrap/tests 17 | 18 | # Patch the asset-url in _variables.scss 19 | patch -f vendor/assets/stylesheets/bootstrap/_variables.scss < asseturl.patch 20 | 21 | # Patch paths in bootstrap.scss and responsive.scss 22 | sed -i.bak 's_@import \"_@import \"bootstrap/_g' $ROOT/stylesheets/bootstrap/{bootstrap,responsive}.scss 23 | rm $ROOT/stylesheets/bootstrap/*.bak 24 | 25 | rm -rf $TMP 26 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_pager.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | margin: $baseLineHeight 0; 8 | list-style: none; 9 | text-align: center; 10 | @include clearfix(); 11 | } 12 | .pager li { 13 | display: inline; 14 | } 15 | .pager li > a, 16 | .pager li > span { 17 | display: inline-block; 18 | padding: 5px 14px; 19 | background-color: #fff; 20 | border: 1px solid #ddd; 21 | @include border-radius(15px); 22 | } 23 | .pager li > a:hover, 24 | .pager li > a:focus { 25 | text-decoration: none; 26 | background-color: #f5f5f5; 27 | } 28 | .pager .next > a, 29 | .pager .next > span { 30 | float: right; 31 | } 32 | .pager .previous > a, 33 | .pager .previous > span { 34 | float: left; 35 | } 36 | .pager .disabled > a, 37 | .pager .disabled > a:hover, 38 | .pager .disabled > a:focus, 39 | .pager .disabled > span { 40 | color: $grayLight; 41 | background-color: #fff; 42 | cursor: default; 43 | } 44 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_media.scss: -------------------------------------------------------------------------------- 1 | // Media objects 2 | // Source: http://stubbornella.org/content/?p=497 3 | // -------------------------------------------------- 4 | 5 | 6 | // Common styles 7 | // ------------------------- 8 | 9 | // Clear the floats 10 | .media, 11 | .media-body { 12 | overflow: hidden; 13 | *overflow: visible; 14 | zoom: 1; 15 | } 16 | 17 | // Proper spacing between instances of .media 18 | .media, 19 | .media .media { 20 | margin-top: 15px; 21 | } 22 | .media:first-child { 23 | margin-top: 0; 24 | } 25 | 26 | // For images and videos, set to block 27 | .media-object { 28 | display: block; 29 | } 30 | 31 | // Reset margins on headings for tighter default spacing 32 | .media-heading { 33 | margin: 0 0 5px; 34 | } 35 | 36 | 37 | // Media image alignment 38 | // ------------------------- 39 | 40 | .media > .pull-left { 41 | margin-right: 10px; 42 | } 43 | .media > .pull-right { 44 | margin-left: 10px; 45 | } 46 | 47 | 48 | // Media list variation 49 | // ------------------------- 50 | 51 | // Undo default ul/ol styles 52 | .media-list { 53 | margin-left: 0; 54 | list-style: none; 55 | } 56 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_scaffolding.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Scaffolding 3 | // -------------------------------------------------- 4 | 5 | 6 | // Body reset 7 | // ------------------------- 8 | 9 | body { 10 | margin: 0; 11 | font-family: $baseFontFamily; 12 | font-size: $baseFontSize; 13 | line-height: $baseLineHeight; 14 | color: $textColor; 15 | background-color: $bodyBackground; 16 | } 17 | 18 | 19 | // Links 20 | // ------------------------- 21 | 22 | a { 23 | color: $linkColor; 24 | text-decoration: none; 25 | } 26 | a:hover, 27 | a:focus { 28 | color: $linkColorHover; 29 | text-decoration: underline; 30 | } 31 | 32 | 33 | // Images 34 | // ------------------------- 35 | 36 | // Rounded corners 37 | .img-rounded { 38 | @include border-radius(6px); 39 | } 40 | 41 | // Add polaroid-esque trim 42 | .img-polaroid { 43 | padding: 4px; 44 | background-color: #fff; 45 | border: 1px solid #ccc; 46 | border: 1px solid rgba(0,0,0,.2); 47 | @include box-shadow(0 1px 3px rgba(0,0,0,.1)); 48 | } 49 | 50 | // Perfect circle 51 | .img-circle { 52 | @include border-radius(500px); // crank the border-radius so it works with most reasonably sized images 53 | } 54 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/responsive.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Responsive v2.3.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | 11 | 12 | // Responsive 13 | // For phone and tablet devices 14 | // ------------------------------------------------------------- 15 | 16 | 17 | // REPEAT VARIABLES & MIXINS 18 | // ------------------------- 19 | // Required since we compile the responsive stuff separately 20 | 21 | @import "bootstrap/variables"; // Modify this for custom colors, font-sizes, etc 22 | @import "bootstrap/mixins"; 23 | 24 | 25 | // RESPONSIVE CLASSES 26 | // ------------------ 27 | 28 | @import "bootstrap/responsive-utilities"; 29 | 30 | 31 | // MEDIA QUERIES 32 | // ------------------ 33 | 34 | // Large desktops 35 | @import "bootstrap/responsive-1200px-min"; 36 | 37 | // Tablets to regular desktops 38 | @import "bootstrap/responsive-768px-979px"; 39 | 40 | // Phones to portrait tablets and narrow desktops 41 | @import "bootstrap/responsive-767px-max"; 42 | 43 | 44 | // RESPONSIVE NAVBAR 45 | // ------------------ 46 | 47 | // From 979px and below, show a button to toggle navbar contents 48 | @import "bootstrap/responsive-navbar"; 49 | -------------------------------------------------------------------------------- /lib/bootstrap-sass.rb: -------------------------------------------------------------------------------- 1 | module Bootstrap 2 | class FrameworkNotFound < StandardError; end 3 | 4 | # Inspired by Kaminari 5 | def self.load! 6 | if compass? 7 | require 'bootstrap-sass/compass_functions' 8 | register_compass_extension 9 | elsif asset_pipeline? 10 | require 'bootstrap-sass/sass_functions' 11 | end 12 | 13 | if rails? 14 | require 'sass-rails' 15 | register_rails_engine 16 | end 17 | 18 | if !(rails? || compass?) 19 | raise Bootstrap::FrameworkNotFound, "bootstrap-sass requires either Rails > 3.1 or Compass, neither of which are loaded" 20 | end 21 | 22 | stylesheets = File.expand_path(File.join("..", 'vendor', 'assets', 'stylesheets')) 23 | ::Sass.load_paths << stylesheets 24 | end 25 | 26 | private 27 | def self.asset_pipeline? 28 | defined?(::Sprockets) 29 | end 30 | 31 | def self.compass? 32 | defined?(::Compass) 33 | end 34 | 35 | def self.rails? 36 | defined?(::Rails) 37 | end 38 | 39 | def self.register_compass_extension 40 | base = File.join(File.dirname(__FILE__), '..') 41 | styles = File.join(base, 'vendor', 'assets', 'stylesheets') 42 | templates = File.join(base, 'templates') 43 | ::Compass::Frameworks.register('bootstrap', :path => base, :stylesheets_directory => styles, :templates_directory => templates) 44 | end 45 | 46 | def self.register_rails_engine 47 | require 'bootstrap-sass/engine' 48 | end 49 | end 50 | 51 | Bootstrap.load! 52 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_thumbnails.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files 7 | 8 | // Make wrapper ul behave like the grid 9 | .thumbnails { 10 | margin-left: -$gridGutterWidth; 11 | list-style: none; 12 | @include clearfix(); 13 | } 14 | // Fluid rows have no left margin 15 | .row-fluid .thumbnails { 16 | margin-left: 0; 17 | } 18 | 19 | // Float li to make thumbnails appear in a row 20 | .thumbnails > li { 21 | float: left; // Explicity set the float since we don't require .span* classes 22 | margin-bottom: $baseLineHeight; 23 | margin-left: $gridGutterWidth; 24 | } 25 | 26 | // The actual thumbnail (can be `a` or `div`) 27 | .thumbnail { 28 | display: block; 29 | padding: 4px; 30 | line-height: $baseLineHeight; 31 | border: 1px solid #ddd; 32 | @include border-radius($baseBorderRadius); 33 | @include box-shadow(0 1px 3px rgba(0,0,0,.055)); 34 | @include transition(all .2s ease-in-out); 35 | } 36 | // Add a hover/focus state for linked versions only 37 | a.thumbnail:hover, 38 | a.thumbnail:focus { 39 | border-color: $linkColor; 40 | @include box-shadow(0 1px 4px rgba(0,105,214,.25)); 41 | } 42 | 43 | // Images and captions 44 | .thumbnail > img { 45 | display: block; 46 | max-width: 100%; 47 | margin-left: auto; 48 | margin-right: auto; 49 | } 50 | .thumbnail .caption { 51 | padding: 9px; 52 | color: $gray; 53 | } 54 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_code.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and blocK) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | pre { 9 | padding: 0 3px 2px; 10 | @include font-family-monospace; 11 | font-size: $baseFontSize - 2; 12 | color: $grayDark; 13 | @include border-radius(3px); 14 | } 15 | 16 | // Inline code 17 | code { 18 | padding: 2px 4px; 19 | color: #d14; 20 | background-color: #f7f7f9; 21 | border: 1px solid #e1e1e8; 22 | white-space: nowrap; 23 | } 24 | 25 | // Blocks of code 26 | pre { 27 | display: block; 28 | padding: ($baseLineHeight - 1) / 2; 29 | margin: 0 0 $baseLineHeight / 2; 30 | font-size: $baseFontSize - 1; // 14px to 13px 31 | line-height: $baseLineHeight; 32 | word-break: break-all; 33 | word-wrap: break-word; 34 | white-space: pre; 35 | white-space: pre-wrap; 36 | background-color: #f5f5f5; 37 | border: 1px solid #ccc; // fallback for IE7-8 38 | border: 1px solid rgba(0,0,0,.15); 39 | @include border-radius($baseBorderRadius); 40 | 41 | // Make prettyprint styles more spaced out for readability 42 | &.prettyprint { 43 | margin-bottom: $baseLineHeight; 44 | } 45 | 46 | // Account for some code outputs that place code tags in pre tags 47 | code { 48 | padding: 0; 49 | color: inherit; 50 | white-space: pre; 51 | white-space: pre-wrap; 52 | background-color: transparent; 53 | border: 0; 54 | } 55 | } 56 | 57 | // Enable scrollable blocks of code 58 | .pre-scrollable { 59 | max-height: 340px; 60 | overflow-y: scroll; 61 | } 62 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_alerts.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: 8px 35px 8px 14px; 11 | margin-bottom: $baseLineHeight; 12 | text-shadow: 0 1px 0 rgba(255,255,255,.5); 13 | background-color: $warningBackground; 14 | border: 1px solid $warningBorder; 15 | @include border-radius($baseBorderRadius); 16 | } 17 | .alert, 18 | .alert h4 { 19 | // Specified for the h4 to prevent conflicts of changing $headingsColor 20 | color: $warningText; 21 | } 22 | .alert h4 { 23 | margin: 0; 24 | } 25 | 26 | // Adjust close link position 27 | .alert .close { 28 | position: relative; 29 | top: -2px; 30 | right: -21px; 31 | line-height: $baseLineHeight; 32 | } 33 | 34 | 35 | // Alternate styles 36 | // ------------------------- 37 | 38 | .alert-success { 39 | background-color: $successBackground; 40 | border-color: $successBorder; 41 | color: $successText; 42 | } 43 | .alert-success h4 { 44 | color: $successText; 45 | } 46 | .alert-danger, 47 | .alert-error { 48 | background-color: $errorBackground; 49 | border-color: $errorBorder; 50 | color: $errorText; 51 | } 52 | .alert-danger h4, 53 | .alert-error h4 { 54 | color: $errorText; 55 | } 56 | .alert-info { 57 | background-color: $infoBackground; 58 | border-color: $infoBorder; 59 | color: $infoText; 60 | } 61 | .alert-info h4 { 62 | color: $infoText; 63 | } 64 | 65 | 66 | // Block alerts 67 | // ------------------------- 68 | 69 | .alert-block { 70 | padding-top: 14px; 71 | padding-bottom: 14px; 72 | } 73 | .alert-block > p, 74 | .alert-block > ul { 75 | margin-bottom: 0; 76 | } 77 | .alert-block p + p { 78 | margin-top: 5px; 79 | } 80 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/bootstrap.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v2.3.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | 11 | // Core variables and mixins 12 | @import "bootstrap/variables"; // Modify this for custom colors, font-sizes, etc 13 | @import "bootstrap/mixins"; 14 | 15 | // CSS Reset 16 | @import "bootstrap/reset"; 17 | 18 | // Grid system and page structure 19 | @import "bootstrap/scaffolding"; 20 | @import "bootstrap/grid"; 21 | @import "bootstrap/layouts"; 22 | 23 | // Base CSS 24 | @import "bootstrap/type"; 25 | @import "bootstrap/code"; 26 | @import "bootstrap/forms"; 27 | @import "bootstrap/tables"; 28 | 29 | // Components: common 30 | @import "bootstrap/sprites"; 31 | @import "bootstrap/dropdowns"; 32 | @import "bootstrap/wells"; 33 | @import "bootstrap/component-animations"; 34 | @import "bootstrap/close"; 35 | 36 | // Components: Buttons & Alerts 37 | @import "bootstrap/buttons"; 38 | @import "bootstrap/button-groups"; 39 | @import "bootstrap/alerts"; // Note: alerts share common CSS with buttons and thus have styles in buttons 40 | 41 | // Components: Nav 42 | @import "bootstrap/navs"; 43 | @import "bootstrap/navbar"; 44 | @import "bootstrap/breadcrumbs"; 45 | @import "bootstrap/pagination"; 46 | @import "bootstrap/pager"; 47 | 48 | // Components: Popovers 49 | @import "bootstrap/modals"; 50 | @import "bootstrap/tooltip"; 51 | @import "bootstrap/popovers"; 52 | 53 | // Components: Misc 54 | @import "bootstrap/thumbnails"; 55 | @import "bootstrap/media"; 56 | @import "bootstrap/labels-badges"; 57 | @import "bootstrap/progress-bars"; 58 | @import "bootstrap/accordion"; 59 | @import "bootstrap/carousel"; 60 | @import "bootstrap/hero-unit"; 61 | 62 | // Utility classes 63 | @import "bootstrap/utilities"; // Has to be last to override when necessary 64 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap-transition.js: -------------------------------------------------------------------------------- 1 | /* =================================================== 2 | * bootstrap-transition.js v2.3.2 3 | * http://twitter.github.com/bootstrap/javascript.html#transitions 4 | * =================================================== 5 | * Copyright 2012 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 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) 27 | * ======================================================= */ 28 | 29 | $(function () { 30 | 31 | $.support.transition = (function () { 32 | 33 | var transitionEnd = (function () { 34 | 35 | var el = document.createElement('bootstrap') 36 | , transEndEventNames = { 37 | 'WebkitTransition' : 'webkitTransitionEnd' 38 | , 'MozTransition' : 'transitionend' 39 | , 'OTransition' : 'oTransitionEnd otransitionend' 40 | , 'transition' : 'transitionend' 41 | } 42 | , name 43 | 44 | for (name in transEndEventNames){ 45 | if (el.style[name] !== undefined) { 46 | return transEndEventNames[name] 47 | } 48 | } 49 | 50 | }()) 51 | 52 | return transitionEnd && { 53 | end: transitionEnd 54 | } 55 | 56 | })() 57 | 58 | }) 59 | 60 | }(window.jQuery); -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_tooltip.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Tooltips 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .tooltip { 8 | position: absolute; 9 | z-index: $zindexTooltip; 10 | display: block; 11 | visibility: visible; 12 | font-size: 11px; 13 | line-height: 1.4; 14 | @include opacity(0); 15 | &.in { @include opacity(80); } 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 | } 21 | 22 | // Wrapper for the tooltip content 23 | .tooltip-inner { 24 | max-width: 200px; 25 | padding: 8px; 26 | color: $tooltipColor; 27 | text-align: center; 28 | text-decoration: none; 29 | background-color: $tooltipBackground; 30 | @include border-radius($baseBorderRadius); 31 | } 32 | 33 | // Arrows 34 | .tooltip-arrow { 35 | position: absolute; 36 | width: 0; 37 | height: 0; 38 | border-color: transparent; 39 | border-style: solid; 40 | } 41 | .tooltip { 42 | &.top .tooltip-arrow { 43 | bottom: 0; 44 | left: 50%; 45 | margin-left: -$tooltipArrowWidth; 46 | border-width: $tooltipArrowWidth $tooltipArrowWidth 0; 47 | border-top-color: $tooltipArrowColor; 48 | } 49 | &.right .tooltip-arrow { 50 | top: 50%; 51 | left: 0; 52 | margin-top: -$tooltipArrowWidth; 53 | border-width: $tooltipArrowWidth $tooltipArrowWidth $tooltipArrowWidth 0; 54 | border-right-color: $tooltipArrowColor; 55 | } 56 | &.left .tooltip-arrow { 57 | top: 50%; 58 | right: 0; 59 | margin-top: -$tooltipArrowWidth; 60 | border-width: $tooltipArrowWidth 0 $tooltipArrowWidth $tooltipArrowWidth; 61 | border-left-color: $tooltipArrowColor; 62 | } 63 | &.bottom .tooltip-arrow { 64 | top: 0; 65 | left: 50%; 66 | margin-left: -$tooltipArrowWidth; 67 | border-width: 0 $tooltipArrowWidth $tooltipArrowWidth; 68 | border-bottom-color: $tooltipArrowColor; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Utility classes 3 | // -------------------------------------------------- 4 | 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 | 13 | // Hide from screenreaders and browsers 14 | // Credit: HTML5 Boilerplate 15 | .hidden { 16 | display: none; 17 | visibility: hidden; 18 | } 19 | 20 | // Visibility utilities 21 | 22 | // For desktops 23 | .visible-phone { display: none !important; } 24 | .visible-tablet { display: none !important; } 25 | .hidden-phone { } 26 | .hidden-tablet { } 27 | .hidden-desktop { display: none !important; } 28 | .visible-desktop { display: inherit !important; } 29 | 30 | // Tablets & small desktops only 31 | @media (min-width: 768px) and (max-width: 979px) { 32 | // Hide everything else 33 | .hidden-desktop { display: inherit !important; } 34 | .visible-desktop { display: none !important ; } 35 | // Show 36 | .visible-tablet { display: inherit !important; } 37 | // Hide 38 | .hidden-tablet { display: none !important; } 39 | } 40 | 41 | // Phones only 42 | @media (max-width: 767px) { 43 | // Hide everything else 44 | .hidden-desktop { display: inherit !important; } 45 | .visible-desktop { display: none !important; } 46 | // Show 47 | .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior 48 | // Hide 49 | .hidden-phone { display: none !important; } 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 | } 60 | 61 | // Clearing floats 62 | .clearfix { 63 | @include clearfix(); 64 | } 65 | 66 | // Accessible yet invisible text 67 | .hide-text { 68 | @include hide-text(); 69 | } 70 | 71 | // Uses box-sizing mixin, so must be defined here 72 | .input-block-level { 73 | @include input-block-level(); 74 | } 75 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_labels-badges.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Labels and badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base classes 7 | .label, 8 | .badge { 9 | display: inline-block; 10 | padding: 2px 4px; 11 | font-size: $baseFontSize * .846; 12 | font-weight: bold; 13 | line-height: 14px; // ensure proper line-height if floated 14 | color: $white; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-shadow: 0 -1px 0 rgba(0,0,0,.25); 18 | background-color: $grayLight; 19 | } 20 | // Set unique padding and border-radii 21 | .label { 22 | @include border-radius(3px); 23 | } 24 | .badge { 25 | padding-left: 9px; 26 | padding-right: 9px; 27 | @include border-radius(9px); 28 | } 29 | 30 | // Empty labels/badges collapse 31 | .label, 32 | .badge { 33 | &:empty { 34 | display: none; 35 | } 36 | } 37 | 38 | // Hover/focus state, but only for links 39 | a { 40 | &.label:hover, 41 | &.label:focus, 42 | &.badge:hover, 43 | &.badge:focus { 44 | color: $white; 45 | text-decoration: none; 46 | cursor: pointer; 47 | } 48 | } 49 | 50 | // Colors 51 | // Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute) 52 | @each $item in label, badge { 53 | // Important (red) 54 | .#{$item}-important { background-color: $errorText; } 55 | .#{$item}-important[href] { background-color: darken($errorText, 10%); } 56 | // Warnings (orange) 57 | .#{$item}-warning { background-color: $orange; } 58 | .#{$item}-warning[href] { background-color: darken($orange, 10%); } 59 | // Success (green) 60 | .#{$item}-success { background-color: $successText; } 61 | .#{$item}-success[href] { background-color: darken($successText, 10%); } 62 | // Info (turquoise) 63 | .#{$item}-info { background-color: $infoText; } 64 | .#{$item}-info[href] { background-color: darken($infoText, 10%); } 65 | // Inverse (black) 66 | .#{$item}-inverse { background-color: $grayDark; } 67 | .#{$item}-inverse[href] { background-color: darken($grayDark, 10%); } 68 | } 69 | 70 | // Quick fix for labels/badges in buttons 71 | .btn { 72 | .label, 73 | .badge { 74 | position: relative; 75 | top: -1px; 76 | } 77 | } 78 | .btn-mini { 79 | .label, 80 | .badge { 81 | top: 0; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_modals.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Modals 3 | // -------------------------------------------------- 4 | 5 | // Background 6 | .modal-backdrop { 7 | position: fixed; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | z-index: $zindexModalBackdrop; 13 | background-color: $black; 14 | // Fade for backdrop 15 | &.fade { opacity: 0; } 16 | } 17 | 18 | .modal-backdrop, 19 | .modal-backdrop.fade.in { 20 | @include opacity(80); 21 | } 22 | 23 | // Base modal 24 | .modal { 25 | position: fixed; 26 | top: 10%; 27 | left: 50%; 28 | z-index: $zindexModal; 29 | width: 560px; 30 | margin-left: -280px; 31 | background-color: $white; 32 | border: 1px solid #999; 33 | border: 1px solid rgba(0,0,0,.3); 34 | *border: 1px solid #999; /* IE6-7 */ 35 | @include border-radius(6px); 36 | @include box-shadow(0 3px 7px rgba(0,0,0,0.3)); 37 | @include background-clip(padding-box); 38 | // Remove focus outline from opened modal 39 | outline: none; 40 | 41 | &.fade { 42 | @include transition(opacity .3s linear, top .3s ease-out); 43 | top: -25%; 44 | } 45 | &.fade.in { top: 10%; } 46 | } 47 | .modal-header { 48 | padding: 9px 15px; 49 | border-bottom: 1px solid #eee; 50 | // Close icon 51 | .close { margin-top: 2px; } 52 | // Heading 53 | h3 { 54 | margin: 0; 55 | line-height: 30px; 56 | } 57 | } 58 | 59 | // Body (where all modal content resides) 60 | .modal-body { 61 | position: relative; 62 | overflow-y: auto; 63 | max-height: 400px; 64 | padding: 15px; 65 | } 66 | // Remove bottom margin if need be 67 | .modal-form { 68 | margin-bottom: 0; 69 | } 70 | 71 | // Footer (for actions) 72 | .modal-footer { 73 | padding: 14px 15px 15px; 74 | margin-bottom: 0; 75 | text-align: right; // right align buttons 76 | background-color: #f5f5f5; 77 | border-top: 1px solid #ddd; 78 | @include border-radius(0 0 6px 6px); 79 | @include box-shadow(inset 0 1px 0 $white); 80 | @include clearfix(); // clear it in case folks use .pull-* classes on buttons 81 | 82 | // Properly space out buttons 83 | .btn + .btn { 84 | margin-left: 5px; 85 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs 86 | } 87 | // but override that for button groups 88 | .btn-group .btn + .btn { 89 | margin-left: -1px; 90 | } 91 | // and override it for block buttons as well 92 | .btn-block + .btn-block { 93 | margin-left: 0; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap-alert.js: -------------------------------------------------------------------------------- 1 | /* ========================================================== 2 | * bootstrap-alert.js v2.3.2 3 | * http://twitter.github.com/bootstrap/javascript.html#alerts 4 | * ========================================================== 5 | * Copyright 2012 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 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* ALERT CLASS DEFINITION 27 | * ====================== */ 28 | 29 | var dismiss = '[data-dismiss="alert"]' 30 | , Alert = function (el) { 31 | $(el).on('click', dismiss, this.close) 32 | } 33 | 34 | Alert.prototype.close = function (e) { 35 | var $this = $(this) 36 | , selector = $this.attr('data-target') 37 | , $parent 38 | 39 | if (!selector) { 40 | selector = $this.attr('href') 41 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 42 | } 43 | 44 | $parent = $(selector) 45 | 46 | e && e.preventDefault() 47 | 48 | $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) 49 | 50 | $parent.trigger(e = $.Event('close')) 51 | 52 | if (e.isDefaultPrevented()) return 53 | 54 | $parent.removeClass('in') 55 | 56 | function removeElement() { 57 | $parent 58 | .trigger('closed') 59 | .remove() 60 | } 61 | 62 | $.support.transition && $parent.hasClass('fade') ? 63 | $parent.on($.support.transition.end, removeElement) : 64 | removeElement() 65 | } 66 | 67 | 68 | /* ALERT PLUGIN DEFINITION 69 | * ======================= */ 70 | 71 | var old = $.fn.alert 72 | 73 | $.fn.alert = function (option) { 74 | return this.each(function () { 75 | var $this = $(this) 76 | , data = $this.data('alert') 77 | if (!data) $this.data('alert', (data = new Alert(this))) 78 | if (typeof option == 'string') data[option].call($this) 79 | }) 80 | } 81 | 82 | $.fn.alert.Constructor = Alert 83 | 84 | 85 | /* ALERT NO CONFLICT 86 | * ================= */ 87 | 88 | $.fn.alert.noConflict = function () { 89 | $.fn.alert = old 90 | return this 91 | } 92 | 93 | 94 | /* ALERT DATA-API 95 | * ============== */ 96 | 97 | $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) 98 | 99 | }(window.jQuery); -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to bootstrap-sass 2 | 3 | ## Bugs 4 | 5 | A bug is a _demonstrable problem_ that is caused by the code in the 6 | repository. Good bug reports are extremely helpful - thank you! 7 | 8 | Guidelines for bug reports: 9 | 10 | 1. **Does it belong here?** — is this a problem with bootstrap-sass, or 11 | it an issue with [twitter/bootstrap](https://github.com/twitter/bootstrap)? 12 | We only distribute a direct port and will not modify files if they're not 13 | changed upstream. 14 | 15 | 2. **Use the GitHub issue search** — check if the issue has already been 16 | reported. 17 | 18 | 3. **Isolate the problem** — ideally create a [reduced test 19 | case](http://css-tricks.com/6263-reduced-test-cases/) and a live example. 20 | 21 | A good bug report shouldn't leave others needing to chase you up for more 22 | information. Please try to be as detailed as possible in your report. What is 23 | your environment? What steps will reproduce the issue? What browser(s) and OS 24 | experience the problem? What would you expect to be the outcome? All these 25 | details will help people to fix any potential bugs. 26 | 27 | Example: 28 | 29 | > Short and descriptive example bug report title 30 | > 31 | > A summary of the issue and the browser/OS environment in which it occurs. If 32 | > suitable, include the steps required to reproduce the bug. 33 | > 34 | > 1. This is the first step 35 | > 2. This is the second step 36 | > 3. Further steps, etc. 37 | > 38 | > `` (a link to the reduced test case) 39 | > 40 | > Any other information you want to share that is relevant to the issue being 41 | > reported. This might include the lines of code that you have identified as 42 | > causing the bug, and potential solutions (and your opinions on their 43 | > merits). 44 | 45 | **[File a bug report](https://github.com/thomas-mcdonald/bootstrap-sass/issues/)** 46 | 47 | 48 | ## Pull requests 49 | 50 | **We will not accept pull requests that modify the SCSS beyond fixing bugs caused by *our* code!** 51 | 52 | Most pull requests should go to [twitter/bootstrap](https://github.com/twitter/bootstrap) or [jlong/sass-twitter-bootstrap](https://github.com/jlong/sass-twitter-bootstrap) 53 | 54 | Good pull requests - patches, improvements, new features - are a fantastic 55 | help. They should remain focused in scope and avoid containing unrelated 56 | commits. If your contribution involves a significant amount of work or substantial 57 | changes to any part of the project, please open an issue to discuss it first. 58 | 59 | Make sure to adhere to the coding conventions used throughout a project 60 | (indentation, accurate comments, etc.). Please update any documentation that is 61 | relevant to the change you're making. 62 | 63 | ## Do not… 64 | 65 | Please **do not** use the issue tracker for personal support requests (use 66 | [Stack Overflow](http://stackoverflow.com/)). 67 | 68 | Please **do not** derail or troll issues. Keep the 69 | discussion on topic and respect the opinions of others. 70 | 71 | *props [html5-boilerplate](https://github.com/h5bp/html5-boilerplate/blob/master/CONTRIBUTING.md)* -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap-button.js: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * bootstrap-button.js v2.3.2 3 | * http://twitter.github.com/bootstrap/javascript.html#buttons 4 | * ============================================================ 5 | * Copyright 2012 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 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* BUTTON PUBLIC CLASS DEFINITION 27 | * ============================== */ 28 | 29 | var Button = function (element, options) { 30 | this.$element = $(element) 31 | this.options = $.extend({}, $.fn.button.defaults, options) 32 | } 33 | 34 | Button.prototype.setState = function (state) { 35 | var d = 'disabled' 36 | , $el = this.$element 37 | , data = $el.data() 38 | , val = $el.is('input') ? 'val' : 'html' 39 | 40 | state = state + 'Text' 41 | data.resetText || $el.data('resetText', $el[val]()) 42 | 43 | $el[val](data[state] || this.options[state]) 44 | 45 | // push to event loop to allow forms to submit 46 | setTimeout(function () { 47 | state == 'loadingText' ? 48 | $el.addClass(d).attr(d, d) : 49 | $el.removeClass(d).removeAttr(d) 50 | }, 0) 51 | } 52 | 53 | Button.prototype.toggle = function () { 54 | var $parent = this.$element.closest('[data-toggle="buttons-radio"]') 55 | 56 | $parent && $parent 57 | .find('.active') 58 | .removeClass('active') 59 | 60 | this.$element.toggleClass('active') 61 | } 62 | 63 | 64 | /* BUTTON PLUGIN DEFINITION 65 | * ======================== */ 66 | 67 | var old = $.fn.button 68 | 69 | $.fn.button = function (option) { 70 | return this.each(function () { 71 | var $this = $(this) 72 | , data = $this.data('button') 73 | , options = typeof option == 'object' && option 74 | if (!data) $this.data('button', (data = new Button(this, options))) 75 | if (option == 'toggle') data.toggle() 76 | else if (option) data.setState(option) 77 | }) 78 | } 79 | 80 | $.fn.button.defaults = { 81 | loadingText: 'loading...' 82 | } 83 | 84 | $.fn.button.Constructor = Button 85 | 86 | 87 | /* BUTTON NO CONFLICT 88 | * ================== */ 89 | 90 | $.fn.button.noConflict = function () { 91 | $.fn.button = old 92 | return this 93 | } 94 | 95 | 96 | /* BUTTON DATA-API 97 | * =============== */ 98 | 99 | $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { 100 | var $btn = $(e.target) 101 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') 102 | $btn.button('toggle') 103 | }) 104 | 105 | }(window.jQuery); -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_carousel.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Carousel 3 | // -------------------------------------------------- 4 | 5 | 6 | .carousel { 7 | position: relative; 8 | margin-bottom: $baseLineHeight; 9 | line-height: 1; 10 | } 11 | 12 | .carousel-inner { 13 | overflow: hidden; 14 | width: 100%; 15 | position: relative; 16 | } 17 | 18 | .carousel-inner { 19 | 20 | > .item { 21 | display: none; 22 | position: relative; 23 | @include transition(.6s ease-in-out left); 24 | 25 | // Account for jankitude on images 26 | > img, 27 | > a > img { 28 | display: block; 29 | line-height: 1; 30 | } 31 | } 32 | 33 | > .active, 34 | > .next, 35 | > .prev { display: block; } 36 | 37 | > .active { 38 | left: 0; 39 | } 40 | 41 | > .next, 42 | > .prev { 43 | position: absolute; 44 | top: 0; 45 | width: 100%; 46 | } 47 | 48 | > .next { 49 | left: 100%; 50 | } 51 | > .prev { 52 | left: -100%; 53 | } 54 | > .next.left, 55 | > .prev.right { 56 | left: 0; 57 | } 58 | 59 | > .active.left { 60 | left: -100%; 61 | } 62 | > .active.right { 63 | left: 100%; 64 | } 65 | 66 | } 67 | 68 | // Left/right controls for nav 69 | // --------------------------- 70 | 71 | .carousel-control { 72 | position: absolute; 73 | top: 40%; 74 | left: 15px; 75 | width: 40px; 76 | height: 40px; 77 | margin-top: -20px; 78 | font-size: 60px; 79 | font-weight: 100; 80 | line-height: 30px; 81 | color: $white; 82 | text-align: center; 83 | background: $grayDarker; 84 | border: 3px solid $white; 85 | @include border-radius(23px); 86 | @include opacity(50); 87 | 88 | // we can't have this transition here 89 | // because webkit cancels the carousel 90 | // animation if you trip this while 91 | // in the middle of another animation 92 | // ;_; 93 | // .transition(opacity .2s linear); 94 | 95 | // Reposition the right one 96 | &.right { 97 | left: auto; 98 | right: 15px; 99 | } 100 | 101 | // Hover/focus state 102 | &:hover, 103 | &:focus { 104 | color: $white; 105 | text-decoration: none; 106 | @include opacity(90); 107 | } 108 | } 109 | 110 | // Carousel indicator pips 111 | // ----------------------------- 112 | .carousel-indicators { 113 | position: absolute; 114 | bottom: 15px; 115 | right: 15px; 116 | z-index: 5; 117 | margin: 0; 118 | list-style: none; 119 | 120 | li { 121 | display: block; 122 | float: left; 123 | width: 10px; 124 | height: 10px; 125 | margin-left: 5px; 126 | text-indent: -999px; 127 | background-color: #ccc; 128 | background-color: rgba(255,255,255,.25); 129 | border-radius: 5px; 130 | } 131 | .active { 132 | background-color: #fff; 133 | } 134 | } 135 | 136 | // Caption for text below images 137 | // ----------------------------- 138 | 139 | .carousel-caption { 140 | position: absolute; 141 | left: 0; 142 | right: 0; 143 | bottom: 0; 144 | padding: 15px; 145 | background: $grayDark; 146 | background: rgba(0,0,0,.75); 147 | } 148 | .carousel-caption h4, 149 | .carousel-caption p { 150 | color: $white; 151 | line-height: $baseLineHeight; 152 | } 153 | .carousel-caption h4 { 154 | margin: 0 0 5px; 155 | } 156 | .carousel-caption p { 157 | margin-bottom: 0; 158 | } 159 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_pagination.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Pagination (multiple pages) 3 | // -------------------------------------------------- 4 | 5 | // Space out pagination from surrounding content 6 | .pagination { 7 | margin: $baseLineHeight 0; 8 | } 9 | 10 | .pagination ul { 11 | // Allow for text-based alignment 12 | display: inline-block; 13 | @include ie7-inline-block(); 14 | // Reset default ul styles 15 | margin-left: 0; 16 | margin-bottom: 0; 17 | // Visuals 18 | @include border-radius($baseBorderRadius); 19 | @include box-shadow(0 1px 2px rgba(0,0,0,.05)); 20 | } 21 | .pagination ul > li { 22 | display: inline; // Remove list-style and block-level defaults 23 | } 24 | .pagination ul > li > a, 25 | .pagination ul > li > span { 26 | float: left; // Collapse white-space 27 | padding: 4px 12px; 28 | line-height: $baseLineHeight; 29 | text-decoration: none; 30 | background-color: $paginationBackground; 31 | border: 1px solid $paginationBorder; 32 | border-left-width: 0; 33 | } 34 | .pagination ul > li > a:hover, 35 | .pagination ul > li > a:focus, 36 | .pagination ul > .active > a, 37 | .pagination ul > .active > span { 38 | background-color: $paginationActiveBackground; 39 | } 40 | .pagination ul > .active > a, 41 | .pagination ul > .active > span { 42 | color: $grayLight; 43 | cursor: default; 44 | } 45 | .pagination ul > .disabled > span, 46 | .pagination ul > .disabled > a, 47 | .pagination ul > .disabled > a:hover, 48 | .pagination ul > .disabled > a:focus { 49 | color: $grayLight; 50 | background-color: transparent; 51 | cursor: default; 52 | } 53 | .pagination ul > li:first-child > a, 54 | .pagination ul > li:first-child > span { 55 | border-left-width: 1px; 56 | @include border-left-radius($baseBorderRadius); 57 | } 58 | .pagination ul > li:last-child > a, 59 | .pagination ul > li:last-child > span { 60 | @include border-right-radius($baseBorderRadius); 61 | } 62 | 63 | 64 | // Alignment 65 | // -------------------------------------------------- 66 | 67 | .pagination-centered { 68 | text-align: center; 69 | } 70 | .pagination-right { 71 | text-align: right; 72 | } 73 | 74 | 75 | // Sizing 76 | // -------------------------------------------------- 77 | 78 | // Large 79 | .pagination-large { 80 | ul > li > a, 81 | ul > li > span { 82 | padding: $paddingLarge; 83 | font-size: $fontSizeLarge; 84 | } 85 | ul > li:first-child > a, 86 | ul > li:first-child > span { 87 | @include border-left-radius($borderRadiusLarge); 88 | } 89 | ul > li:last-child > a, 90 | ul > li:last-child > span { 91 | @include border-right-radius($borderRadiusLarge); 92 | } 93 | } 94 | 95 | // Small and mini 96 | .pagination-mini, 97 | .pagination-small { 98 | ul > li:first-child > a, 99 | ul > li:first-child > span { 100 | @include border-left-radius($borderRadiusSmall); 101 | } 102 | ul > li:last-child > a, 103 | ul > li:last-child > span { 104 | @include border-right-radius($borderRadiusSmall); 105 | } 106 | } 107 | 108 | // Small 109 | .pagination-small { 110 | ul > li > a, 111 | ul > li > span { 112 | padding: $paddingSmall; 113 | font-size: $fontSizeSmall; 114 | } 115 | } 116 | // Mini 117 | .pagination-mini { 118 | ul > li > a, 119 | ul > li > span { 120 | padding: $paddingMini; 121 | font-size: $fontSizeMini; 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_progress-bars.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Progress bars 3 | // -------------------------------------------------- 4 | 5 | 6 | // ANIMATIONS 7 | // ---------- 8 | 9 | // Webkit 10 | @-webkit-keyframes progress-bar-stripes { 11 | from { background-position: 40px 0; } 12 | to { background-position: 0 0; } 13 | } 14 | 15 | // Firefox 16 | @-moz-keyframes progress-bar-stripes { 17 | from { background-position: 40px 0; } 18 | to { background-position: 0 0; } 19 | } 20 | 21 | // IE9 22 | @-ms-keyframes progress-bar-stripes { 23 | from { background-position: 40px 0; } 24 | to { background-position: 0 0; } 25 | } 26 | 27 | // Opera 28 | @-o-keyframes progress-bar-stripes { 29 | from { background-position: 0 0; } 30 | to { background-position: 40px 0; } 31 | } 32 | 33 | // Spec 34 | @keyframes progress-bar-stripes { 35 | from { background-position: 40px 0; } 36 | to { background-position: 0 0; } 37 | } 38 | 39 | 40 | 41 | // THE BARS 42 | // -------- 43 | 44 | // Outer container 45 | .progress { 46 | overflow: hidden; 47 | height: $baseLineHeight; 48 | margin-bottom: $baseLineHeight; 49 | @include gradient-vertical(#f5f5f5, #f9f9f9); 50 | @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 51 | @include border-radius($baseBorderRadius); 52 | } 53 | 54 | // Bar of progress 55 | .progress .bar { 56 | width: 0%; 57 | height: 100%; 58 | color: $white; 59 | float: left; 60 | font-size: 12px; 61 | text-align: center; 62 | text-shadow: 0 -1px 0 rgba(0,0,0,.25); 63 | @include gradient-vertical(#149bdf, #0480be); 64 | @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 65 | @include box-sizing(border-box); 66 | @include transition(width .6s ease); 67 | } 68 | .progress .bar + .bar { 69 | @include box-shadow(inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)); 70 | } 71 | 72 | // Striped bars 73 | .progress-striped .bar { 74 | @include gradient-striped(#149bdf); 75 | @include background-size(40px 40px); 76 | } 77 | 78 | // Call animation for the active one 79 | .progress.active .bar { 80 | -webkit-animation: progress-bar-stripes 2s linear infinite; 81 | -moz-animation: progress-bar-stripes 2s linear infinite; 82 | -ms-animation: progress-bar-stripes 2s linear infinite; 83 | -o-animation: progress-bar-stripes 2s linear infinite; 84 | animation: progress-bar-stripes 2s linear infinite; 85 | } 86 | 87 | 88 | 89 | // COLORS 90 | // ------ 91 | 92 | // Danger (red) 93 | .progress-danger .bar, .progress .bar-danger { 94 | @include gradient-vertical(#ee5f5b, #c43c35); 95 | } 96 | .progress-danger.progress-striped .bar, .progress-striped .bar-danger { 97 | @include gradient-striped(#ee5f5b); 98 | } 99 | 100 | // Success (green) 101 | .progress-success .bar, .progress .bar-success { 102 | @include gradient-vertical(#62c462, #57a957); 103 | } 104 | .progress-success.progress-striped .bar, .progress-striped .bar-success { 105 | @include gradient-striped(#62c462); 106 | } 107 | 108 | // Info (teal) 109 | .progress-info .bar, .progress .bar-info { 110 | @include gradient-vertical(#5bc0de, #339bb9); 111 | } 112 | .progress-info.progress-striped .bar, .progress-striped .bar-info { 113 | @include gradient-striped(#5bc0de); 114 | } 115 | 116 | // Warning (orange) 117 | .progress-warning .bar, .progress .bar-warning { 118 | @include gradient-vertical(lighten($orange, 15%), $orange); 119 | } 120 | .progress-warning.progress-striped .bar, .progress-striped .bar-warning { 121 | @include gradient-striped(lighten($orange, 15%)); 122 | } 123 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap-popover.js: -------------------------------------------------------------------------------- 1 | /* =========================================================== 2 | * bootstrap-popover.js v2.3.2 3 | * http://twitter.github.com/bootstrap/javascript.html#popovers 4 | * =========================================================== 5 | * Copyright 2012 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 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* POPOVER PUBLIC CLASS DEFINITION 27 | * =============================== */ 28 | 29 | var Popover = function (element, options) { 30 | this.init('popover', element, options) 31 | } 32 | 33 | 34 | /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js 35 | ========================================== */ 36 | 37 | Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, { 38 | 39 | constructor: Popover 40 | 41 | , setContent: function () { 42 | var $tip = this.tip() 43 | , title = this.getTitle() 44 | , content = this.getContent() 45 | 46 | $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) 47 | $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content) 48 | 49 | $tip.removeClass('fade top bottom left right in') 50 | } 51 | 52 | , hasContent: function () { 53 | return this.getTitle() || this.getContent() 54 | } 55 | 56 | , getContent: function () { 57 | var content 58 | , $e = this.$element 59 | , o = this.options 60 | 61 | content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) 62 | || $e.attr('data-content') 63 | 64 | return content 65 | } 66 | 67 | , tip: function () { 68 | if (!this.$tip) { 69 | this.$tip = $(this.options.template) 70 | } 71 | return this.$tip 72 | } 73 | 74 | , destroy: function () { 75 | this.hide().$element.off('.' + this.type).removeData(this.type) 76 | } 77 | 78 | }) 79 | 80 | 81 | /* POPOVER PLUGIN DEFINITION 82 | * ======================= */ 83 | 84 | var old = $.fn.popover 85 | 86 | $.fn.popover = function (option) { 87 | return this.each(function () { 88 | var $this = $(this) 89 | , data = $this.data('popover') 90 | , options = typeof option == 'object' && option 91 | if (!data) $this.data('popover', (data = new Popover(this, options))) 92 | if (typeof option == 'string') data[option]() 93 | }) 94 | } 95 | 96 | $.fn.popover.Constructor = Popover 97 | 98 | $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, { 99 | placement: 'right' 100 | , trigger: 'click' 101 | , content: '' 102 | , template: '

' 103 | }) 104 | 105 | 106 | /* POPOVER NO CONFLICT 107 | * =================== */ 108 | 109 | $.fn.popover.noConflict = function () { 110 | $.fn.popover = old 111 | return this 112 | } 113 | 114 | }(window.jQuery); 115 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_popovers.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Popovers 3 | // -------------------------------------------------- 4 | 5 | 6 | .popover { 7 | position: absolute; 8 | top: 0; 9 | left: 0; 10 | z-index: $zindexPopover; 11 | display: none; 12 | max-width: 276px; 13 | padding: 1px; 14 | text-align: left; // Reset given new insertion method 15 | background-color: $popoverBackground; 16 | -webkit-background-clip: padding-box; 17 | -moz-background-clip: padding; 18 | background-clip: padding-box; 19 | border: 1px solid #ccc; 20 | border: 1px solid rgba(0,0,0,.2); 21 | @include border-radius(6px); 22 | @include box-shadow(0 5px 10px rgba(0,0,0,.2)); 23 | 24 | // Overrides for proper insertion 25 | white-space: normal; 26 | 27 | // Offset the popover to account for the popover arrow 28 | &.top { margin-top: -10px; } 29 | &.right { margin-left: 10px; } 30 | &.bottom { margin-top: 10px; } 31 | &.left { margin-left: -10px; } 32 | } 33 | 34 | .popover-title { 35 | margin: 0; // reset heading margin 36 | padding: 8px 14px; 37 | font-size: 14px; 38 | font-weight: normal; 39 | line-height: 18px; 40 | background-color: $popoverTitleBackground; 41 | border-bottom: 1px solid darken($popoverTitleBackground, 5%); 42 | @include border-radius(5px 5px 0 0); 43 | 44 | &:empty { 45 | display: none; 46 | } 47 | } 48 | 49 | .popover-content { 50 | padding: 9px 14px; 51 | } 52 | 53 | // Arrows 54 | // 55 | // .arrow is outer, .arrow:after is inner 56 | 57 | .popover .arrow, 58 | .popover .arrow:after { 59 | position: absolute; 60 | display: block; 61 | width: 0; 62 | height: 0; 63 | border-color: transparent; 64 | border-style: solid; 65 | } 66 | .popover .arrow { 67 | border-width: $popoverArrowOuterWidth; 68 | } 69 | .popover .arrow:after { 70 | border-width: $popoverArrowWidth; 71 | content: ""; 72 | } 73 | 74 | .popover { 75 | &.top .arrow { 76 | left: 50%; 77 | margin-left: -$popoverArrowOuterWidth; 78 | border-bottom-width: 0; 79 | border-top-color: #999; // IE8 fallback 80 | border-top-color: $popoverArrowOuterColor; 81 | bottom: -$popoverArrowOuterWidth; 82 | &:after { 83 | bottom: 1px; 84 | margin-left: -$popoverArrowWidth; 85 | border-bottom-width: 0; 86 | border-top-color: $popoverArrowColor; 87 | } 88 | } 89 | &.right .arrow { 90 | top: 50%; 91 | left: -$popoverArrowOuterWidth; 92 | margin-top: -$popoverArrowOuterWidth; 93 | border-left-width: 0; 94 | border-right-color: #999; // IE8 fallback 95 | border-right-color: $popoverArrowOuterColor; 96 | &:after { 97 | left: 1px; 98 | bottom: -$popoverArrowWidth; 99 | border-left-width: 0; 100 | border-right-color: $popoverArrowColor; 101 | } 102 | } 103 | &.bottom .arrow { 104 | left: 50%; 105 | margin-left: -$popoverArrowOuterWidth; 106 | border-top-width: 0; 107 | border-bottom-color: #999; // IE8 fallback 108 | border-bottom-color: $popoverArrowOuterColor; 109 | top: -$popoverArrowOuterWidth; 110 | &:after { 111 | top: 1px; 112 | margin-left: -$popoverArrowWidth; 113 | border-top-width: 0; 114 | border-bottom-color: $popoverArrowColor; 115 | } 116 | } 117 | 118 | &.left .arrow { 119 | top: 50%; 120 | right: -$popoverArrowOuterWidth; 121 | margin-top: -$popoverArrowOuterWidth; 122 | border-right-width: 0; 123 | border-left-color: #999; // IE8 fallback 124 | border-left-color: $popoverArrowOuterColor; 125 | &:after { 126 | right: 1px; 127 | border-right-width: 0; 128 | border-left-color: $popoverArrowColor; 129 | bottom: -$popoverArrowWidth; 130 | } 131 | } 132 | 133 | } 134 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 2.3.2.0 4 | 5 | * Update to Bootstrap 2.3.2 - *Dan Allen* 6 | 7 | ## 2.3.1.3 8 | 9 | * Find the correct Sprockets context for the `image_path` function - *Tristan Harward, Gleb Mazovetskiy* 10 | 11 | ## 2.3.1.2 12 | 13 | * Fix changes to image url - *Gleb Mazovetskiy* 14 | * Copy _variables into project on Compass install - *Phil Thompson* 15 | * Add `bootstrap-affix` to the Compass template file - *brief* 16 | 17 | ## 2.3.1.1 (yanked) 18 | 19 | * Change how image_url is handled internally - *Tristan Harward* 20 | * Fix some font variables not having `!default` - *Thomas McDonald* 21 | 22 | ## 2.3.0.0 23 | * [#290] Update to Bootstrap 2.3.0 - *Tristan Harward* 24 | * Fix `rake:debug` with new file locations - *Thomas McDonald* 25 | * Add draft contributing document - *Thomas McDonald* 26 | * [#260] Add our load path to the global Sass load path - *Tristan Harward* 27 | * [#275] Use GitHub notation in Sass head testing gemfile - *Timo Schilling* 28 | * [#279, #283] Readme improvements - *theverything, Philip Arndt* 29 | 30 | ## 2.2.2.0 31 | * [#270] Update to Bootstrap 2.2.2 - *Tristan Harward* 32 | * [#266] Add license to gemspec - *Peter Marsh* 33 | 34 | ## 2.2.1.1 35 | * [#258] Use `bootstrap` prefix for `@import`ing files in `bootstrap/bootstrap.scss` - *Umair Siddique* 36 | 37 | ## 2.2.1.0 38 | * [#246] Update to Bootstrap 2.2.1 - *Tristan Harward* 39 | * [#246] Pull Bootstrap updates from jlong/sass-twitter-bootstrap - *Tristan Harward* 40 | 41 | ## 2.1.1.0 42 | * Update to Bootstrap 2.1.1 43 | * [#222] Remove 100% multiplier in vertical-three-colours 44 | * [#227] Fix IE component animation collapse 45 | * [#228] Fix variables documentation link 46 | * [#231] Made .input-block-level a class as well as mixin 47 | 48 | ## 2.1.0.1 49 | * [#219] Fix expected a color. Got: transparent. 50 | * [#207] Add missing warning style for table row highlighting 51 | * [#208] Use grid-input-span for input spans 52 | 53 | ## 2.1.0.0 54 | * Updated to Bootstrap 2.1 55 | * Changed some mixin names to be more consistent. Nested mixins in Less are separated by a `-` when they are flattened in Sass. 56 | 57 | ## 2.0.4.1 58 | * Fix `.row-fluid > spanX` nesting 59 | * Small Javascript fixes for those staying on the 2.0.4 release 60 | * Add `!default` to z-index variables. 61 | 62 | ## 2.0.4.0 63 | * Updated to Bootstrap 2.0.4 64 | * Switched to Bootstrap 2.0.3+'s method of separating responsive files 65 | * [#149, #150] Fix off by one error introduced with manual revert of media query breakpoints 66 | * `rake debug` and `rake test` both compile bootstrap & bootstrap-responsive 67 | 68 | ## 2.0.3.1 69 | * [#145, #146] Fix button alignment in collapsing navbar as a result of an incorrect variable 70 | 71 | ## 2.0.3 72 | * Updated to Bootstrap 2.0.3 73 | * [#106] Support for Rails < 3.1 through Compass 74 | * [#132] Add CI testing 75 | * [#106] Support Rails w/Compass 76 | * [#134] Fix support for Rails w/Compass 77 | 78 | ## 2.0.2 79 | * [#86] Updated to Bootstrap 2.0.2 80 | Things of note: static navbars now have full width. (to be fixed in 2.0.3) `.navbar-inner > .container { width:940px; }` seems to work in the meanwhile 81 | * [#62] Fixed asset compilation taking a *very* long time. 82 | * [#69, #79, #80] \(Hopefully) clarified README. Now with less cat humour. 83 | * [#91] Removed doubled up Sass extensions for Rails. 84 | * [#63, #73] Allow for overriding of image-path 85 | * [[SO](http://stackoverflow.com/a/9909626/241212)] Added makeFluidColumn mixin for defining fluid columns. Fluid rows must use `@extend .row-fluid`, and any column inside it can use `@include makeFluidColumn(num)`, where `num` is the number of columns. Unfortunately, there is a rather major limitation to this: margins on first-child elements must be overriden. See the attached Stack Overflow answer for more information. 86 | 87 | ## 2.0.1 88 | * Updated to Bootstrap 2.0.1 89 | * Modified `@mixin opacity()` to take an argument `0...1` rather than `0...100` to be consistent with Compass. 90 | 91 | ## 2.0.0 92 | * Updated to Bootstrap 2.0.0 93 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap-affix.js: -------------------------------------------------------------------------------- 1 | /* ========================================================== 2 | * bootstrap-affix.js v2.3.2 3 | * http://twitter.github.com/bootstrap/javascript.html#affix 4 | * ========================================================== 5 | * Copyright 2012 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 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* AFFIX CLASS DEFINITION 27 | * ====================== */ 28 | 29 | var Affix = function (element, options) { 30 | this.options = $.extend({}, $.fn.affix.defaults, options) 31 | this.$window = $(window) 32 | .on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) 33 | .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this)) 34 | this.$element = $(element) 35 | this.checkPosition() 36 | } 37 | 38 | Affix.prototype.checkPosition = function () { 39 | if (!this.$element.is(':visible')) return 40 | 41 | var scrollHeight = $(document).height() 42 | , scrollTop = this.$window.scrollTop() 43 | , position = this.$element.offset() 44 | , offset = this.options.offset 45 | , offsetBottom = offset.bottom 46 | , offsetTop = offset.top 47 | , reset = 'affix affix-top affix-bottom' 48 | , affix 49 | 50 | if (typeof offset != 'object') offsetBottom = offsetTop = offset 51 | if (typeof offsetTop == 'function') offsetTop = offset.top() 52 | if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() 53 | 54 | affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? 55 | false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 56 | 'bottom' : offsetTop != null && scrollTop <= offsetTop ? 57 | 'top' : false 58 | 59 | if (this.affixed === affix) return 60 | 61 | this.affixed = affix 62 | this.unpin = affix == 'bottom' ? position.top - scrollTop : null 63 | 64 | this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) 65 | } 66 | 67 | 68 | /* AFFIX PLUGIN DEFINITION 69 | * ======================= */ 70 | 71 | var old = $.fn.affix 72 | 73 | $.fn.affix = function (option) { 74 | return this.each(function () { 75 | var $this = $(this) 76 | , data = $this.data('affix') 77 | , options = typeof option == 'object' && option 78 | if (!data) $this.data('affix', (data = new Affix(this, options))) 79 | if (typeof option == 'string') data[option]() 80 | }) 81 | } 82 | 83 | $.fn.affix.Constructor = Affix 84 | 85 | $.fn.affix.defaults = { 86 | offset: 0 87 | } 88 | 89 | 90 | /* AFFIX NO CONFLICT 91 | * ================= */ 92 | 93 | $.fn.affix.noConflict = function () { 94 | $.fn.affix = old 95 | return this 96 | } 97 | 98 | 99 | /* AFFIX DATA-API 100 | * ============== */ 101 | 102 | $(window).on('load', function () { 103 | $('[data-spy="affix"]').each(function () { 104 | var $spy = $(this) 105 | , data = $spy.data() 106 | 107 | data.offset = data.offset || {} 108 | 109 | data.offsetBottom && (data.offset.bottom = data.offsetBottom) 110 | data.offsetTop && (data.offset.top = data.offsetTop) 111 | 112 | $spy.affix(data) 113 | }) 114 | }) 115 | 116 | 117 | }(window.jQuery); -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap-tab.js: -------------------------------------------------------------------------------- 1 | /* ======================================================== 2 | * bootstrap-tab.js v2.3.2 3 | * http://twitter.github.com/bootstrap/javascript.html#tabs 4 | * ======================================================== 5 | * Copyright 2012 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 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* TAB CLASS DEFINITION 27 | * ==================== */ 28 | 29 | var Tab = function (element) { 30 | this.element = $(element) 31 | } 32 | 33 | Tab.prototype = { 34 | 35 | constructor: Tab 36 | 37 | , show: function () { 38 | var $this = this.element 39 | , $ul = $this.closest('ul:not(.dropdown-menu)') 40 | , selector = $this.attr('data-target') 41 | , previous 42 | , $target 43 | , e 44 | 45 | if (!selector) { 46 | selector = $this.attr('href') 47 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 48 | } 49 | 50 | if ( $this.parent('li').hasClass('active') ) return 51 | 52 | previous = $ul.find('.active:last a')[0] 53 | 54 | e = $.Event('show', { 55 | relatedTarget: previous 56 | }) 57 | 58 | $this.trigger(e) 59 | 60 | if (e.isDefaultPrevented()) return 61 | 62 | $target = $(selector) 63 | 64 | this.activate($this.parent('li'), $ul) 65 | this.activate($target, $target.parent(), function () { 66 | $this.trigger({ 67 | type: 'shown' 68 | , relatedTarget: previous 69 | }) 70 | }) 71 | } 72 | 73 | , activate: function ( element, container, callback) { 74 | var $active = container.find('> .active') 75 | , transition = callback 76 | && $.support.transition 77 | && $active.hasClass('fade') 78 | 79 | function next() { 80 | $active 81 | .removeClass('active') 82 | .find('> .dropdown-menu > .active') 83 | .removeClass('active') 84 | 85 | element.addClass('active') 86 | 87 | if (transition) { 88 | element[0].offsetWidth // reflow for transition 89 | element.addClass('in') 90 | } else { 91 | element.removeClass('fade') 92 | } 93 | 94 | if ( element.parent('.dropdown-menu') ) { 95 | element.closest('li.dropdown').addClass('active') 96 | } 97 | 98 | callback && callback() 99 | } 100 | 101 | transition ? 102 | $active.one($.support.transition.end, next) : 103 | next() 104 | 105 | $active.removeClass('in') 106 | } 107 | } 108 | 109 | 110 | /* TAB PLUGIN DEFINITION 111 | * ===================== */ 112 | 113 | var old = $.fn.tab 114 | 115 | $.fn.tab = function ( option ) { 116 | return this.each(function () { 117 | var $this = $(this) 118 | , data = $this.data('tab') 119 | if (!data) $this.data('tab', (data = new Tab(this))) 120 | if (typeof option == 'string') data[option]() 121 | }) 122 | } 123 | 124 | $.fn.tab.Constructor = Tab 125 | 126 | 127 | /* TAB NO CONFLICT 128 | * =============== */ 129 | 130 | $.fn.tab.noConflict = function () { 131 | $.fn.tab = old 132 | return this 133 | } 134 | 135 | 136 | /* TAB DATA-API 137 | * ============ */ 138 | 139 | $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { 140 | e.preventDefault() 141 | $(this).tab('show') 142 | }) 143 | 144 | }(window.jQuery); -------------------------------------------------------------------------------- /vendor/assets/stylesheets/bootstrap/_responsive-767px-max.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Landscape phone to desktop/tablet 3 | // -------------------------------------------------- 4 | 5 | 6 | @media (max-width: 767px) { 7 | 8 | // Padding to set content in a bit 9 | body { 10 | padding-left: 20px; 11 | padding-right: 20px; 12 | } 13 | // Negative indent the now static "fixed" navbar 14 | .navbar-fixed-top, 15 | .navbar-fixed-bottom, 16 | .navbar-static-top { 17 | margin-left: -20px; 18 | margin-right: -20px; 19 | } 20 | // Remove padding on container given explicit padding set on body 21 | .container-fluid { 22 | padding: 0; 23 | } 24 | 25 | // TYPOGRAPHY 26 | // ---------- 27 | // Reset horizontal dl 28 | .dl-horizontal { 29 | dt { 30 | float: none; 31 | clear: none; 32 | width: auto; 33 | text-align: left; 34 | } 35 | dd { 36 | margin-left: 0; 37 | } 38 | } 39 | 40 | // GRID & CONTAINERS 41 | // ----------------- 42 | // Remove width from containers 43 | .container { 44 | width: auto; 45 | } 46 | // Fluid rows 47 | .row-fluid { 48 | width: 100%; 49 | } 50 | // Undo negative margin on rows and thumbnails 51 | .row, 52 | .thumbnails { 53 | margin-left: 0; 54 | } 55 | .thumbnails > li { 56 | float: none; 57 | margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present 58 | } 59 | // Make all grid-sized elements block level again 60 | [class*="span"], 61 | .uneditable-input[class*="span"], // Makes uneditable inputs full-width when using grid sizing 62 | .row-fluid [class*="span"] { 63 | float: none; 64 | display: block; 65 | width: 100%; 66 | margin-left: 0; 67 | @include box-sizing(border-box); 68 | } 69 | .span12, 70 | .row-fluid .span12 { 71 | width: 100%; 72 | @include box-sizing(border-box); 73 | } 74 | .row-fluid [class*="offset"]:first-child { 75 | margin-left: 0; 76 | } 77 | 78 | // FORM FIELDS 79 | // ----------- 80 | // Make span* classes full width 81 | .input-large, 82 | .input-xlarge, 83 | .input-xxlarge, 84 | input[class*="span"], 85 | select[class*="span"], 86 | textarea[class*="span"], 87 | .uneditable-input { 88 | @include input-block-level(); 89 | } 90 | // But don't let it screw up prepend/append inputs 91 | .input-prepend input, 92 | .input-append input, 93 | .input-prepend input[class*="span"], 94 | .input-append input[class*="span"] { 95 | display: inline-block; // redeclare so they don't wrap to new lines 96 | width: auto; 97 | } 98 | .controls-row [class*="span"] + [class*="span"] { 99 | margin-left: 0; 100 | } 101 | 102 | // Modals 103 | .modal { 104 | position: fixed; 105 | top: 20px; 106 | left: 20px; 107 | right: 20px; 108 | width: auto; 109 | margin: 0; 110 | &.fade { top: -100px; } 111 | &.fade.in { top: 20px; } 112 | } 113 | 114 | } 115 | 116 | 117 | 118 | // UP TO LANDSCAPE PHONE 119 | // --------------------- 120 | 121 | @media (max-width: 480px) { 122 | 123 | // Smooth out the collapsing/expanding nav 124 | .nav-collapse { 125 | -webkit-transform: translate3d(0, 0, 0); // activate the GPU 126 | } 127 | 128 | // Block level the page header small tag for readability 129 | .page-header h1 small { 130 | display: block; 131 | line-height: $baseLineHeight; 132 | } 133 | 134 | // Update checkboxes for iOS 135 | input[type="checkbox"], 136 | input[type="radio"] { 137 | border: 1px solid #ccc; 138 | } 139 | 140 | // Remove the horizontal form styles 141 | .form-horizontal { 142 | .control-label { 143 | float: none; 144 | width: auto; 145 | padding-top: 0; 146 | text-align: left; 147 | } 148 | // Move over all input controls and content 149 | .controls { 150 | margin-left: 0; 151 | } 152 | // Move the options list down to align with labels 153 | .control-list { 154 | padding-top: 0; // has to be padding because margin collaspes 155 | } 156 | // Move over buttons in .form-actions to align with .controls 157 | .form-actions { 158 | padding-left: 10px; 159 | padding-right: 10px; 160 | } 161 | } 162 | 163 | // Medias 164 | // Reset float and spacing to stack 165 | .media .pull-left, 166 | .media .pull-right { 167 | float: none; 168 | display: block; 169 | margin-bottom: 10px; 170 | } 171 | // Remove side margins since we stack instead of indent 172 | .media-object { 173 | margin-right: 0; 174 | margin-left: 0; 175 | } 176 | 177 | // Modals 178 | .modal { 179 | top: 10px; 180 | left: 10px; 181 | right: 10px; 182 | } 183 | .modal-header .close { 184 | padding: 10px; 185 | margin: -10px; 186 | } 187 | 188 | // Carousel 189 | .carousel-caption { 190 | position: static; 191 | } 192 | 193 | } 194 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/bootstrap-dropdown.js: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * bootstrap-dropdown.js v2.3.2 3 | * http://twitter.github.com/bootstrap/javascript.html#dropdowns 4 | * ============================================================ 5 | * Copyright 2012 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 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* DROPDOWN CLASS DEFINITION 27 | * ========================= */ 28 | 29 | var toggle = '[data-toggle=dropdown]' 30 | , Dropdown = function (element) { 31 | var $el = $(element).on('click.dropdown.data-api', this.toggle) 32 | $('html').on('click.dropdown.data-api', function () { 33 | $el.parent().removeClass('open') 34 | }) 35 | } 36 | 37 | Dropdown.prototype = { 38 | 39 | constructor: Dropdown 40 | 41 | , toggle: function (e) { 42 | var $this = $(this) 43 | , $parent 44 | , isActive 45 | 46 | if ($this.is('.disabled, :disabled')) return 47 | 48 | $parent = getParent($this) 49 | 50 | isActive = $parent.hasClass('open') 51 | 52 | clearMenus() 53 | 54 | if (!isActive) { 55 | if ('ontouchstart' in document.documentElement) { 56 | // if mobile we we use a backdrop because click events don't delegate 57 | $('