", { 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 | })
--------------------------------------------------------------------------------
/bootstrap/js/tests/unit/bootstrap-phantom.js:
--------------------------------------------------------------------------------
1 | // Logging setup for phantom integration
2 | // adapted from Modernizr
3 |
4 | QUnit.begin = function () {
5 | console.log("Starting test suite")
6 | console.log("================================================\n")
7 | }
8 |
9 | QUnit.moduleDone = function (opts) {
10 | if (opts.failed === 0) {
11 | console.log("\u2714 All tests passed in '" + opts.name + "' module")
12 | } else {
13 | console.log("\u2716 " + opts.failed + " tests failed in '" + opts.name + "' module")
14 | }
15 | }
16 |
17 | QUnit.done = function (opts) {
18 | console.log("\n================================================")
19 | console.log("Tests completed in " + opts.runtime + " milliseconds")
20 | console.log(opts.passed + " tests of " + opts.total + " passed, " + opts.failed + " failed.")
21 | }
--------------------------------------------------------------------------------
/bootstrap/js/tests/unit/bootstrap-popover.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-popover")
4 |
5 | test("should provide no conflict", function () {
6 | var popover = $.fn.popover.noConflict()
7 | ok(!$.fn.popover, 'popover was set back to undefined (org value)')
8 | $.fn.popover = popover
9 | })
10 |
11 | test("should be defined on jquery object", function () {
12 | var div = $('
')
13 | ok(div.popover, 'popover method is defined')
14 | })
15 |
16 | test("should return element", function () {
17 | var div = $('
')
18 | ok(div.popover() == div, 'document.body returned')
19 | })
20 |
21 | test("should render popover element", function () {
22 | $.support.transition = false
23 | var popover = $('
@mdo')
24 | .appendTo('#qunit-fixture')
25 | .popover('show')
26 |
27 | ok($('.popover').length, 'popover was inserted')
28 | popover.popover('hide')
29 | ok(!$(".popover").length, 'popover removed')
30 | })
31 |
32 | test("should store popover instance in popover data object", function () {
33 | $.support.transition = false
34 | var popover = $('
@mdo')
35 | .popover()
36 |
37 | ok(!!popover.data('popover'), 'popover instance exists')
38 | })
39 |
40 | test("should get title and content from options", function () {
41 | $.support.transition = false
42 | var popover = $('
@fat')
43 | .appendTo('#qunit-fixture')
44 | .popover({
45 | title: function () {
46 | return '@fat'
47 | }
48 | , content: function () {
49 | return 'loves writing tests (╯°□°)╯︵ ┻━┻'
50 | }
51 | })
52 |
53 | popover.popover('show')
54 |
55 | ok($('.popover').length, 'popover was inserted')
56 | equals($('.popover .popover-title').text(), '@fat', 'title correctly inserted')
57 | equals($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
58 |
59 | popover.popover('hide')
60 | ok(!$('.popover').length, 'popover was removed')
61 | $('#qunit-fixture').empty()
62 | })
63 |
64 | test("should get title and content from attributes", function () {
65 | $.support.transition = false
66 | var popover = $('
@mdo')
67 | .appendTo('#qunit-fixture')
68 | .popover()
69 | .popover('show')
70 |
71 | ok($('.popover').length, 'popover was inserted')
72 | equals($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
73 | equals($('.popover .popover-content').text(), "loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻", 'content correctly inserted')
74 |
75 | popover.popover('hide')
76 | ok(!$('.popover').length, 'popover was removed')
77 | $('#qunit-fixture').empty()
78 | })
79 |
80 | test("should respect custom classes", function() {
81 | $.support.transition = false
82 | var popover = $('
@fat')
83 | .appendTo('#qunit-fixture')
84 | .popover({
85 | title: 'Test'
86 | , content: 'Test'
87 | , template: '
'
88 | })
89 |
90 | popover.popover('show')
91 |
92 | ok($('.popover').length, 'popover was inserted')
93 | ok($('.popover').hasClass('foobar'), 'custom class is present')
94 |
95 | popover.popover('hide')
96 | ok(!$('.popover').length, 'popover was removed')
97 | $('#qunit-fixture').empty()
98 | })
99 |
100 | test("should destroy popover", function () {
101 | var popover = $('
').popover({trigger: 'hover'}).on('click.foo', function(){})
102 | ok(popover.data('popover'), 'popover has data')
103 | ok($._data(popover[0], 'events').mouseover && $._data(popover[0], 'events').mouseout, 'popover has hover event')
104 | ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover has extra click.foo event')
105 | popover.popover('show')
106 | popover.popover('destroy')
107 | ok(!popover.hasClass('in'), 'popover is hidden')
108 | ok(!popover.data('popover'), 'popover does not have data')
109 | ok($._data(popover[0],'events').click[0].namespace == 'foo', 'popover still has click.foo')
110 | ok(!$._data(popover[0], 'events').mouseover && !$._data(popover[0], 'events').mouseout, 'popover does not have any events')
111 | })
112 |
113 | })
--------------------------------------------------------------------------------
/bootstrap/js/tests/unit/bootstrap-scrollspy.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-scrollspy")
4 |
5 | test("should provide no conflict", function () {
6 | var scrollspy = $.fn.scrollspy.noConflict()
7 | ok(!$.fn.scrollspy, 'scrollspy was set back to undefined (org value)')
8 | $.fn.scrollspy = scrollspy
9 | })
10 |
11 | test("should be defined on jquery object", function () {
12 | ok($(document.body).scrollspy, 'scrollspy method is defined')
13 | })
14 |
15 | test("should return element", function () {
16 | ok($(document.body).scrollspy()[0] == document.body, 'document.body returned')
17 | })
18 |
19 | test("should switch active class on scroll", function () {
20 | var sectionHTML = '
'
21 | , $section = $(sectionHTML).append('#qunit-fixture')
22 | , topbarHTML ='
'
23 | + '
'
24 | + '
'
25 | + '
'
26 | + '
'
29 | + '
'
30 | + '
'
31 | + '
'
32 | , $topbar = $(topbarHTML).scrollspy()
33 |
34 | ok($topbar.find('.active', true))
35 | })
36 |
37 | })
--------------------------------------------------------------------------------
/bootstrap/js/tests/unit/bootstrap-tab.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-tabs")
4 |
5 | test("should provide no conflict", function () {
6 | var tab = $.fn.tab.noConflict()
7 | ok(!$.fn.tab, 'tab was set back to undefined (org value)')
8 | $.fn.tab = tab
9 | })
10 |
11 | test("should be defined on jquery object", function () {
12 | ok($(document.body).tab, 'tabs method is defined')
13 | })
14 |
15 | test("should return element", function () {
16 | ok($(document.body).tab()[0] == document.body, 'document.body returned')
17 | })
18 |
19 | test("should activate element by tab id", function () {
20 | var tabsHTML =
21 | '
'
25 |
26 | $('
').appendTo("#qunit-fixture")
27 |
28 | $(tabsHTML).find('li:last a').tab('show')
29 | equals($("#qunit-fixture").find('.active').attr('id'), "profile")
30 |
31 | $(tabsHTML).find('li:first a').tab('show')
32 | equals($("#qunit-fixture").find('.active').attr('id'), "home")
33 | })
34 |
35 | test("should activate element by tab id", function () {
36 | var pillsHTML =
37 | '
'
41 |
42 | $('
').appendTo("#qunit-fixture")
43 |
44 | $(pillsHTML).find('li:last a').tab('show')
45 | equals($("#qunit-fixture").find('.active').attr('id'), "profile")
46 |
47 | $(pillsHTML).find('li:first a').tab('show')
48 | equals($("#qunit-fixture").find('.active').attr('id'), "home")
49 | })
50 |
51 |
52 | test("should not fire closed when close is prevented", function () {
53 | $.support.transition = false
54 | stop();
55 | $('
')
56 | .bind('show', function (e) {
57 | e.preventDefault();
58 | ok(true);
59 | start();
60 | })
61 | .bind('shown', function () {
62 | ok(false);
63 | })
64 | .tab('show')
65 | })
66 |
67 | test("show and shown events should reference correct relatedTarget", function () {
68 | var dropHTML =
69 | '
'
70 | + '- 1'
71 | + ''
75 | + '
'
76 | + '
'
77 |
78 | $(dropHTML).find('ul>li:first a').tab('show').end()
79 | .find('ul>li:last a').on('show', function(event){
80 | equals(event.relatedTarget.hash, "#1-1")
81 | }).on('shown', function(event){
82 | equals(event.relatedTarget.hash, "#1-1")
83 | }).tab('show')
84 | })
85 |
86 | })
--------------------------------------------------------------------------------
/bootstrap/js/tests/unit/bootstrap-transition.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 |
3 | module("bootstrap-transition")
4 |
5 | test("should be defined on jquery support object", function () {
6 | ok($.support.transition !== undefined, 'transition object is defined')
7 | })
8 |
9 | test("should provide an end object", function () {
10 | ok($.support.transition ? $.support.transition.end : true, 'end string is defined')
11 | })
12 |
13 | })
--------------------------------------------------------------------------------
/bootstrap/less/accordion.less:
--------------------------------------------------------------------------------
1 | //
2 | // Accordion
3 | // --------------------------------------------------
4 |
5 |
6 | // Parent container
7 | .accordion {
8 | margin-bottom: @baseLineHeight;
9 | }
10 |
11 | // Group == heading + body
12 | .accordion-group {
13 | margin-bottom: 2px;
14 | border: 1px solid #e5e5e5;
15 | .border-radius(@baseBorderRadius);
16 | }
17 | .accordion-heading {
18 | border-bottom: 0;
19 | }
20 | .accordion-heading .accordion-toggle {
21 | display: block;
22 | padding: 8px 15px;
23 | }
24 |
25 | // General toggle styles
26 | .accordion-toggle {
27 | cursor: pointer;
28 | }
29 |
30 | // Inner needs the styles because you can't animate properly with any styles on the element
31 | .accordion-inner {
32 | padding: 9px 15px;
33 | border-top: 1px solid #e5e5e5;
34 | }
35 |
--------------------------------------------------------------------------------
/bootstrap/less/alerts.less:
--------------------------------------------------------------------------------
1 | //
2 | // Alerts
3 | // --------------------------------------------------
4 |
5 |
6 | // Base styles
7 | // -------------------------
8 |
9 | .alert {
10 | padding: 8px 35px 8px 14px;
11 | margin-bottom: @baseLineHeight;
12 | text-shadow: 0 1px 0 rgba(255,255,255,.5);
13 | background-color: @warningBackground;
14 | border: 1px solid @warningBorder;
15 | .border-radius(@baseBorderRadius);
16 | }
17 | .alert,
18 | .alert h4 {
19 | // Specified for the h4 to prevent conflicts of changing @headingsColor
20 | color: @warningText;
21 | }
22 | .alert h4 {
23 | margin: 0;
24 | }
25 |
26 | // Adjust close link position
27 | .alert .close {
28 | position: relative;
29 | top: -2px;
30 | right: -21px;
31 | line-height: @baseLineHeight;
32 | }
33 |
34 |
35 | // Alternate styles
36 | // -------------------------
37 |
38 | .alert-success {
39 | background-color: @successBackground;
40 | border-color: @successBorder;
41 | color: @successText;
42 | }
43 | .alert-success h4 {
44 | color: @successText;
45 | }
46 | .alert-danger,
47 | .alert-error {
48 | background-color: @errorBackground;
49 | border-color: @errorBorder;
50 | color: @errorText;
51 | }
52 | .alert-danger h4,
53 | .alert-error h4 {
54 | color: @errorText;
55 | }
56 | .alert-info {
57 | background-color: @infoBackground;
58 | border-color: @infoBorder;
59 | color: @infoText;
60 | }
61 | .alert-info h4 {
62 | color: @infoText;
63 | }
64 |
65 |
66 | // Block alerts
67 | // -------------------------
68 |
69 | .alert-block {
70 | padding-top: 14px;
71 | padding-bottom: 14px;
72 | }
73 | .alert-block > p,
74 | .alert-block > ul {
75 | margin-bottom: 0;
76 | }
77 | .alert-block p + p {
78 | margin-top: 5px;
79 | }
80 |
--------------------------------------------------------------------------------
/bootstrap/less/bootstrap.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v2.3.1
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */
10 |
11 | // Core variables and mixins
12 | @import "variables.less"; // Modify this for custom colors, font-sizes, etc
13 | @import "mixins.less";
14 |
15 | // CSS Reset
16 | @import "reset.less";
17 |
18 | // Grid system and page structure
19 | @import "scaffolding.less";
20 | @import "grid.less";
21 | @import "layouts.less";
22 |
23 | // Base CSS
24 | @import "type.less";
25 | @import "code.less";
26 | @import "forms.less";
27 | @import "tables.less";
28 |
29 | // Components: common
30 | @import "sprites.less";
31 | @import "dropdowns.less";
32 | @import "wells.less";
33 | @import "component-animations.less";
34 | @import "close.less";
35 |
36 | // Components: Buttons & Alerts
37 | @import "buttons.less";
38 | @import "button-groups.less";
39 | @import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
40 |
41 | // Components: Nav
42 | @import "navs.less";
43 | @import "navbar.less";
44 | @import "breadcrumbs.less";
45 | @import "pagination.less";
46 | @import "pager.less";
47 |
48 | // Components: Popovers
49 | @import "modals.less";
50 | @import "tooltip.less";
51 | @import "popovers.less";
52 |
53 | // Components: Misc
54 | @import "thumbnails.less";
55 | @import "media.less";
56 | @import "labels-badges.less";
57 | @import "progress-bars.less";
58 | @import "accordion.less";
59 | @import "carousel.less";
60 | @import "hero-unit.less";
61 |
62 | // Utility classes
63 | @import "utilities.less"; // Has to be last to override when necessary
64 |
--------------------------------------------------------------------------------
/bootstrap/less/breadcrumbs.less:
--------------------------------------------------------------------------------
1 | //
2 | // Breadcrumbs
3 | // --------------------------------------------------
4 |
5 |
6 | .breadcrumb {
7 | padding: 8px 15px;
8 | margin: 0 0 @baseLineHeight;
9 | list-style: none;
10 | background-color: #f5f5f5;
11 | .border-radius(@baseBorderRadius);
12 | > li {
13 | display: inline-block;
14 | .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 |
--------------------------------------------------------------------------------
/bootstrap/less/carousel.less:
--------------------------------------------------------------------------------
1 | //
2 | // Carousel
3 | // --------------------------------------------------
4 |
5 |
6 | .carousel {
7 | position: relative;
8 | margin-bottom: @baseLineHeight;
9 | line-height: 1;
10 | }
11 |
12 | .carousel-inner {
13 | overflow: hidden;
14 | width: 100%;
15 | position: relative;
16 | }
17 |
18 | .carousel-inner {
19 |
20 | > .item {
21 | display: none;
22 | position: relative;
23 | .transition(.6s ease-in-out left);
24 |
25 | // Account for jankitude on images
26 | > img,
27 | > a > img {
28 | display: block;
29 | line-height: 1;
30 | }
31 | }
32 |
33 | > .active,
34 | > .next,
35 | > .prev { display: block; }
36 |
37 | > .active {
38 | left: 0;
39 | }
40 |
41 | > .next,
42 | > .prev {
43 | position: absolute;
44 | top: 0;
45 | width: 100%;
46 | }
47 |
48 | > .next {
49 | left: 100%;
50 | }
51 | > .prev {
52 | left: -100%;
53 | }
54 | > .next.left,
55 | > .prev.right {
56 | left: 0;
57 | }
58 |
59 | > .active.left {
60 | left: -100%;
61 | }
62 | > .active.right {
63 | left: 100%;
64 | }
65 |
66 | }
67 |
68 | // Left/right controls for nav
69 | // ---------------------------
70 |
71 | .carousel-control {
72 | position: absolute;
73 | top: 40%;
74 | left: 15px;
75 | width: 40px;
76 | height: 40px;
77 | margin-top: -20px;
78 | font-size: 60px;
79 | font-weight: 100;
80 | line-height: 30px;
81 | color: @white;
82 | text-align: center;
83 | background: @grayDarker;
84 | border: 3px solid @white;
85 | .border-radius(23px);
86 | .opacity(50);
87 |
88 | // we can't have this transition here
89 | // because webkit cancels the carousel
90 | // animation if you trip this while
91 | // in the middle of another animation
92 | // ;_;
93 | // .transition(opacity .2s linear);
94 |
95 | // Reposition the right one
96 | &.right {
97 | left: auto;
98 | right: 15px;
99 | }
100 |
101 | // Hover/focus state
102 | &:hover,
103 | &:focus {
104 | color: @white;
105 | text-decoration: none;
106 | .opacity(90);
107 | }
108 | }
109 |
110 | // Carousel indicator pips
111 | // -----------------------------
112 | .carousel-indicators {
113 | position: absolute;
114 | top: 15px;
115 | right: 15px;
116 | z-index: 5;
117 | margin: 0;
118 | list-style: none;
119 |
120 | li {
121 | display: block;
122 | float: left;
123 | width: 10px;
124 | height: 10px;
125 | margin-left: 5px;
126 | text-indent: -999px;
127 | background-color: #ccc;
128 | background-color: rgba(255,255,255,.25);
129 | border-radius: 5px;
130 | }
131 | .active {
132 | background-color: #fff;
133 | }
134 | }
135 |
136 | // Caption for text below images
137 | // -----------------------------
138 |
139 | .carousel-caption {
140 | position: absolute;
141 | left: 0;
142 | right: 0;
143 | bottom: 0;
144 | padding: 15px;
145 | background: @grayDark;
146 | background: rgba(0,0,0,.75);
147 | }
148 | .carousel-caption h4,
149 | .carousel-caption p {
150 | color: @white;
151 | line-height: @baseLineHeight;
152 | }
153 | .carousel-caption h4 {
154 | margin: 0 0 5px;
155 | }
156 | .carousel-caption p {
157 | margin-bottom: 0;
158 | }
159 |
--------------------------------------------------------------------------------
/bootstrap/less/close.less:
--------------------------------------------------------------------------------
1 | //
2 | // Close icons
3 | // --------------------------------------------------
4 |
5 |
6 | .close {
7 | float: right;
8 | font-size: 20px;
9 | font-weight: bold;
10 | line-height: @baseLineHeight;
11 | color: @black;
12 | text-shadow: 0 1px 0 rgba(255,255,255,1);
13 | .opacity(20);
14 | &:hover,
15 | &:focus {
16 | color: @black;
17 | text-decoration: none;
18 | cursor: pointer;
19 | .opacity(40);
20 | }
21 | }
22 |
23 | // Additional properties for button version
24 | // iOS requires the button element instead of an anchor tag.
25 | // If you want the anchor version, it requires `href="#"`.
26 | button.close {
27 | padding: 0;
28 | cursor: pointer;
29 | background: transparent;
30 | border: 0;
31 | -webkit-appearance: none;
32 | }
--------------------------------------------------------------------------------
/bootstrap/less/code.less:
--------------------------------------------------------------------------------
1 | //
2 | // Code (inline and blocK)
3 | // --------------------------------------------------
4 |
5 |
6 | // Inline and block code styles
7 | code,
8 | pre {
9 | padding: 0 3px 2px;
10 | #font > #family > .monospace;
11 | font-size: @baseFontSize - 2;
12 | color: @grayDark;
13 | .border-radius(3px);
14 | }
15 |
16 | // Inline code
17 | code {
18 | padding: 2px 4px;
19 | color: #d14;
20 | background-color: #f7f7f9;
21 | border: 1px solid #e1e1e8;
22 | white-space: nowrap;
23 | }
24 |
25 | // Blocks of code
26 | pre {
27 | display: block;
28 | padding: (@baseLineHeight - 1) / 2;
29 | margin: 0 0 @baseLineHeight / 2;
30 | font-size: @baseFontSize - 1; // 14px to 13px
31 | line-height: @baseLineHeight;
32 | word-break: break-all;
33 | word-wrap: break-word;
34 | white-space: pre;
35 | white-space: pre-wrap;
36 | background-color: #f5f5f5;
37 | border: 1px solid #ccc; // fallback for IE7-8
38 | border: 1px solid rgba(0,0,0,.15);
39 | .border-radius(@baseBorderRadius);
40 |
41 | // Make prettyprint styles more spaced out for readability
42 | &.prettyprint {
43 | margin-bottom: @baseLineHeight;
44 | }
45 |
46 | // Account for some code outputs that place code tags in pre tags
47 | code {
48 | padding: 0;
49 | color: inherit;
50 | white-space: pre;
51 | white-space: pre-wrap;
52 | background-color: transparent;
53 | border: 0;
54 | }
55 | }
56 |
57 | // Enable scrollable blocks of code
58 | .pre-scrollable {
59 | max-height: 340px;
60 | overflow-y: scroll;
61 | }
--------------------------------------------------------------------------------
/bootstrap/less/component-animations.less:
--------------------------------------------------------------------------------
1 | //
2 | // Component animations
3 | // --------------------------------------------------
4 |
5 |
6 | .fade {
7 | opacity: 0;
8 | .transition(opacity .15s linear);
9 | &.in {
10 | opacity: 1;
11 | }
12 | }
13 |
14 | .collapse {
15 | position: relative;
16 | height: 0;
17 | overflow: hidden;
18 | .transition(height .35s ease);
19 | &.in {
20 | height: auto;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/bootstrap/less/grid.less:
--------------------------------------------------------------------------------
1 | //
2 | // Grid system
3 | // --------------------------------------------------
4 |
5 |
6 | // Fixed (940px)
7 | #grid > .core(@gridColumnWidth, @gridGutterWidth);
8 |
9 | // Fluid (940px)
10 | #grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
11 |
12 | // Reset utility classes due to specificity
13 | [class*="span"].hide,
14 | .row-fluid [class*="span"].hide {
15 | display: none;
16 | }
17 |
18 | [class*="span"].pull-right,
19 | .row-fluid [class*="span"].pull-right {
20 | float: right;
21 | }
22 |
--------------------------------------------------------------------------------
/bootstrap/less/hero-unit.less:
--------------------------------------------------------------------------------
1 | //
2 | // Hero unit
3 | // --------------------------------------------------
4 |
5 |
6 | .hero-unit {
7 | padding: 60px;
8 | margin-bottom: 30px;
9 | font-size: 18px;
10 | font-weight: 200;
11 | line-height: @baseLineHeight * 1.5;
12 | color: @heroUnitLeadColor;
13 | background-color: @heroUnitBackground;
14 | .border-radius(6px);
15 | h1 {
16 | margin-bottom: 0;
17 | font-size: 60px;
18 | line-height: 1;
19 | color: @heroUnitHeadingColor;
20 | letter-spacing: -1px;
21 | }
22 | li {
23 | line-height: @baseLineHeight * 1.5; // Reset since we specify in type.less
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/bootstrap/less/labels-badges.less:
--------------------------------------------------------------------------------
1 | //
2 | // Labels and badges
3 | // --------------------------------------------------
4 |
5 |
6 | // Base classes
7 | .label,
8 | .badge {
9 | display: inline-block;
10 | padding: 2px 4px;
11 | font-size: @baseFontSize * .846;
12 | font-weight: bold;
13 | line-height: 14px; // ensure proper line-height if floated
14 | color: @white;
15 | vertical-align: baseline;
16 | white-space: nowrap;
17 | text-shadow: 0 -1px 0 rgba(0,0,0,.25);
18 | background-color: @grayLight;
19 | }
20 | // Set unique padding and border-radii
21 | .label {
22 | .border-radius(3px);
23 | }
24 | .badge {
25 | padding-left: 9px;
26 | padding-right: 9px;
27 | .border-radius(9px);
28 | }
29 |
30 | // Empty labels/badges collapse
31 | .label,
32 | .badge {
33 | &:empty {
34 | display: none;
35 | }
36 | }
37 |
38 | // Hover/focus state, but only for links
39 | a {
40 | &.label:hover,
41 | &.label:focus,
42 | &.badge:hover,
43 | &.badge:focus {
44 | color: @white;
45 | text-decoration: none;
46 | cursor: pointer;
47 | }
48 | }
49 |
50 | // Colors
51 | // Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
52 | .label,
53 | .badge {
54 | // Important (red)
55 | &-important { background-color: @errorText; }
56 | &-important[href] { background-color: darken(@errorText, 10%); }
57 | // Warnings (orange)
58 | &-warning { background-color: @orange; }
59 | &-warning[href] { background-color: darken(@orange, 10%); }
60 | // Success (green)
61 | &-success { background-color: @successText; }
62 | &-success[href] { background-color: darken(@successText, 10%); }
63 | // Info (turquoise)
64 | &-info { background-color: @infoText; }
65 | &-info[href] { background-color: darken(@infoText, 10%); }
66 | // Inverse (black)
67 | &-inverse { background-color: @grayDark; }
68 | &-inverse[href] { background-color: darken(@grayDark, 10%); }
69 | }
70 |
71 | // Quick fix for labels/badges in buttons
72 | .btn {
73 | .label,
74 | .badge {
75 | position: relative;
76 | top: -1px;
77 | }
78 | }
79 | .btn-mini {
80 | .label,
81 | .badge {
82 | top: 0;
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/bootstrap/less/layouts.less:
--------------------------------------------------------------------------------
1 | //
2 | // Layouts
3 | // --------------------------------------------------
4 |
5 |
6 | // Container (centered, fixed-width layouts)
7 | .container {
8 | .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 | .clearfix();
16 | }
--------------------------------------------------------------------------------
/bootstrap/less/media.less:
--------------------------------------------------------------------------------
1 | // Media objects
2 | // Source: http://stubbornella.org/content/?p=497
3 | // --------------------------------------------------
4 |
5 |
6 | // Common styles
7 | // -------------------------
8 |
9 | // Clear the floats
10 | .media,
11 | .media-body {
12 | overflow: hidden;
13 | *overflow: visible;
14 | zoom: 1;
15 | }
16 |
17 | // Proper spacing between instances of .media
18 | .media,
19 | .media .media {
20 | margin-top: 15px;
21 | }
22 | .media:first-child {
23 | margin-top: 0;
24 | }
25 |
26 | // For images and videos, set to block
27 | .media-object {
28 | display: block;
29 | }
30 |
31 | // Reset margins on headings for tighter default spacing
32 | .media-heading {
33 | margin: 0 0 5px;
34 | }
35 |
36 |
37 | // Media image alignment
38 | // -------------------------
39 |
40 | .media > .pull-left {
41 | margin-right: 10px;
42 | }
43 | .media > .pull-right {
44 | margin-left: 10px;
45 | }
46 |
47 |
48 | // Media list variation
49 | // -------------------------
50 |
51 | // Undo default ul/ol styles
52 | .media-list {
53 | margin-left: 0;
54 | list-style: none;
55 | }
56 |
--------------------------------------------------------------------------------
/bootstrap/less/modals.less:
--------------------------------------------------------------------------------
1 | //
2 | // Modals
3 | // --------------------------------------------------
4 |
5 | // Background
6 | .modal-backdrop {
7 | position: fixed;
8 | top: 0;
9 | right: 0;
10 | bottom: 0;
11 | left: 0;
12 | z-index: @zindexModalBackdrop;
13 | background-color: @black;
14 | // Fade for backdrop
15 | &.fade { opacity: 0; }
16 | }
17 |
18 | .modal-backdrop,
19 | .modal-backdrop.fade.in {
20 | .opacity(80);
21 | }
22 |
23 | // Base modal
24 | .modal {
25 | position: fixed;
26 | top: 10%;
27 | left: 50%;
28 | z-index: @zindexModal;
29 | width: 560px;
30 | margin-left: -280px;
31 | background-color: @white;
32 | border: 1px solid #999;
33 | border: 1px solid rgba(0,0,0,.3);
34 | *border: 1px solid #999; /* IE6-7 */
35 | .border-radius(6px);
36 | .box-shadow(0 3px 7px rgba(0,0,0,0.3));
37 | .background-clip(padding-box);
38 | // Remove focus outline from opened modal
39 | outline: none;
40 |
41 | &.fade {
42 | .transition(e('opacity .3s linear, top .3s ease-out'));
43 | top: -25%;
44 | }
45 | &.fade.in { top: 10%; }
46 | }
47 | .modal-header {
48 | padding: 9px 15px;
49 | border-bottom: 1px solid #eee;
50 | // Close icon
51 | .close { margin-top: 2px; }
52 | // Heading
53 | h3 {
54 | margin: 0;
55 | line-height: 30px;
56 | }
57 | }
58 |
59 | // Body (where all modal content resides)
60 | .modal-body {
61 | position: relative;
62 | overflow-y: auto;
63 | max-height: 400px;
64 | padding: 15px;
65 | }
66 | // Remove bottom margin if need be
67 | .modal-form {
68 | margin-bottom: 0;
69 | }
70 |
71 | // Footer (for actions)
72 | .modal-footer {
73 | padding: 14px 15px 15px;
74 | margin-bottom: 0;
75 | text-align: right; // right align buttons
76 | background-color: #f5f5f5;
77 | border-top: 1px solid #ddd;
78 | .border-radius(0 0 6px 6px);
79 | .box-shadow(inset 0 1px 0 @white);
80 | .clearfix(); // clear it in case folks use .pull-* classes on buttons
81 |
82 | // Properly space out buttons
83 | .btn + .btn {
84 | margin-left: 5px;
85 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
86 | }
87 | // but override that for button groups
88 | .btn-group .btn + .btn {
89 | margin-left: -1px;
90 | }
91 | // and override it for block buttons as well
92 | .btn-block + .btn-block {
93 | margin-left: 0;
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/bootstrap/less/pager.less:
--------------------------------------------------------------------------------
1 | //
2 | // Pager pagination
3 | // --------------------------------------------------
4 |
5 |
6 | .pager {
7 | margin: @baseLineHeight 0;
8 | list-style: none;
9 | text-align: center;
10 | .clearfix();
11 | }
12 | .pager li {
13 | display: inline;
14 | }
15 | .pager li > a,
16 | .pager li > span {
17 | display: inline-block;
18 | padding: 5px 14px;
19 | background-color: #fff;
20 | border: 1px solid #ddd;
21 | .border-radius(15px);
22 | }
23 | .pager li > a:hover,
24 | .pager li > a:focus {
25 | text-decoration: none;
26 | background-color: #f5f5f5;
27 | }
28 | .pager .next > a,
29 | .pager .next > span {
30 | float: right;
31 | }
32 | .pager .previous > a,
33 | .pager .previous > span {
34 | float: left;
35 | }
36 | .pager .disabled > a,
37 | .pager .disabled > a:hover,
38 | .pager .disabled > a:focus,
39 | .pager .disabled > span {
40 | color: @grayLight;
41 | background-color: #fff;
42 | cursor: default;
43 | }
--------------------------------------------------------------------------------
/bootstrap/less/pagination.less:
--------------------------------------------------------------------------------
1 | //
2 | // Pagination (multiple pages)
3 | // --------------------------------------------------
4 |
5 | // Space out pagination from surrounding content
6 | .pagination {
7 | margin: @baseLineHeight 0;
8 | }
9 |
10 | .pagination ul {
11 | // Allow for text-based alignment
12 | display: inline-block;
13 | .ie7-inline-block();
14 | // Reset default ul styles
15 | margin-left: 0;
16 | margin-bottom: 0;
17 | // Visuals
18 | .border-radius(@baseBorderRadius);
19 | .box-shadow(0 1px 2px rgba(0,0,0,.05));
20 | }
21 | .pagination ul > li {
22 | display: inline; // Remove list-style and block-level defaults
23 | }
24 | .pagination ul > li > a,
25 | .pagination ul > li > span {
26 | float: left; // Collapse white-space
27 | padding: 4px 12px;
28 | line-height: @baseLineHeight;
29 | text-decoration: none;
30 | background-color: @paginationBackground;
31 | border: 1px solid @paginationBorder;
32 | border-left-width: 0;
33 | }
34 | .pagination ul > li > a:hover,
35 | .pagination ul > li > a:focus,
36 | .pagination ul > .active > a,
37 | .pagination ul > .active > span {
38 | background-color: @paginationActiveBackground;
39 | }
40 | .pagination ul > .active > a,
41 | .pagination ul > .active > span {
42 | color: @grayLight;
43 | cursor: default;
44 | }
45 | .pagination ul > .disabled > span,
46 | .pagination ul > .disabled > a,
47 | .pagination ul > .disabled > a:hover,
48 | .pagination ul > .disabled > a:focus {
49 | color: @grayLight;
50 | background-color: transparent;
51 | cursor: default;
52 | }
53 | .pagination ul > li:first-child > a,
54 | .pagination ul > li:first-child > span {
55 | border-left-width: 1px;
56 | .border-left-radius(@baseBorderRadius);
57 | }
58 | .pagination ul > li:last-child > a,
59 | .pagination ul > li:last-child > span {
60 | .border-right-radius(@baseBorderRadius);
61 | }
62 |
63 |
64 | // Alignment
65 | // --------------------------------------------------
66 |
67 | .pagination-centered {
68 | text-align: center;
69 | }
70 | .pagination-right {
71 | text-align: right;
72 | }
73 |
74 |
75 | // Sizing
76 | // --------------------------------------------------
77 |
78 | // Large
79 | .pagination-large {
80 | ul > li > a,
81 | ul > li > span {
82 | padding: @paddingLarge;
83 | font-size: @fontSizeLarge;
84 | }
85 | ul > li:first-child > a,
86 | ul > li:first-child > span {
87 | .border-left-radius(@borderRadiusLarge);
88 | }
89 | ul > li:last-child > a,
90 | ul > li:last-child > span {
91 | .border-right-radius(@borderRadiusLarge);
92 | }
93 | }
94 |
95 | // Small and mini
96 | .pagination-mini,
97 | .pagination-small {
98 | ul > li:first-child > a,
99 | ul > li:first-child > span {
100 | .border-left-radius(@borderRadiusSmall);
101 | }
102 | ul > li:last-child > a,
103 | ul > li:last-child > span {
104 | .border-right-radius(@borderRadiusSmall);
105 | }
106 | }
107 |
108 | // Small
109 | .pagination-small {
110 | ul > li > a,
111 | ul > li > span {
112 | padding: @paddingSmall;
113 | font-size: @fontSizeSmall;
114 | }
115 | }
116 | // Mini
117 | .pagination-mini {
118 | ul > li > a,
119 | ul > li > span {
120 | padding: @paddingMini;
121 | font-size: @fontSizeMini;
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/bootstrap/less/popovers.less:
--------------------------------------------------------------------------------
1 | //
2 | // Popovers
3 | // --------------------------------------------------
4 |
5 |
6 | .popover {
7 | position: absolute;
8 | top: 0;
9 | left: 0;
10 | z-index: @zindexPopover;
11 | display: none;
12 | max-width: 276px;
13 | padding: 1px;
14 | text-align: left; // Reset given new insertion method
15 | background-color: @popoverBackground;
16 | -webkit-background-clip: padding-box;
17 | -moz-background-clip: padding;
18 | background-clip: padding-box;
19 | border: 1px solid #ccc;
20 | border: 1px solid rgba(0,0,0,.2);
21 | .border-radius(6px);
22 | .box-shadow(0 5px 10px rgba(0,0,0,.2));
23 |
24 | // Overrides for proper insertion
25 | white-space: normal;
26 |
27 | // Offset the popover to account for the popover arrow
28 | &.top { margin-top: -10px; }
29 | &.right { margin-left: 10px; }
30 | &.bottom { margin-top: 10px; }
31 | &.left { margin-left: -10px; }
32 | }
33 |
34 | .popover-title {
35 | margin: 0; // reset heading margin
36 | padding: 8px 14px;
37 | font-size: 14px;
38 | font-weight: normal;
39 | line-height: 18px;
40 | background-color: @popoverTitleBackground;
41 | border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
42 | .border-radius(5px 5px 0 0);
43 |
44 | &:empty {
45 | display: none;
46 | }
47 | }
48 |
49 | .popover-content {
50 | padding: 9px 14px;
51 | }
52 |
53 | // Arrows
54 | //
55 | // .arrow is outer, .arrow:after is inner
56 |
57 | .popover .arrow,
58 | .popover .arrow:after {
59 | position: absolute;
60 | display: block;
61 | width: 0;
62 | height: 0;
63 | border-color: transparent;
64 | border-style: solid;
65 | }
66 | .popover .arrow {
67 | border-width: @popoverArrowOuterWidth;
68 | }
69 | .popover .arrow:after {
70 | border-width: @popoverArrowWidth;
71 | content: "";
72 | }
73 |
74 | .popover {
75 | &.top .arrow {
76 | left: 50%;
77 | margin-left: -@popoverArrowOuterWidth;
78 | border-bottom-width: 0;
79 | border-top-color: #999; // IE8 fallback
80 | border-top-color: @popoverArrowOuterColor;
81 | bottom: -@popoverArrowOuterWidth;
82 | &:after {
83 | bottom: 1px;
84 | margin-left: -@popoverArrowWidth;
85 | border-bottom-width: 0;
86 | border-top-color: @popoverArrowColor;
87 | }
88 | }
89 | &.right .arrow {
90 | top: 50%;
91 | left: -@popoverArrowOuterWidth;
92 | margin-top: -@popoverArrowOuterWidth;
93 | border-left-width: 0;
94 | border-right-color: #999; // IE8 fallback
95 | border-right-color: @popoverArrowOuterColor;
96 | &:after {
97 | left: 1px;
98 | bottom: -@popoverArrowWidth;
99 | border-left-width: 0;
100 | border-right-color: @popoverArrowColor;
101 | }
102 | }
103 | &.bottom .arrow {
104 | left: 50%;
105 | margin-left: -@popoverArrowOuterWidth;
106 | border-top-width: 0;
107 | border-bottom-color: #999; // IE8 fallback
108 | border-bottom-color: @popoverArrowOuterColor;
109 | top: -@popoverArrowOuterWidth;
110 | &:after {
111 | top: 1px;
112 | margin-left: -@popoverArrowWidth;
113 | border-top-width: 0;
114 | border-bottom-color: @popoverArrowColor;
115 | }
116 | }
117 |
118 | &.left .arrow {
119 | top: 50%;
120 | right: -@popoverArrowOuterWidth;
121 | margin-top: -@popoverArrowOuterWidth;
122 | border-right-width: 0;
123 | border-left-color: #999; // IE8 fallback
124 | border-left-color: @popoverArrowOuterColor;
125 | &:after {
126 | right: 1px;
127 | border-right-width: 0;
128 | border-left-color: @popoverArrowColor;
129 | bottom: -@popoverArrowWidth;
130 | }
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/bootstrap/less/progress-bars.less:
--------------------------------------------------------------------------------
1 | //
2 | // Progress bars
3 | // --------------------------------------------------
4 |
5 |
6 | // ANIMATIONS
7 | // ----------
8 |
9 | // Webkit
10 | @-webkit-keyframes progress-bar-stripes {
11 | from { background-position: 40px 0; }
12 | to { background-position: 0 0; }
13 | }
14 |
15 | // Firefox
16 | @-moz-keyframes progress-bar-stripes {
17 | from { background-position: 40px 0; }
18 | to { background-position: 0 0; }
19 | }
20 |
21 | // IE9
22 | @-ms-keyframes progress-bar-stripes {
23 | from { background-position: 40px 0; }
24 | to { background-position: 0 0; }
25 | }
26 |
27 | // Opera
28 | @-o-keyframes progress-bar-stripes {
29 | from { background-position: 0 0; }
30 | to { background-position: 40px 0; }
31 | }
32 |
33 | // Spec
34 | @keyframes progress-bar-stripes {
35 | from { background-position: 40px 0; }
36 | to { background-position: 0 0; }
37 | }
38 |
39 |
40 |
41 | // THE BARS
42 | // --------
43 |
44 | // Outer container
45 | .progress {
46 | overflow: hidden;
47 | height: @baseLineHeight;
48 | margin-bottom: @baseLineHeight;
49 | #gradient > .vertical(#f5f5f5, #f9f9f9);
50 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
51 | .border-radius(@baseBorderRadius);
52 | }
53 |
54 | // Bar of progress
55 | .progress .bar {
56 | width: 0%;
57 | height: 100%;
58 | color: @white;
59 | float: left;
60 | font-size: 12px;
61 | text-align: center;
62 | text-shadow: 0 -1px 0 rgba(0,0,0,.25);
63 | #gradient > .vertical(#149bdf, #0480be);
64 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
65 | .box-sizing(border-box);
66 | .transition(width .6s ease);
67 | }
68 | .progress .bar + .bar {
69 | .box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)");
70 | }
71 |
72 | // Striped bars
73 | .progress-striped .bar {
74 | #gradient > .striped(#149bdf);
75 | .background-size(40px 40px);
76 | }
77 |
78 | // Call animation for the active one
79 | .progress.active .bar {
80 | -webkit-animation: progress-bar-stripes 2s linear infinite;
81 | -moz-animation: progress-bar-stripes 2s linear infinite;
82 | -ms-animation: progress-bar-stripes 2s linear infinite;
83 | -o-animation: progress-bar-stripes 2s linear infinite;
84 | animation: progress-bar-stripes 2s linear infinite;
85 | }
86 |
87 |
88 |
89 | // COLORS
90 | // ------
91 |
92 | // Danger (red)
93 | .progress-danger .bar, .progress .bar-danger {
94 | #gradient > .vertical(#ee5f5b, #c43c35);
95 | }
96 | .progress-danger.progress-striped .bar, .progress-striped .bar-danger {
97 | #gradient > .striped(#ee5f5b);
98 | }
99 |
100 | // Success (green)
101 | .progress-success .bar, .progress .bar-success {
102 | #gradient > .vertical(#62c462, #57a957);
103 | }
104 | .progress-success.progress-striped .bar, .progress-striped .bar-success {
105 | #gradient > .striped(#62c462);
106 | }
107 |
108 | // Info (teal)
109 | .progress-info .bar, .progress .bar-info {
110 | #gradient > .vertical(#5bc0de, #339bb9);
111 | }
112 | .progress-info.progress-striped .bar, .progress-striped .bar-info {
113 | #gradient > .striped(#5bc0de);
114 | }
115 |
116 | // Warning (orange)
117 | .progress-warning .bar, .progress .bar-warning {
118 | #gradient > .vertical(lighten(@orange, 15%), @orange);
119 | }
120 | .progress-warning.progress-striped .bar, .progress-striped .bar-warning {
121 | #gradient > .striped(lighten(@orange, 15%));
122 | }
123 |
--------------------------------------------------------------------------------
/bootstrap/less/responsive-1200px-min.less:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Large desktop and up
3 | // --------------------------------------------------
4 |
5 |
6 | @media (min-width: 1200px) {
7 |
8 | // Fixed grid
9 | #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200);
10 |
11 | // Fluid grid
12 | #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200);
13 |
14 | // Input grid
15 | #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200);
16 |
17 | // Thumbnails
18 | .thumbnails {
19 | margin-left: -@gridGutterWidth1200;
20 | }
21 | .thumbnails > li {
22 | margin-left: @gridGutterWidth1200;
23 | }
24 | .row-fluid .thumbnails {
25 | margin-left: 0;
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/bootstrap/less/responsive-767px-max.less:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Landscape phone to desktop/tablet
3 | // --------------------------------------------------
4 |
5 |
6 | @media (max-width: 767px) {
7 |
8 | // Padding to set content in a bit
9 | body {
10 | padding-left: 20px;
11 | padding-right: 20px;
12 | }
13 | // Negative indent the now static "fixed" navbar
14 | .navbar-fixed-top,
15 | .navbar-fixed-bottom,
16 | .navbar-static-top {
17 | margin-left: -20px;
18 | margin-right: -20px;
19 | }
20 | // Remove padding on container given explicit padding set on body
21 | .container-fluid {
22 | padding: 0;
23 | }
24 |
25 | // TYPOGRAPHY
26 | // ----------
27 | // Reset horizontal dl
28 | .dl-horizontal {
29 | dt {
30 | float: none;
31 | clear: none;
32 | width: auto;
33 | text-align: left;
34 | }
35 | dd {
36 | margin-left: 0;
37 | }
38 | }
39 |
40 | // GRID & CONTAINERS
41 | // -----------------
42 | // Remove width from containers
43 | .container {
44 | width: auto;
45 | }
46 | // Fluid rows
47 | .row-fluid {
48 | width: 100%;
49 | }
50 | // Undo negative margin on rows and thumbnails
51 | .row,
52 | .thumbnails {
53 | margin-left: 0;
54 | }
55 | .thumbnails > li {
56 | float: none;
57 | margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
58 | }
59 | // Make all grid-sized elements block level again
60 | [class*="span"],
61 | .uneditable-input[class*="span"], // Makes uneditable inputs full-width when using grid sizing
62 | .row-fluid [class*="span"] {
63 | float: none;
64 | display: block;
65 | width: 100%;
66 | margin-left: 0;
67 | .box-sizing(border-box);
68 | }
69 | .span12,
70 | .row-fluid .span12 {
71 | width: 100%;
72 | .box-sizing(border-box);
73 | }
74 | .row-fluid [class*="offset"]:first-child {
75 | margin-left: 0;
76 | }
77 |
78 | // FORM FIELDS
79 | // -----------
80 | // Make span* classes full width
81 | .input-large,
82 | .input-xlarge,
83 | .input-xxlarge,
84 | input[class*="span"],
85 | select[class*="span"],
86 | textarea[class*="span"],
87 | .uneditable-input {
88 | .input-block-level();
89 | }
90 | // But don't let it screw up prepend/append inputs
91 | .input-prepend input,
92 | .input-append input,
93 | .input-prepend input[class*="span"],
94 | .input-append input[class*="span"] {
95 | display: inline-block; // redeclare so they don't wrap to new lines
96 | width: auto;
97 | }
98 | .controls-row [class*="span"] + [class*="span"] {
99 | margin-left: 0;
100 | }
101 |
102 | // Modals
103 | .modal {
104 | position: fixed;
105 | top: 20px;
106 | left: 20px;
107 | right: 20px;
108 | width: auto;
109 | margin: 0;
110 | &.fade { top: -100px; }
111 | &.fade.in { top: 20px; }
112 | }
113 |
114 | }
115 |
116 |
117 |
118 | // UP TO LANDSCAPE PHONE
119 | // ---------------------
120 |
121 | @media (max-width: 480px) {
122 |
123 | // Smooth out the collapsing/expanding nav
124 | .nav-collapse {
125 | -webkit-transform: translate3d(0, 0, 0); // activate the GPU
126 | }
127 |
128 | // Block level the page header small tag for readability
129 | .page-header h1 small {
130 | display: block;
131 | line-height: @baseLineHeight;
132 | }
133 |
134 | // Update checkboxes for iOS
135 | input[type="checkbox"],
136 | input[type="radio"] {
137 | border: 1px solid #ccc;
138 | }
139 |
140 | // Remove the horizontal form styles
141 | .form-horizontal {
142 | .control-label {
143 | float: none;
144 | width: auto;
145 | padding-top: 0;
146 | text-align: left;
147 | }
148 | // Move over all input controls and content
149 | .controls {
150 | margin-left: 0;
151 | }
152 | // Move the options list down to align with labels
153 | .control-list {
154 | padding-top: 0; // has to be padding because margin collaspes
155 | }
156 | // Move over buttons in .form-actions to align with .controls
157 | .form-actions {
158 | padding-left: 10px;
159 | padding-right: 10px;
160 | }
161 | }
162 |
163 | // Medias
164 | // Reset float and spacing to stack
165 | .media .pull-left,
166 | .media .pull-right {
167 | float: none;
168 | display: block;
169 | margin-bottom: 10px;
170 | }
171 | // Remove side margins since we stack instead of indent
172 | .media-object {
173 | margin-right: 0;
174 | margin-left: 0;
175 | }
176 |
177 | // Modals
178 | .modal {
179 | top: 10px;
180 | left: 10px;
181 | right: 10px;
182 | }
183 | .modal-header .close {
184 | padding: 10px;
185 | margin: -10px;
186 | }
187 |
188 | // Carousel
189 | .carousel-caption {
190 | position: static;
191 | }
192 |
193 | }
194 |
--------------------------------------------------------------------------------
/bootstrap/less/responsive-768px-979px.less:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Tablet to desktop
3 | // --------------------------------------------------
4 |
5 |
6 | @media (min-width: 768px) and (max-width: 979px) {
7 |
8 | // Fixed grid
9 | #grid > .core(@gridColumnWidth768, @gridGutterWidth768);
10 |
11 | // Fluid grid
12 | #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
13 |
14 | // Input grid
15 | #grid > .input(@gridColumnWidth768, @gridGutterWidth768);
16 |
17 | // No need to reset .thumbnails here since it's the same @gridGutterWidth
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/bootstrap/less/responsive-utilities.less:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // IE10 Metro responsive
7 | // Required for Windows 8 Metro split-screen snapping with IE10
8 | // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
9 | @-ms-viewport{
10 | width: device-width;
11 | }
12 |
13 | // Hide from screenreaders and browsers
14 | // Credit: HTML5 Boilerplate
15 | .hidden {
16 | display: none;
17 | visibility: hidden;
18 | }
19 |
20 | // Visibility utilities
21 |
22 | // For desktops
23 | .visible-phone { display: none !important; }
24 | .visible-tablet { display: none !important; }
25 | .hidden-phone { }
26 | .hidden-tablet { }
27 | .hidden-desktop { display: none !important; }
28 | .visible-desktop { display: inherit !important; }
29 |
30 | // Tablets & small desktops only
31 | @media (min-width: 768px) and (max-width: 979px) {
32 | // Hide everything else
33 | .hidden-desktop { display: inherit !important; }
34 | .visible-desktop { display: none !important ; }
35 | // Show
36 | .visible-tablet { display: inherit !important; }
37 | // Hide
38 | .hidden-tablet { display: none !important; }
39 | }
40 |
41 | // Phones only
42 | @media (max-width: 767px) {
43 | // Hide everything else
44 | .hidden-desktop { display: inherit !important; }
45 | .visible-desktop { display: none !important; }
46 | // Show
47 | .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
48 | // Hide
49 | .hidden-phone { display: none !important; }
50 | }
51 |
52 | // Print utilities
53 | .visible-print { display: none !important; }
54 | .hidden-print { }
55 |
56 | @media print {
57 | .visible-print { display: inherit !important; }
58 | .hidden-print { display: none !important; }
59 | }
60 |
--------------------------------------------------------------------------------
/bootstrap/less/responsive.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.3.1
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */
10 |
11 |
12 | // Responsive.less
13 | // For phone and tablet devices
14 | // -------------------------------------------------------------
15 |
16 |
17 | // REPEAT VARIABLES & MIXINS
18 | // -------------------------
19 | // Required since we compile the responsive stuff separately
20 |
21 | @import "variables.less"; // Modify this for custom colors, font-sizes, etc
22 | @import "mixins.less";
23 |
24 |
25 | // RESPONSIVE CLASSES
26 | // ------------------
27 |
28 | @import "responsive-utilities.less";
29 |
30 |
31 | // MEDIA QUERIES
32 | // ------------------
33 |
34 | // Large desktops
35 | @import "responsive-1200px-min.less";
36 |
37 | // Tablets to regular desktops
38 | @import "responsive-768px-979px.less";
39 |
40 | // Phones to portrait tablets and narrow desktops
41 | @import "responsive-767px-max.less";
42 |
43 |
44 | // RESPONSIVE NAVBAR
45 | // ------------------
46 |
47 | // From 979px and below, show a button to toggle navbar contents
48 | @import "responsive-navbar.less";
49 |
--------------------------------------------------------------------------------
/bootstrap/less/scaffolding.less:
--------------------------------------------------------------------------------
1 | //
2 | // Scaffolding
3 | // --------------------------------------------------
4 |
5 |
6 | // Body reset
7 | // -------------------------
8 |
9 | body {
10 | margin: 0;
11 | font-family: @baseFontFamily;
12 | font-size: @baseFontSize;
13 | line-height: @baseLineHeight;
14 | color: @textColor;
15 | background-color: @bodyBackground;
16 | }
17 |
18 |
19 | // Links
20 | // -------------------------
21 |
22 | a {
23 | color: @linkColor;
24 | text-decoration: none;
25 | }
26 | a:hover,
27 | a:focus {
28 | color: @linkColorHover;
29 | text-decoration: underline;
30 | }
31 |
32 |
33 | // Images
34 | // -------------------------
35 |
36 | // Rounded corners
37 | .img-rounded {
38 | .border-radius(6px);
39 | }
40 |
41 | // Add polaroid-esque trim
42 | .img-polaroid {
43 | padding: 4px;
44 | background-color: #fff;
45 | border: 1px solid #ccc;
46 | border: 1px solid rgba(0,0,0,.2);
47 | .box-shadow(0 1px 3px rgba(0,0,0,.1));
48 | }
49 |
50 | // Perfect circle
51 | .img-circle {
52 | .border-radius(500px); // crank the border-radius so it works with most reasonably sized images
53 | }
54 |
--------------------------------------------------------------------------------
/bootstrap/less/tests/forms-responsive.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
21 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/bootstrap/less/tests/forms.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Bootstrap, from Twitter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
21 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
177 |
178 |
179 |
180 |
--------------------------------------------------------------------------------
/bootstrap/less/thumbnails.less:
--------------------------------------------------------------------------------
1 | //
2 | // Thumbnails
3 | // --------------------------------------------------
4 |
5 |
6 | // Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
7 |
8 | // Make wrapper ul behave like the grid
9 | .thumbnails {
10 | margin-left: -@gridGutterWidth;
11 | list-style: none;
12 | .clearfix();
13 | }
14 | // Fluid rows have no left margin
15 | .row-fluid .thumbnails {
16 | margin-left: 0;
17 | }
18 |
19 | // Float li to make thumbnails appear in a row
20 | .thumbnails > li {
21 | float: left; // Explicity set the float since we don't require .span* classes
22 | margin-bottom: @baseLineHeight;
23 | margin-left: @gridGutterWidth;
24 | }
25 |
26 | // The actual thumbnail (can be `a` or `div`)
27 | .thumbnail {
28 | display: block;
29 | padding: 4px;
30 | line-height: @baseLineHeight;
31 | border: 1px solid #ddd;
32 | .border-radius(@baseBorderRadius);
33 | .box-shadow(0 1px 3px rgba(0,0,0,.055));
34 | .transition(all .2s ease-in-out);
35 | }
36 | // Add a hover/focus state for linked versions only
37 | a.thumbnail:hover,
38 | a.thumbnail:focus {
39 | border-color: @linkColor;
40 | .box-shadow(0 1px 4px rgba(0,105,214,.25));
41 | }
42 |
43 | // Images and captions
44 | .thumbnail > img {
45 | display: block;
46 | max-width: 100%;
47 | margin-left: auto;
48 | margin-right: auto;
49 | }
50 | .thumbnail .caption {
51 | padding: 9px;
52 | color: @gray;
53 | }
54 |
--------------------------------------------------------------------------------
/bootstrap/less/tooltip.less:
--------------------------------------------------------------------------------
1 | //
2 | // Tooltips
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .tooltip {
8 | position: absolute;
9 | z-index: @zindexTooltip;
10 | display: block;
11 | visibility: visible;
12 | font-size: 11px;
13 | line-height: 1.4;
14 | .opacity(0);
15 | &.in { .opacity(80); }
16 | &.top { margin-top: -3px; padding: 5px 0; }
17 | &.right { margin-left: 3px; padding: 0 5px; }
18 | &.bottom { margin-top: 3px; padding: 5px 0; }
19 | &.left { margin-left: -3px; padding: 0 5px; }
20 | }
21 |
22 | // Wrapper for the tooltip content
23 | .tooltip-inner {
24 | max-width: 200px;
25 | padding: 8px;
26 | color: @tooltipColor;
27 | text-align: center;
28 | text-decoration: none;
29 | background-color: @tooltipBackground;
30 | .border-radius(@baseBorderRadius);
31 | }
32 |
33 | // Arrows
34 | .tooltip-arrow {
35 | position: absolute;
36 | width: 0;
37 | height: 0;
38 | border-color: transparent;
39 | border-style: solid;
40 | }
41 | .tooltip {
42 | &.top .tooltip-arrow {
43 | bottom: 0;
44 | left: 50%;
45 | margin-left: -@tooltipArrowWidth;
46 | border-width: @tooltipArrowWidth @tooltipArrowWidth 0;
47 | border-top-color: @tooltipArrowColor;
48 | }
49 | &.right .tooltip-arrow {
50 | top: 50%;
51 | left: 0;
52 | margin-top: -@tooltipArrowWidth;
53 | border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0;
54 | border-right-color: @tooltipArrowColor;
55 | }
56 | &.left .tooltip-arrow {
57 | top: 50%;
58 | right: 0;
59 | margin-top: -@tooltipArrowWidth;
60 | border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth;
61 | border-left-color: @tooltipArrowColor;
62 | }
63 | &.bottom .tooltip-arrow {
64 | top: 0;
65 | left: 50%;
66 | margin-left: -@tooltipArrowWidth;
67 | border-width: 0 @tooltipArrowWidth @tooltipArrowWidth;
68 | border-bottom-color: @tooltipArrowColor;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/bootstrap/less/utilities.less:
--------------------------------------------------------------------------------
1 | //
2 | // Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Quick floats
7 | .pull-right {
8 | float: right;
9 | }
10 | .pull-left {
11 | float: left;
12 | }
13 |
14 | // Toggling content
15 | .hide {
16 | display: none;
17 | }
18 | .show {
19 | display: block;
20 | }
21 |
22 | // Visibility
23 | .invisible {
24 | visibility: hidden;
25 | }
26 |
27 | // For Affix plugin
28 | .affix {
29 | position: fixed;
30 | }
31 |
--------------------------------------------------------------------------------
/bootstrap/less/wells.less:
--------------------------------------------------------------------------------
1 | //
2 | // Wells
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .well {
8 | min-height: 20px;
9 | padding: 19px;
10 | margin-bottom: 20px;
11 | background-color: @wellBackground;
12 | border: 1px solid darken(@wellBackground, 7%);
13 | .border-radius(@baseBorderRadius);
14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
15 | blockquote {
16 | border-color: #ddd;
17 | border-color: rgba(0,0,0,.15);
18 | }
19 | }
20 |
21 | // Sizes
22 | .well-large {
23 | padding: 24px;
24 | .border-radius(@borderRadiusLarge);
25 | }
26 | .well-small {
27 | padding: 9px;
28 | .border-radius(@borderRadiusSmall);
29 | }
30 |
--------------------------------------------------------------------------------
/bootstrap/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bootstrap"
3 | , "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
4 | , "version": "2.3.1"
5 | , "keywords": ["bootstrap", "css"]
6 | , "homepage": "http://twitter.github.com/bootstrap/"
7 | , "author": "Twitter Inc."
8 | , "scripts": { "test": "make test" }
9 | , "repository": {
10 | "type": "git"
11 | , "url": "https://github.com/twitter/bootstrap.git"
12 | }
13 | , "licenses": [
14 | {
15 | "type": "Apache-2.0"
16 | , "url": "http://www.apache.org/licenses/LICENSE-2.0"
17 | }
18 | ]
19 | , "devDependencies": {
20 | "uglify-js": "1.3.4"
21 | , "jshint": "0.9.1"
22 | , "recess": "1.1.6"
23 | , "connect": "2.1.3"
24 | , "hogan.js": "2.0.0"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/img/flames.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/flames.gif
--------------------------------------------------------------------------------
/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/img/microfab.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/microfab.gif
--------------------------------------------------------------------------------
/img/progress.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/progress.gif
--------------------------------------------------------------------------------
/img/rainbow.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/rainbow.gif
--------------------------------------------------------------------------------
/img/stars.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/stars.gif
--------------------------------------------------------------------------------
/img/test/7upspot.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/7upspot.gif
--------------------------------------------------------------------------------
/img/test/americanflag.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/americanflag.gif
--------------------------------------------------------------------------------
/img/test/community.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/community.gif
--------------------------------------------------------------------------------
/img/test/computer-01.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/computer-01.gif
--------------------------------------------------------------------------------
/img/test/computer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/computer.gif
--------------------------------------------------------------------------------
/img/test/construction.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/construction.gif
--------------------------------------------------------------------------------
/img/test/counter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/counter.gif
--------------------------------------------------------------------------------
/img/test/counter2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/counter2.gif
--------------------------------------------------------------------------------
/img/test/divider.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/divider.gif
--------------------------------------------------------------------------------
/img/test/divider1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/divider1.gif
--------------------------------------------------------------------------------
/img/test/divider2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/divider2.gif
--------------------------------------------------------------------------------
/img/test/divider3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/divider3.gif
--------------------------------------------------------------------------------
/img/test/divider4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/divider4.gif
--------------------------------------------------------------------------------
/img/test/drudgesiren.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/drudgesiren.gif
--------------------------------------------------------------------------------
/img/test/emailme.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/emailme.gif
--------------------------------------------------------------------------------
/img/test/funky.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/funky.gif
--------------------------------------------------------------------------------
/img/test/geocities.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/geocities.jpg
--------------------------------------------------------------------------------
/img/test/hacker.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/hacker.gif
--------------------------------------------------------------------------------
/img/test/heart.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/heart.gif
--------------------------------------------------------------------------------
/img/test/hot.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/hot.gif
--------------------------------------------------------------------------------
/img/test/ie_logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/ie_logo.gif
--------------------------------------------------------------------------------
/img/test/mailkitten.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/mailkitten.gif
--------------------------------------------------------------------------------
/img/test/mchammer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/mchammer.gif
--------------------------------------------------------------------------------
/img/test/new.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/new.gif
--------------------------------------------------------------------------------
/img/test/new2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/new2.gif
--------------------------------------------------------------------------------
/img/test/noframes.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/noframes.gif
--------------------------------------------------------------------------------
/img/test/notepad.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/notepad.gif
--------------------------------------------------------------------------------
/img/test/ns_logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/ns_logo.gif
--------------------------------------------------------------------------------
/img/test/sign-in.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/sign-in.gif
--------------------------------------------------------------------------------
/img/test/spinningearth.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/spinningearth.gif
--------------------------------------------------------------------------------
/img/test/underconstruction.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/underconstruction.gif
--------------------------------------------------------------------------------
/img/test/wabwalk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/wabwalk.gif
--------------------------------------------------------------------------------
/img/test/webtrips.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/webtrips.gif
--------------------------------------------------------------------------------
/img/test/yahooweek.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/divshot/geo-bootstrap/404022ff187b34bc11d5c100ef2493324b48a304/img/test/yahooweek.gif
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "geo-bootstrap",
3 | "description": "Geo is the coolest theme for Twitter Bootstrap.",
4 | "version": "1.0.0",
5 | "author": "Divshot",
6 | "homepage": "http://divshot.com/",
7 | "license": "Apache License, Version 2.0, http://www.apache.org/licenses/LICENSE-2.0",
8 | "repository": {
9 | "type": "git",
10 | "url": "git://github.com:divshot/geo-bootstrap.git"
11 | },
12 | "engines": {
13 | "node": ">= 0.8.11"
14 | },
15 | "devDependencies": {
16 | "grunt": "~0.4.0",
17 | "grunt-recess": "~0.3.1",
18 | "grunt-contrib-concat": "~0.1.3",
19 | "grunt-contrib-clean": "~0.4.0"
20 | }
21 | }
--------------------------------------------------------------------------------
/swatch/bootswatch.less:
--------------------------------------------------------------------------------
1 | // Swatch 2.3.1
2 | // Bootswatch
3 | // -----------------------------------------------------
4 |
5 | // TYPOGRAPHY
6 | // -----------------------------------------------------
7 | h1 { color: #ff0000; }
8 | h2 { color: #ffcc00; }
9 | h3 { color: #ffff00; }
10 | h4 { color: #66ff00; }
11 | h5 { color: #0000ff; }
12 | h6 { color: #ff00ff; }
13 |
14 | .page-header {
15 | border-bottom: 1px solid #B6B2A3;
16 | .box-shadow(~"inset 0 -1px 0 rgba(0,0,0,.2), 0 1px 0 #EAE7D8");
17 | }
18 |
19 | a {
20 | text-decoration: underline;
21 | }
22 | a:hover {
23 | text-decoration: underline !important;
24 | }
25 |
26 | blink {
27 | -webkit-animation: blink 1s linear infinite;
28 | -moz-animation: blink 1s linear infinite;
29 | -ms-animation: blink 1s linear infinite;
30 | -o-animation: blink 1s linear infinite;
31 | animation: blink 1s linear infinite;
32 | }
33 |
34 | // SCAFFOLDING
35 | // -----------------------------------------------------
36 | body {
37 | background: @bodyBackground url('../img/microfab.gif') top left;
38 | -webkit-font-smoothing: none;
39 | }
40 |
41 | // NAVBAR
42 | // -----------------------------------------------------
43 | .navbar {
44 | border-bottom: 1px solid #fff;
45 | .box-shadow(~"0 2px 0 #D4D0C8, 0 3px 0 #808080, 0 4px 0 #404040");
46 | }
47 | .navbar-inner {
48 | border-bottom: 1px solid #D4D0C8;
49 | background: #000 url('../img/stars.gif') top left;
50 | }
51 |
52 | // NAV
53 | // -----------------------------------------------------
54 |
55 | // BUTTONS
56 | // -----------------------------------------------------
57 | .btn {
58 | border: 6px ridge @btnBorder;
59 | }
60 | .btn-primary {
61 | background: #000 url('../img/rainbow.gif') top left;
62 | }
63 |
64 | // TABLES
65 | // -----------------------------------------------------
66 |
67 | // FORMS
68 | // -----------------------------------------------------
69 | legend {
70 | font-weight: bold;
71 | color: yellow;
72 | }
73 | .control-group.error input {
74 | background: #000 url('../img/flames.gif') 0 -30px repeat-x;
75 | }
76 |
77 | // DROPDOWNS
78 | // -----------------------------------------------------
79 | .dropdown-menu {
80 | .border-radius(0)
81 | }
82 |
83 | // ALERTS, LABELS, BADGES
84 | // -----------------------------------------------------
85 | .label-important,
86 | .badge-important {
87 | background-color: red;
88 | }
89 |
90 | .label-important[href],
91 | .badge-important[href] {
92 | background-color: red;
93 | }
94 |
95 | .label-warning,
96 | .badge-warning {
97 | background-color: yellow;
98 | color: black;
99 | }
100 |
101 | .label-warning[href],
102 | .badge-warning[href] {
103 | background-color: yellow;
104 | color: black;
105 | }
106 |
107 | .label-success,
108 | .badge-success {
109 | background-color: green;
110 | }
111 |
112 | .label-success[href],
113 | .badge-success[href] {
114 | background-color: green;
115 | }
116 |
117 | .label-info,
118 | .badge-info {
119 | background-color: #00ffff;
120 | }
121 |
122 | .label-info[href],
123 | .badge-info[href] {
124 | background-color: #00ffff;
125 | }
126 |
127 | .label-inverse,
128 | .badge-inverse {
129 | background-color: black;
130 | }
131 |
132 | .label-inverse[href],
133 | .badge-inverse[href] {
134 | background-color: black;
135 | }
136 |
137 | // MISC
138 | // -----------------------------------------------------
139 | .hero-unit, .well {
140 | background: #000 url('../img/stars.gif') top left;
141 | }
142 |
143 | .breadcrumb {
144 | background: black;
145 | color: white;
146 | }
147 |
148 | .nav-tabs > li > a:hover,
149 | .nav-tabs > li > a:focus {
150 | border-color: black;
151 | background: black;
152 | }
153 |
154 | .progress .bar {
155 | background: #C0C0C0 url('../img/progress.gif') top left repeat-x !important;
156 | border: 1px solid #fff;
157 | border-top: 1px solid #808080;
158 | border-left: 1px solid #808080;
159 | }
160 |
161 | // ANIMATIONS
162 | // -----------------------------------------------------
163 | // Webkit
164 | @-webkit-keyframes blink {
165 | 0% { opacity: 0; }
166 | 40% { opacity: 0; }
167 | 41% { opacity: 1; }
168 | 99% { opacity: 1; }
169 | 100% { opacity: 0; }
170 | }
171 |
172 | // Firefox
173 | @-moz-keyframes blink {
174 | 0% { opacity: 0; }
175 | 40% { opacity: 0; }
176 | 41% { opacity: 1; }
177 | 99% { opacity: 1; }
178 | 100% { opacity: 0; }
179 | }
180 |
181 | // IE9
182 | @-ms-keyframes blink {
183 | 0% { opacity: 0; }
184 | 40% { opacity: 0; }
185 | 41% { opacity: 1; }
186 | 99% { opacity: 1; }
187 | 100% { opacity: 0; }
188 | }
189 |
190 | // Opera
191 | @-o-keyframes blink {
192 | 0% { opacity: 0; }
193 | 40% { opacity: 0; }
194 | 41% { opacity: 1; }
195 | 99% { opacity: 1; }
196 | 100% { opacity: 0; }
197 | }
198 |
199 | // Spec
200 | @keyframes blink {
201 | 0% { opacity: 0; }
202 | 40% { opacity: 0; }
203 | 41% { opacity: 1; }
204 | 99% { opacity: 1; }
205 | 100% { opacity: 0; }
206 | }
--------------------------------------------------------------------------------
/swatchmaker-responsive.less:
--------------------------------------------------------------------------------
1 | @import "bootstrap/less/responsive.less";
2 | @import "swatch/variables.less";
--------------------------------------------------------------------------------
/swatchmaker.less:
--------------------------------------------------------------------------------
1 | @import "bootstrap/less/bootstrap.less";
2 | @import "swatch/variables.less";
3 | @import "swatch/bootswatch.less";
4 | @import "bootstrap/less/utilities.less";
--------------------------------------------------------------------------------
/test/bootswatch.css:
--------------------------------------------------------------------------------
1 | section {
2 | margin-top: 60px;
3 | padding-top: 100px;
4 | }
5 |
6 | /* index */
7 |
8 | .tooltip-inner {
9 | max-width: 500px;
10 | }
11 |
12 | .hero-unit h1,
13 | .hero-unit p {
14 | margin-bottom: 15px;
15 | }
16 |
17 | #footer {
18 | margin-bottom: 20px;
19 | }
20 |
21 | #footer .links a {
22 | margin-right: 10px;
23 | }
24 |
25 | @media (max-width: 767px) {
26 |
27 | section {
28 | padding-top: 20px;
29 | }
30 | }
31 |
32 | @media (min-width: 768px) and (max-width: 979px) {
33 |
34 | section {
35 | padding-top: 20px;
36 | }
37 | }
38 |
39 | /* preview */
40 |
41 | .subhead {
42 | padding-bottom: 0;
43 | margin-bottom: 9px;
44 | }
45 |
46 | .subhead h1 {
47 | font-size: 54px;
48 | }
49 |
50 | .subhead > div:first-child {
51 | min-height: 200px;
52 | }
53 |
54 | @media (min-width: 980px) {
55 |
56 | .preview {
57 | padding-top: 100px;
58 | }
59 | }
60 |
61 | /* subnav */
62 |
63 | .subnav {
64 | margin-bottom: 60px;
65 | width: 100%;
66 | height: 36px;
67 | background-color: black; /* Old browsers */
68 | color: white;
69 | border: 1px solid #e5e5e5;
70 | }
71 |
72 | .subnav .nav {
73 | margin-bottom: 0;
74 | }
75 |
76 | .subnav .nav > li > a {
77 | margin: 0;
78 | padding-top: 11px;
79 | padding-bottom: 11px;
80 | border-left: 1px solid #f5f5f5;
81 | border-right: 1px solid #e5e5e5;
82 | -webkit-border-radius: 0;
83 | -moz-border-radius: 0;
84 | border-radius: 0;
85 | color: yellow;
86 | }
87 |
88 | .subnav .nav > li.active > a,
89 | .subnav .nav > li > a:hover {
90 | padding-left: 13px;
91 | background: yellow;
92 | color: black;
93 | border-right-color: #ddd;
94 | border-left: 0;
95 | }
96 |
97 | .subnav .nav > .active > a .caret,
98 | .subnav .nav > .active > a:hover .caret {
99 | border-top-color: #777;
100 | }
101 |
102 | .subnav .nav > li:first-child > a,
103 | .subnav .nav > li:first-child > a:hover {
104 | border-left: 0;
105 | padding-left: 12px;
106 | -webkit-border-radius: 4px 0 0 4px;
107 | -moz-border-radius: 4px 0 0 4px;
108 | border-radius: 4px 0 0 4px;
109 | }
110 |
111 | .subnav .nav > li:last-child > a {
112 | border-right: 0;
113 | }
114 |
115 | .subnav .dropdown-menu {
116 | -webkit-border-radius: 0 0 4px 4px;
117 | -moz-border-radius: 0 0 4px 4px;
118 | border-radius: 0 0 4px 4px;
119 | }
120 |
121 | @media (max-width: 767px) {
122 |
123 | .subnav {
124 | position: static;
125 | top: auto;
126 | z-index: auto;
127 | width: auto;
128 | height: auto;
129 | background: #fff; /* whole background property since we use a background-image for gradient */
130 | -webkit-box-shadow: none;
131 | -moz-box-shadow: none;
132 | box-shadow: none;
133 | }
134 |
135 | .subnav .nav > li {
136 | float: none;
137 | }
138 |
139 | .subnav .nav > li > a {
140 | border: 0;
141 | }
142 |
143 | .subnav .nav > li + li > a {
144 | border-top: 1px solid #e5e5e5;
145 | }
146 |
147 | .subnav .nav > li:first-child > a,
148 | .subnav .nav > li:first-child > a:hover {
149 | -webkit-border-radius: 4px 4px 0 0;
150 | -moz-border-radius: 4px 4px 0 0;
151 | border-radius: 4px 4px 0 0;
152 | }
153 | }
154 |
155 | @media (min-width: 980px) {
156 |
157 | .subnav-fixed {
158 | position: fixed;
159 | top: 40px;
160 | left: 0;
161 | right: 0;
162 | z-index: 1020; /* 10 less than .navbar-fixed to prevent any overlap */
163 | border-color: #d5d5d5;
164 | border-width: 0 0 1px; /* drop the border on the fixed edges */
165 | -webkit-border-radius: 0;
166 | -moz-border-radius: 0;
167 | border-radius: 0;
168 | -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
169 | -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
170 | box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
171 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); /* IE6-9 */
172 | }
173 |
174 | .subnav-fixed .nav {
175 | width: 938px;
176 | margin: 0 auto;
177 | padding: 0 1px;
178 | }
179 |
180 | .subnav .nav > li:first-child > a,
181 | .subnav .nav > li:first-child > a:hover {
182 | -webkit-border-radius: 0;
183 | -moz-border-radius: 0;
184 | border-radius: 0;
185 | }
186 | }
187 |
188 | @media (min-width: 1210px) {
189 |
190 | .subnav-fixed .nav {
191 | width: 1168px; /* 2px less to account for left/right borders being removed when in fixed mode */
192 | }
193 | }
--------------------------------------------------------------------------------
/test/bootswatch.js:
--------------------------------------------------------------------------------
1 | // tooltips
2 |
3 | $('a[rel=tooltip]').tooltip({
4 | 'placement': 'bottom'
5 | });
6 |
7 | // smooth scroll
8 |
9 | $(document).ready(function() {
10 | function filterPath(string) {
11 | return string
12 | .replace(/^\//,'')
13 | .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
14 | .replace(/\/$/,'');
15 | }
16 | var locationPath = filterPath(location.pathname);
17 | var scrollElem = scrollableElement('html', 'body');
18 |
19 | $('a[href^=#]').each(function() {
20 | var thisPath = filterPath(this.pathname) || locationPath;
21 | if ( locationPath == thisPath
22 | && (location.hostname == this.hostname || !this.hostname)
23 | && this.hash.replace(/#/,'') ) {
24 | var $target = $(this.hash), target = this.hash;
25 | if (target) {
26 | var targetOffset = $target.offset().top;
27 | $(this).click(function(event) {
28 | event.preventDefault();
29 | $(scrollElem).animate({scrollTop: targetOffset}, 400, function() {
30 | location.hash = target;
31 | });
32 | });
33 | }
34 | }
35 | });
36 |
37 | // use the first element that is "scrollable"
38 | function scrollableElement(els) {
39 | for (var i = 0, argLength = arguments.length; i
0) {
43 | return el;
44 | } else {
45 | $scrollElement.scrollTop(1);
46 | var isScrollable = $scrollElement.scrollTop()> 0;
47 | $scrollElement.scrollTop(0);
48 | if (isScrollable) {
49 | return el;
50 | }
51 | }
52 | }
53 | return [];
54 | }
55 |
56 | });
57 |
58 | // subnav
59 |
60 | (function ($) {
61 |
62 | $(function(){
63 |
64 | // fix sub nav on scroll
65 | var $win = $(window),
66 | $body = $('body'),
67 | $nav = $('.subnav'),
68 | navHeight = $('.navbar').first().height(),
69 | subnavHeight = $('.subnav').first().height(),
70 | subnavTop = $('.subnav').length && $('.subnav').offset().top - navHeight,
71 | marginTop = parseInt($body.css('margin-top'), 10);
72 | isFixed = 0;
73 |
74 | processScroll();
75 |
76 | $win.on('scroll', processScroll);
77 |
78 | function processScroll() {
79 | var i, scrollTop = $win.scrollTop();
80 |
81 | if (scrollTop >= subnavTop && !isFixed) {
82 | isFixed = 1;
83 | $nav.addClass('subnav-fixed');
84 | $body.css('margin-top', marginTop + subnavHeight + 'px');
85 | } else if (scrollTop <= subnavTop && isFixed) {
86 | isFixed = 0;
87 | $nav.removeClass('subnav-fixed');
88 | $body.css('margin-top', marginTop + 'px');
89 | }
90 | }
91 |
92 | });
93 |
94 | })(window.jQuery);
--------------------------------------------------------------------------------
/watcher.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | require 'rubygems'
4 | require 'directory_watcher'
5 |
6 | dw = DirectoryWatcher.new 'swatch'
7 | dw.interval = 1.0
8 | dw.add_observer do |*args|
9 | args.each do |event|
10 | if /less/ =~ event.path
11 | `make bootswatch`
12 | puts "#{Time.now.strftime("%I:%M:%S")} make bootswatch (since #{event.path} #{event.type})"
13 | end
14 | end
15 | end
16 |
17 | dw.start
18 | gets # when the user hits "enter" the script will terminate
19 | dw.stop
--------------------------------------------------------------------------------