├── www
├── dist
├── scripts
│ ├── d41d8cd9.main.js
│ └── vendor
│ │ └── bootstrap
│ │ ├── 0dfe7678.bootstrap-transition.js
│ │ ├── f64cf7f2.bootstrap-alert.js
│ │ ├── 81453238.bootstrap-button.js
│ │ ├── e9a9c103.bootstrap-popover.js
│ │ ├── 39af607e.bootstrap-affix.js
│ │ ├── dab95585.bootstrap-tab.js
│ │ ├── 6e43b0d0.bootstrap-dropdown.js
│ │ ├── 437cd036.bootstrap-scrollspy.js
│ │ ├── 810e2170.bootstrap-collapse.js
│ │ ├── 4a691926.bootstrap-carousel.js
│ │ ├── a1d23a70.bootstrap-modal.js
│ │ ├── d23b5f74.bootstrap-typeahead.js
│ │ └── c6285e1a.bootstrap-tooltip.js
├── robots.txt
├── favicon.ico
├── assets
│ └── pattern_130.gif
├── images
│ ├── 9cc6609b.glyphicons-halflings.png
│ └── 5d462625.glyphicons-halflings-white.png
├── styles
│ ├── main.scss
│ ├── compass_twitter_bootstrap
│ │ ├── _layouts.scss
│ │ ├── _component-animations.scss
│ │ ├── _grid.scss
│ │ ├── _hero-unit.scss
│ │ ├── _breadcrumbs.scss
│ │ ├── _responsive-768px-979px.scss
│ │ ├── _wells.scss
│ │ ├── _responsive-1200px-min.scss
│ │ ├── _accordion.scss
│ │ ├── _utilities.scss
│ │ ├── _close.scss
│ │ ├── _pager.scss
│ │ ├── _scaffolding.scss
│ │ ├── _responsive.scss
│ │ ├── _responsive-utilities.scss
│ │ ├── _alerts.scss
│ │ ├── _thumbnails.scss
│ │ ├── _code.scss
│ │ ├── _pagination.scss
│ │ ├── _tooltip.scss
│ │ ├── _labels-badges.scss
│ │ ├── _modals.scss
│ │ ├── _carousel.scss
│ │ ├── _reset.scss
│ │ ├── _progress-bars.scss
│ │ ├── _popovers.scss
│ │ ├── _responsive-767px-max.scss
│ │ ├── _responsive-navbar.scss
│ │ ├── _type.scss
│ │ ├── _dropdowns.scss
│ │ ├── _buttons.scss
│ │ ├── _tables.scss
│ │ ├── _button-groups.scss
│ │ ├── _navs.scss
│ │ ├── _variables.scss
│ │ ├── _sprites.scss
│ │ ├── _font-awesome.scss
│ │ └── _navbar.scss
│ ├── _compass_twitter_bootstrap_responsive.scss
│ ├── _compass_twitter_bootstrap.scss
│ └── _compass_twitter_bootstrap_awesome.scss
├── manifest.appcache
├── 404.html
└── index.html
├── .gitignore
├── package.json
└── README.md
/www/dist:
--------------------------------------------------------------------------------
1 | ;
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
--------------------------------------------------------------------------------
/www/scripts/d41d8cd9.main.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/www/robots.txt:
--------------------------------------------------------------------------------
1 | # robotstxt.org/
2 |
3 | User-agent: *
4 |
--------------------------------------------------------------------------------
/www/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kswedberg/demo/HEAD/www/favicon.ico
--------------------------------------------------------------------------------
/www/assets/pattern_130.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kswedberg/demo/HEAD/www/assets/pattern_130.gif
--------------------------------------------------------------------------------
/www/images/9cc6609b.glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kswedberg/demo/HEAD/www/images/9cc6609b.glyphicons-halflings.png
--------------------------------------------------------------------------------
/www/images/5d462625.glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kswedberg/demo/HEAD/www/images/5d462625.glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/www/styles/main.scss:
--------------------------------------------------------------------------------
1 | @import "compass_twitter_bootstrap";
2 |
3 | body{
4 | background: url('../assets/pattern_130.gif');
5 | }
6 |
7 | .welcome{
8 | margin-right: 20px;
9 | }
10 |
11 | .shareList, .resendPassword{
12 | display: none;
13 | }
14 |
15 | .addTask{
16 | margin-top: 50px;
17 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "appjs",
3 | "version": "1.0.0",
4 | "type": "app",
5 | "dependencies": {
6 | "hoodie-app": "git://github.com/hoodiehq/hoodie-app.git",
7 | "worker-users": "git://github.com/hoodiehq/worker-users.git"
8 | },
9 | "scripts": {
10 | "start": "node node_modules/hoodie-app/lib/hoodie-app.js"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_layouts.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Layouts
3 | // --------------------------------------------------
4 |
5 |
6 | // Container (centered, fixed-width layouts)
7 | .container {
8 | @include container-fixed();
9 | }
10 |
11 | // Fluid layouts (left aligned, with sidebar, min- & max-width content)
12 | .container-fluid {
13 | padding-right: $gridGutterWidth;
14 | padding-left: $gridGutterWidth;
15 | @include clearfix();
16 | }
17 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_component-animations.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Component animations
3 | // --------------------------------------------------
4 |
5 |
6 | .fade {
7 | @include opacity(0);
8 | @include transition(opacity .15s linear);
9 | &.in {
10 | @include opacity(100);
11 | }
12 | }
13 |
14 | .collapse {
15 | position: relative;
16 | height: 0;
17 | overflow: hidden;
18 | overflow: visible \9;
19 | @include transition(height .35s ease);
20 | &.in {
21 | height: auto;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_grid.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Grid system
3 | // --------------------------------------------------
4 |
5 |
6 | // Fixed (940px)
7 | @include grid-core($gridColumnWidth, $gridGutterWidth);
8 |
9 | // Fluid (940px)
10 | @include grid-fluid($fluidGridColumnWidth, $fluidGridGutterWidth);
11 |
12 | // Reset utility classes due to specificity
13 | [class*="span"].hide,
14 | .row-fluid [class*="span"].hide {
15 | display: none;
16 | }
17 |
18 | [class*="span"].pull-right,
19 | .row-fluid [class*="span"].pull-right {
20 | float: right;
21 | }
22 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_hero-unit.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Hero unit
3 | // --------------------------------------------------
4 |
5 |
6 | .hero-unit {
7 | padding: 60px;
8 | margin-bottom: 30px;
9 | background-color: $heroUnitBackground;
10 | @include border-radius(6px);
11 | h1 {
12 | margin-bottom: 0;
13 | font-size: 60px;
14 | line-height: 1;
15 | color: $heroUnitHeadingColor;
16 | letter-spacing: -1px;
17 | }
18 | p {
19 | font-size: 18px;
20 | font-weight: 200;
21 | line-height: $baseLineHeight * 1.5;
22 | color: $heroUnitLeadColor;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_breadcrumbs.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Breadcrumbs
3 | // --------------------------------------------------
4 |
5 | .breadcrumb {
6 | padding: 8px 15px;
7 | margin: 0 0 $baseLineHeight;
8 | list-style: none;
9 | background-color: #f5f5f5;
10 | @include border-radius(4px);
11 | @include box-shadow(inset 0 1px 0 $white);
12 | li {
13 | display: inline-block;
14 | @include ie7-inline-block();
15 | text-shadow: 0 1px 0 $white;
16 | }
17 | .divider {
18 | padding: 0 5px;
19 | color: #ccc;
20 | }
21 | .active a {
22 | color: $grayLight;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_responsive-768px-979px.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Tablet to desktop
3 | // --------------------------------------------------
4 |
5 |
6 | @media (min-width: 768px) and (max-width: 979px) {
7 |
8 | // Fixed grid
9 | @include grid-core($gridColumnWidth768, $gridGutterWidth768);
10 |
11 | // Fluid grid
12 | @include grid-fluid($fluidGridColumnWidth768, $fluidGridGutterWidth768);
13 |
14 | // Input grid
15 | @include grid-input($gridColumnWidth768, $gridGutterWidth768);
16 |
17 | // No need to reset .thumbnails here since it's the same $gridGutterWidth
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_wells.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Wells
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .well {
8 | min-height: 20px;
9 | padding: 19px;
10 | margin-bottom: 20px;
11 | background-color: $wellBackground;
12 | border: 1px solid darken($wellBackground, 7%);
13 | @include border-radius(4px);
14 | @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
15 | blockquote {
16 | border-color: #ddd;
17 | border-color: rgba(0,0,0,.15);
18 | }
19 | }
20 |
21 | // Sizes
22 | .well-large {
23 | padding: 24px;
24 | @include border-radius(6px);
25 | }
26 | .well-small {
27 | padding: 9px;
28 | @include border-radius(3px);
29 | }
30 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_responsive-1200px-min.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Large desktop and up
3 | // --------------------------------------------------
4 |
5 |
6 | @media (min-width: 1200px) {
7 |
8 | // Fixed grid
9 | @include grid-core($gridColumnWidth1200, $gridGutterWidth1200);
10 |
11 | // Fluid grid
12 | @include grid-fluid($fluidGridColumnWidth1200, $fluidGridGutterWidth1200);
13 |
14 | // Input grid
15 | @include grid-input($gridColumnWidth1200, $gridGutterWidth1200);
16 |
17 | // Thumbnails
18 | .thumbnails {
19 | margin-left: -$gridGutterWidth1200;
20 | }
21 | .thumbnails > li {
22 | margin-left: -$gridGutterWidth1200;
23 | }
24 | .row-fluid .thumbnails {
25 | margin-left: 0;
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_accordion.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Accordion
3 | // --------------------------------------------------
4 |
5 |
6 | // Parent container
7 | .accordion {
8 | margin-bottom: $baseLineHeight;
9 | }
10 |
11 | // Group == heading + body
12 | .accordion-group {
13 | margin-bottom: 2px;
14 | border: 1px solid #e5e5e5;
15 | @include border-radius(4px);
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 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_utilities.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Quick floats
7 | .pull-right {
8 | float: right;
9 | }
10 | .pull-left {
11 | float: left;
12 | }
13 |
14 | // Toggling content
15 | .hide {
16 | display: none;
17 | }
18 | .show {
19 | display: block;
20 | }
21 |
22 | // Visibility
23 | .invisible {
24 | visibility: hidden;
25 | }
26 |
27 | // For Affix plugin
28 | .affix {
29 | position: fixed;
30 | }
31 |
32 | // Clearing floats
33 | .clearfix {
34 | @include clearfix();
35 | }
36 |
37 | // Accessible yet invisible text
38 | .hide-text {
39 | @include hide-text();
40 | }
41 |
42 | // Uses box-sizing mixin, so must be defined here
43 | .input-block-level {
44 | @include input-block-level();
45 | }
46 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_close.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Close icons
3 | // --------------------------------------------------
4 |
5 |
6 | .close {
7 | float: right;
8 | font-size: 20px;
9 | font-weight: bold;
10 | line-height: $baseLineHeight;
11 | color: $black;
12 | text-shadow: 0 1px 0 rgba(255,255,255,1);
13 | @include opacity(20);
14 | &:hover {
15 | color: $black;
16 | text-decoration: none;
17 | cursor: pointer;
18 | @include opacity(40);
19 | }
20 | }
21 |
22 | // Additional properties for button version
23 | // iOS requires the button element instead of an anchor tag.
24 | // If you want the anchor version, it requires `href="#"`.
25 | button.close {
26 | padding: 0;
27 | cursor: pointer;
28 | background: transparent;
29 | border: 0;
30 | -webkit-appearance: none;
31 | }
32 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_pager.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Pager pagination
3 | // --------------------------------------------------
4 |
5 |
6 | .pager {
7 | margin: $baseLineHeight 0;
8 | list-style: none;
9 | text-align: center;
10 | @include clearfix();
11 | }
12 | .pager li {
13 | display: inline;
14 | }
15 | .pager a {
16 | display: inline-block;
17 | padding: 5px 14px;
18 | background-color: #fff;
19 | border: 1px solid #ddd;
20 | @include border-radius(15px);
21 | }
22 | .pager a:hover {
23 | text-decoration: none;
24 | background-color: #f5f5f5;
25 | }
26 | .pager .next a {
27 | float: right;
28 | }
29 | .pager .previous a {
30 | float: left;
31 | }
32 | .pager .disabled a,
33 | .pager .disabled a:hover {
34 | color: $grayLight;
35 | background-color: #fff;
36 | cursor: default;
37 | }
38 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_scaffolding.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Scaffolding
3 | // --------------------------------------------------
4 |
5 |
6 | // Body reset
7 | // -------------------------
8 |
9 | body {
10 | margin: 0;
11 | font-family: $baseFontFamily;
12 | font-size: $baseFontSize;
13 | line-height: $baseLineHeight;
14 | color: $textColor;
15 | background-color: $bodyBackground;
16 | }
17 |
18 |
19 | // Links
20 | // -------------------------
21 |
22 | a {
23 | color: $linkColor;
24 | text-decoration: none;
25 | }
26 | a:hover {
27 | color: $linkColorHover;
28 | text-decoration: underline;
29 | }
30 |
31 |
32 | // Images
33 | // -------------------------
34 |
35 | .img-rounded {
36 | @include border-radius(6px);
37 | }
38 |
39 | .img-polaroid {
40 | padding: 4px;
41 | background-color: #fff;
42 | border: 1px solid #ccc;
43 | border: 1px solid rgba(0,0,0,.2);
44 | -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.1);
45 | -moz-box-shadow: 0 1px 3px rgba(0,0,0,.1);
46 | box-shadow: 0 1px 3px rgba(0,0,0,.1);
47 | }
48 |
49 | .img-circle {
50 | @include border-radius(500px);
51 | }
52 |
--------------------------------------------------------------------------------
/www/manifest.appcache:
--------------------------------------------------------------------------------
1 | CACHE MANIFEST
2 |
3 | # Time: Thu Feb 28 2013 18:16:43 GMT+0100 (CET)
4 | # This manifest was created by confess.js, http://github.com/jamesgpearce/confess
5 | #
6 | # Retrieved URL: http://localhost:3501/
7 | # User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11
8 | #
9 | # Config:
10 | # task: appcache
11 | # userAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11
12 | # wait: 0
13 | # consolePrefix: #
14 | # verbose: true
15 | # appcache:
16 | # urlsFromDocument: true
17 | # urlsFromRequests: false
18 | # cacheFilter: .*
19 | # networkFilter: null
20 | # url: http://localhost:3501
21 | # configFile: /usr/local/lib/node_modules/yeoman/lib/support/confess.json
22 |
23 | CACHE:
24 | http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js
25 | http://localhost:3501/app/images/glyphicons-halflings-white.png?1361804889
26 | http://localhost:3501/app/images/glyphicons-halflings.png?1361804889
27 | http://localhost:3501/assets/pattern_130.gif
28 | scripts/8ab52a5b.plugins.js
29 | scripts/vendor/4415486f.hoodie.js
30 | scripts/vendor/cf69c6f2.modernizr.min.js
31 | styles/881c910a.main.css
32 |
33 | NETWORK:
34 | *
35 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_responsive.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.1.0
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.scss
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"; // Modify this for custom colors, font-sizes, etc
22 | @import "mixins";
23 |
24 |
25 | // RESPONSIVE CLASSES
26 | // ------------------
27 |
28 | @import "responsive-utilities";
29 |
30 |
31 | // MEDIA QUERIES
32 | // ------------------
33 |
34 | // Large desktops
35 | @import "responsive-1200px-min";
36 |
37 | // Tablets to regular desktops
38 | @import "responsive-768px-979px";
39 |
40 | // Phones to portrait tablets and narrow desktops
41 | @import "responsive-767px-max";
42 |
43 |
44 | // RESPONSIVE NAVBAR
45 | // ------------------
46 |
47 | // From 979px and below, show a button to toggle navbar contents
48 | @import "responsive-navbar";
49 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_responsive-utilities.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Hide from screenreaders and browsers
7 | // Credit: HTML5 Boilerplate
8 | .hidden {
9 | display: none;
10 | visibility: hidden;
11 | }
12 |
13 | // Visibility utilities
14 |
15 | // For desktops
16 | .visible-phone { display: none !important; }
17 | .visible-tablet { display: none !important; }
18 | .visible-desktop { } // Don't set initially
19 | .hidden-phone { }
20 | .hidden-tablet { }
21 | .hidden-desktop { display: none !important; }
22 |
23 | // Tablets & small desktops only
24 | @media (min-width: 768px) and (max-width: 979px) {
25 | // Hide everything else
26 | .hidden-desktop { display: inherit !important; }
27 | .visible-desktop { display: none !important ; }
28 | // Show
29 | .visible-tablet { display: inherit !important; }
30 | // Hide
31 | .hidden-tablet { display: none !important; }
32 | }
33 |
34 | // Phones only
35 | @media (max-width: 767px) {
36 | // Hide everything else
37 | .hidden-desktop { display: inherit !important; }
38 | .visible-desktop { display: none !important; }
39 | // Show
40 | .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
41 | // Hide
42 | .hidden-phone { display: none !important; }
43 | }
44 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_alerts.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Alerts
3 | // --------------------------------------------------
4 |
5 | // Base styles
6 | // -------------------------
7 |
8 | .alert {
9 | padding: 8px 35px 8px 14px;
10 | margin-bottom: $baseLineHeight;
11 | text-shadow: 0 1px 0 rgba(255,255,255,.5);
12 | background-color: $warningBackground;
13 | border: 1px solid $warningBorder;
14 | @include border-radius(4px);
15 | color: $warningText;
16 | }
17 | .alert h4 {
18 | margin: 0;
19 | }
20 |
21 | // Adjust close link position
22 | .alert .close {
23 | position: relative;
24 | top: -2px;
25 | right: -21px;
26 | line-height: $baseLineHeight;
27 | }
28 |
29 | // Alternate styles
30 | // -------------------------
31 |
32 | .alert-success {
33 | background-color: $successBackground;
34 | border-color: $successBorder;
35 | color: $successText;
36 | }
37 | .alert-danger,
38 | .alert-error {
39 | background-color: $errorBackground;
40 | border-color: $errorBorder;
41 | color: $errorText;
42 | }
43 | .alert-info {
44 | background-color: $infoBackground;
45 | border-color: $infoBorder;
46 | color: $infoText;
47 | }
48 |
49 | // Block alerts
50 | // -------------------------
51 | .alert-block {
52 | padding-top: 14px;
53 | padding-bottom: 14px;
54 | }
55 | .alert-block > p,
56 | .alert-block > ul {
57 | margin-bottom: 0;
58 | }
59 | .alert-block p + p {
60 | margin-top: 5px;
61 | }
62 |
--------------------------------------------------------------------------------
/www/styles/_compass_twitter_bootstrap_responsive.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.1.0
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */
10 |
11 |
12 | // Responsive
13 | // For phone and tablet devices
14 | // -------------------------------------------------------------
15 |
16 |
17 | // REPEAT VARIABLES & MIXINS
18 | // -------------------------
19 | // Required since we compile the responsive stuff separately
20 |
21 | @import "compass_twitter_bootstrap/variables"; // Modify this for custom colors, font-sizes, etc
22 | @import "compass_twitter_bootstrap/mixins";
23 |
24 |
25 | // RESPONSIVE CLASSES
26 | // ------------------
27 |
28 | @import "compass_twitter_bootstrap/responsive-utilities";
29 |
30 |
31 | // MEDIA QUERIES
32 | // ------------------
33 |
34 | // Phones to portrait tablets and narrow desktops
35 | @import "compass_twitter_bootstrap/responsive-767px-max";
36 |
37 | // Tablets to regular desktops
38 | @import "compass_twitter_bootstrap/responsive-768px-979px";
39 |
40 | // Large desktops
41 | @import "compass_twitter_bootstrap/responsive-1200px-min";
42 |
43 |
44 | // RESPONSIVE NAVBAR
45 | // ------------------
46 |
47 | // From 979px and below, show a button to toggle navbar contents
48 | @import "compass_twitter_bootstrap/responsive-navbar";
49 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_thumbnails.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Thumbnails
3 | // --------------------------------------------------
4 |
5 |
6 | // Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
7 |
8 | // Make wrapper ul behave like the grid
9 | .thumbnails {
10 | margin-left: -$gridGutterWidth;
11 | list-style: none;
12 | @include clearfix();
13 | }
14 | // Fluid rows have no left margin
15 | .row-fluid .thumbnails {
16 | margin-left: 0;
17 | }
18 |
19 | // Float li to make thumbnails appear in a row
20 | .thumbnails > li {
21 | float: left; // Explicity set the float since we don't require .span* classes
22 | margin-bottom: $baseLineHeight;
23 | margin-left: $gridGutterWidth;
24 | }
25 |
26 | // The actual thumbnail (can be `a` or `div`)
27 | .thumbnail {
28 | display: block;
29 | padding: 4px;
30 | line-height: $baseLineHeight;
31 | border: 1px solid #ddd;
32 | @include border-radius(4px);
33 | @include box-shadow(0 1px 1px rgba(0,0,0,.055));
34 | @include transition(all .2s ease-in-out);
35 | }
36 | // Add a hover state for linked versions only
37 | a.thumbnail:hover {
38 | border-color: $linkColor;
39 | @include box-shadow(0 1px 4px rgba(0,105,214,.25));
40 | }
41 |
42 | // Images and captions
43 | .thumbnail > img {
44 | display: block;
45 | max-width: 100%;
46 | margin-left: auto;
47 | margin-right: auto;
48 | }
49 | .thumbnail .caption {
50 | padding: 9px;
51 | color: $gray;
52 | }
53 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_code.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Code (inline and blocK)
3 | // --------------------------------------------------
4 |
5 |
6 | // Inline and block code styles
7 | code,
8 | pre {
9 | padding: 0 3px 2px;
10 | @include font-family-monospace;
11 | font-size: $baseFontSize - 2;
12 | color: $grayDark;
13 | @include border-radius(3px);
14 | }
15 |
16 | // Inline code
17 | code {
18 | padding: 2px 4px;
19 | color: #d14;
20 | background-color: #f7f7f9;
21 | border: 1px solid #e1e1e8;
22 | }
23 |
24 | // Blocks of code
25 | pre {
26 | display: block;
27 | padding: ($baseLineHeight - 1) / 2;
28 | margin: 0 0 $baseLineHeight / 2;
29 | font-size: $baseFontSize - 1; // 14px to 13px
30 | line-height: $baseLineHeight;
31 | word-break: break-all;
32 | word-wrap: break-word;
33 | white-space: pre;
34 | white-space: pre-wrap;
35 | background-color: #f5f5f5;
36 | border: 1px solid #ccc; // fallback for IE7-8
37 | border: 1px solid rgba(0,0,0,.15);
38 | @include border-radius(4px);
39 |
40 | // Make prettyprint styles more spaced out for readability
41 | &.prettyprint {
42 | margin-bottom: $baseLineHeight;
43 | }
44 |
45 | // Account for some code outputs that place code tags in pre tags
46 | code {
47 | padding: 0;
48 | color: inherit;
49 | background-color: transparent;
50 | border: 0;
51 | }
52 | }
53 |
54 | // Enable scrollable blocks of code
55 | .pre-scrollable {
56 | max-height: 340px;
57 | overflow-y: scroll;
58 | }
59 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Copy and paste the following to add behaviour to the demo-dummy:
2 |
3 | var hoodie = new Hoodie("http://api.appjs.dev");
4 |
5 | hoodie.store.on('add:task', function(object) {
6 | $('.taskList').append('
'+object.desc+'');
7 | });
8 |
9 | $('.addTask .submit').click(function(event){
10 | event.preventDefault();
11 | var desc = $('.addTask .desc').val();
12 | hoodie.store.add('task', {desc: desc});
13 | });
14 |
15 | $('.signUp .submit').click(function(event){
16 | event.preventDefault();
17 | var username = $('.signUp .username').val();
18 | var password = $('.signUp .password').val();
19 | hoodie.account.signUp(username, password).done(function(object){
20 | $('#modal').modal('hide');
21 | $('.welcome').text('Hello, '+hoodie.account.username);
22 | });
23 | });
24 |
25 | $('.signIn .submit').click(function(event){
26 | event.preventDefault();
27 | var username = $('.signIn .username').val();
28 | var password = $('.signIn .password').val();
29 | hoodie.account.signIn(username, password).done(function(object){
30 | $('#modal').modal('hide');
31 | $('.welcome').text('Hello, '+hoodie.account.username);
32 | });
33 | });
34 |
35 | hoodie.store.findAll('task').done(function(tasks){
36 | $('.taskList').empty()
37 | tasks.forEach( function( task ){
38 | $('.taskList').append(''+task.desc+'');
39 | });
40 | });
41 |
42 |
43 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_pagination.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Pagination (multiple pages)
3 | // --------------------------------------------------
4 |
5 |
6 | .pagination {
7 | height: $baseLineHeight * 2;
8 | margin: $baseLineHeight 0;
9 | }
10 | .pagination ul {
11 | display: inline-block;
12 | @include ie7-inline-block();
13 | margin-left: 0;
14 | margin-bottom: 0;
15 | @include border-radius(3px);
16 | @include box-shadow(0 1px 2px rgba(0,0,0,.05));
17 | }
18 | .pagination li {
19 | display: inline;
20 | }
21 | .pagination a,
22 | .pagination span {
23 | float: left;
24 | padding: 0 14px;
25 | line-height: ($baseLineHeight * 2) - 2;
26 | text-decoration: none;
27 | background-color: $paginationBackground;
28 | border: 1px solid $paginationBorder;
29 | border-left-width: 0;
30 | }
31 | .pagination a:hover,
32 | .pagination .active a,
33 | .pagination .active span {
34 | background-color: #f5f5f5;
35 | }
36 | .pagination .active a,
37 | .pagination .active span {
38 | color: $grayLight;
39 | cursor: default;
40 | }
41 | .pagination .disabled span,
42 | .pagination .disabled a,
43 | .pagination .disabled a:hover {
44 | color: $grayLight;
45 | background-color: transparent;
46 | cursor: default;
47 | }
48 | .pagination li:first-child a,
49 | .pagination li:first-child span {
50 | border-left-width: 1px;
51 | @include border-radius(3px 0 0 3px);
52 | }
53 | .pagination li:last-child a,
54 | .pagination li:last-child span {
55 | @include border-radius(0 3px 3px 0);
56 | }
57 |
58 | // Centered
59 | .pagination-centered {
60 | text-align: center;
61 | }
62 | .pagination-right {
63 | text-align: right;
64 | }
65 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_tooltip.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Tooltips
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .tooltip {
8 | position: absolute;
9 | z-index: $zindexTooltip;
10 | display: block;
11 | visibility: visible;
12 | padding: 5px;
13 | font-size: 11px;
14 | @include opacity(0);
15 | &.in { @include opacity(80); }
16 | &.top { margin-top: -3px; }
17 | &.right { margin-left: 3px; }
18 | &.bottom { margin-top: 3px; }
19 | &.left { margin-left: -3px; }
20 | }
21 |
22 | // Wrapper for the tooltip content
23 | .tooltip-inner {
24 | max-width: 200px;
25 | padding: 3px 8px;
26 | color: $tooltipColor;
27 | text-align: center;
28 | text-decoration: none;
29 | background-color: $tooltipBackground;
30 | @include border-radius(4px);
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 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/0dfe7678.bootstrap-transition.js:
--------------------------------------------------------------------------------
1 | /* ===================================================
2 | * bootstrap-transition.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#transitions
4 | * ===================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | $(function () {
24 |
25 | "use strict"; // jshint ;_;
26 |
27 |
28 | /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
29 | * ======================================================= */
30 |
31 | $.support.transition = (function () {
32 |
33 | var transitionEnd = (function () {
34 |
35 | var el = document.createElement('bootstrap')
36 | , transEndEventNames = {
37 | 'WebkitTransition' : 'webkitTransitionEnd'
38 | , 'MozTransition' : 'transitionend'
39 | , 'OTransition' : 'oTransitionEnd otransitionend'
40 | , 'transition' : 'transitionend'
41 | }
42 | , name
43 |
44 | for (name in transEndEventNames){
45 | if (el.style[name] !== undefined) {
46 | return transEndEventNames[name]
47 | }
48 | }
49 |
50 | }())
51 |
52 | return transitionEnd && {
53 | end: transitionEnd
54 | }
55 |
56 | })()
57 |
58 | })
59 |
60 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_labels-badges.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Labels and badges
3 | // --------------------------------------------------
4 |
5 |
6 | // Base classes
7 | .label,
8 | .badge {
9 | font-size: $baseFontSize * .846;
10 | font-weight: bold;
11 | line-height: 14px; // ensure proper line-height if floated
12 | color: $white;
13 | vertical-align: baseline;
14 | white-space: nowrap;
15 | text-shadow: 0 -1px 0 rgba(0,0,0,.25);
16 | background-color: $grayLight;
17 | }
18 | // Set unique padding and border-radii
19 | .label {
20 | padding: 1px 4px 2px;
21 | @include border-radius(3px);
22 | }
23 | .badge {
24 | padding: 1px 9px 2px;
25 | @include border-radius(9px);
26 | }
27 |
28 | // Hover state, but only for links
29 | a {
30 | &.label:hover,
31 | &.badge:hover {
32 | color: $white;
33 | text-decoration: none;
34 | cursor: pointer;
35 | }
36 | }
37 |
38 | // Colors
39 | // Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
40 | // Important (red)
41 | .label-important, .badge-important { background-color: $errorText; }
42 | .label-important[href], .badge-important[href] { background-color: darken($errorText, 10%); }
43 | // Warnings (orange)
44 | .label-warning, .badge-warning { background-color: $orange; }
45 | .label-warning[href], .badge-warning[href] { background-color: darken($orange, 10%); }
46 | // Success (green)
47 | .label-success, .badge-success { background-color: $successText; }
48 | .label-success[href], .badge-success[href] { background-color: darken($successText, 10%); }
49 | // Info (turquoise)
50 | .label-info, .badge-info { background-color: $infoText; }
51 | .label-info[href], .badge-info[href] { background-color: darken($infoText, 10%); }
52 | // Inverse (black)
53 | .label-inverse, .badge-inverse { background-color: $grayDark; }
54 | .label-inverse[href], .badge-inverse[href] { background-color: darken($grayDark, 10%); }
55 |
56 | // Quick fix for labels/badges in buttons
57 | .btn {
58 | .label,
59 | .badge {
60 | position: relative;
61 | top: -1px;
62 | }
63 | }
64 | .btn-mini {
65 | .label,
66 | .badge {
67 | top: 0;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/www/styles/_compass_twitter_bootstrap.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v2.1.0
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 | @import "compass";
12 |
13 | @import "compass_twitter_bootstrap/mixins";
14 |
15 | // CSS Reset
16 | @import "compass_twitter_bootstrap/reset";
17 |
18 | // Core variables and mixins
19 | @import "compass_twitter_bootstrap/variables"; // Modify this for custom colors, font-sizes, etc
20 |
21 |
22 | // Grid system and page structure
23 | @import "compass_twitter_bootstrap/scaffolding";
24 | @import "compass_twitter_bootstrap/grid";
25 | @import "compass_twitter_bootstrap/layouts";
26 |
27 | // Base CSS
28 | @import "compass_twitter_bootstrap/type";
29 | @import "compass_twitter_bootstrap/code";
30 | @import "compass_twitter_bootstrap/forms";
31 | @import "compass_twitter_bootstrap/tables";
32 |
33 | // Components: common
34 | @import "compass_twitter_bootstrap/sprites";
35 | @import "compass_twitter_bootstrap/dropdowns";
36 | @import "compass_twitter_bootstrap/wells";
37 | @import "compass_twitter_bootstrap/component-animations";
38 | @import "compass_twitter_bootstrap/close";
39 |
40 | // Components: Buttons & Alerts
41 | @import "compass_twitter_bootstrap/buttons";
42 | @import "compass_twitter_bootstrap/button-groups";
43 | @import "compass_twitter_bootstrap/alerts"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
44 |
45 | // Components: Nav
46 | @import "compass_twitter_bootstrap/navs";
47 | @import "compass_twitter_bootstrap/navbar";
48 | @import "compass_twitter_bootstrap/breadcrumbs";
49 | @import "compass_twitter_bootstrap/pagination";
50 | @import "compass_twitter_bootstrap/pager";
51 |
52 | // Components: Popovers
53 | @import "compass_twitter_bootstrap/modals";
54 | @import "compass_twitter_bootstrap/tooltip";
55 | @import "compass_twitter_bootstrap/popovers";
56 |
57 | // Components: Misc
58 | @import "compass_twitter_bootstrap/thumbnails";
59 | @import "compass_twitter_bootstrap/labels-badges";
60 | @import "compass_twitter_bootstrap/progress-bars";
61 | @import "compass_twitter_bootstrap/accordion";
62 | @import "compass_twitter_bootstrap/carousel";
63 | @import "compass_twitter_bootstrap/hero-unit";
64 |
65 | // Utility classes
66 | @import "compass_twitter_bootstrap/utilities"; // Has to be last to override when necessary
67 |
--------------------------------------------------------------------------------
/www/styles/_compass_twitter_bootstrap_awesome.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Bootstrap v2.1.0
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 | @import "compass";
12 |
13 | @import "compass_twitter_bootstrap/mixins";
14 |
15 | // CSS Reset
16 | @import "compass_twitter_bootstrap/reset";
17 |
18 | // Core variables and mixins
19 | @import "compass_twitter_bootstrap/variables"; // Modify this for custom colors, font-sizes, etc
20 |
21 |
22 | // Grid system and page structure
23 | @import "compass_twitter_bootstrap/scaffolding";
24 | @import "compass_twitter_bootstrap/grid";
25 | @import "compass_twitter_bootstrap/layouts";
26 |
27 | // Base CSS
28 | @import "compass_twitter_bootstrap/type";
29 | @import "compass_twitter_bootstrap/code";
30 | @import "compass_twitter_bootstrap/forms";
31 | @import "compass_twitter_bootstrap/tables";
32 |
33 | // Components: common
34 | @import "compass_twitter_bootstrap/font-awesome";
35 | @import "compass_twitter_bootstrap/dropdowns";
36 | @import "compass_twitter_bootstrap/wells";
37 | @import "compass_twitter_bootstrap/component-animations";
38 | @import "compass_twitter_bootstrap/close";
39 |
40 | // Components: Buttons & Alerts
41 | @import "compass_twitter_bootstrap/buttons";
42 | @import "compass_twitter_bootstrap/button-groups";
43 | @import "compass_twitter_bootstrap/alerts"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
44 |
45 | // Components: Nav
46 | @import "compass_twitter_bootstrap/navs";
47 | @import "compass_twitter_bootstrap/navbar";
48 | @import "compass_twitter_bootstrap/breadcrumbs";
49 | @import "compass_twitter_bootstrap/pagination";
50 | @import "compass_twitter_bootstrap/pager";
51 |
52 | // Components: Popovers
53 | @import "compass_twitter_bootstrap/modals";
54 | @import "compass_twitter_bootstrap/tooltip";
55 | @import "compass_twitter_bootstrap/popovers";
56 |
57 | // Components: Misc
58 | @import "compass_twitter_bootstrap/thumbnails";
59 | @import "compass_twitter_bootstrap/labels-badges";
60 | @import "compass_twitter_bootstrap/progress-bars";
61 | @import "compass_twitter_bootstrap/accordion";
62 | @import "compass_twitter_bootstrap/carousel";
63 | @import "compass_twitter_bootstrap/hero-unit";
64 |
65 | // Utility classes
66 | @import "compass_twitter_bootstrap/utilities"; // Has to be last to override when necessary
67 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_modals.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Modals
3 | // --------------------------------------------------
4 |
5 |
6 | // Recalculate z-index where appropriate
7 | .modal-open {
8 | .dropdown-menu { z-index: $zindexDropdown + $zindexModal; }
9 | .dropdown.open { *z-index: $zindexDropdown + $zindexModal; }
10 | .popover { z-index: $zindexPopover + $zindexModal; }
11 | .tooltip { z-index: $zindexTooltip + $zindexModal; }
12 | }
13 |
14 | // Background
15 | .modal-backdrop {
16 | position: fixed;
17 | top: 0;
18 | right: 0;
19 | bottom: 0;
20 | left: 0;
21 | z-index: $zindexModalBackdrop;
22 | background-color: $black;
23 | // Fade for backdrop
24 | &.fade { opacity: 0; }
25 | }
26 |
27 | .modal-backdrop,
28 | .modal-backdrop.fade.in {
29 | @include opacity(80);
30 | }
31 |
32 | // Base modal
33 | .modal {
34 | position: fixed;
35 | top: 50%;
36 | left: 50%;
37 | z-index: $zindexModal;
38 | overflow: auto;
39 | width: 560px;
40 | margin: -250px 0 0 -280px;
41 | background-color: $white;
42 | border: 1px solid #999;
43 | border: 1px solid rgba(0,0,0,.3);
44 | *border: 1px solid #999; /* IE6-7 */
45 | @include border-radius(6px);
46 | @include box-shadow(0 3px 7px rgba(0,0,0,0.3));
47 | @include background-clip(padding-box);
48 | &.fade {
49 | @include transition(#{opacity .3s linear, top .3s ease-out});
50 | top: -25%;
51 | }
52 | &.fade.in { top: 50%; }
53 | }
54 | .modal-header {
55 | padding: 9px 15px;
56 | border-bottom: 1px solid #eee;
57 | // Close icon
58 | .close { margin-top: 2px; }
59 | // Heading
60 | h3 {
61 | margin: 0;
62 | line-height: 30px;
63 | }
64 | }
65 |
66 | // Body (where all modal content resides)
67 | .modal-body {
68 | overflow-y: auto;
69 | max-height: 400px;
70 | padding: 15px;
71 | }
72 | // Remove bottom margin if need be
73 | .modal-form {
74 | margin-bottom: 0;
75 | }
76 |
77 | // Footer (for actions)
78 | .modal-footer {
79 | padding: 14px 15px 15px;
80 | margin-bottom: 0;
81 | text-align: right; // right align buttons
82 | background-color: #f5f5f5;
83 | border-top: 1px solid #ddd;
84 | @include border-radius(0 0 6px 6px);
85 | @include box-shadow(inset 0 1px 0 $white);
86 | @include clearfix(); // clear it in case folks use .pull-* classes on buttons
87 |
88 | // Properly space out buttons
89 | .btn + .btn {
90 | margin-left: 5px;
91 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
92 | }
93 | // but override that for button groups
94 | .btn-group .btn + .btn {
95 | margin-left: -1px;
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_carousel.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Carousel
3 | // --------------------------------------------------
4 |
5 |
6 | .carousel {
7 | position: relative;
8 | margin-bottom: $baseLineHeight;
9 | line-height: 1;
10 | }
11 |
12 | .carousel-inner {
13 | overflow: hidden;
14 | width: 100%;
15 | position: relative;
16 | }
17 |
18 | .carousel {
19 |
20 | .item {
21 | display: none;
22 | position: relative;
23 | @include transition(.6s ease-in-out left);
24 | }
25 |
26 | // Account for jankitude on images
27 | .item > img {
28 | display: block;
29 | line-height: 1;
30 | }
31 |
32 | .active,
33 | .next,
34 | .prev { display: block; }
35 |
36 | .active {
37 | left: 0;
38 | }
39 |
40 | .next,
41 | .prev {
42 | position: absolute;
43 | top: 0;
44 | width: 100%;
45 | }
46 |
47 | .next {
48 | left: 100%;
49 | }
50 | .prev {
51 | left: -100%;
52 | }
53 | .next.left,
54 | .prev.right {
55 | left: 0;
56 | }
57 |
58 | .active.left {
59 | left: -100%;
60 | }
61 | .active.right {
62 | left: 100%;
63 | }
64 |
65 | }
66 |
67 | // Left/right controls for nav
68 | // ---------------------------
69 |
70 | .carousel-control {
71 | position: absolute;
72 | top: 40%;
73 | left: 15px;
74 | width: 40px;
75 | height: 40px;
76 | margin-top: -20px;
77 | font-size: 60px;
78 | font-weight: 100;
79 | line-height: 30px;
80 | color: $white;
81 | text-align: center;
82 | background: $grayDarker;
83 | border: 3px solid $white;
84 | @include border-radius(23px);
85 | @include opacity(50);
86 |
87 | // we can't have this transition here
88 | // because webkit cancels the carousel
89 | // animation if you trip this while
90 | // in the middle of another animation
91 | // ;_;
92 | // .transition(opacity .2s linear);
93 |
94 | // Reposition the right one
95 | &.right {
96 | left: auto;
97 | right: 15px;
98 | }
99 |
100 | // Hover state
101 | &:hover {
102 | color: $white;
103 | text-decoration: none;
104 | @include opacity(90);
105 | }
106 | }
107 |
108 |
109 | // Caption for text below images
110 | // -----------------------------
111 |
112 | .carousel-caption {
113 | position: absolute;
114 | left: 0;
115 | right: 0;
116 | bottom: 0;
117 | padding: 15px;
118 | background: $grayDark;
119 | background: rgba(0,0,0,.75);
120 | }
121 | .carousel-caption h4,
122 | .carousel-caption p {
123 | color: $white;
124 | line-height: $baseLineHeight;
125 | }
126 | .carousel-caption h4 {
127 | margin: 0 0 5px;
128 | }
129 | .carousel-caption p {
130 | margin-bottom: 0;
131 | }
132 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/f64cf7f2.bootstrap-alert.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-alert.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#alerts
4 | * ==========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* ALERT CLASS DEFINITION
27 | * ====================== */
28 |
29 | var dismiss = '[data-dismiss="alert"]'
30 | , Alert = function (el) {
31 | $(el).on('click', dismiss, this.close)
32 | }
33 |
34 | Alert.prototype.close = function (e) {
35 | var $this = $(this)
36 | , selector = $this.attr('data-target')
37 | , $parent
38 |
39 | if (!selector) {
40 | selector = $this.attr('href')
41 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
42 | }
43 |
44 | $parent = $(selector)
45 |
46 | e && e.preventDefault()
47 |
48 | $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
49 |
50 | $parent.trigger(e = $.Event('close'))
51 |
52 | if (e.isDefaultPrevented()) return
53 |
54 | $parent.removeClass('in')
55 |
56 | function removeElement() {
57 | $parent
58 | .trigger('closed')
59 | .remove()
60 | }
61 |
62 | $.support.transition && $parent.hasClass('fade') ?
63 | $parent.on($.support.transition.end, removeElement) :
64 | removeElement()
65 | }
66 |
67 |
68 | /* ALERT PLUGIN DEFINITION
69 | * ======================= */
70 |
71 | $.fn.alert = function (option) {
72 | return this.each(function () {
73 | var $this = $(this)
74 | , data = $this.data('alert')
75 | if (!data) $this.data('alert', (data = new Alert(this)))
76 | if (typeof option == 'string') data[option].call($this)
77 | })
78 | }
79 |
80 | $.fn.alert.Constructor = Alert
81 |
82 |
83 | /* ALERT DATA-API
84 | * ============== */
85 |
86 | $(function () {
87 | $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
88 | })
89 |
90 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/81453238.bootstrap-button.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-button.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#buttons
4 | * ============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* BUTTON PUBLIC CLASS DEFINITION
27 | * ============================== */
28 |
29 | var Button = function (element, options) {
30 | this.$element = $(element)
31 | this.options = $.extend({}, $.fn.button.defaults, options)
32 | }
33 |
34 | Button.prototype.setState = function (state) {
35 | var d = 'disabled'
36 | , $el = this.$element
37 | , data = $el.data()
38 | , val = $el.is('input') ? 'val' : 'html'
39 |
40 | state = state + 'Text'
41 | data.resetText || $el.data('resetText', $el[val]())
42 |
43 | $el[val](data[state] || this.options[state])
44 |
45 | // push to event loop to allow forms to submit
46 | setTimeout(function () {
47 | state == 'loadingText' ?
48 | $el.addClass(d).attr(d, d) :
49 | $el.removeClass(d).removeAttr(d)
50 | }, 0)
51 | }
52 |
53 | Button.prototype.toggle = function () {
54 | var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
55 |
56 | $parent && $parent
57 | .find('.active')
58 | .removeClass('active')
59 |
60 | this.$element.toggleClass('active')
61 | }
62 |
63 |
64 | /* BUTTON PLUGIN DEFINITION
65 | * ======================== */
66 |
67 | $.fn.button = function (option) {
68 | return this.each(function () {
69 | var $this = $(this)
70 | , data = $this.data('button')
71 | , options = typeof option == 'object' && option
72 | if (!data) $this.data('button', (data = new Button(this, options)))
73 | if (option == 'toggle') data.toggle()
74 | else if (option) data.setState(option)
75 | })
76 | }
77 |
78 | $.fn.button.defaults = {
79 | loadingText: 'loading...'
80 | }
81 |
82 | $.fn.button.Constructor = Button
83 |
84 |
85 | /* BUTTON DATA-API
86 | * =============== */
87 |
88 | $(function () {
89 | $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
90 | var $btn = $(e.target)
91 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
92 | $btn.button('toggle')
93 | })
94 | })
95 |
96 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_reset.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Reset
3 | // Adapted from http://github.com/necolas/normalize.css
4 | // --------------------------------------------------
5 |
6 | // Display in IE6-9 and FF3
7 | // -------------------------
8 |
9 | article,
10 | aside,
11 | details,
12 | figcaption,
13 | figure,
14 | footer,
15 | header,
16 | hgroup,
17 | nav,
18 | section {
19 | display: block;
20 | }
21 |
22 | // Display block in IE6-9 and FF3
23 | // -------------------------
24 |
25 | audio,
26 | canvas,
27 | video {
28 | display: inline-block;
29 | *display: inline;
30 | *zoom: 1;
31 | }
32 |
33 | // Prevents modern browsers from displaying 'audio' without controls
34 | // -------------------------
35 |
36 | audio:not([controls]) {
37 | display: none;
38 | }
39 |
40 | // Base settings
41 | // -------------------------
42 |
43 | html {
44 | font-size: 100%;
45 | -webkit-text-size-adjust: 100%;
46 | -ms-text-size-adjust: 100%;
47 | }
48 | // Focus states
49 | a:focus {
50 | @include tab-focus();
51 | }
52 | // Hover & Active
53 | a:hover,
54 | a:active {
55 | outline: 0;
56 | }
57 |
58 | // Prevents sub and sup affecting line-height in all browsers
59 | // -------------------------
60 |
61 | sub,
62 | sup {
63 | position: relative;
64 | font-size: 75%;
65 | line-height: 0;
66 | vertical-align: baseline;
67 | }
68 | sup {
69 | top: -0.5em;
70 | }
71 | sub {
72 | bottom: -0.25em;
73 | }
74 |
75 | // Img border in a's and image quality
76 | // -------------------------
77 |
78 | img {
79 | max-width: 100%; // Make images inherently responsive
80 | height: auto; // Make images inherently responsive
81 | vertical-align: middle;
82 | border: 0;
83 | -ms-interpolation-mode: bicubic;
84 | }
85 |
86 | // Prevent max-width from affecting Google Maps
87 | #mapCanvas label { width: auto; display:inline; }
88 | #mapCanvas img { max-width: none; }
89 |
90 | // Forms
91 | // -------------------------
92 |
93 | // Font size in all browsers, margin changes, misc consistency
94 | button,
95 | input,
96 | select,
97 | textarea {
98 | margin: 0;
99 | font-size: 100%;
100 | vertical-align: middle;
101 | }
102 | button,
103 | input {
104 | *overflow: visible; // Inner spacing ie IE6/7
105 | line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
106 | }
107 | button::-moz-focus-inner,
108 | input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
109 | padding: 0;
110 | border: 0;
111 | }
112 | button,
113 | input[type="button"],
114 | input[type="reset"],
115 | input[type="submit"] {
116 | cursor: pointer; // Cursors on all buttons applied consistently
117 | -webkit-appearance: button; // Style clickable inputs in iOS
118 | }
119 | input[type="search"] { // Appearance in Safari/Chrome
120 | -webkit-box-sizing: content-box;
121 | -moz-box-sizing: content-box;
122 | box-sizing: content-box;
123 | -webkit-appearance: textfield;
124 | }
125 | input[type="search"]::-webkit-search-decoration,
126 | input[type="search"]::-webkit-search-cancel-button {
127 | -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
128 | }
129 | textarea {
130 | overflow: auto; // Remove vertical scrollbar in IE6-9
131 | vertical-align: top; // Readability and alignment cross-browser
132 | }
133 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/e9a9c103.bootstrap-popover.js:
--------------------------------------------------------------------------------
1 | /* ===========================================================
2 | * bootstrap-popover.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#popovers
4 | * ===========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * =========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* POPOVER PUBLIC CLASS DEFINITION
27 | * =============================== */
28 |
29 | var Popover = function (element, options) {
30 | this.init('popover', element, options)
31 | }
32 |
33 |
34 | /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
35 | ========================================== */
36 |
37 | Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
38 |
39 | constructor: Popover
40 |
41 | , setContent: function () {
42 | var $tip = this.tip()
43 | , title = this.getTitle()
44 | , content = this.getContent()
45 |
46 | $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
47 | $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
48 |
49 | $tip.removeClass('fade top bottom left right in')
50 | }
51 |
52 | , hasContent: function () {
53 | return this.getTitle() || this.getContent()
54 | }
55 |
56 | , getContent: function () {
57 | var content
58 | , $e = this.$element
59 | , o = this.options
60 |
61 | content = $e.attr('data-content')
62 | || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
63 |
64 | return content
65 | }
66 |
67 | , tip: function () {
68 | if (!this.$tip) {
69 | this.$tip = $(this.options.template)
70 | }
71 | return this.$tip
72 | }
73 |
74 | , destroy: function () {
75 | this.hide().$element.off('.' + this.type).removeData(this.type)
76 | }
77 |
78 | })
79 |
80 |
81 | /* POPOVER PLUGIN DEFINITION
82 | * ======================= */
83 |
84 | $.fn.popover = function (option) {
85 | return this.each(function () {
86 | var $this = $(this)
87 | , data = $this.data('popover')
88 | , options = typeof option == 'object' && option
89 | if (!data) $this.data('popover', (data = new Popover(this, options)))
90 | if (typeof option == 'string') data[option]()
91 | })
92 | }
93 |
94 | $.fn.popover.Constructor = Popover
95 |
96 | $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
97 | placement: 'right'
98 | , trigger: 'click'
99 | , content: ''
100 | , template: ''
101 | })
102 |
103 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_progress-bars.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Progress bars
3 | // --------------------------------------------------
4 |
5 |
6 | // ANIMATIONS
7 | // ----------
8 |
9 | // Webkit
10 | @-webkit-keyframes progress-bar-stripes {
11 | from { background-position: 40px 0; }
12 | to { background-position: 0 0; }
13 | }
14 |
15 | // Firefox
16 | @-moz-keyframes progress-bar-stripes {
17 | from { background-position: 40px 0; }
18 | to { background-position: 0 0; }
19 | }
20 |
21 | // IE9
22 | @-ms-keyframes progress-bar-stripes {
23 | from { background-position: 40px 0; }
24 | to { background-position: 0 0; }
25 | }
26 |
27 | // Opera
28 | @-o-keyframes progress-bar-stripes {
29 | from { background-position: 0 0; }
30 | to { background-position: 40px 0; }
31 | }
32 |
33 | // Spec
34 | @keyframes progress-bar-stripes {
35 | from { background-position: 40px 0; }
36 | to { background-position: 0 0; }
37 | }
38 |
39 |
40 |
41 | // THE BARS
42 | // --------
43 |
44 | // Outer container
45 | .progress {
46 | overflow: hidden;
47 | height: $baseLineHeight;
48 | margin-bottom: $baseLineHeight;
49 | @include gradient-vertical(#f5f5f5, #f9f9f9);
50 | @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
51 | @include border-radius(4px);
52 | }
53 |
54 | // Bar of progress
55 | .progress .bar {
56 | width: 0%;
57 | height: 100%;
58 | color: $white;
59 | float: left;
60 | font-size: 12px;
61 | text-align: center;
62 | text-shadow: 0 -1px 0 rgba(0,0,0,.25);
63 | @include gradient-vertical(#149bdf, #0480be);
64 | @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
65 | @include box-sizing(border-box);
66 | @include transition(width .6s ease);
67 | }
68 | .progress .bar + .bar {
69 | @include box-shadow(#{inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)});
70 | }
71 |
72 | // Striped bars
73 | .progress-striped .bar {
74 | @include gradient-striped(#149bdf);
75 | @include background-size(40px 40px);
76 | }
77 |
78 | // Call animation for the active one
79 | .progress.active .bar {
80 | -webkit-animation: progress-bar-stripes 2s linear infinite;
81 | -moz-animation: progress-bar-stripes 2s linear infinite;
82 | -ms-animation: progress-bar-stripes 2s linear infinite;
83 | -o-animation: progress-bar-stripes 2s linear infinite;
84 | animation: progress-bar-stripes 2s linear infinite;
85 | }
86 |
87 |
88 |
89 | // COLORS
90 | // ------
91 |
92 | // Danger (red)
93 | .progress-danger .bar, .progress .bar-danger {
94 | @include gradient-vertical(#ee5f5b, #c43c35);
95 | }
96 | .progress-danger.progress-striped .bar, .progress-striped .bar-danger {
97 | @include gradient-striped(#ee5f5b);
98 | }
99 |
100 | // Success (green)
101 | .progress-success .bar, .progress .bar-success {
102 | @include gradient-vertical(#62c462, #57a957);
103 | }
104 | .progress-success.progress-striped .bar, .progress-striped .bar-success {
105 | @include gradient-striped(#62c462);
106 | }
107 |
108 | // Info (teal)
109 | .progress-info .bar, .progress .bar-info {
110 | @include gradient-vertical(#5bc0de, #339bb9);
111 | }
112 | .progress-info.progress-striped .bar, .progress-striped .bar-info {
113 | @include gradient-striped(#5bc0de);
114 | }
115 |
116 | // Warning (orange)
117 | .progress-warning .bar, .progress .bar-warning {
118 | @include gradient-vertical(lighten($orange, 15%), $orange);
119 | }
120 | .progress-warning.progress-striped .bar, .progress-striped .bar-warning {
121 | @include gradient-striped(lighten($orange, 15%));
122 | }
123 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_popovers.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Popovers
3 | // --------------------------------------------------
4 |
5 |
6 | .popover {
7 | position: absolute;
8 | top: 0;
9 | left: 0;
10 | z-index: $zindexPopover;
11 | display: none;
12 | width: 236px;
13 | padding: 1px;
14 | background-color: $popoverBackground;
15 | -webkit-background-clip: padding-box;
16 | -moz-background-clip: padding;
17 | background-clip: padding-box;
18 | border: 1px solid #ccc;
19 | border: 1px solid rgba(0,0,0,.2);
20 | @include border-radius(6px);
21 | @include box-shadow(0 5px 10px rgba(0,0,0,.2));
22 |
23 | // Offset the popover to account for the popover arrow
24 | &.top { margin-bottom: 10px; }
25 | &.right { margin-left: 10px; }
26 | &.bottom { margin-top: 10px; }
27 | &.left { margin-right: 10px; }
28 |
29 | }
30 |
31 | .popover-title {
32 | margin: 0; // reset heading margin
33 | padding: 8px 14px;
34 | font-size: 14px;
35 | font-weight: normal;
36 | line-height: 18px;
37 | background-color: $popoverTitleBackground;
38 | border-bottom: 1px solid darken($popoverTitleBackground, 5%);
39 | @include border-radius(5px 5px 0 0);
40 | }
41 |
42 | .popover-content {
43 | padding: 9px 14px;
44 | p, ul, ol {
45 | margin-bottom: 0;
46 | }
47 | }
48 |
49 | // Arrows
50 | .popover .arrow,
51 | .popover .arrow:after {
52 | position: absolute;
53 | display: inline-block;
54 | width: 0;
55 | height: 0;
56 | border-color: transparent;
57 | border-style: solid;
58 | }
59 | .popover .arrow:after {
60 | content: "";
61 | z-index: -1;
62 | }
63 |
64 | .popover {
65 | &.top .arrow {
66 | bottom: -$popoverArrowWidth;
67 | left: 50%;
68 | margin-left: -$popoverArrowWidth;
69 | border-width: $popoverArrowWidth $popoverArrowWidth 0;
70 | border-top-color: $popoverArrowColor;
71 | &:after {
72 | border-width: $popoverArrowOuterWidth $popoverArrowOuterWidth 0;
73 | border-top-color: $popoverArrowOuterColor;
74 | bottom: -1px;
75 | left: -$popoverArrowOuterWidth;
76 | }
77 | }
78 | &.right .arrow {
79 | top: 50%;
80 | left: -$popoverArrowWidth;
81 | margin-top: -$popoverArrowWidth;
82 | border-width: $popoverArrowWidth $popoverArrowWidth $popoverArrowWidth 0;
83 | border-right-color: $popoverArrowColor;
84 | &:after {
85 | border-width: $popoverArrowOuterWidth $popoverArrowOuterWidth $popoverArrowOuterWidth 0;
86 | border-right-color: $popoverArrowOuterColor;
87 | bottom: -$popoverArrowOuterWidth;
88 | left: -1px;
89 | }
90 | }
91 | &.bottom .arrow {
92 | top: -$popoverArrowWidth;
93 | left: 50%;
94 | margin-left: -$popoverArrowWidth;
95 | border-width: 0 $popoverArrowWidth $popoverArrowWidth;
96 | border-bottom-color: $popoverArrowColor;
97 | &:after {
98 | border-width: 0 $popoverArrowOuterWidth $popoverArrowOuterWidth;
99 | border-bottom-color: $popoverArrowOuterColor;
100 | top: -1px;
101 | left: -$popoverArrowOuterWidth;
102 | }
103 | }
104 | &.left .arrow {
105 | top: 50%;
106 | right: -$popoverArrowWidth;
107 | margin-top: -$popoverArrowWidth;
108 | border-width: $popoverArrowWidth 0 $popoverArrowWidth $popoverArrowWidth;
109 | border-left-color: $popoverArrowColor;
110 | &:after {
111 | border-width: $popoverArrowOuterWidth 0 $popoverArrowOuterWidth $popoverArrowOuterWidth;
112 | border-left-color: $popoverArrowOuterColor;
113 | bottom: -$popoverArrowOuterWidth;
114 | right: -1px;
115 | }
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/39af607e.bootstrap-affix.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-affix.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#affix
4 | * ==========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* AFFIX CLASS DEFINITION
27 | * ====================== */
28 |
29 | var Affix = function (element, options) {
30 | this.options = $.extend({}, $.fn.affix.defaults, options)
31 | this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
32 | this.$element = $(element)
33 | this.checkPosition()
34 | }
35 |
36 | Affix.prototype.checkPosition = function () {
37 | if (!this.$element.is(':visible')) return
38 |
39 | var scrollHeight = $(document).height()
40 | , scrollTop = this.$window.scrollTop()
41 | , position = this.$element.offset()
42 | , offset = this.options.offset
43 | , offsetBottom = offset.bottom
44 | , offsetTop = offset.top
45 | , reset = 'affix affix-top affix-bottom'
46 | , affix
47 |
48 | if (typeof offset != 'object') offsetBottom = offsetTop = offset
49 | if (typeof offsetTop == 'function') offsetTop = offset.top()
50 | if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
51 |
52 | affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
53 | false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
54 | 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
55 | 'top' : false
56 |
57 | if (this.affixed === affix) return
58 |
59 | this.affixed = affix
60 | this.unpin = affix == 'bottom' ? position.top - scrollTop : null
61 |
62 | this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
63 | }
64 |
65 |
66 | /* AFFIX PLUGIN DEFINITION
67 | * ======================= */
68 |
69 | $.fn.affix = function (option) {
70 | return this.each(function () {
71 | var $this = $(this)
72 | , data = $this.data('affix')
73 | , options = typeof option == 'object' && option
74 | if (!data) $this.data('affix', (data = new Affix(this, options)))
75 | if (typeof option == 'string') data[option]()
76 | })
77 | }
78 |
79 | $.fn.affix.Constructor = Affix
80 |
81 | $.fn.affix.defaults = {
82 | offset: 0
83 | }
84 |
85 |
86 | /* AFFIX DATA-API
87 | * ============== */
88 |
89 | $(window).on('load', function () {
90 | $('[data-spy="affix"]').each(function () {
91 | var $spy = $(this)
92 | , data = $spy.data()
93 |
94 | data.offset = data.offset || {}
95 |
96 | data.offsetBottom && (data.offset.bottom = data.offsetBottom)
97 | data.offsetTop && (data.offset.top = data.offsetTop)
98 |
99 | $spy.affix(data)
100 | })
101 | })
102 |
103 |
104 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/dab95585.bootstrap-tab.js:
--------------------------------------------------------------------------------
1 | /* ========================================================
2 | * bootstrap-tab.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#tabs
4 | * ========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ======================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* TAB CLASS DEFINITION
27 | * ==================== */
28 |
29 | var Tab = function (element) {
30 | this.element = $(element)
31 | }
32 |
33 | Tab.prototype = {
34 |
35 | constructor: Tab
36 |
37 | , show: function () {
38 | var $this = this.element
39 | , $ul = $this.closest('ul:not(.dropdown-menu)')
40 | , selector = $this.attr('data-target')
41 | , previous
42 | , $target
43 | , e
44 |
45 | if (!selector) {
46 | selector = $this.attr('href')
47 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
48 | }
49 |
50 | if ( $this.parent('li').hasClass('active') ) return
51 |
52 | previous = $ul.find('.active a').last()[0]
53 |
54 | e = $.Event('show', {
55 | relatedTarget: previous
56 | })
57 |
58 | $this.trigger(e)
59 |
60 | if (e.isDefaultPrevented()) return
61 |
62 | $target = $(selector)
63 |
64 | this.activate($this.parent('li'), $ul)
65 | this.activate($target, $target.parent(), function () {
66 | $this.trigger({
67 | type: 'shown'
68 | , relatedTarget: previous
69 | })
70 | })
71 | }
72 |
73 | , activate: function ( element, container, callback) {
74 | var $active = container.find('> .active')
75 | , transition = callback
76 | && $.support.transition
77 | && $active.hasClass('fade')
78 |
79 | function next() {
80 | $active
81 | .removeClass('active')
82 | .find('> .dropdown-menu > .active')
83 | .removeClass('active')
84 |
85 | element.addClass('active')
86 |
87 | if (transition) {
88 | element[0].offsetWidth // reflow for transition
89 | element.addClass('in')
90 | } else {
91 | element.removeClass('fade')
92 | }
93 |
94 | if ( element.parent('.dropdown-menu') ) {
95 | element.closest('li.dropdown').addClass('active')
96 | }
97 |
98 | callback && callback()
99 | }
100 |
101 | transition ?
102 | $active.one($.support.transition.end, next) :
103 | next()
104 |
105 | $active.removeClass('in')
106 | }
107 | }
108 |
109 |
110 | /* TAB PLUGIN DEFINITION
111 | * ===================== */
112 |
113 | $.fn.tab = function ( option ) {
114 | return this.each(function () {
115 | var $this = $(this)
116 | , data = $this.data('tab')
117 | if (!data) $this.data('tab', (data = new Tab(this)))
118 | if (typeof option == 'string') data[option]()
119 | })
120 | }
121 |
122 | $.fn.tab.Constructor = Tab
123 |
124 |
125 | /* TAB DATA-API
126 | * ============ */
127 |
128 | $(function () {
129 | $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
130 | e.preventDefault()
131 | $(this).tab('show')
132 | })
133 | })
134 |
135 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_responsive-767px-max.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Landscape phone to desktop/tablet
3 | // --------------------------------------------------
4 |
5 |
6 | @media (max-width: 767px) {
7 |
8 | // Padding to set content in a bit
9 | body {
10 | padding-left: 20px;
11 | padding-right: 20px;
12 | }
13 | // Negative indent the now static "fixed" navbar
14 | .navbar-fixed-top,
15 | .navbar-fixed-bottom {
16 | margin-left: -20px;
17 | margin-right: -20px;
18 | }
19 | // Remove padding on container given explicit padding set on body
20 | .container-fluid {
21 | padding: 0;
22 | }
23 |
24 | // TYPOGRAPHY
25 | // ----------
26 | // Reset horizontal dl
27 | .dl-horizontal {
28 | dt {
29 | float: none;
30 | clear: none;
31 | width: auto;
32 | text-align: left;
33 | }
34 | dd {
35 | margin-left: 0;
36 | }
37 | }
38 |
39 | // GRID & CONTAINERS
40 | // -----------------
41 | // Remove width from containers
42 | .container {
43 | width: auto;
44 | }
45 | // Fluid rows
46 | .row-fluid {
47 | width: 100%;
48 | }
49 | // Undo negative margin on rows and thumbnails
50 | .row,
51 | .thumbnails {
52 | margin-left: 0;
53 | }
54 | .thumbnails > li {
55 | float: none;
56 | margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
57 | }
58 | // Make all grid-sized elements block level again
59 | [class*="span"],
60 | .row-fluid [class*="span"] {
61 | float: none;
62 | display: block;
63 | width: auto;
64 | margin-left: 0;
65 | }
66 | .span12,
67 | .row-fluid .span12 {
68 | width: 100%;
69 | @include box-sizing(border-box);
70 | }
71 |
72 | // FORM FIELDS
73 | // -----------
74 | // Make span* classes full width
75 | .input-large,
76 | .input-xlarge,
77 | .input-xxlarge,
78 | input[class*="span"],
79 | select[class*="span"],
80 | textarea[class*="span"],
81 | .uneditable-input {
82 | @include input-block-level();
83 | }
84 | // But don't let it screw up prepend/append inputs
85 | .input-prepend input,
86 | .input-append input,
87 | .input-prepend input[class*="span"],
88 | .input-append input[class*="span"] {
89 | display: inline-block; // redeclare so they don't wrap to new lines
90 | width: auto;
91 | }
92 |
93 | // Modals
94 | .modal {
95 | position: fixed;
96 | top: 20px;
97 | left: 20px;
98 | right: 20px;
99 | width: auto;
100 | margin: 0;
101 | &.fade.in { top: auto; }
102 | }
103 |
104 | }
105 |
106 |
107 |
108 | // UP TO LANDSCAPE PHONE
109 | // ---------------------
110 |
111 | @media (max-width: 480px) {
112 |
113 | // Smooth out the collapsing/expanding nav
114 | .nav-collapse {
115 | -webkit-transform: translate3d(0, 0, 0); // activate the GPU
116 | }
117 |
118 | // Block level the page header small tag for readability
119 | .page-header h1 small {
120 | display: block;
121 | line-height: $baseLineHeight;
122 | }
123 |
124 | // Update checkboxes for iOS
125 | input[type="checkbox"],
126 | input[type="radio"] {
127 | border: 1px solid #ccc;
128 | }
129 |
130 | // Remove the horizontal form styles
131 | .form-horizontal .control-group > label {
132 | float: none;
133 | width: auto;
134 | padding-top: 0;
135 | text-align: left;
136 | }
137 | // Move over all input controls and content
138 | .form-horizontal .controls {
139 | margin-left: 0;
140 | }
141 | // Move the options list down to align with labels
142 | .form-horizontal .control-list {
143 | padding-top: 0; // has to be padding because margin collaspes
144 | }
145 | // Move over buttons in .form-actions to align with .controls
146 | .form-horizontal .form-actions {
147 | padding-left: 10px;
148 | padding-right: 10px;
149 | }
150 |
151 | // Modals
152 | .modal {
153 | top: 10px;
154 | left: 10px;
155 | right: 10px;
156 | }
157 | .modal-header .close {
158 | padding: 10px;
159 | margin: -10px;
160 | }
161 |
162 | // Carousel
163 | .carousel-caption {
164 | position: static;
165 | }
166 |
167 | }
168 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_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 navbar
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(4px);
79 | }
80 | .nav-collapse .dropdown-menu li + li a {
81 | margin-bottom: 2px;
82 | }
83 | .nav-collapse .nav > li > a:hover,
84 | .nav-collapse .dropdown-menu a:hover {
85 | background-color: $navbarBackground;
86 | }
87 | .navbar-inverse .nav-collapse .nav > li > a:hover,
88 | .navbar-inverse .nav-collapse .dropdown-menu a:hover {
89 | background-color: $navbarInverseBackground;
90 | }
91 | // Buttons in the navbar
92 | .nav-collapse.in .btn-group {
93 | margin-top: 5px;
94 | padding: 0;
95 | }
96 | // Dropdowns in the navbar
97 | .nav-collapse .dropdown-menu {
98 | position: static;
99 | top: auto;
100 | left: auto;
101 | float: none;
102 | display: block;
103 | max-width: none;
104 | margin: 0 15px;
105 | padding: 0;
106 | background-color: transparent;
107 | border: none;
108 | @include border-radius(0);
109 | @include box-shadow(none);
110 | }
111 | .nav-collapse .dropdown-menu:before,
112 | .nav-collapse .dropdown-menu:after {
113 | display: none;
114 | }
115 | .nav-collapse .dropdown-menu .divider {
116 | display: none;
117 | }
118 | // Forms in navbar
119 | .nav-collapse .navbar-form,
120 | .nav-collapse .navbar-search {
121 | float: none;
122 | padding: ($baseLineHeight / 2) 15px;
123 | margin: ($baseLineHeight / 2) 0;
124 | border-top: 1px solid $navbarBackground;
125 | border-bottom: 1px solid $navbarBackground;
126 | @include box-shadow(#{inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)});
127 | }
128 | // Pull right (secondary) nav content
129 | .navbar .nav-collapse .nav.pull-right {
130 | float: none;
131 | margin-left: 0;
132 | }
133 | // Hide everything in the navbar save .brand and toggle button */
134 | .nav-collapse,
135 | .nav-collapse.collapse {
136 | overflow: hidden;
137 | height: 0;
138 | }
139 | // Navbar button
140 | .navbar .btn-navbar {
141 | display: block;
142 | }
143 |
144 | // STATIC NAVBAR
145 | // -------------
146 | .navbar-static .navbar-inner {
147 | padding-left: 10px;
148 | padding-right: 10px;
149 | }
150 |
151 |
152 | }
153 |
154 |
155 | // DEFAULT DESKTOP
156 | // ---------------
157 |
158 | @media (min-width: 980px) {
159 |
160 | // Required to make the collapsing navbar work on regular desktops
161 | .nav-collapse.collapse {
162 | height: auto !important;
163 | overflow: visible !important;
164 | }
165 |
166 | }
167 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_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: 20px;
15 | font-weight: 200;
16 | line-height: $baseLineHeight * 1.5;
17 | }
18 |
19 |
20 | // Emphasis & misc
21 | // -------------------------
22 |
23 | small {
24 | font-size: 85%; // Ex: 14px base font * 85% = about 12px
25 | }
26 | strong {
27 | font-weight: bold;
28 | }
29 | em {
30 | font-style: italic;
31 | }
32 | cite {
33 | font-style: normal;
34 | }
35 | .muted {
36 | color: $grayLight;
37 | }
38 |
39 |
40 | // Headings
41 | // -------------------------
42 |
43 | h1, h2, h3, h4, h5, h6 {
44 | margin: ($baseLineHeight / 2) 0;
45 | font-family: $headingsFontFamily;
46 | font-weight: $headingsFontWeight;
47 | line-height: 1;
48 | color: $headingsColor;
49 | text-rendering: optimizelegibility; // Fix the character spacing for headings
50 | small {
51 | font-weight: normal;
52 | line-height: 1;
53 | color: $grayLight;
54 | }
55 | }
56 | h1 { font-size: 36px; line-height: 40px; }
57 | h2 { font-size: 30px; line-height: 40px; }
58 | h3 { font-size: 24px; line-height: 40px; }
59 | h4 { font-size: 18px; line-height: 20px; }
60 | h5 { font-size: 14px; line-height: 20px; }
61 | h6 { font-size: 12px; line-height: 20px; }
62 |
63 | h1 small { font-size: 24px; }
64 | h2 small { font-size: 18px; }
65 | h3 small { font-size: 14px; }
66 | h4 small { font-size: 14px; }
67 |
68 |
69 | // Page header
70 | // -------------------------
71 |
72 | .page-header {
73 | padding-bottom: ($baseLineHeight / 2) - 1;
74 | margin: $baseLineHeight 0 ($baseLineHeight * 1.5);
75 | border-bottom: 1px solid $grayLighter;
76 | }
77 |
78 |
79 |
80 | // Lists
81 | // --------------------------------------------------
82 |
83 | // Unordered and Ordered lists
84 | ul, ol {
85 | padding: 0;
86 | margin: 0 0 $baseLineHeight / 2 25px;
87 | }
88 | ul ul,
89 | ul ol,
90 | ol ol,
91 | ol ul {
92 | margin-bottom: 0;
93 | }
94 | li {
95 | line-height: $baseLineHeight;
96 | }
97 | ul.unstyled,
98 | ol.unstyled {
99 | margin-left: 0;
100 | list-style: none;
101 | }
102 |
103 | // Description Lists
104 | dl {
105 | margin-bottom: $baseLineHeight;
106 | }
107 | dt,
108 | dd {
109 | line-height: $baseLineHeight;
110 | }
111 | dt {
112 | font-weight: bold;
113 | }
114 | dd {
115 | margin-left: $baseLineHeight / 2;
116 | }
117 | // Horizontal layout (like forms)
118 | .dl-horizontal {
119 | dt {
120 | float: left;
121 | width: 120px;
122 | clear: left;
123 | text-align: right;
124 | @include text-overflow();
125 | }
126 | dd {
127 | margin-left: 130px;
128 | }
129 | }
130 |
131 | // MISC
132 | // ----
133 |
134 | // Horizontal rules
135 | hr {
136 | margin: $baseLineHeight 0;
137 | border: 0;
138 | border-top: 1px solid $hrBorder;
139 | border-bottom: 1px solid $white;
140 | }
141 |
142 | // Abbreviations and acronyms
143 | abbr[title] {
144 | cursor: help;
145 | border-bottom: 1px dotted $grayLight;
146 | }
147 | abbr.initialism {
148 | font-size: 90%;
149 | text-transform: uppercase;
150 | }
151 |
152 | // Blockquotes
153 | blockquote {
154 | padding: 0 0 0 15px;
155 | margin: 0 0 $baseLineHeight;
156 | border-left: 5px solid $grayLighter;
157 | p {
158 | margin-bottom: 0;
159 | @include font-shorthand(16px,300,$baseLineHeight * 1.25);
160 | }
161 | small {
162 | display: block;
163 | line-height: $baseLineHeight;
164 | color: $grayLight;
165 | &:before {
166 | content: '\2014 \00A0';
167 | }
168 | }
169 |
170 | // Float right with text-align: right
171 | &.pull-right {
172 | float: right;
173 | padding-right: 15px;
174 | padding-left: 0;
175 | border-right: 5px solid $grayLighter;
176 | border-left: 0;
177 | p,
178 | small {
179 | text-align: right;
180 | }
181 | small {
182 | &:before {
183 | content: '';
184 | }
185 | &:after {
186 | content: '\00A0 \2014';
187 | }
188 | }
189 | }
190 | }
191 |
192 | // Quotes
193 | q:before,
194 | q:after,
195 | blockquote:before,
196 | blockquote:after {
197 | content: "";
198 | }
199 |
200 | // Addresses
201 | address {
202 | display: block;
203 | margin-bottom: $baseLineHeight;
204 | font-style: normal;
205 | line-height: $baseLineHeight;
206 | }
207 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/6e43b0d0.bootstrap-dropdown.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-dropdown.js v2.1.0
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 | $this.focus()
57 | }
58 |
59 | return false
60 | }
61 |
62 | , keydown: function (e) {
63 | var $this
64 | , $items
65 | , $active
66 | , $parent
67 | , isActive
68 | , index
69 |
70 | if (!/(38|40|27)/.test(e.keyCode)) return
71 |
72 | $this = $(this)
73 |
74 | e.preventDefault()
75 | e.stopPropagation()
76 |
77 | if ($this.is('.disabled, :disabled')) return
78 |
79 | $parent = getParent($this)
80 |
81 | isActive = $parent.hasClass('open')
82 |
83 | if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
84 |
85 | $items = $('[role=menu] li:not(.divider) a', $parent)
86 |
87 | if (!$items.length) return
88 |
89 | index = $items.index($items.filter(':focus'))
90 |
91 | if (e.keyCode == 38 && index > 0) index-- // up
92 | if (e.keyCode == 40 && index < $items.length - 1) index++ // down
93 | if (!~index) index = 0
94 |
95 | $items
96 | .eq(index)
97 | .focus()
98 | }
99 |
100 | }
101 |
102 | function clearMenus() {
103 | getParent($(toggle))
104 | .removeClass('open')
105 | }
106 |
107 | function getParent($this) {
108 | var selector = $this.attr('data-target')
109 | , $parent
110 |
111 | if (!selector) {
112 | selector = $this.attr('href')
113 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
114 | }
115 |
116 | $parent = $(selector)
117 | $parent.length || ($parent = $this.parent())
118 |
119 | return $parent
120 | }
121 |
122 |
123 | /* DROPDOWN PLUGIN DEFINITION
124 | * ========================== */
125 |
126 | $.fn.dropdown = function (option) {
127 | return this.each(function () {
128 | var $this = $(this)
129 | , data = $this.data('dropdown')
130 | if (!data) $this.data('dropdown', (data = new Dropdown(this)))
131 | if (typeof option == 'string') data[option].call($this)
132 | })
133 | }
134 |
135 | $.fn.dropdown.Constructor = Dropdown
136 |
137 |
138 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
139 | * =================================== */
140 |
141 | $(function () {
142 | $('html')
143 | .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
144 | $('body')
145 | .on('click.dropdown touchstart.dropdown.data-api', '.dropdown', function (e) { e.stopPropagation() })
146 | .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
147 | .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
148 | })
149 |
150 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/437cd036.bootstrap-scrollspy.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-scrollspy.js v2.1.0
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, 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 | $.fn.scrollspy = function (option) {
125 | return this.each(function () {
126 | var $this = $(this)
127 | , data = $this.data('scrollspy')
128 | , options = typeof option == 'object' && option
129 | if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
130 | if (typeof option == 'string') data[option]()
131 | })
132 | }
133 |
134 | $.fn.scrollspy.Constructor = ScrollSpy
135 |
136 | $.fn.scrollspy.defaults = {
137 | offset: 10
138 | }
139 |
140 |
141 | /* SCROLLSPY DATA-API
142 | * ================== */
143 |
144 | $(window).on('load', function () {
145 | $('[data-spy="scroll"]').each(function () {
146 | var $spy = $(this)
147 | $spy.scrollspy($spy.data())
148 | })
149 | })
150 |
151 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Page Not Found :(
6 |
141 |
142 |
143 |
144 |
Not found :(
145 |
Sorry, but the page you were trying to view does not exist.
146 |
It looks like this was the result of either:
147 |
148 | - a mistyped address
149 | - an out-of-date link
150 |
151 |
154 |
155 |
156 |
157 |
158 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/810e2170.bootstrap-collapse.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-collapse.js v2.1.0
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) 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) 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 | /* COLLAPSIBLE PLUGIN DEFINITION
124 | * ============================== */
125 |
126 | $.fn.collapse = function (option) {
127 | return this.each(function () {
128 | var $this = $(this)
129 | , data = $this.data('collapse')
130 | , options = typeof option == 'object' && option
131 | if (!data) $this.data('collapse', (data = new Collapse(this, options)))
132 | if (typeof option == 'string') data[option]()
133 | })
134 | }
135 |
136 | $.fn.collapse.defaults = {
137 | toggle: true
138 | }
139 |
140 | $.fn.collapse.Constructor = Collapse
141 |
142 |
143 | /* COLLAPSIBLE DATA-API
144 | * ==================== */
145 |
146 | $(function () {
147 | $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
148 | var $this = $(this), href
149 | , target = $this.attr('data-target')
150 | || e.preventDefault()
151 | || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
152 | , option = $(target).data('collapse') ? 'toggle' : $this.data()
153 | $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
154 | $(target).collapse(option)
155 | })
156 | })
157 |
158 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_dropdowns.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Dropdown menus
3 | // --------------------------------------------------
4 |
5 |
6 | // Use the .menu class on any element within the topbar or ul.tabs and you'll get some superfancy dropdowns
7 | .dropup,
8 | .dropdown {
9 | position: relative;
10 | }
11 | .dropdown-toggle {
12 | // The caret makes the toggle a bit too tall in IE7
13 | *margin-bottom: -3px;
14 | }
15 | .dropdown-toggle:active,
16 | .open .dropdown-toggle {
17 | outline: 0;
18 | }
19 |
20 | // Dropdown arrow/caret
21 | // --------------------
22 | .caret {
23 | display: inline-block;
24 | width: 0;
25 | height: 0;
26 | vertical-align: top;
27 | border-top: 4px solid $black;
28 | border-right: 4px solid transparent;
29 | border-left: 4px solid transparent;
30 | content: "";
31 | }
32 |
33 | // Place the caret
34 | .dropdown .caret {
35 | margin-top: 8px;
36 | margin-left: 2px;
37 | }
38 |
39 | // The dropdown menu (ul)
40 | // ----------------------
41 | .dropdown-menu {
42 | position: absolute;
43 | top: 100%;
44 | left: 0;
45 | z-index: $zindexDropdown;
46 | display: none; // none by default, but block on "open" of the menu
47 | float: left;
48 | min-width: 160px;
49 | padding: 5px 0;
50 | margin: 2px 0 0; // override default ul
51 | list-style: none;
52 | background-color: $dropdownBackground;
53 | border: 1px solid #ccc; // Fallback for IE7-8
54 | border: 1px solid $dropdownBorder;
55 | *border-right-width: 2px;
56 | *border-bottom-width: 2px;
57 | @include border-radius(6px);
58 | @include box-shadow(0 5px 10px rgba(0,0,0,.2));
59 | -webkit-background-clip: padding-box;
60 | -moz-background-clip: padding;
61 | background-clip: padding-box;
62 |
63 | // Aligns the dropdown menu to right
64 | &.pull-right {
65 | right: 0;
66 | left: auto;
67 | }
68 |
69 | // Dividers (basically an hr) within the dropdown
70 | .divider {
71 | @include nav-divider();
72 | }
73 |
74 | // Links within the dropdown menu
75 | a {
76 | display: block;
77 | padding: 3px 20px;
78 | clear: both;
79 | font-weight: normal;
80 | line-height: $baseLineHeight;
81 | color: $dropdownLinkColor;
82 | white-space: nowrap;
83 | }
84 | }
85 |
86 | // Hover state
87 | // -----------
88 | .dropdown-menu li > a:hover,
89 | .dropdown-menu li > a:focus,
90 | .dropdown-submenu:hover > a {
91 | text-decoration: none;
92 | color: $dropdownLinkColorHover;
93 | background-color: $dropdownLinkBackgroundHover;
94 | @include gradient-vertical($dropdownLinkBackgroundHover, darken($dropdownLinkBackgroundHover, 5%));
95 | }
96 |
97 | // Active state
98 | // ------------
99 | .dropdown-menu .active > a,
100 | .dropdown-menu .active > a:hover {
101 | color: $dropdownLinkColorHover;
102 | text-decoration: none;
103 | outline: 0;
104 | background-color: $dropdownLinkBackgroundActive;
105 | @include gradient-vertical($dropdownLinkBackgroundActive, darken($dropdownLinkBackgroundActive, 5%));
106 | }
107 |
108 | // Disabled state
109 | // --------------
110 | // Gray out text and ensure the hover state remains gray
111 | .dropdown-menu .disabled > a,
112 | .dropdown-menu .disabled > a:hover {
113 | color: $grayLight;
114 | }
115 | // Nuke hover effects
116 | .dropdown-menu .disabled > a:hover {
117 | text-decoration: none;
118 | background-color: transparent;
119 | cursor: default;
120 | }
121 |
122 | // Open state for the dropdown
123 | // ---------------------------
124 | .open {
125 | // IE7's z-index only goes to the nearest positioned ancestor, which would
126 | // make the menu appear below buttons that appeared later on the page
127 | *z-index: $zindexDropdown;
128 |
129 | & > .dropdown-menu {
130 | display: block;
131 | }
132 | }
133 |
134 | // Right aligned dropdowns
135 | // ---------------------------
136 | .pull-right > .dropdown-menu {
137 | right: 0;
138 | left: auto;
139 | }
140 |
141 | // Allow for dropdowns to go bottom up (aka, dropup-menu)
142 | // ------------------------------------------------------
143 | // Just add .dropup after the standard .dropdown class and you're set, bro.
144 | // TODO: abstract this so that the navbar fixed styles are not placed here?
145 | .dropup,
146 | .navbar-fixed-bottom .dropdown {
147 | // Reverse the caret
148 | .caret {
149 | border-top: 0;
150 | border-bottom: 4px solid $black;
151 | content: "\2191";
152 | }
153 | // Different positioning for bottom up menu
154 | .dropdown-menu {
155 | top: auto;
156 | bottom: 100%;
157 | margin-bottom: 1px;
158 | }
159 | }
160 |
161 | // Sub menus
162 | // ---------------------------
163 | .dropdown-submenu {
164 | position: relative;
165 | }
166 | .dropdown-submenu > .dropdown-menu {
167 | top: 0;
168 | left: 100%;
169 | margin-top: -6px;
170 | margin-left: -1px;
171 | -webkit-border-radius: 0 6px 6px 6px;
172 | -moz-border-radius: 0 6px 6px 6px;
173 | border-radius: 0 6px 6px 6px;
174 | }
175 | .dropdown-submenu:hover .dropdown-menu {
176 | display: block;
177 | }
178 |
179 | .dropdown-submenu > a:after {
180 | display: block;
181 | content: " ";
182 | float: right;
183 | width: 0;
184 | height: 0;
185 | border-color: transparent;
186 | border-style: solid;
187 | border-width: 5px 0 5px 5px;
188 | border-left-color: darken($dropdownBackground, 20%);
189 | margin-top: 5px;
190 | margin-right: -10px;
191 | }
192 | .dropdown-submenu:hover > a:after {
193 | border-left-color: $dropdownLinkColorHover;
194 | }
195 |
196 |
197 | // Tweak nav headers
198 | // -----------------
199 | // Increase padding from 15px to 20px on sides
200 | .dropdown .dropdown-menu .nav-header {
201 | padding-left: 20px;
202 | padding-right: 20px;
203 | }
204 |
205 | // Typeahead
206 | // ---------
207 | .typeahead {
208 | margin-top: 2px; // give it some space to breathe
209 | @include border-radius(4px);
210 | }
211 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_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 14px;
14 | margin-bottom: 0; // For input.btn
15 | font-size: $baseFontSize;
16 | line-height: $baseLineHeight;
17 | *line-height: $baseLineHeight;
18 | text-align: center;
19 | vertical-align: middle;
20 | cursor: pointer;
21 | @include buttonBackground($btnBackground, $btnBackgroundHighlight, $grayDark, 0 1px 1px rgba(255,255,255,.75));
22 | border: 1px solid $btnBorder;
23 | *border: 0; // Remove the border to prevent IE7's black border on input:focus
24 | border-bottom-color: darken($btnBorder, 10%);
25 | @include border-radius(4px);
26 | @include ie7-restore-left-whitespace(); // Give IE7 some love
27 | @include box-shadow(#{inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)});
28 |
29 | // Hover state
30 | &:hover {
31 | color: $grayDark;
32 | text-decoration: none;
33 | background-color: darken($white, 10%);
34 | *background-color: darken($white, 15%); /* Buttons in IE7 don't get borders, so darken on hover */
35 | background-position: 0 -15px;
36 |
37 | // transition is only when going to hover, otherwise the background
38 | // behind the gradient (there for IE<=9 fallback) gets mismatched
39 | @include transition(background-position .1s linear);
40 | }
41 |
42 | // Focus state for keyboard and accessibility
43 | &:focus {
44 | @include tab-focus();
45 | }
46 |
47 | // Active state
48 | &.active,
49 | &:active {
50 | background-color: darken($white, 10%);
51 | background-color: darken($white, 15%) \9;
52 | background-image: none;
53 | outline: 0;
54 | @include box-shadow(#{inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)});
55 | }
56 |
57 | // Disabled state
58 | &.disabled,
59 | &[disabled] {
60 | cursor: default;
61 | background-color: darken($white, 10%);
62 | background-image: none;
63 | @include opacity(65);
64 | @include box-shadow(none);
65 | }
66 |
67 | }
68 |
69 |
70 |
71 | // Button Sizes
72 | // --------------------------------------------------
73 |
74 | // Large
75 | .btn-large {
76 | padding: 9px 14px;
77 | font-size: $baseFontSize + 2px;
78 | line-height: normal;
79 | @include border-radius(5px);
80 | }
81 | .btn-large [class^="icon-"] {
82 | margin-top: 2px;
83 | }
84 |
85 | // Small
86 | .btn-small {
87 | padding: 3px 9px;
88 | font-size: $baseFontSize - 2px;
89 | line-height: $baseLineHeight - 2px;
90 | }
91 | .btn-small [class^="icon-"] {
92 | margin-top: 0px;
93 | }
94 |
95 | // Mini
96 | .btn-mini {
97 | padding: 2px 6px;
98 | font-size: $baseFontSize - 3px;
99 | line-height: $baseLineHeight - 4px;
100 | }
101 |
102 | // Block button
103 | .btn-block {
104 | display: block;
105 | width: 100%;
106 | padding-left: 0;
107 | padding-right: 0;
108 | @include box-sizing(border-box);
109 | }
110 | .btn-block + .btn-block {
111 | margin-top: 5px;
112 | }
113 |
114 |
115 | // Alternate buttons
116 | // --------------------------------------------------
117 |
118 | // Provide *some* extra contrast for those who can get it
119 | .btn-primary.active,
120 | .btn-warning.active,
121 | .btn-danger.active,
122 | .btn-success.active,
123 | .btn-info.active,
124 | .btn-inverse.active {
125 | color: rgba(255,255,255,.75);
126 | }
127 |
128 | // Set the backgrounds
129 | // -------------------------
130 | .btn {
131 | // reset here as of 2.0.3 due to Recess property order
132 | border-color: #c5c5c5;
133 | border-color: rgba(0,0,0,.15) rgba(0,0,0,.15) rgba(0,0,0,.25);
134 | }
135 | .btn-primary {
136 | @include buttonBackground($btnPrimaryBackground, $btnPrimaryBackgroundHighlight);
137 | }
138 | // Warning appears are orange
139 | .btn-warning {
140 | @include buttonBackground($btnWarningBackground, $btnWarningBackgroundHighlight);
141 | }
142 | // Danger and error appear as red
143 | .btn-danger {
144 | @include buttonBackground($btnDangerBackground, $btnDangerBackgroundHighlight);
145 | }
146 | // Success appears as green
147 | .btn-success {
148 | @include buttonBackground($btnSuccessBackground, $btnSuccessBackgroundHighlight);
149 | }
150 | // Info appears as a neutral blue
151 | .btn-info {
152 | @include buttonBackground($btnInfoBackground, $btnInfoBackgroundHighlight);
153 | }
154 | // Inverse appears as dark gray
155 | .btn-inverse {
156 | @include buttonBackground($btnInverseBackground, $btnInverseBackgroundHighlight);
157 | }
158 |
159 |
160 | // Cross-browser Jank
161 | // --------------------------------------------------
162 |
163 | button.btn,
164 | input[type="submit"].btn {
165 |
166 | // Firefox 3.6 only I believe
167 | &::-moz-focus-inner {
168 | padding: 0;
169 | border: 0;
170 | }
171 |
172 | // IE7 has some default padding on button controls
173 | *padding-top: 3px;
174 | *padding-bottom: 3px;
175 | &.btn-large {
176 | *padding-top: 7px;
177 | *padding-bottom: 7px;
178 | }
179 | &.btn-small {
180 | *padding-top: 3px;
181 | *padding-bottom: 3px;
182 | }
183 | &.btn-mini {
184 | *padding-top: 1px;
185 | *padding-bottom: 1px;
186 | }
187 | }
188 |
189 |
190 | // Link buttons
191 | // --------------------------------------------------
192 |
193 | // Make a button look and behave like a link
194 | .btn-link,
195 | .btn-link:active {
196 | background-color: transparent;
197 | background-image: none;
198 | @include box-shadow(none);
199 | }
200 | .btn-link {
201 | border-color: transparent;
202 | cursor: pointer;
203 | color: $linkColor;
204 | @include border-radius(0);
205 | }
206 | .btn-link:hover {
207 | color: $linkColorHover;
208 | text-decoration: underline;
209 | background-color: transparent;
210 | }
211 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_tables.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Tables
3 | // --------------------------------------------------
4 |
5 |
6 | // BASE TABLES
7 | // -----------------
8 |
9 | table {
10 | max-width: 100%;
11 | background-color: $tableBackground;
12 | border-collapse: collapse;
13 | border-spacing: 0;
14 | }
15 |
16 | // BASELINE STYLES
17 | // ---------------
18 |
19 | .table {
20 | width: 100%;
21 | margin-bottom: $baseLineHeight;
22 | // Cells
23 | th,
24 | td {
25 | padding: 8px;
26 | line-height: $baseLineHeight;
27 | text-align: left;
28 | vertical-align: top;
29 | border-top: 1px solid $tableBorder;
30 | }
31 | th {
32 | font-weight: bold;
33 | }
34 | // Bottom align for column headings
35 | thead th {
36 | vertical-align: bottom;
37 | }
38 | // Remove top border from thead by default
39 | caption + thead tr:first-child th,
40 | caption + thead tr:first-child td,
41 | colgroup + thead tr:first-child th,
42 | colgroup + thead tr:first-child td,
43 | thead:first-child tr:first-child th,
44 | thead:first-child tr:first-child td {
45 | border-top: 0;
46 | }
47 | // Account for multiple tbody instances
48 | tbody + tbody {
49 | border-top: 2px solid $tableBorder;
50 | }
51 | }
52 |
53 |
54 |
55 | // CONDENSED TABLE W/ HALF PADDING
56 | // -------------------------------
57 |
58 | .table-condensed {
59 | th,
60 | td {
61 | padding: 4px 5px;
62 | }
63 | }
64 |
65 |
66 | // BORDERED VERSION
67 | // ----------------
68 |
69 | .table-bordered {
70 | border: 1px solid $tableBorder;
71 | border-collapse: separate; // Done so we can round those corners!
72 | *border-collapse: collapse; // IE7 can't round corners anyway
73 | border-left: 0;
74 | @include border-radius(4px);
75 | th,
76 | td {
77 | border-left: 1px solid $tableBorder;
78 | }
79 | // Prevent a double border
80 | caption + thead tr:first-child th,
81 | caption + tbody tr:first-child th,
82 | caption + tbody tr:first-child td,
83 | colgroup + thead tr:first-child th,
84 | colgroup + tbody tr:first-child th,
85 | colgroup + tbody tr:first-child td,
86 | thead:first-child tr:first-child th,
87 | tbody:first-child tr:first-child th,
88 | tbody:first-child tr:first-child td {
89 | border-top: 0;
90 | }
91 | // For first th or td in the first row in the first thead or tbody
92 | thead:first-child tr:first-child th:first-child,
93 | tbody:first-child tr:first-child td:first-child {
94 | -webkit-border-top-left-radius: 4px;
95 | border-top-left-radius: 4px;
96 | -moz-border-radius-topleft: 4px;
97 | }
98 | thead:first-child tr:first-child th:last-child,
99 | tbody:first-child tr:first-child td:last-child {
100 | -webkit-border-top-right-radius: 4px;
101 | border-top-right-radius: 4px;
102 | -moz-border-radius-topright: 4px;
103 | }
104 | // For first th or td in the first row in the first thead or tbody
105 | thead:last-child tr:last-child th:first-child,
106 | tbody:last-child tr:last-child td:first-child,
107 | tfoot:last-child tr:last-child td:first-child {
108 | @include border-radius(0 0 0 4px);
109 | -webkit-border-bottom-left-radius: 4px;
110 | border-bottom-left-radius: 4px;
111 | -moz-border-radius-bottomleft: 4px;
112 | }
113 | thead:last-child tr:last-child th:last-child,
114 | tbody:last-child tr:last-child td:last-child,
115 | tfoot:last-child tr:last-child td:last-child {
116 | -webkit-border-bottom-right-radius: 4px;
117 | border-bottom-right-radius: 4px;
118 | -moz-border-radius-bottomright: 4px;
119 | }
120 |
121 | // Special fixes to round the left border on the first td/th
122 | caption + thead tr:first-child th:first-child,
123 | caption + tbody tr:first-child td:first-child,
124 | colgroup + thead tr:first-child th:first-child,
125 | colgroup + tbody tr:first-child td:first-child {
126 | -webkit-border-top-left-radius: 4px;
127 | border-top-left-radius: 4px;
128 | -moz-border-radius-topleft: 4px;
129 | }
130 | caption + thead tr:first-child th:last-child,
131 | caption + tbody tr:first-child td:last-child,
132 | colgroup + thead tr:first-child th:last-child,
133 | colgroup + tbody tr:first-child td:last-child {
134 | -webkit-border-top-right-radius: 4px;
135 | border-top-right-radius: 4px;
136 | -moz-border-right-topleft: 4px;
137 | }
138 |
139 | }
140 |
141 |
142 | // ZEBRA-STRIPING
143 | // --------------
144 |
145 | // Default zebra-stripe styles (alternating gray and transparent backgrounds)
146 | .table-striped {
147 | tbody {
148 | tr:nth-child(odd) td,
149 | tr:nth-child(odd) th {
150 | background-color: $tableBackgroundAccent;
151 | }
152 | }
153 | }
154 |
155 |
156 | // HOVER EFFECT
157 | // ------------
158 | // Placed here since it has to come after the potential zebra striping
159 | .table-hover {
160 | tbody {
161 | tr:hover td,
162 | tr:hover th {
163 | background-color: $tableBackgroundHover;
164 | }
165 | }
166 | }
167 |
168 |
169 | // TABLE CELL SIZING
170 | // -----------------
171 |
172 | // Reset default grid behavior
173 | table [class*=span],
174 | .row-fluid table [class*=span] {
175 | display: table-cell;
176 | float: none; // undo default grid column styles
177 | margin-left: 0; // undo default grid column styles
178 | }
179 |
180 | // Change the column widths to account for td/th padding
181 | table {
182 | @for $i from 1 through 24 {
183 | .span#{$i} { @include tableColumns($i); }
184 | }
185 | }
186 |
187 |
188 | // TABLE BACKGROUNDS
189 | // -----------------
190 | // Exact selectors below required to override .table-striped
191 |
192 | .table {
193 | tbody tr.success td {
194 | background-color: $successBackground;
195 | }
196 | tbody tr.error td {
197 | background-color: $errorBackground;
198 | }
199 | tbody tr.info td {
200 | background-color: $infoBackground;
201 | }
202 | }
203 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/4a691926.bootstrap-carousel.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-carousel.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#carousel
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 | /* CAROUSEL CLASS DEFINITION
27 | * ========================= */
28 |
29 | var Carousel = function (element, options) {
30 | this.$element = $(element)
31 | this.options = options
32 | this.options.slide && this.slide(this.options.slide)
33 | this.options.pause == 'hover' && this.$element
34 | .on('mouseenter', $.proxy(this.pause, this))
35 | .on('mouseleave', $.proxy(this.cycle, this))
36 | }
37 |
38 | Carousel.prototype = {
39 |
40 | cycle: function (e) {
41 | if (!e) this.paused = false
42 | this.options.interval
43 | && !this.paused
44 | && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
45 | return this
46 | }
47 |
48 | , to: function (pos) {
49 | var $active = this.$element.find('.item.active')
50 | , children = $active.parent().children()
51 | , activePos = children.index($active)
52 | , that = this
53 |
54 | if (pos > (children.length - 1) || pos < 0) return
55 |
56 | if (this.sliding) {
57 | return this.$element.one('slid', function () {
58 | that.to(pos)
59 | })
60 | }
61 |
62 | if (activePos == pos) {
63 | return this.pause().cycle()
64 | }
65 |
66 | return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
67 | }
68 |
69 | , pause: function (e) {
70 | if (!e) this.paused = true
71 | if (this.$element.find('.next, .prev').length && $.support.transition.end) {
72 | this.$element.trigger($.support.transition.end)
73 | this.cycle()
74 | }
75 | clearInterval(this.interval)
76 | this.interval = null
77 | return this
78 | }
79 |
80 | , next: function () {
81 | if (this.sliding) return
82 | return this.slide('next')
83 | }
84 |
85 | , prev: function () {
86 | if (this.sliding) return
87 | return this.slide('prev')
88 | }
89 |
90 | , slide: function (type, next) {
91 | var $active = this.$element.find('.item.active')
92 | , $next = next || $active[type]()
93 | , isCycling = this.interval
94 | , direction = type == 'next' ? 'left' : 'right'
95 | , fallback = type == 'next' ? 'first' : 'last'
96 | , that = this
97 | , e = $.Event('slide', {
98 | relatedTarget: $next[0]
99 | })
100 |
101 | this.sliding = true
102 |
103 | isCycling && this.pause()
104 |
105 | $next = $next.length ? $next : this.$element.find('.item')[fallback]()
106 |
107 | if ($next.hasClass('active')) return
108 |
109 | if ($.support.transition && this.$element.hasClass('slide')) {
110 | this.$element.trigger(e)
111 | if (e.isDefaultPrevented()) return
112 | $next.addClass(type)
113 | $next[0].offsetWidth // force reflow
114 | $active.addClass(direction)
115 | $next.addClass(direction)
116 | this.$element.one($.support.transition.end, function () {
117 | $next.removeClass([type, direction].join(' ')).addClass('active')
118 | $active.removeClass(['active', direction].join(' '))
119 | that.sliding = false
120 | setTimeout(function () { that.$element.trigger('slid') }, 0)
121 | })
122 | } else {
123 | this.$element.trigger(e)
124 | if (e.isDefaultPrevented()) return
125 | $active.removeClass('active')
126 | $next.addClass('active')
127 | this.sliding = false
128 | this.$element.trigger('slid')
129 | }
130 |
131 | isCycling && this.cycle()
132 |
133 | return this
134 | }
135 |
136 | }
137 |
138 |
139 | /* CAROUSEL PLUGIN DEFINITION
140 | * ========================== */
141 |
142 | $.fn.carousel = function (option) {
143 | return this.each(function () {
144 | var $this = $(this)
145 | , data = $this.data('carousel')
146 | , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
147 | , action = typeof option == 'string' ? option : options.slide
148 | if (!data) $this.data('carousel', (data = new Carousel(this, options)))
149 | if (typeof option == 'number') data.to(option)
150 | else if (action) data[action]()
151 | else if (options.interval) data.cycle()
152 | })
153 | }
154 |
155 | $.fn.carousel.defaults = {
156 | interval: 5000
157 | , pause: 'hover'
158 | }
159 |
160 | $.fn.carousel.Constructor = Carousel
161 |
162 |
163 | /* CAROUSEL DATA-API
164 | * ================= */
165 |
166 | $(function () {
167 | $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
168 | var $this = $(this), href
169 | , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
170 | , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
171 | $target.carousel(options)
172 | e.preventDefault()
173 | })
174 | })
175 |
176 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
28 |
29 |
30 |
31 |
Stuff I need to do:
32 |
33 | - Absolutely nothing.
34 |
35 |
36 |
37 |
45 |
46 |
47 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
76 |
77 |
78 |
91 |
92 |
104 |
105 |
116 |
117 |
118 |
119 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_button-groups.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Button groups
3 | // --------------------------------------------------
4 |
5 |
6 | // Make the div behave like a button
7 | .btn-group {
8 | position: relative;
9 | font-size: 0; // remove as part 1 of font-size inline-block hack
10 | white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page)
11 | @include ie7-restore-left-whitespace();
12 | }
13 |
14 | // Space out series of button groups
15 | .btn-group + .btn-group {
16 | margin-left: 5px;
17 | }
18 |
19 | // Optional: Group multiple button groups together for a toolbar
20 | .btn-toolbar {
21 | font-size: 0; // Hack to remove whitespace that results from using inline-block
22 | margin-top: $baseLineHeight / 2;
23 | margin-bottom: $baseLineHeight / 2;
24 | .btn-group {
25 | display: inline-block;
26 | @include ie7-inline-block();
27 | }
28 | .btn + .btn,
29 | .btn-group + .btn,
30 | .btn + .btn-group {
31 | margin-left: 5px;
32 | }
33 | }
34 |
35 | // Float them, remove border radius, then re-add to first and last elements
36 | .btn-group > .btn {
37 | position: relative;
38 | @include border-radius(0);
39 | }
40 | .btn-group > .btn + .btn {
41 | margin-left: -1px;
42 | }
43 | .btn-group > .btn,
44 | .btn-group > .dropdown-menu {
45 | font-size: $baseFontSize; // redeclare as part 2 of font-size inline-block hack
46 | }
47 |
48 | // Reset fonts for other sizes
49 | .btn-group > .btn-mini {
50 | font-size: 11px;
51 | }
52 | .btn-group > .btn-small {
53 | font-size: 12px;
54 | }
55 | .btn-group > .btn-large {
56 | font-size: 16px;
57 | }
58 |
59 | // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
60 | .btn-group > .btn:first-child {
61 | margin-left: 0;
62 | -webkit-border-top-left-radius: 4px;
63 | -moz-border-radius-topleft: 4px;
64 | border-top-left-radius: 4px;
65 | -webkit-border-bottom-left-radius: 4px;
66 | -moz-border-radius-bottomleft: 4px;
67 | border-bottom-left-radius: 4px;
68 | }
69 | // Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
70 | .btn-group > .btn:last-child,
71 | .btn-group > .dropdown-toggle {
72 | -webkit-border-top-right-radius: 4px;
73 | -moz-border-radius-topright: 4px;
74 | border-top-right-radius: 4px;
75 | -webkit-border-bottom-right-radius: 4px;
76 | -moz-border-radius-bottomright: 4px;
77 | border-bottom-right-radius: 4px;
78 | }
79 | // Reset corners for large buttons
80 | .btn-group > .btn.large:first-child {
81 | margin-left: 0;
82 | -webkit-border-top-left-radius: 6px;
83 | -moz-border-radius-topleft: 6px;
84 | border-top-left-radius: 6px;
85 | -webkit-border-bottom-left-radius: 6px;
86 | -moz-border-radius-bottomleft: 6px;
87 | border-bottom-left-radius: 6px;
88 | }
89 | .btn-group > .btn.large:last-child,
90 | .btn-group > .large.dropdown-toggle {
91 | -webkit-border-top-right-radius: 6px;
92 | -moz-border-radius-topright: 6px;
93 | border-top-right-radius: 6px;
94 | -webkit-border-bottom-right-radius: 6px;
95 | -moz-border-radius-bottomright: 6px;
96 | border-bottom-right-radius: 6px;
97 | }
98 |
99 | // On hover/focus/active, bring the proper btn to front
100 | .btn-group > .btn:hover,
101 | .btn-group > .btn:focus,
102 | .btn-group > .btn:active,
103 | .btn-group > .btn.active {
104 | z-index: 2;
105 | }
106 |
107 | // On active and open, don't show outline
108 | .btn-group .dropdown-toggle:active,
109 | .btn-group.open .dropdown-toggle {
110 | outline: 0;
111 | }
112 |
113 |
114 |
115 | // Split button dropdowns
116 | // ----------------------
117 |
118 | // Give the line between buttons some depth
119 | .btn-group > .btn + .dropdown-toggle {
120 | padding-left: 8px;
121 | padding-right: 8px;
122 | @include box-shadow(#{inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)});
123 | *padding-top: 5px;
124 | *padding-bottom: 5px;
125 | }
126 | .btn-group > .btn-mini + .dropdown-toggle {
127 | *padding-left: 2px;
128 | *padding-right: 2px;
129 | }
130 | .btn-group > .btn-small + .dropdown-toggle {
131 | *padding-top: 5px;
132 | *padding-bottom: 4px;
133 | }
134 | .btn-group > .btn-large + .dropdown-toggle {
135 | *padding-left: 7px;
136 | *padding-right: 7px;
137 | }
138 |
139 | .btn-group.open {
140 |
141 | // The clickable button for toggling the menu
142 | // Remove the gradient and set the same inset shadow as the :active state
143 | .dropdown-toggle {
144 | background-image: none;
145 | @include box-shadow(#{inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)});
146 | }
147 |
148 | // Keep the hover's background when dropdown is open
149 | .btn.dropdown-toggle {
150 | background-color: $btnBackgroundHighlight;
151 | }
152 | .btn-primary.dropdown-toggle {
153 | background-color: $btnPrimaryBackgroundHighlight;
154 | }
155 | .btn-warning.dropdown-toggle {
156 | background-color: $btnWarningBackgroundHighlight;
157 | }
158 | .btn-danger.dropdown-toggle {
159 | background-color: $btnDangerBackgroundHighlight;
160 | }
161 | .btn-success.dropdown-toggle {
162 | background-color: $btnSuccessBackgroundHighlight;
163 | }
164 | .btn-info.dropdown-toggle {
165 | background-color: $btnInfoBackgroundHighlight;
166 | }
167 | .btn-inverse.dropdown-toggle {
168 | background-color: $btnInverseBackgroundHighlight;
169 | }
170 | }
171 |
172 |
173 | // Reposition the caret
174 | .btn .caret {
175 | margin-top: 8px;
176 | margin-left: 0;
177 | }
178 | // Carets in other button sizes
179 | .btn-mini .caret,
180 | .btn-small .caret,
181 | .btn-large .caret {
182 | margin-top: 6px;
183 | }
184 | .btn-large .caret {
185 | border-left-width: 5px;
186 | border-right-width: 5px;
187 | border-top-width: 5px;
188 | }
189 | // Upside down carets for .dropup
190 | .dropup .btn-large .caret {
191 | border-bottom: 5px solid $black;
192 | border-top: 0;
193 | }
194 |
195 |
196 |
197 | // Account for other colors
198 | .btn-primary,
199 | .btn-warning,
200 | .btn-danger,
201 | .btn-info,
202 | .btn-success,
203 | .btn-inverse {
204 | .caret {
205 | border-top-color: $white;
206 | border-bottom-color: $white;
207 | }
208 | }
209 |
210 |
211 |
212 | // Vertical button groups
213 | // ----------------------
214 |
215 | .btn-group-vertical {
216 | display: inline-block; // makes buttons only take up the width they need
217 | @include ie7-inline-block();
218 | }
219 | .btn-group-vertical .btn {
220 | display: block;
221 | float: none;
222 | width: 100%;
223 | @include border-radius(0);
224 | }
225 | .btn-group-vertical .btn + .btn {
226 | margin-left: 0;
227 | margin-top: -1px;
228 | }
229 | .btn-group-vertical .btn:first-child {
230 | @include border-radius(4px 4px 0 0);
231 | }
232 | .btn-group-vertical .btn:last-child {
233 | @include border-radius(0 0 4px 4px);
234 | }
235 | .btn-group-vertical .btn-large:first-child {
236 | @include border-radius(6px 6px 0 0);
237 | }
238 | .btn-group-vertical .btn-large:last-child {
239 | @include border-radius(0 0 6px 6px);
240 | }
241 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/a1d23a70.bootstrap-modal.js:
--------------------------------------------------------------------------------
1 | /* =========================================================
2 | * bootstrap-modal.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#modals
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 | /* MODAL CLASS DEFINITION
27 | * ====================== */
28 |
29 | var Modal = function (element, options) {
30 | this.options = options
31 | this.$element = $(element)
32 | .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
33 | this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
34 | }
35 |
36 | Modal.prototype = {
37 |
38 | constructor: Modal
39 |
40 | , toggle: function () {
41 | return this[!this.isShown ? 'show' : 'hide']()
42 | }
43 |
44 | , show: function () {
45 | var that = this
46 | , e = $.Event('show')
47 |
48 | this.$element.trigger(e)
49 |
50 | if (this.isShown || e.isDefaultPrevented()) return
51 |
52 | $('body').addClass('modal-open')
53 |
54 | this.isShown = true
55 |
56 | this.escape()
57 |
58 | this.backdrop(function () {
59 | var transition = $.support.transition && that.$element.hasClass('fade')
60 |
61 | if (!that.$element.parent().length) {
62 | that.$element.appendTo(document.body) //don't move modals dom position
63 | }
64 |
65 | that.$element
66 | .show()
67 |
68 | if (transition) {
69 | that.$element[0].offsetWidth // force reflow
70 | }
71 |
72 | that.$element
73 | .addClass('in')
74 | .attr('aria-hidden', false)
75 | .focus()
76 |
77 | that.enforceFocus()
78 |
79 | transition ?
80 | that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
81 | that.$element.trigger('shown')
82 |
83 | })
84 | }
85 |
86 | , hide: function (e) {
87 | e && e.preventDefault()
88 |
89 | var that = this
90 |
91 | e = $.Event('hide')
92 |
93 | this.$element.trigger(e)
94 |
95 | if (!this.isShown || e.isDefaultPrevented()) return
96 |
97 | this.isShown = false
98 |
99 | $('body').removeClass('modal-open')
100 |
101 | this.escape()
102 |
103 | $(document).off('focusin.modal')
104 |
105 | this.$element
106 | .removeClass('in')
107 | .attr('aria-hidden', true)
108 |
109 | $.support.transition && this.$element.hasClass('fade') ?
110 | this.hideWithTransition() :
111 | this.hideModal()
112 | }
113 |
114 | , enforceFocus: function () {
115 | var that = this
116 | $(document).on('focusin.modal', function (e) {
117 | if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
118 | that.$element.focus()
119 | }
120 | })
121 | }
122 |
123 | , escape: function () {
124 | var that = this
125 | if (this.isShown && this.options.keyboard) {
126 | this.$element.on('keyup.dismiss.modal', function ( e ) {
127 | e.which == 27 && that.hide()
128 | })
129 | } else if (!this.isShown) {
130 | this.$element.off('keyup.dismiss.modal')
131 | }
132 | }
133 |
134 | , hideWithTransition: function () {
135 | var that = this
136 | , timeout = setTimeout(function () {
137 | that.$element.off($.support.transition.end)
138 | that.hideModal()
139 | }, 500)
140 |
141 | this.$element.one($.support.transition.end, function () {
142 | clearTimeout(timeout)
143 | that.hideModal()
144 | })
145 | }
146 |
147 | , hideModal: function (that) {
148 | this.$element
149 | .hide()
150 | .trigger('hidden')
151 |
152 | this.backdrop()
153 | }
154 |
155 | , removeBackdrop: function () {
156 | this.$backdrop.remove()
157 | this.$backdrop = null
158 | }
159 |
160 | , backdrop: function (callback) {
161 | var that = this
162 | , animate = this.$element.hasClass('fade') ? 'fade' : ''
163 |
164 | if (this.isShown && this.options.backdrop) {
165 | var doAnimate = $.support.transition && animate
166 |
167 | this.$backdrop = $('')
168 | .appendTo(document.body)
169 |
170 | if (this.options.backdrop != 'static') {
171 | this.$backdrop.click($.proxy(this.hide, this))
172 | }
173 |
174 | if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
175 |
176 | this.$backdrop.addClass('in')
177 |
178 | doAnimate ?
179 | this.$backdrop.one($.support.transition.end, callback) :
180 | callback()
181 |
182 | } else if (!this.isShown && this.$backdrop) {
183 | this.$backdrop.removeClass('in')
184 |
185 | $.support.transition && this.$element.hasClass('fade')?
186 | this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
187 | this.removeBackdrop()
188 |
189 | } else if (callback) {
190 | callback()
191 | }
192 | }
193 | }
194 |
195 |
196 | /* MODAL PLUGIN DEFINITION
197 | * ======================= */
198 |
199 | $.fn.modal = function (option) {
200 | return this.each(function () {
201 | var $this = $(this)
202 | , data = $this.data('modal')
203 | , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
204 | if (!data) $this.data('modal', (data = new Modal(this, options)))
205 | if (typeof option == 'string') data[option]()
206 | else if (options.show) data.show()
207 | })
208 | }
209 |
210 | $.fn.modal.defaults = {
211 | backdrop: true
212 | , keyboard: true
213 | , show: true
214 | }
215 |
216 | $.fn.modal.Constructor = Modal
217 |
218 |
219 | /* MODAL DATA-API
220 | * ============== */
221 |
222 | $(function () {
223 | $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
224 | var $this = $(this)
225 | , href = $this.attr('href')
226 | , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
227 | , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
228 |
229 | e.preventDefault()
230 |
231 | $target
232 | .modal(option)
233 | .one('hide', function () {
234 | $this.focus()
235 | })
236 | })
237 | })
238 |
239 | }(window.jQuery);
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/d23b5f74.bootstrap-typeahead.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-typeahead.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#typeahead
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 | /* TYPEAHEAD PUBLIC CLASS DEFINITION
27 | * ================================= */
28 |
29 | var Typeahead = function (element, options) {
30 | this.$element = $(element)
31 | this.options = $.extend({}, $.fn.typeahead.defaults, options)
32 | this.matcher = this.options.matcher || this.matcher
33 | this.sorter = this.options.sorter || this.sorter
34 | this.highlighter = this.options.highlighter || this.highlighter
35 | this.updater = this.options.updater || this.updater
36 | this.$menu = $(this.options.menu).appendTo('body')
37 | this.source = this.options.source
38 | this.shown = false
39 | this.listen()
40 | }
41 |
42 | Typeahead.prototype = {
43 |
44 | constructor: Typeahead
45 |
46 | , select: function () {
47 | var val = this.$menu.find('.active').attr('data-value')
48 | this.$element
49 | .val(this.updater(val))
50 | .change()
51 | return this.hide()
52 | }
53 |
54 | , updater: function (item) {
55 | return item
56 | }
57 |
58 | , show: function () {
59 | var pos = $.extend({}, this.$element.offset(), {
60 | height: this.$element[0].offsetHeight
61 | })
62 |
63 | this.$menu.css({
64 | top: pos.top + pos.height
65 | , left: pos.left
66 | })
67 |
68 | this.$menu.show()
69 | this.shown = true
70 | return this
71 | }
72 |
73 | , hide: function () {
74 | this.$menu.hide()
75 | this.shown = false
76 | return this
77 | }
78 |
79 | , lookup: function (event) {
80 | var items
81 |
82 | this.query = this.$element.val()
83 |
84 | if (!this.query || this.query.length < this.options.minLength) {
85 | return this.shown ? this.hide() : this
86 | }
87 |
88 | items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
89 |
90 | return items ? this.process(items) : this
91 | }
92 |
93 | , process: function (items) {
94 | var that = this
95 |
96 | items = $.grep(items, function (item) {
97 | return that.matcher(item)
98 | })
99 |
100 | items = this.sorter(items)
101 |
102 | if (!items.length) {
103 | return this.shown ? this.hide() : this
104 | }
105 |
106 | return this.render(items.slice(0, this.options.items)).show()
107 | }
108 |
109 | , matcher: function (item) {
110 | return ~item.toLowerCase().indexOf(this.query.toLowerCase())
111 | }
112 |
113 | , sorter: function (items) {
114 | var beginswith = []
115 | , caseSensitive = []
116 | , caseInsensitive = []
117 | , item
118 |
119 | while (item = items.shift()) {
120 | if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
121 | else if (~item.indexOf(this.query)) caseSensitive.push(item)
122 | else caseInsensitive.push(item)
123 | }
124 |
125 | return beginswith.concat(caseSensitive, caseInsensitive)
126 | }
127 |
128 | , highlighter: function (item) {
129 | var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
130 | return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
131 | return '' + match + ''
132 | })
133 | }
134 |
135 | , render: function (items) {
136 | var that = this
137 |
138 | items = $(items).map(function (i, item) {
139 | i = $(that.options.item).attr('data-value', item)
140 | i.find('a').html(that.highlighter(item))
141 | return i[0]
142 | })
143 |
144 | items.first().addClass('active')
145 | this.$menu.html(items)
146 | return this
147 | }
148 |
149 | , next: function (event) {
150 | var active = this.$menu.find('.active').removeClass('active')
151 | , next = active.next()
152 |
153 | if (!next.length) {
154 | next = $(this.$menu.find('li')[0])
155 | }
156 |
157 | next.addClass('active')
158 | }
159 |
160 | , prev: function (event) {
161 | var active = this.$menu.find('.active').removeClass('active')
162 | , prev = active.prev()
163 |
164 | if (!prev.length) {
165 | prev = this.$menu.find('li').last()
166 | }
167 |
168 | prev.addClass('active')
169 | }
170 |
171 | , listen: function () {
172 | this.$element
173 | .on('blur', $.proxy(this.blur, this))
174 | .on('keypress', $.proxy(this.keypress, this))
175 | .on('keyup', $.proxy(this.keyup, this))
176 |
177 | if ($.browser.webkit || $.browser.msie) {
178 | this.$element.on('keydown', $.proxy(this.keydown, this))
179 | }
180 |
181 | this.$menu
182 | .on('click', $.proxy(this.click, this))
183 | .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
184 | }
185 |
186 | , move: function (e) {
187 | if (!this.shown) return
188 |
189 | switch(e.keyCode) {
190 | case 9: // tab
191 | case 13: // enter
192 | case 27: // escape
193 | e.preventDefault()
194 | break
195 |
196 | case 38: // up arrow
197 | e.preventDefault()
198 | this.prev()
199 | break
200 |
201 | case 40: // down arrow
202 | e.preventDefault()
203 | this.next()
204 | break
205 | }
206 |
207 | e.stopPropagation()
208 | }
209 |
210 | , keydown: function (e) {
211 | this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
212 | this.move(e)
213 | }
214 |
215 | , keypress: function (e) {
216 | if (this.suppressKeyPressRepeat) return
217 | this.move(e)
218 | }
219 |
220 | , keyup: function (e) {
221 | switch(e.keyCode) {
222 | case 40: // down arrow
223 | case 38: // up arrow
224 | break
225 |
226 | case 9: // tab
227 | case 13: // enter
228 | if (!this.shown) return
229 | this.select()
230 | break
231 |
232 | case 27: // escape
233 | if (!this.shown) return
234 | this.hide()
235 | break
236 |
237 | default:
238 | this.lookup()
239 | }
240 |
241 | e.stopPropagation()
242 | e.preventDefault()
243 | }
244 |
245 | , blur: function (e) {
246 | var that = this
247 | setTimeout(function () { that.hide() }, 150)
248 | }
249 |
250 | , click: function (e) {
251 | e.stopPropagation()
252 | e.preventDefault()
253 | this.select()
254 | }
255 |
256 | , mouseenter: function (e) {
257 | this.$menu.find('.active').removeClass('active')
258 | $(e.currentTarget).addClass('active')
259 | }
260 |
261 | }
262 |
263 |
264 | /* TYPEAHEAD PLUGIN DEFINITION
265 | * =========================== */
266 |
267 | $.fn.typeahead = function (option) {
268 | return this.each(function () {
269 | var $this = $(this)
270 | , data = $this.data('typeahead')
271 | , options = typeof option == 'object' && option
272 | if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
273 | if (typeof option == 'string') data[option]()
274 | })
275 | }
276 |
277 | $.fn.typeahead.defaults = {
278 | source: []
279 | , items: 8
280 | , menu: ''
281 | , item: ''
282 | , minLength: 1
283 | }
284 |
285 | $.fn.typeahead.Constructor = Typeahead
286 |
287 |
288 | /* TYPEAHEAD DATA-API
289 | * ================== */
290 |
291 | $(function () {
292 | $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
293 | var $this = $(this)
294 | if ($this.data('typeahead')) return
295 | e.preventDefault()
296 | $this.typeahead($this.data())
297 | })
298 | })
299 |
300 | }(window.jQuery);
301 |
--------------------------------------------------------------------------------
/www/scripts/vendor/bootstrap/c6285e1a.bootstrap-tooltip.js:
--------------------------------------------------------------------------------
1 | /* ===========================================================
2 | * bootstrap-tooltip.js v2.1.0
3 | * http://twitter.github.com/bootstrap/javascript.html#tooltips
4 | * Inspired by the original jQuery.tipsy by Jason Frame
5 | * ===========================================================
6 | * Copyright 2012 Twitter, Inc.
7 | *
8 | * Licensed under the Apache License, Version 2.0 (the "License");
9 | * you may not use this file except in compliance with the License.
10 | * You may obtain a copy of the License at
11 | *
12 | * http://www.apache.org/licenses/LICENSE-2.0
13 | *
14 | * Unless required by applicable law or agreed to in writing, software
15 | * distributed under the License is distributed on an "AS IS" BASIS,
16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | * See the License for the specific language governing permissions and
18 | * limitations under the License.
19 | * ========================================================== */
20 |
21 |
22 | !function ($) {
23 |
24 | "use strict"; // jshint ;_;
25 |
26 |
27 | /* TOOLTIP PUBLIC CLASS DEFINITION
28 | * =============================== */
29 |
30 | var Tooltip = function (element, options) {
31 | this.init('tooltip', element, options)
32 | }
33 |
34 | Tooltip.prototype = {
35 |
36 | constructor: Tooltip
37 |
38 | , init: function (type, element, options) {
39 | var eventIn
40 | , eventOut
41 |
42 | this.type = type
43 | this.$element = $(element)
44 | this.options = this.getOptions(options)
45 | this.enabled = true
46 |
47 | if (this.options.trigger == 'click') {
48 | this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
49 | } else if (this.options.trigger != 'manual') {
50 | eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
51 | eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
52 | this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
53 | this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
54 | }
55 |
56 | this.options.selector ?
57 | (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
58 | this.fixTitle()
59 | }
60 |
61 | , getOptions: function (options) {
62 | options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
63 |
64 | if (options.delay && typeof options.delay == 'number') {
65 | options.delay = {
66 | show: options.delay
67 | , hide: options.delay
68 | }
69 | }
70 |
71 | return options
72 | }
73 |
74 | , enter: function (e) {
75 | var self = $(e.currentTarget)[this.type](this._options).data(this.type)
76 |
77 | if (!self.options.delay || !self.options.delay.show) return self.show()
78 |
79 | clearTimeout(this.timeout)
80 | self.hoverState = 'in'
81 | this.timeout = setTimeout(function() {
82 | if (self.hoverState == 'in') self.show()
83 | }, self.options.delay.show)
84 | }
85 |
86 | , leave: function (e) {
87 | var self = $(e.currentTarget)[this.type](this._options).data(this.type)
88 |
89 | if (this.timeout) clearTimeout(this.timeout)
90 | if (!self.options.delay || !self.options.delay.hide) return self.hide()
91 |
92 | self.hoverState = 'out'
93 | this.timeout = setTimeout(function() {
94 | if (self.hoverState == 'out') self.hide()
95 | }, self.options.delay.hide)
96 | }
97 |
98 | , show: function () {
99 | var $tip
100 | , inside
101 | , pos
102 | , actualWidth
103 | , actualHeight
104 | , placement
105 | , tp
106 |
107 | if (this.hasContent() && this.enabled) {
108 | $tip = this.tip()
109 | this.setContent()
110 |
111 | if (this.options.animation) {
112 | $tip.addClass('fade')
113 | }
114 |
115 | placement = typeof this.options.placement == 'function' ?
116 | this.options.placement.call(this, $tip[0], this.$element[0]) :
117 | this.options.placement
118 |
119 | inside = /in/.test(placement)
120 |
121 | $tip
122 | .remove()
123 | .css({ top: 0, left: 0, display: 'block' })
124 | .appendTo(inside ? this.$element : document.body)
125 |
126 | pos = this.getPosition(inside)
127 |
128 | actualWidth = $tip[0].offsetWidth
129 | actualHeight = $tip[0].offsetHeight
130 |
131 | switch (inside ? placement.split(' ')[1] : placement) {
132 | case 'bottom':
133 | tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
134 | break
135 | case 'top':
136 | tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
137 | break
138 | case 'left':
139 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
140 | break
141 | case 'right':
142 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
143 | break
144 | }
145 |
146 | $tip
147 | .css(tp)
148 | .addClass(placement)
149 | .addClass('in')
150 | }
151 | }
152 |
153 | , setContent: function () {
154 | var $tip = this.tip()
155 | , title = this.getTitle()
156 |
157 | $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
158 | $tip.removeClass('fade in top bottom left right')
159 | }
160 |
161 | , hide: function () {
162 | var that = this
163 | , $tip = this.tip()
164 |
165 | $tip.removeClass('in')
166 |
167 | function removeWithAnimation() {
168 | var timeout = setTimeout(function () {
169 | $tip.off($.support.transition.end).remove()
170 | }, 500)
171 |
172 | $tip.one($.support.transition.end, function () {
173 | clearTimeout(timeout)
174 | $tip.remove()
175 | })
176 | }
177 |
178 | $.support.transition && this.$tip.hasClass('fade') ?
179 | removeWithAnimation() :
180 | $tip.remove()
181 |
182 | return this
183 | }
184 |
185 | , fixTitle: function () {
186 | var $e = this.$element
187 | if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
188 | $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
189 | }
190 | }
191 |
192 | , hasContent: function () {
193 | return this.getTitle()
194 | }
195 |
196 | , getPosition: function (inside) {
197 | return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
198 | width: this.$element[0].offsetWidth
199 | , height: this.$element[0].offsetHeight
200 | })
201 | }
202 |
203 | , getTitle: function () {
204 | var title
205 | , $e = this.$element
206 | , o = this.options
207 |
208 | title = $e.attr('data-original-title')
209 | || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
210 |
211 | return title
212 | }
213 |
214 | , tip: function () {
215 | return this.$tip = this.$tip || $(this.options.template)
216 | }
217 |
218 | , validate: function () {
219 | if (!this.$element[0].parentNode) {
220 | this.hide()
221 | this.$element = null
222 | this.options = null
223 | }
224 | }
225 |
226 | , enable: function () {
227 | this.enabled = true
228 | }
229 |
230 | , disable: function () {
231 | this.enabled = false
232 | }
233 |
234 | , toggleEnabled: function () {
235 | this.enabled = !this.enabled
236 | }
237 |
238 | , toggle: function () {
239 | this[this.tip().hasClass('in') ? 'hide' : 'show']()
240 | }
241 |
242 | , destroy: function () {
243 | this.hide().$element.off('.' + this.type).removeData(this.type)
244 | }
245 |
246 | }
247 |
248 |
249 | /* TOOLTIP PLUGIN DEFINITION
250 | * ========================= */
251 |
252 | $.fn.tooltip = function ( option ) {
253 | return this.each(function () {
254 | var $this = $(this)
255 | , data = $this.data('tooltip')
256 | , options = typeof option == 'object' && option
257 | if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
258 | if (typeof option == 'string') data[option]()
259 | })
260 | }
261 |
262 | $.fn.tooltip.Constructor = Tooltip
263 |
264 | $.fn.tooltip.defaults = {
265 | animation: true
266 | , placement: 'top'
267 | , selector: false
268 | , template: ''
269 | , trigger: 'hover'
270 | , title: ''
271 | , delay: 0
272 | , html: true
273 | }
274 |
275 | }(window.jQuery);
276 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_navs.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Navs
3 | // --------------------------------------------------
4 |
5 |
6 | // BASE CLASS
7 | // ----------
8 |
9 | .nav {
10 | margin-left: 0;
11 | margin-bottom: $baseLineHeight;
12 | list-style: none;
13 | }
14 |
15 | // Make links block level
16 | .nav > li > a {
17 | display: block;
18 | }
19 | .nav > li > a:hover {
20 | text-decoration: none;
21 | background-color: $grayLighter;
22 | }
23 |
24 | // Redeclare pull classes because of specifity
25 | .nav > .pull-right {
26 | float: right;
27 | }
28 |
29 | // Nav headers (for dropdowns and lists)
30 | .nav-header {
31 | display: block;
32 | padding: 3px 15px;
33 | font-size: 11px;
34 | font-weight: bold;
35 | line-height: $baseLineHeight;
36 | color: $grayLight;
37 | text-shadow: 0 1px 0 rgba(255,255,255,.5);
38 | text-transform: uppercase;
39 | }
40 | // Space them out when they follow another list item (link)
41 | .nav li + .nav-header {
42 | margin-top: 9px;
43 | }
44 |
45 |
46 |
47 | // NAV LIST
48 | // --------
49 |
50 | .nav-list {
51 | padding-left: 15px;
52 | padding-right: 15px;
53 | margin-bottom: 0;
54 | }
55 | .nav-list > li > a,
56 | .nav-list .nav-header {
57 | margin-left: -15px;
58 | margin-right: -15px;
59 | text-shadow: 0 1px 0 rgba(255,255,255,.5);
60 | }
61 | .nav-list > li > a {
62 | padding: 3px 15px;
63 | }
64 | .nav-list > .active > a,
65 | .nav-list > .active > a:hover {
66 | color: $white;
67 | text-shadow: 0 -1px 0 rgba(0,0,0,.2);
68 | background-color: $linkColor;
69 | }
70 | .nav-list [class^="icon-"] {
71 | margin-right: 2px;
72 | }
73 | // Dividers (basically an hr) within the dropdown
74 | .nav-list .divider {
75 | @include nav-divider();
76 | }
77 |
78 |
79 |
80 | // TABS AND PILLS
81 | // -------------
82 |
83 | // Common styles
84 | .nav-tabs,
85 | .nav-pills {
86 | @include clearfix();
87 | }
88 | .nav-tabs > li,
89 | .nav-pills > li {
90 | float: left;
91 | }
92 | .nav-tabs > li > a,
93 | .nav-pills > li > a {
94 | padding-right: 12px;
95 | padding-left: 12px;
96 | margin-right: 2px;
97 | line-height: 14px; // keeps the overall height an even number
98 | }
99 |
100 | // TABS
101 | // ----
102 |
103 | // Give the tabs something to sit on
104 | .nav-tabs {
105 | border-bottom: 1px solid #ddd;
106 | }
107 | // Make the list-items overlay the bottom border
108 | .nav-tabs > li {
109 | margin-bottom: -1px;
110 | }
111 | // Actual tabs (as links)
112 | .nav-tabs > li > a {
113 | padding-top: 8px;
114 | padding-bottom: 8px;
115 | line-height: $baseLineHeight;
116 | border: 1px solid transparent;
117 | @include border-radius(4px 4px 0 0);
118 | &:hover {
119 | border-color: $grayLighter $grayLighter #ddd;
120 | }
121 | }
122 | // Active state, and it's :hover to override normal :hover
123 | .nav-tabs > .active > a,
124 | .nav-tabs > .active > a:hover {
125 | color: $gray;
126 | background-color: $white;
127 | border: 1px solid #ddd;
128 | border-bottom-color: transparent;
129 | cursor: default;
130 | }
131 |
132 |
133 | // PILLS
134 | // -----
135 |
136 | // Links rendered as pills
137 | .nav-pills > li > a {
138 | padding-top: 8px;
139 | padding-bottom: 8px;
140 | margin-top: 2px;
141 | margin-bottom: 2px;
142 | @include border-radius(5px);
143 | }
144 |
145 | // Active state
146 | .nav-pills > .active > a,
147 | .nav-pills > .active > a:hover {
148 | color: $white;
149 | background-color: $linkColor;
150 | }
151 |
152 |
153 |
154 | // STACKED NAV
155 | // -----------
156 |
157 | // Stacked tabs and pills
158 | .nav-stacked > li {
159 | float: none;
160 | }
161 | .nav-stacked > li > a {
162 | margin-right: 0; // no need for the gap between nav items
163 | }
164 |
165 | // Tabs
166 | .nav-tabs.nav-stacked {
167 | border-bottom: 0;
168 | }
169 | .nav-tabs.nav-stacked > li > a {
170 | border: 1px solid #ddd;
171 | @include border-radius(0);
172 | }
173 | .nav-tabs.nav-stacked > li:first-child > a {
174 | @include border-top-radius(4px);
175 | }
176 | .nav-tabs.nav-stacked > li:last-child > a {
177 | @include border-bottom-radius(4px);
178 | }
179 | .nav-tabs.nav-stacked > li > a:hover {
180 | border-color: #ddd;
181 | z-index: 2;
182 | }
183 |
184 | // Pills
185 | .nav-pills.nav-stacked > li > a {
186 | margin-bottom: 3px;
187 | }
188 | .nav-pills.nav-stacked > li:last-child > a {
189 | margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
190 | }
191 |
192 |
193 |
194 | // DROPDOWNS
195 | // ---------
196 |
197 | .nav-tabs .dropdown-menu {
198 | @include border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu
199 | }
200 | .nav-pills .dropdown-menu {
201 | @include border-radius(6px); // make rounded corners match the pills
202 | }
203 |
204 | // Default dropdown links
205 | // -------------------------
206 | // Make carets use linkColor to start
207 | .nav .dropdown-toggle .caret {
208 | border-top-color: $linkColor;
209 | border-bottom-color: $linkColor;
210 | margin-top: 6px;
211 | }
212 | .nav .dropdown-toggle:hover .caret {
213 | border-top-color: $linkColorHover;
214 | border-bottom-color: $linkColorHover;
215 | }
216 | /* move down carets for tabs */
217 | .nav-tabs .dropdown-toggle .caret {
218 | margin-top: 8px;
219 | }
220 |
221 | // Active dropdown links
222 | // -------------------------
223 | .nav .active .dropdown-toggle .caret {
224 | border-top-color: $grayDark;
225 | border-bottom-color: $grayDark;
226 | }
227 | .nav-tabs .active .dropdown-toggle .caret {
228 | border-top-color: $gray;
229 | border-bottom-color: $gray;
230 | }
231 |
232 | // Active:hover dropdown links
233 | // -------------------------
234 | .nav > .dropdown.active > a:hover {
235 | cursor: pointer;
236 | }
237 |
238 | // Open dropdowns
239 | // -------------------------
240 | .nav-tabs .open .dropdown-toggle,
241 | .nav-pills .open .dropdown-toggle,
242 | .nav > li.dropdown.open.active > a:hover {
243 | color: $white;
244 | background-color: $grayLight;
245 | border-color: $grayLight;
246 | }
247 | .nav li.dropdown.open .caret,
248 | .nav li.dropdown.open.active .caret,
249 | .nav li.dropdown.open a:hover .caret {
250 | border-top-color: $white;
251 | border-bottom-color: $white;
252 | @include opacity(100);
253 | }
254 |
255 | // Dropdowns in stacked tabs
256 | .tabs-stacked .open > a:hover {
257 | border-color: $grayLight;
258 | }
259 |
260 |
261 |
262 | // TABBABLE
263 | // --------
264 |
265 |
266 | // COMMON STYLES
267 | // -------------
268 |
269 | // Clear any floats
270 | .tabbable {
271 | @include clearfix();
272 | }
273 | .tab-content {
274 | overflow: auto; // prevent content from running below tabs
275 | }
276 |
277 | // Remove border on bottom, left, right
278 | .tabs-below > .nav-tabs,
279 | .tabs-right > .nav-tabs,
280 | .tabs-left > .nav-tabs {
281 | border-bottom: 0;
282 | }
283 |
284 | // Show/hide tabbable areas
285 | .tab-content > .tab-pane,
286 | .pill-content > .pill-pane {
287 | display: none;
288 | }
289 | .tab-content > .active,
290 | .pill-content > .active {
291 | display: block;
292 | }
293 |
294 |
295 | // BOTTOM
296 | // ------
297 |
298 | .tabs-below > .nav-tabs {
299 | border-top: 1px solid #ddd;
300 | }
301 | .tabs-below > .nav-tabs > li {
302 | margin-top: -1px;
303 | margin-bottom: 0;
304 | }
305 | .tabs-below > .nav-tabs > li > a {
306 | @include border-radius(0 0 4px 4px);
307 | &:hover {
308 | border-bottom-color: transparent;
309 | border-top-color: #ddd;
310 | }
311 | }
312 | .tabs-below > .nav-tabs > .active > a,
313 | .tabs-below > .nav-tabs > .active > a:hover {
314 | border-color: transparent #ddd #ddd #ddd;
315 | }
316 |
317 | // LEFT & RIGHT
318 | // ------------
319 |
320 | // Common styles
321 | .tabs-left > .nav-tabs > li,
322 | .tabs-right > .nav-tabs > li {
323 | float: none;
324 | }
325 | .tabs-left > .nav-tabs > li > a,
326 | .tabs-right > .nav-tabs > li > a {
327 | min-width: 74px;
328 | margin-right: 0;
329 | margin-bottom: 3px;
330 | }
331 |
332 | // Tabs on the left
333 | .tabs-left > .nav-tabs {
334 | float: left;
335 | margin-right: 19px;
336 | border-right: 1px solid #ddd;
337 | }
338 | .tabs-left > .nav-tabs > li > a {
339 | margin-right: -1px;
340 | @include border-radius(4px 0 0 4px);
341 | }
342 | .tabs-left > .nav-tabs > li > a:hover {
343 | border-color: $grayLighter #ddd $grayLighter $grayLighter;
344 | }
345 | .tabs-left > .nav-tabs .active > a,
346 | .tabs-left > .nav-tabs .active > a:hover {
347 | border-color: #ddd transparent #ddd #ddd;
348 | *border-right-color: $white;
349 | }
350 |
351 | // Tabs on the right
352 | .tabs-right > .nav-tabs {
353 | float: right;
354 | margin-left: 19px;
355 | border-left: 1px solid #ddd;
356 | }
357 | .tabs-right > .nav-tabs > li > a {
358 | margin-left: -1px;
359 | @include border-radius(0 4px 4px 0);
360 | }
361 | .tabs-right > .nav-tabs > li > a:hover {
362 | border-color: $grayLighter $grayLighter $grayLighter #ddd;
363 | }
364 | .tabs-right > .nav-tabs .active > a,
365 | .tabs-right > .nav-tabs .active > a:hover {
366 | border-color: #ddd #ddd #ddd transparent;
367 | *border-left-color: $white;
368 | }
369 |
370 |
371 |
372 | // DISABLED STATES
373 | // ---------------
374 |
375 | // Gray out text
376 | .nav > .disabled > a {
377 | color: $grayLight;
378 | }
379 | // Nuke hover effects
380 | .nav > .disabled > a:hover {
381 | text-decoration: none;
382 | background-color: transparent;
383 | cursor: default;
384 | }
385 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_variables.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Variables
3 | // --------------------------------------------------
4 |
5 |
6 | // Global values
7 | // --------------------------------------------------
8 |
9 |
10 | // Grays
11 | // -------------------------
12 | $black: #000 !default;
13 | $grayDarker: #222 !default;
14 | $grayDark: #333 !default;
15 | $gray: #555 !default;
16 | $grayLight: #999 !default;
17 | $grayLighter: #eee !default;
18 | $white: #fff !default;
19 |
20 |
21 | // Accent colors
22 | // -------------------------
23 | $blue: #049cdb !default;
24 | $blueDark: #0064cd !default;
25 | $green: #46a546 !default;
26 | $red: #9d261d !default;
27 | $yellow: #ffc40d !default;
28 | $orange: #f89406 !default;
29 | $pink: #c3325f !default;
30 | $purple: #7a43b6 !default;
31 |
32 |
33 | // Scaffolding
34 | // -------------------------
35 | $bodyBackground: $white !default;
36 | $textColor: $grayDark !default;
37 |
38 |
39 | // Links
40 | // -------------------------
41 | $linkColor: #08c !default;
42 | $linkColorHover: darken($linkColor, 15%) !default;
43 |
44 |
45 | // Typography
46 | // -------------------------
47 | $sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif !default;
48 | $serifFontFamily: Georgia, "Times New Roman", Times, serif !default;
49 | $monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace !default;
50 |
51 | $baseFontSize: 14px !default;
52 | $baseFontFamily: $sansFontFamily !default;
53 | $baseLineHeight: 20px !default;
54 | $altFontFamily: $serifFontFamily !default;
55 |
56 | $headingsFontFamily: inherit !default; // empty to use BS default, $baseFontFamily
57 | $headingsFontWeight: bold !default; // instead of browser default, bold
58 | $headingsColor: inherit !default; // empty to use BS default, $textColor
59 |
60 |
61 | // Tables
62 | // -------------------------
63 | $tableBackground: transparent !default; // overall background-color
64 | $tableBackgroundAccent: #f9f9f9 !default; // for striping
65 | $tableBackgroundHover: #f5f5f5 !default; // for hover
66 | $tableBorder: #ddd !default; // table and cell border
67 |
68 |
69 | // Buttons
70 | // -------------------------
71 | $btnBackground: $white !default;
72 | $btnBackgroundHighlight: darken($white, 10%) !default;
73 | $btnBorder: #bbb !default;
74 |
75 | $btnPrimaryBackground: $linkColor !default;
76 | $btnPrimaryBackgroundHighlight: adjust-hue($btnPrimaryBackground, 20%) !default;
77 |
78 | $btnInfoBackground: #5bc0de !default;
79 | $btnInfoBackgroundHighlight: #2f96b4 !default;
80 |
81 | $btnSuccessBackground: #62c462 !default;
82 | $btnSuccessBackgroundHighlight: #51a351 !default;
83 |
84 | $btnWarningBackground: lighten($orange, 15%) !default;
85 | $btnWarningBackgroundHighlight: $orange !default;
86 |
87 | $btnDangerBackground: #ee5f5b !default;
88 | $btnDangerBackgroundHighlight: #bd362f !default;
89 |
90 | $btnInverseBackground: #444 !default;
91 | $btnInverseBackgroundHighlight: $grayDarker !default;
92 |
93 |
94 | // Forms
95 | // -------------------------
96 | $inputBackground: $white !default;
97 | $inputBorder: #ccc !default;
98 | $inputBorderRadius: 3px !default;
99 | $inputDisabledBackground: $grayLighter !default;
100 | $formActionsBackground: #f5f5f5 !default;
101 |
102 | // Dropdowns
103 | // -------------------------
104 | $dropdownBackground: $white !default;
105 | $dropdownBorder: rgba(0,0,0,.2) !default;
106 | $dropdownDividerTop: #e5e5e5 !default;
107 | $dropdownDividerBottom: $white !default;
108 |
109 | $dropdownLinkColor: $grayDark !default;
110 |
111 | $dropdownLinkColorHover: $white !default;
112 | $dropdownLinkBackgroundHover: $linkColor !default;
113 |
114 | $dropdownLinkColorActive: $dropdownLinkColor !default;
115 | $dropdownLinkBackgroundActive: $linkColor !default;
116 |
117 |
118 |
119 | // COMPONENT VARIABLES
120 | // --------------------------------------------------
121 |
122 | // Z-index master list
123 | // -------------------------
124 | // Used for a bird's eye view of components dependent on the z-axis
125 | // Try to avoid customizing these :)
126 | $zindexDropdown: 1000 !default;
127 | $zindexPopover: 1010 !default;
128 | $zindexTooltip: 1030 !default;
129 | $zindexFixedNavbar: 1030 !default;
130 | $zindexModalBackdrop: 1040 !default;
131 | $zindexModal: 1050 !default;
132 |
133 |
134 | // Sprite icons path
135 | // -------------------------
136 | $iconSpritePath: "glyphicons-halflings.png" !default;
137 | $iconWhiteSpritePath: "glyphicons-halflings-white.png" !default;
138 |
139 |
140 | // Input placeholder text color
141 | // -------------------------
142 | $placeholderText: $grayLight !default;
143 |
144 |
145 | // Hr border color
146 | // -------------------------
147 | $hrBorder: $grayLighter !default;
148 |
149 |
150 | // Wells
151 | // -------------------------
152 | $wellBackground: #f5f5f5 !default;
153 |
154 |
155 | // Navbar
156 | // -------------------------
157 | $navbarCollapseWidth: 979px !default;
158 |
159 | $navbarHeight: 40px !default;
160 | $navbarBackgroundHighlight: #ffffff !default;
161 | $navbarBackground: darken($navbarBackgroundHighlight, 5%) !default;
162 | $navbarBorder: darken($navbarBackground, 12%) !default;
163 |
164 | $navbarText: $gray !default;
165 | $navbarLinkColor: $gray !default;
166 | $navbarLinkColorHover: $grayDark !default;
167 | $navbarLinkColorActive: $gray !default;
168 | $navbarLinkBackgroundHover: transparent !default;
169 | $navbarLinkBackgroundActive: darken($navbarBackground, 5.25%) !default;
170 |
171 | $navbarBrandColor: $navbarLinkColor !default;
172 |
173 | // Inverted navbar
174 | $navbarInverseBackground: #111111 !default;
175 | $navbarInverseBackgroundHighlight: #222222 !default;
176 | $navbarInverseBorder: #252525 !default;
177 |
178 | $navbarInverseText: $grayLight !default;
179 | $navbarInverseLinkColor: $grayLight !default;
180 | $navbarInverseLinkColorHover: $white !default;
181 | $navbarInverseLinkColorActive: $navbarInverseLinkColorHover !default;
182 | $navbarInverseLinkBackgroundHover: transparent !default;
183 | $navbarInverseLinkBackgroundActive: $navbarInverseBackground !default;
184 |
185 | $navbarInverseSearchBackground: lighten($navbarInverseBackground, 25%) !default;
186 | $navbarInverseSearchBackgroundFocus: $white !default;
187 | $navbarInverseSearchBorder: $navbarInverseBackground !default;
188 | $navbarInverseSearchPlaceholderColor: #ccc !default;
189 |
190 | $navbarInverseBrandColor: $navbarInverseLinkColor !default;
191 |
192 |
193 | // Pagination
194 | // -------------------------
195 | $paginationBackground: #fff !default;
196 | $paginationBorder: #ddd !default;
197 | $paginationActiveBackground: #f5f5f5 !default;
198 |
199 |
200 | // Hero unit
201 | // -------------------------
202 | $heroUnitBackground: $grayLighter !default;
203 | $heroUnitHeadingColor: inherit !default;
204 | $heroUnitLeadColor: inherit !default;
205 |
206 |
207 | // Form states and alerts
208 | // -------------------------
209 | $warningText: #c09853 !default;
210 | $warningBackground: #fcf8e3 !default;
211 | $warningBorder: darken(adjust-hue($warningBackground, -10), 3%) !default;
212 |
213 | $errorText: #b94a48 !default;
214 | $errorBackground: #f2dede !default;
215 | $errorBorder: darken(adjust-hue($errorBackground, -10), 3%) !default;
216 |
217 | $successText: #468847 !default;
218 | $successBackground: #dff0d8 !default;
219 | $successBorder: darken(adjust-hue($successBackground, -10), 5%) !default;
220 |
221 | $infoText: #3a87ad !default;
222 | $infoBackground: #d9edf7 !default;
223 | $infoBorder: darken(adjust-hue($infoBackground, -10), 7%) !default;
224 |
225 |
226 | // Tooltips and popovers
227 | // -------------------------
228 | $tooltipColor: #fff !default;
229 | $tooltipBackground: #000 !default;
230 | $tooltipArrowWidth: 5px !default;
231 | $tooltipArrowColor: $tooltipBackground !default;
232 |
233 | $popoverBackground: #fff !default;
234 | $popoverArrowWidth: 10px !default;
235 | $popoverArrowColor: #fff !default;
236 | $popoverTitleBackground: darken($popoverBackground, 3%) !default;
237 |
238 | // Special enhancement for popovers
239 | $popoverArrowOuterWidth: $popoverArrowWidth + 1 !default;
240 | $popoverArrowOuterColor: rgba(0,0,0,.25) !default;
241 |
242 |
243 |
244 | // GRID
245 | // --------------------------------------------------
246 |
247 | // Default 940px grid
248 | // -------------------------
249 | $gridColumns: 12 !default;
250 | $gridColumnWidth: 60px !default;
251 | $gridGutterWidth: 20px !default;
252 | $gridRowWidth: ($gridColumns * $gridColumnWidth) + ($gridGutterWidth * ($gridColumns - 1)) !default;
253 |
254 | // 1200px min
255 | $gridColumnWidth1200: 70px !default;
256 | $gridGutterWidth1200: 30px !default;
257 | $gridRowWidth1200: ($gridColumns * $gridColumnWidth1200) + ($gridGutterWidth1200 * ($gridColumns - 1)) !default;
258 |
259 | // 768px-979px
260 | $gridColumnWidth768: 42px !default;
261 | $gridGutterWidth768: 20px !default;
262 | $gridRowWidth768: ($gridColumns * $gridColumnWidth768) + ($gridGutterWidth768 * ($gridColumns - 1)) !default;
263 |
264 |
265 | // Fluid grid
266 | // -------------------------
267 | $fluidGridColumnWidth: percentage($gridColumnWidth/$gridRowWidth) !default;
268 | $fluidGridGutterWidth: percentage($gridGutterWidth/$gridRowWidth) !default;
269 |
270 | // 1200px min
271 | $fluidGridColumnWidth1200: percentage($gridColumnWidth1200/$gridRowWidth1200) !default;
272 | $fluidGridGutterWidth1200: percentage($gridGutterWidth1200/$gridRowWidth1200) !default;
273 |
274 | // 768px-979px
275 | $fluidGridColumnWidth768: percentage($gridColumnWidth768/$gridRowWidth768) !default;
276 | $fluidGridGutterWidth768: percentage($gridGutterWidth768/$gridRowWidth768) !default;
277 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_sprites.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Sprites
3 | // --------------------------------------------------
4 |
5 |
6 | // ICONS
7 | // -----
8 |
9 | // All icons receive the styles of the tag with a base class
10 | // of .i and are then given a unique class to add width, height,
11 | // and background-position. Your resulting HTML will look like
12 | // .
13 |
14 | // For the white version of the icons, just add the .icon-white class:
15 | //
16 |
17 | [class^="icon-"],
18 | [class*=" icon-"] {
19 | display: inline-block;
20 | width: 14px;
21 | height: 14px;
22 | @include ie7-restore-right-whitespace();
23 | line-height: 14px;
24 | vertical-align: text-top;
25 | background-image: image-url("#{$iconSpritePath}");
26 | background-position: 14px 14px;
27 | background-repeat: no-repeat;
28 | margin-top: 1px;
29 | }
30 |
31 | /* White icons with optional class, or on hover/active states of certain elements */
32 | .icon-white,
33 | .nav > .active > a > [class^="icon-"],
34 | .nav > .active > a > [class*=" icon-"],
35 | .dropdown-menu > li > a:hover > [class^="icon-"],
36 | .dropdown-menu > li > a:hover > [class*=" icon-"],
37 | .dropdown-menu > .active > a > [class^="icon-"],
38 | .dropdown-menu > .active > a > [class*=" icon-"] {
39 | background-image: image-url("#{$iconWhiteSpritePath}");
40 | }
41 |
42 | .icon-glass { background-position: 0 0; }
43 | .icon-music { background-position: -24px 0; }
44 | .icon-search { background-position: -48px 0; }
45 | .icon-envelope { background-position: -72px 0; }
46 | .icon-heart { background-position: -96px 0; }
47 | .icon-star { background-position: -120px 0; }
48 | .icon-star-empty { background-position: -144px 0; }
49 | .icon-user { background-position: -168px 0; }
50 | .icon-film { background-position: -192px 0; }
51 | .icon-th-large { background-position: -216px 0; }
52 | .icon-th { background-position: -240px 0; }
53 | .icon-th-list { background-position: -264px 0; }
54 | .icon-ok { background-position: -288px 0; }
55 | .icon-remove { background-position: -312px 0; }
56 | .icon-zoom-in { background-position: -336px 0; }
57 | .icon-zoom-out { background-position: -360px 0; }
58 | .icon-off { background-position: -384px 0; }
59 | .icon-signal { background-position: -408px 0; }
60 | .icon-cog { background-position: -432px 0; }
61 | .icon-trash { background-position: -456px 0; }
62 |
63 | .icon-home { background-position: 0 -24px; }
64 | .icon-file { background-position: -24px -24px; }
65 | .icon-time { background-position: -48px -24px; }
66 | .icon-road { background-position: -72px -24px; }
67 | .icon-download-alt { background-position: -96px -24px; }
68 | .icon-download { background-position: -120px -24px; }
69 | .icon-upload { background-position: -144px -24px; }
70 | .icon-inbox { background-position: -168px -24px; }
71 | .icon-play-circle { background-position: -192px -24px; }
72 | .icon-repeat { background-position: -216px -24px; }
73 | .icon-refresh { background-position: -240px -24px; }
74 | .icon-list-alt { background-position: -264px -24px; }
75 | .icon-lock { background-position: -287px -24px; } // 1px off
76 | .icon-flag { background-position: -312px -24px; }
77 | .icon-headphones { background-position: -336px -24px; }
78 | .icon-volume-off { background-position: -360px -24px; }
79 | .icon-volume-down { background-position: -384px -24px; }
80 | .icon-volume-up { background-position: -408px -24px; }
81 | .icon-qrcode { background-position: -432px -24px; }
82 | .icon-barcode { background-position: -456px -24px; }
83 |
84 | .icon-tag { background-position: 0 -48px; }
85 | .icon-tags { background-position: -25px -48px; } // 1px off
86 | .icon-book { background-position: -48px -48px; }
87 | .icon-bookmark { background-position: -72px -48px; }
88 | .icon-print { background-position: -96px -48px; }
89 | .icon-camera { background-position: -120px -48px; }
90 | .icon-font { background-position: -144px -48px; }
91 | .icon-bold { background-position: -167px -48px; } // 1px off
92 | .icon-italic { background-position: -192px -48px; }
93 | .icon-text-height { background-position: -216px -48px; }
94 | .icon-text-width { background-position: -240px -48px; }
95 | .icon-align-left { background-position: -264px -48px; }
96 | .icon-align-center { background-position: -288px -48px; }
97 | .icon-align-right { background-position: -312px -48px; }
98 | .icon-align-justify { background-position: -336px -48px; }
99 | .icon-list { background-position: -360px -48px; }
100 | .icon-indent-left { background-position: -384px -48px; }
101 | .icon-indent-right { background-position: -408px -48px; }
102 | .icon-facetime-video { background-position: -432px -48px; }
103 | .icon-picture { background-position: -456px -48px; }
104 |
105 | .icon-pencil { background-position: 0 -72px; }
106 | .icon-map-marker { background-position: -24px -72px; }
107 | .icon-adjust { background-position: -48px -72px; }
108 | .icon-tint { background-position: -72px -72px; }
109 | .icon-edit { background-position: -96px -72px; }
110 | .icon-share { background-position: -120px -72px; }
111 | .icon-check { background-position: -144px -72px; }
112 | .icon-move { background-position: -168px -72px; }
113 | .icon-step-backward { background-position: -192px -72px; }
114 | .icon-fast-backward { background-position: -216px -72px; }
115 | .icon-backward { background-position: -240px -72px; }
116 | .icon-play { background-position: -264px -72px; }
117 | .icon-pause { background-position: -288px -72px; }
118 | .icon-stop { background-position: -312px -72px; }
119 | .icon-forward { background-position: -336px -72px; }
120 | .icon-fast-forward { background-position: -360px -72px; }
121 | .icon-step-forward { background-position: -384px -72px; }
122 | .icon-eject { background-position: -408px -72px; }
123 | .icon-chevron-left { background-position: -432px -72px; }
124 | .icon-chevron-right { background-position: -456px -72px; }
125 |
126 | .icon-plus-sign { background-position: 0 -96px; }
127 | .icon-minus-sign { background-position: -24px -96px; }
128 | .icon-remove-sign { background-position: -48px -96px; }
129 | .icon-ok-sign { background-position: -72px -96px; }
130 | .icon-question-sign { background-position: -96px -96px; }
131 | .icon-info-sign { background-position: -120px -96px; }
132 | .icon-screenshot { background-position: -144px -96px; }
133 | .icon-remove-circle { background-position: -168px -96px; }
134 | .icon-ok-circle { background-position: -192px -96px; }
135 | .icon-ban-circle { background-position: -216px -96px; }
136 | .icon-arrow-left { background-position: -240px -96px; }
137 | .icon-arrow-right { background-position: -264px -96px; }
138 | .icon-arrow-up { background-position: -289px -96px; } // 1px off
139 | .icon-arrow-down { background-position: -312px -96px; }
140 | .icon-share-alt { background-position: -336px -96px; }
141 | .icon-resize-full { background-position: -360px -96px; }
142 | .icon-resize-small { background-position: -384px -96px; }
143 | .icon-plus { background-position: -408px -96px; }
144 | .icon-minus { background-position: -433px -96px; }
145 | .icon-asterisk { background-position: -456px -96px; }
146 |
147 | .icon-exclamation-sign { background-position: 0 -120px; }
148 | .icon-gift { background-position: -24px -120px; }
149 | .icon-leaf { background-position: -48px -120px; }
150 | .icon-fire { background-position: -72px -120px; }
151 | .icon-eye-open { background-position: -96px -120px; }
152 | .icon-eye-close { background-position: -120px -120px; }
153 | .icon-warning-sign { background-position: -144px -120px; }
154 | .icon-plane { background-position: -168px -120px; }
155 | .icon-calendar { background-position: -192px -120px; }
156 | .icon-random { background-position: -216px -120px; width: 16px; }
157 | .icon-comment { background-position: -240px -120px; }
158 | .icon-magnet { background-position: -264px -120px; }
159 | .icon-chevron-up { background-position: -288px -120px; }
160 | .icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
161 | .icon-retweet { background-position: -336px -120px; }
162 | .icon-shopping-cart { background-position: -360px -120px; }
163 | .icon-folder-close { background-position: -384px -120px; }
164 | .icon-folder-open { background-position: -408px -120px; width: 16px; }
165 | .icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
166 | .icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
167 |
168 | .icon-hdd { background-position: 0 -144px; }
169 | .icon-bullhorn { background-position: -24px -144px; }
170 | .icon-bell { background-position: -48px -144px; }
171 | .icon-certificate { background-position: -72px -144px; }
172 | .icon-thumbs-up { background-position: -96px -144px; }
173 | .icon-thumbs-down { background-position: -120px -144px; }
174 | .icon-hand-right { background-position: -144px -144px; }
175 | .icon-hand-left { background-position: -168px -144px; }
176 | .icon-hand-up { background-position: -192px -144px; }
177 | .icon-hand-down { background-position: -216px -144px; }
178 | .icon-circle-arrow-right { background-position: -240px -144px; }
179 | .icon-circle-arrow-left { background-position: -264px -144px; }
180 | .icon-circle-arrow-up { background-position: -288px -144px; }
181 | .icon-circle-arrow-down { background-position: -312px -144px; }
182 | .icon-globe { background-position: -336px -144px; }
183 | .icon-wrench { background-position: -360px -144px; }
184 | .icon-tasks { background-position: -384px -144px; }
185 | .icon-filter { background-position: -408px -144px; }
186 | .icon-briefcase { background-position: -432px -144px; }
187 | .icon-fullscreen { background-position: -456px -144px; }
188 |
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_font-awesome.scss:
--------------------------------------------------------------------------------
1 | /* Font Awesome
2 | the iconic font designed for use with Twitter Bootstrap
3 | -------------------------------------------------------
4 | The full suite of pictographic icons, examples, and documentation
5 | can be found at: http://fortawesome.github.com/Font-Awesome/
6 |
7 | License
8 | -------------------------------------------------------
9 | The Font Awesome webfont, CSS, and LESS files are licensed under CC BY 3.0:
10 | http://creativecommons.org/licenses/by/3.0/ A mention of
11 | 'Font Awesome - http://fortawesome.github.com/Font-Awesome' in human-readable
12 | source code is considered acceptable attribution (most common on the web).
13 | If human readable source code is not available to the end user, a mention in
14 | an 'About' or 'Credits' screen is considered acceptable (most common in desktop
15 | or mobile software).
16 |
17 | Contact
18 | -------------------------------------------------------
19 | Email: dave@davegandy.com
20 | Twitter: http://twitter.com/fortaweso_me
21 | Work: http://lemonwi.se co-founder
22 |
23 | */
24 |
25 | @import "compass/css3/font-face";
26 | $font_path: "fontawesome-webfont" !default;
27 |
28 | @include font-face(
29 | 'FontAwesome',
30 | font-files(
31 | "#{$font_path}.woff", woff,
32 | "#{$font_path}.ttf", truetype,
33 | "#{$font_path}.otf", opentype,
34 | "#{$font_path}.svgz#FontAwesomeRegular", svg,
35 | "#{$font_path}.svg#FontAwesomeRegular", svg),
36 | '#{$font_path}.eot',
37 | normal,
38 | normal);
39 |
40 | /* sprites.less reset */
41 | [class^="icon-"],
42 | [class*=" icon-"] {
43 | display: inline;
44 | width: auto;
45 | height: auto;
46 | line-height: inherit;
47 | vertical-align: baseline;
48 | background-image: none;
49 | background-position: 0% 0%;
50 | background-repeat: repeat;
51 | }
52 | li[class^="icon-"],
53 | li[class*=" icon-"] {
54 | display: block;
55 | }
56 |
57 | /* Font Awesome styles
58 | ------------------------------------------------------- */
59 | [class^="icon-"]:before,
60 | [class*=" icon-"]:before {
61 | font-family: FontAwesome;
62 | font-weight: normal;
63 | font-style: normal;
64 | display: inline-block;
65 | text-decoration: inherit;
66 | }
67 |
68 | a [class^="icon-"],
69 | a [class*=" icon-"] {
70 | display: inline-block;
71 | text-decoration: inherit;
72 | }
73 |
74 | /* makes the font 33% larger relative to the icon container */
75 | .icon-large:before {
76 | vertical-align: top;
77 | font-size: 4/3em;
78 | }
79 |
80 | .btn {
81 | [class^="icon-"],
82 | [class*=" icon-"] {
83 | /* keeps button heights with and without icons the same */
84 | line-height: .9em;
85 | }
86 | }
87 |
88 | li {
89 | [class^="icon-"],
90 | [class*=" icon-"] {
91 | display: inline-block;
92 | width: 1.25em;
93 | text-align: center;
94 | }
95 | .icon-large[class^="icon-"],
96 | .icon-large[class*=" icon-"] {
97 | /* 1.5 increased font size for icon-large * 1.25 width */
98 | width: 1.5*1.25em;
99 | }
100 | }
101 |
102 | li[class^="icon-"],
103 | li[class*=" icon-"] {
104 | margin-left: 0;
105 | list-style-type: none;
106 |
107 | &:before {
108 | text-indent: -2em;
109 | text-align: center;
110 | }
111 | &.icon-large:before {
112 | text-indent: -4/3em;
113 | }
114 | }
115 |
116 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
117 | readers do not read off random characters that represent icons */
118 | .icon-glass:before { content: "\f000"; }
119 | .icon-music:before { content: "\f001"; }
120 | .icon-search:before { content: "\f002"; }
121 | .icon-envelope:before { content: "\f003"; }
122 | .icon-heart:before { content: "\f004"; }
123 | .icon-star:before { content: "\f005"; }
124 | .icon-star-empty:before { content: "\f006"; }
125 | .icon-user:before { content: "\f007"; }
126 | .icon-film:before { content: "\f008"; }
127 | .icon-th-large:before { content: "\f009"; }
128 | .icon-th:before { content: "\f00a"; }
129 | .icon-th-list:before { content: "\f00b"; }
130 | .icon-ok:before { content: "\f00c"; }
131 | .icon-remove:before { content: "\f00d"; }
132 | .icon-zoom-in:before { content: "\f00e"; }
133 |
134 | .icon-zoom-out:before { content: "\f010"; }
135 | .icon-off:before { content: "\f011"; }
136 | .icon-signal:before { content: "\f012"; }
137 | .icon-cog:before { content: "\f013"; }
138 | .icon-trash:before { content: "\f014"; }
139 | .icon-home:before { content: "\f015"; }
140 | .icon-file:before { content: "\f016"; }
141 | .icon-time:before { content: "\f017"; }
142 | .icon-road:before { content: "\f018"; }
143 | .icon-download-alt:before { content: "\f019"; }
144 | .icon-download:before { content: "\f01a"; }
145 | .icon-upload:before { content: "\f01b"; }
146 | .icon-inbox:before { content: "\f01c"; }
147 | .icon-play-circle:before { content: "\f01d"; }
148 | .icon-repeat:before { content: "\f01e"; }
149 |
150 | /* \f020 is not a valid unicode character. all shifted one down */
151 | .icon-refresh:before { content: "\f021"; }
152 | .icon-list-alt:before { content: "\f022"; }
153 | .icon-lock:before { content: "\f023"; }
154 | .icon-flag:before { content: "\f024"; }
155 | .icon-headphones:before { content: "\f025"; }
156 | .icon-volume-off:before { content: "\f026"; }
157 | .icon-volume-down:before { content: "\f027"; }
158 | .icon-volume-up:before { content: "\f028"; }
159 | .icon-qrcode:before { content: "\f029"; }
160 | .icon-barcode:before { content: "\f02a"; }
161 | .icon-tag:before { content: "\f02b"; }
162 | .icon-tags:before { content: "\f02c"; }
163 | .icon-book:before { content: "\f02d"; }
164 | .icon-bookmark:before { content: "\f02e"; }
165 | .icon-print:before { content: "\f02f"; }
166 |
167 | .icon-camera:before { content: "\f030"; }
168 | .icon-font:before { content: "\f031"; }
169 | .icon-bold:before { content: "\f032"; }
170 | .icon-italic:before { content: "\f033"; }
171 | .icon-text-height:before { content: "\f034"; }
172 | .icon-text-width:before { content: "\f035"; }
173 | .icon-align-left:before { content: "\f036"; }
174 | .icon-align-center:before { content: "\f037"; }
175 | .icon-align-right:before { content: "\f038"; }
176 | .icon-align-justify:before { content: "\f039"; }
177 | .icon-list:before { content: "\f03a"; }
178 | .icon-indent-left:before { content: "\f03b"; }
179 | .icon-indent-right:before { content: "\f03c"; }
180 | .icon-facetime-video:before { content: "\f03d"; }
181 | .icon-picture:before { content: "\f03e"; }
182 |
183 | .icon-pencil:before { content: "\f040"; }
184 | .icon-map-marker:before { content: "\f041"; }
185 | .icon-adjust:before { content: "\f042"; }
186 | .icon-tint:before { content: "\f043"; }
187 | .icon-edit:before { content: "\f044"; }
188 | .icon-share:before { content: "\f045"; }
189 | .icon-check:before { content: "\f046"; }
190 | .icon-move:before { content: "\f047"; }
191 | .icon-step-backward:before { content: "\f048"; }
192 | .icon-fast-backward:before { content: "\f049"; }
193 | .icon-backward:before { content: "\f04a"; }
194 | .icon-play:before { content: "\f04b"; }
195 | .icon-pause:before { content: "\f04c"; }
196 | .icon-stop:before { content: "\f04d"; }
197 | .icon-forward:before { content: "\f04e"; }
198 |
199 | .icon-fast-forward:before { content: "\f050"; }
200 | .icon-step-forward:before { content: "\f051"; }
201 | .icon-eject:before { content: "\f052"; }
202 | .icon-chevron-left:before { content: "\f053"; }
203 | .icon-chevron-right:before { content: "\f054"; }
204 | .icon-plus-sign:before { content: "\f055"; }
205 | .icon-minus-sign:before { content: "\f056"; }
206 | .icon-remove-sign:before { content: "\f057"; }
207 | .icon-ok-sign:before { content: "\f058"; }
208 | .icon-question-sign:before { content: "\f059"; }
209 | .icon-info-sign:before { content: "\f05a"; }
210 | .icon-screenshot:before { content: "\f05b"; }
211 | .icon-remove-circle:before { content: "\f05c"; }
212 | .icon-ok-circle:before { content: "\f05d"; }
213 | .icon-ban-circle:before { content: "\f05e"; }
214 |
215 | .icon-arrow-left:before { content: "\f060"; }
216 | .icon-arrow-right:before { content: "\f061"; }
217 | .icon-arrow-up:before { content: "\f062"; }
218 | .icon-arrow-down:before { content: "\f063"; }
219 | .icon-share-alt:before { content: "\f064"; }
220 | .icon-resize-full:before { content: "\f065"; }
221 | .icon-resize-small:before { content: "\f066"; }
222 | .icon-plus:before { content: "\f067"; }
223 | .icon-minus:before { content: "\f068"; }
224 | .icon-asterisk:before { content: "\f069"; }
225 | .icon-exclamation-sign:before { content: "\f06a"; }
226 | .icon-gift:before { content: "\f06b"; }
227 | .icon-leaf:before { content: "\f06c"; }
228 | .icon-fire:before { content: "\f06d"; }
229 | .icon-eye-open:before { content: "\f06e"; }
230 |
231 | .icon-eye-close:before { content: "\f070"; }
232 | .icon-warning-sign:before { content: "\f071"; }
233 | .icon-plane:before { content: "\f072"; }
234 | .icon-calendar:before { content: "\f073"; }
235 | .icon-random:before { content: "\f074"; }
236 | .icon-comment:before { content: "\f075"; }
237 | .icon-magnet:before { content: "\f076"; }
238 | .icon-chevron-up:before { content: "\f077"; }
239 | .icon-chevron-down:before { content: "\f078"; }
240 | .icon-retweet:before { content: "\f079"; }
241 | .icon-shopping-cart:before { content: "\f07a"; }
242 | .icon-folder-close:before { content: "\f07b"; }
243 | .icon-folder-open:before { content: "\f07c"; }
244 | .icon-resize-vertical:before { content: "\f07d"; }
245 | .icon-resize-horizontal:before { content: "\f07e"; }
246 |
247 | .icon-bar-chart:before { content: "\f080"; }
248 | .icon-twitter-sign:before { content: "\f081"; }
249 | .icon-facebook-sign:before { content: "\f082"; }
250 | .icon-camera-retro:before { content: "\f083"; }
251 | .icon-key:before { content: "\f084"; }
252 | .icon-cogs:before { content: "\f085"; }
253 | .icon-comments:before { content: "\f086"; }
254 | .icon-thumbs-up:before { content: "\f087"; }
255 | .icon-thumbs-down:before { content: "\f088"; }
256 | .icon-star-half:before { content: "\f089"; }
257 | .icon-heart-empty:before { content: "\f08a"; }
258 | .icon-signout:before { content: "\f08b"; }
259 | .icon-linkedin-sign:before { content: "\f08c"; }
260 | .icon-pushpin:before { content: "\f08d"; }
261 | .icon-external-link:before { content: "\f08e"; }
262 |
263 | .icon-signin:before { content: "\f090"; }
264 | .icon-trophy:before { content: "\f091"; }
265 | .icon-github-sign:before { content: "\f092"; }
266 | .icon-upload-alt:before { content: "\f093"; }
267 | .icon-lemon:before { content: "\f094"; }
--------------------------------------------------------------------------------
/www/styles/compass_twitter_bootstrap/_navbar.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Navbars (Redux)
3 | // --------------------------------------------------
4 |
5 |
6 | // COMMON STYLES
7 | // -------------
8 |
9 | // Base class and wrapper
10 | .navbar {
11 | overflow: visible;
12 | margin-bottom: $baseLineHeight;
13 | color: $navbarText;
14 |
15 | // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
16 | *position: relative;
17 | *z-index: 2;
18 | }
19 |
20 | // Inner for background effects
21 | // Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
22 | .navbar-inner {
23 | min-height: $navbarHeight;
24 | padding-left: 20px;
25 | padding-right: 20px;
26 | @include gradient-vertical($navbarBackgroundHighlight, $navbarBackground);
27 | border: 1px solid $navbarBorder;
28 | @include border-radius(4px);
29 | @include box-shadow(0 1px 4px rgba(0,0,0,.065));
30 | }
31 |
32 | // Set width to auto for default container
33 | // We then reset it for fixed navbars in the #gridSystem mixin
34 | .navbar .container {
35 | width: auto;
36 | }
37 |
38 | // Override the default collapsed state
39 | .nav-collapse.collapse {
40 | height: auto;
41 | }
42 |
43 |
44 | // Brand: website or project name
45 | // -------------------------
46 | .navbar .brand {
47 | float: left;
48 | display: block;
49 | // Vertically center the text given $navbarHeight
50 | padding: (($navbarHeight - $baseLineHeight) / 2) 20px (($navbarHeight - $baseLineHeight) / 2);
51 | margin-left: -20px; // negative indent to left-align the text down the page
52 | font-size: 20px;
53 | font-weight: 200;
54 | color: $navbarBrandColor;
55 | text-shadow: 0 1px 0 $navbarBackgroundHighlight;
56 | &:hover {
57 | text-decoration: none;
58 | }
59 | }
60 |
61 | // Plain text in topbar
62 | // -------------------------
63 | .navbar-text {
64 | margin-bottom: 0;
65 | line-height: $navbarHeight;
66 | }
67 |
68 | // Janky solution for now to account for links outside the .nav
69 | // -------------------------
70 | .navbar-link {
71 | color: $navbarLinkColor;
72 | &:hover {
73 | color: $navbarLinkColorHover;
74 | }
75 | }
76 |
77 | // Dividers in navbar
78 | // -------------------------
79 | .navbar .divider-vertical {
80 | height: $navbarHeight;
81 | margin: 0 9px;
82 | border-left: 1px solid $navbarBackground;
83 | border-right: 1px solid $navbarBackgroundHighlight;
84 | }
85 |
86 | // Buttons in navbar
87 | // -------------------------
88 | .navbar .btn,
89 | .navbar .btn-group {
90 | @include navbarVerticalAlign(28px); // Vertically center in navbar
91 | }
92 | .navbar .btn-group .btn {
93 | margin: 0; // then undo the margin here so we don't accidentally double it
94 | }
95 |
96 | // Navbar forms
97 | .navbar-form {
98 | margin-bottom: 0; // remove default bottom margin
99 | @include clearfix();
100 | input,
101 | select,
102 | .radio,
103 | .checkbox {
104 | @include navbarVerticalAlign(30px); // Vertically center in navbar
105 | }
106 | input,
107 | select,
108 | .btn {
109 | display: inline-block;
110 | margin-bottom: 0;
111 | }
112 | input[type="image"],
113 | input[type="checkbox"],
114 | input[type="radio"] {
115 | margin-top: 3px;
116 | }
117 | .input-append,
118 | .input-prepend {
119 | margin-top: 6px;
120 | white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left
121 | input {
122 | margin-top: 0; // remove the margin on top since it's on the parent
123 | }
124 | }
125 | }
126 |
127 | // Navbar search
128 | .navbar-search {
129 | position: relative;
130 | float: left;
131 | @include navbarVerticalAlign(30px); // Vertically center in navbar
132 | margin-bottom: 0;
133 | .search-query {
134 | margin-bottom: 0;
135 | padding: 4px 14px;
136 | @include font-sans-serif(13px, normal, 1);
137 | @include border-radius(15px);
138 | }
139 | }
140 |
141 |
142 |
143 | // Static navbar
144 | // -------------------------
145 |
146 | .navbar-static-top {
147 | position: static;
148 | width: 100%;
149 | margin-bottom: 0; // remove 18px margin for default navbar
150 | .navbar-inner {
151 | @include border-radius(0);
152 | }
153 | }
154 |
155 |
156 |
157 | // Fixed navbar
158 | // -------------------------
159 |
160 | // Shared (top/bottom) styles
161 | .navbar-fixed-top,
162 | .navbar-fixed-bottom {
163 | position: fixed;
164 | right: 0;
165 | left: 0;
166 | z-index: $zindexFixedNavbar;
167 | margin-bottom: 0; // remove 18px margin for default navbar
168 | }
169 | .navbar-fixed-top,
170 | .navbar-fixed-bottom,
171 | .navbar-static-top {
172 | .navbar-inner {
173 | border: 0;
174 | }
175 | }
176 | .navbar-fixed-top .navbar-inner,
177 | .navbar-fixed-bottom .navbar-inner {
178 | padding-left: 0;
179 | padding-right: 0;
180 | @include border-radius(0);
181 | }
182 |
183 | // Reset container width
184 | // Required here as we reset the width earlier on and the grid mixins don't override early enough
185 | .navbar-static-top .container,
186 | .navbar-fixed-top .container,
187 | .navbar-fixed-bottom .container {
188 | @include core-span($gridColumns);
189 | }
190 |
191 | // Fixed to top
192 | .navbar-fixed-top {
193 | top: 0;
194 | }
195 | .navbar-fixed-top,
196 | .navbar-static-top {
197 | .navbar-inner {
198 | @include box-shadow(#{inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1)});
199 | }
200 | }
201 |
202 | // Fixed to bottom
203 | .navbar-fixed-bottom {
204 | bottom: 0;
205 | .navbar-inner {
206 | @include box-shadow(#{inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1)});
207 | }
208 | }
209 |
210 |
211 |
212 | // NAVIGATION
213 | // ----------
214 |
215 | .navbar .nav {
216 | position: relative;
217 | left: 0;
218 | display: block;
219 | float: left;
220 | margin: 0 10px 0 0;
221 | }
222 | .navbar .nav.pull-right {
223 | float: right; // redeclare due to specificity
224 | }
225 | .navbar .nav > li {
226 | float: left;
227 | }
228 |
229 | // Links
230 | .navbar .nav > li > a {
231 | float: none;
232 | // Vertically center the text given $navbarHeight
233 | padding: (($navbarHeight - $baseLineHeight) / 2) 15px (($navbarHeight - $baseLineHeight) / 2);
234 | color: $navbarLinkColor;
235 | text-decoration: none;
236 | text-shadow: 0 1px 0 $navbarBackgroundHighlight;
237 | }
238 | .navbar .nav .dropdown-toggle .caret {
239 | margin-top: 8px;
240 | }
241 |
242 | // Hover
243 | .navbar .nav > li > a:focus,
244 | .navbar .nav > li > a:hover {
245 | background-color: $navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active
246 | color: $navbarLinkColorHover;
247 | text-decoration: none;
248 | }
249 |
250 | // Active nav items
251 | .navbar .nav > .active > a,
252 | .navbar .nav > .active > a:hover,
253 | .navbar .nav > .active > a:focus {
254 | color: $navbarLinkColorActive;
255 | text-decoration: none;
256 | background-color: $navbarLinkBackgroundActive;
257 | -webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
258 | -moz-box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
259 | box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
260 | }
261 |
262 | // Navbar button for toggling navbar items in responsive layouts
263 | // These definitions need to come after '.navbar .btn'
264 | .navbar .btn-navbar {
265 | display: none;
266 | float: right;
267 | padding: 7px 10px;
268 | margin-left: 5px;
269 | margin-right: 5px;
270 | @include buttonBackground(darken($navbarBackgroundHighlight, 5%), darken($navbarBackground, 5.25%));
271 | @include box-shadow(#{inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)});
272 | }
273 | .navbar .btn-navbar .icon-bar {
274 | display: block;
275 | width: 18px;
276 | height: 2px;
277 | background-color: #f5f5f5;
278 | @include border-radius(1px);
279 | @include box-shadow(0 1px 0 rgba(0,0,0,.25));
280 | }
281 | .btn-navbar .icon-bar + .icon-bar {
282 | margin-top: 3px;
283 | }
284 |
285 |
286 |
287 | // Dropdown menus
288 | // --------------
289 |
290 | // Menu position and menu carets
291 | .navbar .nav > li > .dropdown-menu {
292 | &:before {
293 | content: '';
294 | display: inline-block;
295 | border-left: 7px solid transparent;
296 | border-right: 7px solid transparent;
297 | border-bottom: 7px solid #ccc;
298 | border-bottom-color: $dropdownBorder;
299 | position: absolute;
300 | top: -7px;
301 | left: 9px;
302 | }
303 | &:after {
304 | content: '';
305 | display: inline-block;
306 | border-left: 6px solid transparent;
307 | border-right: 6px solid transparent;
308 | border-bottom: 6px solid $dropdownBackground;
309 | position: absolute;
310 | top: -6px;
311 | left: 10px;
312 | }
313 | }
314 | // Menu position and menu caret support for dropups via extra dropup class
315 | .navbar-fixed-bottom .dropdown-menu {
316 | &:before {
317 | border-top: 7px solid #ccc;
318 | border-top-color: $dropdownBorder;
319 | border-bottom: 0;
320 | bottom: -7px;
321 | top: auto;
322 | }
323 | &:after {
324 | border-top: 6px solid $dropdownBackground;
325 | border-bottom: 0;
326 | bottom: -6px;
327 | top: auto;
328 | }
329 | }
330 |
331 | // Remove background color from open dropdown
332 | .navbar .nav li.dropdown.open > .dropdown-toggle,
333 | .navbar .nav li.dropdown.active > .dropdown-toggle,
334 | .navbar .nav li.dropdown.open.active > .dropdown-toggle {
335 | background-color: $navbarLinkBackgroundActive;
336 | color: $navbarLinkColorActive;
337 | }
338 | .navbar .nav li.dropdown > .dropdown-toggle .caret {
339 | border-top-color: $navbarLinkColor;
340 | border-bottom-color: $navbarLinkColor;
341 | }
342 | .navbar .nav li.dropdown.open > .dropdown-toggle .caret,
343 | .navbar .nav li.dropdown.active > .dropdown-toggle .caret,
344 | .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
345 | border-top-color: $navbarLinkColorActive;
346 | border-bottom-color: $navbarLinkColorActive;
347 | }
348 |
349 | // Right aligned menus need alt position
350 | .navbar .pull-right > li > .dropdown-menu,
351 | .navbar .nav > li > .dropdown-menu.pull-right {
352 | left: auto;
353 | right: 0;
354 | &:before {
355 | left: auto;
356 | right: 12px;
357 | }
358 | &:after {
359 | left: auto;
360 | right: 13px;
361 | }
362 | .dropdown-menu {
363 | left: auto;
364 | right: 100%;
365 | margin-left: 0;
366 | margin-right: -1px;
367 | @include border-radius(6px 0 6px 6px);
368 | }
369 | }
370 |
371 |
372 | // Inverted navbar
373 | // -------------------------
374 |
375 | .navbar-inverse {
376 | color: $navbarInverseText;
377 |
378 | .navbar-inner {
379 | @include gradient-vertical($navbarInverseBackgroundHighlight, $navbarInverseBackground);
380 | border-color: $navbarInverseBorder;
381 | }
382 |
383 | .brand,
384 | .nav > li > a {
385 | color: $navbarInverseLinkColor;
386 | text-shadow: 0 -1px 0 rgba(0,0,0,.25);
387 | &:hover {
388 | color: $navbarInverseLinkColorHover;
389 | }
390 | }
391 |
392 | .nav > li > a:focus,
393 | .nav > li > a:hover {
394 | background-color: $navbarInverseLinkBackgroundHover;
395 | color: $navbarInverseLinkColorHover;
396 | }
397 |
398 | .nav .active > a,
399 | .nav .active > a:hover,
400 | .nav .active > a:focus {
401 | color: $navbarInverseLinkColorActive;
402 | background-color: $navbarInverseLinkBackgroundActive;
403 | }
404 |
405 | // Inline text links
406 | .navbar-link {
407 | color: $navbarInverseLinkColor;
408 | &:hover {
409 | color: $navbarInverseLinkColorHover;
410 | }
411 | }
412 |
413 | // Dividers in navbar
414 | .divider-vertical {
415 | border-left-color: $navbarInverseBackground;
416 | border-right-color: $navbarInverseBackgroundHighlight;
417 | }
418 |
419 | // Dropdowns
420 | .nav li.dropdown.open > .dropdown-toggle,
421 | .nav li.dropdown.active > .dropdown-toggle,
422 | .nav li.dropdown.open.active > .dropdown-toggle {
423 | background-color: $navbarInverseLinkBackgroundActive;
424 | color: $navbarInverseLinkColorActive;
425 | }
426 | .nav li.dropdown > .dropdown-toggle .caret {
427 | border-top-color: $navbarInverseLinkColor;
428 | border-bottom-color: $navbarInverseLinkColor;
429 | }
430 | .nav li.dropdown.open > .dropdown-toggle .caret,
431 | .nav li.dropdown.active > .dropdown-toggle .caret,
432 | .nav li.dropdown.open.active > .dropdown-toggle .caret {
433 | border-top-color: $navbarInverseLinkColorActive;
434 | border-bottom-color: $navbarInverseLinkColorActive;
435 | }
436 |
437 | // Navbar search
438 | .navbar-search {
439 | .search-query {
440 | color: $white;
441 | background-color: $navbarInverseSearchBackground;
442 | border-color: $navbarInverseSearchBorder;
443 | @include box-shadow(#{inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)});
444 | @include transition(none);
445 | @include placeholder($navbarInverseSearchPlaceholderColor);
446 |
447 | // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
448 | &:focus,
449 | &.focused {
450 | padding: 5px 15px;
451 | color: $grayDark;
452 | text-shadow: 0 1px 0 $white;
453 | background-color: $navbarInverseSearchBackgroundFocus;
454 | border: 0;
455 | @include box-shadow(0 0 3px rgba(0,0,0,.15));
456 | outline: 0;
457 | }
458 | }
459 | }
460 |
461 | // Navbar collapse button
462 | .btn-navbar {
463 | @include buttonBackground(darken($navbarInverseBackgroundHighlight, 5%), darken($navbarInverseBackground, 5%));
464 | }
465 |
466 | }
467 |
--------------------------------------------------------------------------------