├── 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 | 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 |
    38 |
    39 | Add a task 40 | 41 | 42 | 43 |
    44 |
    45 |
    46 |
    47 |
    48 |
    49 | Share this list 50 | 51 | 52 | 53 |
    54 |
    55 |
    56 |
    57 |
    58 | 59 | 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 = $('
  • ' 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 | --------------------------------------------------------------------------------