├── .gitignore
├── Gemfile
├── README.md
├── Rakefile
├── bootstrap-rails.gemspec
├── lib
├── bootstrap-rails.rb
├── bootstrap-rails
│ ├── breadcrumb.rb
│ ├── engine.rb
│ ├── helper.rb
│ ├── railtie.rb
│ └── version.rb
└── bootstrap
│ └── rails.rb
└── vendor
├── assets
├── javascripts
│ ├── bootstrap-alerts.js
│ ├── bootstrap-buttons.js
│ ├── bootstrap-dropdown.js
│ ├── bootstrap-modal.js
│ ├── bootstrap-popover.js
│ ├── bootstrap-scrollspy.js
│ ├── bootstrap-tabs.js
│ ├── bootstrap-twipsy.js
│ └── bootstrap.js
└── stylesheets
│ ├── bootstrap.scss
│ ├── forms.scss
│ ├── mixins.scss
│ ├── patterns.scss
│ ├── reset.scss
│ ├── scaffolding.scss
│ ├── tables.scss
│ ├── type.scss
│ └── variables.scss
└── twitter
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── bootstrap.css
├── bootstrap.min.css
├── docs
├── assets
│ ├── css
│ │ └── docs.css
│ ├── ico
│ │ ├── bootstrap-apple-114x114.png
│ │ ├── bootstrap-apple-57x57.png
│ │ ├── bootstrap-apple-72x72.png
│ │ └── favicon.ico
│ ├── img
│ │ ├── bird.png
│ │ ├── browsers.png
│ │ ├── example-diagram-01.png
│ │ ├── example-diagram-02.png
│ │ ├── example-diagram-03.png
│ │ ├── grid-18px.png
│ │ └── twitter-logo-no-bird.png
│ └── js
│ │ ├── application.js
│ │ └── google-code-prettify
│ │ ├── prettify.css
│ │ └── prettify.js
├── index.html
└── javascript.html
├── examples
├── container-app.html
├── fluid.html
└── hero.html
├── js
├── bootstrap-alerts.js
├── bootstrap-dropdown.js
├── bootstrap-modal.js
├── bootstrap-popover.js
├── bootstrap-scrollspy.js
├── bootstrap-tabs.js
├── bootstrap-twipsy.js
└── tests
│ ├── index.html
│ ├── unit
│ ├── bootstrap-alerts.js
│ ├── bootstrap-dropdown.js
│ ├── bootstrap-modal.js
│ ├── bootstrap-popover.js
│ ├── bootstrap-scrollspy.js
│ ├── bootstrap-tabs.js
│ └── bootstrap-twipsy.js
│ └── vendor
│ ├── qunit.css
│ └── qunit.js
└── lib
├── bootstrap.scss
├── forms.scss
├── mixins.scss
├── patterns.scss
├── reset.scss
├── scaffolding.scss
├── tables.scss
├── type.scss
└── variables.scss
/.gitignore:
--------------------------------------------------------------------------------
1 | *.gem
2 | *.rbc
3 | .bundle
4 | .config
5 | .yardoc
6 | Gemfile.lock
7 | InstalledFiles
8 | _yardoc
9 | coverage
10 | doc/
11 | lib/bundler/man
12 | pkg
13 | rdoc
14 | spec/reports
15 | test/tmp
16 | test/version_tmp
17 | tmp
18 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'http://rubygems.org'
2 |
3 | # Specify your gem's dependencies in bootstrap-rails.gemspec
4 | gemspec
5 |
6 | gem "simple_form", :require => "simple_form"
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Twitter Bootstrap for Rails 3
2 | Bootstrap is a toolkit from Twitter designed to kickstart development of webapps and sites.
3 | It includes base CSS and HTML for typography, forms, buttons, tables, grids, navigation, and more.
4 |
5 |
6 |
7 | anjlab-bootstrap-rails project integrates Bootstrap CSS (with SASS flavour) and JS toolkits for Rails 3 projects
8 |
9 | ## Rails 3.1
10 | Include Bootstrap in Gemfile;
11 |
12 | ``` ruby
13 | gem 'simple_form'
14 | gem 'bootstrap-rails', :require => 'bootstrap-rails',
15 | :git => 'git://github.com/xdite/bootstrap-rails.git'
16 | ```
17 |
18 | and run bundle install.
19 |
20 | ## Stylesheets
21 |
22 | Add necessary stylesheet file to app/assets/stylesheets/application.css
23 |
24 | ``` css
25 | *= require bootstrap
26 | ```
27 |
28 | You can override boostrapr variables:
29 |
30 | ``` csss
31 | // Create app/assets/stylesheets/bootstrap.scss
32 | // CSS Reset
33 | @import "reset.scss";
34 |
35 | // Core variables and mixins
36 | @import "variables.scss"; // Modify this for custom colors, font-sizes, etc
37 |
38 | $linkColor: red; // Make all links red
39 |
40 | @import "mixins.scss";
41 |
42 | // Grid system and page structure
43 | @import "scaffolding.scss";
44 |
45 | // Styled patterns and elements
46 | @import "type.scss";
47 | @import "forms.scss";
48 | @import "tables.scss";
49 | @import "patterns.scss";
50 | ```
51 |
52 | ## Javascripts
53 |
54 | Add necessary javascript(s) files to app/assets/javascripts/application.js
55 |
56 | ``` javascript
57 | // Include all twitter's javascripts
58 | //= require bootstrap
59 |
60 | // Or peek any of them yourself
61 | //= require bootstrap-alerts
62 | //= require bootstrap-dropdown
63 | //= require bootstrap-modal
64 | //= require bootstrap-twipsy
65 | //= require bootstrap-popover
66 | //= require bootstrap-scrollspy
67 | //= require bootstrap-tabs
68 | ```
69 |
70 | ## Thanks
71 | Thanks Twitter for Bootstrap
72 | http://twitter.github.com/bootstrap
73 |
74 | Inspired by Seyhun Akyürek and his [twitter-bootstrap-rails gem](https://github.com/seyhunak/twitter-bootstrap-rails)
75 |
76 | ## License
77 | Copyright (c) 2011 AnjLab
78 |
79 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
80 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
81 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env rake
2 | require "bundler/gem_tasks"
3 |
4 | desc "Update Twitter's Bootstrap"
5 | task "update-twitter" do
6 | boostrap_version = "1.3.0"
7 | Dir["vendor/assets/stylesheets/*.*"].each {|f| FileUtils.rm(f)}
8 | Dir["vendor/twitter/lib/*.scss"].each do |file|
9 | cp file, "vendor/assets/stylesheets/", :verbose => true
10 | end
11 | bootstrap_scss = File.read("vendor/assets/stylesheets/bootstrap.scss")
12 |
13 | bootstrap_scss.gsub!(/@VERSION/, "v#{boostrap_version}")
14 | bootstrap_scss.gsub!(/^.*@DATE.*/, " *")
15 |
16 | File.open("vendor/assets/stylesheets/bootstrap.scss", "w") do |f|
17 | f.write(bootstrap_scss)
18 | end
19 |
20 | Dir["vendor/assets/javascripts/*.*"].each {|f| FileUtils.rm(f)}
21 | js_files = Dir["vendor/twitter/js/*.js"].map()
22 | js_files.each do |file|
23 | cp file, "vendor/assets/javascripts/", :verbose => true
24 | end
25 |
26 | js_priorities = {}
27 | js_files.each {|f| js_priorities[File.basename(f)] = 0}
28 |
29 | # popover depend on twipsy
30 | js_priorities["bootstrap-twipsy.js"] = 1
31 | js_priorities["bootstrap-popover.js"] = 2
32 |
33 | js_list = js_priorities.to_a.sort {|a,b| a[1] <=> b[1]}.map{|p| p[0]}
34 |
35 | File.open("vendor/assets/javascripts/bootstrap.js", "w") do |f|
36 | f.write "// Bootstrap v#{boostrap_version}\n"
37 | js_list.each do |js|
38 | f.write "//= require #{js}\n"
39 | end
40 | end
41 | end
--------------------------------------------------------------------------------
/bootstrap-rails.gemspec:
--------------------------------------------------------------------------------
1 | # -*- encoding: utf-8 -*-
2 | require File.expand_path('../lib/bootstrap-rails/version', __FILE__)
3 |
4 | Gem::Specification.new do |gem|
5 | gem.authors = ["Yury Korolev"]
6 | gem.email = ["yury.korolev@gmail.com"]
7 | gem.description = %q{Twitter Bootstrap CSS (with SASS flavour) and JS toolkits for Rails 3 projects}
8 | gem.summary = %q{Bootstrap CSS (with SASS flavour) and JS toolkits for Rails 3 projects}
9 | gem.homepage = "https://github.com/anjlab/bootstrap-rails"
10 |
11 | gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12 | gem.files = `git ls-files`.split("\n")
13 | gem.files.reject! { |fn| fn.include? "vendor/twitter" }
14 | gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15 | gem.name = "bootstrap-rails"
16 | gem.require_paths = ["lib"]
17 | gem.version = Bootstrap::Rails::VERSION
18 |
19 | gem.add_dependency "railties", "~> 3.0"
20 | gem.add_dependency "thor", "~> 0.14"
21 | gem.add_development_dependency "bundler", ">= 1.0.0"
22 | gem.add_development_dependency "rails", "~> 3.0"
23 | end
24 |
--------------------------------------------------------------------------------
/lib/bootstrap-rails.rb:
--------------------------------------------------------------------------------
1 | require "bootstrap-rails/version"
2 |
3 | module Bootstrap
4 | module Rails
5 | if ::Rails.version < "3.1"
6 | require "bootstrap-rails/railtie"
7 | else
8 | require "bootstrap-rails/engine"
9 | end
10 | end
11 | end
--------------------------------------------------------------------------------
/lib/bootstrap-rails/breadcrumb.rb:
--------------------------------------------------------------------------------
1 | module Bootstrap
2 | module Breadcrumb
3 | def self.included(receiver)
4 | receiver.extend ClassMethods
5 | receiver.send :include, InstanceMethods
6 | receiver.send :helper, Helpers
7 | receiver.send :before_filter, :set_breadcrumbs
8 | end
9 |
10 | module ClassMethods
11 |
12 | end
13 |
14 | module InstanceMethods
15 | protected
16 |
17 | def set_breadcrumbs
18 | @breadcrumbs = ["Home ".html_safe]
19 | end
20 |
21 | def drop_breadcrumb(title=nil, url=nil)
22 | title ||= @page_title
23 | url ||= url_for
24 | if title
25 | @breadcrumbs.push("#{title} ".html_safe)
26 | end
27 | end
28 |
29 | def drop_page_title(title)
30 | @page_title = title
31 | return @page_title
32 | end
33 |
34 | def no_breadcrumbs
35 | @breadcrumbs = []
36 | end
37 | end
38 |
39 | module Helpers
40 |
41 | def render_breadcrumb
42 | return "" if @breadcrumbs.size <= 0
43 | prefix = "".html_safe
44 | crumb = "".html_safe
45 |
46 | @breadcrumbs.each_with_index do |c, i|
47 | breadcrumb_class = []
48 | breadcrumb_class << "first" if i == 0
49 | breadcrumb_class << "last active" if i == (@breadcrumbs.length - 1)
50 |
51 | if i == (@breadcrumbs.length - 1)
52 | breadcrumb_content = c
53 | else
54 | breadcrumb_content = c + content_tag(:span, "/", :class => "divider")
55 | end
56 |
57 | crumb += content_tag(:li, breadcrumb_content ,:class => breadcrumb_class )
58 | end
59 | return prefix + content_tag(:ul, crumb, :class => "breadcrumb menu clearfix")
60 | end
61 | end
62 | end
63 |
64 | end
--------------------------------------------------------------------------------
/lib/bootstrap-rails/engine.rb:
--------------------------------------------------------------------------------
1 | require "bootstrap-rails/helper"
2 | require "bootstrap-rails/breadcrumb"
3 | module Bootstrap
4 | module Rails
5 | class Engine < ::Rails::Engine
6 | initializer "bootstrap_helper.view_helpers" do
7 | ActionView::Base.send :include, Bootstrap::Helper
8 | end
9 |
10 | config.to_prepare do
11 | ApplicationController.send :include, Bootstrap::Breadcrumb
12 | end
13 |
14 | end
15 | end
16 | end
--------------------------------------------------------------------------------
/lib/bootstrap-rails/helper.rb:
--------------------------------------------------------------------------------
1 | # coding: utf-8
2 | module Bootstrap
3 |
4 | module Helper
5 | def yield_or_default(message, default_message = "")
6 | message.nil? ? default_message : message
7 | end
8 |
9 |
10 | def render_page_title
11 | title = @page_title ? "#{SITE_NAME} | #{@page_title}" : SITE_NAME rescue "SITE_NAME"
12 | content_tag("title", title, nil, false)
13 | end
14 |
15 | def render_body_tag
16 | class_attribute = ["#{controller_name}-controller","#{action_name}-action"].join(" ")
17 | id_attribute = (@body_id)? " id=\"#{@body_id}-page\"" : ""
18 |
19 | raw(%Q|
21 |
23 |
24 |
25 | |)
26 |
27 | end
28 |
29 | def s(html)
30 | sanitize( html, :tags => %w(table thead tbody tr td th ol ul li div span font img sup sub br hr a pre p h1 h2 h3 h4 h5 h6), :attributes => %w(id class style src href size color) )
31 | end
32 |
33 | def render_table(rows, renderrers, table_options = {})
34 | table_options = {
35 | :has_header => true,
36 | :has_row_info => false,
37 | :caption => "",
38 | :id => nil,
39 | :class_name => "auto"
40 | }.merge(table_options)
41 |
42 | table_tag_options = table_options[:id] ? { :id => table_options[:id], :class => table_options[:class_name] } : { :class => table_options[:class_name] }
43 |
44 | table = TagNode.new('table', table_tag_options)
45 |
46 | if !table_options[:caption].blank?
47 | table << caption = TagNode.new(:caption)
48 | caption << table_options[:caption]
49 | end
50 |
51 | if table_options[:has_header] == true
52 | table << thead = TagNode.new(:thead)
53 | thead << tr = TagNode.new(:tr, :class => 'odd')
54 |
55 | renderrers.each do |renderrer|
56 | tr << th = TagNode.new(:th)
57 | th << renderrer[0]
58 | end
59 | end
60 |
61 | table << tbody = TagNode.new('tbody')
62 | row_info = {}
63 | row_info[:total] = rows.length
64 | rows.each_with_index do |row,i|
65 | row_info[:current] = i
66 | tbody << tr = TagNode.new('tr', :class => cycle("","odd") )
67 | renderrers.each do |renderrer|
68 | tr << td = TagNode.new('td')
69 |
70 | if renderrer[1].class == Proc
71 | if table_options[:has_row_info] == true
72 | td << renderrer[1].call(row, row_info)
73 | else
74 | td << renderrer[1].call(row)
75 | end
76 | else
77 | td << renderrer[1]
78 | end
79 | end
80 | end
81 |
82 | return table.to_s
83 | end
84 |
85 | # .current will be added to current action, but if you want to add .current to another link, you can set @current = ['/other_link']
86 | # TODO: hot about render_list( *args )
87 | def render_list(list=[], options={})
88 | if list.is_a? Hash
89 | options = list
90 | list = []
91 | end
92 |
93 | yield(list) if block_given?
94 |
95 | list_type ||= "ul"
96 |
97 | if options[:type]
98 | if ["ul", "dl", "ol"].include?(options[:type])
99 | list_type = options[:type]
100 | end
101 | end
102 |
103 | ul = TagNode.new(list_type, :id => options[:id], :class => options[:class] )
104 | ul.addClass("unstyled") if (options[:type] && options[:type] == "unstyled")
105 |
106 | list.each_with_index do |content, i|
107 | item_class = []
108 | item_class << "first" if i == 0
109 | item_class << "last" if i == (list.length - 1)
110 |
111 | item_content = content
112 | item_options = {}
113 |
114 | if content.is_a? Array
115 | item_content = content[0]
116 | item_options = content[1]
117 | end
118 |
119 | if item_options[:class]
120 | item_class << item_options[:class]
121 | end
122 |
123 | link = item_content.match(/href=(["'])(.*?)(\1)/)[2] rescue nil
124 |
125 | if ( link && current_page?(link) ) || ( @current && @current.include?(link) )
126 | item_class << "active"
127 | end
128 |
129 | item_class = (item_class.empty?)? nil : item_class.join(" ")
130 | ul << li = TagNode.new('li', :class => item_class )
131 | li << item_content
132 | end
133 |
134 | return ul.to_s
135 | end
136 |
137 | # Composite pattern
138 | class TagNode
139 | include ActionView::Helpers::TagHelper
140 |
141 | def initialize(name, options = {})
142 | @name = name.to_s
143 | @attributes = options
144 | @children = []
145 | end
146 |
147 | def addClass(x)
148 | if @attributes[:class].blank?
149 | @attributes[:class] = x.to_s
150 | else
151 | @attributes[:class] = @attributes[:class] + " #{x}"
152 | end
153 | end
154 |
155 | def to_s
156 | value = @children.each { |c| c.to_s }.join
157 | content_tag(@name, value.to_s, @attributes, false)
158 | end
159 |
160 | def <<(tag_node)
161 | @children << tag_node
162 | end
163 | end
164 | end
165 |
166 | end
167 |
--------------------------------------------------------------------------------
/lib/bootstrap-rails/railtie.rb:
--------------------------------------------------------------------------------
1 | module Bootstrap
2 | module Rails
3 | class Railtie < ::Rails::Railtie
4 | end
5 | end
6 | end
--------------------------------------------------------------------------------
/lib/bootstrap-rails/version.rb:
--------------------------------------------------------------------------------
1 | module Bootstrap
2 | module Rails
3 | VERSION = "0.1.4"
4 | end
5 | end
--------------------------------------------------------------------------------
/lib/bootstrap/rails.rb:
--------------------------------------------------------------------------------
1 | require "bootstrap-rails/version"
2 | module Bootstrap
3 | module Rails
4 | require "bootstrap-rails/engine"
5 | end
6 | end
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-alerts.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-alerts.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#alerts
4 | * ==========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function( $ ){
22 |
23 | "use strict"
24 |
25 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
26 | * ======================================================= */
27 |
28 | var transitionEnd
29 |
30 | $(document).ready(function () {
31 |
32 | $.support.transition = (function () {
33 | var thisBody = document.body || document.documentElement
34 | , thisStyle = thisBody.style
35 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
36 | return support
37 | })()
38 |
39 | // set CSS transition event type
40 | if ( $.support.transition ) {
41 | transitionEnd = "TransitionEnd"
42 | if ( $.browser.webkit ) {
43 | transitionEnd = "webkitTransitionEnd"
44 | } else if ( $.browser.mozilla ) {
45 | transitionEnd = "transitionend"
46 | } else if ( $.browser.opera ) {
47 | transitionEnd = "oTransitionEnd"
48 | }
49 | }
50 |
51 | })
52 |
53 | /* ALERT CLASS DEFINITION
54 | * ====================== */
55 |
56 | var Alert = function ( content, options ) {
57 | this.settings = $.extend({}, $.fn.alert.defaults, options)
58 | this.$element = $(content)
59 | .delegate(this.settings.selector, 'click', this.close)
60 | }
61 |
62 | Alert.prototype = {
63 |
64 | close: function (e) {
65 | var $element = $(this).parent('.alert-message')
66 |
67 | e && e.preventDefault()
68 | $element.removeClass('in')
69 |
70 | function removeElement () {
71 | $element.remove()
72 | }
73 |
74 | $.support.transition && $element.hasClass('fade') ?
75 | $element.bind(transitionEnd, removeElement) :
76 | removeElement()
77 | }
78 |
79 | }
80 |
81 |
82 | /* ALERT PLUGIN DEFINITION
83 | * ======================= */
84 |
85 | $.fn.alert = function ( options ) {
86 |
87 | if ( options === true ) {
88 | return this.data('alert')
89 | }
90 |
91 | return this.each(function () {
92 | var $this = $(this)
93 |
94 | if ( typeof options == 'string' ) {
95 | return $this.data('alert')[options]()
96 | }
97 |
98 | $(this).data('alert', new Alert( this, options ))
99 |
100 | })
101 | }
102 |
103 | $.fn.alert.defaults = {
104 | selector: '.close'
105 | }
106 |
107 | $(document).ready(function () {
108 | new Alert($('body'), {
109 | selector: '.alert-message[data-alert] .close'
110 | })
111 | })
112 |
113 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-buttons.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-buttons.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#buttons
4 | * ============================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 | !function( $ ){
21 |
22 | "use strict"
23 |
24 | function setState(el, state) {
25 | var d = 'disabled'
26 | , $el = $(el)
27 | , data = $el.data()
28 |
29 | state = state + 'Text'
30 | data.resetText || $el.data('resetText', $el.html())
31 |
32 | $el.html( data[state] || $.fn.button.defaults[state] )
33 |
34 | state == 'loadingText' ?
35 | $el.addClass(d).attr(d, d) :
36 | $el.removeClass(d).removeAttr(d)
37 | }
38 |
39 | function toggle(el) {
40 | $(el).toggleClass('active')
41 | }
42 |
43 | $.fn.button = function(options) {
44 | return this.each(function () {
45 | if (options == 'toggle') {
46 | return toggle(this)
47 | }
48 | options && setState(this, options)
49 | })
50 | }
51 |
52 | $.fn.button.defaults = {
53 | loadingText: 'loading...'
54 | }
55 |
56 | $(function () {
57 | $('body').delegate('.btn[data-toggle]', 'click', function () {
58 | $(this).button('toggle')
59 | })
60 | })
61 |
62 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-dropdown.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-dropdown.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#dropdown
4 | * ============================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function( $ ){
22 |
23 | "use strict"
24 |
25 | /* DROPDOWN PLUGIN DEFINITION
26 | * ========================== */
27 |
28 | $.fn.dropdown = function ( selector ) {
29 | return this.each(function () {
30 | $(this).delegate(selector || d, 'click', function (e) {
31 | var li = $(this).parent('li')
32 | , isActive = li.hasClass('open')
33 |
34 | clearMenus()
35 | !isActive && li.toggleClass('open')
36 | return false
37 | })
38 | })
39 | }
40 |
41 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
42 | * =================================== */
43 |
44 | var d = 'a.menu, .dropdown-toggle'
45 |
46 | function clearMenus() {
47 | $(d).parent('li').removeClass('open')
48 | }
49 |
50 | $(function () {
51 | $('html').bind("click", clearMenus)
52 | $('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' )
53 | })
54 |
55 | }( window.jQuery || window.ender );
56 |
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-modal.js:
--------------------------------------------------------------------------------
1 | /* =========================================================
2 | * bootstrap-modal.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#modal
4 | * =========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================= */
19 |
20 |
21 | !function( $ ){
22 |
23 | "use strict"
24 |
25 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
26 | * ======================================================= */
27 |
28 | var transitionEnd
29 |
30 | $(document).ready(function () {
31 |
32 | $.support.transition = (function () {
33 | var thisBody = document.body || document.documentElement
34 | , thisStyle = thisBody.style
35 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
36 | return support
37 | })()
38 |
39 | // set CSS transition event type
40 | if ( $.support.transition ) {
41 | transitionEnd = "TransitionEnd"
42 | if ( $.browser.webkit ) {
43 | transitionEnd = "webkitTransitionEnd"
44 | } else if ( $.browser.mozilla ) {
45 | transitionEnd = "transitionend"
46 | } else if ( $.browser.opera ) {
47 | transitionEnd = "oTransitionEnd"
48 | }
49 | }
50 |
51 | })
52 |
53 |
54 | /* MODAL PUBLIC CLASS DEFINITION
55 | * ============================= */
56 |
57 | var Modal = function ( content, options ) {
58 | this.settings = $.extend({}, $.fn.modal.defaults, options)
59 | this.$element = $(content)
60 | .delegate('.close', 'click.modal', $.proxy(this.hide, this))
61 |
62 | if ( this.settings.show ) {
63 | this.show()
64 | }
65 |
66 | return this
67 | }
68 |
69 | Modal.prototype = {
70 |
71 | toggle: function () {
72 | return this[!this.isShown ? 'show' : 'hide']()
73 | }
74 |
75 | , show: function () {
76 | var that = this
77 | this.isShown = true
78 | this.$element.trigger('show')
79 |
80 | escape.call(this)
81 | backdrop.call(this, function () {
82 | var transition = $.support.transition && that.$element.hasClass('fade')
83 |
84 | that.$element
85 | .appendTo(document.body)
86 | .show()
87 |
88 | if (transition) {
89 | that.$element[0].offsetWidth // force reflow
90 | }
91 |
92 | that.$element.addClass('in')
93 |
94 | transition ?
95 | that.$element.one(transitionEnd, function () { that.$element.trigger('shown') }) :
96 | that.$element.trigger('shown')
97 |
98 | })
99 |
100 | return this
101 | }
102 |
103 | , hide: function (e) {
104 | e && e.preventDefault()
105 |
106 | if ( !this.isShown ) {
107 | return this
108 | }
109 |
110 | var that = this
111 | this.isShown = false
112 |
113 | escape.call(this)
114 |
115 | this.$element
116 | .trigger('hide')
117 | .removeClass('in')
118 |
119 | $.support.transition && this.$element.hasClass('fade') ?
120 | hideWithTransition.call(this) :
121 | hideModal.call(this)
122 |
123 | return this
124 | }
125 |
126 | }
127 |
128 |
129 | /* MODAL PRIVATE METHODS
130 | * ===================== */
131 |
132 | function hideWithTransition() {
133 | // firefox drops transitionEnd events :{o
134 | var that = this
135 | , timeout = setTimeout(function () {
136 | that.$element.unbind(transitionEnd)
137 | hideModal.call(that)
138 | }, 500)
139 |
140 | this.$element.one(transitionEnd, function () {
141 | clearTimeout(timeout)
142 | hideModal.call(that)
143 | })
144 | }
145 |
146 | function hideModal (that) {
147 | this.$element
148 | .hide()
149 | .trigger('hidden')
150 |
151 | backdrop.call(this)
152 | }
153 |
154 | function backdrop ( callback ) {
155 | var that = this
156 | , animate = this.$element.hasClass('fade') ? 'fade' : ''
157 | if ( this.isShown && this.settings.backdrop ) {
158 | var doAnimate = $.support.transition && animate
159 |
160 | this.$backdrop = $('
')
161 | .appendTo(document.body)
162 |
163 | if ( this.settings.backdrop != 'static' ) {
164 | this.$backdrop.click($.proxy(this.hide, this))
165 | }
166 |
167 | if ( doAnimate ) {
168 | this.$backdrop[0].offsetWidth // force reflow
169 | }
170 |
171 | this.$backdrop.addClass('in')
172 |
173 | doAnimate ?
174 | this.$backdrop.one(transitionEnd, callback) :
175 | callback()
176 |
177 | } else if ( !this.isShown && this.$backdrop ) {
178 | this.$backdrop.removeClass('in')
179 |
180 | $.support.transition && this.$element.hasClass('fade')?
181 | this.$backdrop.one(transitionEnd, $.proxy(removeBackdrop, this)) :
182 | removeBackdrop.call(this)
183 |
184 | } else if ( callback ) {
185 | callback()
186 | }
187 | }
188 |
189 | function removeBackdrop() {
190 | this.$backdrop.remove()
191 | this.$backdrop = null
192 | }
193 |
194 | function escape() {
195 | var that = this
196 | if ( this.isShown && this.settings.keyboard ) {
197 | $(document).bind('keyup.modal', function ( e ) {
198 | if ( e.which == 27 ) {
199 | that.hide()
200 | }
201 | })
202 | } else if ( !this.isShown ) {
203 | $(document).unbind('keyup.modal')
204 | }
205 | }
206 |
207 |
208 | /* MODAL PLUGIN DEFINITION
209 | * ======================= */
210 |
211 | $.fn.modal = function ( options ) {
212 | var modal = this.data('modal')
213 |
214 | if (!modal) {
215 |
216 | if (typeof options == 'string') {
217 | options = {
218 | show: /show|toggle/.test(options)
219 | }
220 | }
221 |
222 | return this.each(function () {
223 | $(this).data('modal', new Modal(this, options))
224 | })
225 | }
226 |
227 | if ( options === true ) {
228 | return modal
229 | }
230 |
231 | if ( typeof options == 'string' ) {
232 | modal[options]()
233 | } else if ( modal ) {
234 | modal.toggle()
235 | }
236 |
237 | return this
238 | }
239 |
240 | $.fn.modal.Modal = Modal
241 |
242 | $.fn.modal.defaults = {
243 | backdrop: false
244 | , keyboard: false
245 | , show: false
246 | }
247 |
248 |
249 | /* MODAL DATA- IMPLEMENTATION
250 | * ========================== */
251 |
252 | $(document).ready(function () {
253 | $('body').delegate('[data-controls-modal]', 'click', function (e) {
254 | e.preventDefault()
255 | var $this = $(this).data('show', true)
256 | $('#' + $this.attr('data-controls-modal')).modal( $this.data() )
257 | })
258 | })
259 |
260 | }( window.jQuery || window.ender );
261 |
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-popover.js:
--------------------------------------------------------------------------------
1 | /* ===========================================================
2 | * bootstrap-popover.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#popover
4 | * ===========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * =========================================================== */
19 |
20 |
21 | !function( $ ) {
22 |
23 | "use strict"
24 |
25 | var Popover = function ( element, options ) {
26 | this.$element = $(element)
27 | this.options = options
28 | this.enabled = true
29 | this.fixTitle()
30 | }
31 |
32 | /* NOTE: POPOVER EXTENDS BOOTSTRAP-TWIPSY.js
33 | ========================================= */
34 |
35 | Popover.prototype = $.extend({}, $.fn.twipsy.Twipsy.prototype, {
36 |
37 | setContent: function () {
38 | var $tip = this.tip()
39 | $tip.find('.title')[this.options.html ? 'html' : 'text'](this.getTitle())
40 | $tip.find('.content p')[this.options.html ? 'html' : 'text'](this.getContent())
41 | $tip[0].className = 'popover'
42 | }
43 |
44 | , hasContent: function () {
45 | return this.getTitle() || this.getContent()
46 | }
47 |
48 | , getContent: function () {
49 | var content
50 | , $e = this.$element
51 | , o = this.options
52 |
53 | if (typeof this.options.content == 'string') {
54 | content = $e.attr(this.options.content)
55 | } else if (typeof this.options.content == 'function') {
56 | content = this.options.content.call(this.$element[0])
57 | }
58 |
59 | return content
60 | }
61 |
62 | , tip: function() {
63 | if (!this.$tip) {
64 | this.$tip = $('
')
65 | .html(this.options.template)
66 | }
67 | return this.$tip
68 | }
69 |
70 | })
71 |
72 |
73 | /* POPOVER PLUGIN DEFINITION
74 | * ======================= */
75 |
76 | $.fn.popover = function (options) {
77 | if (typeof options == 'object') options = $.extend({}, $.fn.popover.defaults, options)
78 | $.fn.twipsy.initWith.call(this, options, Popover, 'popover')
79 | return this
80 | }
81 |
82 | $.fn.popover.defaults = $.extend({} , $.fn.twipsy.defaults, {
83 | placement: 'right'
84 | , content: 'data-content'
85 | , template: '
'
86 | })
87 |
88 | $.fn.twipsy.rejectAttrOptions.push( 'content' )
89 |
90 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-scrollspy.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-scrollspy.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4 | * =============================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================== */
19 |
20 |
21 | !function ( $ ) {
22 |
23 | "use strict"
24 |
25 | var $window = $(window)
26 |
27 | function ScrollSpy( topbar, selector ) {
28 | var processScroll = $.proxy(this.processScroll, this)
29 | this.$topbar = $(topbar)
30 | this.selector = selector || 'li > a'
31 | this.refresh()
32 | this.$topbar.delegate(this.selector, 'click', processScroll)
33 | $window.scroll(processScroll)
34 | this.processScroll()
35 | }
36 |
37 | ScrollSpy.prototype = {
38 |
39 | refresh: function () {
40 | this.targets = this.$topbar.find(this.selector).map(function () {
41 | var href = $(this).attr('href')
42 | return /^#\w/.test(href) && $(href).length ? href : null
43 | })
44 |
45 | this.offsets = $.map(this.targets, function (id) {
46 | return $(id).offset().top
47 | })
48 | }
49 |
50 | , processScroll: function () {
51 | var scrollTop = $window.scrollTop() + 10
52 | , offsets = this.offsets
53 | , targets = this.targets
54 | , activeTarget = this.activeTarget
55 | , i
56 |
57 | for (i = offsets.length; i--;) {
58 | activeTarget != targets[i]
59 | && scrollTop >= offsets[i]
60 | && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
61 | && this.activateButton( targets[i] )
62 | }
63 | }
64 |
65 | , activateButton: function (target) {
66 | this.activeTarget = target
67 |
68 | this.$topbar
69 | .find(this.selector).parent('.active')
70 | .removeClass('active')
71 |
72 | this.$topbar
73 | .find(this.selector + '[href="' + target + '"]')
74 | .parent('li')
75 | .addClass('active')
76 | }
77 |
78 | }
79 |
80 | /* SCROLLSPY PLUGIN DEFINITION
81 | * =========================== */
82 |
83 | $.fn.scrollSpy = function( options ) {
84 | var scrollspy = this.data('scrollspy')
85 |
86 | if (!scrollspy) {
87 | return this.each(function () {
88 | $(this).data('scrollspy', new ScrollSpy( this, options ))
89 | })
90 | }
91 |
92 | if ( options === true ) {
93 | return scrollspy
94 | }
95 |
96 | if ( typeof options == 'string' ) {
97 | scrollspy[options]()
98 | }
99 |
100 | return this
101 | }
102 |
103 | $(document).ready(function () {
104 | $('body').scrollSpy('[data-scrollspy] li > a')
105 | })
106 |
107 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-tabs.js:
--------------------------------------------------------------------------------
1 | /* ========================================================
2 | * bootstrap-tabs.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#tabs
4 | * ========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ======================================================== */
19 |
20 |
21 | !function( $ ){
22 |
23 | "use strict"
24 |
25 | function activate ( element, container ) {
26 | container
27 | .find('> .active')
28 | .removeClass('active')
29 | .find('> .dropdown-menu > .active')
30 | .removeClass('active')
31 |
32 | element.addClass('active')
33 |
34 | if ( element.parent('.dropdown-menu') ) {
35 | element.closest('li.dropdown').addClass('active')
36 | }
37 | }
38 |
39 | function tab( e ) {
40 | var $this = $(this)
41 | , $ul = $this.closest('ul:not(.dropdown-menu)')
42 | , href = $this.attr('href')
43 | , previous
44 | , $href
45 |
46 | if ( /^#\w+/.test(href) ) {
47 | e.preventDefault()
48 |
49 | if ( $this.parent('li').hasClass('active') ) {
50 | return
51 | }
52 |
53 | previous = $ul.find('.active a').last()[0]
54 | $href = $(href)
55 |
56 | activate($this.parent('li'), $ul)
57 | activate($href, $href.parent())
58 |
59 | $this.trigger({
60 | type: 'change'
61 | , relatedTarget: previous
62 | })
63 | }
64 | }
65 |
66 |
67 | /* TABS/PILLS PLUGIN DEFINITION
68 | * ============================ */
69 |
70 | $.fn.tabs = $.fn.pills = function ( selector ) {
71 | return this.each(function () {
72 | $(this).delegate(selector || '.tabs li > a, .pills > li > a', 'click', tab)
73 | })
74 | }
75 |
76 | $(document).ready(function () {
77 | $('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
78 | })
79 |
80 | }( window.jQuery || window.ender );
81 |
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap-twipsy.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-twipsy.js v1.4.0
3 | * http://twitter.github.com/bootstrap/javascript.html#twipsy
4 | * Adapted from the original jQuery.tipsy by Jason Frame
5 | * ==========================================================
6 | * Copyright 2011 Twitter, Inc.
7 | *
8 | * Licensed under the Apache License, Version 2.0 (the "License");
9 | * you may not use this file except in compliance with the License.
10 | * You may obtain a copy of the License at
11 | *
12 | * http://www.apache.org/licenses/LICENSE-2.0
13 | *
14 | * Unless required by applicable law or agreed to in writing, software
15 | * distributed under the License is distributed on an "AS IS" BASIS,
16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | * See the License for the specific language governing permissions and
18 | * limitations under the License.
19 | * ========================================================== */
20 |
21 |
22 | !function( $ ) {
23 |
24 | "use strict"
25 |
26 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
27 | * ======================================================= */
28 |
29 | var transitionEnd
30 |
31 | $(document).ready(function () {
32 |
33 | $.support.transition = (function () {
34 | var thisBody = document.body || document.documentElement
35 | , thisStyle = thisBody.style
36 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
37 | return support
38 | })()
39 |
40 | // set CSS transition event type
41 | if ( $.support.transition ) {
42 | transitionEnd = "TransitionEnd"
43 | if ( $.browser.webkit ) {
44 | transitionEnd = "webkitTransitionEnd"
45 | } else if ( $.browser.mozilla ) {
46 | transitionEnd = "transitionend"
47 | } else if ( $.browser.opera ) {
48 | transitionEnd = "oTransitionEnd"
49 | }
50 | }
51 |
52 | })
53 |
54 |
55 | /* TWIPSY PUBLIC CLASS DEFINITION
56 | * ============================== */
57 |
58 | var Twipsy = function ( element, options ) {
59 | this.$element = $(element)
60 | this.options = options
61 | this.enabled = true
62 | this.fixTitle()
63 | }
64 |
65 | Twipsy.prototype = {
66 |
67 | show: function() {
68 | var pos
69 | , actualWidth
70 | , actualHeight
71 | , placement
72 | , $tip
73 | , tp
74 |
75 | if (this.hasContent() && this.enabled) {
76 | $tip = this.tip()
77 | this.setContent()
78 |
79 | if (this.options.animate) {
80 | $tip.addClass('fade')
81 | }
82 |
83 | $tip
84 | .remove()
85 | .css({ top: 0, left: 0, display: 'block' })
86 | .prependTo(document.body)
87 |
88 | pos = $.extend({}, this.$element.offset(), {
89 | width: this.$element[0].offsetWidth
90 | , height: this.$element[0].offsetHeight
91 | })
92 |
93 | actualWidth = $tip[0].offsetWidth
94 | actualHeight = $tip[0].offsetHeight
95 |
96 | placement = maybeCall(this.options.placement, this, [ $tip[0], this.$element[0] ])
97 |
98 | switch (placement) {
99 | case 'below':
100 | tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
101 | break
102 | case 'above':
103 | tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
104 | break
105 | case 'left':
106 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}
107 | break
108 | case 'right':
109 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}
110 | break
111 | }
112 |
113 | $tip
114 | .css(tp)
115 | .addClass(placement)
116 | .addClass('in')
117 | }
118 | }
119 |
120 | , setContent: function () {
121 | var $tip = this.tip()
122 | $tip.find('.twipsy-inner')[this.options.html ? 'html' : 'text'](this.getTitle())
123 | $tip[0].className = 'twipsy'
124 | }
125 |
126 | , hide: function() {
127 | var that = this
128 | , $tip = this.tip()
129 |
130 | $tip.removeClass('in')
131 |
132 | function removeElement () {
133 | $tip.remove()
134 | }
135 |
136 | $.support.transition && this.$tip.hasClass('fade') ?
137 | $tip.bind(transitionEnd, removeElement) :
138 | removeElement()
139 | }
140 |
141 | , fixTitle: function() {
142 | var $e = this.$element
143 | if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
144 | $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
145 | }
146 | }
147 |
148 | , hasContent: function () {
149 | return this.getTitle()
150 | }
151 |
152 | , getTitle: function() {
153 | var title
154 | , $e = this.$element
155 | , o = this.options
156 |
157 | this.fixTitle()
158 |
159 | if (typeof o.title == 'string') {
160 | title = $e.attr(o.title == 'title' ? 'data-original-title' : o.title)
161 | } else if (typeof o.title == 'function') {
162 | title = o.title.call($e[0])
163 | }
164 |
165 | title = ('' + title).replace(/(^\s*|\s*$)/, "")
166 |
167 | return title || o.fallback
168 | }
169 |
170 | , tip: function() {
171 | return this.$tip = this.$tip || $('
').html(this.options.template)
172 | }
173 |
174 | , validate: function() {
175 | if (!this.$element[0].parentNode) {
176 | this.hide()
177 | this.$element = null
178 | this.options = null
179 | }
180 | }
181 |
182 | , enable: function() {
183 | this.enabled = true
184 | }
185 |
186 | , disable: function() {
187 | this.enabled = false
188 | }
189 |
190 | , toggleEnabled: function() {
191 | this.enabled = !this.enabled
192 | }
193 |
194 | , toggle: function () {
195 | this[this.tip().hasClass('in') ? 'hide' : 'show']()
196 | }
197 |
198 | }
199 |
200 |
201 | /* TWIPSY PRIVATE METHODS
202 | * ====================== */
203 |
204 | function maybeCall ( thing, ctx, args ) {
205 | return typeof thing == 'function' ? thing.apply(ctx, args) : thing
206 | }
207 |
208 | /* TWIPSY PLUGIN DEFINITION
209 | * ======================== */
210 |
211 | $.fn.twipsy = function (options) {
212 | $.fn.twipsy.initWith.call(this, options, Twipsy, 'twipsy')
213 | return this
214 | }
215 |
216 | $.fn.twipsy.initWith = function (options, Constructor, name) {
217 | var twipsy
218 | , binder
219 | , eventIn
220 | , eventOut
221 |
222 | if (options === true) {
223 | return this.data(name)
224 | } else if (typeof options == 'string') {
225 | twipsy = this.data(name)
226 | if (twipsy) {
227 | twipsy[options]()
228 | }
229 | return this
230 | }
231 |
232 | options = $.extend({}, $.fn[name].defaults, options)
233 |
234 | function get(ele) {
235 | var twipsy = $.data(ele, name)
236 |
237 | if (!twipsy) {
238 | twipsy = new Constructor(ele, $.fn.twipsy.elementOptions(ele, options))
239 | $.data(ele, name, twipsy)
240 | }
241 |
242 | return twipsy
243 | }
244 |
245 | function enter() {
246 | var twipsy = get(this)
247 | twipsy.hoverState = 'in'
248 |
249 | if (options.delayIn == 0) {
250 | twipsy.show()
251 | } else {
252 | twipsy.fixTitle()
253 | setTimeout(function() {
254 | if (twipsy.hoverState == 'in') {
255 | twipsy.show()
256 | }
257 | }, options.delayIn)
258 | }
259 | }
260 |
261 | function leave() {
262 | var twipsy = get(this)
263 | twipsy.hoverState = 'out'
264 | if (options.delayOut == 0) {
265 | twipsy.hide()
266 | } else {
267 | setTimeout(function() {
268 | if (twipsy.hoverState == 'out') {
269 | twipsy.hide()
270 | }
271 | }, options.delayOut)
272 | }
273 | }
274 |
275 | if (!options.live) {
276 | this.each(function() {
277 | get(this)
278 | })
279 | }
280 |
281 | if (options.trigger != 'manual') {
282 | binder = options.live ? 'live' : 'bind'
283 | eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus'
284 | eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'
285 | this[binder](eventIn, enter)[binder](eventOut, leave)
286 | }
287 |
288 | return this
289 | }
290 |
291 | $.fn.twipsy.Twipsy = Twipsy
292 |
293 | $.fn.twipsy.defaults = {
294 | animate: true
295 | , delayIn: 0
296 | , delayOut: 0
297 | , fallback: ''
298 | , placement: 'above'
299 | , html: false
300 | , live: false
301 | , offset: 0
302 | , title: 'title'
303 | , trigger: 'hover'
304 | , template: '
'
305 | }
306 |
307 | $.fn.twipsy.rejectAttrOptions = [ 'title' ]
308 |
309 | $.fn.twipsy.elementOptions = function(ele, options) {
310 | var data = $(ele).data()
311 | , rejects = $.fn.twipsy.rejectAttrOptions
312 | , i = rejects.length
313 |
314 | while (i--) {
315 | delete data[rejects[i]]
316 | }
317 |
318 | return $.extend({}, options, data)
319 | }
320 |
321 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/assets/javascripts/bootstrap.js:
--------------------------------------------------------------------------------
1 | // Bootstrap v1.3.0
2 | //= require bootstrap-alerts.js
3 | //= require bootstrap-dropdown.js
4 | //= require bootstrap-modal.js
5 | //= require bootstrap-tabs.js
6 | //= require bootstrap-scrollspy.js
7 | //= require bootstrap-twipsy.js
8 | //= require bootstrap-popover.js
9 |
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/forms.scss:
--------------------------------------------------------------------------------
1 | /* Forms.less
2 | * Base styles for various input types, form layouts, and states
3 | * ------------------------------------------------------------- */
4 |
5 |
6 | // FORM STYLES
7 | // -----------
8 |
9 | form {
10 | margin-bottom: $baseline;
11 | }
12 |
13 | // Groups of fields with labels on top (legends)
14 | fieldset {
15 | margin-bottom: $baseline;
16 | padding-top: $baseline;
17 | legend {
18 | display: block;
19 | padding-left: 150px;
20 | font-size: $basefont * 1.5;
21 | line-height: 1;
22 | color: $grayDark;
23 | *padding: 0 0 5px 145px; /* IE6-7 */
24 | *line-height: 1.5; /* IE6-7 */
25 | }
26 | }
27 |
28 | // Parent element that clears floats and wraps labels and fields together
29 | form .clearfix {
30 | margin-bottom: $baseline;
31 | @include clearfix;
32 | }
33 |
34 | // Set font for forms
35 | label,
36 | input,
37 | select,
38 | textarea {
39 | @include font-sans-serif(normal,13px,normal);
40 | }
41 |
42 | // Float labels left
43 | label {
44 | padding-top: 6px;
45 | font-size: $basefont;
46 | line-height: $baseline;
47 | float: left;
48 | width: 130px;
49 | text-align: right;
50 | color: $grayDark;
51 | }
52 |
53 | // Shift over the inside div to align all label's relevant content
54 | form .input {
55 | margin-left: 150px;
56 | }
57 |
58 | // Checkboxs and radio buttons
59 | input[type=checkbox],
60 | input[type=radio] {
61 | cursor: pointer;
62 | }
63 |
64 | // Inputs, Textareas, Selects
65 | input,
66 | textarea,
67 | select,
68 | .uneditable-input {
69 | display: inline-block;
70 | width: 210px;
71 | height: $baseline;
72 | padding: 4px;
73 | font-size: $basefont;
74 | line-height: $baseline;
75 | color: $gray;
76 | border: 1px solid #ccc;
77 | @include border-radius(3px);
78 | }
79 |
80 | /* mini reset for non-html5 file types */
81 | input[type=checkbox],
82 | input[type=radio] {
83 | width: auto;
84 | height: auto;
85 | padding: 0;
86 | margin: 3px 0;
87 | *margin-top: 0; /* IE6-7 */
88 | line-height: normal;
89 | border: none;
90 | }
91 |
92 | input[type=file] {
93 | background-color: $white;
94 | padding: initial;
95 | border: initial;
96 | line-height: initial;
97 | @include box-shadow(none);
98 | }
99 |
100 | input[type=button],
101 | input[type=reset],
102 | input[type=submit] {
103 | width: auto;
104 | height: auto;
105 | }
106 |
107 | select,
108 | input[type=file] {
109 | height: $baseline * 1.5; // In IE7, the height of the select element cannot be changed by height, only font-size
110 | line-height: $baseline * 1.5;
111 | *margin-top: 4px; /* For IE7, add top margin to align select with labels */
112 | }
113 |
114 | // Make multiple select elements height not fixed
115 | select[multiple] {
116 | height: inherit;
117 | }
118 |
119 | textarea {
120 | height: auto;
121 | }
122 |
123 | // For text that needs to appear as an input but should not be an input
124 | .uneditable-input {
125 | background-color: $white;
126 | display: block;
127 | border-color: #eee;
128 | @include box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
129 | cursor: not-allowed;
130 | }
131 |
132 | // Placeholder text gets special styles; can't be bundled together though for some reason
133 | :-moz-placeholder {
134 | color: $grayLight;
135 | }
136 | ::-webkit-input-placeholder {
137 | color: $grayLight;
138 | }
139 |
140 | // Focus states
141 | input,
142 | textarea {
143 | $transition: border linear .2s, box-shadow linear .2s;
144 | @include transition($transition);
145 | @include box-shadow(inset 0 1px 3px rgba(0,0,0,.1));
146 | }
147 | input:focus,
148 | textarea:focus {
149 | outline: 0;
150 | border-color: rgba(82,168,236,.8);
151 | $shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
152 | @include box-shadow($shadow);
153 | }
154 | input[type=file]:focus,
155 | input[type=checkbox]:focus,
156 | select:focus {
157 | @include box-shadow(none); // override for file inputs
158 | outline: 1px dotted #666; // Selet elements don't get box-shadow styles, so instead we do outline
159 | }
160 |
161 | // Error styles
162 | form div.clearfix.error {
163 | background: lighten($red, 57%);
164 | padding: 10px 0;
165 | margin: -10px 0 10px;
166 | @include border-radius(4px);
167 | $error-text: desaturate(lighten($red, 25%), 25%);
168 | > label,
169 | span.help-inline,
170 | span.help-block {
171 | color: $red;
172 | }
173 | input,
174 | textarea {
175 | border-color: $error-text;
176 | @include box-shadow(0 0 3px rgba(171,41,32,.25));
177 | &:focus {
178 | border-color: darken($error-text, 10%);
179 | @include box-shadow(0 0 6px rgba(171,41,32,.5));
180 | }
181 | }
182 | .input-prepend,
183 | .input-append {
184 | span.add-on {
185 | background: lighten($red, 50%);
186 | border-color: $error-text;
187 | color: darken($error-text, 10%);
188 | }
189 | }
190 | }
191 |
192 | // Form element sizes
193 | // TODO v2: remove duplication here and just stick to .input-[size] in light of adding .spanN sizes
194 | .input-mini,
195 | input.mini,
196 | textarea.mini,
197 | select.mini {
198 | width: 60px;
199 | }
200 | .input-small,
201 | input.small,
202 | textarea.small,
203 | select.small {
204 | width: 90px;
205 | }
206 | .input-medium,
207 | input.medium,
208 | textarea.medium,
209 | select.medium {
210 | width: 150px;
211 | }
212 | .input-large,
213 | input.large,
214 | textarea.large,
215 | select.large {
216 | width: 210px;
217 | }
218 | .input-xlarge,
219 | input.xlarge,
220 | textarea.xlarge,
221 | select.xlarge {
222 | width: 270px;
223 | }
224 | .input-xxlarge,
225 | input.xxlarge,
226 | textarea.xxlarge,
227 | select.xxlarge {
228 | width: 530px;
229 | }
230 | textarea.xxlarge {
231 | overflow-y: auto;
232 | }
233 |
234 | // Grid style input sizes
235 | // This is a duplication of the main grid .columns() mixin, but subtracts 10px to account for input padding and border
236 | @mixin form-columns($columnSpan: 1) {
237 | display: inline-block;
238 | float: none;
239 | width: (($gridColumnWidth) * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1)) - 10;
240 | margin-left: 0;
241 | }
242 | input,
243 | textarea,
244 | select {
245 | // Default columns
246 | &.span1 { @include form-columns(1); }
247 | &.span2 { @include form-columns(2); }
248 | &.span3 { @include form-columns(3); }
249 | &.span4 { @include form-columns(4); }
250 | &.span5 { @include form-columns(5); }
251 | &.span6 { @include form-columns(6); }
252 | &.span7 { @include form-columns(7); }
253 | &.span8 { @include form-columns(8); }
254 | &.span9 { @include form-columns(9); }
255 | &.span10 { @include form-columns(10); }
256 | &.span11 { @include form-columns(11); }
257 | &.span12 { @include form-columns(12); }
258 | &.span13 { @include form-columns(13); }
259 | &.span14 { @include form-columns(14); }
260 | &.span15 { @include form-columns(15); }
261 | &.span16 { @include form-columns(16); }
262 | }
263 |
264 | // Disabled and read-only inputs
265 | input[disabled],
266 | select[disabled],
267 | textarea[disabled],
268 | input[readonly],
269 | select[readonly],
270 | textarea[readonly] {
271 | background-color: #f5f5f5;
272 | border-color: #ddd;
273 | cursor: not-allowed;
274 | }
275 |
276 | // Actions (the buttons)
277 | .actions {
278 | background: #f5f5f5;
279 | margin-top: $baseline;
280 | margin-bottom: $baseline;
281 | padding: ($baseline - 1) 20px $baseline 150px;
282 | border-top: 1px solid #ddd;
283 | @include border-radius(0 0 3px 3px);
284 | .secondary-action {
285 | float: right;
286 | a {
287 | line-height: 30px;
288 | &:hover {
289 | text-decoration: underline;
290 | }
291 | }
292 | }
293 | }
294 |
295 | // Help Text
296 | .help-inline,
297 | .help-block {
298 | font-size: $basefont - 2;
299 | line-height: $baseline;
300 | color: $grayLight;
301 | }
302 | .help-inline {
303 | padding-left: 5px;
304 | *position: relative; /* IE6-7 */
305 | *top: -5px; /* IE6-7 */
306 | }
307 |
308 | // Big blocks of help text
309 | .help-block {
310 | display: block;
311 | max-width: 600px;
312 | }
313 |
314 | // Inline Fields (input fields that appear as inline objects
315 | .inline-inputs {
316 | color: $gray;
317 | span, input {
318 | display: inline-block;
319 | }
320 | input.mini {
321 | width: 60px;
322 | }
323 | input.small {
324 | width: 90px;
325 | }
326 | span {
327 | padding: 0 2px 0 1px;
328 | }
329 | }
330 |
331 | // Allow us to put symbols and text within the input field for a cleaner look
332 | .input-prepend,
333 | .input-append {
334 | input {
335 | @include border-radius(0 3px 3px 0);
336 | }
337 | .add-on {
338 | position: relative;
339 | background: #f5f5f5;
340 | border: 1px solid #ccc;
341 | z-index: 2;
342 | float: left;
343 | display: block;
344 | width: auto;
345 | min-width: 16px;
346 | height: 18px;
347 | padding: 4px 4px 4px 5px;
348 | margin-right: -1px;
349 | font-weight: normal;
350 | line-height: 18px;
351 | color: $grayLight;
352 | text-align: center;
353 | text-shadow: 0 1px 0 $white;
354 | @include border-radius(3px 0 0 3px);
355 | }
356 | .active {
357 | background: lighten($green, 30);
358 | border-color: $green;
359 | }
360 | }
361 | .input-prepend {
362 | .add-on {
363 | *margin-top: 1px; /* IE6-7 */
364 | }
365 | }
366 | .input-append {
367 | input {
368 | float: left;
369 | @include border-radius(3px 0 0 3px);
370 | }
371 | .add-on {
372 | @include border-radius(0 3px 3px 0);
373 | margin-right: 0;
374 | margin-left: -1px;
375 | }
376 | }
377 |
378 | // Stacked options for forms (radio buttons or checkboxes)
379 | .inputs-list {
380 | margin: 0 0 5px;
381 | width: 100%;
382 | li {
383 | display: block;
384 | padding: 0;
385 | width: 100%;
386 | }
387 | label {
388 | display: block;
389 | float: none;
390 | width: auto;
391 | padding: 0;
392 | line-height: $baseline;
393 | text-align: left;
394 | white-space: normal;
395 | strong {
396 | color: $gray;
397 | }
398 | small {
399 | font-size: $basefont - 2;
400 | font-weight: normal;
401 | }
402 | }
403 | .inputs-list {
404 | margin-left: 25px;
405 | margin-bottom: 10px;
406 | padding-top: 0;
407 | }
408 | &:first-child {
409 | padding-top: 6px;
410 | }
411 | li + li {
412 | padding-top: 2px;
413 | }
414 | input[type=radio],
415 | input[type=checkbox] {
416 | margin-bottom: 0;
417 | }
418 | }
419 |
420 | // Stacked forms
421 | .form-stacked {
422 | padding-left: 20px;
423 | fieldset {
424 | padding-top: $baseline / 2;
425 | }
426 | legend {
427 | padding-left: 0;
428 | }
429 | label {
430 | display: block;
431 | float: none;
432 | width: auto;
433 | font-weight: bold;
434 | text-align: left;
435 | line-height: 20px;
436 | padding-top: 0;
437 | }
438 | .clearfix {
439 | margin-bottom: $baseline / 2;
440 | div.input {
441 | margin-left: 0;
442 | }
443 | }
444 | .inputs-list {
445 | margin-bottom: 0;
446 | li {
447 | padding-top: 0;
448 | label {
449 | font-weight: normal;
450 | padding-top: 0;
451 | }
452 | }
453 | }
454 | div.clearfix.error {
455 | padding-top: 10px;
456 | padding-bottom: 10px;
457 | padding-left: 10px;
458 | margin-top: 0;
459 | margin-left: -10px;
460 | }
461 | .actions {
462 | margin-left: -20px;
463 | padding-left: 20px;
464 | }
465 | }
466 |
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/mixins.scss:
--------------------------------------------------------------------------------
1 | /* Mixins
2 | * Snippets of reusable CSS to develop faster and keep code readable
3 | * ----------------------------------------------------------------- */
4 |
5 |
6 | // Clearfix for clearing floats like a boss h5bp.com/q
7 | @mixin clearfix {
8 | zoom: 1;
9 | &:before,
10 | &:after {
11 | display: table;
12 | content: "";
13 | zoom: 1;
14 | *display: inline;
15 | }
16 | &:after {
17 | clear: both;
18 | }
19 | }
20 |
21 | .clearfix {
22 | @include clearfix;
23 | }
24 |
25 | // Center-align a block level element
26 | @mixin center-block {
27 | display: block;
28 | margin-left: auto;
29 | margin-right: auto;
30 | }
31 |
32 | .center-block {
33 | @include center-block;
34 | }
35 |
36 | // Sizing shortcuts
37 | @mixin size($height: 5px, $width: 5px) {
38 | height: $height;
39 | width: $width;
40 | }
41 | @mixin square($size: $px) {
42 | @include size($size, $size);
43 | }
44 |
45 | // Input placeholder text
46 | @mixin placeholder($color: $grayLight) {
47 | :-moz-placeholder {
48 | color: $color;
49 | }
50 | ::-webkit-input-placeholder {
51 | color: $color;
52 | }
53 | }
54 |
55 | // Font Stacks
56 | @mixin font-shorthand($weight: normal, $size: 14px, $lineHeight: 20px) {
57 | font-size: $size;
58 | font-weight: $weight;
59 | line-height: $lineHeight;
60 | }
61 | @mixin font-sans-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
62 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
63 | font-size: $size;
64 | font-weight: $weight;
65 | line-height: $lineHeight;
66 | }
67 | @mixin font-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
68 | font-family: "Georgia", Times New Roman, Times, serif;
69 | font-size: $size;
70 | font-weight: $weight;
71 | line-height: $lineHeight;
72 | }
73 | @mixin font-monospace($weight: normal, $size: 12px, $lineHeight: 20px) {
74 | font-family: "Monaco", Courier New, monospace;
75 | font-size: $size;
76 | font-weight: $weight;
77 | line-height: $lineHeight;
78 | }
79 |
80 | // Grid System
81 | @mixin fixed-container {
82 | width: $siteWidth;
83 | margin-left: auto;
84 | margin-right: auto;
85 | @include clearfix;
86 | }
87 |
88 | .fixed-container {
89 | @include fixed-container;
90 | }
91 |
92 | @mixin columns($columnSpan: 1) {
93 | width: ($gridColumnWidth * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1));
94 | }
95 | @mixin offset($columnOffset: 1) {
96 | margin-left: ($gridColumnWidth * $columnOffset) + ($gridGutterWidth * ($columnOffset - 1)) + $extraSpace;
97 | }
98 | // Necessary grid styles for every column to make them appear next to each other horizontally
99 | @mixin gridColumn() {
100 | display: inline;
101 | float: left;
102 | margin-left: $gridGutterWidth;
103 | }
104 | // makeColumn can be used to mark any element (e.g., .content-primary) as a column without changing markup to .span something
105 | @mixin makeColumn($columnSpan: 1) {
106 | @include gridColumn;
107 | @include columns($columnSpan);
108 | }
109 |
110 | // Border Radius
111 | @mixin border-radius($radius: 5px) {
112 | -webkit-border-radius: $radius;
113 | -moz-border-radius: $radius;
114 | border-radius: $radius;
115 | }
116 |
117 | // Drop shadows
118 | @mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) {
119 | -webkit-box-shadow: $shadow;
120 | -moz-box-shadow: $shadow;
121 | box-shadow: $shadow;
122 | }
123 |
124 | // Transitions
125 | @mixin transition($transition) {
126 | -webkit-transition: $transition;
127 | -moz-transition: $transition;
128 | -ms-transition: $transition;
129 | -o-transition: $transition;
130 | transition: $transition;
131 | }
132 |
133 | // Background clipping
134 | @mixin background-clip($clip) {
135 | -webkit-background-clip: $clip;
136 | -moz-background-clip: $clip;
137 | background-clip: $clip;
138 | }
139 |
140 | // CSS3 Content Columns
141 | @mixin content-columns($columnCount, $columnGap: 20px) {
142 | -webkit-column-count: $columnCount;
143 | -moz-column-count: $columnCount;
144 | column-count: $columnCount;
145 | -webkit-column-gap: $columnGap;
146 | -moz-column-gap: $columnGap;
147 | column-gap: $columnGap;
148 | }
149 |
150 | // Add an alphatransparency value to any background or border color (via Elyse Holladay)
151 | @mixin translucent-background($color: $white, $alpha: 1) {
152 | background-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
153 | }
154 | @mixin translucent-border($color: $white, $alpha: 1) {
155 | border-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
156 | background-clip: padding-box;
157 | }
158 |
159 | // Gradients
160 | @mixin gradient-horizontal ($startColor: #555, $endColor: #333) {
161 | background-color: $endColor;
162 | background-repeat: repeat-x;
163 | background-image: -khtml-gradient(linear, left top, right top, from($startColor), to($endColor)); // Konqueror
164 | background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+
165 | background-image: -ms-linear-gradient(left, $startColor, $endColor); // IE10
166 | background-image: -webkit-gradient(linear, left top, right top, color-stop(0%, $startColor), color-stop(100%, $endColor)); // Safari 4+, Chrome 2+
167 | background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+
168 | background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10
169 | background-image: linear-gradient(left, $startColor, $endColor); // Le standard
170 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=1); // IE9 and down
171 | }
172 | @mixin gradient-vertical ($startColor: #555, $endColor: #333) {
173 | background-color: $endColor;
174 | background-repeat: repeat-x;
175 | background-image: -khtml-gradient(linear, left top, left bottom, from($startColor), to($endColor)); // Konqueror
176 | background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
177 | background-image: -ms-linear-gradient(top, $startColor, $endColor); // IE10
178 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, $startColor), color-stop(100%, $endColor)); // Safari 4+, Chrome 2+
179 | background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
180 | background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10
181 | background-image: linear-gradient(top, $startColor, $endColor); // The standard
182 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down
183 | }
184 | @mixin gradient-directional ($startColor: #555, $endColor: #333, $deg: 45deg) {
185 | background-color: $endColor;
186 | background-repeat: repeat-x;
187 | background-image: -moz-linear-gradient($deg, $startColor, $endColor); // FF 3.6+
188 | background-image: -ms-linear-gradient($deg, $startColor, $endColor); // IE10
189 | background-image: -webkit-linear-gradient($deg, $startColor, $endColor); // Safari 5.1+, Chrome 10+
190 | background-image: -o-linear-gradient($deg, $startColor, $endColor); // Opera 11.10
191 | background-image: linear-gradient($deg, $startColor, $endColor); // The standard
192 | }
193 | @mixin gradient-vertical-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) {
194 | background-color: $endColor;
195 | background-repeat: no-repeat;
196 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), color-stop($colorStop, $midColor), to($endColor));
197 | background-image: -webkit-linear-gradient($startColor, $midColor $colorStop, $endColor);
198 | background-image: -moz-linear-gradient(top, $startColor, $midColor $colorStop, $endColor);
199 | background-image: -ms-linear-gradient($startColor, $midColor $colorStop, $endColor);
200 | background-image: -o-linear-gradient($startColor, $midColor $colorStop, $endColor);
201 | background-image: linear-gradient($startColor, $midColor $colorStop, $endColor);
202 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
203 | }
204 |
205 | // Gradient Bar Colors for buttons and allerts
206 | @mixin gradient-bar($primaryColor, $secondaryColor) {
207 | @include gradient-vertical($primaryColor, $secondaryColor);
208 | text-shadow: 0 -1px 0 rgba(0,0,0,.25);
209 | border-color: $secondaryColor $secondaryColor darken($secondaryColor, 15%);
210 | border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fade-in(rgba(0,0,0,.1), 0.15);
211 | }
212 |
213 | // Reset filters for IE
214 | @mixin reset-filter() {
215 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
216 | }
217 |
218 | // Opacity
219 | @mixin opacity($opacity: 100) {
220 | filter: alpha(opacity=#{$opacity});
221 | -khtml-opacity: $opacity / 100;
222 | -moz-opacity: $opacity / 100;
223 | opacity: $opacity / 100;
224 | }
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/reset.scss:
--------------------------------------------------------------------------------
1 | /* Reset.less
2 | * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
3 | * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
4 |
5 |
6 | // ERIC MEYER RESET
7 | // --------------------------------------------------
8 |
9 | html, body { margin: 0; padding: 0; }
10 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, cite, code, del, dfn, em, img, q, s, samp, small, strike, strong, sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; font-weight: normal; font-style: normal; font-size: 100%; line-height: 1; font-family: inherit; }
11 | table { border-collapse: collapse; border-spacing: 0; }
12 | ol, ul { list-style: none; }
13 | q:before, q:after, blockquote:before, blockquote:after { content: ""; }
14 |
15 |
16 | // Normalize.css
17 | // Pulling in select resets form the normalize.css project
18 | // --------------------------------------------------
19 |
20 | // Display in IE6-9 and FF3
21 | // -------------------------
22 | // Source: http://github.com/necolas/normalize.css
23 | html {
24 | overflow-y: scroll;
25 | font-size: 100%;
26 | -webkit-text-size-adjust: 100%;
27 | -ms-text-size-adjust: 100%;
28 | }
29 | // Focus states
30 | a:focus {
31 | outline: thin dotted;
32 | }
33 | // Hover & Active
34 | a:hover,
35 | a:active {
36 | outline: 0;
37 | }
38 |
39 | // Display in IE6-9 and FF3
40 | // -------------------------
41 | // Source: http://github.com/necolas/normalize.css
42 | article,
43 | aside,
44 | details,
45 | figcaption,
46 | figure,
47 | footer,
48 | header,
49 | hgroup,
50 | nav,
51 | section {
52 | display: block;
53 | }
54 |
55 | // Display block in IE6-9 and FF3
56 | // -------------------------
57 | // Source: http://github.com/necolas/normalize.css
58 | audio,
59 | canvas,
60 | video {
61 | display: inline-block;
62 | *display: inline;
63 | *zoom: 1;
64 | }
65 |
66 | // Prevents modern browsers from displaying 'audio' without controls
67 | // -------------------------
68 | // Source: http://github.com/necolas/normalize.css
69 | audio:not([controls]) {
70 | display: none;
71 | }
72 |
73 | // Prevents sub and sup affecting line-height in all browsers
74 | // -------------------------
75 | // Source: http://github.com/necolas/normalize.css
76 | sub,
77 | sup {
78 | font-size: 75%;
79 | line-height: 0;
80 | position: relative;
81 | vertical-align: baseline;
82 | }
83 | sup {
84 | top: -0.5em;
85 | }
86 | sub {
87 | bottom: -0.25em;
88 | }
89 |
90 | // Img border in a's and image quality
91 | // -------------------------
92 | // Source: http://github.com/necolas/normalize.css
93 | img {
94 | border: 0;
95 | -ms-interpolation-mode: bicubic;
96 | }
97 |
98 | // Forms
99 | // -------------------------
100 | // Source: http://github.com/necolas/normalize.css
101 |
102 | // Font size in all browsers, margin changes, misc consistency
103 | button,
104 | input,
105 | select,
106 | textarea {
107 | font-size: 100%;
108 | margin: 0;
109 | vertical-align: baseline;
110 | *vertical-align: middle;
111 | }
112 | button,
113 | input {
114 | line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
115 | *overflow: visible; // Inner spacing ie IE6/7
116 | }
117 | button::-moz-focus-inner,
118 | input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
119 | border: 0;
120 | padding: 0;
121 | }
122 | button,
123 | input[type="button"],
124 | input[type="reset"],
125 | input[type="submit"] {
126 | cursor: pointer; // Cursors on all buttons applied consistently
127 | -webkit-appearance: button; // Style clicable inputs in iOS
128 | }
129 | input[type="search"] { // Appearance in Safari/Chrome
130 | -webkit-appearance: textfield;
131 | -webkit-box-sizing: content-box;
132 | -moz-box-sizing: content-box;
133 | box-sizing: content-box;
134 | }
135 | input[type="search"]::-webkit-search-decoration {
136 | -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
137 | }
138 | textarea {
139 | overflow: auto; // Remove vertical scrollbar in IE6-9
140 | vertical-align: top; // Readability and alignment cross-browser
141 | }
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/scaffolding.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Scaffolding
3 | * Basic and global styles for generating a grid system, structural layout, and page templates
4 | * ------------------------------------------------------------------------------------------- */
5 |
6 |
7 | // STRUCTURAL LAYOUT
8 | // -----------------
9 |
10 | html, body {
11 | background-color: $white;
12 | }
13 | body {
14 | margin: 0;
15 | @include font-sans-serif(normal,$basefont,$baseline);
16 | color: $grayDark;
17 | }
18 |
19 | // Container (centered, fixed-width layouts)
20 | .container {
21 | @include fixed-container;
22 | }
23 |
24 | // Fluid layouts (left aligned, with sidebar, min- & max-width content)
25 | .container-fluid {
26 | position: relative;
27 | min-width: 940px;
28 | padding-left: 20px;
29 | padding-right: 20px;
30 | @include clearfix;
31 | > .sidebar {
32 | float: left;
33 | width: 220px;
34 | }
35 | // TODO in v2: rename this and .popover .content to be more specific
36 | > .content {
37 | margin-left: 240px;
38 | }
39 | }
40 |
41 |
42 | // BASE STYLES
43 | // -----------
44 |
45 | // Links
46 | a {
47 | color: $linkColor;
48 | text-decoration: none;
49 | line-height: inherit;
50 | font-weight: inherit;
51 | &:hover {
52 | color: $linkColorHover;
53 | text-decoration: underline;
54 | }
55 | }
56 |
57 | // Quick floats
58 | .pull-right {
59 | float: right;
60 | }
61 | .pull-left {
62 | float: left;
63 | }
64 |
65 | // Toggling content
66 | .hide {
67 | display: none;
68 | }
69 | .show {
70 | display: block;
71 | }
72 |
73 |
74 | // GRID SYSTEM
75 | // -----------
76 | // To customize the grid system, bring up the variables.less file and change the column count, size, and gutter there
77 |
78 | .row {
79 | @include clearfix;
80 | margin-left: -1 * $gridGutterWidth;
81 | }
82 |
83 | // Find all .span# classes within .row and give them the necessary properties for grid columns (supported by all browsers back to IE7)
84 | // Credit to @dhg for the idea
85 | [class*="span"] {
86 | @include gridColumn;
87 | }
88 |
89 | // Default columns
90 | @for $i from 1 through 16 {
91 | .span#{$i} { @include columns($i); }
92 | }
93 |
94 | // For optional 24-column grid
95 | @for $i from 17 through 24 {
96 | .span#{$i} { @include columns($i); }
97 | }
98 |
99 | // Offset column options
100 | @for $i from 1 through 12 {
101 | .offset#{$i} { @include offset($i); }
102 | }
103 |
104 | // Unique column sizes for 16-column grid
105 | .span-one-third { width: 300px; }
106 | .span-two-thirds { width: 620px; }
107 | .offset-one-third { margin-left: 340px; }
108 | .offset-two-thirds { margin-left: 660px; }
109 |
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/tables.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Tables.less
3 | * Tables for, you guessed it, tabular data
4 | * ---------------------------------------- */
5 |
6 |
7 | // BASELINE STYLES
8 | // ---------------
9 |
10 | table {
11 | width: 100%;
12 | margin-bottom: $baseline;
13 | padding: 0;
14 | border-collapse: separate; // Done so we can round those corners!
15 | *border-collapse: collapse; /* IE7, collapse table to remove spacing */
16 | font-size: $basefont;
17 | border: 1px solid #ddd;
18 | @include border-radius(4px);
19 | th, td {
20 | padding: 10px 10px 9px;
21 | line-height: $baseline;
22 | text-align: left;
23 | }
24 | th {
25 | padding-top: 9px;
26 | font-weight: bold;
27 | vertical-align: middle;
28 | border-bottom: 1px solid #ddd;
29 | }
30 | td {
31 | vertical-align: top;
32 | }
33 | th + th,
34 | td + td {
35 | border-left: 1px solid #ddd;
36 | }
37 | tr + tr td {
38 | border-top: 1px solid #ddd;
39 | }
40 | tbody tr:first-child td:first-child {
41 | @include border-radius(4px 0 0 0);
42 | }
43 | tbody tr:first-child td:last-child {
44 | @include border-radius(0 4px 0 0);
45 | }
46 | tbody tr:last-child td:first-child {
47 | @include border-radius(0 0 0 4px);
48 | }
49 | tbody tr:last-child td:last-child {
50 | @include border-radius(0 0 4px 0);
51 | }
52 | }
53 |
54 |
55 | // ZEBRA-STRIPING
56 | // --------------
57 |
58 | // Default zebra-stripe styles (alternating gray and transparent backgrounds)
59 | .zebra-striped {
60 | tbody {
61 | tr:nth-child(odd) td {
62 | background-color: #f9f9f9;
63 | }
64 | tr:hover td {
65 | background-color: #f5f5f5;
66 | }
67 | }
68 | }
69 |
70 | table {
71 | // Tablesorting styles w/ jQuery plugin
72 | .header {
73 | cursor: pointer;
74 | &:after {
75 | content: "";
76 | float: right;
77 | margin-top: 7px;
78 | border-width: 0 4px 4px;
79 | border-style: solid;
80 | border-color: #000 transparent;
81 | visibility: hidden;
82 | }
83 | }
84 | // Style the sorted column headers (THs)
85 | .headerSortUp,
86 | .headerSortDown {
87 | background-color: rgba(141,192,219,.25);
88 | text-shadow: 0 1px 1px rgba(255,255,255,.75);
89 | }
90 | // Style the ascending (reverse alphabetical) column header
91 | .header:hover {
92 | &:after {
93 | visibility:visible;
94 | }
95 | }
96 | // Style the descending (alphabetical) column header
97 | .headerSortDown,
98 | .headerSortDown:hover {
99 | &:after {
100 | visibility:visible;
101 | @include opacity(60);
102 | }
103 | }
104 | // Style the ascending (reverse alphabetical) column header
105 | .headerSortUp {
106 | &:after {
107 | border-bottom: none;
108 | border-left: 4px solid transparent;
109 | border-right: 4px solid transparent;
110 | border-top: 4px solid #000;
111 | visibility:visible;
112 | @include box-shadow(none); //can't add boxshadow to downward facing arrow :(
113 | @include opacity(60);
114 | }
115 | }
116 | // Blue Table Headings
117 | .blue {
118 | color: $blue;
119 | border-bottom-color: $blue;
120 | }
121 | .headerSortUp.blue,
122 | .headerSortDown.blue {
123 | background-color: lighten($blue, 40%);
124 | }
125 | // Green Table Headings
126 | .green {
127 | color: $green;
128 | border-bottom-color: $green;
129 | }
130 | .headerSortUp.green,
131 | .headerSortDown.green {
132 | background-color: lighten($green, 40%);
133 | }
134 | // Red Table Headings
135 | .red {
136 | color: $red;
137 | border-bottom-color: $red;
138 | }
139 | .headerSortUp.red,
140 | .headerSortDown.red {
141 | background-color: lighten($red, 50%);
142 | }
143 | // Yellow Table Headings
144 | .yellow {
145 | color: $yellow;
146 | border-bottom-color: $yellow;
147 | }
148 | .headerSortUp.yellow,
149 | .headerSortDown.yellow {
150 | background-color: lighten($yellow, 40%);
151 | }
152 | // Orange Table Headings
153 | .orange {
154 | color: $orange;
155 | border-bottom-color: $orange;
156 | }
157 | .headerSortUp.orange,
158 | .headerSortDown.orange {
159 | background-color: lighten($orange, 40%);
160 | }
161 | // Purple Table Headings
162 | .purple {
163 | color: $purple;
164 | border-bottom-color: $purple;
165 | }
166 | .headerSortUp.purple,
167 | .headerSortDown.purple {
168 | background-color: lighten($purple, 40%);
169 | }
170 | }
171 |
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/type.scss:
--------------------------------------------------------------------------------
1 | /* Typography.less
2 | * Headings, body text, lists, code, and more for a versatile and durable typography system
3 | * ---------------------------------------------------------------------------------------- */
4 |
5 |
6 | // BODY TEXT
7 | // ---------
8 |
9 | p {
10 | @include font-shorthand(normal,$basefont,$baseline);
11 | margin-bottom: $baseline / 2;
12 | small {
13 | font-size: $basefont - 2;
14 | color: $grayLight;
15 | }
16 | }
17 |
18 |
19 | // HEADINGS
20 | // --------
21 |
22 | h1, h2, h3, h4, h5, h6 {
23 | font-weight: bold;
24 | color: $grayDark;
25 | small {
26 | color: $grayLight;
27 | }
28 | }
29 | h1 {
30 | margin-bottom: $baseline;
31 | font-size: 30px;
32 | line-height: $baseline * 2;
33 | small {
34 | font-size: 18px;
35 | }
36 | }
37 | h2 {
38 | font-size: 24px;
39 | line-height: $baseline * 2;
40 | small {
41 | font-size: 14px;
42 | }
43 | }
44 | h3, h4, h5, h6 {
45 | line-height: $baseline * 2;
46 | }
47 | h3 {
48 | font-size: 18px;
49 | small {
50 | font-size: 14px;
51 | }
52 | }
53 | h4 {
54 | font-size: 16px;
55 | small {
56 | font-size: 12px;
57 | }
58 | }
59 | h5 {
60 | font-size: 14px;
61 | }
62 | h6 {
63 | font-size: 13px;
64 | color: $grayLight;
65 | text-transform: uppercase;
66 | }
67 |
68 |
69 | // COLORS
70 | // ------
71 |
72 | // Unordered and Ordered lists
73 | ul, ol {
74 | margin: 0 0 $baseline 25px;
75 | }
76 | ul ul,
77 | ul ol,
78 | ol ol,
79 | ol ul {
80 | margin-bottom: 0;
81 | }
82 | ul {
83 | list-style: disc;
84 | }
85 | ol {
86 | list-style: decimal;
87 | }
88 | li {
89 | line-height: $baseline;
90 | color: $gray;
91 | }
92 | ul.unstyled {
93 | list-style: none;
94 | margin-left: 0;
95 | }
96 |
97 | // Description Lists
98 | dl {
99 | margin-bottom: $baseline;
100 | dt, dd {
101 | line-height: $baseline;
102 | }
103 | dt {
104 | font-weight: bold;
105 | }
106 | dd {
107 | margin-left: $baseline / 2;
108 | }
109 | }
110 |
111 | // MISC
112 | // ----
113 |
114 | // Horizontal rules
115 | hr {
116 | margin: 20px 0 19px;
117 | border: 0;
118 | border-bottom: 1px solid #eee;
119 | }
120 |
121 | // Emphasis
122 | strong {
123 | font-style: inherit;
124 | font-weight: bold;
125 | }
126 | em {
127 | font-style: italic;
128 | font-weight: inherit;
129 | line-height: inherit;
130 | }
131 | .muted {
132 | color: $grayLight;
133 | }
134 |
135 | // Blockquotes
136 | blockquote {
137 | margin-bottom: $baseline;
138 | border-left: 5px solid #eee;
139 | padding-left: 15px;
140 | p {
141 | @include font-shorthand(300,14px,$baseline);
142 | margin-bottom: 0;
143 | }
144 | small {
145 | display: block;
146 | @include font-shorthand(300,12px,$baseline);
147 | color: $grayLight;
148 | &:before {
149 | content: '\2014 \00A0';
150 | }
151 | }
152 | }
153 |
154 | // Addresses
155 | address {
156 | display: block;
157 | line-height: $baseline;
158 | margin-bottom: $baseline;
159 | }
160 |
161 | // Inline and block code styles
162 | code, pre {
163 | padding: 0 3px 2px;
164 | font-family: Monaco, Andale Mono, Courier New, monospace;
165 | font-size: 12px;
166 | @include border-radius(3px);
167 | }
168 | code {
169 | background-color: lighten($orange, 40%);
170 | color: rgba(0,0,0,.75);
171 | padding: 1px 3px;
172 | }
173 | pre {
174 | background-color: #f5f5f5;
175 | display: block;
176 | padding: ($baseline - 1) / 2;
177 | margin: 0 0 $baseline;
178 | line-height: $baseline;
179 | font-size: 12px;
180 | border: 1px solid #ccc;
181 | border: 1px solid rgba(0,0,0,.15);
182 | @include border-radius(3px);
183 | white-space: pre;
184 | white-space: pre-wrap;
185 | word-wrap: break-word;
186 |
187 | }
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/variables.scss:
--------------------------------------------------------------------------------
1 | /* Variables.less
2 | * Variables to customize the look and feel of Bootstrap
3 | * ----------------------------------------------------- */
4 |
5 |
6 | // Links
7 | $linkColor: #0069d6;
8 | $linkColorHover: darken($linkColor, 15);
9 |
10 | // Grays
11 | $black: #000;
12 | $grayDark: lighten($black, 25%);
13 | $gray: lighten($black, 50%);
14 | $grayLight: lighten($black, 75%);
15 | $grayLighter: lighten($black, 90%);
16 | $white: #fff;
17 |
18 | // Accent Colors
19 | $blue: #049CDB;
20 | $blueDark: #0064CD;
21 | $green: #46a546;
22 | $red: #9d261d;
23 | $yellow: #ffc40d;
24 | $orange: #f89406;
25 | $pink: #c3325f;
26 | $purple: #7a43b6;
27 |
28 | // Baseline grid
29 | $basefont: 13px;
30 | $baseline: 18px;
31 |
32 | // Griditude
33 | // Modify the grid styles in mixins.less
34 | $gridColumns: 16;
35 | $gridColumnWidth: 40px;
36 | $gridGutterWidth: 20px;
37 | $extraSpace: ($gridGutterWidth * 2); // For our grid calculations
38 | $siteWidth: ($gridColumns * $gridColumnWidth) + ($gridGutterWidth * ($gridColumns - 1));
39 |
40 | // Color Scheme
41 | // Use this to roll your own color schemes if you like (unused by Bootstrap by default)
42 | $baseColor: $blue; // Set a base color
43 | $complement: spin($baseColor, 180); // Determine a complementary color
44 | $split1: spin($baseColor, 158); // Split complements
45 | $split2: spin($baseColor, -158);
46 | $triad1: spin($baseColor, 135); // Triads colors
47 | $triad2: spin($baseColor, -135);
48 | $tetra1: spin($baseColor, 90); // Tetra colors
49 | $tetra2: spin($baseColor, -90);
50 | $analog1: spin($baseColor, 22); // Analogs colors
51 | $analog2: spin($baseColor, -22);
52 |
53 |
54 |
55 | // More variables coming soon:
56 | // - $basefont to $baseFontSize
57 | // - $baseline to $baseLineHeight
58 | // - $baseFontFamily
59 | // - $primaryButtonColor
60 | // - anything else? File an issue on GitHub
--------------------------------------------------------------------------------
/vendor/twitter/.gitignore:
--------------------------------------------------------------------------------
1 | *~
2 | .DS_Store
3 | thumbs.db
4 | .sass-cache
5 |
--------------------------------------------------------------------------------
/vendor/twitter/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.
--------------------------------------------------------------------------------
/vendor/twitter/Makefile:
--------------------------------------------------------------------------------
1 | VERSION=1.3.0
2 | DATE=$(shell DATE)
3 | BOOTSTRAP = ./bootstrap.css
4 | BOOTSTRAP_MIN = ./bootstrap.min.css
5 | BOOTSTRAP_SCSS = ./lib/bootstrap.scss
6 | SASS_COMPESSOR ?= `which sass`
7 | WATCHR ?= `which watchr`
8 |
9 | build:
10 | @@if test ! -z ${SASS_COMPESSOR}; then \
11 | sed -e 's/@VERSION/'"v${VERSION}"'/' -e 's/@DATE/'"${DATE}"'/' <${BOOTSTRAP_SCSS} >${BOOTSTRAP_SCSS}.tmp; \
12 | sass --scss ${BOOTSTRAP_SCSS}.tmp ${BOOTSTRAP}; \
13 | sass --scss --style=compressed ${BOOTSTRAP_SCSS}.tmp ${BOOTSTRAP_MIN}; \
14 | rm -f ${BOOTSTRAP_SCSS}.tmp; \
15 | echo "Bootstrap successfully built! - `date`"; \
16 | else \
17 | echo "You must have the SASS gem installed in order to build Bootstrap."; \
18 | echo "You can install it by running: gem install sass"; \
19 | fi
20 |
21 | watch:
22 | @@if test ! -z ${WATCHR}; then \
23 | echo "Watching scss files..."; \
24 | watchr -e "watch('lib/.*\.scss') { system 'make' }"; \
25 | else \
26 | echo "You must have the watchr installed in order to watch Bootstrap scss files."; \
27 | echo "You can install it by running: gem install watchr"; \
28 | fi
29 |
30 | .PHONY: build watch
--------------------------------------------------------------------------------
/vendor/twitter/README.md:
--------------------------------------------------------------------------------
1 | TWITTER BOOTSTRAP
2 | =================
3 |
4 | Bootstrap is Twitter's toolkit for kickstarting CSS for websites, apps, and more. It includes base CSS styles for typography, forms, buttons, tables, grids, navigation, alerts, and more.
5 |
6 | To get started -- checkout http://twitter.github.com/bootstrap!
7 |
8 |
9 | Usage
10 | -----
11 |
12 | With Rails 3.1 use [anjlab-bootstrap-rails gem](https://github.com/anjlab/bootstrap-rails)
13 |
14 | If you prefer, the standard css way:
15 |
16 | ``` html
17 |
18 | ```
19 |
20 | For more info, refer to the docs!
21 |
22 |
23 | Versioning
24 | ----------
25 |
26 | For transparency and insight into our release cycle, and for striving to maintain backwards compatibility, Bootstrap will be maintained under the Semantic Versioning guidelines as much as possible.
27 |
28 | Releases will be numbered with the follow format:
29 |
30 | `..`
31 |
32 | And constructed with the following guidelines:
33 |
34 | * Breaking backwards compatibility bumps the major
35 | * New additions without breaking backwards compatibility bumps the minor
36 | * Bug fixes and misc changes bump the patch
37 |
38 | For more information on SemVer, please visit http://semver.org/.
39 |
40 |
41 | Bug tracker
42 | -----------
43 |
44 | Have a bug? Please create an issue here on GitHub!
45 |
46 | https://github.com/twitter/bootstrap/issues
47 |
48 |
49 | Twitter account
50 | ---------------
51 |
52 | Keep up to date on announcements and more by following Bootstrap on Twitter, @TwBootstrap .
53 |
54 |
55 | Mailing list
56 | ------------
57 |
58 | Have a question? Ask on our mailing list!
59 |
60 | twitter-bootstrap@googlegroups.com
61 |
62 | http://groups.google.com/group/twitter-bootstrap
63 |
64 |
65 | Developers
66 | ----------
67 |
68 | We have included a makefile with convenience methods for working with the bootstrap library.
69 |
70 | + **build** - `make build`
71 | This will run the less compiler on the bootstrap lib and generate a bootstrap.css and bootstrap.min.css file.
72 | The lessc compiler is required for this command to run.
73 |
74 | + **watch** - `make watch`
75 | This is a convenience method for watching your less files and automatically building them whenever you save.
76 | Watchr is required for this command to run.
77 |
78 |
79 | Authors
80 | -------
81 |
82 | **Mark Otto**
83 |
84 | + http://twitter.com/mdo
85 | + http://github.com/markdotto
86 |
87 | **Jacob Thornton**
88 |
89 | + http://twitter.com/fat
90 | + http://github.com/fat
91 |
92 |
93 | Copyright and license
94 | ---------------------
95 |
96 | Copyright 2011 Twitter, Inc.
97 |
98 | Licensed under the Apache License, Version 2.0 (the "License");
99 | you may not use this work except in compliance with the License.
100 | You may obtain a copy of the License in the LICENSE file, or at:
101 |
102 | http://www.apache.org/licenses/LICENSE-2.0
103 |
104 | Unless required by applicable law or agreed to in writing, software
105 | distributed under the License is distributed on an "AS IS" BASIS,
106 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
107 | See the License for the specific language governing permissions and
108 | limitations under the License.
109 |
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/css/docs.css:
--------------------------------------------------------------------------------
1 | /* Add additional stylesheets below
2 | -------------------------------------------------- */
3 | /*
4 | Bootstrap's documentation styles
5 | Special styles for presenting Bootstrap's documentation and examples
6 | */
7 |
8 | /* Body and structure
9 | -------------------------------------------------- */
10 | body {
11 | background-color: #fff;
12 | position: relative;
13 | }
14 | section {
15 | padding-top: 60px;
16 | }
17 | section > .row {
18 | margin-bottom: 10px;
19 | }
20 |
21 |
22 | /* Jumbotrons
23 | -------------------------------------------------- */
24 | .jumbotron {
25 | min-width: 940px;
26 | padding-top: 40px;
27 | }
28 | .jumbotron .inner {
29 | background: transparent url(../img/grid-18px.png) top center;
30 | padding: 45px 0;
31 | -webkit-box-shadow: inset 0 10px 30px rgba(0,0,0,.3);
32 | -moz-box-shadow: inset 0 10px 30px rgba(0,0,0,.3);
33 | /* box-shadow: inset 0 10px 30px rgba(0,0,0,.3);
34 | */}
35 | .jumbotron h1,
36 | .jumbotron p {
37 | margin-bottom: 9px;
38 | color: #fff;
39 | text-align: center;
40 | text-shadow: 0 1px 1px rgba(0,0,0,.3);
41 | }
42 | .jumbotron h1 {
43 | font-size: 54px;
44 | line-height: 1;
45 | text-shadow: 0 1px 2px rgba(0,0,0,.5);
46 | }
47 | .jumbotron p {
48 | font-weight: 300;
49 | }
50 | .jumbotron .lead {
51 | font-size: 20px;
52 | line-height: 27px;
53 | }
54 | .jumbotron p a {
55 | color: #fff;
56 | font-weight: bold;
57 | }
58 |
59 | /* Specific jumbotrons
60 | ------------------------- */
61 | /* main docs page */
62 | .masthead {
63 | background-color: #049cd9;
64 | background-repeat: no-repeat;
65 | background-image: -webkit-gradient(linear, left top, left bottom, from(#004D9F), to(#049cd9));
66 | background-image: -webkit-linear-gradient(#004D9F, #049cd9);
67 | background-image: -moz-linear-gradient(#004D9F, #049cd9);
68 | background-image: -o-linear-gradient(top, #004D9F, #049cd9);
69 | background-image: -khtml-gradient(linear, left top, left bottom, from(#004D9F), to(#049cd9));
70 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#004D9F', endColorstr='#049cd9', GradientType=0); /* IE8 and down */
71 | }
72 | /* supporting docs pages */
73 | .subhead {
74 | background-color: #767d80;
75 | background-repeat: no-repeat;
76 | background-image: -webkit-gradient(linear, left top, left bottom, from(#565d60), to(#767d80));
77 | background-image: -webkit-linear-gradient(#565d60, #767d80);
78 | background-image: -moz-linear-gradient(#565d60, #767d80);
79 | background-image: -o-linear-gradient(top, #565d60, #767d80);
80 | background-image: -khtml-gradient(linear, left top, left bottom, from(#565d60), to(#767d80));
81 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#565d60', endColorstr='#767d80', GradientType=0); /* IE8 and down */
82 | }
83 | .subhead .inner {
84 | padding: 36px 0 27px;
85 | }
86 | .subhead h1,
87 | .subhead p {
88 | text-align: left;
89 | }
90 | .subhead h1 {
91 | font-size: 40px;
92 | }
93 | .subhead p a {
94 | font-weight: normal;
95 | }
96 |
97 |
98 | /* Footer
99 | -------------------------------------------------- */
100 | .footer {
101 | background-color: #eee;
102 | min-width: 940px;
103 | padding: 30px 0;
104 | text-shadow: 0 1px 0 #fff;
105 | border-top: 1px solid #e5e5e5;
106 | -webkit-box-shadow: inset 0 5px 15px rgba(0,0,0,.025);
107 | -moz-box-shadow: inset 0 5px 15px rgba(0,0,0,.025);
108 | /* box-shadow: inset 0 5px 15px rgba(0,0,0,.025);
109 | */}
110 | .footer p {
111 | color: #555;
112 | }
113 |
114 |
115 | /* Quickstart section for getting le code
116 | -------------------------------------------------- */
117 | .quickstart {
118 | background-color: #f5f5f5;
119 | background-repeat: repeat-x;
120 | background-image: -khtml-gradient(linear, left top, left bottom, from(#f9f9f9), to(#f5f5f5));
121 | background-image: -moz-linear-gradient(#f9f9f9, #f5f5f5);
122 | background-image: -ms-linear-gradient(#f9f9f9, #f5f5f5);
123 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f9f9f9), color-stop(100%, #f5f5f5));
124 | background-image: -webkit-linear-gradient(#f9f9f9, #f5f5f5);
125 | background-image: -o-linear-gradient(#f9f9f9, #f5f5f5);
126 | -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#f5f5f5', GradientType=0)";
127 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#f5f5f5', GradientType=0);
128 | background-image: linear-gradient(#f9f9f9, #f5f5f5);
129 | border-top: 1px solid #fff;
130 | border-bottom: 1px solid #eee;
131 | }
132 | .quickstart .container {
133 | margin-bottom: 0;
134 | }
135 | .quickstart .row {
136 | margin: 0 -20px;
137 | -webkit-box-shadow: 1px 0 0 #f9f9f9;
138 | -moz-box-shadow: 1px 0 0 #f9f9f9;
139 | box-shadow: 1px 0 0 #f9f9f9;
140 | }
141 | .quickstart [class*="span"] {
142 | width: 285px;
143 | height: 117px;
144 | margin-left: 0;
145 | padding: 17px 20px 26px;
146 | border-left: 1px solid #eee;
147 | -webkit-box-shadow: inset 1px 0 0 #f9f9f9;
148 | -moz-box-shadow: inset 1px 0 0 #f9f9f9;
149 | box-shadow: inset 1px 0 0 #f9f9f9;
150 | }
151 | .quickstart [class*="span"]:last-child {
152 | border-right: 1px solid #eee;
153 | width: 286px;
154 | }
155 | .quickstart h6,
156 | .quickstart p {
157 | line-height: 18px;
158 | text-align: center;
159 | margin-bottom: 9px;
160 | color: #333;
161 | }
162 | .quickstart .current-version,
163 | .quickstart .current-version a {
164 | color: #999;
165 | }
166 | .quickstart h6 {
167 | color: #999;
168 | }
169 | .quickstart textarea {
170 | display: block;
171 | width: 275px;
172 | height: auto;
173 | margin: 0 0 9px;
174 | line-height: 21px;
175 | white-space: nowrap;
176 | overflow: hidden;
177 | }
178 |
179 |
180 | /* Special grid styles
181 | -------------------------------------------------- */
182 | .show-grid {
183 | margin-top: 10px;
184 | margin-bottom: 10px;
185 | }
186 | .show-grid [class*="span"] {
187 | background: #eee;
188 | text-align: center;
189 | -webkit-border-radius: 3px;
190 | -moz-border-radius: 3px;
191 | border-radius: 3px;
192 | min-height: 30px;
193 | line-height: 30px;
194 | }
195 | .show-grid:hover [class*="span"] {
196 | background: #ddd;
197 | }
198 | .show-grid .show-grid {
199 | margin-top: 0;
200 | margin-bottom: 0;
201 | }
202 | .show-grid .show-grid [class*="span"] {
203 | background-color: #ccc;
204 | }
205 |
206 |
207 | /* Render mini layout previews
208 | -------------------------------------------------- */
209 | .mini-layout {
210 | border: 1px solid #ddd;
211 | -webkit-border-radius: 6px;
212 | -moz-border-radius: 6px;
213 | border-radius: 6px;
214 | -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.075);
215 | -moz-box-shadow: 0 1px 2px rgba(0,0,0,.075);
216 | box-shadow: 0 1px 2px rgba(0,0,0,.075);
217 | }
218 | .mini-layout {
219 | height: 240px;
220 | margin-bottom: 20px;
221 | padding: 9px;
222 | }
223 | .mini-layout div {
224 | -webkit-border-radius: 3px;
225 | -moz-border-radius: 3px;
226 | border-radius: 3px;
227 | }
228 | .mini-layout .mini-layout-body {
229 | background-color: #dceaf4;
230 | margin: 0 auto;
231 | width: 240px;
232 | height: 240px;
233 | }
234 | .mini-layout.fluid .mini-layout-sidebar,
235 | .mini-layout.fluid .mini-layout-header,
236 | .mini-layout.fluid .mini-layout-body {
237 | float: left;
238 | }
239 | .mini-layout.fluid .mini-layout-sidebar {
240 | background-color: #bbd8e9;
241 | width: 90px;
242 | height: 240px;
243 | }
244 | .mini-layout.fluid .mini-layout-body {
245 | width: 300px;
246 | margin-left: 10px;
247 | }
248 |
249 |
250 | /* Topbar special styles
251 | -------------------------------------------------- */
252 | .topbar-wrapper {
253 | position: relative;
254 | height: 40px;
255 | margin: 5px 0 15px;
256 | }
257 | .topbar-wrapper .topbar {
258 | position: absolute;
259 | margin: 0 -20px;
260 | }
261 | .topbar-wrapper .topbar .topbar-inner {
262 | padding-left: 20px;
263 | padding-right: 20px;
264 | -webkit-border-radius: 4px;
265 | -moz-border-radius: 4px;
266 | border-radius: 4px;
267 | }
268 |
269 | /* Topbar in js docs
270 | ------------------------- */
271 | #bootstrap-js .topbar-wrapper {
272 | z-index: 1;
273 | }
274 | #bootstrap-js .topbar-wrapper .topbar {
275 | position: absolute;
276 | margin: 0 -20px;
277 | }
278 | #bootstrap-js .topbar-wrapper .topbar .topbar-inner {
279 | padding-left: 20px;
280 | padding-right: 20px;
281 | -webkit-border-radius: 4px;
282 | -moz-border-radius: 4px;
283 | border-radius: 4px;
284 | }
285 | #bootstrap-js .topbar-wrapper .container {
286 | width: auto;
287 | }
288 |
289 |
290 | /* Popover docs
291 | -------------------------------------------------- */
292 | .popover-well {
293 | min-height: 160px;
294 | }
295 | .popover-well .popover {
296 | display: block;
297 | }
298 | .popover-well .popover-wrapper {
299 | width: 50%;
300 | height: 160px;
301 | float: left;
302 | margin-left: 55px;
303 | position: relative;
304 | }
305 | .popover-well .popover-menu-wrapper {
306 | height: 80px;
307 | }
308 | img.large-bird {
309 | margin: 5px 0 0 310px;
310 | opacity: .1;
311 | }
312 |
313 | /* Pretty Print
314 | -------------------------------------------------- */
315 | pre.prettyprint {
316 | overflow: hidden;
317 | }
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/ico/bootstrap-apple-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/ico/bootstrap-apple-114x114.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/ico/bootstrap-apple-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/ico/bootstrap-apple-57x57.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/ico/bootstrap-apple-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/ico/bootstrap-apple-72x72.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/ico/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/ico/favicon.ico
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/img/bird.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/img/bird.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/img/browsers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/img/browsers.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/img/example-diagram-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/img/example-diagram-01.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/img/example-diagram-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/img/example-diagram-02.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/img/example-diagram-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/img/example-diagram-03.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/img/grid-18px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/img/grid-18px.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/img/twitter-logo-no-bird.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xdite/bootstrap-rails/7fe2d48ef0b01de7b16aa927465d83c768e3769e/vendor/twitter/docs/assets/img/twitter-logo-no-bird.png
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/js/application.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function(){
2 |
3 | // table sort example
4 | // ==================
5 |
6 | $("#sortTableExample").tablesorter( { sortList: [[ 1, 0 ]] } )
7 |
8 |
9 | // add on logic
10 | // ============
11 |
12 | $('.add-on :checkbox').click(function () {
13 | if ($(this).attr('checked')) {
14 | $(this).parents('.add-on').addClass('active')
15 | } else {
16 | $(this).parents('.add-on').removeClass('active')
17 | }
18 | })
19 |
20 |
21 | // Disable certain links in docs
22 | // =============================
23 | // Please do not carry these styles over to your projects, it's merely here to prevent button clicks form taking you away from your spot on page
24 |
25 | $('ul.tabs a, ul.pills a, .pagination a, .well .btn, .actions .btn, .alert-message .btn, a.close').click(function (e) {
26 | e.preventDefault()
27 | })
28 |
29 | // Copy code blocks in docs
30 | $(".copy-code").focus(function () {
31 | var el = this;
32 | // push select to event loop for chrome :{o
33 | setTimeout(function () { $(el).select(); }, 0);
34 | });
35 |
36 |
37 | // POSITION STATIC TWIPSIES
38 | // ========================
39 |
40 | $(window).bind( 'load resize', function () {
41 | $(".twipsies a").each(function () {
42 | $(this)
43 | .twipsy({
44 | live: false
45 | , placement: $(this).attr('title')
46 | , trigger: 'manual'
47 | , offset: 2
48 | })
49 | .twipsy('show')
50 | })
51 | })
52 | });
53 |
--------------------------------------------------------------------------------
/vendor/twitter/docs/assets/js/google-code-prettify/prettify.css:
--------------------------------------------------------------------------------
1 | .com { color: #93a1a1; }
2 | .lit { color: #195f91; }
3 | .pun, .opn, .clo { color: #93a1a1; }
4 | .fun { color: #dc322f; }
5 | .str, .atv { color: #268bd2; }
6 | .kwd, .tag { color: #195f91; }
7 | .typ, .atn, .dec, .var { color: #CB4B16; }
8 | .pln { color: #93a1a1; }
9 | pre.prettyprint {
10 | background: #fefbf3;
11 | padding: 9px;
12 | border: 1px solid rgba(0,0,0,.2);
13 | -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.1);
14 | -moz-box-shadow: 0 1px 2px rgba(0,0,0,.1);
15 | box-shadow: 0 1px 2px rgba(0,0,0,.1);
16 | }
17 |
18 | /* Specify class=linenums on a pre to get line numbering */
19 | ol.linenums { margin: 0 0 0 40px; } /* IE indents via margin-left */
20 | ol.linenums li { color: rgba(0,0,0,.15); line-height: 20px; }
21 | /* Alternate shading for lines */
22 | li.L1, li.L3, li.L5, li.L7, li.L9 { }
23 |
24 | /*
25 | $base03: #002b36;
26 | $base02: #073642;
27 | $base01: #586e75;
28 | $base00: #657b83;
29 | $base0: #839496;
30 | $base1: #93a1a1;
31 | $base2: #eee8d5;
32 | $base3: #fdf6e3;
33 | $yellow: #b58900;
34 | $orange: #cb4b16;
35 | $red: #dc322f;
36 | $magenta: #d33682;
37 | $violet: #6c71c4;
38 | $blue: #268bd2;
39 | $cyan: #2aa198;
40 | $green: #859900;
41 | */
--------------------------------------------------------------------------------
/vendor/twitter/examples/container-app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
95 |
96 |
97 |
98 |
99 |
102 |
103 |
104 |
Main content
105 |
106 |
107 |
Secondary content
108 |
109 |
110 |
111 |
112 |
113 | © Company 2011
114 |
115 |
116 |
117 |
118 |
119 |
120 |
--------------------------------------------------------------------------------
/vendor/twitter/examples/fluid.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
44 |
45 |
46 |
71 |
72 |
73 |
74 |
Hello, world!
75 |
Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.
76 |
Learn more »
77 |
78 |
79 |
80 |
81 |
82 |
Heading
83 |
Etiam porta sem malesuada magna mollis euismod. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.
84 |
View details »
85 |
86 |
87 |
Heading
88 |
Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
89 |
View details »
90 |
91 |
92 |
Heading
93 |
Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
94 |
View details »
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
Heading
104 |
Etiam porta sem malesuada magna mollis euismod. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.
105 |
View details »
106 |
107 |
108 |
Heading
109 |
Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
110 |
View details »
111 |
112 |
113 |
Heading
114 |
Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
115 |
View details »
116 |
117 |
118 |
119 |
120 | © Company 2011
121 |
122 |
123 |
124 |
125 |
126 |
--------------------------------------------------------------------------------
/vendor/twitter/examples/hero.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
43 |
44 |
45 |
46 |
47 |
48 |
Hello, world!
49 |
Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.
50 |
Learn more »
51 |
52 |
53 |
54 |
55 |
56 |
Heading
57 |
Etiam porta sem malesuada magna mollis euismod. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.
58 |
View details »
59 |
60 |
61 |
Heading
62 |
Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
63 |
View details »
64 |
65 |
66 |
Heading
67 |
Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
68 |
View details »
69 |
70 |
71 |
72 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/vendor/twitter/js/bootstrap-alerts.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-alerts.js v1.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#alerts
4 | * ==========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function( $ ){
22 |
23 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
24 | * ======================================================= */
25 |
26 | var transitionEnd
27 |
28 | $(document).ready(function () {
29 |
30 | $.support.transition = (function () {
31 | var thisBody = document.body || document.documentElement
32 | , thisStyle = thisBody.style
33 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
34 | return support
35 | })()
36 |
37 | // set CSS transition event type
38 | if ( $.support.transition ) {
39 | transitionEnd = "TransitionEnd"
40 | if ( $.browser.webkit ) {
41 | transitionEnd = "webkitTransitionEnd"
42 | } else if ( $.browser.mozilla ) {
43 | transitionEnd = "transitionend"
44 | } else if ( $.browser.opera ) {
45 | transitionEnd = "oTransitionEnd"
46 | }
47 | }
48 |
49 | })
50 |
51 | /* ALERT CLASS DEFINITION
52 | * ====================== */
53 |
54 | var Alert = function ( content, options ) {
55 | this.settings = $.extend({}, $.fn.alert.defaults, options)
56 | this.$element = $(content)
57 | .delegate(this.settings.selector, 'click', this.close)
58 | }
59 |
60 | Alert.prototype = {
61 |
62 | close: function (e) {
63 | var $element = $(this).parent('.alert-message')
64 |
65 | e && e.preventDefault()
66 | $element.removeClass('in')
67 |
68 | function removeElement () {
69 | $element.remove()
70 | }
71 |
72 | $.support.transition && $element.hasClass('fade') ?
73 | $element.bind(transitionEnd, removeElement) :
74 | removeElement()
75 | }
76 |
77 | }
78 |
79 |
80 | /* ALERT PLUGIN DEFINITION
81 | * ======================= */
82 |
83 | $.fn.alert = function ( options ) {
84 |
85 | if ( options === true ) {
86 | return this.data('alert')
87 | }
88 |
89 | return this.each(function () {
90 | var $this = $(this)
91 |
92 | if ( typeof options == 'string' ) {
93 | return $this.data('alert')[options]()
94 | }
95 |
96 | $(this).data('alert', new Alert( this, options ))
97 |
98 | })
99 | }
100 |
101 | $.fn.alert.defaults = {
102 | selector: '.close'
103 | }
104 |
105 | $(document).ready(function () {
106 | new Alert($('body'), {
107 | selector: '.alert-message[data-alert] .close'
108 | })
109 | })
110 |
111 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/twitter/js/bootstrap-dropdown.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-dropdown.js v1.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#dropdown
4 | * ============================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function( $ ){
22 |
23 | /* DROPDOWN PLUGIN DEFINITION
24 | * ========================== */
25 |
26 | $.fn.dropdown = function ( selector ) {
27 | return this.each(function () {
28 | $(this).delegate(selector || d, 'click', function (e) {
29 | var li = $(this).parent('li')
30 | , isActive = li.hasClass('open')
31 |
32 | clearMenus()
33 | !isActive && li.toggleClass('open')
34 | return false
35 | })
36 | })
37 | }
38 |
39 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
40 | * =================================== */
41 |
42 | var d = 'a.menu, .dropdown-toggle'
43 |
44 | function clearMenus() {
45 | $(d).parent('li').removeClass('open')
46 | }
47 |
48 | $(function () {
49 | $('html').bind("click", clearMenus)
50 | $('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' )
51 | })
52 |
53 | }( window.jQuery || window.ender );
54 |
--------------------------------------------------------------------------------
/vendor/twitter/js/bootstrap-modal.js:
--------------------------------------------------------------------------------
1 | /* =========================================================
2 | * bootstrap-modal.js v1.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#modal
4 | * =========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================= */
19 |
20 |
21 | !function( $ ){
22 |
23 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
24 | * ======================================================= */
25 |
26 | var transitionEnd
27 |
28 | $(document).ready(function () {
29 |
30 | $.support.transition = (function () {
31 | var thisBody = document.body || document.documentElement
32 | , thisStyle = thisBody.style
33 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
34 | return support
35 | })()
36 |
37 | // set CSS transition event type
38 | if ( $.support.transition ) {
39 | transitionEnd = "TransitionEnd"
40 | if ( $.browser.webkit ) {
41 | transitionEnd = "webkitTransitionEnd"
42 | } else if ( $.browser.mozilla ) {
43 | transitionEnd = "transitionend"
44 | } else if ( $.browser.opera ) {
45 | transitionEnd = "oTransitionEnd"
46 | }
47 | }
48 |
49 | })
50 |
51 |
52 | /* MODAL PUBLIC CLASS DEFINITION
53 | * ============================= */
54 |
55 | var Modal = function ( content, options ) {
56 | this.settings = $.extend({}, $.fn.modal.defaults, options)
57 | this.$element = $(content)
58 | .delegate('.close', 'click.modal', $.proxy(this.hide, this))
59 |
60 | if ( this.settings.show ) {
61 | this.show()
62 | }
63 |
64 | return this
65 | }
66 |
67 | Modal.prototype = {
68 |
69 | toggle: function () {
70 | return this[!this.isShown ? 'show' : 'hide']()
71 | }
72 |
73 | , show: function () {
74 | var that = this
75 | this.isShown = true
76 | this.$element.trigger('show')
77 |
78 | escape.call(this)
79 | backdrop.call(this, function () {
80 | var transition = $.support.transition && that.$element.hasClass('fade')
81 |
82 | that.$element
83 | .appendTo(document.body)
84 | .show()
85 |
86 | if (transition) {
87 | that.$element[0].offsetWidth // force reflow
88 | }
89 |
90 | that.$element
91 | .addClass('in')
92 |
93 | transition ?
94 | that.$element.one(transitionEnd, function () { that.$element.trigger('shown') }) :
95 | that.$element.trigger('shown')
96 |
97 | })
98 |
99 | return this
100 | }
101 |
102 | , hide: function (e) {
103 | e && e.preventDefault()
104 |
105 | if ( !this.isShown ) {
106 | return this
107 | }
108 |
109 | var that = this
110 | this.isShown = false
111 |
112 | escape.call(this)
113 |
114 | this.$element
115 | .trigger('hide')
116 | .removeClass('in')
117 |
118 | function removeElement () {
119 | that.$element
120 | .hide()
121 | .trigger('hidden')
122 |
123 | backdrop.call(that)
124 | }
125 |
126 | $.support.transition && this.$element.hasClass('fade') ?
127 | this.$element.one(transitionEnd, removeElement) :
128 | removeElement()
129 |
130 | return this
131 | }
132 |
133 | }
134 |
135 |
136 | /* MODAL PRIVATE METHODS
137 | * ===================== */
138 |
139 | function backdrop ( callback ) {
140 | var that = this
141 | , animate = this.$element.hasClass('fade') ? 'fade' : ''
142 | if ( this.isShown && this.settings.backdrop ) {
143 | var doAnimate = $.support.transition && animate
144 |
145 | this.$backdrop = $('
')
146 | .appendTo(document.body)
147 |
148 | if ( this.settings.backdrop != 'static' ) {
149 | this.$backdrop.click($.proxy(this.hide, this))
150 | }
151 |
152 | if ( doAnimate ) {
153 | this.$backdrop[0].offsetWidth // force reflow
154 | }
155 |
156 | this.$backdrop.addClass('in')
157 |
158 | doAnimate ?
159 | this.$backdrop.one(transitionEnd, callback) :
160 | callback()
161 |
162 | } else if ( !this.isShown && this.$backdrop ) {
163 | this.$backdrop.removeClass('in')
164 |
165 | function removeElement() {
166 | that.$backdrop.remove()
167 | that.$backdrop = null
168 | }
169 |
170 | $.support.transition && this.$element.hasClass('fade')?
171 | this.$backdrop.one(transitionEnd, removeElement) :
172 | removeElement()
173 | } else if ( callback ) {
174 | callback()
175 | }
176 | }
177 |
178 | function escape() {
179 | var that = this
180 | if ( this.isShown && this.settings.keyboard ) {
181 | $(document).bind('keyup.modal', function ( e ) {
182 | if ( e.which == 27 ) {
183 | that.hide()
184 | }
185 | })
186 | } else if ( !this.isShown ) {
187 | $(document).unbind('keyup.modal')
188 | }
189 | }
190 |
191 |
192 | /* MODAL PLUGIN DEFINITION
193 | * ======================= */
194 |
195 | $.fn.modal = function ( options ) {
196 | var modal = this.data('modal')
197 |
198 | if (!modal) {
199 |
200 | if (typeof options == 'string') {
201 | options = {
202 | show: /show|toggle/.test(options)
203 | }
204 | }
205 |
206 | return this.each(function () {
207 | $(this).data('modal', new Modal(this, options))
208 | })
209 | }
210 |
211 | if ( options === true ) {
212 | return modal
213 | }
214 |
215 | if ( typeof options == 'string' ) {
216 | modal[options]()
217 | } else if ( modal ) {
218 | modal.toggle()
219 | }
220 |
221 | return this
222 | }
223 |
224 | $.fn.modal.Modal = Modal
225 |
226 | $.fn.modal.defaults = {
227 | backdrop: false
228 | , keyboard: false
229 | , show: false
230 | }
231 |
232 |
233 | /* MODAL DATA- IMPLEMENTATION
234 | * ========================== */
235 |
236 | $(document).ready(function () {
237 | $('body').delegate('[data-controls-modal]', 'click', function (e) {
238 | e.preventDefault()
239 | var $this = $(this).data('show', true)
240 | $('#' + $this.attr('data-controls-modal')).modal( $this.data() )
241 | })
242 | })
243 |
244 | }( window.jQuery || window.ender );
245 |
--------------------------------------------------------------------------------
/vendor/twitter/js/bootstrap-popover.js:
--------------------------------------------------------------------------------
1 | /* ===========================================================
2 | * bootstrap-popover.js v1.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#popover
4 | * ===========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * =========================================================== */
19 |
20 |
21 | !function( $ ) {
22 |
23 | var Popover = function ( element, options ) {
24 | this.$element = $(element)
25 | this.options = options
26 | this.enabled = true
27 | this.fixTitle()
28 | }
29 |
30 | /* NOTE: POPOVER EXTENDS BOOTSTRAP-TWIPSY.js
31 | ========================================= */
32 |
33 | Popover.prototype = $.extend({}, $.fn.twipsy.Twipsy.prototype, {
34 |
35 | setContent: function () {
36 | var $tip = this.tip()
37 | $tip.find('.title')[this.options.html ? 'html' : 'text'](this.getTitle())
38 | $tip.find('.content p')[this.options.html ? 'html' : 'text'](this.getContent())
39 | $tip[0].className = 'popover'
40 | }
41 |
42 | , getContent: function () {
43 | var content
44 | , $e = this.$element
45 | , o = this.options
46 |
47 | if (typeof this.options.content == 'string') {
48 | content = $e.attr(o.content)
49 | } else if (typeof this.options.content == 'function') {
50 | content = this.options.content.call(this.$element[0])
51 | }
52 | return content
53 | }
54 |
55 | , tip: function() {
56 | if (!this.$tip) {
57 | this.$tip = $('
')
58 | .html('
')
59 | }
60 | return this.$tip
61 | }
62 |
63 | })
64 |
65 |
66 | /* POPOVER PLUGIN DEFINITION
67 | * ======================= */
68 |
69 | $.fn.popover = function (options) {
70 | if (typeof options == 'object') options = $.extend({}, $.fn.popover.defaults, options)
71 | $.fn.twipsy.initWith.call(this, options, Popover, 'popover')
72 | return this
73 | }
74 |
75 | $.fn.popover.defaults = $.extend({} , $.fn.twipsy.defaults, { content: 'data-content', placement: 'right'})
76 |
77 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/twitter/js/bootstrap-scrollspy.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-scrollspy.js v1.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4 | * =============================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================== */
19 |
20 |
21 | !function ( $ ) {
22 |
23 | var $window = $(window)
24 |
25 | function ScrollSpy( topbar, selector ) {
26 | var processScroll = $.proxy(this.processScroll, this)
27 | this.$topbar = $(topbar)
28 | this.selector = selector || 'li > a'
29 | this.refresh()
30 | this.$topbar.delegate(this.selector, 'click', processScroll)
31 | $window.scroll(processScroll)
32 | this.processScroll()
33 | }
34 |
35 | ScrollSpy.prototype = {
36 |
37 | refresh: function () {
38 | this.targets = this.$topbar.find(this.selector).map(function () {
39 | var href = $(this).attr('href')
40 | return /^#\w/.test(href) && $(href).length ? href : null
41 | })
42 |
43 | this.offsets = $.map(this.targets, function (id) {
44 | return $(id).offset().top
45 | })
46 | }
47 |
48 | , processScroll: function () {
49 | var scrollTop = $window.scrollTop() + 10
50 | , offsets = this.offsets
51 | , targets = this.targets
52 | , activeTarget = this.activeTarget
53 | , i
54 |
55 | for (i = offsets.length; i--;) {
56 | activeTarget != targets[i]
57 | && scrollTop >= offsets[i]
58 | && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
59 | && this.activateButton( targets[i] )
60 | }
61 | }
62 |
63 | , activateButton: function (target) {
64 | this.activeTarget = target
65 |
66 | this.$topbar
67 | .find(this.selector).parent('.active')
68 | .removeClass('active')
69 |
70 | this.$topbar
71 | .find(this.selector + '[href="' + target + '"]')
72 | .parent('li')
73 | .addClass('active')
74 | }
75 |
76 | }
77 |
78 | /* SCROLLSPY PLUGIN DEFINITION
79 | * =========================== */
80 |
81 | $.fn.scrollSpy = function( options ) {
82 | var scrollspy = this.data('scrollspy')
83 |
84 | if (!scrollspy) {
85 | return this.each(function () {
86 | $(this).data('scrollspy', new ScrollSpy( this, options ))
87 | })
88 | }
89 |
90 | if ( options === true ) {
91 | return scrollspy
92 | }
93 |
94 | if ( typeof options == 'string' ) {
95 | scrollspy[options]()
96 | }
97 |
98 | return this
99 | }
100 |
101 | $(document).ready(function () {
102 | $('body').scrollSpy('[data-scrollspy] li > a')
103 | })
104 |
105 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/twitter/js/bootstrap-tabs.js:
--------------------------------------------------------------------------------
1 | /* ========================================================
2 | * bootstrap-tabs.js v1.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#tabs
4 | * ========================================================
5 | * Copyright 2011 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ======================================================== */
19 |
20 |
21 | !function( $ ){
22 |
23 | function activate ( element, container ) {
24 | container
25 | .find('> .active')
26 | .removeClass('active')
27 | .find('> .dropdown-menu > .active')
28 | .removeClass('active')
29 |
30 | element.addClass('active')
31 |
32 | if ( element.parent('.dropdown-menu') ) {
33 | element.closest('li.dropdown').addClass('active')
34 | }
35 | }
36 |
37 | function tab( e ) {
38 | var $this = $(this)
39 | , $ul = $this.closest('ul:not(.dropdown-menu)')
40 | , href = $this.attr('href')
41 | , previous
42 |
43 | if ( /^#\w+/.test(href) ) {
44 | e.preventDefault()
45 |
46 | if ( $this.parent('li').hasClass('active') ) {
47 | return
48 | }
49 |
50 | previous = $ul.find('.active a').last()[0]
51 | $href = $(href)
52 |
53 | activate($this.parent('li'), $ul)
54 | activate($href, $href.parent())
55 |
56 | $this.trigger({
57 | type: 'change'
58 | , relatedTarget: previous
59 | })
60 | }
61 | }
62 |
63 |
64 | /* TABS/PILLS PLUGIN DEFINITION
65 | * ============================ */
66 |
67 | $.fn.tabs = $.fn.pills = function ( selector ) {
68 | return this.each(function () {
69 | $(this).delegate(selector || '.tabs li > a, .pills > li > a', 'click', tab)
70 | })
71 | }
72 |
73 | $(document).ready(function () {
74 | $('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
75 | })
76 |
77 | }( window.jQuery || window.ender );
78 |
--------------------------------------------------------------------------------
/vendor/twitter/js/bootstrap-twipsy.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-twipsy.js v1.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#twipsy
4 | * Adapted from the original jQuery.tipsy by Jason Frame
5 | * ==========================================================
6 | * Copyright 2011 Twitter, Inc.
7 | *
8 | * Licensed under the Apache License, Version 2.0 (the "License");
9 | * you may not use this file except in compliance with the License.
10 | * You may obtain a copy of the License at
11 | *
12 | * http://www.apache.org/licenses/LICENSE-2.0
13 | *
14 | * Unless required by applicable law or agreed to in writing, software
15 | * distributed under the License is distributed on an "AS IS" BASIS,
16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | * See the License for the specific language governing permissions and
18 | * limitations under the License.
19 | * ========================================================== */
20 |
21 |
22 | !function( $ ) {
23 |
24 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
25 | * ======================================================= */
26 |
27 | var transitionEnd
28 |
29 | $(document).ready(function () {
30 |
31 | $.support.transition = (function () {
32 | var thisBody = document.body || document.documentElement
33 | , thisStyle = thisBody.style
34 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
35 | return support
36 | })()
37 |
38 | // set CSS transition event type
39 | if ( $.support.transition ) {
40 | transitionEnd = "TransitionEnd"
41 | if ( $.browser.webkit ) {
42 | transitionEnd = "webkitTransitionEnd"
43 | } else if ( $.browser.mozilla ) {
44 | transitionEnd = "transitionend"
45 | } else if ( $.browser.opera ) {
46 | transitionEnd = "oTransitionEnd"
47 | }
48 | }
49 |
50 | })
51 |
52 |
53 | /* TWIPSY PUBLIC CLASS DEFINITION
54 | * ============================== */
55 |
56 | var Twipsy = function ( element, options ) {
57 | this.$element = $(element)
58 | this.options = options
59 | this.enabled = true
60 | this.fixTitle()
61 | }
62 |
63 | Twipsy.prototype = {
64 |
65 | show: function() {
66 | var pos
67 | , actualWidth
68 | , actualHeight
69 | , placement
70 | , $tip
71 | , tp
72 |
73 | if (this.getTitle() && this.enabled) {
74 | $tip = this.tip()
75 | this.setContent()
76 |
77 | if (this.options.animate) {
78 | $tip.addClass('fade')
79 | }
80 |
81 | $tip
82 | .remove()
83 | .css({ top: 0, left: 0, display: 'block' })
84 | .prependTo(document.body)
85 |
86 | pos = $.extend({}, this.$element.offset(), {
87 | width: this.$element[0].offsetWidth
88 | , height: this.$element[0].offsetHeight
89 | })
90 |
91 | actualWidth = $tip[0].offsetWidth
92 | actualHeight = $tip[0].offsetHeight
93 |
94 | placement = maybeCall(this.options.placement, this, [ $tip[0], this.$element[0] ])
95 |
96 | switch (placement) {
97 | case 'below':
98 | tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
99 | break
100 | case 'above':
101 | tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
102 | break
103 | case 'left':
104 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}
105 | break
106 | case 'right':
107 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}
108 | break
109 | }
110 |
111 | $tip
112 | .css(tp)
113 | .addClass(placement)
114 | .addClass('in')
115 | }
116 | }
117 |
118 | , setContent: function () {
119 | var $tip = this.tip()
120 | $tip.find('.twipsy-inner')[this.options.html ? 'html' : 'text'](this.getTitle())
121 | $tip[0].className = 'twipsy'
122 | }
123 |
124 | , hide: function() {
125 | var that = this
126 | , $tip = this.tip()
127 |
128 | $tip.removeClass('in')
129 |
130 | function removeElement () {
131 | $tip.remove()
132 | }
133 |
134 | $.support.transition && this.$tip.hasClass('fade') ?
135 | $tip.bind(transitionEnd, removeElement) :
136 | removeElement()
137 | }
138 |
139 | , fixTitle: function() {
140 | var $e = this.$element
141 | if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
142 | $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
143 | }
144 | }
145 |
146 | , getTitle: function() {
147 | var title
148 | , $e = this.$element
149 | , o = this.options
150 |
151 | this.fixTitle()
152 |
153 | if (typeof o.title == 'string') {
154 | title = $e.attr(o.title == 'title' ? 'data-original-title' : o.title)
155 | } else if (typeof o.title == 'function') {
156 | title = o.title.call($e[0])
157 | }
158 |
159 | title = ('' + title).replace(/(^\s*|\s*$)/, "")
160 |
161 | return title || o.fallback
162 | }
163 |
164 | , tip: function() {
165 | if (!this.$tip) {
166 | this.$tip = $('
').html('
')
167 | }
168 | return this.$tip
169 | }
170 |
171 | , validate: function() {
172 | if (!this.$element[0].parentNode) {
173 | this.hide()
174 | this.$element = null
175 | this.options = null
176 | }
177 | }
178 |
179 | , enable: function() {
180 | this.enabled = true
181 | }
182 |
183 | , disable: function() {
184 | this.enabled = false
185 | }
186 |
187 | , toggleEnabled: function() {
188 | this.enabled = !this.enabled
189 | }
190 |
191 | }
192 |
193 |
194 | /* TWIPSY PRIVATE METHODS
195 | * ====================== */
196 |
197 | function maybeCall ( thing, ctx, args ) {
198 | return typeof thing == 'function' ? thing.apply(ctx, args) : thing
199 | }
200 |
201 | /* TWIPSY PLUGIN DEFINITION
202 | * ======================== */
203 |
204 | $.fn.twipsy = function (options) {
205 | $.fn.twipsy.initWith.call(this, options, Twipsy, 'twipsy')
206 | return this
207 | }
208 |
209 | $.fn.twipsy.initWith = function (options, Constructor, name) {
210 | var twipsy
211 | , binder
212 | , eventIn
213 | , eventOut
214 |
215 | if (options === true) {
216 | return this.data(name)
217 | } else if (typeof options == 'string') {
218 | twipsy = this.data(name)
219 | if (twipsy) {
220 | twipsy[options]()
221 | }
222 | return this
223 | }
224 |
225 | options = $.extend({}, $.fn[name].defaults, options)
226 |
227 | function get(ele) {
228 | var twipsy = $.data(ele, name)
229 |
230 | if (!twipsy) {
231 | twipsy = new Constructor(ele, $.fn.twipsy.elementOptions(ele, options))
232 | $.data(ele, name, twipsy)
233 | }
234 |
235 | return twipsy
236 | }
237 |
238 | function enter() {
239 | var twipsy = get(this)
240 | twipsy.hoverState = 'in'
241 |
242 | if (options.delayIn == 0) {
243 | twipsy.show()
244 | } else {
245 | twipsy.fixTitle()
246 | setTimeout(function() {
247 | if (twipsy.hoverState == 'in') {
248 | twipsy.show()
249 | }
250 | }, options.delayIn)
251 | }
252 | }
253 |
254 | function leave() {
255 | var twipsy = get(this)
256 | twipsy.hoverState = 'out'
257 | if (options.delayOut == 0) {
258 | twipsy.hide()
259 | } else {
260 | setTimeout(function() {
261 | if (twipsy.hoverState == 'out') {
262 | twipsy.hide()
263 | }
264 | }, options.delayOut)
265 | }
266 | }
267 |
268 | if (!options.live) {
269 | this.each(function() {
270 | get(this)
271 | })
272 | }
273 |
274 | if (options.trigger != 'manual') {
275 | binder = options.live ? 'live' : 'bind'
276 | eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus'
277 | eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'
278 | this[binder](eventIn, enter)[binder](eventOut, leave)
279 | }
280 |
281 | return this
282 | }
283 |
284 | $.fn.twipsy.Twipsy = Twipsy
285 |
286 | $.fn.twipsy.defaults = {
287 | animate: true
288 | , delayIn: 0
289 | , delayOut: 0
290 | , fallback: ''
291 | , placement: 'above'
292 | , html: false
293 | , live: false
294 | , offset: 0
295 | , title: 'title'
296 | , trigger: 'hover'
297 | }
298 |
299 | $.fn.twipsy.elementOptions = function(ele, options) {
300 | return $.metadata ? $.extend({}, options, $(ele).metadata()) : options
301 | }
302 |
303 | }( window.jQuery || window.ender );
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Bootstrap Plugin Test Suite
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/unit/bootstrap-alerts.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-alerts")
4 |
5 | test("should be defined on jquery object", function () {
6 | ok($(document.body).alert, 'alert method is defined')
7 | })
8 |
9 | test("should return element", function () {
10 | ok($(document.body).alert()[0] == document.body, 'document.body returned')
11 | })
12 |
13 | test("should fade element out on clicking .close", function () {
14 | var alertHTML = ''
15 | + '
× '
16 | + '
Holy guacamole! Best check yo self, you’re not looking too good.
'
17 | + '
'
18 | , alert = $(alertHTML).alert()
19 |
20 | alert.find('.close').click()
21 |
22 | ok(!alert.hasClass('in'), 'remove .in class on .close click')
23 | })
24 |
25 | test("should remove element when clicking .close", function () {
26 | $.support.transition = false
27 |
28 | var alertHTML = ''
29 | + '
× '
30 | + '
Holy guacamole! Best check yo self, you’re not looking too good.
'
31 | + '
'
32 | , alert = $(alertHTML).appendTo('#qunit-runoff').alert()
33 |
34 | ok($('#qunit-runoff').find('.alert-message').length, 'element added to dom')
35 |
36 | alert.find('.close').click()
37 |
38 | ok(!$('#qunit-runoff').find('.alert-message').length, 'element removed from dom')
39 | })
40 |
41 | })
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/unit/bootstrap-dropdown.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-dropdowns")
4 |
5 | test("should be defined on jquery object", function () {
6 | ok($(document.body).dropdown, 'dropdown method is defined')
7 | })
8 |
9 | test("should return element", function () {
10 | ok($(document.body).dropdown()[0] == document.body, 'document.body returned')
11 | })
12 |
13 | test("should add class open to menu if clicked", function () {
14 | var dropdownHTML = ''
15 | + ''
16 | + 'Dropdown '
17 | + ''
23 | + ' '
24 | + ' '
25 | , dropdown = $(dropdownHTML).dropdown()
26 |
27 | dropdown.find('.dropdown-toggle').click()
28 | ok(dropdown.find('.dropdown').hasClass('open'), 'open class added on click')
29 | })
30 |
31 | test("should remove open class if body clicked", function () {
32 | var dropdownHTML = ''
33 | + ''
34 | + 'Dropdown '
35 | + ''
41 | + ' '
42 | + ' '
43 | , dropdown = $(dropdownHTML).dropdown().appendTo('#qunit-runoff')
44 |
45 | dropdown.find('.dropdown-toggle').click()
46 | ok(dropdown.find('.dropdown').hasClass('open'), 'open class added on click')
47 | $('body').click()
48 | ok(!dropdown.find('.dropdown').hasClass('open'), 'open class removed')
49 | dropdown.remove()
50 | })
51 |
52 | })
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/unit/bootstrap-modal.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-modal")
4 |
5 | test("should be defined on jquery object", function () {
6 | var div = $("
")
7 | ok(div.modal, 'modal method is defined')
8 | })
9 |
10 | test("should return element", function () {
11 | var div = $("
")
12 | ok(div.modal() == div, 'div element returned')
13 | })
14 |
15 | test("should expose defaults var for settings", function () {
16 | ok($.fn.modal.defaults, 'default object exposed')
17 | })
18 |
19 | test("should insert into dom when show method is called", function () {
20 | stop()
21 | $.support.transition = false
22 | var div = $("
")
23 | div
24 | .modal()
25 | .bind("shown", function () {
26 | ok($('#modal-test').length, 'modal insterted into dom')
27 | start()
28 | div.remove()
29 | })
30 | .modal("show")
31 | })
32 |
33 | test("should hide modal when hide is called", function () {
34 | stop()
35 | $.support.transition = false
36 | var div = $("
")
37 | div
38 | .modal()
39 | .bind("shown", function () {
40 | ok($('#modal-test').is(":visible"), 'modal visible')
41 | ok($('#modal-test').length, 'modal insterted into dom')
42 | div.modal("hide")
43 | })
44 | .bind("hidden", function() {
45 | ok(!$('#modal-test').is(":visible"), 'modal hidden')
46 | start()
47 | div.remove()
48 | })
49 | .modal("show")
50 | })
51 |
52 | test("should toggle when toggle is called", function () {
53 | stop()
54 | $.support.transition = false
55 | var div = $("
")
56 | div
57 | .modal()
58 | .bind("shown", function () {
59 | ok($('#modal-test').is(":visible"), 'modal visible')
60 | ok($('#modal-test').length, 'modal insterted into dom')
61 | div.modal("toggle")
62 | })
63 | .bind("hidden", function() {
64 | ok(!$('#modal-test').is(":visible"), 'modal hidden')
65 | start()
66 | div.remove()
67 | })
68 | .modal("toggle")
69 | })
70 |
71 | test("should remove from dom when click .close", function () {
72 | stop()
73 | $.support.transition = false
74 | var div = $("
")
75 | div
76 | .modal()
77 | .bind("shown", function () {
78 | ok($('#modal-test').is(":visible"), 'modal visible')
79 | ok($('#modal-test').length, 'modal insterted into dom')
80 | div.find('.close').click()
81 | })
82 | .bind("hidden", function() {
83 | ok(!$('#modal-test').is(":visible"), 'modal hidden')
84 | start()
85 | div.remove()
86 | })
87 | .modal("toggle")
88 | })
89 |
90 | test("should add backdrop when desired", function () {
91 | stop()
92 | $.support.transition = false
93 | var div = $("
")
94 | div
95 | .modal({ backdrop:true })
96 | .bind("shown", function () {
97 | equal($('.modal-backdrop').length, 1, 'modal backdrop inserted into dom')
98 | start()
99 | div.remove()
100 | $('.modal-backdrop').remove()
101 | })
102 | .modal("show")
103 | })
104 |
105 | test("should not add backdrop when not desired", function () {
106 | stop()
107 | $.support.transition = false
108 | var div = $("
")
109 | div
110 | .modal({backdrop:false})
111 | .bind("shown", function () {
112 | equal($('.modal-backdrop').length, 0, 'modal backdrop not inserted into dom')
113 | start()
114 | div.remove()
115 | })
116 | .modal("show")
117 | })
118 |
119 | test("should close backdrop when clicked", function () {
120 | stop()
121 | $.support.transition = false
122 | var div = $("
")
123 | div
124 | .modal({backdrop:true})
125 | .bind("shown", function () {
126 | equal($('.modal-backdrop').length, 1, 'modal backdrop inserted into dom')
127 | $('.modal-backdrop').click()
128 | equal($('.modal-backdrop').length, 0, 'modal backdrop removed from dom')
129 | start()
130 | div.remove()
131 | })
132 | .modal("show")
133 | })
134 |
135 | test("should not close backdrop when click disabled", function () {
136 | stop()
137 | $.support.transition = false
138 | var div = $("
")
139 | div
140 | .modal({backdrop: 'static'})
141 | .bind("shown", function () {
142 | equal($('.modal-backdrop').length, 1, 'modal backdrop inserted into dom')
143 | $('.modal-backdrop').click()
144 | equal($('.modal-backdrop').length, 1, 'modal backdrop still in dom')
145 | start()
146 | div.remove()
147 | $('.modal-backdrop').remove()
148 | })
149 | .modal("show")
150 | })
151 | })
152 |
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/unit/bootstrap-popover.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-popover")
4 |
5 | test("should be defined on jquery object", function () {
6 | var div = $('
')
7 | ok(div.popover, 'popover method is defined')
8 | })
9 |
10 | test("should return element", function () {
11 | var div = $('
')
12 | ok(div.popover() == div, 'document.body returned')
13 | })
14 |
15 | test("should render popover element", function () {
16 | $.support.transition = false
17 | var popover = $('@mdo ')
18 | .appendTo('#qunit-runoff')
19 | .popover()
20 | .popover('show')
21 |
22 | ok($('.popover').length, 'popover was inserted')
23 | popover.popover('hide')
24 | ok(!$(".popover").length, 'popover removed')
25 | $('#qunit-runoff').empty()
26 | })
27 |
28 | test("should store popover instance in popover data object", function () {
29 | $.support.transition = false
30 | var popover = $('@mdo ')
31 | .popover()
32 |
33 | ok(!!popover.data('popover'), 'popover instance exists')
34 | })
35 |
36 | test("should get title and content from options", function () {
37 | $.support.transition = false
38 | var popover = $('@fat ')
39 | .appendTo('#qunit-runoff')
40 | .popover({
41 | title: function () {
42 | return '@fat'
43 | }
44 | , content: function () {
45 | return 'loves writing tests (╯°□°)╯︵ ┻━┻'
46 | }
47 | })
48 |
49 | popover.popover('show')
50 |
51 | ok($('.popover').length, 'popover was inserted')
52 | equals($('.popover .title').text(), '@fat', 'title correctly inserted')
53 | equals($('.popover .content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
54 |
55 | popover.popover('hide')
56 | ok(!$('.popover').length, 'popover was removed')
57 | $('#qunit-runoff').empty()
58 | })
59 |
60 | test("should get title and content from attributes", function () {
61 | $.support.transition = false
62 | var popover = $('@mdo ')
63 | .appendTo('#qunit-runoff')
64 | .popover()
65 | .popover('show')
66 |
67 | ok($('.popover').length, 'popover was inserted')
68 | equals($('.popover .title').text(), '@mdo', 'title correctly inserted')
69 | equals($('.popover .content').text(), "loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻", 'content correctly inserted')
70 |
71 | popover.popover('hide')
72 | ok(!$('.popover').length, 'popover was removed')
73 | $('#qunit-runoff').empty()
74 | })
75 |
76 | })
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/unit/bootstrap-scrollspy.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-scrollspy")
4 |
5 | test("should be defined on jquery object", function () {
6 | ok($(document.body).scrollspy, 'scrollspy method is defined')
7 | })
8 |
9 | test("should return element", function () {
10 | ok($(document.body).scrollspy()[0] == document.body, 'document.body returned')
11 | })
12 |
13 | test("should switch active class on scroll", function () {
14 | var sectionHTML = '
'
15 | , $section = $(sectionHTML).append('#qunit-runoff')
16 | , topbarHTML =''
17 | + '
'
18 | + '
'
19 | + '
'
20 | + '
'
23 | + '
'
24 | + '
'
25 | + '
'
26 | , $topbar = $(topbarHTML).topbar()
27 |
28 | ok(topbar.find('.active', true)
29 | })
30 |
31 | })
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/unit/bootstrap-tabs.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-tabs")
4 |
5 | test("should be defined on jquery object", function () {
6 | ok($(document.body).tabs, 'tabs method is defined')
7 | })
8 |
9 | test("should return element", function () {
10 | ok($(document.body).tabs()[0] == document.body, 'document.body returned')
11 | })
12 |
13 | test("should activate element by tab id", function () {
14 | var $tabsHTML = $('')
18 |
19 |
20 | $('').appendTo("#qunit-runoff")
21 |
22 | $tabsHTML.tabs().find('a').last().click()
23 | equals($("#qunit-runoff").find('.active').attr('id'), "profile")
24 |
25 | $tabsHTML.tabs().find('a').first().click()
26 | equals($("#qunit-runoff").find('.active').attr('id'), "home")
27 |
28 | $("#qunit-runoff").empty()
29 | })
30 |
31 | test("should activate element by pill id", function () {
32 | var $pillsHTML = $('')
36 |
37 |
38 | $('').appendTo("#qunit-runoff")
39 |
40 | $pillsHTML.pills().find('a').last().click()
41 | equals($("#qunit-runoff").find('.active').attr('id'), "profile")
42 |
43 | $pillsHTML.pills().find('a').first().click()
44 | equals($("#qunit-runoff").find('.active').attr('id'), "home")
45 |
46 | $("#qunit-runoff").empty()
47 | })
48 |
49 | test( "should trigger change event on activate", function () {
50 | var $tabsHTML = $('')
54 | , $target
55 | , count = 0
56 | , relatedTarget
57 | , target
58 |
59 | $tabsHTML
60 | .tabs()
61 | .bind( "change", function (e) {
62 | target = e.target
63 | relatedTarget = e.relatedTarget
64 | count++
65 | })
66 |
67 | $target = $tabsHTML
68 | .find('a')
69 | .last()
70 | .click()
71 |
72 | equals(relatedTarget, $tabsHTML.find('a').first()[0])
73 | equals(target, $target[0])
74 | equals(count, 1)
75 | })
76 |
77 | })
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/unit/bootstrap-twipsy.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-twipsy")
4 |
5 | test("should be defined on jquery object", function () {
6 | var div = $("
")
7 | ok(div.twipsy, 'popover method is defined')
8 | })
9 |
10 | test("should return element", function () {
11 | var div = $("
")
12 | ok(div.twipsy() == div, 'document.body returned')
13 | })
14 |
15 | test("should expose default settings", function () {
16 | ok(!!$.fn.twipsy.defaults, 'defaults is defined')
17 | })
18 |
19 | test("should remove title attribute", function () {
20 | var twipsy = $(' ').twipsy()
21 | ok(!twipsy.attr('title'), 'title tag was removed')
22 | })
23 |
24 | test("should add data attribute for referencing original title", function () {
25 | var twipsy = $(' ').twipsy()
26 | equals(twipsy.attr('data-original-title'), 'Another twipsy', 'original title preserved in data attribute')
27 | })
28 |
29 | test("should place tooltips relative to placement option", function () {
30 | $.support.transition = false
31 | var twipsy = $(' ')
32 | .appendTo('#qunit-runoff')
33 | .twipsy({placement: 'below'})
34 | .twipsy('show')
35 |
36 | ok($(".twipsy").hasClass('fade below in'), 'has correct classes applied')
37 | twipsy.twipsy('hide')
38 | ok(!$(".twipsy").length, 'twipsy removed')
39 | $('#qunit-runoff').empty()
40 | })
41 |
42 | test("should add a fallback in cases where elements have no title tag", function () {
43 | $.support.transition = false
44 | var twipsy = $(' ')
45 | .appendTo('#qunit-runoff')
46 | .twipsy({fallback: '@fat'})
47 | .twipsy('show')
48 |
49 | equals($(".twipsy").text(), "@fat", 'has correct default text')
50 | twipsy.twipsy('hide')
51 | ok(!$(".twipsy").length, 'twipsy removed')
52 | $('#qunit-runoff').empty()
53 | })
54 |
55 | test("should not allow html entities", function () {
56 | $.support.transition = false
57 | var twipsy = $(' ')
58 | .appendTo('#qunit-runoff')
59 | .twipsy()
60 | .twipsy('show')
61 |
62 | ok(!$('.twipsy b').length, 'b tag was not inserted')
63 | twipsy.twipsy('hide')
64 | ok(!$(".twipsy").length, 'twipsy removed')
65 | $('#qunit-runoff').empty()
66 | })
67 |
68 | test("should allow html entities if html option set to true", function () {
69 | $.support.transition = false
70 | var twipsy = $(' ')
71 | .appendTo('#qunit-runoff')
72 | .twipsy({html: true})
73 | .twipsy('show')
74 |
75 | ok($('.twipsy b').length, 'b tag was inserted')
76 | twipsy.twipsy('hide')
77 | ok(!$(".twipsy").length, 'twipsy removed')
78 | $('#qunit-runoff').empty()
79 | })
80 |
81 | })
--------------------------------------------------------------------------------
/vendor/twitter/js/tests/vendor/qunit.css:
--------------------------------------------------------------------------------
1 | /**
2 | * QUnit - A JavaScript Unit Testing Framework
3 | *
4 | * http://docs.jquery.com/QUnit
5 | *
6 | * Copyright (c) 2011 John Resig, Jörn Zaefferer
7 | * Dual licensed under the MIT (MIT-LICENSE.txt)
8 | * or GPL (GPL-LICENSE.txt) licenses.
9 | */
10 |
11 | /** Font Family and Sizes */
12 |
13 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
14 | font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
15 | }
16 |
17 | #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
18 | #qunit-tests { font-size: smaller; }
19 |
20 |
21 | /** Resets */
22 |
23 | #qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
24 | margin: 0;
25 | padding: 0;
26 | }
27 |
28 |
29 | /** Header */
30 |
31 | #qunit-header {
32 | padding: 0.5em 0 0.5em 1em;
33 |
34 | color: #8699a4;
35 | background-color: #0d3349;
36 |
37 | font-size: 1.5em;
38 | line-height: 1em;
39 | font-weight: normal;
40 |
41 | border-radius: 15px 15px 0 0;
42 | -moz-border-radius: 15px 15px 0 0;
43 | -webkit-border-top-right-radius: 15px;
44 | -webkit-border-top-left-radius: 15px;
45 | }
46 |
47 | #qunit-header a {
48 | text-decoration: none;
49 | color: #c2ccd1;
50 | }
51 |
52 | #qunit-header a:hover,
53 | #qunit-header a:focus {
54 | color: #fff;
55 | }
56 |
57 | #qunit-banner {
58 | height: 5px;
59 | }
60 |
61 | #qunit-testrunner-toolbar {
62 | padding: 0.5em 0 0.5em 2em;
63 | color: #5E740B;
64 | background-color: #eee;
65 | }
66 |
67 | #qunit-userAgent {
68 | padding: 0.5em 0 0.5em 2.5em;
69 | background-color: #2b81af;
70 | color: #fff;
71 | text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
72 | }
73 |
74 |
75 | /** Tests: Pass/Fail */
76 |
77 | #qunit-tests {
78 | list-style-position: inside;
79 | }
80 |
81 | #qunit-tests li {
82 | padding: 0.4em 0.5em 0.4em 2.5em;
83 | border-bottom: 1px solid #fff;
84 | list-style-position: inside;
85 | }
86 |
87 | #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
88 | display: none;
89 | }
90 |
91 | #qunit-tests li strong {
92 | cursor: pointer;
93 | }
94 |
95 | #qunit-tests li a {
96 | padding: 0.5em;
97 | color: #c2ccd1;
98 | text-decoration: none;
99 | }
100 | #qunit-tests li a:hover,
101 | #qunit-tests li a:focus {
102 | color: #000;
103 | }
104 |
105 | #qunit-tests ol {
106 | margin-top: 0.5em;
107 | padding: 0.5em;
108 |
109 | background-color: #fff;
110 |
111 | border-radius: 15px;
112 | -moz-border-radius: 15px;
113 | -webkit-border-radius: 15px;
114 |
115 | box-shadow: inset 0px 2px 13px #999;
116 | -moz-box-shadow: inset 0px 2px 13px #999;
117 | -webkit-box-shadow: inset 0px 2px 13px #999;
118 | }
119 |
120 | #qunit-tests table {
121 | border-collapse: collapse;
122 | margin-top: .2em;
123 | }
124 |
125 | #qunit-tests th {
126 | text-align: right;
127 | vertical-align: top;
128 | padding: 0 .5em 0 0;
129 | }
130 |
131 | #qunit-tests td {
132 | vertical-align: top;
133 | }
134 |
135 | #qunit-tests pre {
136 | margin: 0;
137 | white-space: pre-wrap;
138 | word-wrap: break-word;
139 | }
140 |
141 | #qunit-tests del {
142 | background-color: #e0f2be;
143 | color: #374e0c;
144 | text-decoration: none;
145 | }
146 |
147 | #qunit-tests ins {
148 | background-color: #ffcaca;
149 | color: #500;
150 | text-decoration: none;
151 | }
152 |
153 | /*** Test Counts */
154 |
155 | #qunit-tests b.counts { color: black; }
156 | #qunit-tests b.passed { color: #5E740B; }
157 | #qunit-tests b.failed { color: #710909; }
158 |
159 | #qunit-tests li li {
160 | margin: 0.5em;
161 | padding: 0.4em 0.5em 0.4em 0.5em;
162 | background-color: #fff;
163 | border-bottom: none;
164 | list-style-position: inside;
165 | }
166 |
167 | /*** Passing Styles */
168 |
169 | #qunit-tests li li.pass {
170 | color: #5E740B;
171 | background-color: #fff;
172 | border-left: 26px solid #C6E746;
173 | }
174 |
175 | #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
176 | #qunit-tests .pass .test-name { color: #366097; }
177 |
178 | #qunit-tests .pass .test-actual,
179 | #qunit-tests .pass .test-expected { color: #999999; }
180 |
181 | #qunit-banner.qunit-pass { background-color: #C6E746; }
182 |
183 | /*** Failing Styles */
184 |
185 | #qunit-tests li li.fail {
186 | color: #710909;
187 | background-color: #fff;
188 | border-left: 26px solid #EE5757;
189 | white-space: pre;
190 | }
191 |
192 | #qunit-tests > li:last-child {
193 | border-radius: 0 0 15px 15px;
194 | -moz-border-radius: 0 0 15px 15px;
195 | -webkit-border-bottom-right-radius: 15px;
196 | -webkit-border-bottom-left-radius: 15px;
197 | }
198 |
199 | #qunit-tests .fail { color: #000000; background-color: #EE5757; }
200 | #qunit-tests .fail .test-name,
201 | #qunit-tests .fail .module-name { color: #000000; }
202 |
203 | #qunit-tests .fail .test-actual { color: #EE5757; }
204 | #qunit-tests .fail .test-expected { color: green; }
205 |
206 | #qunit-banner.qunit-fail { background-color: #EE5757; }
207 |
208 |
209 | /** Result */
210 |
211 | #qunit-testresult {
212 | padding: 0.5em 0.5em 0.5em 2.5em;
213 |
214 | color: #2b81af;
215 | background-color: #D2E0E6;
216 |
217 | border-bottom: 1px solid white;
218 | }
219 |
220 | /** Fixture */
221 |
222 | #qunit-fixture {
223 | position: absolute;
224 | top: -10000px;
225 | left: -10000px;
226 | }
227 |
228 | /** Runoff */
229 |
230 | #qunit-runoff {
231 | display:none;
232 | }
--------------------------------------------------------------------------------
/vendor/twitter/lib/bootstrap.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap @VERSION
3 | *
4 | * Copyright 2011 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 | * Date: @DATE
10 | */
11 |
12 | // CSS Reset
13 | @import "reset.scss";
14 |
15 | // Core variables and mixins
16 | @import "variables.scss"; // Modify this for custom colors, font-sizes, etc
17 | @import "mixins.scss";
18 |
19 | // Grid system and page structure
20 | @import "scaffolding.scss";
21 |
22 | // Styled patterns and elements
23 | @import "type.scss";
24 | @import "forms.scss";
25 | @import "tables.scss";
26 | @import "patterns.scss";
27 |
--------------------------------------------------------------------------------
/vendor/twitter/lib/forms.scss:
--------------------------------------------------------------------------------
1 | /* Forms.less
2 | * Base styles for various input types, form layouts, and states
3 | * ------------------------------------------------------------- */
4 |
5 |
6 | // FORM STYLES
7 | // -----------
8 |
9 | form {
10 | margin-bottom: $baseline;
11 | }
12 |
13 | // Groups of fields with labels on top (legends)
14 | fieldset {
15 | margin-bottom: $baseline;
16 | padding-top: $baseline;
17 | legend {
18 | display: block;
19 | padding-left: 150px;
20 | font-size: $basefont * 1.5;
21 | line-height: 1;
22 | color: $grayDark;
23 | *padding: 0 0 5px 145px; /* IE6-7 */
24 | *line-height: 1.5; /* IE6-7 */
25 | }
26 | }
27 |
28 | // Parent element that clears floats and wraps labels and fields together
29 | form .clearfix {
30 | margin-bottom: $baseline;
31 | @include clearfix;
32 | }
33 |
34 | // Set font for forms
35 | label,
36 | input,
37 | select,
38 | textarea {
39 | @include font-sans-serif(normal,13px,normal);
40 | }
41 |
42 | // Float labels left
43 | label {
44 | padding-top: 6px;
45 | font-size: $basefont;
46 | line-height: $baseline;
47 | float: left;
48 | width: 130px;
49 | text-align: right;
50 | color: $grayDark;
51 | }
52 |
53 | // Shift over the inside div to align all label's relevant content
54 | form .input {
55 | margin-left: 150px;
56 | }
57 |
58 | // Checkboxs and radio buttons
59 | input[type=checkbox],
60 | input[type=radio] {
61 | cursor: pointer;
62 | }
63 |
64 | // Inputs, Textareas, Selects
65 | input,
66 | textarea,
67 | select,
68 | .uneditable-input {
69 | display: inline-block;
70 | width: 210px;
71 | height: $baseline;
72 | padding: 4px;
73 | font-size: $basefont;
74 | line-height: $baseline;
75 | color: $gray;
76 | border: 1px solid #ccc;
77 | @include border-radius(3px);
78 | }
79 |
80 | /* mini reset for non-html5 file types */
81 | input[type=checkbox],
82 | input[type=radio] {
83 | width: auto;
84 | height: auto;
85 | padding: 0;
86 | margin: 3px 0;
87 | *margin-top: 0; /* IE6-7 */
88 | line-height: normal;
89 | border: none;
90 | }
91 |
92 | input[type=file] {
93 | background-color: $white;
94 | padding: initial;
95 | border: initial;
96 | line-height: initial;
97 | @include box-shadow(none);
98 | }
99 |
100 | input[type=button],
101 | input[type=reset],
102 | input[type=submit] {
103 | width: auto;
104 | height: auto;
105 | }
106 |
107 | select,
108 | input[type=file] {
109 | height: $baseline * 1.5; // In IE7, the height of the select element cannot be changed by height, only font-size
110 | line-height: $baseline * 1.5;
111 | *margin-top: 4px; /* For IE7, add top margin to align select with labels */
112 | }
113 |
114 | // Make multiple select elements height not fixed
115 | select[multiple] {
116 | height: inherit;
117 | }
118 |
119 | textarea {
120 | height: auto;
121 | }
122 |
123 | // For text that needs to appear as an input but should not be an input
124 | .uneditable-input {
125 | background-color: $white;
126 | display: block;
127 | border-color: #eee;
128 | @include box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
129 | cursor: not-allowed;
130 | }
131 |
132 | // Placeholder text gets special styles; can't be bundled together though for some reason
133 | :-moz-placeholder {
134 | color: $grayLight;
135 | }
136 | ::-webkit-input-placeholder {
137 | color: $grayLight;
138 | }
139 |
140 | // Focus states
141 | input,
142 | textarea {
143 | $transition: border linear .2s, box-shadow linear .2s;
144 | @include transition($transition);
145 | @include box-shadow(inset 0 1px 3px rgba(0,0,0,.1));
146 | }
147 | input:focus,
148 | textarea:focus {
149 | outline: 0;
150 | border-color: rgba(82,168,236,.8);
151 | $shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
152 | @include box-shadow($shadow);
153 | }
154 | input[type=file]:focus,
155 | input[type=checkbox]:focus,
156 | select:focus {
157 | @include box-shadow(none); // override for file inputs
158 | outline: 1px dotted #666; // Selet elements don't get box-shadow styles, so instead we do outline
159 | }
160 |
161 | // Error styles
162 | form div.clearfix.error {
163 | background: lighten($red, 57%);
164 | padding: 10px 0;
165 | margin: -10px 0 10px;
166 | @include border-radius(4px);
167 | $error-text: desaturate(lighten($red, 25%), 25%);
168 | > label,
169 | span.help-inline,
170 | span.help-block {
171 | color: $red;
172 | }
173 | input,
174 | textarea {
175 | border-color: $error-text;
176 | @include box-shadow(0 0 3px rgba(171,41,32,.25));
177 | &:focus {
178 | border-color: darken($error-text, 10%);
179 | @include box-shadow(0 0 6px rgba(171,41,32,.5));
180 | }
181 | }
182 | .input-prepend,
183 | .input-append {
184 | span.add-on {
185 | background: lighten($red, 50%);
186 | border-color: $error-text;
187 | color: darken($error-text, 10%);
188 | }
189 | }
190 | }
191 |
192 | // Form element sizes
193 | // TODO v2: remove duplication here and just stick to .input-[size] in light of adding .spanN sizes
194 | .input-mini,
195 | input.mini,
196 | textarea.mini,
197 | select.mini {
198 | width: 60px;
199 | }
200 | .input-small,
201 | input.small,
202 | textarea.small,
203 | select.small {
204 | width: 90px;
205 | }
206 | .input-medium,
207 | input.medium,
208 | textarea.medium,
209 | select.medium {
210 | width: 150px;
211 | }
212 | .input-large,
213 | input.large,
214 | textarea.large,
215 | select.large {
216 | width: 210px;
217 | }
218 | .input-xlarge,
219 | input.xlarge,
220 | textarea.xlarge,
221 | select.xlarge {
222 | width: 270px;
223 | }
224 | .input-xxlarge,
225 | input.xxlarge,
226 | textarea.xxlarge,
227 | select.xxlarge {
228 | width: 530px;
229 | }
230 | textarea.xxlarge {
231 | overflow-y: auto;
232 | }
233 |
234 | // Grid style input sizes
235 | // This is a duplication of the main grid .columns() mixin, but subtracts 10px to account for input padding and border
236 | @mixin form-columns($columnSpan: 1) {
237 | display: inline-block;
238 | float: none;
239 | width: (($gridColumnWidth) * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1)) - 10;
240 | margin-left: 0;
241 | }
242 | input,
243 | textarea,
244 | select {
245 | // Default columns
246 | &.span1 { @include form-columns(1); }
247 | &.span2 { @include form-columns(2); }
248 | &.span3 { @include form-columns(3); }
249 | &.span4 { @include form-columns(4); }
250 | &.span5 { @include form-columns(5); }
251 | &.span6 { @include form-columns(6); }
252 | &.span7 { @include form-columns(7); }
253 | &.span8 { @include form-columns(8); }
254 | &.span9 { @include form-columns(9); }
255 | &.span10 { @include form-columns(10); }
256 | &.span11 { @include form-columns(11); }
257 | &.span12 { @include form-columns(12); }
258 | &.span13 { @include form-columns(13); }
259 | &.span14 { @include form-columns(14); }
260 | &.span15 { @include form-columns(15); }
261 | &.span16 { @include form-columns(16); }
262 | }
263 |
264 | // Disabled and read-only inputs
265 | input[disabled],
266 | select[disabled],
267 | textarea[disabled],
268 | input[readonly],
269 | select[readonly],
270 | textarea[readonly] {
271 | background-color: #f5f5f5;
272 | border-color: #ddd;
273 | cursor: not-allowed;
274 | }
275 |
276 | // Actions (the buttons)
277 | .actions {
278 | background: #f5f5f5;
279 | margin-top: $baseline;
280 | margin-bottom: $baseline;
281 | padding: ($baseline - 1) 20px $baseline 150px;
282 | border-top: 1px solid #ddd;
283 | @include border-radius(0 0 3px 3px);
284 | .secondary-action {
285 | float: right;
286 | a {
287 | line-height: 30px;
288 | &:hover {
289 | text-decoration: underline;
290 | }
291 | }
292 | }
293 | }
294 |
295 | // Help Text
296 | .help-inline,
297 | .help-block {
298 | font-size: $basefont - 2;
299 | line-height: $baseline;
300 | color: $grayLight;
301 | }
302 | .help-inline {
303 | padding-left: 5px;
304 | *position: relative; /* IE6-7 */
305 | *top: -5px; /* IE6-7 */
306 | }
307 |
308 | // Big blocks of help text
309 | .help-block {
310 | display: block;
311 | max-width: 600px;
312 | }
313 |
314 | // Inline Fields (input fields that appear as inline objects
315 | .inline-inputs {
316 | color: $gray;
317 | span, input {
318 | display: inline-block;
319 | }
320 | input.mini {
321 | width: 60px;
322 | }
323 | input.small {
324 | width: 90px;
325 | }
326 | span {
327 | padding: 0 2px 0 1px;
328 | }
329 | }
330 |
331 | // Allow us to put symbols and text within the input field for a cleaner look
332 | .input-prepend,
333 | .input-append {
334 | input {
335 | @include border-radius(0 3px 3px 0);
336 | }
337 | .add-on {
338 | position: relative;
339 | background: #f5f5f5;
340 | border: 1px solid #ccc;
341 | z-index: 2;
342 | float: left;
343 | display: block;
344 | width: auto;
345 | min-width: 16px;
346 | height: 18px;
347 | padding: 4px 4px 4px 5px;
348 | margin-right: -1px;
349 | font-weight: normal;
350 | line-height: 18px;
351 | color: $grayLight;
352 | text-align: center;
353 | text-shadow: 0 1px 0 $white;
354 | @include border-radius(3px 0 0 3px);
355 | }
356 | .active {
357 | background: lighten($green, 30);
358 | border-color: $green;
359 | }
360 | }
361 | .input-prepend {
362 | .add-on {
363 | *margin-top: 1px; /* IE6-7 */
364 | }
365 | }
366 | .input-append {
367 | input {
368 | float: left;
369 | @include border-radius(3px 0 0 3px);
370 | }
371 | .add-on {
372 | @include border-radius(0 3px 3px 0);
373 | margin-right: 0;
374 | margin-left: -1px;
375 | }
376 | }
377 |
378 | // Stacked options for forms (radio buttons or checkboxes)
379 | .inputs-list {
380 | margin: 0 0 5px;
381 | width: 100%;
382 | li {
383 | display: block;
384 | padding: 0;
385 | width: 100%;
386 | }
387 | label {
388 | display: block;
389 | float: none;
390 | width: auto;
391 | padding: 0;
392 | line-height: $baseline;
393 | text-align: left;
394 | white-space: normal;
395 | strong {
396 | color: $gray;
397 | }
398 | small {
399 | font-size: $basefont - 2;
400 | font-weight: normal;
401 | }
402 | }
403 | .inputs-list {
404 | margin-left: 25px;
405 | margin-bottom: 10px;
406 | padding-top: 0;
407 | }
408 | &:first-child {
409 | padding-top: 6px;
410 | }
411 | li + li {
412 | padding-top: 2px;
413 | }
414 | input[type=radio],
415 | input[type=checkbox] {
416 | margin-bottom: 0;
417 | }
418 | }
419 |
420 | // Stacked forms
421 | .form-stacked {
422 | padding-left: 20px;
423 | fieldset {
424 | padding-top: $baseline / 2;
425 | }
426 | legend {
427 | padding-left: 0;
428 | }
429 | label {
430 | display: block;
431 | float: none;
432 | width: auto;
433 | font-weight: bold;
434 | text-align: left;
435 | line-height: 20px;
436 | padding-top: 0;
437 | }
438 | .clearfix {
439 | margin-bottom: $baseline / 2;
440 | div.input {
441 | margin-left: 0;
442 | }
443 | }
444 | .inputs-list {
445 | margin-bottom: 0;
446 | li {
447 | padding-top: 0;
448 | label {
449 | font-weight: normal;
450 | padding-top: 0;
451 | }
452 | }
453 | }
454 | div.clearfix.error {
455 | padding-top: 10px;
456 | padding-bottom: 10px;
457 | padding-left: 10px;
458 | margin-top: 0;
459 | margin-left: -10px;
460 | }
461 | .actions {
462 | margin-left: -20px;
463 | padding-left: 20px;
464 | }
465 | }
466 |
--------------------------------------------------------------------------------
/vendor/twitter/lib/mixins.scss:
--------------------------------------------------------------------------------
1 | /* Mixins
2 | * Snippets of reusable CSS to develop faster and keep code readable
3 | * ----------------------------------------------------------------- */
4 |
5 |
6 | // Clearfix for clearing floats like a boss h5bp.com/q
7 | @mixin clearfix {
8 | zoom: 1;
9 | &:before,
10 | &:after {
11 | display: table;
12 | content: "";
13 | zoom: 1;
14 | *display: inline;
15 | }
16 | &:after {
17 | clear: both;
18 | }
19 | }
20 |
21 | .clearfix {
22 | @include clearfix;
23 | }
24 |
25 | // Center-align a block level element
26 | @mixin center-block {
27 | display: block;
28 | margin-left: auto;
29 | margin-right: auto;
30 | }
31 |
32 | .center-block {
33 | @include center-block;
34 | }
35 |
36 | // Sizing shortcuts
37 | @mixin size($height: 5px, $width: 5px) {
38 | height: $height;
39 | width: $width;
40 | }
41 | @mixin square($size: $px) {
42 | @include size($size, $size);
43 | }
44 |
45 | // Input placeholder text
46 | @mixin placeholder($color: $grayLight) {
47 | :-moz-placeholder {
48 | color: $color;
49 | }
50 | ::-webkit-input-placeholder {
51 | color: $color;
52 | }
53 | }
54 |
55 | // Font Stacks
56 | @mixin font-shorthand($weight: normal, $size: 14px, $lineHeight: 20px) {
57 | font-size: $size;
58 | font-weight: $weight;
59 | line-height: $lineHeight;
60 | }
61 | @mixin font-sans-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
62 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
63 | font-size: $size;
64 | font-weight: $weight;
65 | line-height: $lineHeight;
66 | }
67 | @mixin font-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
68 | font-family: "Georgia", Times New Roman, Times, serif;
69 | font-size: $size;
70 | font-weight: $weight;
71 | line-height: $lineHeight;
72 | }
73 | @mixin font-monospace($weight: normal, $size: 12px, $lineHeight: 20px) {
74 | font-family: "Monaco", Courier New, monospace;
75 | font-size: $size;
76 | font-weight: $weight;
77 | line-height: $lineHeight;
78 | }
79 |
80 | // Grid System
81 | @mixin fixed-container {
82 | width: $siteWidth;
83 | margin-left: auto;
84 | margin-right: auto;
85 | @include clearfix;
86 | }
87 |
88 | .fixed-container {
89 | @include fixed-container;
90 | }
91 |
92 | @mixin columns($columnSpan: 1) {
93 | width: ($gridColumnWidth * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1));
94 | }
95 | @mixin offset($columnOffset: 1) {
96 | margin-left: ($gridColumnWidth * $columnOffset) + ($gridGutterWidth * ($columnOffset - 1)) + $extraSpace;
97 | }
98 | // Necessary grid styles for every column to make them appear next to each other horizontally
99 | @mixin gridColumn() {
100 | display: inline;
101 | float: left;
102 | margin-left: $gridGutterWidth;
103 | }
104 | // makeColumn can be used to mark any element (e.g., .content-primary) as a column without changing markup to .span something
105 | @mixin makeColumn($columnSpan: 1) {
106 | @include gridColumn;
107 | @include columns($columnSpan);
108 | }
109 |
110 | // Border Radius
111 | @mixin border-radius($radius: 5px) {
112 | -webkit-border-radius: $radius;
113 | -moz-border-radius: $radius;
114 | border-radius: $radius;
115 | }
116 |
117 | // Drop shadows
118 | @mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) {
119 | -webkit-box-shadow: $shadow;
120 | -moz-box-shadow: $shadow;
121 | box-shadow: $shadow;
122 | }
123 |
124 | // Transitions
125 | @mixin transition($transition) {
126 | -webkit-transition: $transition;
127 | -moz-transition: $transition;
128 | -ms-transition: $transition;
129 | -o-transition: $transition;
130 | transition: $transition;
131 | }
132 |
133 | // Background clipping
134 | @mixin background-clip($clip) {
135 | -webkit-background-clip: $clip;
136 | -moz-background-clip: $clip;
137 | background-clip: $clip;
138 | }
139 |
140 | // CSS3 Content Columns
141 | @mixin content-columns($columnCount, $columnGap: 20px) {
142 | -webkit-column-count: $columnCount;
143 | -moz-column-count: $columnCount;
144 | column-count: $columnCount;
145 | -webkit-column-gap: $columnGap;
146 | -moz-column-gap: $columnGap;
147 | column-gap: $columnGap;
148 | }
149 |
150 | // Add an alphatransparency value to any background or border color (via Elyse Holladay)
151 | @mixin translucent-background($color: $white, $alpha: 1) {
152 | background-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
153 | }
154 | @mixin translucent-border($color: $white, $alpha: 1) {
155 | border-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
156 | background-clip: padding-box;
157 | }
158 |
159 | // Gradients
160 | @mixin gradient-horizontal ($startColor: #555, $endColor: #333) {
161 | background-color: $endColor;
162 | background-repeat: repeat-x;
163 | background-image: -khtml-gradient(linear, left top, right top, from($startColor), to($endColor)); // Konqueror
164 | background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+
165 | background-image: -ms-linear-gradient(left, $startColor, $endColor); // IE10
166 | background-image: -webkit-gradient(linear, left top, right top, color-stop(0%, $startColor), color-stop(100%, $endColor)); // Safari 4+, Chrome 2+
167 | background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+
168 | background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10
169 | background-image: linear-gradient(left, $startColor, $endColor); // Le standard
170 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=1); // IE9 and down
171 | }
172 | @mixin gradient-vertical ($startColor: #555, $endColor: #333) {
173 | background-color: $endColor;
174 | background-repeat: repeat-x;
175 | background-image: -khtml-gradient(linear, left top, left bottom, from($startColor), to($endColor)); // Konqueror
176 | background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
177 | background-image: -ms-linear-gradient(top, $startColor, $endColor); // IE10
178 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, $startColor), color-stop(100%, $endColor)); // Safari 4+, Chrome 2+
179 | background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
180 | background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10
181 | background-image: linear-gradient(top, $startColor, $endColor); // The standard
182 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down
183 | }
184 | @mixin gradient-directional ($startColor: #555, $endColor: #333, $deg: 45deg) {
185 | background-color: $endColor;
186 | background-repeat: repeat-x;
187 | background-image: -moz-linear-gradient($deg, $startColor, $endColor); // FF 3.6+
188 | background-image: -ms-linear-gradient($deg, $startColor, $endColor); // IE10
189 | background-image: -webkit-linear-gradient($deg, $startColor, $endColor); // Safari 5.1+, Chrome 10+
190 | background-image: -o-linear-gradient($deg, $startColor, $endColor); // Opera 11.10
191 | background-image: linear-gradient($deg, $startColor, $endColor); // The standard
192 | }
193 | @mixin gradient-vertical-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) {
194 | background-color: $endColor;
195 | background-repeat: no-repeat;
196 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), color-stop($colorStop, $midColor), to($endColor));
197 | background-image: -webkit-linear-gradient($startColor, $midColor $colorStop, $endColor);
198 | background-image: -moz-linear-gradient(top, $startColor, $midColor $colorStop, $endColor);
199 | background-image: -ms-linear-gradient($startColor, $midColor $colorStop, $endColor);
200 | background-image: -o-linear-gradient($startColor, $midColor $colorStop, $endColor);
201 | background-image: linear-gradient($startColor, $midColor $colorStop, $endColor);
202 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
203 | }
204 |
205 | // Gradient Bar Colors for buttons and allerts
206 | @mixin gradient-bar($primaryColor, $secondaryColor) {
207 | @include gradient-vertical($primaryColor, $secondaryColor);
208 | text-shadow: 0 -1px 0 rgba(0,0,0,.25);
209 | border-color: $secondaryColor $secondaryColor darken($secondaryColor, 15%);
210 | border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fade-in(rgba(0,0,0,.1), 0.15);
211 | }
212 |
213 | // Reset filters for IE
214 | @mixin reset-filter() {
215 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
216 | }
217 |
218 | // Opacity
219 | @mixin opacity($opacity: 100) {
220 | filter: alpha(opacity=#{$opacity});
221 | -khtml-opacity: $opacity / 100;
222 | -moz-opacity: $opacity / 100;
223 | opacity: $opacity / 100;
224 | }
--------------------------------------------------------------------------------
/vendor/twitter/lib/reset.scss:
--------------------------------------------------------------------------------
1 | /* Reset.less
2 | * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
3 | * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
4 |
5 |
6 | // ERIC MEYER RESET
7 | // --------------------------------------------------
8 |
9 | html, body { margin: 0; padding: 0; }
10 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, cite, code, del, dfn, em, img, q, s, samp, small, strike, strong, sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; font-weight: normal; font-style: normal; font-size: 100%; line-height: 1; font-family: inherit; }
11 | table { border-collapse: collapse; border-spacing: 0; }
12 | ol, ul { list-style: none; }
13 | q:before, q:after, blockquote:before, blockquote:after { content: ""; }
14 |
15 |
16 | // Normalize.css
17 | // Pulling in select resets form the normalize.css project
18 | // --------------------------------------------------
19 |
20 | // Display in IE6-9 and FF3
21 | // -------------------------
22 | // Source: http://github.com/necolas/normalize.css
23 | html {
24 | overflow-y: scroll;
25 | font-size: 100%;
26 | -webkit-text-size-adjust: 100%;
27 | -ms-text-size-adjust: 100%;
28 | }
29 | // Focus states
30 | a:focus {
31 | outline: thin dotted;
32 | }
33 | // Hover & Active
34 | a:hover,
35 | a:active {
36 | outline: 0;
37 | }
38 |
39 | // Display in IE6-9 and FF3
40 | // -------------------------
41 | // Source: http://github.com/necolas/normalize.css
42 | article,
43 | aside,
44 | details,
45 | figcaption,
46 | figure,
47 | footer,
48 | header,
49 | hgroup,
50 | nav,
51 | section {
52 | display: block;
53 | }
54 |
55 | // Display block in IE6-9 and FF3
56 | // -------------------------
57 | // Source: http://github.com/necolas/normalize.css
58 | audio,
59 | canvas,
60 | video {
61 | display: inline-block;
62 | *display: inline;
63 | *zoom: 1;
64 | }
65 |
66 | // Prevents modern browsers from displaying 'audio' without controls
67 | // -------------------------
68 | // Source: http://github.com/necolas/normalize.css
69 | audio:not([controls]) {
70 | display: none;
71 | }
72 |
73 | // Prevents sub and sup affecting line-height in all browsers
74 | // -------------------------
75 | // Source: http://github.com/necolas/normalize.css
76 | sub,
77 | sup {
78 | font-size: 75%;
79 | line-height: 0;
80 | position: relative;
81 | vertical-align: baseline;
82 | }
83 | sup {
84 | top: -0.5em;
85 | }
86 | sub {
87 | bottom: -0.25em;
88 | }
89 |
90 | // Img border in a's and image quality
91 | // -------------------------
92 | // Source: http://github.com/necolas/normalize.css
93 | img {
94 | border: 0;
95 | -ms-interpolation-mode: bicubic;
96 | }
97 |
98 | // Forms
99 | // -------------------------
100 | // Source: http://github.com/necolas/normalize.css
101 |
102 | // Font size in all browsers, margin changes, misc consistency
103 | button,
104 | input,
105 | select,
106 | textarea {
107 | font-size: 100%;
108 | margin: 0;
109 | vertical-align: baseline;
110 | *vertical-align: middle;
111 | }
112 | button,
113 | input {
114 | line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
115 | *overflow: visible; // Inner spacing ie IE6/7
116 | }
117 | button::-moz-focus-inner,
118 | input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
119 | border: 0;
120 | padding: 0;
121 | }
122 | button,
123 | input[type="button"],
124 | input[type="reset"],
125 | input[type="submit"] {
126 | cursor: pointer; // Cursors on all buttons applied consistently
127 | -webkit-appearance: button; // Style clicable inputs in iOS
128 | }
129 | input[type="search"] { // Appearance in Safari/Chrome
130 | -webkit-appearance: textfield;
131 | -webkit-box-sizing: content-box;
132 | -moz-box-sizing: content-box;
133 | box-sizing: content-box;
134 | }
135 | input[type="search"]::-webkit-search-decoration {
136 | -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
137 | }
138 | textarea {
139 | overflow: auto; // Remove vertical scrollbar in IE6-9
140 | vertical-align: top; // Readability and alignment cross-browser
141 | }
--------------------------------------------------------------------------------
/vendor/twitter/lib/scaffolding.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Scaffolding
3 | * Basic and global styles for generating a grid system, structural layout, and page templates
4 | * ------------------------------------------------------------------------------------------- */
5 |
6 |
7 | // STRUCTURAL LAYOUT
8 | // -----------------
9 |
10 | html, body {
11 | background-color: $white;
12 | }
13 | body {
14 | margin: 0;
15 | @include font-sans-serif(normal,$basefont,$baseline);
16 | color: $grayDark;
17 | }
18 |
19 | // Container (centered, fixed-width layouts)
20 | .container {
21 | @include fixed-container;
22 | }
23 |
24 | // Fluid layouts (left aligned, with sidebar, min- & max-width content)
25 | .container-fluid {
26 | position: relative;
27 | min-width: 940px;
28 | padding-left: 20px;
29 | padding-right: 20px;
30 | @include clearfix;
31 | > .sidebar {
32 | float: left;
33 | width: 220px;
34 | }
35 | // TODO in v2: rename this and .popover .content to be more specific
36 | > .content {
37 | margin-left: 240px;
38 | }
39 | }
40 |
41 |
42 | // BASE STYLES
43 | // -----------
44 |
45 | // Links
46 | a {
47 | color: $linkColor;
48 | text-decoration: none;
49 | line-height: inherit;
50 | font-weight: inherit;
51 | &:hover {
52 | color: $linkColorHover;
53 | text-decoration: underline;
54 | }
55 | }
56 |
57 | // Quick floats
58 | .pull-right {
59 | float: right;
60 | }
61 | .pull-left {
62 | float: left;
63 | }
64 |
65 | // Toggling content
66 | .hide {
67 | display: none;
68 | }
69 | .show {
70 | display: block;
71 | }
72 |
73 |
74 | // GRID SYSTEM
75 | // -----------
76 | // To customize the grid system, bring up the variables.less file and change the column count, size, and gutter there
77 |
78 | .row {
79 | @include clearfix;
80 | margin-left: -1 * $gridGutterWidth;
81 | }
82 |
83 | // Find all .span# classes within .row and give them the necessary properties for grid columns (supported by all browsers back to IE7)
84 | // Credit to @dhg for the idea
85 | [class*="span"] {
86 | @include gridColumn;
87 | }
88 |
89 | // Default columns
90 | @for $i from 1 through 16 {
91 | .span#{$i} { @include columns($i); }
92 | }
93 |
94 | // For optional 24-column grid
95 | @for $i from 17 through 24 {
96 | .span#{$i} { @include columns($i); }
97 | }
98 |
99 | // Offset column options
100 | @for $i from 1 through 12 {
101 | .offset#{$i} { @include offset($i); }
102 | }
103 |
104 | // Unique column sizes for 16-column grid
105 | .span-one-third { width: 300px; }
106 | .span-two-thirds { width: 620px; }
107 | .offset-one-third { margin-left: 340px; }
108 | .offset-two-thirds { margin-left: 660px; }
109 |
--------------------------------------------------------------------------------
/vendor/twitter/lib/tables.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Tables.less
3 | * Tables for, you guessed it, tabular data
4 | * ---------------------------------------- */
5 |
6 |
7 | // BASELINE STYLES
8 | // ---------------
9 |
10 | table {
11 | width: 100%;
12 | margin-bottom: $baseline;
13 | padding: 0;
14 | border-collapse: separate; // Done so we can round those corners!
15 | *border-collapse: collapse; /* IE7, collapse table to remove spacing */
16 | font-size: $basefont;
17 | border: 1px solid #ddd;
18 | @include border-radius(4px);
19 | th, td {
20 | padding: 10px 10px 9px;
21 | line-height: $baseline;
22 | text-align: left;
23 | }
24 | th {
25 | padding-top: 9px;
26 | font-weight: bold;
27 | vertical-align: middle;
28 | border-bottom: 1px solid #ddd;
29 | }
30 | td {
31 | vertical-align: top;
32 | }
33 | th + th,
34 | td + td {
35 | border-left: 1px solid #ddd;
36 | }
37 | tr + tr td {
38 | border-top: 1px solid #ddd;
39 | }
40 | tbody tr:first-child td:first-child {
41 | @include border-radius(4px 0 0 0);
42 | }
43 | tbody tr:first-child td:last-child {
44 | @include border-radius(0 4px 0 0);
45 | }
46 | tbody tr:last-child td:first-child {
47 | @include border-radius(0 0 0 4px);
48 | }
49 | tbody tr:last-child td:last-child {
50 | @include border-radius(0 0 4px 0);
51 | }
52 | }
53 |
54 |
55 | // ZEBRA-STRIPING
56 | // --------------
57 |
58 | // Default zebra-stripe styles (alternating gray and transparent backgrounds)
59 | .zebra-striped {
60 | tbody {
61 | tr:nth-child(odd) td {
62 | background-color: #f9f9f9;
63 | }
64 | tr:hover td {
65 | background-color: #f5f5f5;
66 | }
67 | }
68 | }
69 |
70 | table {
71 | // Tablesorting styles w/ jQuery plugin
72 | .header {
73 | cursor: pointer;
74 | &:after {
75 | content: "";
76 | float: right;
77 | margin-top: 7px;
78 | border-width: 0 4px 4px;
79 | border-style: solid;
80 | border-color: #000 transparent;
81 | visibility: hidden;
82 | }
83 | }
84 | // Style the sorted column headers (THs)
85 | .headerSortUp,
86 | .headerSortDown {
87 | background-color: rgba(141,192,219,.25);
88 | text-shadow: 0 1px 1px rgba(255,255,255,.75);
89 | }
90 | // Style the ascending (reverse alphabetical) column header
91 | .header:hover {
92 | &:after {
93 | visibility:visible;
94 | }
95 | }
96 | // Style the descending (alphabetical) column header
97 | .headerSortDown,
98 | .headerSortDown:hover {
99 | &:after {
100 | visibility:visible;
101 | @include opacity(60);
102 | }
103 | }
104 | // Style the ascending (reverse alphabetical) column header
105 | .headerSortUp {
106 | &:after {
107 | border-bottom: none;
108 | border-left: 4px solid transparent;
109 | border-right: 4px solid transparent;
110 | border-top: 4px solid #000;
111 | visibility:visible;
112 | @include box-shadow(none); //can't add boxshadow to downward facing arrow :(
113 | @include opacity(60);
114 | }
115 | }
116 | // Blue Table Headings
117 | .blue {
118 | color: $blue;
119 | border-bottom-color: $blue;
120 | }
121 | .headerSortUp.blue,
122 | .headerSortDown.blue {
123 | background-color: lighten($blue, 40%);
124 | }
125 | // Green Table Headings
126 | .green {
127 | color: $green;
128 | border-bottom-color: $green;
129 | }
130 | .headerSortUp.green,
131 | .headerSortDown.green {
132 | background-color: lighten($green, 40%);
133 | }
134 | // Red Table Headings
135 | .red {
136 | color: $red;
137 | border-bottom-color: $red;
138 | }
139 | .headerSortUp.red,
140 | .headerSortDown.red {
141 | background-color: lighten($red, 50%);
142 | }
143 | // Yellow Table Headings
144 | .yellow {
145 | color: $yellow;
146 | border-bottom-color: $yellow;
147 | }
148 | .headerSortUp.yellow,
149 | .headerSortDown.yellow {
150 | background-color: lighten($yellow, 40%);
151 | }
152 | // Orange Table Headings
153 | .orange {
154 | color: $orange;
155 | border-bottom-color: $orange;
156 | }
157 | .headerSortUp.orange,
158 | .headerSortDown.orange {
159 | background-color: lighten($orange, 40%);
160 | }
161 | // Purple Table Headings
162 | .purple {
163 | color: $purple;
164 | border-bottom-color: $purple;
165 | }
166 | .headerSortUp.purple,
167 | .headerSortDown.purple {
168 | background-color: lighten($purple, 40%);
169 | }
170 | }
171 |
--------------------------------------------------------------------------------
/vendor/twitter/lib/type.scss:
--------------------------------------------------------------------------------
1 | /* Typography.less
2 | * Headings, body text, lists, code, and more for a versatile and durable typography system
3 | * ---------------------------------------------------------------------------------------- */
4 |
5 |
6 | // BODY TEXT
7 | // ---------
8 |
9 | p {
10 | @include font-shorthand(normal,$basefont,$baseline);
11 | margin-bottom: $baseline / 2;
12 | small {
13 | font-size: $basefont - 2;
14 | color: $grayLight;
15 | }
16 | }
17 |
18 |
19 | // HEADINGS
20 | // --------
21 |
22 | h1, h2, h3, h4, h5, h6 {
23 | font-weight: bold;
24 | color: $grayDark;
25 | small {
26 | color: $grayLight;
27 | }
28 | }
29 | h1 {
30 | margin-bottom: $baseline;
31 | font-size: 30px;
32 | line-height: $baseline * 2;
33 | small {
34 | font-size: 18px;
35 | }
36 | }
37 | h2 {
38 | font-size: 24px;
39 | line-height: $baseline * 2;
40 | small {
41 | font-size: 14px;
42 | }
43 | }
44 | h3, h4, h5, h6 {
45 | line-height: $baseline * 2;
46 | }
47 | h3 {
48 | font-size: 18px;
49 | small {
50 | font-size: 14px;
51 | }
52 | }
53 | h4 {
54 | font-size: 16px;
55 | small {
56 | font-size: 12px;
57 | }
58 | }
59 | h5 {
60 | font-size: 14px;
61 | }
62 | h6 {
63 | font-size: 13px;
64 | color: $grayLight;
65 | text-transform: uppercase;
66 | }
67 |
68 |
69 | // COLORS
70 | // ------
71 |
72 | // Unordered and Ordered lists
73 | ul, ol {
74 | margin: 0 0 $baseline 25px;
75 | }
76 | ul ul,
77 | ul ol,
78 | ol ol,
79 | ol ul {
80 | margin-bottom: 0;
81 | }
82 | ul {
83 | list-style: disc;
84 | }
85 | ol {
86 | list-style: decimal;
87 | }
88 | li {
89 | line-height: $baseline;
90 | color: $gray;
91 | }
92 | ul.unstyled {
93 | list-style: none;
94 | margin-left: 0;
95 | }
96 |
97 | // Description Lists
98 | dl {
99 | margin-bottom: $baseline;
100 | dt, dd {
101 | line-height: $baseline;
102 | }
103 | dt {
104 | font-weight: bold;
105 | }
106 | dd {
107 | margin-left: $baseline / 2;
108 | }
109 | }
110 |
111 | // MISC
112 | // ----
113 |
114 | // Horizontal rules
115 | hr {
116 | margin: 20px 0 19px;
117 | border: 0;
118 | border-bottom: 1px solid #eee;
119 | }
120 |
121 | // Emphasis
122 | strong {
123 | font-style: inherit;
124 | font-weight: bold;
125 | }
126 | em {
127 | font-style: italic;
128 | font-weight: inherit;
129 | line-height: inherit;
130 | }
131 | .muted {
132 | color: $grayLight;
133 | }
134 |
135 | // Blockquotes
136 | blockquote {
137 | margin-bottom: $baseline;
138 | border-left: 5px solid #eee;
139 | padding-left: 15px;
140 | p {
141 | @include font-shorthand(300,14px,$baseline);
142 | margin-bottom: 0;
143 | }
144 | small {
145 | display: block;
146 | @include font-shorthand(300,12px,$baseline);
147 | color: $grayLight;
148 | &:before {
149 | content: '\2014 \00A0';
150 | }
151 | }
152 | }
153 |
154 | // Addresses
155 | address {
156 | display: block;
157 | line-height: $baseline;
158 | margin-bottom: $baseline;
159 | }
160 |
161 | // Inline and block code styles
162 | code, pre {
163 | padding: 0 3px 2px;
164 | font-family: Monaco, Andale Mono, Courier New, monospace;
165 | font-size: 12px;
166 | @include border-radius(3px);
167 | }
168 | code {
169 | background-color: lighten($orange, 40%);
170 | color: rgba(0,0,0,.75);
171 | padding: 1px 3px;
172 | }
173 | pre {
174 | background-color: #f5f5f5;
175 | display: block;
176 | padding: ($baseline - 1) / 2;
177 | margin: 0 0 $baseline;
178 | line-height: $baseline;
179 | font-size: 12px;
180 | border: 1px solid #ccc;
181 | border: 1px solid rgba(0,0,0,.15);
182 | @include border-radius(3px);
183 | white-space: pre;
184 | white-space: pre-wrap;
185 | word-wrap: break-word;
186 |
187 | }
--------------------------------------------------------------------------------
/vendor/twitter/lib/variables.scss:
--------------------------------------------------------------------------------
1 | /* Variables.less
2 | * Variables to customize the look and feel of Bootstrap
3 | * ----------------------------------------------------- */
4 |
5 |
6 | // Links
7 | $linkColor: #0069d6;
8 | $linkColorHover: darken($linkColor, 15);
9 |
10 | // Grays
11 | $black: #000;
12 | $grayDark: lighten($black, 25%);
13 | $gray: lighten($black, 50%);
14 | $grayLight: lighten($black, 75%);
15 | $grayLighter: lighten($black, 90%);
16 | $white: #fff;
17 |
18 | // Accent Colors
19 | $blue: #049CDB;
20 | $blueDark: #0064CD;
21 | $green: #46a546;
22 | $red: #9d261d;
23 | $yellow: #ffc40d;
24 | $orange: #f89406;
25 | $pink: #c3325f;
26 | $purple: #7a43b6;
27 |
28 | // Baseline grid
29 | $basefont: 13px;
30 | $baseline: 18px;
31 |
32 | // Griditude
33 | // Modify the grid styles in mixins.less
34 | $gridColumns: 16;
35 | $gridColumnWidth: 40px;
36 | $gridGutterWidth: 20px;
37 | $extraSpace: ($gridGutterWidth * 2); // For our grid calculations
38 | $siteWidth: ($gridColumns * $gridColumnWidth) + ($gridGutterWidth * ($gridColumns - 1));
39 |
40 | // Color Scheme
41 | // Use this to roll your own color schemes if you like (unused by Bootstrap by default)
42 | $baseColor: $blue; // Set a base color
43 | $complement: spin($baseColor, 180); // Determine a complementary color
44 | $split1: spin($baseColor, 158); // Split complements
45 | $split2: spin($baseColor, -158);
46 | $triad1: spin($baseColor, 135); // Triads colors
47 | $triad2: spin($baseColor, -135);
48 | $tetra1: spin($baseColor, 90); // Tetra colors
49 | $tetra2: spin($baseColor, -90);
50 | $analog1: spin($baseColor, 22); // Analogs colors
51 | $analog2: spin($baseColor, -22);
52 |
53 |
54 |
55 | // More variables coming soon:
56 | // - $basefont to $baseFontSize
57 | // - $baseline to $baseLineHeight
58 | // - $baseFontFamily
59 | // - $primaryButtonColor
60 | // - anything else? File an issue on GitHub
--------------------------------------------------------------------------------