├── public
├── favicon.ico
├── assets
│ └── images
│ │ └── laravel.png
├── bootstrap
│ ├── img
│ │ ├── glyphicons-halflings.png
│ │ └── glyphicons-halflings-white.png
│ ├── lib
│ │ ├── _builtwithlaravel.scss
│ │ ├── _layouts.scss
│ │ ├── _component-animations.scss
│ │ ├── _grid.scss
│ │ ├── _breadcrumbs.scss
│ │ ├── _responsive-768px-979px.scss
│ │ ├── _hero-unit.scss
│ │ ├── _wells.scss
│ │ ├── _responsive-1200px-min.scss
│ │ ├── _utilities.scss
│ │ ├── _accordion.scss
│ │ ├── _close.scss
│ │ ├── _pager.scss
│ │ ├── _media.scss
│ │ ├── _scaffolding.scss
│ │ ├── responsive.scss
│ │ ├── _code.scss
│ │ ├── bootstrap.scss
│ │ ├── _alerts.scss
│ │ ├── _tooltip.scss
│ │ ├── _thumbnails.scss
│ │ ├── _responsive-utilities.scss
│ │ ├── _labels-badges.scss
│ │ ├── _modals.scss
│ │ ├── tests
│ │ │ ├── forms-responsive.html
│ │ │ ├── forms.html
│ │ │ ├── navbar-fixed-top.html
│ │ │ ├── navbar-static-top.html
│ │ │ └── navbar.html
│ │ ├── _carousel.scss
│ │ ├── _pagination.scss
│ │ ├── _progress-bars.scss
│ │ ├── _popovers.scss
│ │ ├── _responsive-767px-max.scss
│ │ ├── _responsive-navbar.scss
│ │ ├── _reset.scss
│ │ ├── _buttons.scss
│ │ └── _type.scss
│ └── js
│ │ ├── .jshintrc
│ │ ├── tests
│ │ ├── server.js
│ │ ├── unit
│ │ │ ├── bootstrap-transition.js
│ │ │ ├── bootstrap-phantom.js
│ │ │ ├── bootstrap-affix.js
│ │ │ ├── bootstrap-scrollspy.js
│ │ │ ├── bootstrap-alert.js
│ │ │ ├── bootstrap-tab.js
│ │ │ ├── bootstrap-collapse.js
│ │ │ ├── bootstrap-button.js
│ │ │ ├── bootstrap-popover.js
│ │ │ └── bootstrap-modal.js
│ │ ├── index.html
│ │ ├── phantom.js
│ │ └── vendor
│ │ │ └── qunit.css
│ │ ├── bootstrap-transition.js
│ │ ├── bootstrap-alert.js
│ │ ├── bootstrap-button.js
│ │ ├── bootstrap-popover.js
│ │ ├── bootstrap-affix.js
│ │ ├── bootstrap-tab.js
│ │ ├── bootstrap-dropdown.js
│ │ ├── bootstrap-scrollspy.js
│ │ └── bootstrap-collapse.js
├── .htaccess
└── index.php
├── app
├── commands
│ └── .gitkeep
├── config
│ ├── local
│ │ ├── key.php
│ │ ├── app.php
│ │ └── database.php
│ ├── packages
│ │ └── .gitkeep
│ ├── compile.php
│ ├── testing
│ │ ├── cache.php
│ │ └── session.php
│ ├── workbench.php
│ ├── view.php
│ ├── queue.php
│ ├── auth.php
│ ├── mail.php
│ ├── cache.php
│ ├── database.php
│ └── session.php
├── controllers
│ ├── .gitkeep
│ ├── BaseController.php
│ └── HomeController.php
├── database
│ ├── seeds
│ │ ├── .gitkeep
│ │ └── DatabaseSeeder.php
│ ├── migrations
│ │ └── .gitkeep
│ └── production.sqlite
├── start
│ ├── local.php
│ ├── artisan.php
│ └── global.php
├── storage
│ ├── .gitignore
│ ├── cache
│ │ └── .gitignore
│ ├── logs
│ │ └── .gitignore
│ ├── meta
│ │ └── .gitignore
│ ├── sessions
│ │ └── .gitignore
│ └── views
│ │ └── .gitignore
├── views
│ └── emails
│ │ └── auth
│ │ └── reminder.blade.php
├── tests
│ ├── ExampleTest.php
│ └── TestCase.php
├── lang
│ └── en
│ │ ├── pagination.php
│ │ ├── reminders.php
│ │ └── validation.php
├── routes.php
├── models
│ └── User.php
└── filters.php
├── .gitattributes
├── .gitignore
├── readme.md
├── composer.json
├── server.php
├── phpunit.xml
├── bootstrap
├── paths.php
├── autoload.php
└── start.php
└── artisan
/public/favicon.ico:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/commands/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
--------------------------------------------------------------------------------
/app/config/local/key.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/config/packages/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/controllers/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/database/seeds/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/database/migrations/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/database/production.sqlite:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/start/local.php:
--------------------------------------------------------------------------------
1 | '3yRP3Md9TgEe2kyswTGiLG7hzqct8I2B'
5 | );
--------------------------------------------------------------------------------
/public/assets/images/laravel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msurguy/builtwithlaravel/HEAD/public/assets/images/laravel.png
--------------------------------------------------------------------------------
/public/bootstrap/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msurguy/builtwithlaravel/HEAD/public/bootstrap/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | app/config/production
2 | public/bootstrap/.sass-cache
3 | /bootstrap/compiled.php
4 | /vendor
5 | composer.phar
6 | composer.lock
7 | .DS_Store
8 |
--------------------------------------------------------------------------------
/public/bootstrap/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msurguy/builtwithlaravel/HEAD/public/bootstrap/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Options -MultiViews
3 | RewriteEngine On
4 | RewriteCond %{REQUEST_FILENAME} !-f
5 | RewriteRule ^ index.php [L]
6 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | ## Built with Laravel
2 |
3 | Built with Laravel is created to provide a place for developers to showcase websites and applications that they've built upon the [Laravel](http://laravel.com) framework.
--------------------------------------------------------------------------------
/public/bootstrap/lib/_builtwithlaravel.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Custom styles for builtwithlaravel
3 | // --------------------------------------------------
4 |
5 | .home-head{
6 | margin-top: 20px;
7 | height: 200px;
8 | }
9 |
--------------------------------------------------------------------------------
/app/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call('UserTableSeeder');
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/public/bootstrap/js/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "validthis": true,
3 | "laxcomma" : true,
4 | "laxbreak" : true,
5 | "browser" : true,
6 | "eqnull" : true,
7 | "debug" : true,
8 | "devel" : true,
9 | "boss" : true,
10 | "expr" : true,
11 | "asi" : true
12 | }
--------------------------------------------------------------------------------
/app/views/emails/auth/reminder.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 | To reset your password, complete this form: {{ URL::to('password/reset', array($token)) }}.
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/controllers/BaseController.php:
--------------------------------------------------------------------------------
1 | layout))
13 | {
14 | $this->layout = View::make($this->layout);
15 | }
16 | }
17 |
18 | }
--------------------------------------------------------------------------------
/app/config/local/database.php:
--------------------------------------------------------------------------------
1 | array(
5 | 'mysql' => array(
6 | 'driver' => 'mysql',
7 | 'host' => 'localhost',
8 | 'database' => 'builtwith',
9 | 'username' => 'root',
10 | 'password' => '',
11 | 'charset' => 'utf8',
12 | 'collation' => 'utf8_unicode_ci',
13 | 'prefix' => '',
14 | )
15 | )
16 | );
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "require": {
3 | "laravel/framework": "4.0.*"
4 | },
5 | "autoload": {
6 | "classmap": [
7 | "app/commands",
8 | "app/controllers",
9 | "app/models",
10 | "app/database/migrations",
11 | "app/database/seeds",
12 | "app/tests/TestCase.php"
13 | ]
14 | },
15 | "scripts": {
16 | "post-update-cmd": "php artisan optimize"
17 | },
18 | "minimum-stability": "dev"
19 | }
20 |
--------------------------------------------------------------------------------
/public/bootstrap/js/tests/server.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Simple connect server for phantom.js
3 | * Adapted from Modernizr
4 | */
5 |
6 | var connect = require('connect')
7 | , http = require('http')
8 | , fs = require('fs')
9 | , app = connect()
10 | .use(connect.static(__dirname + '/../../'));
11 |
12 | http.createServer(app).listen(3000);
13 |
14 | fs.writeFileSync(__dirname + '/pid.txt', process.pid, 'utf-8')
--------------------------------------------------------------------------------
/app/tests/ExampleTest.php:
--------------------------------------------------------------------------------
1 | client->request('GET', '/');
13 |
14 | $this->assertTrue($this->client->getResponse()->isOk());
15 |
16 | $this->assertCount(1, $crawler->filter('h1:contains("Hello World!")'));
17 | }
18 |
19 | }
--------------------------------------------------------------------------------
/public/bootstrap/lib/_layouts.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Layouts
3 | // --------------------------------------------------
4 |
5 |
6 | // Container (centered, fixed-width layouts)
7 | .container {
8 | @include container-fixed();
9 | }
10 |
11 | // Fluid layouts (left aligned, with sidebar, min- & max-width content)
12 | .container-fluid {
13 | padding-right: $gridGutterWidth;
14 | padding-left: $gridGutterWidth;
15 | @include clearfix();
16 | }
17 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/_component-animations.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Component animations
3 | // --------------------------------------------------
4 |
5 |
6 | .fade {
7 | opacity: 0;
8 | @include transition(opacity .15s linear);
9 | &.in {
10 | opacity: 1;
11 | }
12 | }
13 |
14 | .collapse {
15 | position: relative;
16 | height: 0;
17 | overflow: hidden;
18 | @include transition(height .35s ease);
19 | &.in {
20 | height: auto;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/tests/TestCase.php:
--------------------------------------------------------------------------------
1 | li {
13 | display: inline-block;
14 | @include ie7-inline-block();
15 | text-shadow: 0 1px 0 $white;
16 | > .divider {
17 | padding: 0 5px;
18 | color: #ccc;
19 | }
20 | }
21 | .active {
22 | color: $grayLight;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/_responsive-768px-979px.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Tablet to desktop
3 | // --------------------------------------------------
4 |
5 |
6 | @media (min-width: 768px) and (max-width: 979px) {
7 |
8 | // Fixed grid
9 | @include grid-core($gridColumnWidth768, $gridGutterWidth768);
10 |
11 | // Fluid grid
12 | @include grid-fluid($fluidGridColumnWidth768, $fluidGridGutterWidth768);
13 |
14 | // Input grid
15 | @include grid-input($gridColumnWidth768, $gridGutterWidth768);
16 |
17 | // No need to reset .thumbnails here since it's the same $gridGutterWidth
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/server.php:
--------------------------------------------------------------------------------
1 | '« Previous',
17 |
18 | 'next' => 'Next »',
19 |
20 | );
--------------------------------------------------------------------------------
/app/config/testing/cache.php:
--------------------------------------------------------------------------------
1 | 'array',
19 |
20 | );
--------------------------------------------------------------------------------
/app/routes.php:
--------------------------------------------------------------------------------
1 |
2 | ", { id: 'modal-test', "data-backdrop": false })
125 | div
126 | .bind("shown", function () {
127 | ok($('#modal-test').is(":visible"), 'modal visible')
128 | div.modal("hide")
129 | })
130 | .bind("hidden", function() {
131 | ok(!$('#modal-test').is(":visible"), 'modal hidden')
132 | div.remove()
133 | start()
134 | })
135 | .modal("show")
136 | })
137 | })
--------------------------------------------------------------------------------
/public/bootstrap/js/bootstrap-dropdown.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-dropdown.js v2.3.1
3 | * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4 | * ============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* DROPDOWN CLASS DEFINITION
27 | * ========================= */
28 |
29 | var toggle = '[data-toggle=dropdown]'
30 | , Dropdown = function (element) {
31 | var $el = $(element).on('click.dropdown.data-api', this.toggle)
32 | $('html').on('click.dropdown.data-api', function () {
33 | $el.parent().removeClass('open')
34 | })
35 | }
36 |
37 | Dropdown.prototype = {
38 |
39 | constructor: Dropdown
40 |
41 | , toggle: function (e) {
42 | var $this = $(this)
43 | , $parent
44 | , isActive
45 |
46 | if ($this.is('.disabled, :disabled')) return
47 |
48 | $parent = getParent($this)
49 |
50 | isActive = $parent.hasClass('open')
51 |
52 | clearMenus()
53 |
54 | if (!isActive) {
55 | $parent.toggleClass('open')
56 | }
57 |
58 | $this.focus()
59 |
60 | return false
61 | }
62 |
63 | , keydown: function (e) {
64 | var $this
65 | , $items
66 | , $active
67 | , $parent
68 | , isActive
69 | , index
70 |
71 | if (!/(38|40|27)/.test(e.keyCode)) return
72 |
73 | $this = $(this)
74 |
75 | e.preventDefault()
76 | e.stopPropagation()
77 |
78 | if ($this.is('.disabled, :disabled')) return
79 |
80 | $parent = getParent($this)
81 |
82 | isActive = $parent.hasClass('open')
83 |
84 | if (!isActive || (isActive && e.keyCode == 27)) {
85 | if (e.which == 27) $parent.find(toggle).focus()
86 | return $this.click()
87 | }
88 |
89 | $items = $('[role=menu] li:not(.divider):visible a', $parent)
90 |
91 | if (!$items.length) return
92 |
93 | index = $items.index($items.filter(':focus'))
94 |
95 | if (e.keyCode == 38 && index > 0) index-- // up
96 | if (e.keyCode == 40 && index < $items.length - 1) index++ // down
97 | if (!~index) index = 0
98 |
99 | $items
100 | .eq(index)
101 | .focus()
102 | }
103 |
104 | }
105 |
106 | function clearMenus() {
107 | $(toggle).each(function () {
108 | getParent($(this)).removeClass('open')
109 | })
110 | }
111 |
112 | function getParent($this) {
113 | var selector = $this.attr('data-target')
114 | , $parent
115 |
116 | if (!selector) {
117 | selector = $this.attr('href')
118 | selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
119 | }
120 |
121 | $parent = selector && $(selector)
122 |
123 | if (!$parent || !$parent.length) $parent = $this.parent()
124 |
125 | return $parent
126 | }
127 |
128 |
129 | /* DROPDOWN PLUGIN DEFINITION
130 | * ========================== */
131 |
132 | var old = $.fn.dropdown
133 |
134 | $.fn.dropdown = function (option) {
135 | return this.each(function () {
136 | var $this = $(this)
137 | , data = $this.data('dropdown')
138 | if (!data) $this.data('dropdown', (data = new Dropdown(this)))
139 | if (typeof option == 'string') data[option].call($this)
140 | })
141 | }
142 |
143 | $.fn.dropdown.Constructor = Dropdown
144 |
145 |
146 | /* DROPDOWN NO CONFLICT
147 | * ==================== */
148 |
149 | $.fn.dropdown.noConflict = function () {
150 | $.fn.dropdown = old
151 | return this
152 | }
153 |
154 |
155 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
156 | * =================================== */
157 |
158 | $(document)
159 | .on('click.dropdown.data-api', clearMenus)
160 | .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
161 | .on('click.dropdown-menu', function (e) { e.stopPropagation() })
162 | .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
163 | .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
164 |
165 | }(window.jQuery);
166 |
--------------------------------------------------------------------------------
/app/config/session.php:
--------------------------------------------------------------------------------
1 | 'cookie',
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | Session Lifetime
24 | |--------------------------------------------------------------------------
25 | |
26 | | Here you may specify the number of minutes that you wish the session
27 | | to be allowed to remain idle for it is expired. If you want them
28 | | to immediately expire when the browser closes, set it to zero.
29 | |
30 | */
31 |
32 | 'lifetime' => 120,
33 |
34 | /*
35 | |--------------------------------------------------------------------------
36 | | Session File Location
37 | |--------------------------------------------------------------------------
38 | |
39 | | When using the "file" session driver, we need a location where session
40 | | files may be stored. A default has been set for you but a different
41 | | location may be specified. This is only needed for file sessions.
42 | |
43 | */
44 |
45 | 'path' => __DIR__.'/../storage/sessions',
46 |
47 | /*
48 | |--------------------------------------------------------------------------
49 | | Session Database Connection
50 | |--------------------------------------------------------------------------
51 | |
52 | | When using the "database" session driver, you may specify the database
53 | | connection that should be used to manage your sessions. This should
54 | | correspond to a connection in your "database" configuration file.
55 | |
56 | */
57 |
58 | 'connection' => null,
59 |
60 | /*
61 | |--------------------------------------------------------------------------
62 | | Session Database Table
63 | |--------------------------------------------------------------------------
64 | |
65 | | When using the "database" session driver, you may specify the table we
66 | | should use to manage the sessions. Of course, a sensible default is
67 | | provided for you; however, you are free to change this as needed.
68 | |
69 | */
70 |
71 | 'table' => 'sessions',
72 |
73 | /*
74 | |--------------------------------------------------------------------------
75 | | Session Sweeping Lottery
76 | |--------------------------------------------------------------------------
77 | |
78 | | Some session drivers must manually sweep their storage location to get
79 | | rid of old sessions from storage. Here are the chances that it will
80 | | happen on a given request. By default, the odds are 2 out of 100.
81 | |
82 | */
83 |
84 | 'lottery' => array(2, 100),
85 |
86 | /*
87 | |--------------------------------------------------------------------------
88 | | Session Cookie Name
89 | |--------------------------------------------------------------------------
90 | |
91 | | Here you may change the name of the cookie used to identify a session
92 | | instance by ID. The name specified here will get used every time a
93 | | new session cookie is created by the framework for every driver.
94 | |
95 | */
96 |
97 | 'cookie' => 'laravel_session',
98 |
99 | /*
100 | |--------------------------------------------------------------------------
101 | | Session Cookie Path
102 | |--------------------------------------------------------------------------
103 | |
104 | | The session cookie path determines the path for which the cookie will
105 | | be regarded as available. Typically, this will be the root path of
106 | | your application but you are free to change this when necessary.
107 | |
108 | */
109 |
110 | 'path' => '/',
111 |
112 | /*
113 | |--------------------------------------------------------------------------
114 | | Session Cookie Domain
115 | |--------------------------------------------------------------------------
116 | |
117 | | Here you may change the domain of the cookie used to identify a session
118 | | in your application. This will determine which domains the cookie is
119 | | available to in your application. A sensible default has been set.
120 | |
121 | */
122 |
123 | 'domain' => null,
124 |
125 | /*
126 | |--------------------------------------------------------------------------
127 | | Session Payload Cookie Name
128 | |--------------------------------------------------------------------------
129 | |
130 | | When using the "cookie" session driver, you may configure the name of
131 | | the cookie used as the session "payload". This cookie actually has
132 | | the encrypted session data stored within it for the application.
133 | |
134 | */
135 |
136 | 'payload' => 'laravel_payload',
137 | );
138 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/tests/navbar-fixed-top.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
72 |
73 |
74 |
75 |
76 |
77 |
Navbar example
78 |
This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.
79 |
80 | View navbar docs »
81 |
82 |
83 |
84 |
85 |
86 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/tests/navbar-static-top.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
Navbar example
81 |
This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.
82 |
83 | View navbar docs »
84 |
85 |
86 |
87 |
88 |
89 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/tests/navbar.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
21 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
77 |
78 |
79 |
80 |
Navbar example
81 |
This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.
82 |
83 | View navbar docs »
84 |
85 |
86 |
87 |
88 |
89 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/_responsive-navbar.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Navbar
3 | // --------------------------------------------------
4 |
5 |
6 | // TABLETS AND BELOW
7 | // -----------------
8 | @media (max-width: $navbarCollapseWidth) {
9 |
10 | // UNFIX THE TOPBAR
11 | // ----------------
12 | // Remove any padding from the body
13 | body {
14 | padding-top: 0;
15 | }
16 | // Unfix the navbars
17 | .navbar-fixed-top,
18 | .navbar-fixed-bottom {
19 | position: static;
20 | }
21 | .navbar-fixed-top {
22 | margin-bottom: $baseLineHeight;
23 | }
24 | .navbar-fixed-bottom {
25 | margin-top: $baseLineHeight;
26 | }
27 | .navbar-fixed-top .navbar-inner,
28 | .navbar-fixed-bottom .navbar-inner {
29 | padding: 5px;
30 | }
31 | .navbar .container {
32 | width: auto;
33 | padding: 0;
34 | }
35 | // Account for brand name
36 | .navbar .brand {
37 | padding-left: 10px;
38 | padding-right: 10px;
39 | margin: 0 0 0 -5px;
40 | }
41 |
42 | // COLLAPSIBLE NAVBAR
43 | // ------------------
44 | // Nav collapse clears brand
45 | .nav-collapse {
46 | clear: both;
47 | }
48 | // Block-level the nav
49 | .nav-collapse .nav {
50 | float: none;
51 | margin: 0 0 ($baseLineHeight / 2);
52 | }
53 | .nav-collapse .nav > li {
54 | float: none;
55 | }
56 | .nav-collapse .nav > li > a {
57 | margin-bottom: 2px;
58 | }
59 | .nav-collapse .nav > .divider-vertical {
60 | display: none;
61 | }
62 | .nav-collapse .nav .nav-header {
63 | color: $navbarText;
64 | text-shadow: none;
65 | }
66 | // Nav and dropdown links in navbar
67 | .nav-collapse .nav > li > a,
68 | .nav-collapse .dropdown-menu a {
69 | padding: 9px 15px;
70 | font-weight: bold;
71 | color: $navbarLinkColor;
72 | @include border-radius(3px);
73 | }
74 | // Buttons
75 | .nav-collapse .btn {
76 | padding: 4px 10px 4px;
77 | font-weight: normal;
78 | @include border-radius($baseBorderRadius);
79 | }
80 | .nav-collapse .dropdown-menu li + li a {
81 | margin-bottom: 2px;
82 | }
83 | .nav-collapse .nav > li > a:hover,
84 | .nav-collapse .nav > li > a:focus,
85 | .nav-collapse .dropdown-menu a:hover,
86 | .nav-collapse .dropdown-menu a:focus {
87 | background-color: $navbarBackground;
88 | }
89 | .navbar-inverse .nav-collapse .nav > li > a,
90 | .navbar-inverse .nav-collapse .dropdown-menu a {
91 | color: $navbarInverseLinkColor;
92 | }
93 | .navbar-inverse .nav-collapse .nav > li > a:hover,
94 | .navbar-inverse .nav-collapse .nav > li > a:focus,
95 | .navbar-inverse .nav-collapse .dropdown-menu a:hover,
96 | .navbar-inverse .nav-collapse .dropdown-menu a:focus {
97 | background-color: $navbarInverseBackground;
98 | }
99 | // Buttons in the navbar
100 | .nav-collapse.in .btn-group {
101 | margin-top: 5px;
102 | padding: 0;
103 | }
104 | // Dropdowns in the navbar
105 | .nav-collapse .dropdown-menu {
106 | position: static;
107 | top: auto;
108 | left: auto;
109 | float: none;
110 | display: none;
111 | max-width: none;
112 | margin: 0 15px;
113 | padding: 0;
114 | background-color: transparent;
115 | border: none;
116 | @include border-radius(0);
117 | @include box-shadow(none);
118 | }
119 | .nav-collapse .open > .dropdown-menu {
120 | display: block;
121 | }
122 |
123 | .nav-collapse .dropdown-menu:before,
124 | .nav-collapse .dropdown-menu:after {
125 | display: none;
126 | }
127 | .nav-collapse .dropdown-menu .divider {
128 | display: none;
129 | }
130 | .nav-collapse .nav > li > .dropdown-menu {
131 | &:before,
132 | &:after {
133 | display: none;
134 | }
135 | }
136 | // Forms in navbar
137 | .nav-collapse .navbar-form,
138 | .nav-collapse .navbar-search {
139 | float: none;
140 | padding: ($baseLineHeight / 2) 15px;
141 | margin: ($baseLineHeight / 2) 0;
142 | border-top: 1px solid $navbarBackground;
143 | border-bottom: 1px solid $navbarBackground;
144 | @include box-shadow(inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1));
145 | }
146 | .navbar-inverse .nav-collapse .navbar-form,
147 | .navbar-inverse .nav-collapse .navbar-search {
148 | border-top-color: $navbarInverseBackground;
149 | border-bottom-color: $navbarInverseBackground;
150 | }
151 | // Pull right (secondary) nav content
152 | .navbar .nav-collapse .nav.pull-right {
153 | float: none;
154 | margin-left: 0;
155 | }
156 | // Hide everything in the navbar save .brand and toggle button */
157 | .nav-collapse,
158 | .nav-collapse.collapse {
159 | overflow: hidden;
160 | height: 0;
161 | }
162 | // Navbar button
163 | .navbar .btn-navbar {
164 | display: block;
165 | }
166 |
167 | // STATIC NAVBAR
168 | // -------------
169 | .navbar-static .navbar-inner {
170 | padding-left: 10px;
171 | padding-right: 10px;
172 | }
173 |
174 |
175 | }
176 |
177 |
178 | // DEFAULT DESKTOP
179 | // ---------------
180 |
181 | @media (min-width: $navbarCollapseDesktopWidth) {
182 |
183 | // Required to make the collapsing navbar work on regular desktops
184 | .nav-collapse.collapse {
185 | height: auto !important;
186 | overflow: visible !important;
187 | }
188 |
189 | }
190 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/_reset.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Reset CSS
3 | // Adapted from http://github.com/necolas/normalize.css
4 | // --------------------------------------------------
5 |
6 |
7 | // Display in IE6-9 and FF3
8 | // -------------------------
9 |
10 | article,
11 | aside,
12 | details,
13 | figcaption,
14 | figure,
15 | footer,
16 | header,
17 | hgroup,
18 | nav,
19 | section {
20 | display: block;
21 | }
22 |
23 | // Display block in IE6-9 and FF3
24 | // -------------------------
25 |
26 | audio,
27 | canvas,
28 | video {
29 | display: inline-block;
30 | *display: inline;
31 | *zoom: 1;
32 | }
33 |
34 | // Prevents modern browsers from displaying 'audio' without controls
35 | // -------------------------
36 |
37 | audio:not([controls]) {
38 | display: none;
39 | }
40 |
41 | // Base settings
42 | // -------------------------
43 |
44 | html {
45 | font-size: 100%;
46 | -webkit-text-size-adjust: 100%;
47 | -ms-text-size-adjust: 100%;
48 | }
49 | // Focus states
50 | a:focus {
51 | @include tab-focus();
52 | }
53 | // Hover & Active
54 | a:hover,
55 | a:active {
56 | outline: 0;
57 | }
58 |
59 | // Prevents sub and sup affecting line-height in all browsers
60 | // -------------------------
61 |
62 | sub,
63 | sup {
64 | position: relative;
65 | font-size: 75%;
66 | line-height: 0;
67 | vertical-align: baseline;
68 | }
69 | sup {
70 | top: -0.5em;
71 | }
72 | sub {
73 | bottom: -0.25em;
74 | }
75 |
76 | // Img border in a's and image quality
77 | // -------------------------
78 |
79 | img {
80 | /* Responsive images (ensure images don't scale beyond their parents) */
81 | max-width: 100%; /* Part 1: Set a maxium relative to the parent */
82 | width: auto\9; /* IE7-8 need help adjusting responsive images */
83 | height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */
84 |
85 | vertical-align: middle;
86 | border: 0;
87 | -ms-interpolation-mode: bicubic;
88 | }
89 |
90 | // Prevent max-width from affecting Google Maps
91 | #map_canvas img,
92 | .google-maps img {
93 | max-width: none;
94 | }
95 |
96 | // Forms
97 | // -------------------------
98 |
99 | // Font size in all browsers, margin changes, misc consistency
100 | button,
101 | input,
102 | select,
103 | textarea {
104 | margin: 0;
105 | font-size: 100%;
106 | vertical-align: middle;
107 | }
108 | button,
109 | input {
110 | *overflow: visible; // Inner spacing ie IE6/7
111 | line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
112 | }
113 | button::-moz-focus-inner,
114 | input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
115 | padding: 0;
116 | border: 0;
117 | }
118 | button,
119 | html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.
120 | input[type="reset"],
121 | input[type="submit"] {
122 | -webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
123 | cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
124 | }
125 | label,
126 | select,
127 | button,
128 | input[type="button"],
129 | input[type="reset"],
130 | input[type="submit"],
131 | input[type="radio"],
132 | input[type="checkbox"] {
133 | cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
134 | }
135 | input[type="search"] { // Appearance in Safari/Chrome
136 | @include box-sizing(content-box);
137 | -webkit-appearance: textfield;
138 | }
139 | input[type="search"]::-webkit-search-decoration,
140 | input[type="search"]::-webkit-search-cancel-button {
141 | -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
142 | }
143 | textarea {
144 | overflow: auto; // Remove vertical scrollbar in IE6-9
145 | vertical-align: top; // Readability and alignment cross-browser
146 | }
147 |
148 |
149 | // Printing
150 | // -------------------------
151 | // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
152 |
153 | @media print {
154 |
155 | * {
156 | text-shadow: none !important;
157 | color: #000 !important; // Black prints faster: h5bp.com/s
158 | background: transparent !important;
159 | box-shadow: none !important;
160 | }
161 |
162 | a,
163 | a:visited {
164 | text-decoration: underline;
165 | }
166 |
167 | a[href]:after {
168 | content: " (" attr(href) ")";
169 | }
170 |
171 | abbr[title]:after {
172 | content: " (" attr(title) ")";
173 | }
174 |
175 | // Don't show links for images, or javascript/internal links
176 | .ir a:after,
177 | a[href^="javascript:"]:after,
178 | a[href^="#"]:after {
179 | content: "";
180 | }
181 |
182 | pre,
183 | blockquote {
184 | border: 1px solid #999;
185 | page-break-inside: avoid;
186 | }
187 |
188 | thead {
189 | display: table-header-group; // h5bp.com/t
190 | }
191 |
192 | tr,
193 | img {
194 | page-break-inside: avoid;
195 | }
196 |
197 | img {
198 | max-width: 100% !important;
199 | }
200 |
201 | @page {
202 | margin: 0.5cm;
203 | }
204 |
205 | p,
206 | h2,
207 | h3 {
208 | orphans: 3;
209 | widows: 3;
210 | }
211 |
212 | h2,
213 | h3 {
214 | page-break-after: avoid;
215 | }
216 | }
217 |
--------------------------------------------------------------------------------
/public/bootstrap/js/bootstrap-scrollspy.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-scrollspy.js v2.3.1
3 | * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4 | * =============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* SCROLLSPY CLASS DEFINITION
27 | * ========================== */
28 |
29 | function ScrollSpy(element, options) {
30 | var process = $.proxy(this.process, this)
31 | , $element = $(element).is('body') ? $(window) : $(element)
32 | , href
33 | this.options = $.extend({}, $.fn.scrollspy.defaults, options)
34 | this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
35 | this.selector = (this.options.target
36 | || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
37 | || '') + ' .nav li > a'
38 | this.$body = $('body')
39 | this.refresh()
40 | this.process()
41 | }
42 |
43 | ScrollSpy.prototype = {
44 |
45 | constructor: ScrollSpy
46 |
47 | , refresh: function () {
48 | var self = this
49 | , $targets
50 |
51 | this.offsets = $([])
52 | this.targets = $([])
53 |
54 | $targets = this.$body
55 | .find(this.selector)
56 | .map(function () {
57 | var $el = $(this)
58 | , href = $el.data('target') || $el.attr('href')
59 | , $href = /^#\w/.test(href) && $(href)
60 | return ( $href
61 | && $href.length
62 | && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
63 | })
64 | .sort(function (a, b) { return a[0] - b[0] })
65 | .each(function () {
66 | self.offsets.push(this[0])
67 | self.targets.push(this[1])
68 | })
69 | }
70 |
71 | , process: function () {
72 | var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
73 | , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
74 | , maxScroll = scrollHeight - this.$scrollElement.height()
75 | , offsets = this.offsets
76 | , targets = this.targets
77 | , activeTarget = this.activeTarget
78 | , i
79 |
80 | if (scrollTop >= maxScroll) {
81 | return activeTarget != (i = targets.last()[0])
82 | && this.activate ( i )
83 | }
84 |
85 | for (i = offsets.length; i--;) {
86 | activeTarget != targets[i]
87 | && scrollTop >= offsets[i]
88 | && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
89 | && this.activate( targets[i] )
90 | }
91 | }
92 |
93 | , activate: function (target) {
94 | var active
95 | , selector
96 |
97 | this.activeTarget = target
98 |
99 | $(this.selector)
100 | .parent('.active')
101 | .removeClass('active')
102 |
103 | selector = this.selector
104 | + '[data-target="' + target + '"],'
105 | + this.selector + '[href="' + target + '"]'
106 |
107 | active = $(selector)
108 | .parent('li')
109 | .addClass('active')
110 |
111 | if (active.parent('.dropdown-menu').length) {
112 | active = active.closest('li.dropdown').addClass('active')
113 | }
114 |
115 | active.trigger('activate')
116 | }
117 |
118 | }
119 |
120 |
121 | /* SCROLLSPY PLUGIN DEFINITION
122 | * =========================== */
123 |
124 | var old = $.fn.scrollspy
125 |
126 | $.fn.scrollspy = function (option) {
127 | return this.each(function () {
128 | var $this = $(this)
129 | , data = $this.data('scrollspy')
130 | , options = typeof option == 'object' && option
131 | if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
132 | if (typeof option == 'string') data[option]()
133 | })
134 | }
135 |
136 | $.fn.scrollspy.Constructor = ScrollSpy
137 |
138 | $.fn.scrollspy.defaults = {
139 | offset: 10
140 | }
141 |
142 |
143 | /* SCROLLSPY NO CONFLICT
144 | * ===================== */
145 |
146 | $.fn.scrollspy.noConflict = function () {
147 | $.fn.scrollspy = old
148 | return this
149 | }
150 |
151 |
152 | /* SCROLLSPY DATA-API
153 | * ================== */
154 |
155 | $(window).on('load', function () {
156 | $('[data-spy="scroll"]').each(function () {
157 | var $spy = $(this)
158 | $spy.scrollspy($spy.data())
159 | })
160 | })
161 |
162 | }(window.jQuery);
--------------------------------------------------------------------------------
/public/bootstrap/js/bootstrap-collapse.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-collapse.js v2.3.1
3 | * http://twitter.github.com/bootstrap/javascript.html#collapse
4 | * =============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* COLLAPSE PUBLIC CLASS DEFINITION
27 | * ================================ */
28 |
29 | var Collapse = function (element, options) {
30 | this.$element = $(element)
31 | this.options = $.extend({}, $.fn.collapse.defaults, options)
32 |
33 | if (this.options.parent) {
34 | this.$parent = $(this.options.parent)
35 | }
36 |
37 | this.options.toggle && this.toggle()
38 | }
39 |
40 | Collapse.prototype = {
41 |
42 | constructor: Collapse
43 |
44 | , dimension: function () {
45 | var hasWidth = this.$element.hasClass('width')
46 | return hasWidth ? 'width' : 'height'
47 | }
48 |
49 | , show: function () {
50 | var dimension
51 | , scroll
52 | , actives
53 | , hasData
54 |
55 | if (this.transitioning || this.$element.hasClass('in')) return
56 |
57 | dimension = this.dimension()
58 | scroll = $.camelCase(['scroll', dimension].join('-'))
59 | actives = this.$parent && this.$parent.find('> .accordion-group > .in')
60 |
61 | if (actives && actives.length) {
62 | hasData = actives.data('collapse')
63 | if (hasData && hasData.transitioning) return
64 | actives.collapse('hide')
65 | hasData || actives.data('collapse', null)
66 | }
67 |
68 | this.$element[dimension](0)
69 | this.transition('addClass', $.Event('show'), 'shown')
70 | $.support.transition && this.$element[dimension](this.$element[0][scroll])
71 | }
72 |
73 | , hide: function () {
74 | var dimension
75 | if (this.transitioning || !this.$element.hasClass('in')) return
76 | dimension = this.dimension()
77 | this.reset(this.$element[dimension]())
78 | this.transition('removeClass', $.Event('hide'), 'hidden')
79 | this.$element[dimension](0)
80 | }
81 |
82 | , reset: function (size) {
83 | var dimension = this.dimension()
84 |
85 | this.$element
86 | .removeClass('collapse')
87 | [dimension](size || 'auto')
88 | [0].offsetWidth
89 |
90 | this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
91 |
92 | return this
93 | }
94 |
95 | , transition: function (method, startEvent, completeEvent) {
96 | var that = this
97 | , complete = function () {
98 | if (startEvent.type == 'show') that.reset()
99 | that.transitioning = 0
100 | that.$element.trigger(completeEvent)
101 | }
102 |
103 | this.$element.trigger(startEvent)
104 |
105 | if (startEvent.isDefaultPrevented()) return
106 |
107 | this.transitioning = 1
108 |
109 | this.$element[method]('in')
110 |
111 | $.support.transition && this.$element.hasClass('collapse') ?
112 | this.$element.one($.support.transition.end, complete) :
113 | complete()
114 | }
115 |
116 | , toggle: function () {
117 | this[this.$element.hasClass('in') ? 'hide' : 'show']()
118 | }
119 |
120 | }
121 |
122 |
123 | /* COLLAPSE PLUGIN DEFINITION
124 | * ========================== */
125 |
126 | var old = $.fn.collapse
127 |
128 | $.fn.collapse = function (option) {
129 | return this.each(function () {
130 | var $this = $(this)
131 | , data = $this.data('collapse')
132 | , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
133 | if (!data) $this.data('collapse', (data = new Collapse(this, options)))
134 | if (typeof option == 'string') data[option]()
135 | })
136 | }
137 |
138 | $.fn.collapse.defaults = {
139 | toggle: true
140 | }
141 |
142 | $.fn.collapse.Constructor = Collapse
143 |
144 |
145 | /* COLLAPSE NO CONFLICT
146 | * ==================== */
147 |
148 | $.fn.collapse.noConflict = function () {
149 | $.fn.collapse = old
150 | return this
151 | }
152 |
153 |
154 | /* COLLAPSE DATA-API
155 | * ================= */
156 |
157 | $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
158 | var $this = $(this), href
159 | , target = $this.attr('data-target')
160 | || e.preventDefault()
161 | || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
162 | , option = $(target).data('collapse') ? 'toggle' : $this.data()
163 | $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
164 | $(target).collapse(option)
165 | })
166 |
167 | }(window.jQuery);
--------------------------------------------------------------------------------
/public/bootstrap/js/tests/vendor/qunit.css:
--------------------------------------------------------------------------------
1 | /**
2 | * QUnit - A JavaScript Unit Testing Framework
3 | *
4 | * http://docs.jquery.com/QUnit
5 | *
6 | * Copyright (c) 2012 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-fixture {
231 | display:none;
232 | }
--------------------------------------------------------------------------------
/public/bootstrap/lib/_buttons.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Buttons
3 | // --------------------------------------------------
4 |
5 |
6 | // Base styles
7 | // --------------------------------------------------
8 |
9 | // Core
10 | .btn {
11 | display: inline-block;
12 | @include ie7-inline-block();
13 | padding: 4px 12px;
14 | margin-bottom: 0; // For input.btn
15 | font-size: $baseFontSize;
16 | line-height: $baseLineHeight;
17 | text-align: center;
18 | vertical-align: middle;
19 | cursor: pointer;
20 | @include buttonBackground($btnBackground, $btnBackgroundHighlight, $grayDark, 0 1px 1px rgba(255,255,255,.75));
21 | border: 1px solid $btnBorder;
22 | *border: 0; // Remove the border to prevent IE7's black border on input:focus
23 | border-bottom-color: darken($btnBorder, 10%);
24 | @include border-radius($baseBorderRadius);
25 | @include ie7-restore-left-whitespace(); // Give IE7 some love
26 | @include box-shadow(inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05));
27 |
28 | // Hover/focus state
29 | &:hover,
30 | &:focus {
31 | color: $grayDark;
32 | text-decoration: none;
33 | background-position: 0 -15px;
34 |
35 | // transition is only when going to hover/focus, otherwise the background
36 | // behind the gradient (there for IE<=9 fallback) gets mismatched
37 | @include transition(background-position .1s linear);
38 | }
39 |
40 | // Focus state for keyboard and accessibility
41 | &:focus {
42 | @include tab-focus();
43 | }
44 |
45 | // Active state
46 | &.active,
47 | &:active {
48 | background-image: none;
49 | outline: 0;
50 | @include box-shadow(inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05));
51 | }
52 |
53 | // Disabled state
54 | &.disabled,
55 | &[disabled] {
56 | cursor: default;
57 | background-image: none;
58 | @include opacity(65);
59 | @include box-shadow(none);
60 | }
61 |
62 | }
63 |
64 |
65 |
66 | // Button Sizes
67 | // --------------------------------------------------
68 |
69 | // Large
70 | .btn-large {
71 | padding: $paddingLarge;
72 | font-size: $fontSizeLarge;
73 | @include border-radius($borderRadiusLarge);
74 | }
75 | .btn-large [class^="icon-"],
76 | .btn-large [class*=" icon-"] {
77 | margin-top: 4px;
78 | }
79 |
80 | // Small
81 | .btn-small {
82 | padding: $paddingSmall;
83 | font-size: $fontSizeSmall;
84 | @include border-radius($borderRadiusSmall);
85 | }
86 | .btn-small [class^="icon-"],
87 | .btn-small [class*=" icon-"] {
88 | margin-top: 0;
89 | }
90 | .btn-mini [class^="icon-"],
91 | .btn-mini [class*=" icon-"] {
92 | margin-top: -1px;
93 | }
94 |
95 | // Mini
96 | .btn-mini {
97 | padding: $paddingMini;
98 | font-size: $fontSizeMini;
99 | @include border-radius($borderRadiusSmall);
100 | }
101 |
102 |
103 | // Block button
104 | // -------------------------
105 |
106 | .btn-block {
107 | display: block;
108 | width: 100%;
109 | padding-left: 0;
110 | padding-right: 0;
111 | @include box-sizing(border-box);
112 | }
113 |
114 | // Vertically space out multiple block buttons
115 | .btn-block + .btn-block {
116 | margin-top: 5px;
117 | }
118 |
119 | // Specificity overrides
120 | input[type="submit"],
121 | input[type="reset"],
122 | input[type="button"] {
123 | &.btn-block {
124 | width: 100%;
125 | }
126 | }
127 |
128 |
129 |
130 | // Alternate buttons
131 | // --------------------------------------------------
132 |
133 | // Provide *some* extra contrast for those who can get it
134 | .btn-primary.active,
135 | .btn-warning.active,
136 | .btn-danger.active,
137 | .btn-success.active,
138 | .btn-info.active,
139 | .btn-inverse.active {
140 | color: rgba(255,255,255,.75);
141 | }
142 |
143 | // Set the backgrounds
144 | // -------------------------
145 | .btn-primary {
146 | @include buttonBackground($btnPrimaryBackground, $btnPrimaryBackgroundHighlight);
147 | }
148 | // Warning appears are orange
149 | .btn-warning {
150 | @include buttonBackground($btnWarningBackground, $btnWarningBackgroundHighlight);
151 | }
152 | // Danger and error appear as red
153 | .btn-danger {
154 | @include buttonBackground($btnDangerBackground, $btnDangerBackgroundHighlight);
155 | }
156 | // Success appears as green
157 | .btn-success {
158 | @include buttonBackground($btnSuccessBackground, $btnSuccessBackgroundHighlight);
159 | }
160 | // Info appears as a neutral blue
161 | .btn-info {
162 | @include buttonBackground($btnInfoBackground, $btnInfoBackgroundHighlight);
163 | }
164 | // Inverse appears as dark gray
165 | .btn-inverse {
166 | @include buttonBackground($btnInverseBackground, $btnInverseBackgroundHighlight);
167 | }
168 |
169 |
170 | // Cross-browser Jank
171 | // --------------------------------------------------
172 |
173 | button.btn,
174 | input[type="submit"].btn {
175 |
176 | // Firefox 3.6 only I believe
177 | &::-moz-focus-inner {
178 | padding: 0;
179 | border: 0;
180 | }
181 |
182 | // IE7 has some default padding on button controls
183 | *padding-top: 3px;
184 | *padding-bottom: 3px;
185 |
186 | &.btn-large {
187 | *padding-top: 7px;
188 | *padding-bottom: 7px;
189 | }
190 | &.btn-small {
191 | *padding-top: 3px;
192 | *padding-bottom: 3px;
193 | }
194 | &.btn-mini {
195 | *padding-top: 1px;
196 | *padding-bottom: 1px;
197 | }
198 | }
199 |
200 |
201 | // Link buttons
202 | // --------------------------------------------------
203 |
204 | // Make a button look and behave like a link
205 | .btn-link,
206 | .btn-link:active,
207 | .btn-link[disabled] {
208 | background-color: transparent;
209 | background-image: none;
210 | @include box-shadow(none);
211 | }
212 | .btn-link {
213 | border-color: transparent;
214 | cursor: pointer;
215 | color: $linkColor;
216 | @include border-radius(0);
217 | }
218 | .btn-link:hover,
219 | .btn-link:focus {
220 | color: $linkColorHover;
221 | text-decoration: underline;
222 | background-color: transparent;
223 | }
224 | .btn-link[disabled]:hover,
225 | .btn-link[disabled]:focus {
226 | color: $grayDark;
227 | text-decoration: none;
228 | }
229 |
--------------------------------------------------------------------------------
/public/bootstrap/lib/_type.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Typography
3 | // --------------------------------------------------
4 |
5 |
6 | // Body text
7 | // -------------------------
8 |
9 | p {
10 | margin: 0 0 $baseLineHeight / 2;
11 | }
12 | .lead {
13 | margin-bottom: $baseLineHeight;
14 | font-size: $baseFontSize * 1.5;
15 | font-weight: 200;
16 | line-height: $baseLineHeight * 1.5;
17 | }
18 |
19 |
20 | // Emphasis & misc
21 | // -------------------------
22 |
23 | // Ex: 14px base font * 85% = about 12px
24 | small { font-size: 85%; }
25 |
26 | strong { font-weight: bold; }
27 | em { font-style: italic; }
28 | cite { font-style: normal; }
29 |
30 | // Utility classes
31 | .muted { color: $grayLight; }
32 | a.muted:hover,
33 | a.muted:focus { color: darken($grayLight, 10%); }
34 |
35 | .text-warning { color: $warningText; }
36 | a.text-warning:hover,
37 | a.text-warning:focus { color: darken($warningText, 10%); }
38 |
39 | .text-error { color: $errorText; }
40 | a.text-error:hover,
41 | a.text-error:focus { color: darken($errorText, 10%); }
42 |
43 | .text-info { color: $infoText; }
44 | a.text-info:hover,
45 | a.text-info:focus { color: darken($infoText, 10%); }
46 |
47 | .text-success { color: $successText; }
48 | a.text-success:hover,
49 | a.text-success:focus { color: darken($successText, 10%); }
50 |
51 | .text-left { text-align: left; }
52 | .text-right { text-align: right; }
53 | .text-center { text-align: center; }
54 |
55 |
56 | // Headings
57 | // -------------------------
58 |
59 | h1, h2, h3, h4, h5, h6 {
60 | margin: ($baseLineHeight / 2) 0;
61 | font-family: $headingsFontFamily;
62 | font-weight: $headingsFontWeight;
63 | line-height: $baseLineHeight;
64 | color: $headingsColor;
65 | text-rendering: optimizelegibility; // Fix the character spacing for headings
66 | small {
67 | font-weight: normal;
68 | line-height: 1;
69 | color: $grayLight;
70 | }
71 | }
72 |
73 | h1,
74 | h2,
75 | h3 { line-height: $baseLineHeight * 2; }
76 |
77 | h1 { font-size: $baseFontSize * 2.75; } // ~38px
78 | h2 { font-size: $baseFontSize * 2.25; } // ~32px
79 | h3 { font-size: $baseFontSize * 1.75; } // ~24px
80 | h4 { font-size: $baseFontSize * 1.25; } // ~18px
81 | h5 { font-size: $baseFontSize; }
82 | h6 { font-size: $baseFontSize * 0.85; } // ~12px
83 |
84 | h1 small { font-size: $baseFontSize * 1.75; } // ~24px
85 | h2 small { font-size: $baseFontSize * 1.25; } // ~18px
86 | h3 small { font-size: $baseFontSize; }
87 | h4 small { font-size: $baseFontSize; }
88 |
89 |
90 | // Page header
91 | // -------------------------
92 |
93 | .page-header {
94 | padding-bottom: ($baseLineHeight / 2) - 1;
95 | margin: $baseLineHeight 0 ($baseLineHeight * 1.5);
96 | border-bottom: 1px solid $grayLighter;
97 | }
98 |
99 |
100 |
101 | // Lists
102 | // --------------------------------------------------
103 |
104 | // Unordered and Ordered lists
105 | ul, ol {
106 | padding: 0;
107 | margin: 0 0 $baseLineHeight / 2 25px;
108 | }
109 | ul ul,
110 | ul ol,
111 | ol ol,
112 | ol ul {
113 | margin-bottom: 0;
114 | }
115 | li {
116 | line-height: $baseLineHeight;
117 | }
118 |
119 | // Remove default list styles
120 | ul.unstyled,
121 | ol.unstyled {
122 | margin-left: 0;
123 | list-style: none;
124 | }
125 |
126 | // Single-line list items
127 | ul.inline,
128 | ol.inline {
129 | margin-left: 0;
130 | list-style: none;
131 | > li {
132 | display: inline-block;
133 | @include ie7-inline-block();
134 | padding-left: 5px;
135 | padding-right: 5px;
136 | }
137 | }
138 |
139 | // Description Lists
140 | dl {
141 | margin-bottom: $baseLineHeight;
142 | }
143 | dt,
144 | dd {
145 | line-height: $baseLineHeight;
146 | }
147 | dt {
148 | font-weight: bold;
149 | }
150 | dd {
151 | margin-left: $baseLineHeight / 2;
152 | }
153 | // Horizontal layout (like forms)
154 | .dl-horizontal {
155 | @include clearfix(); // Ensure dl clears floats if empty dd elements present
156 | dt {
157 | float: left;
158 | width: $horizontalComponentOffset - 20;
159 | clear: left;
160 | text-align: right;
161 | @include text-overflow();
162 | }
163 | dd {
164 | margin-left: $horizontalComponentOffset;
165 | }
166 | }
167 |
168 | // MISC
169 | // ----
170 |
171 | // Horizontal rules
172 | hr {
173 | margin: $baseLineHeight 0;
174 | border: 0;
175 | border-top: 1px solid $hrBorder;
176 | border-bottom: 1px solid $white;
177 | }
178 |
179 | // Abbreviations and acronyms
180 | abbr[title],
181 | // Added data-* attribute to help out our tooltip plugin, per https://github.com/twitter/bootstrap/issues/5257
182 | abbr[data-original-title] {
183 | cursor: help;
184 | border-bottom: 1px dotted $grayLight;
185 | }
186 | abbr.initialism {
187 | font-size: 90%;
188 | text-transform: uppercase;
189 | }
190 |
191 | // Blockquotes
192 | blockquote {
193 | padding: 0 0 0 15px;
194 | margin: 0 0 $baseLineHeight;
195 | border-left: 5px solid $grayLighter;
196 | p {
197 | margin-bottom: 0;
198 | font-size: $baseFontSize * 1.25;
199 | font-weight: 300;
200 | line-height: 1.25;
201 | }
202 | small {
203 | display: block;
204 | line-height: $baseLineHeight;
205 | color: $grayLight;
206 | &:before {
207 | content: '\2014 \00A0';
208 | }
209 | }
210 |
211 | // Float right with text-align: right
212 | &.pull-right {
213 | float: right;
214 | padding-right: 15px;
215 | padding-left: 0;
216 | border-right: 5px solid $grayLighter;
217 | border-left: 0;
218 | p,
219 | small {
220 | text-align: right;
221 | }
222 | small {
223 | &:before {
224 | content: '';
225 | }
226 | &:after {
227 | content: '\00A0 \2014';
228 | }
229 | }
230 | }
231 | }
232 |
233 | // Quotes
234 | q:before,
235 | q:after,
236 | blockquote:before,
237 | blockquote:after {
238 | content: "";
239 | }
240 |
241 | // Addresses
242 | address {
243 | display: block;
244 | margin-bottom: $baseLineHeight;
245 | font-style: normal;
246 | line-height: $baseLineHeight;
247 | }
248 |
--------------------------------------------------------------------------------