Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -1,4 +1,10 @@
|
||||
### HEAD
|
||||
* Update to Bootstrap 3 RC1
|
||||
* Update to jQuery 1.10.2
|
||||
* Change media directory from `/assets/` to `/media/`
|
||||
* Update to Google Universal Analytics
|
||||
* Show author display name for author archives
|
||||
* Add Serbian translation
|
||||
* Remove post tags from templates
|
||||
* Remove TinyMCE valid elements tweaks (no longer necessary)
|
||||
* Remove additional widget classes
|
||||
|
||||
@@ -6,6 +6,7 @@ Roots is a starting WordPress theme made for developers that’s based on
|
||||
* Source: [https://github.com/retlehs/roots](https://github.com/retlehs/roots)
|
||||
* Home Page: [http://www.rootstheme.com/](http://www.rootstheme.com/)
|
||||
* Twitter: [@retlehs](https://twitter.com/retlehs)
|
||||
* Newsletter: [Subscribe](http://www.rootstheme.com/subscribe/)
|
||||
* Google Group: [http://groups.google.com/group/roots-theme](http://groups.google.com/group/roots-theme)
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -29,6 +29,9 @@ body { }
|
||||
.main { }
|
||||
|
||||
|
||||
/* Gallery Shortcode */
|
||||
.row.gallery-row { padding: 15px 0; }
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Sidebar
|
||||
|
||||
9
assets/css/bootstrap-responsive.css
vendored
9
assets/css/bootstrap-responsive.css
vendored
File diff suppressed because one or more lines are too long
8
assets/css/bootstrap.css
vendored
8
assets/css/bootstrap.css
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB |
File diff suppressed because one or more lines are too long
6
assets/js/vendor/jquery-1.10.2.min.js
vendored
Normal file
6
assets/js/vendor/jquery-1.10.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5
assets/js/vendor/jquery-1.9.1.min.js
vendored
5
assets/js/vendor/jquery-1.9.1.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -5,30 +5,27 @@
|
||||
|
||||
// Parent container
|
||||
.accordion {
|
||||
margin-bottom: @baseLineHeight;
|
||||
margin-bottom: @line-height-computed;
|
||||
}
|
||||
|
||||
// Group == heading + body
|
||||
.accordion-group {
|
||||
margin-bottom: 2px;
|
||||
border: 1px solid #e5e5e5;
|
||||
.border-radius(@baseBorderRadius);
|
||||
border: 1px solid @accordion-border-color;
|
||||
border-radius: @border-radius-base;
|
||||
}
|
||||
.accordion-heading {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.accordion-heading .accordion-toggle {
|
||||
display: block;
|
||||
padding: 8px 15px;
|
||||
}
|
||||
|
||||
// General toggle styles
|
||||
.accordion-toggle {
|
||||
cursor: pointer;
|
||||
.accordion-toggle {
|
||||
display: block;
|
||||
padding: 8px 15px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
// Inner needs the styles because you can't animate properly with any styles on the element
|
||||
.accordion-inner {
|
||||
padding: 9px 15px;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
border-top: 1px solid @accordion-border-color;
|
||||
}
|
||||
|
||||
@@ -7,73 +7,63 @@
|
||||
// -------------------------
|
||||
|
||||
.alert {
|
||||
padding: 8px 35px 8px 14px;
|
||||
margin-bottom: @baseLineHeight;
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,.5);
|
||||
background-color: @warningBackground;
|
||||
border: 1px solid @warningBorder;
|
||||
.border-radius(@baseBorderRadius);
|
||||
}
|
||||
.alert,
|
||||
.alert h4 {
|
||||
// Specified for the h4 to prevent conflicts of changing @headingsColor
|
||||
color: @warningText;
|
||||
}
|
||||
.alert h4 {
|
||||
margin: 0;
|
||||
}
|
||||
padding: 10px 35px 10px 15px;
|
||||
margin-bottom: @line-height-computed;
|
||||
color: @alert-text;
|
||||
background-color: @alert-bg;
|
||||
border: 1px solid @alert-border;
|
||||
border-radius: @alert-border-radius;
|
||||
|
||||
// Adjust close link position
|
||||
.alert .close {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
right: -21px;
|
||||
line-height: @baseLineHeight;
|
||||
}
|
||||
// Headings for larger alerts
|
||||
h4 {
|
||||
margin-top: 0;
|
||||
// Specified for the h4 to prevent conflicts of changing @headingsColor
|
||||
color: inherit;
|
||||
}
|
||||
// Match the hr to the border of the alert
|
||||
hr {
|
||||
border-top-color: darken(@alert-border, 5%);
|
||||
}
|
||||
// Provide class for links that match alerts
|
||||
.alert-link {
|
||||
font-weight: 500;
|
||||
color: darken(@alert-text, 10%);
|
||||
}
|
||||
|
||||
// Adjust close link position
|
||||
.close {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
right: -21px;
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
// Alternate styles
|
||||
// -------------------------
|
||||
|
||||
.alert-success {
|
||||
background-color: @successBackground;
|
||||
border-color: @successBorder;
|
||||
color: @successText;
|
||||
.alert-variant(@alert-success-bg, @alert-success-border, @alert-success-text);
|
||||
}
|
||||
.alert-success h4 {
|
||||
color: @successText;
|
||||
}
|
||||
.alert-danger,
|
||||
.alert-error {
|
||||
background-color: @errorBackground;
|
||||
border-color: @errorBorder;
|
||||
color: @errorText;
|
||||
}
|
||||
.alert-danger h4,
|
||||
.alert-error h4 {
|
||||
color: @errorText;
|
||||
.alert-danger {
|
||||
.alert-variant(@alert-danger-bg, @alert-danger-border, @alert-danger-text);
|
||||
}
|
||||
.alert-info {
|
||||
background-color: @infoBackground;
|
||||
border-color: @infoBorder;
|
||||
color: @infoText;
|
||||
.alert-variant(@alert-info-bg, @alert-info-border, @alert-info-text);
|
||||
}
|
||||
.alert-info h4 {
|
||||
color: @infoText;
|
||||
}
|
||||
|
||||
|
||||
// Block alerts
|
||||
// -------------------------
|
||||
|
||||
.alert-block {
|
||||
padding-top: 14px;
|
||||
padding-bottom: 14px;
|
||||
}
|
||||
.alert-block > p,
|
||||
.alert-block > ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.alert-block p + p {
|
||||
margin-top: 5px;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
|
||||
> p,
|
||||
> ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
p + p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
51
assets/less/badges.less
Normal file
51
assets/less/badges.less
Normal file
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// Badges
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Base classes
|
||||
.badge {
|
||||
display: inline-block;
|
||||
min-width: 10px;
|
||||
padding: 3px 7px;
|
||||
font-size: @font-size-small;
|
||||
font-weight: bold;
|
||||
color: @badge-color;
|
||||
line-height: 1;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
background-color: @badge-bg;
|
||||
border-radius: 10px;
|
||||
|
||||
// Empty labels/badges collapse
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Hover state, but only for links
|
||||
a.badge {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @badge-link-hover-color;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
// Quick fix for labels/badges in buttons
|
||||
.btn .badge {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
// Account for counters in navs
|
||||
a.list-group-item.active > .badge,
|
||||
.nav-pills > .active > a > .badge {
|
||||
color: @badge-active-color;
|
||||
background-color: @badge-active-bg;
|
||||
}
|
||||
.nav-pills > li > a > .badge {
|
||||
margin-left: 3px;
|
||||
}
|
||||
44
assets/less/bootstrap.less
vendored
44
assets/less/bootstrap.less
vendored
@@ -1,46 +1,43 @@
|
||||
/*!
|
||||
* Bootstrap v2.3.1
|
||||
* Bootstrap v3.0.0
|
||||
*
|
||||
* Copyright 2012 Twitter, Inc
|
||||
* Copyright 2013 Twitter, Inc
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||
* Designed and built with all the love in the world by @mdo and @fat.
|
||||
*/
|
||||
|
||||
// Core variables and mixins
|
||||
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
|
||||
@import "variables.less";
|
||||
@import "mixins.less";
|
||||
|
||||
// CSS Reset
|
||||
@import "reset.less";
|
||||
// Reset
|
||||
@import "normalize.less";
|
||||
@import "print.less";
|
||||
|
||||
// Grid system and page structure
|
||||
// Core CSS
|
||||
@import "scaffolding.less";
|
||||
@import "grid.less";
|
||||
@import "layouts.less";
|
||||
|
||||
// Base CSS
|
||||
@import "type.less";
|
||||
@import "code.less";
|
||||
@import "forms.less";
|
||||
@import "grid.less";
|
||||
|
||||
@import "tables.less";
|
||||
@import "forms.less";
|
||||
@import "buttons.less";
|
||||
|
||||
// Components: common
|
||||
@import "sprites.less";
|
||||
@import "dropdowns.less";
|
||||
@import "wells.less";
|
||||
@import "component-animations.less";
|
||||
@import "dropdowns.less";
|
||||
@import "list-group.less";
|
||||
@import "panels.less";
|
||||
@import "wells.less";
|
||||
@import "close.less";
|
||||
|
||||
// Components: Buttons & Alerts
|
||||
@import "buttons.less";
|
||||
@import "button-groups.less";
|
||||
@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
|
||||
|
||||
// Components: Nav
|
||||
@import "navs.less";
|
||||
@import "navbar.less";
|
||||
@import "button-groups.less";
|
||||
@import "breadcrumbs.less";
|
||||
@import "pagination.less";
|
||||
@import "pager.less";
|
||||
@@ -51,13 +48,16 @@
|
||||
@import "popovers.less";
|
||||
|
||||
// Components: Misc
|
||||
@import "alerts.less";
|
||||
@import "thumbnails.less";
|
||||
@import "media.less";
|
||||
@import "labels-badges.less";
|
||||
@import "labels.less";
|
||||
@import "badges.less";
|
||||
@import "progress-bars.less";
|
||||
@import "accordion.less";
|
||||
@import "carousel.less";
|
||||
@import "hero-unit.less";
|
||||
@import "jumbotron.less";
|
||||
|
||||
// Utility classes
|
||||
@import "utilities.less"; // Has to be last to override when necessary
|
||||
@import "responsive-utilities.less";
|
||||
|
||||
@@ -5,20 +5,19 @@
|
||||
|
||||
.breadcrumb {
|
||||
padding: 8px 15px;
|
||||
margin: 0 0 @baseLineHeight;
|
||||
margin-bottom: @line-height-computed;
|
||||
list-style: none;
|
||||
background-color: #f5f5f5;
|
||||
.border-radius(@baseBorderRadius);
|
||||
background-color: @breadcrumb-bg;
|
||||
border-radius: @border-radius-base;
|
||||
> li {
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
text-shadow: 0 1px 0 @white;
|
||||
> .divider {
|
||||
&+li:before {
|
||||
content: "/\00a0"; // Unicode space added since inline-block means non-collapsing white-space
|
||||
padding: 0 5px;
|
||||
color: #ccc;
|
||||
color: @breadcrumb-color;
|
||||
}
|
||||
}
|
||||
> .active {
|
||||
color: @grayLight;
|
||||
color: @breadcrumb-active-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,90 +2,85 @@
|
||||
// Button groups
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Make the div behave like a button
|
||||
.btn-group {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
font-size: 0; // remove as part 1 of font-size inline-block hack
|
||||
vertical-align: middle; // match .btn alignment given font-size hack above
|
||||
white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page)
|
||||
.ie7-restore-left-whitespace();
|
||||
// Button carets
|
||||
.btn .caret {
|
||||
border-top-color: @btn-default-color;
|
||||
}
|
||||
.dropup .btn .caret {
|
||||
border-bottom-color: @btn-default-color;
|
||||
}
|
||||
|
||||
// Space out series of button groups
|
||||
.btn-group + .btn-group {
|
||||
margin-left: 5px;
|
||||
// Make the div behave like a button
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle; // match .btn alignment given font-size hack above
|
||||
> .btn {
|
||||
position: relative;
|
||||
float: left;
|
||||
// Bring the "active" button to the front
|
||||
&:hover,
|
||||
&:active {
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Prevent double borders when buttons are next to each other
|
||||
.btn-group .btn + .btn {
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
// Optional: Group multiple button groups together for a toolbar
|
||||
.btn-toolbar {
|
||||
font-size: 0; // Hack to remove whitespace that results from using inline-block
|
||||
margin-top: @baseLineHeight / 2;
|
||||
margin-bottom: @baseLineHeight / 2;
|
||||
> .btn + .btn,
|
||||
> .btn-group + .btn,
|
||||
> .btn + .btn-group {
|
||||
margin-left: 5px;
|
||||
.clearfix();
|
||||
|
||||
.btn-group {
|
||||
float: left;
|
||||
}
|
||||
// Space out series of button groups
|
||||
> .btn,
|
||||
> .btn-group {
|
||||
+ .btn,
|
||||
+ .btn-group {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Float them, remove border radius, then re-add to first and last elements
|
||||
.btn-group > .btn {
|
||||
position: relative;
|
||||
.border-radius(0);
|
||||
}
|
||||
.btn-group > .btn + .btn {
|
||||
margin-left: -1px;
|
||||
}
|
||||
.btn-group > .btn,
|
||||
.btn-group > .dropdown-menu,
|
||||
.btn-group > .popover {
|
||||
font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack
|
||||
}
|
||||
|
||||
// Reset fonts for other sizes
|
||||
.btn-group > .btn-mini {
|
||||
font-size: @fontSizeMini;
|
||||
}
|
||||
.btn-group > .btn-small {
|
||||
font-size: @fontSizeSmall;
|
||||
}
|
||||
.btn-group > .btn-large {
|
||||
font-size: @fontSizeLarge;
|
||||
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
// 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
|
||||
.btn-group > .btn:first-child {
|
||||
margin-left: 0;
|
||||
.border-top-left-radius(@baseBorderRadius);
|
||||
.border-bottom-left-radius(@baseBorderRadius);
|
||||
&:not(:last-child):not(.dropdown-toggle) {
|
||||
.border-right-radius(0);
|
||||
}
|
||||
}
|
||||
// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
|
||||
.btn-group > .btn:last-child,
|
||||
.btn-group > .dropdown-toggle {
|
||||
.border-top-right-radius(@baseBorderRadius);
|
||||
.border-bottom-right-radius(@baseBorderRadius);
|
||||
}
|
||||
// Reset corners for large buttons
|
||||
.btn-group > .btn.large:first-child {
|
||||
margin-left: 0;
|
||||
.border-top-left-radius(@borderRadiusLarge);
|
||||
.border-bottom-left-radius(@borderRadiusLarge);
|
||||
}
|
||||
.btn-group > .btn.large:last-child,
|
||||
.btn-group > .large.dropdown-toggle {
|
||||
.border-top-right-radius(@borderRadiusLarge);
|
||||
.border-bottom-right-radius(@borderRadiusLarge);
|
||||
.btn-group > .btn:last-child:not(:first-child),
|
||||
.btn-group > .dropdown-toggle:not(:first-child) {
|
||||
.border-left-radius(0);
|
||||
}
|
||||
|
||||
// On hover/focus/active, bring the proper btn to front
|
||||
.btn-group > .btn:hover,
|
||||
.btn-group > .btn:focus,
|
||||
.btn-group > .btn:active,
|
||||
.btn-group > .btn.active {
|
||||
z-index: 2;
|
||||
// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
|
||||
.btn-group > .btn-group {
|
||||
float: left;
|
||||
}
|
||||
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
|
||||
border-radius: 0;
|
||||
}
|
||||
.btn-group > .btn-group:first-child {
|
||||
> .btn:last-child,
|
||||
> .dropdown-toggle {
|
||||
.border-right-radius(0);
|
||||
}
|
||||
}
|
||||
.btn-group > .btn-group:last-child > .btn:first-child {
|
||||
.border-left-radius(0);
|
||||
}
|
||||
|
||||
// On active and open, don't show outline
|
||||
@@ -103,78 +98,26 @@
|
||||
.btn-group > .btn + .dropdown-toggle {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
.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)");
|
||||
*padding-top: 5px;
|
||||
*padding-bottom: 5px;
|
||||
}
|
||||
.btn-group > .btn-mini + .dropdown-toggle {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
*padding-top: 2px;
|
||||
*padding-bottom: 2px;
|
||||
}
|
||||
.btn-group > .btn-small + .dropdown-toggle {
|
||||
*padding-top: 5px;
|
||||
*padding-bottom: 4px;
|
||||
}
|
||||
.btn-group > .btn-large + .dropdown-toggle {
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
*padding-top: 7px;
|
||||
*padding-bottom: 7px;
|
||||
}
|
||||
|
||||
.btn-group.open {
|
||||
|
||||
// The clickable button for toggling the menu
|
||||
// Remove the gradient and set the same inset shadow as the :active state
|
||||
.dropdown-toggle {
|
||||
background-image: none;
|
||||
.box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
|
||||
}
|
||||
|
||||
// Keep the hover's background when dropdown is open
|
||||
.btn.dropdown-toggle {
|
||||
background-color: @btnBackgroundHighlight;
|
||||
}
|
||||
.btn-primary.dropdown-toggle {
|
||||
background-color: @btnPrimaryBackgroundHighlight;
|
||||
}
|
||||
.btn-warning.dropdown-toggle {
|
||||
background-color: @btnWarningBackgroundHighlight;
|
||||
}
|
||||
.btn-danger.dropdown-toggle {
|
||||
background-color: @btnDangerBackgroundHighlight;
|
||||
}
|
||||
.btn-success.dropdown-toggle {
|
||||
background-color: @btnSuccessBackgroundHighlight;
|
||||
}
|
||||
.btn-info.dropdown-toggle {
|
||||
background-color: @btnInfoBackgroundHighlight;
|
||||
}
|
||||
.btn-inverse.dropdown-toggle {
|
||||
background-color: @btnInverseBackgroundHighlight;
|
||||
}
|
||||
// The clickable button for toggling the menu
|
||||
// Remove the gradient and set the same inset shadow as the :active state
|
||||
.btn-group.open .dropdown-toggle {
|
||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
}
|
||||
|
||||
|
||||
// Reposition the caret
|
||||
.btn .caret {
|
||||
margin-top: 8px;
|
||||
margin-left: 0;
|
||||
}
|
||||
// Carets in other button sizes
|
||||
.btn-large .caret {
|
||||
margin-top: 6px;
|
||||
}
|
||||
.btn-large .caret {
|
||||
border-left-width: 5px;
|
||||
border-right-width: 5px;
|
||||
border-top-width: 5px;
|
||||
}
|
||||
.btn-mini .caret,
|
||||
.btn-small .caret {
|
||||
margin-top: 8px;
|
||||
border-width: 5px;
|
||||
}
|
||||
// Upside down carets for .dropup
|
||||
.dropup .btn-large .caret {
|
||||
@@ -182,48 +125,47 @@
|
||||
}
|
||||
|
||||
|
||||
// Vertical button groups
|
||||
// ----------------------
|
||||
|
||||
// Account for other colors
|
||||
.btn-primary,
|
||||
.btn-warning,
|
||||
.btn-danger,
|
||||
.btn-info,
|
||||
.btn-success,
|
||||
.btn-inverse {
|
||||
.caret {
|
||||
border-top-color: @white;
|
||||
border-bottom-color: @white;
|
||||
.btn-group-vertical > .btn {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
+ .btn {
|
||||
margin-top: -1px;
|
||||
}
|
||||
}
|
||||
.btn-group-vertical .btn {
|
||||
&:not(:first-child):not(:last-child) {
|
||||
border-radius: 0;
|
||||
}
|
||||
&:first-child {
|
||||
.border-bottom-radius(0);
|
||||
}
|
||||
&:last-child {
|
||||
.border-top-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Vertical button groups
|
||||
// Justified button groups
|
||||
// ----------------------
|
||||
|
||||
.btn-group-vertical {
|
||||
display: inline-block; // makes buttons only take up the width they need
|
||||
.ie7-inline-block();
|
||||
.btn-group-justified {
|
||||
display: table;
|
||||
width: 100%;
|
||||
.btn {
|
||||
float: none;
|
||||
display: table-cell;
|
||||
width: 1%;
|
||||
}
|
||||
}
|
||||
.btn-group-vertical > .btn {
|
||||
display: block;
|
||||
float: none;
|
||||
max-width: 100%;
|
||||
.border-radius(0);
|
||||
}
|
||||
.btn-group-vertical > .btn + .btn {
|
||||
margin-left: 0;
|
||||
margin-top: -1px;
|
||||
}
|
||||
.btn-group-vertical > .btn:first-child {
|
||||
.border-radius(@baseBorderRadius @baseBorderRadius 0 0);
|
||||
}
|
||||
.btn-group-vertical > .btn:last-child {
|
||||
.border-radius(0 0 @baseBorderRadius @baseBorderRadius);
|
||||
}
|
||||
.btn-group-vertical > .btn-large:first-child {
|
||||
.border-radius(@borderRadiusLarge @borderRadiusLarge 0 0);
|
||||
}
|
||||
.btn-group-vertical > .btn-large:last-child {
|
||||
.border-radius(0 0 @borderRadiusLarge @borderRadiusLarge);
|
||||
|
||||
|
||||
// Checkbox and radio options
|
||||
.btn-group[data-toggle="buttons"] > .btn > input[type="radio"],
|
||||
.btn-group[data-toggle="buttons"] > .btn > input[type="checkbox"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -6,109 +6,140 @@
|
||||
// Base styles
|
||||
// --------------------------------------------------
|
||||
|
||||
// Core
|
||||
// Core styles
|
||||
.btn {
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
padding: 4px 12px;
|
||||
padding: @padding-base-vertical @padding-base-horizontal;
|
||||
margin-bottom: 0; // For input.btn
|
||||
font-size: @baseFontSize;
|
||||
line-height: @baseLineHeight;
|
||||
font-size: @font-size-base;
|
||||
font-weight: 500;
|
||||
line-height: @line-height-base;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
.buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75));
|
||||
border: 1px solid @btnBorder;
|
||||
*border: 0; // Remove the border to prevent IE7's black border on input:focus
|
||||
border-bottom-color: darken(@btnBorder, 10%);
|
||||
.border-radius(@baseBorderRadius);
|
||||
.ie7-restore-left-whitespace(); // Give IE7 some love
|
||||
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
|
||||
border: 1px solid transparent;
|
||||
border-radius: @border-radius-base;
|
||||
white-space: nowrap;
|
||||
|
||||
// Hover/focus state
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @grayDark;
|
||||
text-decoration: none;
|
||||
background-position: 0 -15px;
|
||||
|
||||
// transition is only when going to hover/focus, otherwise the background
|
||||
// behind the gradient (there for IE<=9 fallback) gets mismatched
|
||||
.transition(background-position .1s linear);
|
||||
}
|
||||
|
||||
// Focus state for keyboard and accessibility
|
||||
&:focus {
|
||||
.tab-focus();
|
||||
}
|
||||
|
||||
// Active state
|
||||
&.active,
|
||||
&:active {
|
||||
background-image: none;
|
||||
outline: 0;
|
||||
.box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @btn-hover-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:active,
|
||||
&.active {
|
||||
outline: 0;
|
||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
}
|
||||
|
||||
// Disabled state
|
||||
&.disabled,
|
||||
&[disabled] {
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
cursor: default;
|
||||
background-image: none;
|
||||
.opacity(65);
|
||||
pointer-events: none; // Future-proof disabling of clicks
|
||||
.opacity(.65);
|
||||
.box-shadow(none);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Alternate buttons
|
||||
// --------------------------------------------------
|
||||
|
||||
.btn-default {
|
||||
.btn-pseudo-states(@btn-default-color, @btn-default-bg, @btn-default-border);
|
||||
}
|
||||
.btn-primary {
|
||||
.btn-pseudo-states(@btn-primary-color, @btn-primary-bg, @btn-primary-border);
|
||||
}
|
||||
// Warning appears as orange
|
||||
.btn-warning {
|
||||
.btn-pseudo-states(@btn-warning-color, @btn-warning-bg, @btn-warning-border);
|
||||
}
|
||||
// Danger and error appear as red
|
||||
.btn-danger {
|
||||
.btn-pseudo-states(@btn-danger-color, @btn-danger-bg, @btn-danger-border);
|
||||
}
|
||||
// Success appears as green
|
||||
.btn-success {
|
||||
.btn-pseudo-states(@btn-success-color, @btn-success-bg, @btn-success-border);
|
||||
}
|
||||
// Info appears as blue-green
|
||||
.btn-info {
|
||||
.btn-pseudo-states(@btn-info-color, @btn-info-bg, @btn-info-border);
|
||||
}
|
||||
|
||||
|
||||
// Link buttons
|
||||
// -------------------------
|
||||
|
||||
// Make a button look and behave like a link
|
||||
.btn-link {
|
||||
color: @link-color;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
border-radius: 0;
|
||||
|
||||
&,
|
||||
&:active,
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
background-color: transparent;
|
||||
.box-shadow(none);
|
||||
}
|
||||
&,
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
border-color: transparent;
|
||||
}
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @link-hover-color;
|
||||
text-decoration: underline;
|
||||
background-color: transparent;
|
||||
}
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @gray-dark;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Button Sizes
|
||||
// --------------------------------------------------
|
||||
|
||||
// Large
|
||||
.btn-large {
|
||||
padding: @paddingLarge;
|
||||
font-size: @fontSizeLarge;
|
||||
.border-radius(@borderRadiusLarge);
|
||||
padding: @padding-large-vertical @padding-large-horizontal;
|
||||
font-size: @font-size-large;
|
||||
border-radius: @border-radius-large;
|
||||
}
|
||||
.btn-large [class^="icon-"],
|
||||
.btn-large [class*=" icon-"] {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
// Small
|
||||
.btn-small {
|
||||
padding: @paddingSmall;
|
||||
font-size: @fontSizeSmall;
|
||||
.border-radius(@borderRadiusSmall);
|
||||
}
|
||||
.btn-small [class^="icon-"],
|
||||
.btn-small [class*=" icon-"] {
|
||||
margin-top: 0;
|
||||
}
|
||||
.btn-mini [class^="icon-"],
|
||||
.btn-mini [class*=" icon-"] {
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
// Mini
|
||||
.btn-mini {
|
||||
padding: @paddingMini;
|
||||
font-size: @fontSizeMini;
|
||||
.border-radius(@borderRadiusSmall);
|
||||
padding: @padding-small-vertical @padding-small-horizontal;
|
||||
font-size: @font-size-small;
|
||||
line-height: 1.5; // ensure proper height of button next to small input
|
||||
border-radius: @border-radius-small;
|
||||
}
|
||||
|
||||
|
||||
// Block button
|
||||
// -------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
.btn-block {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
.box-sizing(border-box);
|
||||
}
|
||||
|
||||
// Vertically space out multiple block buttons
|
||||
@@ -124,105 +155,3 @@ input[type="button"] {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Alternate buttons
|
||||
// --------------------------------------------------
|
||||
|
||||
// Provide *some* extra contrast for those who can get it
|
||||
.btn-primary.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-inverse.active {
|
||||
color: rgba(255,255,255,.75);
|
||||
}
|
||||
|
||||
// Set the backgrounds
|
||||
// -------------------------
|
||||
.btn-primary {
|
||||
.buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
|
||||
}
|
||||
// Warning appears are orange
|
||||
.btn-warning {
|
||||
.buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
|
||||
}
|
||||
// Danger and error appear as red
|
||||
.btn-danger {
|
||||
.buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
|
||||
}
|
||||
// Success appears as green
|
||||
.btn-success {
|
||||
.buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
|
||||
}
|
||||
// Info appears as a neutral blue
|
||||
.btn-info {
|
||||
.buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
|
||||
}
|
||||
// Inverse appears as dark gray
|
||||
.btn-inverse {
|
||||
.buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
|
||||
}
|
||||
|
||||
|
||||
// Cross-browser Jank
|
||||
// --------------------------------------------------
|
||||
|
||||
button.btn,
|
||||
input[type="submit"].btn {
|
||||
|
||||
// Firefox 3.6 only I believe
|
||||
&::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
// IE7 has some default padding on button controls
|
||||
*padding-top: 3px;
|
||||
*padding-bottom: 3px;
|
||||
|
||||
&.btn-large {
|
||||
*padding-top: 7px;
|
||||
*padding-bottom: 7px;
|
||||
}
|
||||
&.btn-small {
|
||||
*padding-top: 3px;
|
||||
*padding-bottom: 3px;
|
||||
}
|
||||
&.btn-mini {
|
||||
*padding-top: 1px;
|
||||
*padding-bottom: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Link buttons
|
||||
// --------------------------------------------------
|
||||
|
||||
// Make a button look and behave like a link
|
||||
.btn-link,
|
||||
.btn-link:active,
|
||||
.btn-link[disabled] {
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
.box-shadow(none);
|
||||
}
|
||||
.btn-link {
|
||||
border-color: transparent;
|
||||
cursor: pointer;
|
||||
color: @linkColor;
|
||||
.border-radius(0);
|
||||
}
|
||||
.btn-link:hover,
|
||||
.btn-link:focus {
|
||||
color: @linkColorHover;
|
||||
text-decoration: underline;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-link[disabled]:hover,
|
||||
.btn-link[disabled]:focus {
|
||||
color: @grayDark;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -3,19 +3,15 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Wrapper for the slide container and indicators
|
||||
.carousel {
|
||||
position: relative;
|
||||
margin-bottom: @baseLineHeight;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.carousel-inner {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.carousel-inner {
|
||||
|
||||
> .item {
|
||||
display: none;
|
||||
@@ -25,7 +21,7 @@
|
||||
// Account for jankitude on images
|
||||
> img,
|
||||
> a > img {
|
||||
display: block;
|
||||
.img-responsive();
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
@@ -70,89 +66,140 @@
|
||||
|
||||
.carousel-control {
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 15px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-top: -20px;
|
||||
font-size: 60px;
|
||||
font-weight: 100;
|
||||
line-height: 30px;
|
||||
color: @white;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 15%;
|
||||
.opacity(.5);
|
||||
font-size: 20px;
|
||||
color: @carousel-control-color;
|
||||
text-align: center;
|
||||
background: @grayDarker;
|
||||
border: 3px solid @white;
|
||||
.border-radius(23px);
|
||||
.opacity(50);
|
||||
text-shadow: @carousel-text-shadow;
|
||||
// We can't have this transition here because webkit cancels the carousel
|
||||
// animation if you trip this while in the middle of another animation.
|
||||
|
||||
// we can't have this transition here
|
||||
// because webkit cancels the carousel
|
||||
// animation if you trip this while
|
||||
// in the middle of another animation
|
||||
// ;_;
|
||||
// .transition(opacity .2s linear);
|
||||
|
||||
// Reposition the right one
|
||||
// Set gradients for backgrounds
|
||||
&.left {
|
||||
#gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));
|
||||
background-color: transparent;
|
||||
}
|
||||
&.right {
|
||||
left: auto;
|
||||
right: 15px;
|
||||
right: 0;
|
||||
#gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
// Hover/focus state
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @white;
|
||||
color: @carousel-control-color;
|
||||
text-decoration: none;
|
||||
.opacity(90);
|
||||
.opacity(.9);
|
||||
}
|
||||
|
||||
// Toggles
|
||||
.glyphicon,
|
||||
.icon-prev,
|
||||
.icon-next {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
z-index: 5;
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin-top: -10px;
|
||||
margin-left: -10px;
|
||||
font-family: serif;
|
||||
}
|
||||
// Non-glyphicon toggles
|
||||
.icon-prev {
|
||||
&:before {
|
||||
content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
|
||||
}
|
||||
}
|
||||
.icon-next {
|
||||
&:before {
|
||||
content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carousel indicator pips
|
||||
// Optional indicator pips
|
||||
// -----------------------------
|
||||
.carousel-indicators {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
z-index: 5;
|
||||
margin: 0;
|
||||
bottom: 10px;
|
||||
left: 50%;
|
||||
z-index: 15;
|
||||
width: 120px;
|
||||
margin-left: -60px;
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
text-align: center;
|
||||
|
||||
li {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 10px;
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin-left: 5px;
|
||||
margin: 1px;
|
||||
text-indent: -999px;
|
||||
background-color: #ccc;
|
||||
background-color: rgba(255,255,255,.25);
|
||||
border-radius: 5px;
|
||||
border: 1px solid @carousel-indicator-border-color;
|
||||
border-radius: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.active {
|
||||
background-color: #fff;
|
||||
margin: 0;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background-color: @carousel-indicator-active-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// Caption for text below images
|
||||
// Optional captions
|
||||
// -----------------------------
|
||||
|
||||
// Hidden by default for smaller viewports
|
||||
.carousel-caption {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
padding: 15px;
|
||||
background: @grayDark;
|
||||
background: rgba(0,0,0,.75);
|
||||
left: 15%;
|
||||
right: 15%;
|
||||
bottom: 20px;
|
||||
z-index: 10;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
color: @carousel-caption-color;
|
||||
text-align: center;
|
||||
text-shadow: @carousel-text-shadow;
|
||||
& .btn {
|
||||
text-shadow: none; // No shadow for button elements in carousel-caption
|
||||
}
|
||||
}
|
||||
.carousel-caption h4,
|
||||
.carousel-caption p {
|
||||
color: @white;
|
||||
line-height: @baseLineHeight;
|
||||
}
|
||||
.carousel-caption h4 {
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
.carousel-caption p {
|
||||
margin-bottom: 0;
|
||||
|
||||
|
||||
// Scale up controls for tablets and up
|
||||
@media screen and (min-width: @screen-tablet) {
|
||||
|
||||
// Scale up the controls a smidge
|
||||
.carousel-control .glyphicon,
|
||||
.carousel-control .icon-prev,
|
||||
.carousel-control .icon-next {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin-top: -15px;
|
||||
margin-left: -15px;
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
// Show and left align the captions
|
||||
.carousel-caption {
|
||||
left: 20%;
|
||||
right: 20%;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
// Move up the indicators
|
||||
.carousel-indicators {
|
||||
bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,28 +5,29 @@
|
||||
|
||||
.close {
|
||||
float: right;
|
||||
font-size: 20px;
|
||||
font-size: (@font-size-base * 1.5);
|
||||
font-weight: bold;
|
||||
line-height: @baseLineHeight;
|
||||
color: @black;
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,1);
|
||||
.opacity(20);
|
||||
line-height: 1;
|
||||
color: @close-color;
|
||||
text-shadow: @close-text-shadow;
|
||||
.opacity(.2);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @black;
|
||||
color: @close-color;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
.opacity(40);
|
||||
.opacity(.5);
|
||||
}
|
||||
|
||||
// Additional properties for button version
|
||||
// iOS requires the button element instead of an anchor tag.
|
||||
// If you want the anchor version, it requires `href="#"`.
|
||||
button& {
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Additional properties for button version
|
||||
// iOS requires the button element instead of an anchor tag.
|
||||
// If you want the anchor version, it requires `href="#"`.
|
||||
button.close {
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
@@ -6,48 +6,42 @@
|
||||
// Inline and block code styles
|
||||
code,
|
||||
pre {
|
||||
padding: 0 3px 2px;
|
||||
#font > #family > .monospace;
|
||||
font-size: @baseFontSize - 2;
|
||||
color: @grayDark;
|
||||
.border-radius(3px);
|
||||
font-family: @font-family-monospace;
|
||||
}
|
||||
|
||||
// Inline code
|
||||
code {
|
||||
padding: 2px 4px;
|
||||
color: #d14;
|
||||
background-color: #f7f7f9;
|
||||
border: 1px solid #e1e1e8;
|
||||
font-size: 90%;
|
||||
color: @code-color;
|
||||
background-color: @code-bg;
|
||||
white-space: nowrap;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
// Blocks of code
|
||||
pre {
|
||||
display: block;
|
||||
padding: (@baseLineHeight - 1) / 2;
|
||||
margin: 0 0 @baseLineHeight / 2;
|
||||
font-size: @baseFontSize - 1; // 14px to 13px
|
||||
line-height: @baseLineHeight;
|
||||
padding: ((@line-height-computed - 1) / 2);
|
||||
margin: 0 0 (@line-height-computed / 2);
|
||||
font-size: (@font-size-base - 1); // 14px to 13px
|
||||
line-height: @line-height-base;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #ccc; // fallback for IE7-8
|
||||
border: 1px solid rgba(0,0,0,.15);
|
||||
.border-radius(@baseBorderRadius);
|
||||
color: @gray-dark;
|
||||
background-color: @pre-bg;
|
||||
border: 1px solid @pre-border-color;
|
||||
border-radius: @border-radius-base;
|
||||
|
||||
// Make prettyprint styles more spaced out for readability
|
||||
&.prettyprint {
|
||||
margin-bottom: @baseLineHeight;
|
||||
margin-bottom: @line-height-computed;
|
||||
}
|
||||
|
||||
// Account for some code outputs that place code tags in pre tags
|
||||
code {
|
||||
padding: 0;
|
||||
color: inherit;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
@@ -58,4 +52,4 @@ pre {
|
||||
.pre-scrollable {
|
||||
max-height: 340px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
// Component animations
|
||||
// --------------------------------------------------
|
||||
|
||||
// Heads up!
|
||||
//
|
||||
// We don't use the `.opacity()` mixin here since it causes a bug with text
|
||||
// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.
|
||||
|
||||
.fade {
|
||||
opacity: 0;
|
||||
@@ -12,11 +16,14 @@
|
||||
}
|
||||
|
||||
.collapse {
|
||||
display: none;
|
||||
&.in {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.collapsing {
|
||||
position: relative;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
.transition(height .35s ease);
|
||||
&.in {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,62 +3,39 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
|
||||
.dropup,
|
||||
.dropdown {
|
||||
position: relative;
|
||||
}
|
||||
.dropdown-toggle {
|
||||
// The caret makes the toggle a bit too tall in IE7
|
||||
*margin-bottom: -3px;
|
||||
}
|
||||
.dropdown-toggle:active,
|
||||
.open .dropdown-toggle {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
// Dropdown arrow/caret
|
||||
// --------------------
|
||||
.caret {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
vertical-align: top;
|
||||
border-top: 4px solid @black;
|
||||
margin-left: 2px;
|
||||
vertical-align: middle;
|
||||
border-top: 4px solid @dropdown-caret-color;
|
||||
border-right: 4px solid transparent;
|
||||
border-left: 4px solid transparent;
|
||||
content: "";
|
||||
}
|
||||
|
||||
// Place the caret
|
||||
.dropdown .caret {
|
||||
margin-top: 8px;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
// The dropdown menu (ul)
|
||||
// ----------------------
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: @zindexDropdown;
|
||||
z-index: @zindex-dropdown;
|
||||
display: none; // none by default, but block on "open" of the menu
|
||||
float: left;
|
||||
min-width: 160px;
|
||||
padding: 5px 0;
|
||||
margin: 2px 0 0; // override default ul
|
||||
list-style: none;
|
||||
background-color: @dropdownBackground;
|
||||
border: 1px solid #ccc; // Fallback for IE7-8
|
||||
border: 1px solid @dropdownBorder;
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
.border-radius(6px);
|
||||
.box-shadow(0 5px 10px rgba(0,0,0,.2));
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
background-color: @dropdown-bg;
|
||||
border: 1px solid @dropdown-fallback-border; // IE8 fallback
|
||||
border: 1px solid @dropdown-border;
|
||||
border-radius: @border-radius-base;
|
||||
.box-shadow(0 6px 12px rgba(0,0,0,.175));
|
||||
.background-clip(padding-box);
|
||||
|
||||
// Aligns the dropdown menu to right
|
||||
&.pull-right {
|
||||
@@ -68,7 +45,7 @@
|
||||
|
||||
// Dividers (basically an hr) within the dropdown
|
||||
.divider {
|
||||
.nav-divider(@dropdownDividerTop, @dropdownDividerBottom);
|
||||
.nav-divider(@dropdown-divider-bg);
|
||||
}
|
||||
|
||||
// Links within the dropdown menu
|
||||
@@ -77,62 +54,93 @@
|
||||
padding: 3px 20px;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
line-height: @baseLineHeight;
|
||||
color: @dropdownLinkColor;
|
||||
white-space: nowrap;
|
||||
line-height: @line-height-base;
|
||||
color: @dropdown-link-color;
|
||||
white-space: nowrap; // prevent links from randomly breaking onto new lines
|
||||
}
|
||||
}
|
||||
|
||||
// Hover/Focus state
|
||||
// -----------
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus,
|
||||
.dropdown-submenu:hover > a,
|
||||
.dropdown-submenu:focus > a {
|
||||
text-decoration: none;
|
||||
color: @dropdownLinkColorHover;
|
||||
#gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%));
|
||||
.dropdown-menu > li > a {
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
color: @dropdown-link-hover-color;
|
||||
#gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));
|
||||
}
|
||||
}
|
||||
|
||||
// Active state
|
||||
// ------------
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
color: @dropdownLinkColorActive;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
#gradient > .vertical(@dropdownLinkBackgroundActive, darken(@dropdownLinkBackgroundActive, 5%));
|
||||
.dropdown-menu > .active > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @dropdown-link-active-color;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
#gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
|
||||
}
|
||||
}
|
||||
|
||||
// Disabled state
|
||||
// --------------
|
||||
// Gray out text and ensure the hover/focus state remains gray
|
||||
.dropdown-menu > .disabled > a,
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
color: @grayLight;
|
||||
.dropdown-menu > .disabled > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @gray-light;
|
||||
}
|
||||
}
|
||||
// Nuke hover/focus effects
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
background-image: none; // Remove CSS gradient
|
||||
.reset-filter();
|
||||
cursor: default;
|
||||
.dropdown-menu > .disabled > a {
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
background-image: none; // Remove CSS gradient
|
||||
.reset-filter();
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
// Open state for the dropdown
|
||||
// ---------------------------
|
||||
.open {
|
||||
// IE7's z-index only goes to the nearest positioned ancestor, which would
|
||||
// make the menu appear below buttons that appeared later on the page
|
||||
*z-index: @zindexDropdown;
|
||||
|
||||
& > .dropdown-menu {
|
||||
// Show the menu
|
||||
> .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// Remove the outline when :focus is triggered
|
||||
> a {
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Dropdown section headers
|
||||
// ---------------------------
|
||||
.dropdown-header {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
font-size: @font-size-small;
|
||||
line-height: @line-height-base;
|
||||
color: @gray-light;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Backdrop to catch body clicks on mobile, etc.
|
||||
// ---------------------------
|
||||
.dropdown-backdrop {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
top: 0;
|
||||
z-index: @zindex-dropdown - 10;
|
||||
}
|
||||
|
||||
// Right aligned dropdowns
|
||||
@@ -151,7 +159,7 @@
|
||||
// Reverse the caret
|
||||
.caret {
|
||||
border-top: 0;
|
||||
border-bottom: 4px solid @black;
|
||||
border-bottom: 4px solid @dropdown-caret-color;
|
||||
content: "";
|
||||
}
|
||||
// Different positioning for bottom up menu
|
||||
@@ -161,77 +169,3 @@
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
// Sub menus
|
||||
// ---------------------------
|
||||
.dropdown-submenu {
|
||||
position: relative;
|
||||
}
|
||||
// Default dropdowns
|
||||
.dropdown-submenu > .dropdown-menu {
|
||||
top: 0;
|
||||
left: 100%;
|
||||
margin-top: -6px;
|
||||
margin-left: -1px;
|
||||
.border-radius(0 6px 6px 6px);
|
||||
}
|
||||
.dropdown-submenu:hover > .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// Dropups
|
||||
.dropup .dropdown-submenu > .dropdown-menu {
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: -2px;
|
||||
.border-radius(5px 5px 5px 0);
|
||||
}
|
||||
|
||||
// Caret to indicate there is a submenu
|
||||
.dropdown-submenu > a:after {
|
||||
display: block;
|
||||
content: " ";
|
||||
float: right;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
border-width: 5px 0 5px 5px;
|
||||
border-left-color: darken(@dropdownBackground, 20%);
|
||||
margin-top: 5px;
|
||||
margin-right: -10px;
|
||||
}
|
||||
.dropdown-submenu:hover > a:after {
|
||||
border-left-color: @dropdownLinkColorHover;
|
||||
}
|
||||
|
||||
// Left aligned submenus
|
||||
.dropdown-submenu.pull-left {
|
||||
// Undo the float
|
||||
// Yes, this is awkward since .pull-left adds a float, but it sticks to our conventions elsewhere.
|
||||
float: none;
|
||||
|
||||
// Positioning the submenu
|
||||
> .dropdown-menu {
|
||||
left: -100%;
|
||||
margin-left: 10px;
|
||||
.border-radius(6px 0 6px 6px);
|
||||
}
|
||||
}
|
||||
|
||||
// Tweak nav headers
|
||||
// -----------------
|
||||
// Increase padding from 15px to 20px on sides
|
||||
.dropdown .dropdown-menu .nav-header {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
// Typeahead
|
||||
// ---------
|
||||
.typeahead {
|
||||
z-index: 1051;
|
||||
margin-top: 2px; // give it some space to breathe
|
||||
.border-radius(@baseBorderRadius);
|
||||
}
|
||||
|
||||
@@ -3,13 +3,9 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// GENERAL STYLES
|
||||
// --------------
|
||||
|
||||
// Make all forms have space below them
|
||||
form {
|
||||
margin: 0 0 @baseLineHeight;
|
||||
}
|
||||
// Normalize non-controls
|
||||
//
|
||||
// Restyle and baseline non-control form elements.
|
||||
|
||||
fieldset {
|
||||
padding: 0;
|
||||
@@ -17,153 +13,43 @@ fieldset {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
// Groups of fields with labels on top (legends)
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: @baseLineHeight;
|
||||
font-size: @baseFontSize * 1.5;
|
||||
line-height: @baseLineHeight * 2;
|
||||
color: @grayDark;
|
||||
margin-bottom: @line-height-computed;
|
||||
font-size: (@font-size-base * 1.5);
|
||||
line-height: inherit;
|
||||
color: @gray-dark;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
|
||||
// Small
|
||||
small {
|
||||
font-size: @baseLineHeight * .75;
|
||||
color: @grayLight;
|
||||
}
|
||||
border-bottom: 1px solid @legend-border-color;
|
||||
}
|
||||
|
||||
// Set font for forms
|
||||
label,
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
#font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here
|
||||
}
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
font-family: @baseFontFamily; // And only set font-family here for those that need it (note the missing label element)
|
||||
}
|
||||
|
||||
// Identify controls by their labels
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
// Form controls
|
||||
// -------------------------
|
||||
|
||||
// Shared size and type resets
|
||||
select,
|
||||
textarea,
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
input[type="datetime"],
|
||||
input[type="datetime-local"],
|
||||
input[type="date"],
|
||||
input[type="month"],
|
||||
input[type="time"],
|
||||
input[type="week"],
|
||||
input[type="number"],
|
||||
input[type="email"],
|
||||
input[type="url"],
|
||||
input[type="search"],
|
||||
input[type="tel"],
|
||||
input[type="color"],
|
||||
.uneditable-input {
|
||||
display: inline-block;
|
||||
height: @baseLineHeight;
|
||||
padding: 4px 6px;
|
||||
margin-bottom: @baseLineHeight / 2;
|
||||
font-size: @baseFontSize;
|
||||
line-height: @baseLineHeight;
|
||||
color: @gray;
|
||||
.border-radius(@inputBorderRadius);
|
||||
vertical-align: middle;
|
||||
margin-bottom: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
// Reset appearance properties for textual inputs and textarea
|
||||
// Declare width for legacy (can't be on input[type=*] selectors or it's too specific)
|
||||
input,
|
||||
textarea,
|
||||
.uneditable-input {
|
||||
width: 206px; // plus 12px padding and 2px border
|
||||
}
|
||||
// Reset height since textareas have rows
|
||||
textarea {
|
||||
height: auto;
|
||||
}
|
||||
// Everything else
|
||||
textarea,
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
input[type="datetime"],
|
||||
input[type="datetime-local"],
|
||||
input[type="date"],
|
||||
input[type="month"],
|
||||
input[type="time"],
|
||||
input[type="week"],
|
||||
input[type="number"],
|
||||
input[type="email"],
|
||||
input[type="url"],
|
||||
input[type="search"],
|
||||
input[type="tel"],
|
||||
input[type="color"],
|
||||
.uneditable-input {
|
||||
background-color: @inputBackground;
|
||||
border: 1px solid @inputBorder;
|
||||
.box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
|
||||
.transition(~"border linear .2s, box-shadow linear .2s");
|
||||
|
||||
// Focus state
|
||||
&:focus {
|
||||
border-color: rgba(82,168,236,.8);
|
||||
outline: 0;
|
||||
outline: thin dotted \9; /* IE6-9 */
|
||||
.box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)");
|
||||
}
|
||||
// Normalize form controls
|
||||
|
||||
// Override content-box in Normalize (* isn't specific enough)
|
||||
input[type="search"] {
|
||||
.box-sizing(border-box);
|
||||
}
|
||||
|
||||
// Position radios and checkboxes better
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
margin: 4px 0 0;
|
||||
*margin-top: 0; /* IE7 */
|
||||
margin-top: 1px \9; /* IE8-9 */
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
// Reset width of input images, buttons, radios, checkboxes
|
||||
input[type="file"],
|
||||
input[type="image"],
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
input[type="button"],
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
width: auto; // Override of generic input selector
|
||||
}
|
||||
|
||||
// Set the height of select and file controls to match text inputs
|
||||
select,
|
||||
input[type="file"] {
|
||||
height: @inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */
|
||||
*margin-top: 4px; /* For IE7, add top margin to align select with labels */
|
||||
line-height: @inputHeight;
|
||||
}
|
||||
|
||||
// Make select elements obey height by applying a border
|
||||
select {
|
||||
width: 220px; // default input width + 10px of padding that doesn't get applied
|
||||
border: 1px solid @inputBorder;
|
||||
background-color: @inputBackground; // Chrome on Linux and Mobile Safari need background-color
|
||||
display: block;
|
||||
}
|
||||
|
||||
// Make multiple select elements height not fixed
|
||||
@@ -172,519 +58,366 @@ select[size] {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
// Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611
|
||||
select optgroup {
|
||||
font-size: inherit;
|
||||
font-style: inherit;
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
// Focus for select, file, radio, and checkbox
|
||||
select:focus,
|
||||
input[type="file"]:focus,
|
||||
input[type="radio"]:focus,
|
||||
input[type="checkbox"]:focus {
|
||||
.tab-focus();
|
||||
}
|
||||
|
||||
|
||||
// Uneditable inputs
|
||||
// -------------------------
|
||||
|
||||
// Make uneditable inputs look inactive
|
||||
.uneditable-input,
|
||||
.uneditable-textarea {
|
||||
color: @grayLight;
|
||||
background-color: darken(@inputBackground, 1%);
|
||||
border-color: @inputBorder;
|
||||
.box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
// For text that needs to appear as an input but should not be an input
|
||||
.uneditable-input {
|
||||
overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
// Make uneditable textareas behave like a textarea
|
||||
.uneditable-textarea {
|
||||
width: auto;
|
||||
height: auto;
|
||||
// Fix for Chrome number input
|
||||
// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.
|
||||
// See https://github.com/twbs/bootstrap/issues/8350 for more.
|
||||
input[type="number"] {
|
||||
&::-webkit-outer-spin-button,
|
||||
&::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Placeholder
|
||||
// -------------------------
|
||||
|
||||
// Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector
|
||||
input,
|
||||
textarea {
|
||||
//
|
||||
// Placeholder text gets special styles because when browsers invalidate entire
|
||||
// lines if it doesn't understand a selector/
|
||||
.form-control {
|
||||
.placeholder();
|
||||
}
|
||||
|
||||
|
||||
// CHECKBOXES & RADIOS
|
||||
// -------------------
|
||||
// Common form controls
|
||||
//
|
||||
// Shared size and type resets for form controls. Apply `.form-control` to any
|
||||
// of the following form controls:
|
||||
//
|
||||
// select
|
||||
// textarea
|
||||
// input[type="text"]
|
||||
// input[type="password"]
|
||||
// input[type="datetime"]
|
||||
// input[type="datetime-local"]
|
||||
// input[type="date"]
|
||||
// input[type="month"]
|
||||
// input[type="time"]
|
||||
// input[type="week"]
|
||||
// input[type="number"]
|
||||
// input[type="email"]
|
||||
// input[type="url"]
|
||||
// input[type="search"]
|
||||
// input[type="tel"]
|
||||
// input[type="color"]
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
|
||||
padding: @padding-base-vertical @padding-base-horizontal;
|
||||
font-size: @font-size-base;
|
||||
line-height: @line-height-base;
|
||||
color: @gray;
|
||||
vertical-align: middle;
|
||||
background-color: @input-bg;
|
||||
border: 1px solid @input-border;
|
||||
border-radius: @input-border-radius;
|
||||
.box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
|
||||
.transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
|
||||
|
||||
&:focus {
|
||||
border-color: rgba(82,168,236,.8);
|
||||
outline: 0;
|
||||
.box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)");
|
||||
}
|
||||
|
||||
// Disabled and read-only inputs
|
||||
// Note: HTML5 says that inputs under a fieldset > legend:first-child won't be
|
||||
// disabled if the fieldset is disabled. Due to implementation difficulty,
|
||||
// we don't honor that edge case; we style them as disabled anyway.
|
||||
&[disabled],
|
||||
&[readonly],
|
||||
fieldset[disabled] & {
|
||||
cursor: not-allowed;
|
||||
background-color: @input-bg-disabled;
|
||||
}
|
||||
|
||||
// Reset height for `textarea`s
|
||||
textarea& {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Form groups
|
||||
//
|
||||
// Designed to help with the organization and spacing of vertical forms. For
|
||||
// horizontal forms, use the predefined grid classes.
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
|
||||
// Checkboxes and radios
|
||||
//
|
||||
// Indent the labels to position radios/checkboxes as hanging controls.
|
||||
|
||||
// Indent the labels to position radios/checkboxes as hanging
|
||||
.radio,
|
||||
.checkbox {
|
||||
min-height: @baseLineHeight; // clear the floating input if there is no label text
|
||||
display: block;
|
||||
min-height: @line-height-computed; // clear the floating input if there is no label text
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding-left: 20px;
|
||||
vertical-align: middle;
|
||||
label {
|
||||
display: inline;
|
||||
margin-bottom: 0;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.radio input[type="radio"],
|
||||
.checkbox input[type="checkbox"] {
|
||||
.radio-inline input[type="radio"],
|
||||
.checkbox input[type="checkbox"],
|
||||
.checkbox-inline input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
||||
// Move the options list down to align with labels
|
||||
.controls > .radio:first-child,
|
||||
.controls > .checkbox:first-child {
|
||||
padding-top: 5px; // has to be padding because margin collaspes
|
||||
.radio + .radio,
|
||||
.checkbox + .checkbox {
|
||||
margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
|
||||
}
|
||||
|
||||
// Radios and checkboxes on same line
|
||||
// TODO v3: Convert .inline to .control-inline
|
||||
.radio.inline,
|
||||
.checkbox.inline {
|
||||
.radio-inline,
|
||||
.checkbox-inline {
|
||||
display: inline-block;
|
||||
padding-top: 5px;
|
||||
padding-left: 20px;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
}
|
||||
.radio.inline + .radio.inline,
|
||||
.checkbox.inline + .checkbox.inline {
|
||||
.radio-inline + .radio-inline,
|
||||
.checkbox-inline + .checkbox-inline {
|
||||
margin-top: 0;
|
||||
margin-left: 10px; // space out consecutive inline controls
|
||||
}
|
||||
|
||||
|
||||
|
||||
// INPUT SIZES
|
||||
// -----------
|
||||
// Form control sizing
|
||||
//
|
||||
// Relative text size, padding, and border-radii changes for form controls. For
|
||||
// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
|
||||
// element gets special love because it's special, and that's a fact!
|
||||
|
||||
// General classes for quick sizes
|
||||
.input-mini { width: 60px; }
|
||||
.input-small { width: 90px; }
|
||||
.input-medium { width: 150px; }
|
||||
.input-large { width: 210px; }
|
||||
.input-xlarge { width: 270px; }
|
||||
.input-xxlarge { width: 530px; }
|
||||
|
||||
// Grid style input sizes
|
||||
input[class*="span"],
|
||||
select[class*="span"],
|
||||
textarea[class*="span"],
|
||||
.uneditable-input[class*="span"],
|
||||
// Redeclare since the fluid row class is more specific
|
||||
.row-fluid input[class*="span"],
|
||||
.row-fluid select[class*="span"],
|
||||
.row-fluid textarea[class*="span"],
|
||||
.row-fluid .uneditable-input[class*="span"] {
|
||||
float: none;
|
||||
margin-left: 0;
|
||||
.form-control {
|
||||
&.input-large {
|
||||
height: @input-height-large;
|
||||
padding: @padding-large-vertical @padding-large-horizontal;
|
||||
font-size: @font-size-large;
|
||||
border-radius: @border-radius-large;
|
||||
}
|
||||
&.input-small {
|
||||
height: @input-height-small;
|
||||
padding: @padding-small-vertical @padding-small-horizontal;
|
||||
font-size: @font-size-small;
|
||||
border-radius: @border-radius-small;
|
||||
}
|
||||
}
|
||||
// Ensure input-prepend/append never wraps
|
||||
.input-append input[class*="span"],
|
||||
.input-append .uneditable-input[class*="span"],
|
||||
.input-prepend input[class*="span"],
|
||||
.input-prepend .uneditable-input[class*="span"],
|
||||
.row-fluid input[class*="span"],
|
||||
.row-fluid select[class*="span"],
|
||||
.row-fluid textarea[class*="span"],
|
||||
.row-fluid .uneditable-input[class*="span"],
|
||||
.row-fluid .input-prepend [class*="span"],
|
||||
.row-fluid .input-append [class*="span"] {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// GRID SIZING FOR INPUTS
|
||||
// ----------------------
|
||||
|
||||
// Grid sizes
|
||||
#grid > .input(@gridColumnWidth, @gridGutterWidth);
|
||||
|
||||
// Control row for multiple inputs per line
|
||||
.controls-row {
|
||||
.clearfix(); // Clear the float from controls
|
||||
}
|
||||
|
||||
// Float to collapse white-space for proper grid alignment
|
||||
.controls-row [class*="span"],
|
||||
// Redeclare the fluid grid collapse since we undo the float for inputs
|
||||
.row-fluid .controls-row [class*="span"] {
|
||||
float: left;
|
||||
}
|
||||
// Explicity set top padding on all checkboxes/radios, not just first-child
|
||||
.controls-row .checkbox[class*="span"],
|
||||
.controls-row .radio[class*="span"] {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// DISABLED STATE
|
||||
// --------------
|
||||
|
||||
// Disabled and read-only inputs
|
||||
input[disabled],
|
||||
select[disabled],
|
||||
textarea[disabled],
|
||||
input[readonly],
|
||||
select[readonly],
|
||||
textarea[readonly] {
|
||||
cursor: not-allowed;
|
||||
background-color: @inputDisabledBackground;
|
||||
}
|
||||
// Explicitly reset the colors here
|
||||
input[type="radio"][disabled],
|
||||
input[type="checkbox"][disabled],
|
||||
input[type="radio"][readonly],
|
||||
input[type="checkbox"][readonly] {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// FORM FIELD FEEDBACK STATES
|
||||
// --------------------------
|
||||
|
||||
// Warning
|
||||
.control-group.warning {
|
||||
.formFieldState(@warningText, @warningText, @warningBackground);
|
||||
}
|
||||
// Error
|
||||
.control-group.error {
|
||||
.formFieldState(@errorText, @errorText, @errorBackground);
|
||||
}
|
||||
// Success
|
||||
.control-group.success {
|
||||
.formFieldState(@successText, @successText, @successBackground);
|
||||
}
|
||||
// Success
|
||||
.control-group.info {
|
||||
.formFieldState(@infoText, @infoText, @infoBackground);
|
||||
}
|
||||
|
||||
// HTML5 invalid states
|
||||
// Shares styles with the .control-group.error above
|
||||
input:focus:invalid,
|
||||
textarea:focus:invalid,
|
||||
select:focus:invalid {
|
||||
color: #b94a48;
|
||||
border-color: #ee5f5b;
|
||||
&:focus {
|
||||
border-color: darken(#ee5f5b, 10%);
|
||||
@shadow: 0 0 6px lighten(#ee5f5b, 20%);
|
||||
.box-shadow(@shadow);
|
||||
select {
|
||||
&.input-large {
|
||||
height: @input-height-large;
|
||||
line-height: @input-height-large;
|
||||
}
|
||||
&.input-small {
|
||||
height: @input-height-small;
|
||||
line-height: @input-height-small;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Form control feedback states
|
||||
//
|
||||
// Apply contextual and semantic states to individual form controls.
|
||||
|
||||
// FORM ACTIONS
|
||||
// ------------
|
||||
|
||||
.form-actions {
|
||||
padding: (@baseLineHeight - 1) 20px @baseLineHeight;
|
||||
margin-top: @baseLineHeight;
|
||||
margin-bottom: @baseLineHeight;
|
||||
background-color: @formActionsBackground;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
.clearfix(); // Adding clearfix to allow for .pull-right button containers
|
||||
// Warning
|
||||
.has-warning {
|
||||
.form-control-validation(@state-warning-text, @state-warning-text, @state-warning-bg);
|
||||
}
|
||||
// Error
|
||||
.has-error {
|
||||
.form-control-validation(@state-danger-text, @state-danger-text, @state-danger-bg);
|
||||
}
|
||||
// Success
|
||||
.has-success {
|
||||
.form-control-validation(@state-success-text, @state-success-text, @state-success-bg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// HELP TEXT
|
||||
// ---------
|
||||
|
||||
.help-block,
|
||||
.help-inline {
|
||||
color: lighten(@textColor, 15%); // lighten the text some for contrast
|
||||
}
|
||||
// Help text
|
||||
//
|
||||
// Apply to any element you wish to create light text for placement immediately
|
||||
// below a form control. Use for general help, formatting, or instructional text.
|
||||
|
||||
.help-block {
|
||||
display: block; // account for any element using help-block
|
||||
margin-bottom: @baseLineHeight / 2;
|
||||
}
|
||||
|
||||
.help-inline {
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
vertical-align: middle;
|
||||
padding-left: 5px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 10px;
|
||||
color: lighten(@text-color, 25%); // lighten the text some for contrast
|
||||
}
|
||||
|
||||
|
||||
|
||||
// INPUT GROUPS
|
||||
// ------------
|
||||
// Input groups
|
||||
// --------------------------------------------------
|
||||
|
||||
// Allow us to put symbols and text within the input field for a cleaner look
|
||||
.input-append,
|
||||
.input-prepend {
|
||||
display: inline-block;
|
||||
margin-bottom: @baseLineHeight / 2;
|
||||
vertical-align: middle;
|
||||
font-size: 0; // white space collapse hack
|
||||
white-space: nowrap; // Prevent span and input from separating
|
||||
// Base styles
|
||||
// -------------------------
|
||||
.input-group {
|
||||
display: table;
|
||||
border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
|
||||
|
||||
// Reset the white space collapse hack
|
||||
input,
|
||||
select,
|
||||
.uneditable-input,
|
||||
.dropdown-menu,
|
||||
.popover {
|
||||
font-size: @baseFontSize;
|
||||
// Undo padding and float of grid classes
|
||||
&.col {
|
||||
float: none;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
select,
|
||||
.uneditable-input {
|
||||
position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness
|
||||
margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms
|
||||
*margin-left: 0;
|
||||
vertical-align: top;
|
||||
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||
// Make input on top when focused so blue border and shadow always show
|
||||
&:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
.add-on {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
height: @baseLineHeight;
|
||||
min-width: 16px;
|
||||
padding: 4px 5px;
|
||||
font-size: @baseFontSize;
|
||||
font-weight: normal;
|
||||
line-height: @baseLineHeight;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 @white;
|
||||
background-color: @grayLighter;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.add-on,
|
||||
.btn,
|
||||
.btn-group > .dropdown-toggle {
|
||||
vertical-align: top;
|
||||
.border-radius(0);
|
||||
}
|
||||
.active {
|
||||
background-color: lighten(@green, 30);
|
||||
border-color: @green;
|
||||
}
|
||||
}
|
||||
|
||||
.input-prepend {
|
||||
.add-on,
|
||||
.btn {
|
||||
margin-right: -1px;
|
||||
}
|
||||
.add-on:first-child,
|
||||
.btn:first-child {
|
||||
// FYI, `.btn:first-child` accounts for a button group that's prepended
|
||||
.border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
|
||||
}
|
||||
}
|
||||
|
||||
.input-append {
|
||||
input,
|
||||
select,
|
||||
.uneditable-input {
|
||||
.border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
|
||||
+ .btn-group .btn:last-child {
|
||||
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||
}
|
||||
}
|
||||
.add-on,
|
||||
.btn,
|
||||
.btn-group {
|
||||
margin-left: -1px;
|
||||
}
|
||||
.add-on:last-child,
|
||||
.btn:last-child,
|
||||
.btn-group:last-child > .dropdown-toggle {
|
||||
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove all border-radius for inputs with both prepend and append
|
||||
.input-prepend.input-append {
|
||||
input,
|
||||
select,
|
||||
.uneditable-input {
|
||||
.border-radius(0);
|
||||
+ .btn-group .btn {
|
||||
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||
}
|
||||
}
|
||||
.add-on:first-child,
|
||||
.btn:first-child {
|
||||
margin-right: -1px;
|
||||
.border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
|
||||
}
|
||||
.add-on:last-child,
|
||||
.btn:last-child {
|
||||
margin-left: -1px;
|
||||
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||
}
|
||||
.btn-group:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// SEARCH FORM
|
||||
// -----------
|
||||
|
||||
input.search-query {
|
||||
padding-right: 14px;
|
||||
padding-right: 4px \9;
|
||||
padding-left: 14px;
|
||||
padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */
|
||||
margin-bottom: 0; // Remove the default margin on all inputs
|
||||
.border-radius(15px);
|
||||
}
|
||||
|
||||
/* Allow for input prepend/append in search forms */
|
||||
.form-search .input-append .search-query,
|
||||
.form-search .input-prepend .search-query {
|
||||
.border-radius(0); // Override due to specificity
|
||||
}
|
||||
.form-search .input-append .search-query {
|
||||
.border-radius(14px 0 0 14px);
|
||||
}
|
||||
.form-search .input-append .btn {
|
||||
.border-radius(0 14px 14px 0);
|
||||
}
|
||||
.form-search .input-prepend .search-query {
|
||||
.border-radius(0 14px 14px 0);
|
||||
}
|
||||
.form-search .input-prepend .btn {
|
||||
.border-radius(14px 0 0 14px);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// HORIZONTAL & VERTICAL FORMS
|
||||
// ---------------------------
|
||||
|
||||
// Common properties
|
||||
// -----------------
|
||||
|
||||
.form-search,
|
||||
.form-inline,
|
||||
.form-horizontal {
|
||||
input,
|
||||
textarea,
|
||||
select,
|
||||
.help-inline,
|
||||
.uneditable-input,
|
||||
.input-prepend,
|
||||
.input-append {
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
.form-control {
|
||||
width: 100%;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
// Re-hide hidden elements due to specifity
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.form-search label,
|
||||
.form-inline label,
|
||||
.form-search .btn-group,
|
||||
.form-inline .btn-group {
|
||||
display: inline-block;
|
||||
|
||||
// Display as table-cell
|
||||
// -------------------------
|
||||
.input-group-addon,
|
||||
.input-group-btn,
|
||||
.input-group .form-control {
|
||||
display: table-cell;
|
||||
|
||||
&:not(:first-child):not(:last-child) {
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
// Remove margin for input-prepend/-append
|
||||
.form-search .input-append,
|
||||
.form-inline .input-append,
|
||||
.form-search .input-prepend,
|
||||
.form-inline .input-prepend {
|
||||
margin-bottom: 0;
|
||||
// Addon and addon wrapper for buttons
|
||||
.input-group-addon,
|
||||
.input-group-btn {
|
||||
width: 1%;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle; // Match the inputs
|
||||
}
|
||||
// Inline checkbox/radio labels (remove padding on left)
|
||||
.form-search .radio,
|
||||
.form-search .checkbox,
|
||||
.form-inline .radio,
|
||||
.form-inline .checkbox {
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
|
||||
// Text input groups
|
||||
// -------------------------
|
||||
.input-group-addon {
|
||||
.box-sizing(border-box);
|
||||
padding: @padding-base-vertical @padding-base-horizontal;
|
||||
font-size: @font-size-base;
|
||||
font-weight: normal;
|
||||
line-height: @line-height-base;
|
||||
text-align: center;
|
||||
background-color: @gray-lighter;
|
||||
border: 1px solid @input-group-addon-border-color;
|
||||
border-radius: @border-radius-base;
|
||||
|
||||
&.input-small {
|
||||
padding: @padding-small-vertical @padding-small-horizontal;
|
||||
font-size: @font-size-small;
|
||||
border-radius: @border-radius-small;
|
||||
}
|
||||
&.input-large {
|
||||
padding: @padding-large-vertical @padding-large-horizontal;
|
||||
font-size: @font-size-large;
|
||||
border-radius: @border-radius-large;
|
||||
}
|
||||
}
|
||||
// Remove float and margin, set to inline-block
|
||||
.form-search .radio input[type="radio"],
|
||||
.form-search .checkbox input[type="checkbox"],
|
||||
.form-inline .radio input[type="radio"],
|
||||
.form-inline .checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-right: 3px;
|
||||
margin-left: 0;
|
||||
|
||||
// Reset rounded corners
|
||||
.input-group .form-control:first-child,
|
||||
.input-group-addon:first-child,
|
||||
.input-group-btn:first-child > .btn,
|
||||
.input-group-btn:first-child > .dropdown-toggle,
|
||||
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
|
||||
.border-right-radius(0);
|
||||
}
|
||||
.input-group-addon:first-child {
|
||||
border-right: 0;
|
||||
}
|
||||
.input-group .form-control:last-child,
|
||||
.input-group-addon:last-child,
|
||||
.input-group-btn:last-child > .btn,
|
||||
.input-group-btn:last-child > .dropdown-toggle,
|
||||
.input-group-btn:first-child > .btn:not(:first-child) {
|
||||
.border-left-radius(0);
|
||||
}
|
||||
.input-group-addon:last-child {
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
// Button input groups
|
||||
// -------------------------
|
||||
.input-group-btn {
|
||||
position: relative;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.input-group-btn > .btn {
|
||||
position: relative;
|
||||
// Jankily prevent input button groups from wrapping
|
||||
+ .btn {
|
||||
margin-left: -4px;
|
||||
}
|
||||
// Bring the "active" button to the front
|
||||
&:hover,
|
||||
&:active {
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Margin to space out fieldsets
|
||||
.control-group {
|
||||
margin-bottom: @baseLineHeight / 2;
|
||||
// Inline forms
|
||||
// --------------------------------------------------
|
||||
|
||||
.form-inline {
|
||||
.form-control,
|
||||
.radio,
|
||||
.checkbox {
|
||||
display: inline-block;
|
||||
}
|
||||
.radio,
|
||||
.checkbox {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Legend collapses margin, so next element is responsible for spacing
|
||||
legend + .control-group {
|
||||
margin-top: @baseLineHeight;
|
||||
-webkit-margin-top-collapse: separate;
|
||||
}
|
||||
|
||||
// Horizontal-specific styles
|
||||
// --------------------------
|
||||
// Horizontal forms
|
||||
// --------------------------------------------------
|
||||
// Horizontal forms are built on grid classes.
|
||||
|
||||
.form-horizontal .control-label {
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
.form-horizontal {
|
||||
// Increase spacing between groups
|
||||
.control-group {
|
||||
margin-bottom: @baseLineHeight;
|
||||
.clearfix();
|
||||
.form-group {
|
||||
.make-row();
|
||||
}
|
||||
// Float the labels left
|
||||
.control-label {
|
||||
float: left;
|
||||
width: @horizontalComponentOffset - 20;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
// Only right align form labels here when the columns stop stacking
|
||||
@media (min-width: @screen-tablet) {
|
||||
.form-horizontal .control-label {
|
||||
text-align: right;
|
||||
}
|
||||
// Move over all input controls and content
|
||||
.controls {
|
||||
// Super jank IE7 fix to ensure the inputs in .input-append and input-prepend
|
||||
// don't inherit the margin of the parent, in this case .controls
|
||||
*display: inline-block;
|
||||
*padding-left: 20px;
|
||||
margin-left: @horizontalComponentOffset;
|
||||
*margin-left: 0;
|
||||
&:first-child {
|
||||
*padding-left: @horizontalComponentOffset;
|
||||
}
|
||||
}
|
||||
// Remove bottom margin on block level help text since that's accounted for on .control-group
|
||||
.help-block {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
// And apply it only to .help-block instances that follow a form control
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
.uneditable-input,
|
||||
.input-prepend,
|
||||
.input-append {
|
||||
+ .help-block {
|
||||
margin-top: @baseLineHeight / 2;
|
||||
}
|
||||
}
|
||||
// Move over buttons in .form-actions to align with .controls
|
||||
.form-actions {
|
||||
padding-left: @horizontalComponentOffset;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,20 +2,203 @@
|
||||
// Grid system
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Fixed (940px)
|
||||
#grid > .core(@gridColumnWidth, @gridGutterWidth);
|
||||
|
||||
// Fluid (940px)
|
||||
#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
|
||||
|
||||
// Reset utility classes due to specificity
|
||||
[class*="span"].hide,
|
||||
.row-fluid [class*="span"].hide {
|
||||
display: none;
|
||||
// Set the container width, and override it for fixed navbars in media queries
|
||||
.container {
|
||||
.container-fixed();
|
||||
}
|
||||
|
||||
[class*="span"].pull-right,
|
||||
.row-fluid [class*="span"].pull-right {
|
||||
float: right;
|
||||
// Mobile-first defaults
|
||||
.row {
|
||||
.make-row();
|
||||
}
|
||||
|
||||
// Common styles for small and large grid columns
|
||||
.col-1,
|
||||
.col-2,
|
||||
.col-3,
|
||||
.col-4,
|
||||
.col-5,
|
||||
.col-6,
|
||||
.col-7,
|
||||
.col-8,
|
||||
.col-9,
|
||||
.col-10,
|
||||
.col-11,
|
||||
.col-12,
|
||||
.col-sm-1,
|
||||
.col-sm-2,
|
||||
.col-sm-3,
|
||||
.col-sm-4,
|
||||
.col-sm-5,
|
||||
.col-sm-6,
|
||||
.col-sm-7,
|
||||
.col-sm-8,
|
||||
.col-sm-9,
|
||||
.col-sm-10,
|
||||
.col-sm-11,
|
||||
.col-sm-12,
|
||||
.col-lg-1,
|
||||
.col-lg-2,
|
||||
.col-lg-3,
|
||||
.col-lg-4,
|
||||
.col-lg-5,
|
||||
.col-lg-6,
|
||||
.col-lg-7,
|
||||
.col-lg-8,
|
||||
.col-lg-9,
|
||||
.col-lg-10,
|
||||
.col-lg-11,
|
||||
.col-lg-12 {
|
||||
position: relative;
|
||||
// Prevent columns from collapsing when empty
|
||||
min-height: 1px;
|
||||
// Inner gutter via padding
|
||||
padding-left: (@grid-gutter-width / 2);
|
||||
padding-right: (@grid-gutter-width / 2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Container and grid column sizing
|
||||
//
|
||||
|
||||
// Tiny device columns (smartphones)
|
||||
.col-1,
|
||||
.col-2,
|
||||
.col-3,
|
||||
.col-4,
|
||||
.col-5,
|
||||
.col-6,
|
||||
.col-7,
|
||||
.col-8,
|
||||
.col-9,
|
||||
.col-10,
|
||||
.col-11,
|
||||
.col-12 {
|
||||
float: left;
|
||||
}
|
||||
.col-1 { width: percentage((1 / @grid-columns)); }
|
||||
.col-2 { width: percentage((2 / @grid-columns)); }
|
||||
.col-3 { width: percentage((3 / @grid-columns)); }
|
||||
.col-4 { width: percentage((4 / @grid-columns)); }
|
||||
.col-5 { width: percentage((5 / @grid-columns)); }
|
||||
.col-6 { width: percentage((6 / @grid-columns)); }
|
||||
.col-7 { width: percentage((7 / @grid-columns)); }
|
||||
.col-8 { width: percentage((8 / @grid-columns)); }
|
||||
.col-9 { width: percentage((9 / @grid-columns)); }
|
||||
.col-10 { width: percentage((10/ @grid-columns)); }
|
||||
.col-11 { width: percentage((11/ @grid-columns)); }
|
||||
.col-12 { width: 100%; }
|
||||
|
||||
// Small device columns (phones to tablets)
|
||||
@media (min-width: @screen-tablet) {
|
||||
.container {
|
||||
max-width: @container-tablet;
|
||||
}
|
||||
|
||||
.col-sm-1,
|
||||
.col-sm-2,
|
||||
.col-sm-3,
|
||||
.col-sm-4,
|
||||
.col-sm-5,
|
||||
.col-sm-6,
|
||||
.col-sm-7,
|
||||
.col-sm-8,
|
||||
.col-sm-9,
|
||||
.col-sm-10,
|
||||
.col-sm-11,
|
||||
.col-sm-12 {
|
||||
float: left;
|
||||
}
|
||||
.col-sm-1 { width: percentage((1 / @grid-columns)); }
|
||||
.col-sm-2 { width: percentage((2 / @grid-columns)); }
|
||||
.col-sm-3 { width: percentage((3 / @grid-columns)); }
|
||||
.col-sm-4 { width: percentage((4 / @grid-columns)); }
|
||||
.col-sm-5 { width: percentage((5 / @grid-columns)); }
|
||||
.col-sm-6 { width: percentage((6 / @grid-columns)); }
|
||||
.col-sm-7 { width: percentage((7 / @grid-columns)); }
|
||||
.col-sm-8 { width: percentage((8 / @grid-columns)); }
|
||||
.col-sm-9 { width: percentage((9 / @grid-columns)); }
|
||||
.col-sm-10 { width: percentage((10/ @grid-columns)); }
|
||||
.col-sm-11 { width: percentage((11/ @grid-columns)); }
|
||||
.col-sm-12 { width: 100%; }
|
||||
|
||||
// Push and pull columns for source order changes
|
||||
.col-push-1 { left: percentage((1 / @grid-columns)); }
|
||||
.col-push-2 { left: percentage((2 / @grid-columns)); }
|
||||
.col-push-3 { left: percentage((3 / @grid-columns)); }
|
||||
.col-push-4 { left: percentage((4 / @grid-columns)); }
|
||||
.col-push-5 { left: percentage((5 / @grid-columns)); }
|
||||
.col-push-6 { left: percentage((6 / @grid-columns)); }
|
||||
.col-push-7 { left: percentage((7 / @grid-columns)); }
|
||||
.col-push-8 { left: percentage((8 / @grid-columns)); }
|
||||
.col-push-9 { left: percentage((9 / @grid-columns)); }
|
||||
.col-push-10 { left: percentage((10/ @grid-columns)); }
|
||||
.col-push-11 { left: percentage((11/ @grid-columns)); }
|
||||
|
||||
.col-pull-1 { right: percentage((1 / @grid-columns)); }
|
||||
.col-pull-2 { right: percentage((2 / @grid-columns)); }
|
||||
.col-pull-3 { right: percentage((3 / @grid-columns)); }
|
||||
.col-pull-4 { right: percentage((4 / @grid-columns)); }
|
||||
.col-pull-5 { right: percentage((5 / @grid-columns)); }
|
||||
.col-pull-6 { right: percentage((6 / @grid-columns)); }
|
||||
.col-pull-7 { right: percentage((7 / @grid-columns)); }
|
||||
.col-pull-8 { right: percentage((8 / @grid-columns)); }
|
||||
.col-pull-9 { right: percentage((9 / @grid-columns)); }
|
||||
.col-pull-10 { right: percentage((10/ @grid-columns)); }
|
||||
.col-pull-11 { right: percentage((11/ @grid-columns)); }
|
||||
}
|
||||
|
||||
// Medium and large device columns (desktop and up)
|
||||
@media (min-width: @screen-desktop) {
|
||||
.container {
|
||||
max-width: @container-desktop;
|
||||
}
|
||||
.col-lg-1,
|
||||
.col-lg-2,
|
||||
.col-lg-3,
|
||||
.col-lg-4,
|
||||
.col-lg-5,
|
||||
.col-lg-6,
|
||||
.col-lg-7,
|
||||
.col-lg-8,
|
||||
.col-lg-9,
|
||||
.col-lg-10,
|
||||
.col-lg-11,
|
||||
.col-lg-12 {
|
||||
float: left;
|
||||
}
|
||||
.col-lg-1 { width: percentage((1 / @grid-columns)); }
|
||||
.col-lg-2 { width: percentage((2 / @grid-columns)); }
|
||||
.col-lg-3 { width: percentage((3 / @grid-columns)); }
|
||||
.col-lg-4 { width: percentage((4 / @grid-columns)); }
|
||||
.col-lg-5 { width: percentage((5 / @grid-columns)); }
|
||||
.col-lg-6 { width: percentage((6 / @grid-columns)); }
|
||||
.col-lg-7 { width: percentage((7 / @grid-columns)); }
|
||||
.col-lg-8 { width: percentage((8 / @grid-columns)); }
|
||||
.col-lg-9 { width: percentage((9 / @grid-columns)); }
|
||||
.col-lg-10 { width: percentage((10/ @grid-columns)); }
|
||||
.col-lg-11 { width: percentage((11/ @grid-columns)); }
|
||||
.col-lg-12 { width: 100%; }
|
||||
|
||||
// Offsets
|
||||
.col-offset-1 { margin-left: percentage((1 / @grid-columns)); }
|
||||
.col-offset-2 { margin-left: percentage((2 / @grid-columns)); }
|
||||
.col-offset-3 { margin-left: percentage((3 / @grid-columns)); }
|
||||
.col-offset-4 { margin-left: percentage((4 / @grid-columns)); }
|
||||
.col-offset-5 { margin-left: percentage((5 / @grid-columns)); }
|
||||
.col-offset-6 { margin-left: percentage((6 / @grid-columns)); }
|
||||
.col-offset-7 { margin-left: percentage((7 / @grid-columns)); }
|
||||
.col-offset-8 { margin-left: percentage((8 / @grid-columns)); }
|
||||
.col-offset-9 { margin-left: percentage((9 / @grid-columns)); }
|
||||
.col-offset-10 { margin-left: percentage((10/ @grid-columns)); }
|
||||
.col-offset-11 { margin-left: percentage((11/ @grid-columns)); }
|
||||
}
|
||||
|
||||
// Large desktops and up
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
.container {
|
||||
max-width: @container-large-desktop;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
//
|
||||
// Hero unit
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.hero-unit {
|
||||
padding: 60px;
|
||||
margin-bottom: 30px;
|
||||
font-size: 18px;
|
||||
font-weight: 200;
|
||||
line-height: @baseLineHeight * 1.5;
|
||||
color: @heroUnitLeadColor;
|
||||
background-color: @heroUnitBackground;
|
||||
.border-radius(6px);
|
||||
h1 {
|
||||
margin-bottom: 0;
|
||||
font-size: 60px;
|
||||
line-height: 1;
|
||||
color: @heroUnitHeadingColor;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
li {
|
||||
line-height: @baseLineHeight * 1.5; // Reset since we specify in type.less
|
||||
}
|
||||
}
|
||||
29
assets/less/jumbotron.less
Normal file
29
assets/less/jumbotron.less
Normal file
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// Jumbotron
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
.jumbotron {
|
||||
padding: 30px;
|
||||
margin-bottom: 30px;
|
||||
font-size: (@font-size-base * 1.5);
|
||||
font-weight: 200;
|
||||
line-height: (@line-height-base * 1.5);
|
||||
color: @jumbotron-lead-color;
|
||||
background-color: @jumbotron-bg;
|
||||
h1 {
|
||||
line-height: 1;
|
||||
color: @jumbotron-heading-color;
|
||||
}
|
||||
p {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
@media screen and (min-width: @screen-tablet) {
|
||||
padding: 50px 60px;
|
||||
border-radius: @border-radius-large; // Only round corners at higher resolutions
|
||||
h1 {
|
||||
font-size: (@font-size-base * 4.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
//
|
||||
// Labels and badges
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Base classes
|
||||
.label,
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 2px 4px;
|
||||
font-size: @baseFontSize * .846;
|
||||
font-weight: bold;
|
||||
line-height: 14px; // ensure proper line-height if floated
|
||||
color: @white;
|
||||
vertical-align: baseline;
|
||||
white-space: nowrap;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
background-color: @grayLight;
|
||||
}
|
||||
// Set unique padding and border-radii
|
||||
.label {
|
||||
.border-radius(3px);
|
||||
}
|
||||
.badge {
|
||||
padding-left: 9px;
|
||||
padding-right: 9px;
|
||||
.border-radius(9px);
|
||||
}
|
||||
|
||||
// Empty labels/badges collapse
|
||||
.label,
|
||||
.badge {
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Hover/focus state, but only for links
|
||||
a {
|
||||
&.label:hover,
|
||||
&.label:focus,
|
||||
&.badge:hover,
|
||||
&.badge:focus {
|
||||
color: @white;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
// Colors
|
||||
// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
|
||||
.label,
|
||||
.badge {
|
||||
// Important (red)
|
||||
&-important { background-color: @errorText; }
|
||||
&-important[href] { background-color: darken(@errorText, 10%); }
|
||||
// Warnings (orange)
|
||||
&-warning { background-color: @orange; }
|
||||
&-warning[href] { background-color: darken(@orange, 10%); }
|
||||
// Success (green)
|
||||
&-success { background-color: @successText; }
|
||||
&-success[href] { background-color: darken(@successText, 10%); }
|
||||
// Info (turquoise)
|
||||
&-info { background-color: @infoText; }
|
||||
&-info[href] { background-color: darken(@infoText, 10%); }
|
||||
// Inverse (black)
|
||||
&-inverse { background-color: @grayDark; }
|
||||
&-inverse[href] { background-color: darken(@grayDark, 10%); }
|
||||
}
|
||||
|
||||
// Quick fix for labels/badges in buttons
|
||||
.btn {
|
||||
.label,
|
||||
.badge {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
}
|
||||
.btn-mini {
|
||||
.label,
|
||||
.badge {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
46
assets/less/labels.less
Normal file
46
assets/less/labels.less
Normal file
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// Labels
|
||||
// --------------------------------------------------
|
||||
|
||||
.label {
|
||||
display: inline;
|
||||
padding: .25em .6em;
|
||||
font-size: 75%;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
color: @label-color;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
background-color: @gray-light;
|
||||
border-radius: .25em;
|
||||
|
||||
// Add hover effects, but only for links
|
||||
&[href] {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @label-link-hover-color;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
background-color: darken(@gray-light, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Colors
|
||||
// Contextual variations (linked labels get darker on :hover)
|
||||
.label-danger {
|
||||
.label-variant(@label-danger-bg);
|
||||
}
|
||||
|
||||
.label-success {
|
||||
.label-variant(@label-success-bg);
|
||||
}
|
||||
|
||||
.label-warning {
|
||||
.label-variant(@label-warning-bg);
|
||||
}
|
||||
|
||||
.label-info {
|
||||
.label-variant(@label-info-bg);
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// Layouts
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Container (centered, fixed-width layouts)
|
||||
.container {
|
||||
.container-fixed();
|
||||
}
|
||||
|
||||
// Fluid layouts (left aligned, with sidebar, min- & max-width content)
|
||||
.container-fluid {
|
||||
padding-right: @gridGutterWidth;
|
||||
padding-left: @gridGutterWidth;
|
||||
.clearfix();
|
||||
}
|
||||
89
assets/less/list-group.less
Normal file
89
assets/less/list-group.less
Normal file
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// List groups
|
||||
// --------------------------------------------------
|
||||
|
||||
// Base class
|
||||
//
|
||||
// Easily usable on <ul>, <ol>, or <div>.
|
||||
.list-group {
|
||||
// No need to set list-style: none; since .list-group-item is block level
|
||||
margin-bottom: 20px;
|
||||
padding-left: 0; // reset padding because ul and ol
|
||||
background-color: @list-group-bg;
|
||||
}
|
||||
|
||||
// Individual list items
|
||||
// -------------------------
|
||||
|
||||
.list-group-item {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 10px 30px 10px 15px;
|
||||
// Place the border on the list items and negative margin up for better styling
|
||||
margin-bottom: -1px;
|
||||
border: 1px solid @list-group-border;
|
||||
|
||||
// Round the first and last items
|
||||
&:first-child {
|
||||
.border-top-radius(@border-radius-base);
|
||||
}
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
.border-bottom-radius(@border-radius-base);
|
||||
}
|
||||
|
||||
// Align badges within list items
|
||||
> .badge {
|
||||
float: right;
|
||||
margin-right: -15px;
|
||||
}
|
||||
}
|
||||
|
||||
// Custom content options
|
||||
// -------------------------
|
||||
|
||||
.list-group-item-heading {
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.list-group-item-text {
|
||||
margin-bottom: 0;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
// Linked list items
|
||||
// -------------------------
|
||||
|
||||
// Custom content within linked items
|
||||
a.list-group-item {
|
||||
// Colorize content accordingly
|
||||
.list-group-item-heading {
|
||||
color: @list-group-link-heading-color;
|
||||
}
|
||||
.list-group-item-text {
|
||||
color: @list-group-link-color;
|
||||
}
|
||||
|
||||
// Hover state
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
background-color: @list-group-hover-bg;
|
||||
}
|
||||
|
||||
// Active class on item itself, not parent
|
||||
&.active {
|
||||
z-index: 2; // Place active items above their siblings for proper border styling
|
||||
color: @list-group-active-color;
|
||||
background-color: @list-group-active-bg;
|
||||
border-color: @list-group-active-border;
|
||||
|
||||
// Force color to inherit for custom content
|
||||
.list-group-item-heading {
|
||||
color: inherit;
|
||||
}
|
||||
.list-group-item-text {
|
||||
color: lighten(@list-group-active-bg, 40%);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,6 @@
|
||||
.media,
|
||||
.media-body {
|
||||
overflow: hidden;
|
||||
*overflow: visible;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
@@ -37,11 +36,13 @@
|
||||
// Media image alignment
|
||||
// -------------------------
|
||||
|
||||
.media > .pull-left {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.media > .pull-right {
|
||||
margin-left: 10px;
|
||||
.media {
|
||||
> .pull-left {
|
||||
margin-right: 10px;
|
||||
}
|
||||
> .pull-right {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +51,6 @@
|
||||
|
||||
// Undo default ul/ol styles
|
||||
.media-list {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
@@ -3,21 +3,24 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// UTILITY MIXINS
|
||||
// --------------------------------------------------
|
||||
// Utilities
|
||||
// -------------------------
|
||||
|
||||
// Clearfix
|
||||
// --------
|
||||
// For clearing floats like a boss h5bp.com/q
|
||||
.clearfix {
|
||||
*zoom: 1;
|
||||
// Source: http://nicolasgallagher.com/micro-clearfix-hack/
|
||||
//
|
||||
// For modern browsers
|
||||
// 1. The space content is one way to avoid an Opera bug when the
|
||||
// contenteditable attribute is included anywhere else in the document.
|
||||
// Otherwise it causes space to appear at the top and bottom of elements
|
||||
// that are clearfixed.
|
||||
// 2. The use of `table` rather than `block` is only necessary if using
|
||||
// `:before` to contain the top-margins of child elements.
|
||||
.clearfix() {
|
||||
&:before,
|
||||
&:after {
|
||||
display: table;
|
||||
content: "";
|
||||
// Fixes Opera/contenteditable bug:
|
||||
// http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
|
||||
line-height: 0;
|
||||
content: " "; /* 1 */
|
||||
display: table; /* 2 */
|
||||
}
|
||||
&:after {
|
||||
clear: both;
|
||||
@@ -25,7 +28,6 @@
|
||||
}
|
||||
|
||||
// Webkit-style focus
|
||||
// ------------------
|
||||
.tab-focus() {
|
||||
// Default
|
||||
outline: thin dotted #333;
|
||||
@@ -35,41 +37,14 @@
|
||||
}
|
||||
|
||||
// Center-align a block level element
|
||||
// ----------------------------------
|
||||
.center-block() {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
// IE7 inline-block
|
||||
// ----------------
|
||||
.ie7-inline-block() {
|
||||
*display: inline; /* IE7 inline-block hack */
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
// IE7 likes to collapse whitespace on either side of the inline-block elements.
|
||||
// Ems because we're attempting to match the width of a space character. Left
|
||||
// version is for form buttons, which typically come after other elements, and
|
||||
// right version is for icons, which come before. Applying both is ok, but it will
|
||||
// mean that space between those elements will be .6em (~2 space characters) in IE7,
|
||||
// instead of the 1 space in other browsers.
|
||||
.ie7-restore-left-whitespace() {
|
||||
*margin-left: .3em;
|
||||
|
||||
&:first-child {
|
||||
*margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.ie7-restore-right-whitespace() {
|
||||
*margin-right: .3em;
|
||||
}
|
||||
|
||||
// Sizing shortcuts
|
||||
// -------------------------
|
||||
.size(@height, @width) {
|
||||
.size(@width, @height) {
|
||||
width: @width;
|
||||
height: @height;
|
||||
}
|
||||
@@ -78,21 +53,14 @@
|
||||
}
|
||||
|
||||
// Placeholder text
|
||||
// -------------------------
|
||||
.placeholder(@color: @placeholderText) {
|
||||
&:-moz-placeholder {
|
||||
color: @color;
|
||||
}
|
||||
&:-ms-input-placeholder {
|
||||
color: @color;
|
||||
}
|
||||
&::-webkit-input-placeholder {
|
||||
color: @color;
|
||||
}
|
||||
.placeholder(@color: @input-color-placeholder) {
|
||||
&:-moz-placeholder { color: @color; } // Firefox 4-18
|
||||
&::-moz-placeholder { color: @color; } // Firefox 19+
|
||||
&:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
|
||||
&::-webkit-input-placeholder { color: @color; } // Safari and Chrome
|
||||
}
|
||||
|
||||
// Text overflow
|
||||
// -------------------------
|
||||
// Requires inline-block or block for proper styling
|
||||
.text-overflow() {
|
||||
overflow: hidden;
|
||||
@@ -101,10 +69,9 @@
|
||||
}
|
||||
|
||||
// CSS image replacement
|
||||
// -------------------------
|
||||
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
|
||||
.hide-text {
|
||||
font: 0/0 a;
|
||||
.hide-text() {
|
||||
font: ~"0/0" a;
|
||||
color: transparent;
|
||||
text-shadow: none;
|
||||
background-color: transparent;
|
||||
@@ -112,209 +79,83 @@
|
||||
}
|
||||
|
||||
|
||||
// FONTS
|
||||
// --------------------------------------------------
|
||||
|
||||
#font {
|
||||
#family {
|
||||
.serif() {
|
||||
font-family: @serifFontFamily;
|
||||
}
|
||||
.sans-serif() {
|
||||
font-family: @sansFontFamily;
|
||||
}
|
||||
.monospace() {
|
||||
font-family: @monoFontFamily;
|
||||
}
|
||||
}
|
||||
.shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||
font-size: @size;
|
||||
font-weight: @weight;
|
||||
line-height: @lineHeight;
|
||||
}
|
||||
.serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||
#font > #family > .serif;
|
||||
#font > .shorthand(@size, @weight, @lineHeight);
|
||||
}
|
||||
.sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||
#font > #family > .sans-serif;
|
||||
#font > .shorthand(@size, @weight, @lineHeight);
|
||||
}
|
||||
.monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||
#font > #family > .monospace;
|
||||
#font > .shorthand(@size, @weight, @lineHeight);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FORMS
|
||||
// --------------------------------------------------
|
||||
|
||||
// Block level inputs
|
||||
.input-block-level {
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: @inputHeight; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
|
||||
.box-sizing(border-box); // Makes inputs behave like true block-level elements
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Mixin for form field states
|
||||
.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
|
||||
// Set the text color
|
||||
.control-label,
|
||||
.help-block,
|
||||
.help-inline {
|
||||
color: @textColor;
|
||||
}
|
||||
// Style inputs accordingly
|
||||
.checkbox,
|
||||
.radio,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
color: @textColor;
|
||||
}
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
border-color: @borderColor;
|
||||
.box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
|
||||
&:focus {
|
||||
border-color: darken(@borderColor, 10%);
|
||||
@shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
|
||||
.box-shadow(@shadow);
|
||||
}
|
||||
}
|
||||
// Give a small background color for input-prepend/-append
|
||||
.input-prepend .add-on,
|
||||
.input-append .add-on {
|
||||
color: @textColor;
|
||||
background-color: @backgroundColor;
|
||||
border-color: @textColor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// CSS3 PROPERTIES
|
||||
// --------------------------------------------------
|
||||
|
||||
// Border Radius
|
||||
.border-radius(@radius) {
|
||||
-webkit-border-radius: @radius;
|
||||
-moz-border-radius: @radius;
|
||||
border-radius: @radius;
|
||||
}
|
||||
|
||||
// Single Corner Border Radius
|
||||
.border-top-left-radius(@radius) {
|
||||
-webkit-border-top-left-radius: @radius;
|
||||
-moz-border-radius-topleft: @radius;
|
||||
border-top-left-radius: @radius;
|
||||
}
|
||||
.border-top-right-radius(@radius) {
|
||||
-webkit-border-top-right-radius: @radius;
|
||||
-moz-border-radius-topright: @radius;
|
||||
border-top-right-radius: @radius;
|
||||
}
|
||||
.border-bottom-right-radius(@radius) {
|
||||
-webkit-border-bottom-right-radius: @radius;
|
||||
-moz-border-radius-bottomright: @radius;
|
||||
border-bottom-right-radius: @radius;
|
||||
}
|
||||
.border-bottom-left-radius(@radius) {
|
||||
-webkit-border-bottom-left-radius: @radius;
|
||||
-moz-border-radius-bottomleft: @radius;
|
||||
border-bottom-left-radius: @radius;
|
||||
}
|
||||
|
||||
// Single Side Border Radius
|
||||
// Single side border-radius
|
||||
.border-top-radius(@radius) {
|
||||
.border-top-right-radius(@radius);
|
||||
.border-top-left-radius(@radius);
|
||||
border-top-right-radius: @radius;
|
||||
border-top-left-radius: @radius;
|
||||
}
|
||||
.border-right-radius(@radius) {
|
||||
.border-top-right-radius(@radius);
|
||||
.border-bottom-right-radius(@radius);
|
||||
border-bottom-right-radius: @radius;
|
||||
border-top-right-radius: @radius;
|
||||
}
|
||||
.border-bottom-radius(@radius) {
|
||||
.border-bottom-right-radius(@radius);
|
||||
.border-bottom-left-radius(@radius);
|
||||
border-bottom-right-radius: @radius;
|
||||
border-bottom-left-radius: @radius;
|
||||
}
|
||||
.border-left-radius(@radius) {
|
||||
.border-top-left-radius(@radius);
|
||||
.border-bottom-left-radius(@radius);
|
||||
border-bottom-left-radius: @radius;
|
||||
border-top-left-radius: @radius;
|
||||
}
|
||||
|
||||
// Drop shadows
|
||||
.box-shadow(@shadow) {
|
||||
-webkit-box-shadow: @shadow;
|
||||
-moz-box-shadow: @shadow;
|
||||
-webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1
|
||||
box-shadow: @shadow;
|
||||
}
|
||||
|
||||
// Transitions
|
||||
.transition(@transition) {
|
||||
-webkit-transition: @transition;
|
||||
-moz-transition: @transition;
|
||||
-o-transition: @transition;
|
||||
transition: @transition;
|
||||
}
|
||||
.transition-delay(@transition-delay) {
|
||||
-webkit-transition-delay: @transition-delay;
|
||||
-moz-transition-delay: @transition-delay;
|
||||
-o-transition-delay: @transition-delay;
|
||||
transition-delay: @transition-delay;
|
||||
}
|
||||
.transition-duration(@transition-duration) {
|
||||
-webkit-transition-duration: @transition-duration;
|
||||
-moz-transition-duration: @transition-duration;
|
||||
-o-transition-duration: @transition-duration;
|
||||
transition-duration: @transition-duration;
|
||||
}
|
||||
.transition-transform(@transition) {
|
||||
-webkit-transition: -webkit-transform @transition;
|
||||
-moz-transition: -moz-transform @transition;
|
||||
-o-transition: -o-transform @transition;
|
||||
transition: transform @transition;
|
||||
}
|
||||
|
||||
// Transformations
|
||||
.rotate(@degrees) {
|
||||
-webkit-transform: rotate(@degrees);
|
||||
-moz-transform: rotate(@degrees);
|
||||
-ms-transform: rotate(@degrees);
|
||||
-o-transform: rotate(@degrees);
|
||||
transform: rotate(@degrees);
|
||||
}
|
||||
.scale(@ratio) {
|
||||
-webkit-transform: scale(@ratio);
|
||||
-moz-transform: scale(@ratio);
|
||||
-ms-transform: scale(@ratio);
|
||||
-o-transform: scale(@ratio);
|
||||
transform: scale(@ratio);
|
||||
}
|
||||
.translate(@x, @y) {
|
||||
-webkit-transform: translate(@x, @y);
|
||||
-moz-transform: translate(@x, @y);
|
||||
-ms-transform: translate(@x, @y);
|
||||
-o-transform: translate(@x, @y);
|
||||
transform: translate(@x, @y);
|
||||
}
|
||||
.skew(@x, @y) {
|
||||
-webkit-transform: skew(@x, @y);
|
||||
-moz-transform: skew(@x, @y);
|
||||
-ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885
|
||||
-o-transform: skew(@x, @y);
|
||||
-ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885
|
||||
transform: skew(@x, @y);
|
||||
-webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
|
||||
}
|
||||
.translate3d(@x, @y, @z) {
|
||||
-webkit-transform: translate3d(@x, @y, @z);
|
||||
-moz-transform: translate3d(@x, @y, @z);
|
||||
-o-transform: translate3d(@x, @y, @z);
|
||||
transform: translate3d(@x, @y, @z);
|
||||
}
|
||||
|
||||
// Backface visibility
|
||||
// Prevent browsers from flickering when using CSS 3D transforms.
|
||||
// Default value is `visible`, but can be changed to `hidden
|
||||
// Default value is `visible`, but can be changed to `hidden`
|
||||
// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
|
||||
.backface-visibility(@visibility){
|
||||
-webkit-backface-visibility: @visibility;
|
||||
@@ -323,22 +164,15 @@
|
||||
}
|
||||
|
||||
// Background clipping
|
||||
// Heads up: FF 3.6 and under need "padding" instead of "padding-box"
|
||||
.background-clip(@clip) {
|
||||
-webkit-background-clip: @clip;
|
||||
-moz-background-clip: @clip;
|
||||
background-clip: @clip;
|
||||
}
|
||||
|
||||
// Background sizing
|
||||
.background-size(@size) {
|
||||
-webkit-background-size: @size;
|
||||
-moz-background-size: @size;
|
||||
-o-background-size: @size;
|
||||
background-size: @size;
|
||||
}
|
||||
|
||||
|
||||
// Box sizing
|
||||
.box-sizing(@boxmodel) {
|
||||
-webkit-box-sizing: @boxmodel;
|
||||
@@ -363,13 +197,13 @@
|
||||
}
|
||||
|
||||
// CSS3 Content Columns
|
||||
.content-columns(@columnCount, @columnGap: @gridGutterWidth) {
|
||||
-webkit-column-count: @columnCount;
|
||||
-moz-column-count: @columnCount;
|
||||
column-count: @columnCount;
|
||||
-webkit-column-gap: @columnGap;
|
||||
-moz-column-gap: @columnGap;
|
||||
column-gap: @columnGap;
|
||||
.content-columns(@column-count, @column-gap: @grid-gutter-width) {
|
||||
-webkit-column-count: @column-count;
|
||||
-moz-column-count: @column-count;
|
||||
column-count: @column-count;
|
||||
-webkit-column-gap: @column-gap;
|
||||
-moz-column-gap: @column-gap;
|
||||
column-gap: @column-gap;
|
||||
}
|
||||
|
||||
// Optional hyphenation
|
||||
@@ -384,92 +218,79 @@
|
||||
|
||||
// Opacity
|
||||
.opacity(@opacity) {
|
||||
opacity: @opacity / 100;
|
||||
filter: ~"alpha(opacity=@{opacity})";
|
||||
opacity: @opacity;
|
||||
// IE8 filter
|
||||
@opacity-ie: (@opacity * 100);
|
||||
filter: ~"alpha(opacity=@{opacity-ie})";
|
||||
}
|
||||
|
||||
|
||||
|
||||
// BACKGROUNDS
|
||||
// GRADIENTS
|
||||
// --------------------------------------------------
|
||||
|
||||
// Add an alphatransparency value to any background or border color (via Elyse Holladay)
|
||||
#translucent {
|
||||
.background(@color: @white, @alpha: 1) {
|
||||
background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
|
||||
}
|
||||
.border(@color: @white, @alpha: 1) {
|
||||
border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
|
||||
.background-clip(padding-box);
|
||||
}
|
||||
}
|
||||
|
||||
// Gradient Bar Colors for buttons and alerts
|
||||
.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
|
||||
color: @textColor;
|
||||
text-shadow: @textShadow;
|
||||
#gradient > .vertical(@primaryColor, @secondaryColor);
|
||||
border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
|
||||
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
|
||||
}
|
||||
|
||||
// Gradients
|
||||
#gradient {
|
||||
.horizontal(@startColor: #555, @endColor: #333) {
|
||||
background-color: @endColor;
|
||||
background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
|
||||
background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
|
||||
background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||
background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
|
||||
background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
|
||||
|
||||
// Horizontal gradient, from left to right
|
||||
//
|
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
||||
// Color stops are not available in IE9 and below.
|
||||
.horizontal(@start-color: #555; @start-percent: 0%; @end-color: #333; @end-percent: 100%) {
|
||||
background-color: @end-color;
|
||||
background-image: -webkit-gradient(linear, @start-percent top, @end-percent top, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+
|
||||
background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1+, Chrome 10+
|
||||
background-image: -moz-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // FF 3.6+
|
||||
background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10
|
||||
background-repeat: repeat-x;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
|
||||
}
|
||||
.vertical(@startColor: #555, @endColor: #333) {
|
||||
background-color: mix(@startColor, @endColor, 60%);
|
||||
background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
|
||||
background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||
background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
|
||||
background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
|
||||
background-repeat: repeat-x;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
|
||||
}
|
||||
.directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
|
||||
background-color: @endColor;
|
||||
background-repeat: repeat-x;
|
||||
background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
|
||||
background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||
background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
|
||||
background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
|
||||
}
|
||||
.horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
|
||||
background-color: mix(@midColor, @endColor, 80%);
|
||||
background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
|
||||
background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
|
||||
background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
|
||||
background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
|
||||
background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor);
|
||||
background-repeat: no-repeat;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down
|
||||
}
|
||||
|
||||
.vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
|
||||
background-color: mix(@midColor, @endColor, 80%);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
|
||||
background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
|
||||
background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
|
||||
background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
|
||||
background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
|
||||
background-repeat: no-repeat;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
|
||||
// Vertical gradient, from top to bottom
|
||||
//
|
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
||||
// Color stops are not available in IE9 and below.
|
||||
.vertical(@start-color: #555; @start-percent: 0%; @end-color: #333; @end-percent: 100%) {
|
||||
background-color: @end-color;
|
||||
background-image: -webkit-gradient(linear, left @start-percent, left @end-percent, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+
|
||||
background-image: -webkit-linear-gradient(top, @start-color, @start-percent, @end-color, @end-percent); // Safari 5.1+, Chrome 10+
|
||||
background-image: -moz-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // FF 3.6+
|
||||
background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10
|
||||
background-repeat: repeat-x;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down
|
||||
}
|
||||
.radial(@innerColor: #555, @outerColor: #333) {
|
||||
background-color: @outerColor;
|
||||
background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
|
||||
background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
|
||||
background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
|
||||
background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
|
||||
|
||||
.directional(@start-color: #555, @end-color: #333, @deg: 45deg) {
|
||||
background-color: @end-color;
|
||||
background-repeat: repeat-x;
|
||||
background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1+, Chrome 10+
|
||||
background-image: -moz-linear-gradient(@deg, @start-color, @end-color); // FF 3.6+
|
||||
background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10
|
||||
}
|
||||
.horizontal-three-colors(@start-color: #00b3ee, @mid-color: #7a43b6, @color-stop: 50%, @end-color: #c3325f) {
|
||||
background-color: mix(@mid-color, @end-color, 80%);
|
||||
background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color));
|
||||
background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
|
||||
background-image: -moz-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
|
||||
background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);
|
||||
background-repeat: no-repeat;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
|
||||
}
|
||||
|
||||
.vertical-three-colors(@start-color: #00b3ee, @mid-color: #7a43b6, @color-stop: 50%, @end-color: #c3325f) {
|
||||
background-color: mix(@mid-color, @end-color, 80%);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color));
|
||||
background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
|
||||
background-image: -moz-linear-gradient(top, @start-color, @mid-color @color-stop, @end-color);
|
||||
background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);
|
||||
background-repeat: no-repeat;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
|
||||
}
|
||||
.radial(@inner-color: #555, @outer-color: #333) {
|
||||
background-color: @outer-color;
|
||||
background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@inner-color), to(@outer-color));
|
||||
background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);
|
||||
background-image: -moz-radial-gradient(circle, @inner-color, @outer-color);
|
||||
background-image: radial-gradient(circle, @inner-color, @outer-color);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.striped(@color: #555, @angle: 45deg) {
|
||||
@@ -477,56 +298,107 @@
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
}
|
||||
|
||||
// Reset filters for IE
|
||||
//
|
||||
// When you need to remove a gradient background, don't forget to use this to reset
|
||||
// the IE filter for IE9 and below.
|
||||
.reset-filter() {
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// RETINA IMAGE SUPPORT
|
||||
// --------------------------------------------------
|
||||
|
||||
// Short retina mixin for setting background-image and -size
|
||||
.img-retina(@file-1x, @file-2x, @width-1x, @height-1x) {
|
||||
background-image: url("@{file-1x}");
|
||||
|
||||
@media
|
||||
only screen and (-webkit-min-device-pixel-ratio: 2),
|
||||
only screen and ( min--moz-device-pixel-ratio: 2),
|
||||
only screen and ( -o-min-device-pixel-ratio: 2/1),
|
||||
only screen and ( min-device-pixel-ratio: 2),
|
||||
only screen and ( min-resolution: 192dpi),
|
||||
only screen and ( min-resolution: 2dppx) {
|
||||
background-image: url("@{file-2x}");
|
||||
background-size: @width-1x @height-1x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// COMPONENT MIXINS
|
||||
// --------------------------------------------------
|
||||
|
||||
// Horizontal dividers
|
||||
// -------------------------
|
||||
// Dividers (basically an hr) within dropdowns and nav lists
|
||||
.nav-divider(@top: #e5e5e5, @bottom: @white) {
|
||||
// IE7 needs a set width since we gave a height. Restricting just
|
||||
// to IE7 to keep the 1px left/right space in other browsers.
|
||||
// It is unclear where IE is getting the extra space that we need
|
||||
// to negative-margin away, but so it goes.
|
||||
*width: 100%;
|
||||
.nav-divider(@color: #e5e5e5) {
|
||||
height: 1px;
|
||||
margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
|
||||
*margin: -5px 0 5px;
|
||||
margin: ((@line-height-computed / 2) - 1) 0;
|
||||
overflow: hidden;
|
||||
background-color: @top;
|
||||
border-bottom: 1px solid @bottom;
|
||||
background-color: @color;
|
||||
}
|
||||
|
||||
// Button backgrounds
|
||||
// ------------------
|
||||
.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
|
||||
// gradientBar will set the background to a pleasing blend of these, to support IE<=9
|
||||
.gradientBar(@startColor, @endColor, @textColor, @textShadow);
|
||||
*background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||
.reset-filter();
|
||||
|
||||
// in these cases the gradient won't cover the background, so we override
|
||||
&:hover, &:focus, &:active, &.active, &.disabled, &[disabled] {
|
||||
color: @textColor;
|
||||
background-color: @endColor;
|
||||
*background-color: darken(@endColor, 5%);
|
||||
// Alerts
|
||||
// -------------------------
|
||||
.alert-variant(@background, @border, @text-color) {
|
||||
background-color: @background;
|
||||
border-color: @border;
|
||||
color: @text-color;
|
||||
hr {
|
||||
border-top-color: darken(@border, 5%);
|
||||
}
|
||||
.alert-link {
|
||||
color: darken(@text-color, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
// IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
|
||||
// Button pseudo states
|
||||
// -------------------------
|
||||
// Easily pump out default styles, as well as :hover, :focus, :active,
|
||||
// and disabled options for all buttons
|
||||
.btn-pseudo-states(@color, @background, @border) {
|
||||
color: @color;
|
||||
background-color: @background;
|
||||
border-color: @border;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active,
|
||||
&.active {
|
||||
background-color: darken(@endColor, 10%) e("\9");
|
||||
background-color: darken(@background, 5%);
|
||||
border-color: darken(@border, 10%);
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active,
|
||||
&.active {
|
||||
background-color: @background;
|
||||
border-color: @border
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Labels
|
||||
// -------------------------
|
||||
.label-variant(@color) {
|
||||
background-color: @color;
|
||||
&[href] {
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: darken(@color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -534,11 +406,36 @@
|
||||
// -------------------------
|
||||
// Vertically center elements in the navbar.
|
||||
// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
|
||||
.navbarVerticalAlign(@elementHeight) {
|
||||
margin-top: (@navbarHeight - @elementHeight) / 2;
|
||||
.navbar-vertical-align(@element-height) {
|
||||
margin-top: ((@navbar-height - @element-height) / 2);
|
||||
margin-bottom: ((@navbar-height - @element-height) / 2);
|
||||
}
|
||||
|
||||
// Progress bars
|
||||
// -------------------------
|
||||
.progress-bar-variant(@color) {
|
||||
background-color: @color;
|
||||
.progress-striped & {
|
||||
#gradient > .striped(@color);
|
||||
}
|
||||
}
|
||||
|
||||
// Responsive utilities
|
||||
// -------------------------
|
||||
// More easily include all the states for responsive-utilities.less.
|
||||
.responsive-visibility() {
|
||||
display: block !important;
|
||||
tr& { display: table-row !important; }
|
||||
th&,
|
||||
td& { display: table-cell !important; }
|
||||
}
|
||||
|
||||
.responsive-invisibility() {
|
||||
display: none !important;
|
||||
tr& { display: none !important; }
|
||||
th&,
|
||||
td& { display: none !important; }
|
||||
}
|
||||
|
||||
// Grid System
|
||||
// -----------
|
||||
@@ -550,153 +447,100 @@
|
||||
.clearfix();
|
||||
}
|
||||
|
||||
// Table columns
|
||||
.tableColumns(@columnSpan: 1) {
|
||||
float: none; // undo default grid column styles
|
||||
width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
|
||||
margin-left: 0; // undo default grid column styles
|
||||
}
|
||||
|
||||
// Make a Grid
|
||||
// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
|
||||
.makeRow() {
|
||||
margin-left: @gridGutterWidth * -1;
|
||||
// Creates a wrapper for a series of columns
|
||||
.make-row() {
|
||||
// Then clear the floated columns
|
||||
.clearfix();
|
||||
|
||||
@media (min-width: @screen-small) {
|
||||
margin-left: (@grid-gutter-width / -2);
|
||||
margin-right: (@grid-gutter-width / -2);
|
||||
}
|
||||
|
||||
// Negative margin nested rows out to align the content of columns
|
||||
.row {
|
||||
margin-left: (@grid-gutter-width / -2);
|
||||
margin-right: (@grid-gutter-width / -2);
|
||||
}
|
||||
}
|
||||
.makeColumn(@columns: 1, @offset: 0) {
|
||||
|
||||
// Generate the columns
|
||||
.make-column(@columns) {
|
||||
position: relative;
|
||||
// Prevent columns from collapsing when empty
|
||||
min-height: 1px;
|
||||
// Inner gutter via padding
|
||||
padding-left: (@grid-gutter-width / 2);
|
||||
padding-right: (@grid-gutter-width / 2);
|
||||
|
||||
// Calculate width based on number of columns available
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
float: left;
|
||||
width: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
|
||||
// Generate the column offsets
|
||||
.make-column-offset(@columns) {
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
margin-left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-column-push(@columns) {
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-column-pull(@columns) {
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
right: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
|
||||
// Generate the small columns
|
||||
.make-small-column(@columns) {
|
||||
position: relative;
|
||||
float: left;
|
||||
margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
|
||||
width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
|
||||
}
|
||||
|
||||
// The Grid
|
||||
#grid {
|
||||
|
||||
.core (@gridColumnWidth, @gridGutterWidth) {
|
||||
|
||||
.spanX (@index) when (@index > 0) {
|
||||
.span@{index} { .span(@index); }
|
||||
.spanX(@index - 1);
|
||||
}
|
||||
.spanX (0) {}
|
||||
|
||||
.offsetX (@index) when (@index > 0) {
|
||||
.offset@{index} { .offset(@index); }
|
||||
.offsetX(@index - 1);
|
||||
}
|
||||
.offsetX (0) {}
|
||||
|
||||
.offset (@columns) {
|
||||
margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
|
||||
}
|
||||
|
||||
.span (@columns) {
|
||||
width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
|
||||
}
|
||||
|
||||
.row {
|
||||
margin-left: @gridGutterWidth * -1;
|
||||
.clearfix();
|
||||
}
|
||||
|
||||
[class*="span"] {
|
||||
float: left;
|
||||
min-height: 1px; // prevent collapsing columns
|
||||
margin-left: @gridGutterWidth;
|
||||
}
|
||||
|
||||
// Set the container width, and override it for fixed navbars in media queries
|
||||
.container,
|
||||
.navbar-static-top .container,
|
||||
.navbar-fixed-top .container,
|
||||
.navbar-fixed-bottom .container { .span(@gridColumns); }
|
||||
|
||||
// generate .spanX and .offsetX
|
||||
.spanX (@gridColumns);
|
||||
.offsetX (@gridColumns);
|
||||
|
||||
}
|
||||
|
||||
.fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
|
||||
|
||||
.spanX (@index) when (@index > 0) {
|
||||
.span@{index} { .span(@index); }
|
||||
.spanX(@index - 1);
|
||||
}
|
||||
.spanX (0) {}
|
||||
|
||||
.offsetX (@index) when (@index > 0) {
|
||||
.offset@{index} { .offset(@index); }
|
||||
.offset@{index}:first-child { .offsetFirstChild(@index); }
|
||||
.offsetX(@index - 1);
|
||||
}
|
||||
.offsetX (0) {}
|
||||
|
||||
.offset (@columns) {
|
||||
margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
|
||||
*margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
|
||||
}
|
||||
|
||||
.offsetFirstChild (@columns) {
|
||||
margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
|
||||
*margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
|
||||
}
|
||||
|
||||
.span (@columns) {
|
||||
width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
|
||||
*width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
|
||||
}
|
||||
|
||||
.row-fluid {
|
||||
width: 100%;
|
||||
.clearfix();
|
||||
[class*="span"] {
|
||||
.input-block-level();
|
||||
float: left;
|
||||
margin-left: @fluidGridGutterWidth;
|
||||
*margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
|
||||
}
|
||||
[class*="span"]:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
// Space grid-sized controls properly if multiple per line
|
||||
.controls-row [class*="span"] + [class*="span"] {
|
||||
margin-left: @fluidGridGutterWidth;
|
||||
}
|
||||
|
||||
// generate .spanX and .offsetX
|
||||
.spanX (@gridColumns);
|
||||
.offsetX (@gridColumns);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.input(@gridColumnWidth, @gridGutterWidth) {
|
||||
|
||||
.spanX (@index) when (@index > 0) {
|
||||
input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
|
||||
.spanX(@index - 1);
|
||||
}
|
||||
.spanX (0) {}
|
||||
|
||||
.span(@columns) {
|
||||
width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
.uneditable-input {
|
||||
margin-left: 0; // override margin-left from core grid system
|
||||
}
|
||||
|
||||
// Space grid-sized controls properly if multiple per line
|
||||
.controls-row [class*="span"] + [class*="span"] {
|
||||
margin-left: @gridGutterWidth;
|
||||
}
|
||||
|
||||
// generate .spanX
|
||||
.spanX (@gridColumns);
|
||||
// Prevent columns from collapsing when empty
|
||||
min-height: 1px;
|
||||
// Inner gutter via padding
|
||||
padding-left: (@grid-gutter-width / 2);
|
||||
padding-right: (@grid-gutter-width / 2);
|
||||
@max-width: (@grid-float-breakpoint - 1);
|
||||
|
||||
// Calculate width based on number of columns available
|
||||
@media (max-width: @max-width) {
|
||||
width: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Form validation states
|
||||
//
|
||||
// Used in forms.less to generate the form validation CSS for warnings, errors,
|
||||
// and successes.
|
||||
|
||||
.form-control-validation(@text-color: #555, @border-color: #ccc, @background-color: #f5f5f5) {
|
||||
// Color the label and help text
|
||||
.help-block,
|
||||
.control-label {
|
||||
color: @text-color;
|
||||
}
|
||||
// Set the border and box shadow on specific inputs to match
|
||||
.form-control {
|
||||
padding-right: 32px; // to account for the feedback icon
|
||||
border-color: @border-color;
|
||||
.box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
|
||||
&:focus {
|
||||
border-color: darken(@border-color, 10%);
|
||||
@shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
|
||||
.box-shadow(@shadow);
|
||||
}
|
||||
}
|
||||
// Set validation states also for addons
|
||||
.input-group-addon {
|
||||
color: @text-color;
|
||||
border-color: @border-color;
|
||||
background-color: @background-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,81 +2,105 @@
|
||||
// Modals
|
||||
// --------------------------------------------------
|
||||
|
||||
// Background
|
||||
// .modal-open - body class for killing the scroll
|
||||
// .modal - container to scroll within
|
||||
// .modal-dialog - positioning shell for the actual modal
|
||||
// .modal-content - actual modal w/ bg and corners and shit
|
||||
|
||||
// Kill the scroll on the body
|
||||
.modal-open {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
// Container that the modal scrolls within
|
||||
.modal {
|
||||
display: none;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: @zindex-modal-background;
|
||||
|
||||
// When fading in the modal, animate it to slide down
|
||||
&.fade .modal-dialog {
|
||||
.translate(0, -25%);
|
||||
.transition-transform(~"0.3s ease-out");
|
||||
}
|
||||
&.fade.in .modal-dialog { .translate(0, 0)}
|
||||
}
|
||||
|
||||
// Shell div to position the modal with bottom padding
|
||||
.modal-dialog {
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: auto;
|
||||
padding: 10px;
|
||||
z-index: (@zindex-modal-background + 10);
|
||||
}
|
||||
|
||||
// Actual modal
|
||||
.modal-content {
|
||||
position: relative;
|
||||
background-color: @modal-content-bg;
|
||||
border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
|
||||
border: 1px solid @modal-content-border-color;
|
||||
border-radius: @border-radius-large;
|
||||
.box-shadow(0 3px 9px rgba(0,0,0,.5));
|
||||
.background-clip(padding-box);
|
||||
// Remove focus outline from opened modal
|
||||
outline: none;
|
||||
}
|
||||
|
||||
// Modal background
|
||||
.modal-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: @zindexModalBackdrop;
|
||||
background-color: @black;
|
||||
z-index: (@zindex-modal-background - 10);
|
||||
background-color: @modal-backdrop-bg;
|
||||
// Fade for backdrop
|
||||
&.fade { opacity: 0; }
|
||||
&.fade { .opacity(0); }
|
||||
&.fade.in { .opacity(.5); }
|
||||
}
|
||||
|
||||
.modal-backdrop,
|
||||
.modal-backdrop.fade.in {
|
||||
.opacity(80);
|
||||
}
|
||||
|
||||
// Base modal
|
||||
.modal {
|
||||
position: fixed;
|
||||
top: 10%;
|
||||
left: 50%;
|
||||
z-index: @zindexModal;
|
||||
width: 560px;
|
||||
margin-left: -280px;
|
||||
background-color: @white;
|
||||
border: 1px solid #999;
|
||||
border: 1px solid rgba(0,0,0,.3);
|
||||
*border: 1px solid #999; /* IE6-7 */
|
||||
.border-radius(6px);
|
||||
.box-shadow(0 3px 7px rgba(0,0,0,0.3));
|
||||
.background-clip(padding-box);
|
||||
// Remove focus outline from opened modal
|
||||
outline: none;
|
||||
|
||||
&.fade {
|
||||
.transition(e('opacity .3s linear, top .3s ease-out'));
|
||||
top: -25%;
|
||||
}
|
||||
&.fade.in { top: 10%; }
|
||||
}
|
||||
// Modal header
|
||||
// Top section of the modal w/ title and dismiss
|
||||
.modal-header {
|
||||
padding: 9px 15px;
|
||||
border-bottom: 1px solid #eee;
|
||||
// Close icon
|
||||
.close { margin-top: 2px; }
|
||||
// Heading
|
||||
h3 {
|
||||
margin: 0;
|
||||
line-height: 30px;
|
||||
}
|
||||
padding: @modal-title-padding;
|
||||
border-bottom: 1px solid @modal-header-border-color;
|
||||
min-height: (@modal-title-padding + @modal-title-line-height);
|
||||
}
|
||||
// Close icon
|
||||
.modal-header .close {
|
||||
margin-top: -2px;
|
||||
}
|
||||
|
||||
// Body (where all modal content resides)
|
||||
// Title text within header
|
||||
.modal-title {
|
||||
margin: 0;
|
||||
line-height: @modal-title-line-height;
|
||||
}
|
||||
|
||||
// Modal body
|
||||
// Where all modal content resides (sibling of .modal-header and .modal-footer)
|
||||
.modal-body {
|
||||
position: relative;
|
||||
overflow-y: auto;
|
||||
max-height: 400px;
|
||||
padding: 15px;
|
||||
}
|
||||
// Remove bottom margin if need be
|
||||
.modal-form {
|
||||
margin-bottom: 0;
|
||||
padding: @modal-inner-padding;
|
||||
}
|
||||
|
||||
// Footer (for actions)
|
||||
.modal-footer {
|
||||
padding: 14px 15px 15px;
|
||||
margin-bottom: 0;
|
||||
margin-top: 15px;
|
||||
padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;
|
||||
text-align: right; // right align buttons
|
||||
background-color: #f5f5f5;
|
||||
border-top: 1px solid #ddd;
|
||||
.border-radius(0 0 6px 6px);
|
||||
.box-shadow(inset 0 1px 0 @white);
|
||||
border-top: 1px solid @modal-footer-border-color;
|
||||
.clearfix(); // clear it in case folks use .pull-* classes on buttons
|
||||
|
||||
// Properly space out buttons
|
||||
@@ -93,3 +117,20 @@
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Scale up the modal
|
||||
@media screen and (min-width: @screen-tablet) {
|
||||
|
||||
.modal-dialog {
|
||||
left: 50%;
|
||||
right: auto;
|
||||
width: 560px;
|
||||
margin-left: -280px;
|
||||
padding-top: 30px;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
.modal-content {
|
||||
.box-shadow(0 5px 15px rgba(0,0,0,.5));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,497 +1,380 @@
|
||||
//
|
||||
// Navbars (Redux)
|
||||
// Navbars
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// COMMON STYLES
|
||||
// -------------
|
||||
|
||||
// Base class and wrapper
|
||||
// Wrapper and base class
|
||||
.navbar {
|
||||
overflow: visible;
|
||||
margin-bottom: @baseLineHeight;
|
||||
|
||||
// Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
|
||||
*position: relative;
|
||||
*z-index: 2;
|
||||
}
|
||||
|
||||
// Inner for background effects
|
||||
// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
|
||||
.navbar-inner {
|
||||
min-height: @navbarHeight;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
#gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
|
||||
border: 1px solid @navbarBorder;
|
||||
.border-radius(@baseBorderRadius);
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.065));
|
||||
position: relative;
|
||||
min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
|
||||
margin-bottom: 20px;
|
||||
padding-left: @navbar-padding-horizontal;
|
||||
padding-right: @navbar-padding-horizontal;
|
||||
background-color: @navbar-bg;
|
||||
border-radius: @border-radius-base;
|
||||
|
||||
// Prevent floats from breaking the navbar
|
||||
.clearfix();
|
||||
}
|
||||
|
||||
// Set width to auto for default container
|
||||
// We then reset it for fixed navbars in the #gridSystem mixin
|
||||
.navbar .container {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
// Override the default collapsed state
|
||||
.nav-collapse.collapse {
|
||||
height: auto;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
|
||||
// Brand: website or project name
|
||||
// Navbar nav links
|
||||
// -------------------------
|
||||
.navbar .brand {
|
||||
float: left;
|
||||
display: block;
|
||||
// Vertically center the text given @navbarHeight
|
||||
padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2);
|
||||
margin-left: -20px; // negative indent to left-align the text down the page
|
||||
font-size: 20px;
|
||||
font-weight: 200;
|
||||
color: @navbarBrandColor;
|
||||
text-shadow: 0 1px 0 @navbarBackgroundHighlight;
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Plain text in topbar
|
||||
// -------------------------
|
||||
.navbar-text {
|
||||
margin-bottom: 0;
|
||||
line-height: @navbarHeight;
|
||||
color: @navbarText;
|
||||
}
|
||||
.navbar-nav {
|
||||
// Space out from .navbar .brand and .btn-navbar when stacked in mobile views
|
||||
margin-top: 10px;
|
||||
margin-bottom: 15px;
|
||||
|
||||
// Janky solution for now to account for links outside the .nav
|
||||
// -------------------------
|
||||
.navbar-link {
|
||||
color: @navbarLinkColor;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbarLinkColorHover;
|
||||
}
|
||||
}
|
||||
|
||||
// Dividers in navbar
|
||||
// -------------------------
|
||||
.navbar .divider-vertical {
|
||||
height: @navbarHeight;
|
||||
margin: 0 9px;
|
||||
border-left: 1px solid @navbarBackground;
|
||||
border-right: 1px solid @navbarBackgroundHighlight;
|
||||
}
|
||||
|
||||
// Buttons in navbar
|
||||
// -------------------------
|
||||
.navbar .btn,
|
||||
.navbar .btn-group {
|
||||
.navbarVerticalAlign(30px); // Vertically center in navbar
|
||||
}
|
||||
.navbar .btn-group .btn,
|
||||
.navbar .input-prepend .btn,
|
||||
.navbar .input-append .btn,
|
||||
.navbar .input-prepend .btn-group,
|
||||
.navbar .input-append .btn-group {
|
||||
margin-top: 0; // then undo the margin here so we don't accidentally double it
|
||||
}
|
||||
|
||||
// Navbar forms
|
||||
// -------------------------
|
||||
.navbar-form {
|
||||
margin-bottom: 0; // remove default bottom margin
|
||||
.clearfix();
|
||||
input,
|
||||
select,
|
||||
.radio,
|
||||
.checkbox {
|
||||
.navbarVerticalAlign(30px); // Vertically center in navbar
|
||||
}
|
||||
input,
|
||||
select,
|
||||
.btn {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
input[type="image"],
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
margin-top: 3px;
|
||||
}
|
||||
.input-append,
|
||||
.input-prepend {
|
||||
margin-top: 5px;
|
||||
white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left
|
||||
input {
|
||||
margin-top: 0; // remove the margin on top since it's on the parent
|
||||
> li > a {
|
||||
padding-top: ((@navbar-height - @line-height-computed) / 2);
|
||||
padding-bottom: ((@navbar-height - @line-height-computed) / 2);
|
||||
color: @navbar-link-color;
|
||||
line-height: 20px;
|
||||
border-radius: @border-radius-base;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-link-hover-color;
|
||||
background-color: @navbar-link-hover-bg;
|
||||
}
|
||||
}
|
||||
> .active > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-link-active-color;
|
||||
background-color: @navbar-link-active-bg;
|
||||
}
|
||||
}
|
||||
> .disabled > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-link-disabled-color;
|
||||
background-color: @navbar-link-disabled-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Navbar search
|
||||
// -------------------------
|
||||
.navbar-search {
|
||||
position: relative;
|
||||
float: left;
|
||||
.navbarVerticalAlign(30px); // Vertically center in navbar
|
||||
margin-bottom: 0;
|
||||
.search-query {
|
||||
margin-bottom: 0;
|
||||
padding: 4px 14px;
|
||||
#font > .sans-serif(13px, normal, 1);
|
||||
.border-radius(15px); // redeclare because of specificity of the type attribute
|
||||
// Right aligned contents
|
||||
// Make them full width first so that they align properly on mobile
|
||||
&.pull-right {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Navbar alignment options
|
||||
// --------------------------------------------------
|
||||
|
||||
// Static navbar
|
||||
// -------------------------
|
||||
|
||||
.navbar-static-top {
|
||||
position: static;
|
||||
margin-bottom: 0; // remove 18px margin for default navbar
|
||||
.navbar-inner {
|
||||
.border-radius(0);
|
||||
}
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Fixed navbar
|
||||
// -------------------------
|
||||
|
||||
// Shared (top/bottom) styles
|
||||
// Fix the top/bottom navbars when screen real estate supports it
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: @zindexFixedNavbar;
|
||||
margin-bottom: 0; // remove 18px margin for default navbar
|
||||
z-index: @zindex-navbar-fixed;
|
||||
border-radius: 0;
|
||||
}
|
||||
.navbar-fixed-top .navbar-inner,
|
||||
.navbar-static-top .navbar-inner {
|
||||
border-width: 0 0 1px;
|
||||
}
|
||||
.navbar-fixed-bottom .navbar-inner {
|
||||
border-width: 1px 0 0;
|
||||
}
|
||||
.navbar-fixed-top .navbar-inner,
|
||||
.navbar-fixed-bottom .navbar-inner {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
.border-radius(0);
|
||||
}
|
||||
|
||||
// Reset container width
|
||||
// Required here as we reset the width earlier on and the grid mixins don't override early enough
|
||||
.navbar-static-top .container,
|
||||
.navbar-fixed-top .container,
|
||||
.navbar-fixed-bottom .container {
|
||||
#grid > .core > .span(@gridColumns);
|
||||
}
|
||||
|
||||
// Fixed to top
|
||||
.navbar-fixed-top {
|
||||
top: 0;
|
||||
}
|
||||
.navbar-fixed-top,
|
||||
.navbar-static-top {
|
||||
.navbar-inner {
|
||||
.box-shadow(~"0 1px 10px rgba(0,0,0,.1)");
|
||||
}
|
||||
}
|
||||
|
||||
// Fixed to bottom
|
||||
.navbar-fixed-bottom {
|
||||
bottom: 0;
|
||||
.navbar-inner {
|
||||
.box-shadow(~"0 -1px 10px rgba(0,0,0,.1)");
|
||||
margin-bottom: 0; // override .navbar defaults
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Navbar optional components
|
||||
// --------------------------------------------------
|
||||
|
||||
// Brand/project name
|
||||
.navbar-brand {
|
||||
display: block;
|
||||
max-width: 200px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding: @navbar-padding-vertical @navbar-padding-horizontal;
|
||||
font-size: @font-size-large;
|
||||
font-weight: 500;
|
||||
line-height: @line-height-computed;
|
||||
color: @navbar-brand-color;
|
||||
text-align: center;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-brand-hover-color;
|
||||
text-decoration: none;
|
||||
background-color: @navbar-brand-hover-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// Collapsible navbar toggle
|
||||
.navbar-toggle {
|
||||
position: absolute;
|
||||
top: floor((@navbar-height - 32) / 2);
|
||||
right: 10px;
|
||||
width: 48px;
|
||||
height: 32px;
|
||||
padding: 8px 12px;
|
||||
background-color: transparent;
|
||||
border: 1px solid @navbar-toggle-border-color;
|
||||
border-radius: @border-radius-base;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @navbar-toggle-hover-bg;
|
||||
}
|
||||
|
||||
// NAVIGATION
|
||||
// ----------
|
||||
|
||||
.navbar .nav {
|
||||
position: relative;
|
||||
left: 0;
|
||||
display: block;
|
||||
float: left;
|
||||
margin: 0 10px 0 0;
|
||||
}
|
||||
.navbar .nav.pull-right {
|
||||
float: right; // redeclare due to specificity
|
||||
margin-right: 0; // remove margin on float right nav
|
||||
}
|
||||
.navbar .nav > li {
|
||||
float: left;
|
||||
// Bars
|
||||
.icon-bar {
|
||||
display: block;
|
||||
width: 22px;
|
||||
height: 2px;
|
||||
background-color: @navbar-toggle-icon-bar-bg;
|
||||
border-radius: 1px;
|
||||
}
|
||||
.icon-bar + .icon-bar {
|
||||
margin-top: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
// Links
|
||||
.navbar .nav > li > a {
|
||||
float: none;
|
||||
// Vertically center the text given @navbarHeight
|
||||
padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2);
|
||||
color: @navbarLinkColor;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 @navbarBackgroundHighlight;
|
||||
// Navbar form
|
||||
.navbar-form {
|
||||
.form-inline();
|
||||
.navbar-vertical-align(@input-height-base); // Vertically center in navbar
|
||||
}
|
||||
.navbar .nav .dropdown-toggle .caret {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
// Hover/focus
|
||||
.navbar .nav > li > a:focus,
|
||||
.navbar .nav > li > a:hover {
|
||||
background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active
|
||||
color: @navbarLinkColorHover;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
// Active nav items
|
||||
.navbar .nav > .active > a,
|
||||
.navbar .nav > .active > a:hover,
|
||||
.navbar .nav > .active > a:focus {
|
||||
color: @navbarLinkColorActive;
|
||||
text-decoration: none;
|
||||
background-color: @navbarLinkBackgroundActive;
|
||||
.box-shadow(inset 0 3px 8px rgba(0,0,0,.125));
|
||||
}
|
||||
|
||||
// Navbar button for toggling navbar items in responsive layouts
|
||||
// These definitions need to come after '.navbar .btn'
|
||||
.navbar .btn-navbar {
|
||||
display: none;
|
||||
float: right;
|
||||
padding: 7px 10px;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
.buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%));
|
||||
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
|
||||
}
|
||||
.navbar .btn-navbar .icon-bar {
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 2px;
|
||||
background-color: #f5f5f5;
|
||||
.border-radius(1px);
|
||||
.box-shadow(0 1px 0 rgba(0,0,0,.25));
|
||||
}
|
||||
.btn-navbar .icon-bar + .icon-bar {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Dropdown menus
|
||||
// --------------
|
||||
|
||||
// Menu position and menu carets
|
||||
.navbar .nav > li > .dropdown-menu {
|
||||
&:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: @dropdownBorder;
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: 9px;
|
||||
}
|
||||
&:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid @dropdownBackground;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 10px;
|
||||
}
|
||||
.navbar-nav > li > .dropdown-menu {
|
||||
margin-top: 0;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
// Menu position and menu caret support for dropups via extra dropup class
|
||||
.navbar-fixed-bottom .nav > li > .dropdown-menu {
|
||||
&:before {
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: @dropdownBorder;
|
||||
border-bottom: 0;
|
||||
bottom: -7px;
|
||||
top: auto;
|
||||
}
|
||||
&:after {
|
||||
border-top: 6px solid @dropdownBackground;
|
||||
border-bottom: 0;
|
||||
bottom: -6px;
|
||||
top: auto;
|
||||
}
|
||||
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
// Caret should match text color on hover/focus
|
||||
.navbar .nav li.dropdown > a:hover .caret,
|
||||
.navbar .nav li.dropdown > a:focus .caret {
|
||||
border-top-color: @navbarLinkColorHover;
|
||||
border-bottom-color: @navbarLinkColorHover;
|
||||
}
|
||||
// Dropdown menu items and carets
|
||||
.navbar-nav {
|
||||
// Caret should match text color on hover
|
||||
> .dropdown > a:hover .caret,
|
||||
> .dropdown > a:focus .caret {
|
||||
border-top-color: @navbar-link-hover-color;
|
||||
border-bottom-color: @navbar-link-hover-color;
|
||||
}
|
||||
|
||||
// Remove background color from open dropdown
|
||||
.navbar .nav li.dropdown.open > .dropdown-toggle,
|
||||
.navbar .nav li.dropdown.active > .dropdown-toggle,
|
||||
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
|
||||
background-color: @navbarLinkBackgroundActive;
|
||||
color: @navbarLinkColorActive;
|
||||
}
|
||||
.navbar .nav li.dropdown > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarLinkColor;
|
||||
border-bottom-color: @navbarLinkColor;
|
||||
}
|
||||
.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
|
||||
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
|
||||
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarLinkColorActive;
|
||||
border-bottom-color: @navbarLinkColorActive;
|
||||
// Remove background color from open dropdown
|
||||
> .open > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @navbar-link-active-bg;
|
||||
color: @navbar-link-active-color;
|
||||
.caret {
|
||||
border-top-color: @navbar-link-active-color;
|
||||
border-bottom-color: @navbar-link-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
> .dropdown > a .caret {
|
||||
border-top-color: @navbar-link-color;
|
||||
border-bottom-color: @navbar-link-color;
|
||||
}
|
||||
}
|
||||
|
||||
// Right aligned menus need alt position
|
||||
.navbar .pull-right > li > .dropdown-menu,
|
||||
.navbar .nav > li > .dropdown-menu.pull-right {
|
||||
.navbar-nav.pull-right > li > .dropdown-menu,
|
||||
.navbar-nav > li > .dropdown-menu.pull-right {
|
||||
left: auto;
|
||||
right: 0;
|
||||
&:before {
|
||||
left: auto;
|
||||
right: 12px;
|
||||
}
|
||||
&:after {
|
||||
left: auto;
|
||||
right: 13px;
|
||||
}
|
||||
.dropdown-menu {
|
||||
left: auto;
|
||||
right: 100%;
|
||||
margin-left: 0;
|
||||
margin-right: -1px;
|
||||
.border-radius(6px 0 6px 6px);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Inverted navbar
|
||||
// -------------------------
|
||||
|
||||
// Inverse navbar
|
||||
// --------------------------------------------------
|
||||
|
||||
.navbar-inverse {
|
||||
background-color: @navbar-inverse-bg;
|
||||
|
||||
.navbar-inner {
|
||||
#gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
|
||||
border-color: @navbarInverseBorder;
|
||||
}
|
||||
|
||||
.brand,
|
||||
.nav > li > a {
|
||||
color: @navbarInverseLinkColor;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
.navbar-brand {
|
||||
color: @navbar-inverse-brand-color;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbarInverseLinkColorHover;
|
||||
color: @navbar-inverse-brand-hover-color;
|
||||
background-color: @navbar-inverse-brand-hover-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.brand {
|
||||
color: @navbarInverseBrandColor;
|
||||
}
|
||||
|
||||
.navbar-text {
|
||||
color: @navbarInverseText;
|
||||
color: @navbar-inverse-color;
|
||||
}
|
||||
|
||||
.nav > li > a:focus,
|
||||
.nav > li > a:hover {
|
||||
background-color: @navbarInverseLinkBackgroundHover;
|
||||
color: @navbarInverseLinkColorHover;
|
||||
}
|
||||
.navbar-nav {
|
||||
> li > a {
|
||||
color: @navbar-inverse-link-color;
|
||||
|
||||
.nav .active > a,
|
||||
.nav .active > a:hover,
|
||||
.nav .active > a:focus {
|
||||
color: @navbarInverseLinkColorActive;
|
||||
background-color: @navbarInverseLinkBackgroundActive;
|
||||
}
|
||||
|
||||
// Inline text links
|
||||
.navbar-link {
|
||||
color: @navbarInverseLinkColor;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbarInverseLinkColorHover;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-inverse-link-hover-color;
|
||||
background-color: @navbar-inverse-link-hover-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Dividers in navbar
|
||||
.divider-vertical {
|
||||
border-left-color: @navbarInverseBackground;
|
||||
border-right-color: @navbarInverseBackgroundHighlight;
|
||||
}
|
||||
|
||||
// Dropdowns
|
||||
.nav li.dropdown.open > .dropdown-toggle,
|
||||
.nav li.dropdown.active > .dropdown-toggle,
|
||||
.nav li.dropdown.open.active > .dropdown-toggle {
|
||||
background-color: @navbarInverseLinkBackgroundActive;
|
||||
color: @navbarInverseLinkColorActive;
|
||||
}
|
||||
.nav li.dropdown > a:hover .caret,
|
||||
.nav li.dropdown > a:focus .caret {
|
||||
border-top-color: @navbarInverseLinkColorActive;
|
||||
border-bottom-color: @navbarInverseLinkColorActive;
|
||||
}
|
||||
.nav li.dropdown > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarInverseLinkColor;
|
||||
border-bottom-color: @navbarInverseLinkColor;
|
||||
}
|
||||
.nav li.dropdown.open > .dropdown-toggle .caret,
|
||||
.nav li.dropdown.active > .dropdown-toggle .caret,
|
||||
.nav li.dropdown.open.active > .dropdown-toggle .caret {
|
||||
border-top-color: @navbarInverseLinkColorActive;
|
||||
border-bottom-color: @navbarInverseLinkColorActive;
|
||||
}
|
||||
|
||||
// Navbar search
|
||||
.navbar-search {
|
||||
.search-query {
|
||||
color: @white;
|
||||
background-color: @navbarInverseSearchBackground;
|
||||
border-color: @navbarInverseSearchBorder;
|
||||
.box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
|
||||
.transition(none);
|
||||
.placeholder(@navbarInverseSearchPlaceholderColor);
|
||||
|
||||
// Focus states (we use .focused since IE7-8 and down doesn't support :focus)
|
||||
&:focus,
|
||||
&.focused {
|
||||
padding: 5px 15px;
|
||||
color: @grayDark;
|
||||
text-shadow: 0 1px 0 @white;
|
||||
background-color: @navbarInverseSearchBackgroundFocus;
|
||||
border: 0;
|
||||
.box-shadow(0 0 3px rgba(0,0,0,.15));
|
||||
outline: 0;
|
||||
> .active > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-inverse-link-active-color;
|
||||
background-color: @navbar-inverse-link-active-bg;
|
||||
}
|
||||
}
|
||||
> .disabled > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @navbar-inverse-link-disabled-color;
|
||||
background-color: @navbar-inverse-link-disabled-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Navbar collapse button
|
||||
.btn-navbar {
|
||||
.buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%));
|
||||
// Darken the responsive nav toggle
|
||||
.navbar-toggle {
|
||||
border-color: @navbar-inverse-toggle-border-color;
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @navbar-inverse-toggle-hover-bg;
|
||||
}
|
||||
.icon-bar {
|
||||
background-color: @navbar-inverse-toggle-icon-bar-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// Dropdowns
|
||||
.navbar-nav {
|
||||
> .open > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @navbar-inverse-link-active-bg;
|
||||
color: @navbar-inverse-link-active-color;
|
||||
}
|
||||
}
|
||||
> .dropdown > a:hover .caret {
|
||||
border-top-color: @navbar-inverse-link-hover-color;
|
||||
border-bottom-color: @navbar-inverse-link-hover-color;
|
||||
}
|
||||
> .dropdown > a .caret {
|
||||
border-top-color: @navbar-inverse-link-color;
|
||||
border-bottom-color: @navbar-inverse-link-color;
|
||||
}
|
||||
> .open > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
.caret {
|
||||
border-top-color: @navbar-inverse-link-active-color;
|
||||
border-bottom-color: @navbar-inverse-link-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Responsive navbar
|
||||
// --------------------------------------------------
|
||||
|
||||
@media screen and (min-width: @grid-float-breakpoint) {
|
||||
|
||||
.navbar-brand {
|
||||
float: left;
|
||||
margin-left: -(@navbar-padding-horizontal);
|
||||
margin-right: 5px;
|
||||
}
|
||||
.navbar-nav {
|
||||
float: left;
|
||||
// undo margin to make nav extend full height of navbar
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
|
||||
> li {
|
||||
float: left;
|
||||
> a {
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.pull-right {
|
||||
float: right;
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
// Required to make the collapsing navbar work on regular desktops
|
||||
.navbar-toggle {
|
||||
position: relative;
|
||||
top: auto;
|
||||
left: auto;
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse.collapse {
|
||||
display: block !important;
|
||||
height: auto !important;
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Buttons in navbars
|
||||
//
|
||||
// Vertically center a button within a navbar (when *not* in a form).
|
||||
|
||||
.navbar-btn {
|
||||
margin-top: ((@navbar-height - @input-height-base) / 2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Text in navbars
|
||||
//
|
||||
// Add a class to make any element properly align itself vertically within the navbars.
|
||||
|
||||
.navbar-text {
|
||||
.navbar-vertical-align(@line-height-computed);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Links in navbars
|
||||
//
|
||||
// Add a class to ensure links outside the navbar nav are colored correctly.
|
||||
|
||||
// Default navbar variables
|
||||
.navbar-link {
|
||||
color: @navbar-link-color;
|
||||
&:hover {
|
||||
color: @navbar-link-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
// Use the inverse navbar variables
|
||||
.navbar-inverse .navbar-link {
|
||||
color: @navbar-inverse-link-color;
|
||||
&:hover {
|
||||
color: @navbar-inverse-link-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,407 +3,235 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// BASE CLASS
|
||||
// ----------
|
||||
// Base class
|
||||
// --------------------------------------------------
|
||||
|
||||
.nav {
|
||||
margin-left: 0;
|
||||
margin-bottom: @baseLineHeight;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
// Make links block level
|
||||
.nav > li > a {
|
||||
display: block;
|
||||
}
|
||||
.nav > li > a:hover,
|
||||
.nav > li > a:focus {
|
||||
text-decoration: none;
|
||||
background-color: @grayLighter;
|
||||
}
|
||||
|
||||
// Prevent IE8 from misplacing imgs
|
||||
// See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
|
||||
.nav > li > a > img {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
// Redeclare pull classes because of specifity
|
||||
.nav > .pull-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
// Nav headers (for dropdowns and lists)
|
||||
.nav-header {
|
||||
display: block;
|
||||
padding: 3px 15px;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
line-height: @baseLineHeight;
|
||||
color: @grayLight;
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,.5);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
// Space them out when they follow another list item (link)
|
||||
.nav li + .nav-header {
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// NAV LIST
|
||||
// --------
|
||||
|
||||
.nav-list {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.nav-list > li > a,
|
||||
.nav-list .nav-header {
|
||||
margin-left: -15px;
|
||||
margin-right: -15px;
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,.5);
|
||||
}
|
||||
.nav-list > li > a {
|
||||
padding: 3px 15px;
|
||||
}
|
||||
.nav-list > .active > a,
|
||||
.nav-list > .active > a:hover,
|
||||
.nav-list > .active > a:focus {
|
||||
color: @white;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.2);
|
||||
background-color: @linkColor;
|
||||
}
|
||||
.nav-list [class^="icon-"],
|
||||
.nav-list [class*=" icon-"] {
|
||||
margin-right: 2px;
|
||||
}
|
||||
// Dividers (basically an hr) within the dropdown
|
||||
.nav-list .divider {
|
||||
.nav-divider();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TABS AND PILLS
|
||||
// -------------
|
||||
|
||||
// Common styles
|
||||
.nav-tabs,
|
||||
.nav-pills {
|
||||
padding-left: 0; // Override default ul/ol
|
||||
list-style: none;
|
||||
.clearfix();
|
||||
}
|
||||
.nav-tabs > li,
|
||||
.nav-pills > li {
|
||||
float: left;
|
||||
}
|
||||
.nav-tabs > li > a,
|
||||
.nav-pills > li > a {
|
||||
padding-right: 12px;
|
||||
padding-left: 12px;
|
||||
margin-right: 2px;
|
||||
line-height: 14px; // keeps the overall height an even number
|
||||
|
||||
> li {
|
||||
position: relative;
|
||||
display: block;
|
||||
|
||||
> a {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 10px 15px;
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
background-color: @nav-link-hover-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// Disabled state sets text to gray and nukes hover/tab effects
|
||||
&.disabled > a {
|
||||
color: @nav-disabled-link-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @nav-disabled-link-hover-color;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
// Space the headers out when they follow another list item (link)
|
||||
+ .nav-header {
|
||||
margin-top: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
// Open dropdowns
|
||||
&.open > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @nav-open-link-hover-color;
|
||||
background-color: @link-color;
|
||||
border-color: @link-color;
|
||||
.caret {
|
||||
border-top-color: @nav-open-caret-border-color;
|
||||
border-bottom-color: @nav-open-caret-border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Redeclare pull classes because of specificity
|
||||
// Todo: consider making these utilities !important to avoid this bullshit
|
||||
> .pull-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
// Dividers (basically an hr) within the dropdown
|
||||
.nav-divider {
|
||||
.nav-divider();
|
||||
}
|
||||
}
|
||||
|
||||
// TABS
|
||||
// ----
|
||||
|
||||
|
||||
// Nav variations
|
||||
// --------------------------------------------------
|
||||
|
||||
// Tabs
|
||||
// -------------------------
|
||||
|
||||
// Give the tabs something to sit on
|
||||
.nav-tabs {
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
// Make the list-items overlay the bottom border
|
||||
.nav-tabs > li {
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
// Actual tabs (as links)
|
||||
.nav-tabs > li > a {
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
line-height: @baseLineHeight;
|
||||
border: 1px solid transparent;
|
||||
.border-radius(4px 4px 0 0);
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-color: @grayLighter @grayLighter #ddd;
|
||||
border-bottom: 1px solid @nav-tabs-border-color;
|
||||
> li {
|
||||
float: left;
|
||||
// Make the list-items overlay the bottom border
|
||||
margin-bottom: -1px;
|
||||
|
||||
// Actual tabs (as links)
|
||||
> a {
|
||||
margin-right: 2px;
|
||||
line-height: @line-height-base;
|
||||
border: 1px solid transparent;
|
||||
border-radius: @border-radius-base @border-radius-base 0 0;
|
||||
&:hover {
|
||||
border-color: @nav-tabs-link-hover-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
// Active state, and it's :hover to override normal :hover
|
||||
&.active > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @nav-tabs-active-link-hover-color;
|
||||
background-color: @nav-tabs-active-link-hover-bg;
|
||||
border: 1px solid @nav-tabs-active-link-hover-border-color;
|
||||
border-bottom-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
}
|
||||
// pulling this in mainly for less shorthand
|
||||
&.nav-justified {
|
||||
.nav-justified();
|
||||
.nav-tabs-justified();
|
||||
}
|
||||
}
|
||||
// Active state, and it's :hover/:focus to override normal :hover/:focus
|
||||
.nav-tabs > .active > a,
|
||||
.nav-tabs > .active > a:hover,
|
||||
.nav-tabs > .active > a:focus {
|
||||
color: @gray;
|
||||
background-color: @bodyBackground;
|
||||
border: 1px solid #ddd;
|
||||
border-bottom-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
|
||||
// PILLS
|
||||
// -----
|
||||
|
||||
// Links rendered as pills
|
||||
.nav-pills > li > a {
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
.border-radius(5px);
|
||||
}
|
||||
|
||||
// Active state
|
||||
.nav-pills > .active > a,
|
||||
.nav-pills > .active > a:hover,
|
||||
.nav-pills > .active > a:focus {
|
||||
color: @white;
|
||||
background-color: @linkColor;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// STACKED NAV
|
||||
// -----------
|
||||
|
||||
// Stacked tabs and pills
|
||||
.nav-stacked > li {
|
||||
float: none;
|
||||
}
|
||||
.nav-stacked > li > a {
|
||||
margin-right: 0; // no need for the gap between nav items
|
||||
}
|
||||
|
||||
// Tabs
|
||||
.nav-tabs.nav-stacked {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.nav-tabs.nav-stacked > li > a {
|
||||
border: 1px solid #ddd;
|
||||
.border-radius(0);
|
||||
}
|
||||
.nav-tabs.nav-stacked > li:first-child > a {
|
||||
.border-top-radius(4px);
|
||||
}
|
||||
.nav-tabs.nav-stacked > li:last-child > a {
|
||||
.border-bottom-radius(4px);
|
||||
}
|
||||
.nav-tabs.nav-stacked > li > a:hover,
|
||||
.nav-tabs.nav-stacked > li > a:focus {
|
||||
border-color: #ddd;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
// Pills
|
||||
.nav-pills.nav-stacked > li > a {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
.nav-pills.nav-stacked > li:last-child > a {
|
||||
margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
|
||||
}
|
||||
|
||||
|
||||
|
||||
// DROPDOWNS
|
||||
// ---------
|
||||
|
||||
.nav-tabs .dropdown-menu {
|
||||
.border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu
|
||||
}
|
||||
.nav-pills .dropdown-menu {
|
||||
.border-radius(6px); // make rounded corners match the pills
|
||||
}
|
||||
|
||||
// Default dropdown links
|
||||
// -------------------------
|
||||
// Make carets use linkColor to start
|
||||
.nav .dropdown-toggle .caret {
|
||||
border-top-color: @linkColor;
|
||||
border-bottom-color: @linkColor;
|
||||
margin-top: 6px;
|
||||
}
|
||||
.nav .dropdown-toggle:hover .caret,
|
||||
.nav .dropdown-toggle:focus .caret {
|
||||
border-top-color: @linkColorHover;
|
||||
border-bottom-color: @linkColorHover;
|
||||
}
|
||||
/* move down carets for tabs */
|
||||
.nav-tabs .dropdown-toggle .caret {
|
||||
margin-top: 8px;
|
||||
.nav-pills {
|
||||
> li {
|
||||
float: left;
|
||||
|
||||
// Links rendered as pills
|
||||
> a {
|
||||
border-radius: 5px;
|
||||
}
|
||||
+ li {
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
// Active state
|
||||
&.active > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @nav-pills-active-link-hover-color;
|
||||
background-color: @nav-pills-active-link-hover-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Active dropdown links
|
||||
|
||||
// Stacked pills
|
||||
.nav-stacked {
|
||||
> li {
|
||||
float: none;
|
||||
+ li {
|
||||
> a {
|
||||
margin-top: 2px;
|
||||
margin-left: 0; // no need for this gap between nav items
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Justified nav links
|
||||
// -------------------------
|
||||
.nav .active .dropdown-toggle .caret {
|
||||
border-top-color: #fff;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.nav-tabs .active .dropdown-toggle .caret {
|
||||
border-top-color: @gray;
|
||||
border-bottom-color: @gray;
|
||||
|
||||
.nav-justified {
|
||||
width: 100%;
|
||||
> li {
|
||||
float: none;
|
||||
display: table-cell;
|
||||
width: 1%;
|
||||
> a {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Active:hover/:focus dropdown links
|
||||
// Move borders to anchors instead of bottom of list
|
||||
.nav-tabs-justified {
|
||||
border-bottom: 0;
|
||||
> li > a {
|
||||
border-bottom: 1px solid @nav-tabs-justified-link-border-color;
|
||||
|
||||
// Override margin from .nav-tabs
|
||||
margin-right: 0;
|
||||
}
|
||||
> .active > a {
|
||||
border-bottom-color: @nav-tabs-justified-active-link-border-color;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Tabbable tabs
|
||||
// -------------------------
|
||||
.nav > .dropdown.active > a:hover,
|
||||
.nav > .dropdown.active > a:focus {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
// Open dropdowns
|
||||
// -------------------------
|
||||
.nav-tabs .open .dropdown-toggle,
|
||||
.nav-pills .open .dropdown-toggle,
|
||||
.nav > li.dropdown.open.active > a:hover,
|
||||
.nav > li.dropdown.open.active > a:focus {
|
||||
color: @white;
|
||||
background-color: @grayLight;
|
||||
border-color: @grayLight;
|
||||
}
|
||||
.nav li.dropdown.open .caret,
|
||||
.nav li.dropdown.open.active .caret,
|
||||
.nav li.dropdown.open a:hover .caret,
|
||||
.nav li.dropdown.open a:focus .caret {
|
||||
border-top-color: @white;
|
||||
border-bottom-color: @white;
|
||||
.opacity(100);
|
||||
}
|
||||
|
||||
// Dropdowns in stacked tabs
|
||||
.tabs-stacked .open > a:hover,
|
||||
.tabs-stacked .open > a:focus {
|
||||
border-color: @grayLight;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TABBABLE
|
||||
// --------
|
||||
|
||||
|
||||
// COMMON STYLES
|
||||
// -------------
|
||||
|
||||
// Clear any floats
|
||||
.tabbable {
|
||||
.clearfix();
|
||||
}
|
||||
.tab-content {
|
||||
overflow: auto; // prevent content from running below tabs
|
||||
}
|
||||
|
||||
// Remove border on bottom, left, right
|
||||
.tabs-below > .nav-tabs,
|
||||
.tabs-right > .nav-tabs,
|
||||
.tabs-left > .nav-tabs {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
// Show/hide tabbable areas
|
||||
.tab-content > .tab-pane,
|
||||
.pill-content > .pill-pane {
|
||||
display: none;
|
||||
}
|
||||
.tab-content > .active,
|
||||
.pill-content > .active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
// BOTTOM
|
||||
// ------
|
||||
|
||||
.tabs-below > .nav-tabs {
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
.tabs-below > .nav-tabs > li {
|
||||
margin-top: -1px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.tabs-below > .nav-tabs > li > a {
|
||||
.border-radius(0 0 4px 4px);
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-bottom-color: transparent;
|
||||
border-top-color: #ddd;
|
||||
.tab-content,
|
||||
.pill-content {
|
||||
> .active {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.tabs-below > .nav-tabs > .active > a,
|
||||
.tabs-below > .nav-tabs > .active > a:hover,
|
||||
.tabs-below > .nav-tabs > .active > a:focus {
|
||||
border-color: transparent #ddd #ddd #ddd;
|
||||
}
|
||||
|
||||
// LEFT & RIGHT
|
||||
// ------------
|
||||
|
||||
// Common styles
|
||||
.tabs-left > .nav-tabs > li,
|
||||
.tabs-right > .nav-tabs > li {
|
||||
float: none;
|
||||
}
|
||||
.tabs-left > .nav-tabs > li > a,
|
||||
.tabs-right > .nav-tabs > li > a {
|
||||
min-width: 74px;
|
||||
margin-right: 0;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
// Tabs on the left
|
||||
.tabs-left > .nav-tabs {
|
||||
float: left;
|
||||
margin-right: 19px;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
.tabs-left > .nav-tabs > li > a {
|
||||
margin-right: -1px;
|
||||
.border-radius(4px 0 0 4px);
|
||||
}
|
||||
.tabs-left > .nav-tabs > li > a:hover,
|
||||
.tabs-left > .nav-tabs > li > a:focus {
|
||||
border-color: @grayLighter #ddd @grayLighter @grayLighter;
|
||||
}
|
||||
.tabs-left > .nav-tabs .active > a,
|
||||
.tabs-left > .nav-tabs .active > a:hover,
|
||||
.tabs-left > .nav-tabs .active > a:focus {
|
||||
border-color: #ddd transparent #ddd #ddd;
|
||||
*border-right-color: @white;
|
||||
}
|
||||
|
||||
// Tabs on the right
|
||||
.tabs-right > .nav-tabs {
|
||||
float: right;
|
||||
margin-left: 19px;
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
.tabs-right > .nav-tabs > li > a {
|
||||
margin-left: -1px;
|
||||
.border-radius(0 4px 4px 0);
|
||||
}
|
||||
.tabs-right > .nav-tabs > li > a:hover,
|
||||
.tabs-right > .nav-tabs > li > a:focus {
|
||||
border-color: @grayLighter @grayLighter @grayLighter #ddd;
|
||||
}
|
||||
.tabs-right > .nav-tabs .active > a,
|
||||
.tabs-right > .nav-tabs .active > a:hover,
|
||||
.tabs-right > .nav-tabs .active > a:focus {
|
||||
border-color: #ddd #ddd #ddd transparent;
|
||||
*border-left-color: @white;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// DISABLED STATES
|
||||
// ---------------
|
||||
// Dropdowns
|
||||
// -------------------------
|
||||
|
||||
// Gray out text
|
||||
.nav > .disabled > a {
|
||||
color: @grayLight;
|
||||
// Make dropdown carets use link color in navs
|
||||
.nav .caret {
|
||||
border-top-color: @link-color;
|
||||
border-bottom-color: @link-color;
|
||||
}
|
||||
// Nuke hover/focus effects
|
||||
.nav > .disabled > a:hover,
|
||||
.nav > .disabled > a:focus {
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
cursor: default;
|
||||
.nav a:hover .caret {
|
||||
border-top-color: @link-hover-color;
|
||||
border-bottom-color: @link-hover-color;
|
||||
}
|
||||
|
||||
// Specific dropdowns
|
||||
.nav-tabs .dropdown-menu {
|
||||
// make dropdown border overlap tab border
|
||||
margin-top: -1px;
|
||||
// Remove the top rounded corners here since there is a hard edge above the menu
|
||||
.border-top-radius(0);
|
||||
}
|
||||
|
||||
396
assets/less/normalize.less
vendored
Normal file
396
assets/less/normalize.less
vendored
Normal file
@@ -0,0 +1,396 @@
|
||||
/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
|
||||
|
||||
// ==========================================================================
|
||||
// HTML5 display definitions
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Correct `block` display not defined in IE 8/9.
|
||||
//
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
//
|
||||
// Correct `inline-block` display not defined in IE 8/9.
|
||||
//
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
//
|
||||
// Prevent modern browsers from displaying `audio` without controls.
|
||||
// Remove excess height in iOS 5 devices.
|
||||
//
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Address styling not present in IE 8/9.
|
||||
//
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// Base
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// 1. Set default font family to sans-serif.
|
||||
// 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
// user zoom.
|
||||
//
|
||||
|
||||
html {
|
||||
font-family: sans-serif; // 1
|
||||
-webkit-text-size-adjust: 100%; // 2
|
||||
-ms-text-size-adjust: 100%; // 2
|
||||
}
|
||||
|
||||
//
|
||||
// Remove default margin.
|
||||
//
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// Links
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Address `outline` inconsistency between Chrome and other browsers.
|
||||
//
|
||||
|
||||
a:focus {
|
||||
outline: thin dotted;
|
||||
}
|
||||
|
||||
//
|
||||
// Improve readability when focused and also mouse hovered in all browsers.
|
||||
//
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// Typography
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Address variable `h1` font-size and margin within `section` and `article`
|
||||
// contexts in Firefox 4+, Safari 5, and Chrome.
|
||||
//
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Address styling not present in IE 8/9, Safari 5, and Chrome.
|
||||
//
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
//
|
||||
// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
|
||||
//
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
//
|
||||
// Address styling not present in Safari 5 and Chrome.
|
||||
//
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
//
|
||||
// Address differences between Firefox and other browsers.
|
||||
//
|
||||
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Address styling not present in IE 8/9.
|
||||
//
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
//
|
||||
// Correct font family set oddly in Safari 5 and Chrome.
|
||||
//
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
//
|
||||
// Improve readability of pre-formatted text in all browsers.
|
||||
//
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
//
|
||||
// Set consistent quote types.
|
||||
//
|
||||
|
||||
q {
|
||||
quotes: "\201C" "\201D" "\2018" "\2019";
|
||||
}
|
||||
|
||||
//
|
||||
// Address inconsistent and variable font size in all browsers.
|
||||
//
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
//
|
||||
// Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
//
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// Embedded content
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Remove border when inside `a` element in IE 8/9.
|
||||
//
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Correct overflow displayed oddly in IE 9.
|
||||
//
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// Figures
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Address margin not present in IE 8/9 and Safari 5.
|
||||
//
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// Forms
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Define consistent border, margin, and padding.
|
||||
//
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Correct `color` not being inherited in IE 8/9.
|
||||
// 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
//
|
||||
|
||||
legend {
|
||||
border: 0; // 1
|
||||
padding: 0; // 2
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Correct font family not being inherited in all browsers.
|
||||
// 2. Correct font size not being inherited in all browsers.
|
||||
// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
|
||||
//
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit; // 1
|
||||
font-size: 100%; // 2
|
||||
margin: 0; // 3
|
||||
}
|
||||
|
||||
//
|
||||
// Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
// the UA stylesheet.
|
||||
//
|
||||
|
||||
button,
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
//
|
||||
// Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
// All other form control elements do not inherit `text-transform` values.
|
||||
// Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
|
||||
// Correct `select` style inheritance in Firefox 4+ and Opera.
|
||||
//
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
// and `video` controls.
|
||||
// 2. Correct inability to style clickable `input` types in iOS.
|
||||
// 3. Improve usability and consistency of cursor style between image-type
|
||||
// `input` and others.
|
||||
//
|
||||
|
||||
button,
|
||||
html input[type="button"], // 1
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; // 2
|
||||
cursor: pointer; // 3
|
||||
}
|
||||
|
||||
//
|
||||
// Re-set default cursor for disabled elements.
|
||||
//
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Address box sizing set to `content-box` in IE 8/9.
|
||||
// 2. Remove excess padding in IE 8/9.
|
||||
//
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; // 1
|
||||
padding: 0; // 2
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
|
||||
// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
|
||||
// (include `-moz` to future-proof).
|
||||
//
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; // 1
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; // 2
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
//
|
||||
// Remove inner padding and search cancel button in Safari 5 and Chrome
|
||||
// on OS X.
|
||||
//
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
//
|
||||
// Remove inner padding and border in Firefox 4+.
|
||||
//
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Remove default vertical scrollbar in IE 8/9.
|
||||
// 2. Improve readability and alignment in all browsers.
|
||||
//
|
||||
|
||||
textarea {
|
||||
overflow: auto; // 1
|
||||
vertical-align: top; // 2
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// Tables
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Remove most spacing between table cells.
|
||||
//
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
@@ -4,40 +4,52 @@
|
||||
|
||||
|
||||
.pager {
|
||||
margin: @baseLineHeight 0;
|
||||
padding-left: 0;
|
||||
margin: @line-height-computed 0;
|
||||
list-style: none;
|
||||
text-align: center;
|
||||
.clearfix();
|
||||
li {
|
||||
display: inline;
|
||||
> a,
|
||||
> span {
|
||||
display: inline-block;
|
||||
padding: 5px 14px;
|
||||
background-color: @pagination-bg;
|
||||
border: 1px solid @pagination-border;
|
||||
border-radius: @pager-border-radius;
|
||||
}
|
||||
|
||||
> a:hover,
|
||||
> a:focus {
|
||||
text-decoration: none;
|
||||
background-color: @pagination-active-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.next {
|
||||
> a,
|
||||
> span {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.previous {
|
||||
> a,
|
||||
> span {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
.disabled {
|
||||
> a,
|
||||
> a:hover,
|
||||
> a:focus,
|
||||
> span {
|
||||
color: @pager-disabled-color;
|
||||
background-color: @pagination-bg;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.pager li {
|
||||
display: inline;
|
||||
}
|
||||
.pager li > a,
|
||||
.pager li > span {
|
||||
display: inline-block;
|
||||
padding: 5px 14px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ddd;
|
||||
.border-radius(15px);
|
||||
}
|
||||
.pager li > a:hover,
|
||||
.pager li > a:focus {
|
||||
text-decoration: none;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.pager .next > a,
|
||||
.pager .next > span {
|
||||
float: right;
|
||||
}
|
||||
.pager .previous > a,
|
||||
.pager .previous > span {
|
||||
float: left;
|
||||
}
|
||||
.pager .disabled > a,
|
||||
.pager .disabled > a:hover,
|
||||
.pager .disabled > a:focus,
|
||||
.pager .disabled > span {
|
||||
color: @grayLight;
|
||||
background-color: #fff;
|
||||
cursor: default;
|
||||
}
|
||||
@@ -1,123 +1,108 @@
|
||||
//
|
||||
// Pagination (multiple pages)
|
||||
// --------------------------------------------------
|
||||
|
||||
// Space out pagination from surrounding content
|
||||
.pagination {
|
||||
margin: @baseLineHeight 0;
|
||||
}
|
||||
|
||||
.pagination ul {
|
||||
// Allow for text-based alignment
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
// Reset default ul styles
|
||||
margin-left: 0;
|
||||
margin-bottom: 0;
|
||||
// Visuals
|
||||
.border-radius(@baseBorderRadius);
|
||||
.box-shadow(0 1px 2px rgba(0,0,0,.05));
|
||||
padding-left: 0;
|
||||
margin: @line-height-computed 0;
|
||||
border-radius: @border-radius-base;
|
||||
|
||||
> li {
|
||||
display: inline; // Remove list-style and block-level defaults
|
||||
> a,
|
||||
> span {
|
||||
float: left; // Collapse white-space
|
||||
padding: 4px 12px;
|
||||
line-height: @line-height-base;
|
||||
text-decoration: none;
|
||||
background-color: @pagination-bg;
|
||||
border: 1px solid @pagination-border;
|
||||
border-left-width: 0;
|
||||
}
|
||||
&:first-child {
|
||||
> a,
|
||||
> span {
|
||||
border-left-width: 1px;
|
||||
.border-left-radius(@border-radius-base);
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
> a,
|
||||
> span {
|
||||
.border-right-radius(@border-radius-base);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> li > a:hover,
|
||||
> li > a:focus,
|
||||
> .active > a,
|
||||
> .active > span {
|
||||
background-color: @pagination-active-bg;
|
||||
}
|
||||
> .active > a,
|
||||
> .active > span {
|
||||
color: @pagination-active-color;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
> .disabled {
|
||||
> span,
|
||||
> a,
|
||||
> a:hover,
|
||||
> a:focus {
|
||||
color: @pagination-disabled-color;
|
||||
background-color: @pagination-bg;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
.pagination ul > li {
|
||||
display: inline; // Remove list-style and block-level defaults
|
||||
}
|
||||
.pagination ul > li > a,
|
||||
.pagination ul > li > span {
|
||||
float: left; // Collapse white-space
|
||||
padding: 4px 12px;
|
||||
line-height: @baseLineHeight;
|
||||
text-decoration: none;
|
||||
background-color: @paginationBackground;
|
||||
border: 1px solid @paginationBorder;
|
||||
border-left-width: 0;
|
||||
}
|
||||
.pagination ul > li > a:hover,
|
||||
.pagination ul > li > a:focus,
|
||||
.pagination ul > .active > a,
|
||||
.pagination ul > .active > span {
|
||||
background-color: @paginationActiveBackground;
|
||||
}
|
||||
.pagination ul > .active > a,
|
||||
.pagination ul > .active > span {
|
||||
color: @grayLight;
|
||||
cursor: default;
|
||||
}
|
||||
.pagination ul > .disabled > span,
|
||||
.pagination ul > .disabled > a,
|
||||
.pagination ul > .disabled > a:hover,
|
||||
.pagination ul > .disabled > a:focus {
|
||||
color: @grayLight;
|
||||
background-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
.pagination ul > li:first-child > a,
|
||||
.pagination ul > li:first-child > span {
|
||||
border-left-width: 1px;
|
||||
.border-left-radius(@baseBorderRadius);
|
||||
}
|
||||
.pagination ul > li:last-child > a,
|
||||
.pagination ul > li:last-child > span {
|
||||
.border-right-radius(@baseBorderRadius);
|
||||
}
|
||||
|
||||
|
||||
// Alignment
|
||||
// --------------------------------------------------
|
||||
|
||||
.pagination-centered {
|
||||
text-align: center;
|
||||
}
|
||||
.pagination-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
// Sizing
|
||||
// --------------------------------------------------
|
||||
|
||||
// Large
|
||||
.pagination-large {
|
||||
ul > li > a,
|
||||
ul > li > span {
|
||||
padding: @paddingLarge;
|
||||
font-size: @fontSizeLarge;
|
||||
}
|
||||
ul > li:first-child > a,
|
||||
ul > li:first-child > span {
|
||||
.border-left-radius(@borderRadiusLarge);
|
||||
}
|
||||
ul > li:last-child > a,
|
||||
ul > li:last-child > span {
|
||||
.border-right-radius(@borderRadiusLarge);
|
||||
}
|
||||
}
|
||||
|
||||
// Small and mini
|
||||
.pagination-mini,
|
||||
.pagination-small {
|
||||
ul > li:first-child > a,
|
||||
ul > li:first-child > span {
|
||||
.border-left-radius(@borderRadiusSmall);
|
||||
}
|
||||
ul > li:last-child > a,
|
||||
ul > li:last-child > span {
|
||||
.border-right-radius(@borderRadiusSmall);
|
||||
> li {
|
||||
> a,
|
||||
> span {
|
||||
padding: @padding-large-vertical @padding-large-horizontal;
|
||||
font-size: @font-size-large;
|
||||
}
|
||||
&:first-child {
|
||||
> a,
|
||||
> span {
|
||||
.border-left-radius(@border-radius-large);
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
> a,
|
||||
> span {
|
||||
.border-right-radius(@border-radius-large);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Small
|
||||
.pagination-small {
|
||||
ul > li > a,
|
||||
ul > li > span {
|
||||
padding: @paddingSmall;
|
||||
font-size: @fontSizeSmall;
|
||||
}
|
||||
}
|
||||
// Mini
|
||||
.pagination-mini {
|
||||
ul > li > a,
|
||||
ul > li > span {
|
||||
padding: @paddingMini;
|
||||
font-size: @fontSizeMini;
|
||||
> li {
|
||||
> a,
|
||||
> span {
|
||||
padding: @padding-small-vertical @padding-small-horizontal;
|
||||
font-size: @font-size-small;
|
||||
}
|
||||
&:first-child {
|
||||
> a,
|
||||
> span {
|
||||
.border-left-radius(@border-radius-small);
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
> a,
|
||||
> span {
|
||||
.border-right-radius(@border-radius-small);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
102
assets/less/panels.less
Normal file
102
assets/less/panels.less
Normal file
@@ -0,0 +1,102 @@
|
||||
//
|
||||
// Panels
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Base class
|
||||
.panel {
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
background-color: @panel-bg;
|
||||
border: 1px solid @panel-border;
|
||||
border-radius: @panel-border-radius;
|
||||
.box-shadow(0 1px 1px rgba(0,0,0,.05));
|
||||
}
|
||||
|
||||
// Optional heading
|
||||
.panel-heading {
|
||||
margin: -15px -15px 15px;
|
||||
padding: 10px 15px;
|
||||
background-color: @panel-heading-bg;
|
||||
border-bottom: 1px solid @panel-border;
|
||||
border-top-left-radius: (@panel-border-radius - 1);
|
||||
border-top-right-radius: (@panel-border-radius - 1);
|
||||
}
|
||||
|
||||
// Within heading, strip any `h*` tag of it's default margins for spacing.
|
||||
.panel-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font-size: (@font-size-base * 1.25);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
// Optional footer (stays gray in every modifier class)
|
||||
.panel-footer {
|
||||
margin: 15px -15px -15px;
|
||||
padding: 10px 15px;
|
||||
background-color: @panel-footer-bg;
|
||||
border-top: 1px solid @panel-border;
|
||||
border-bottom-left-radius: (@panel-border-radius - 1);
|
||||
border-bottom-right-radius: (@panel-border-radius - 1);
|
||||
}
|
||||
|
||||
// Contextual variations
|
||||
.panel-primary {
|
||||
border-color: @panel-primary-border;
|
||||
.panel-heading {
|
||||
color: @panel-primary-text;
|
||||
background-color: @panel-primary-heading-bg;
|
||||
border-color: @panel-primary-border;
|
||||
}
|
||||
}
|
||||
.panel-success {
|
||||
border-color: @panel-success-border;
|
||||
.panel-heading {
|
||||
color: @panel-success-text;
|
||||
background-color: @panel-success-heading-bg;
|
||||
border-color: @panel-success-border;
|
||||
}
|
||||
}
|
||||
.panel-warning {
|
||||
border-color: @panel-warning-border;
|
||||
.panel-heading {
|
||||
color: @panel-warning-text;
|
||||
background-color: @panel-warning-heading-bg;
|
||||
border-color: @panel-warning-border;
|
||||
}
|
||||
}
|
||||
.panel-danger {
|
||||
border-color: @panel-danger-border;
|
||||
.panel-heading {
|
||||
color: @panel-danger-text;
|
||||
background-color: @panel-danger-heading-bg;
|
||||
border-color: @panel-danger-border;
|
||||
}
|
||||
}
|
||||
.panel-info {
|
||||
border-color: @panel-info-border;
|
||||
.panel-heading {
|
||||
color: @panel-info-text;
|
||||
background-color: @panel-info-heading-bg;
|
||||
border-color: @panel-info-border;
|
||||
}
|
||||
}
|
||||
|
||||
// List groups in panels
|
||||
.list-group-flush {
|
||||
margin: 15px -15px -15px;
|
||||
|
||||
.list-group-item {
|
||||
border-width: 1px 0;
|
||||
|
||||
// Remove border radius for top one
|
||||
&:first-child {
|
||||
.border-top-radius(0);
|
||||
}
|
||||
// But keep it for the last one
|
||||
&:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,18 +7,18 @@
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: @zindexPopover;
|
||||
z-index: @zindex-popover;
|
||||
display: none;
|
||||
max-width: 276px;
|
||||
max-width: @popover-max-width;
|
||||
padding: 1px;
|
||||
text-align: left; // Reset given new insertion method
|
||||
background-color: @popoverBackground;
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
.border-radius(6px);
|
||||
background-color: @popover-bg;
|
||||
-webkit-bg-clip: padding-box;
|
||||
-moz-bg-clip: padding;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid @popover-fallback-border-color;
|
||||
border: 1px solid @popover-border-color;
|
||||
border-radius: @border-radius-large;
|
||||
.box-shadow(0 5px 10px rgba(0,0,0,.2));
|
||||
|
||||
// Overrides for proper insertion
|
||||
@@ -34,16 +34,12 @@
|
||||
.popover-title {
|
||||
margin: 0; // reset heading margin
|
||||
padding: 8px 14px;
|
||||
font-size: 14px;
|
||||
font-size: @font-size-base;
|
||||
font-weight: normal;
|
||||
line-height: 18px;
|
||||
background-color: @popoverTitleBackground;
|
||||
border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
|
||||
.border-radius(5px 5px 0 0);
|
||||
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
background-color: @popover-title-bg;
|
||||
border-bottom: 1px solid darken(@popover-title-bg, 5%);
|
||||
border-radius: 5px 5px 0 0;
|
||||
}
|
||||
|
||||
.popover-content {
|
||||
@@ -54,79 +50,85 @@
|
||||
//
|
||||
// .arrow is outer, .arrow:after is inner
|
||||
|
||||
.popover .arrow,
|
||||
.popover .arrow:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
.popover .arrow {
|
||||
&,
|
||||
&:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
}
|
||||
}
|
||||
.popover .arrow {
|
||||
border-width: @popoverArrowOuterWidth;
|
||||
border-width: @popover-arrow-outer-width;
|
||||
}
|
||||
.popover .arrow:after {
|
||||
border-width: @popoverArrowWidth;
|
||||
border-width: @popover-arrow-width;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.popover {
|
||||
&.top .arrow {
|
||||
left: 50%;
|
||||
margin-left: -@popoverArrowOuterWidth;
|
||||
margin-left: -@popover-arrow-outer-width;
|
||||
border-bottom-width: 0;
|
||||
border-top-color: #999; // IE8 fallback
|
||||
border-top-color: @popoverArrowOuterColor;
|
||||
bottom: -@popoverArrowOuterWidth;
|
||||
border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback
|
||||
border-top-color: @popover-arrow-outer-color;
|
||||
bottom: -@popover-arrow-outer-width;
|
||||
&:after {
|
||||
content: " ";
|
||||
bottom: 1px;
|
||||
margin-left: -@popoverArrowWidth;
|
||||
margin-left: -@popover-arrow-width;
|
||||
border-bottom-width: 0;
|
||||
border-top-color: @popoverArrowColor;
|
||||
border-top-color: @popover-arrow-color;
|
||||
}
|
||||
}
|
||||
&.right .arrow {
|
||||
top: 50%;
|
||||
left: -@popoverArrowOuterWidth;
|
||||
margin-top: -@popoverArrowOuterWidth;
|
||||
left: -@popover-arrow-outer-width;
|
||||
margin-top: -@popover-arrow-outer-width;
|
||||
border-left-width: 0;
|
||||
border-right-color: #999; // IE8 fallback
|
||||
border-right-color: @popoverArrowOuterColor;
|
||||
border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback
|
||||
border-right-color: @popover-arrow-outer-color;
|
||||
&:after {
|
||||
content: " ";
|
||||
left: 1px;
|
||||
bottom: -@popoverArrowWidth;
|
||||
bottom: -@popover-arrow-width;
|
||||
border-left-width: 0;
|
||||
border-right-color: @popoverArrowColor;
|
||||
border-right-color: @popover-arrow-color;
|
||||
}
|
||||
}
|
||||
&.bottom .arrow {
|
||||
left: 50%;
|
||||
margin-left: -@popoverArrowOuterWidth;
|
||||
margin-left: -@popover-arrow-outer-width;
|
||||
border-top-width: 0;
|
||||
border-bottom-color: #999; // IE8 fallback
|
||||
border-bottom-color: @popoverArrowOuterColor;
|
||||
top: -@popoverArrowOuterWidth;
|
||||
border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback
|
||||
border-bottom-color: @popover-arrow-outer-color;
|
||||
top: -@popover-arrow-outer-width;
|
||||
&:after {
|
||||
content: " ";
|
||||
top: 1px;
|
||||
margin-left: -@popoverArrowWidth;
|
||||
margin-left: -@popover-arrow-width;
|
||||
border-top-width: 0;
|
||||
border-bottom-color: @popoverArrowColor;
|
||||
border-bottom-color: @popover-arrow-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.left .arrow {
|
||||
top: 50%;
|
||||
right: -@popoverArrowOuterWidth;
|
||||
margin-top: -@popoverArrowOuterWidth;
|
||||
right: -@popover-arrow-outer-width;
|
||||
margin-top: -@popover-arrow-outer-width;
|
||||
border-right-width: 0;
|
||||
border-left-color: #999; // IE8 fallback
|
||||
border-left-color: @popoverArrowOuterColor;
|
||||
border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback
|
||||
border-left-color: @popover-arrow-outer-color;
|
||||
&:after {
|
||||
content: " ";
|
||||
right: 1px;
|
||||
border-right-width: 0;
|
||||
border-left-color: @popoverArrowColor;
|
||||
bottom: -@popoverArrowWidth;
|
||||
border-left-color: @popover-arrow-color;
|
||||
bottom: -@popover-arrow-width;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
100
assets/less/print.less
Normal file
100
assets/less/print.less
Normal file
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// Basic print styles
|
||||
// --------------------------------------------------
|
||||
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
|
||||
|
||||
@media print {
|
||||
|
||||
* {
|
||||
text-shadow: none !important;
|
||||
color: #000 !important; // Black prints faster: h5bp.com/s
|
||||
background: transparent !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a[href]:after {
|
||||
content: " (" attr(href) ")";
|
||||
}
|
||||
|
||||
abbr[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
// Don't show links for images, or javascript/internal links
|
||||
.ir a:after,
|
||||
a[href^="javascript:"]:after,
|
||||
a[href^="#"]:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
pre,
|
||||
blockquote {
|
||||
border: 1px solid #999;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
thead {
|
||||
display: table-header-group; // h5bp.com/t
|
||||
}
|
||||
|
||||
tr,
|
||||
img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
@page {
|
||||
margin: 2cm .5cm;
|
||||
}
|
||||
|
||||
p,
|
||||
h2,
|
||||
h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
|
||||
// Bootstrap components
|
||||
.navbar {
|
||||
display: none;
|
||||
}
|
||||
.table {
|
||||
td,
|
||||
th {
|
||||
background-color: #fff !important;
|
||||
}
|
||||
}
|
||||
.btn,
|
||||
.dropup > .btn {
|
||||
> .caret {
|
||||
border-top-color: #000 !important;
|
||||
}
|
||||
}
|
||||
.label {
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.table {
|
||||
border-collapse: collapse !important;
|
||||
}
|
||||
.table-bordered {
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #ddd !important;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// ANIMATIONS
|
||||
// ----------
|
||||
// Bar animations
|
||||
// -------------------------
|
||||
|
||||
// Webkit
|
||||
@-webkit-keyframes progress-bar-stripes {
|
||||
@@ -38,45 +38,40 @@
|
||||
|
||||
|
||||
|
||||
// THE BARS
|
||||
// --------
|
||||
// Bar itself
|
||||
// -------------------------
|
||||
|
||||
// Outer container
|
||||
.progress {
|
||||
overflow: hidden;
|
||||
height: @baseLineHeight;
|
||||
margin-bottom: @baseLineHeight;
|
||||
#gradient > .vertical(#f5f5f5, #f9f9f9);
|
||||
height: @line-height-computed;
|
||||
margin-bottom: @line-height-computed;
|
||||
background-color: @progress-bg;
|
||||
border-radius: @border-radius-base;
|
||||
.box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
|
||||
.border-radius(@baseBorderRadius);
|
||||
}
|
||||
|
||||
// Bar of progress
|
||||
.progress .bar {
|
||||
.progress-bar {
|
||||
float: left;
|
||||
width: 0%;
|
||||
height: 100%;
|
||||
color: @white;
|
||||
float: left;
|
||||
font-size: 12px;
|
||||
font-size: @font-size-small;
|
||||
color: @progress-bar-color;
|
||||
text-align: center;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
#gradient > .vertical(#149bdf, #0480be);
|
||||
background-color: @progress-bar-bg;
|
||||
.box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
|
||||
.box-sizing(border-box);
|
||||
.transition(width .6s ease);
|
||||
}
|
||||
.progress .bar + .bar {
|
||||
.box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)");
|
||||
}
|
||||
|
||||
// Striped bars
|
||||
.progress-striped .bar {
|
||||
#gradient > .striped(#149bdf);
|
||||
.progress-striped .progress-bar {
|
||||
#gradient > .striped(@progress-bar-bg);
|
||||
.background-size(40px 40px);
|
||||
}
|
||||
|
||||
// Call animation for the active one
|
||||
.progress.active .bar {
|
||||
.progress.active .progress-bar {
|
||||
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
||||
-moz-animation: progress-bar-stripes 2s linear infinite;
|
||||
-ms-animation: progress-bar-stripes 2s linear infinite;
|
||||
@@ -86,37 +81,25 @@
|
||||
|
||||
|
||||
|
||||
// COLORS
|
||||
// ------
|
||||
// Variations
|
||||
// -------------------------
|
||||
|
||||
// Danger (red)
|
||||
.progress-danger .bar, .progress .bar-danger {
|
||||
#gradient > .vertical(#ee5f5b, #c43c35);
|
||||
}
|
||||
.progress-danger.progress-striped .bar, .progress-striped .bar-danger {
|
||||
#gradient > .striped(#ee5f5b);
|
||||
.progress-bar-danger {
|
||||
.progress-bar-variant(@progress-bar-danger-bg);
|
||||
}
|
||||
|
||||
// Success (green)
|
||||
.progress-success .bar, .progress .bar-success {
|
||||
#gradient > .vertical(#62c462, #57a957);
|
||||
}
|
||||
.progress-success.progress-striped .bar, .progress-striped .bar-success {
|
||||
#gradient > .striped(#62c462);
|
||||
}
|
||||
|
||||
// Info (teal)
|
||||
.progress-info .bar, .progress .bar-info {
|
||||
#gradient > .vertical(#5bc0de, #339bb9);
|
||||
}
|
||||
.progress-info.progress-striped .bar, .progress-striped .bar-info {
|
||||
#gradient > .striped(#5bc0de);
|
||||
.progress-bar-success {
|
||||
.progress-bar-variant(@progress-bar-success-bg);
|
||||
}
|
||||
|
||||
// Warning (orange)
|
||||
.progress-warning .bar, .progress .bar-warning {
|
||||
#gradient > .vertical(lighten(@orange, 15%), @orange);
|
||||
.progress-bar-warning {
|
||||
.progress-bar-variant(@progress-bar-warning-bg);
|
||||
}
|
||||
.progress-warning.progress-striped .bar, .progress-striped .bar-warning {
|
||||
#gradient > .striped(lighten(@orange, 15%));
|
||||
|
||||
// Info (teal)
|
||||
.progress-bar-info {
|
||||
.progress-bar-variant(@progress-bar-info-bg);
|
||||
}
|
||||
|
||||
@@ -1,216 +0,0 @@
|
||||
//
|
||||
// Reset CSS
|
||||
// Adapted from http://github.com/necolas/normalize.css
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Display in IE6-9 and FF3
|
||||
// -------------------------
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// Display block in IE6-9 and FF3
|
||||
// -------------------------
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
// Prevents modern browsers from displaying 'audio' without controls
|
||||
// -------------------------
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Base settings
|
||||
// -------------------------
|
||||
|
||||
html {
|
||||
font-size: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
// Focus states
|
||||
a:focus {
|
||||
.tab-focus();
|
||||
}
|
||||
// Hover & Active
|
||||
a:hover,
|
||||
a:active {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
// Prevents sub and sup affecting line-height in all browsers
|
||||
// -------------------------
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
// Img border in a's and image quality
|
||||
// -------------------------
|
||||
|
||||
img {
|
||||
/* Responsive images (ensure images don't scale beyond their parents) */
|
||||
max-width: 100%; /* Part 1: Set a maxium relative to the parent */
|
||||
width: auto\9; /* IE7-8 need help adjusting responsive images */
|
||||
height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */
|
||||
|
||||
vertical-align: middle;
|
||||
border: 0;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
// Prevent max-width from affecting Google Maps
|
||||
#map_canvas img,
|
||||
.google-maps img {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
// Forms
|
||||
// -------------------------
|
||||
|
||||
// Font size in all browsers, margin changes, misc consistency
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
button,
|
||||
input {
|
||||
*overflow: visible; // Inner spacing ie IE6/7
|
||||
line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
|
||||
}
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
button,
|
||||
html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
|
||||
cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
|
||||
}
|
||||
label,
|
||||
select,
|
||||
button,
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"],
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
|
||||
}
|
||||
input[type="search"] { // Appearance in Safari/Chrome
|
||||
.box-sizing(content-box);
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
input[type="search"]::-webkit-search-decoration,
|
||||
input[type="search"]::-webkit-search-cancel-button {
|
||||
-webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
|
||||
}
|
||||
textarea {
|
||||
overflow: auto; // Remove vertical scrollbar in IE6-9
|
||||
vertical-align: top; // Readability and alignment cross-browser
|
||||
}
|
||||
|
||||
|
||||
// Printing
|
||||
// -------------------------
|
||||
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
|
||||
|
||||
@media print {
|
||||
|
||||
* {
|
||||
text-shadow: none !important;
|
||||
color: #000 !important; // Black prints faster: h5bp.com/s
|
||||
background: transparent !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a[href]:after {
|
||||
content: " (" attr(href) ")";
|
||||
}
|
||||
|
||||
abbr[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
// Don't show links for images, or javascript/internal links
|
||||
.ir a:after,
|
||||
a[href^="javascript:"]:after,
|
||||
a[href^="#"]:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
pre,
|
||||
blockquote {
|
||||
border: 1px solid #999;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
thead {
|
||||
display: table-header-group; // h5bp.com/t
|
||||
}
|
||||
|
||||
tr,
|
||||
img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
@page {
|
||||
margin: 0.5cm;
|
||||
}
|
||||
|
||||
p,
|
||||
h2,
|
||||
h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
//
|
||||
// Responsive: Large desktop and up
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
|
||||
// Fixed grid
|
||||
#grid > .core(@gridColumnWidth1200, @gridGutterWidth1200);
|
||||
|
||||
// Fluid grid
|
||||
#grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200);
|
||||
|
||||
// Input grid
|
||||
#grid > .input(@gridColumnWidth1200, @gridGutterWidth1200);
|
||||
|
||||
// Thumbnails
|
||||
.thumbnails {
|
||||
margin-left: -@gridGutterWidth1200;
|
||||
}
|
||||
.thumbnails > li {
|
||||
margin-left: @gridGutterWidth1200;
|
||||
}
|
||||
.row-fluid .thumbnails {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,193 +0,0 @@
|
||||
//
|
||||
// Responsive: Landscape phone to desktop/tablet
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
@media (max-width: 767px) {
|
||||
|
||||
// Padding to set content in a bit
|
||||
body {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
// Negative indent the now static "fixed" navbar
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom,
|
||||
.navbar-static-top {
|
||||
margin-left: -20px;
|
||||
margin-right: -20px;
|
||||
}
|
||||
// Remove padding on container given explicit padding set on body
|
||||
.container-fluid {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
// TYPOGRAPHY
|
||||
// ----------
|
||||
// Reset horizontal dl
|
||||
.dl-horizontal {
|
||||
dt {
|
||||
float: none;
|
||||
clear: none;
|
||||
width: auto;
|
||||
text-align: left;
|
||||
}
|
||||
dd {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// GRID & CONTAINERS
|
||||
// -----------------
|
||||
// Remove width from containers
|
||||
.container {
|
||||
width: auto;
|
||||
}
|
||||
// Fluid rows
|
||||
.row-fluid {
|
||||
width: 100%;
|
||||
}
|
||||
// Undo negative margin on rows and thumbnails
|
||||
.row,
|
||||
.thumbnails {
|
||||
margin-left: 0;
|
||||
}
|
||||
.thumbnails > li {
|
||||
float: none;
|
||||
margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
|
||||
}
|
||||
// Make all grid-sized elements block level again
|
||||
[class*="span"],
|
||||
.uneditable-input[class*="span"], // Makes uneditable inputs full-width when using grid sizing
|
||||
.row-fluid [class*="span"] {
|
||||
float: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-left: 0;
|
||||
.box-sizing(border-box);
|
||||
}
|
||||
.span12,
|
||||
.row-fluid .span12 {
|
||||
width: 100%;
|
||||
.box-sizing(border-box);
|
||||
}
|
||||
.row-fluid [class*="offset"]:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
// FORM FIELDS
|
||||
// -----------
|
||||
// Make span* classes full width
|
||||
.input-large,
|
||||
.input-xlarge,
|
||||
.input-xxlarge,
|
||||
input[class*="span"],
|
||||
select[class*="span"],
|
||||
textarea[class*="span"],
|
||||
.uneditable-input {
|
||||
.input-block-level();
|
||||
}
|
||||
// But don't let it screw up prepend/append inputs
|
||||
.input-prepend input,
|
||||
.input-append input,
|
||||
.input-prepend input[class*="span"],
|
||||
.input-append input[class*="span"] {
|
||||
display: inline-block; // redeclare so they don't wrap to new lines
|
||||
width: auto;
|
||||
}
|
||||
.controls-row [class*="span"] + [class*="span"] {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
// Modals
|
||||
.modal {
|
||||
position: fixed;
|
||||
top: 20px;
|
||||
left: 20px;
|
||||
right: 20px;
|
||||
width: auto;
|
||||
margin: 0;
|
||||
&.fade { top: -100px; }
|
||||
&.fade.in { top: 20px; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// UP TO LANDSCAPE PHONE
|
||||
// ---------------------
|
||||
|
||||
@media (max-width: 480px) {
|
||||
|
||||
// Smooth out the collapsing/expanding nav
|
||||
.nav-collapse {
|
||||
-webkit-transform: translate3d(0, 0, 0); // activate the GPU
|
||||
}
|
||||
|
||||
// Block level the page header small tag for readability
|
||||
.page-header h1 small {
|
||||
display: block;
|
||||
line-height: @baseLineHeight;
|
||||
}
|
||||
|
||||
// Update checkboxes for iOS
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
// Remove the horizontal form styles
|
||||
.form-horizontal {
|
||||
.control-label {
|
||||
float: none;
|
||||
width: auto;
|
||||
padding-top: 0;
|
||||
text-align: left;
|
||||
}
|
||||
// Move over all input controls and content
|
||||
.controls {
|
||||
margin-left: 0;
|
||||
}
|
||||
// Move the options list down to align with labels
|
||||
.control-list {
|
||||
padding-top: 0; // has to be padding because margin collaspes
|
||||
}
|
||||
// Move over buttons in .form-actions to align with .controls
|
||||
.form-actions {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
// Medias
|
||||
// Reset float and spacing to stack
|
||||
.media .pull-left,
|
||||
.media .pull-right {
|
||||
float: none;
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
// Remove side margins since we stack instead of indent
|
||||
.media-object {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
// Modals
|
||||
.modal {
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
.modal-header .close {
|
||||
padding: 10px;
|
||||
margin: -10px;
|
||||
}
|
||||
|
||||
// Carousel
|
||||
.carousel-caption {
|
||||
position: static;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
//
|
||||
// Responsive: Tablet to desktop
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
@media (min-width: 768px) and (max-width: 979px) {
|
||||
|
||||
// Fixed grid
|
||||
#grid > .core(@gridColumnWidth768, @gridGutterWidth768);
|
||||
|
||||
// Fluid grid
|
||||
#grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
|
||||
|
||||
// Input grid
|
||||
#grid > .input(@gridColumnWidth768, @gridGutterWidth768);
|
||||
|
||||
// No need to reset .thumbnails here since it's the same @gridGutterWidth
|
||||
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
//
|
||||
// Responsive: Navbar
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// TABLETS AND BELOW
|
||||
// -----------------
|
||||
@media (max-width: @navbarCollapseWidth) {
|
||||
|
||||
// UNFIX THE TOPBAR
|
||||
// ----------------
|
||||
// Remove any padding from the body
|
||||
body {
|
||||
padding-top: 0;
|
||||
}
|
||||
// Unfix the navbars
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
position: static;
|
||||
}
|
||||
.navbar-fixed-top {
|
||||
margin-bottom: @baseLineHeight;
|
||||
}
|
||||
.navbar-fixed-bottom {
|
||||
margin-top: @baseLineHeight;
|
||||
}
|
||||
.navbar-fixed-top .navbar-inner,
|
||||
.navbar-fixed-bottom .navbar-inner {
|
||||
padding: 5px;
|
||||
}
|
||||
.navbar .container {
|
||||
width: auto;
|
||||
padding: 0;
|
||||
}
|
||||
// Account for brand name
|
||||
.navbar .brand {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin: 0 0 0 -5px;
|
||||
}
|
||||
|
||||
// COLLAPSIBLE NAVBAR
|
||||
// ------------------
|
||||
// Nav collapse clears brand
|
||||
.nav-collapse {
|
||||
clear: both;
|
||||
}
|
||||
// Block-level the nav
|
||||
.nav-collapse .nav {
|
||||
float: none;
|
||||
margin: 0 0 (@baseLineHeight / 2);
|
||||
}
|
||||
.nav-collapse .nav > li {
|
||||
float: none;
|
||||
}
|
||||
.nav-collapse .nav > li > a {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.nav-collapse .nav > .divider-vertical {
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .nav .nav-header {
|
||||
color: @navbarText;
|
||||
text-shadow: none;
|
||||
}
|
||||
// Nav and dropdown links in navbar
|
||||
.nav-collapse .nav > li > a,
|
||||
.nav-collapse .dropdown-menu a {
|
||||
padding: 9px 15px;
|
||||
font-weight: bold;
|
||||
color: @navbarLinkColor;
|
||||
.border-radius(3px);
|
||||
}
|
||||
// Buttons
|
||||
.nav-collapse .btn {
|
||||
padding: 4px 10px 4px;
|
||||
font-weight: normal;
|
||||
.border-radius(@baseBorderRadius);
|
||||
}
|
||||
.nav-collapse .dropdown-menu li + li a {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.nav-collapse .nav > li > a:hover,
|
||||
.nav-collapse .nav > li > a:focus,
|
||||
.nav-collapse .dropdown-menu a:hover,
|
||||
.nav-collapse .dropdown-menu a:focus {
|
||||
background-color: @navbarBackground;
|
||||
}
|
||||
.navbar-inverse .nav-collapse .nav > li > a,
|
||||
.navbar-inverse .nav-collapse .dropdown-menu a {
|
||||
color: @navbarInverseLinkColor;
|
||||
}
|
||||
.navbar-inverse .nav-collapse .nav > li > a:hover,
|
||||
.navbar-inverse .nav-collapse .nav > li > a:focus,
|
||||
.navbar-inverse .nav-collapse .dropdown-menu a:hover,
|
||||
.navbar-inverse .nav-collapse .dropdown-menu a:focus {
|
||||
background-color: @navbarInverseBackground;
|
||||
}
|
||||
// Buttons in the navbar
|
||||
.nav-collapse.in .btn-group {
|
||||
margin-top: 5px;
|
||||
padding: 0;
|
||||
}
|
||||
// Dropdowns in the navbar
|
||||
.nav-collapse .dropdown-menu {
|
||||
position: static;
|
||||
top: auto;
|
||||
left: auto;
|
||||
float: none;
|
||||
display: none;
|
||||
max-width: none;
|
||||
margin: 0 15px;
|
||||
padding: 0;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
.border-radius(0);
|
||||
.box-shadow(none);
|
||||
}
|
||||
.nav-collapse .open > .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.nav-collapse .dropdown-menu:before,
|
||||
.nav-collapse .dropdown-menu:after {
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .dropdown-menu .divider {
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .nav > li > .dropdown-menu {
|
||||
&:before,
|
||||
&:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
// Forms in navbar
|
||||
.nav-collapse .navbar-form,
|
||||
.nav-collapse .navbar-search {
|
||||
float: none;
|
||||
padding: (@baseLineHeight / 2) 15px;
|
||||
margin: (@baseLineHeight / 2) 0;
|
||||
border-top: 1px solid @navbarBackground;
|
||||
border-bottom: 1px solid @navbarBackground;
|
||||
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)");
|
||||
}
|
||||
.navbar-inverse .nav-collapse .navbar-form,
|
||||
.navbar-inverse .nav-collapse .navbar-search {
|
||||
border-top-color: @navbarInverseBackground;
|
||||
border-bottom-color: @navbarInverseBackground;
|
||||
}
|
||||
// Pull right (secondary) nav content
|
||||
.navbar .nav-collapse .nav.pull-right {
|
||||
float: none;
|
||||
margin-left: 0;
|
||||
}
|
||||
// Hide everything in the navbar save .brand and toggle button */
|
||||
.nav-collapse,
|
||||
.nav-collapse.collapse {
|
||||
overflow: hidden;
|
||||
height: 0;
|
||||
}
|
||||
// Navbar button
|
||||
.navbar .btn-navbar {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// STATIC NAVBAR
|
||||
// -------------
|
||||
.navbar-static .navbar-inner {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// DEFAULT DESKTOP
|
||||
// ---------------
|
||||
|
||||
@media (min-width: @navbarCollapseDesktopWidth) {
|
||||
|
||||
// Required to make the collapsing navbar work on regular desktops
|
||||
.nav-collapse.collapse {
|
||||
height: auto !important;
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,55 +5,115 @@
|
||||
|
||||
// IE10 Metro responsive
|
||||
// Required for Windows 8 Metro split-screen snapping with IE10
|
||||
//
|
||||
// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
|
||||
@-ms-viewport{
|
||||
width: device-width;
|
||||
}
|
||||
|
||||
// IE10 on Windows Phone 8
|
||||
// IE10 on WP8 doesn't report CSS pixels, but actual device pixels. In
|
||||
// other words, say on a Lumia, you'll get 768px as the device width,
|
||||
// meaning users will see the tablet styles and not phone styles.
|
||||
//
|
||||
// Alternatively you can override this with JS (see source below), but
|
||||
// we won't be doing that here given our limited scope.
|
||||
//
|
||||
// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
|
||||
@media screen and (max-width: 400px) {
|
||||
@-ms-viewport{
|
||||
width: 320px;
|
||||
}
|
||||
}
|
||||
|
||||
// Hide from screenreaders and browsers
|
||||
// Credit: HTML5 Boilerplate
|
||||
.hidden {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
display: none !important;
|
||||
visibility: hidden !important;
|
||||
}
|
||||
|
||||
// Visibility utilities
|
||||
|
||||
// For desktops
|
||||
.visible-phone { display: none !important; }
|
||||
.visible-tablet { display: none !important; }
|
||||
.hidden-phone { }
|
||||
.hidden-tablet { }
|
||||
.hidden-desktop { display: none !important; }
|
||||
.visible-desktop { display: inherit !important; }
|
||||
|
||||
// Tablets & small desktops only
|
||||
@media (min-width: 768px) and (max-width: 979px) {
|
||||
// Hide everything else
|
||||
.hidden-desktop { display: inherit !important; }
|
||||
.visible-desktop { display: none !important ; }
|
||||
// Show
|
||||
.visible-tablet { display: inherit !important; }
|
||||
// Hide
|
||||
.hidden-tablet { display: none !important; }
|
||||
// For Phones
|
||||
.visible-sm {
|
||||
.responsive-visibility();
|
||||
}
|
||||
.visible-md {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
.visible-lg {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
|
||||
// Phones only
|
||||
@media (max-width: 767px) {
|
||||
// Hide everything else
|
||||
.hidden-desktop { display: inherit !important; }
|
||||
.visible-desktop { display: none !important; }
|
||||
// Show
|
||||
.visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
|
||||
// Hide
|
||||
.hidden-phone { display: none !important; }
|
||||
.hidden-sm {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
.hidden-md {
|
||||
.responsive-visibility();
|
||||
}
|
||||
.hidden-lg {
|
||||
.responsive-visibility();
|
||||
}
|
||||
|
||||
|
||||
// Tablets & small desktops only
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
.visible-sm {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
.visible-md {
|
||||
.responsive-visibility();
|
||||
}
|
||||
.visible-lg {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
|
||||
.hidden-sm {
|
||||
.responsive-visibility();
|
||||
}
|
||||
.hidden-md {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
.hidden-lg {
|
||||
.responsive-visibility();
|
||||
}
|
||||
}
|
||||
|
||||
// For desktops
|
||||
@media (min-width: @screen-desktop) {
|
||||
.visible-sm {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
.visible-md {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
.visible-lg {
|
||||
.responsive-visibility();
|
||||
}
|
||||
|
||||
.hidden-sm {
|
||||
.responsive-visibility();
|
||||
}
|
||||
.hidden-md {
|
||||
.responsive-visibility();
|
||||
}
|
||||
.hidden-lg {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
}
|
||||
|
||||
// Print utilities
|
||||
.visible-print { display: none !important; }
|
||||
.hidden-print { }
|
||||
.visible-print {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
.hidden-print { }
|
||||
|
||||
@media print {
|
||||
.visible-print { display: inherit !important; }
|
||||
.hidden-print { display: none !important; }
|
||||
.visible-print {
|
||||
.responsive-visibility();
|
||||
}
|
||||
.hidden-print {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
/*!
|
||||
* Bootstrap Responsive v2.3.1
|
||||
*
|
||||
* Copyright 2012 Twitter, Inc
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||
*/
|
||||
|
||||
|
||||
// Responsive.less
|
||||
// For phone and tablet devices
|
||||
// -------------------------------------------------------------
|
||||
|
||||
|
||||
// REPEAT VARIABLES & MIXINS
|
||||
// -------------------------
|
||||
// Required since we compile the responsive stuff separately
|
||||
|
||||
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
|
||||
@import "mixins.less";
|
||||
|
||||
|
||||
// RESPONSIVE CLASSES
|
||||
// ------------------
|
||||
|
||||
@import "responsive-utilities.less";
|
||||
|
||||
|
||||
// MEDIA QUERIES
|
||||
// ------------------
|
||||
|
||||
// Large desktops
|
||||
@import "responsive-1200px-min.less";
|
||||
|
||||
// Tablets to regular desktops
|
||||
@import "responsive-768px-979px.less";
|
||||
|
||||
// Phones to portrait tablets and narrow desktops
|
||||
@import "responsive-767px-max.less";
|
||||
|
||||
|
||||
// RESPONSIVE NAVBAR
|
||||
// ------------------
|
||||
|
||||
// From 979px and below, show a button to toggle navbar contents
|
||||
@import "responsive-navbar.less";
|
||||
@@ -3,16 +3,38 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Reset the box-sizing
|
||||
// -------------------------
|
||||
|
||||
* {
|
||||
.box-sizing(border-box);
|
||||
}
|
||||
|
||||
|
||||
// Body reset
|
||||
// -------------------------
|
||||
|
||||
html {
|
||||
font-size: 62.5%;
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: @baseFontFamily;
|
||||
font-size: @baseFontSize;
|
||||
line-height: @baseLineHeight;
|
||||
color: @textColor;
|
||||
background-color: @bodyBackground;
|
||||
font-family: @font-family-base;
|
||||
font-size: @font-size-base;
|
||||
line-height: @line-height-base;
|
||||
color: @text-color;
|
||||
background-color: @body-bg;
|
||||
}
|
||||
|
||||
// Reset fonts for relevant elements
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,34 +42,54 @@ body {
|
||||
// -------------------------
|
||||
|
||||
a {
|
||||
color: @linkColor;
|
||||
color: @link-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover,
|
||||
a:focus {
|
||||
color: @linkColorHover;
|
||||
color: @link-hover-color;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:focus {
|
||||
.tab-focus();
|
||||
}
|
||||
|
||||
|
||||
// Images
|
||||
// -------------------------
|
||||
|
||||
// Rounded corners
|
||||
.img-rounded {
|
||||
.border-radius(6px);
|
||||
img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
// Add polaroid-esque trim
|
||||
.img-polaroid {
|
||||
padding: 4px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
.box-shadow(0 1px 3px rgba(0,0,0,.1));
|
||||
// Responsive images (ensure images don't scale beyond their parents)
|
||||
.img-responsive {
|
||||
display: inline-block;
|
||||
max-width: 100%; // Part 1: Set a maximum relative to the parent
|
||||
height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
|
||||
}
|
||||
|
||||
// Rounded corners
|
||||
.img-rounded {
|
||||
border-radius: @border-radius-large;
|
||||
}
|
||||
|
||||
// Image thumbnails
|
||||
// See thumbnails.less for `.img-thumbnail`
|
||||
|
||||
// Perfect circle
|
||||
.img-circle {
|
||||
.border-radius(500px); // crank the border-radius so it works with most reasonably sized images
|
||||
border-radius: 500px; // crank the border-radius so it works with most reasonably sized images
|
||||
}
|
||||
|
||||
|
||||
// Horizontal rules
|
||||
// -------------------------
|
||||
|
||||
hr {
|
||||
margin-top: @line-height-computed;
|
||||
margin-bottom: @line-height-computed;
|
||||
border: 0;
|
||||
border-top: 1px solid @hr-border;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,197 +0,0 @@
|
||||
//
|
||||
// Sprites
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// ICONS
|
||||
// -----
|
||||
|
||||
// All icons receive the styles of the <i> tag with a base class
|
||||
// of .i and are then given a unique class to add width, height,
|
||||
// and background-position. Your resulting HTML will look like
|
||||
// <i class="icon-inbox"></i>.
|
||||
|
||||
// For the white version of the icons, just add the .icon-white class:
|
||||
// <i class="icon-inbox icon-white"></i>
|
||||
|
||||
[class^="icon-"],
|
||||
[class*=" icon-"] {
|
||||
display: inline-block;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
.ie7-restore-right-whitespace();
|
||||
line-height: 14px;
|
||||
vertical-align: text-top;
|
||||
background-image: url("@{iconSpritePath}");
|
||||
background-position: 14px 14px;
|
||||
background-repeat: no-repeat;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
/* White icons with optional class, or on hover/focus/active states of certain elements */
|
||||
.icon-white,
|
||||
.nav-pills > .active > a > [class^="icon-"],
|
||||
.nav-pills > .active > a > [class*=" icon-"],
|
||||
.nav-list > .active > a > [class^="icon-"],
|
||||
.nav-list > .active > a > [class*=" icon-"],
|
||||
.navbar-inverse .nav > .active > a > [class^="icon-"],
|
||||
.navbar-inverse .nav > .active > a > [class*=" icon-"],
|
||||
.dropdown-menu > li > a:hover > [class^="icon-"],
|
||||
.dropdown-menu > li > a:focus > [class^="icon-"],
|
||||
.dropdown-menu > li > a:hover > [class*=" icon-"],
|
||||
.dropdown-menu > li > a:focus > [class*=" icon-"],
|
||||
.dropdown-menu > .active > a > [class^="icon-"],
|
||||
.dropdown-menu > .active > a > [class*=" icon-"],
|
||||
.dropdown-submenu:hover > a > [class^="icon-"],
|
||||
.dropdown-submenu:focus > a > [class^="icon-"],
|
||||
.dropdown-submenu:hover > a > [class*=" icon-"],
|
||||
.dropdown-submenu:focus > a > [class*=" icon-"] {
|
||||
background-image: url("@{iconWhiteSpritePath}");
|
||||
}
|
||||
|
||||
.icon-glass { background-position: 0 0; }
|
||||
.icon-music { background-position: -24px 0; }
|
||||
.icon-search { background-position: -48px 0; }
|
||||
.icon-envelope { background-position: -72px 0; }
|
||||
.icon-heart { background-position: -96px 0; }
|
||||
.icon-star { background-position: -120px 0; }
|
||||
.icon-star-empty { background-position: -144px 0; }
|
||||
.icon-user { background-position: -168px 0; }
|
||||
.icon-film { background-position: -192px 0; }
|
||||
.icon-th-large { background-position: -216px 0; }
|
||||
.icon-th { background-position: -240px 0; }
|
||||
.icon-th-list { background-position: -264px 0; }
|
||||
.icon-ok { background-position: -288px 0; }
|
||||
.icon-remove { background-position: -312px 0; }
|
||||
.icon-zoom-in { background-position: -336px 0; }
|
||||
.icon-zoom-out { background-position: -360px 0; }
|
||||
.icon-off { background-position: -384px 0; }
|
||||
.icon-signal { background-position: -408px 0; }
|
||||
.icon-cog { background-position: -432px 0; }
|
||||
.icon-trash { background-position: -456px 0; }
|
||||
|
||||
.icon-home { background-position: 0 -24px; }
|
||||
.icon-file { background-position: -24px -24px; }
|
||||
.icon-time { background-position: -48px -24px; }
|
||||
.icon-road { background-position: -72px -24px; }
|
||||
.icon-download-alt { background-position: -96px -24px; }
|
||||
.icon-download { background-position: -120px -24px; }
|
||||
.icon-upload { background-position: -144px -24px; }
|
||||
.icon-inbox { background-position: -168px -24px; }
|
||||
.icon-play-circle { background-position: -192px -24px; }
|
||||
.icon-repeat { background-position: -216px -24px; }
|
||||
.icon-refresh { background-position: -240px -24px; }
|
||||
.icon-list-alt { background-position: -264px -24px; }
|
||||
.icon-lock { background-position: -287px -24px; } // 1px off
|
||||
.icon-flag { background-position: -312px -24px; }
|
||||
.icon-headphones { background-position: -336px -24px; }
|
||||
.icon-volume-off { background-position: -360px -24px; }
|
||||
.icon-volume-down { background-position: -384px -24px; }
|
||||
.icon-volume-up { background-position: -408px -24px; }
|
||||
.icon-qrcode { background-position: -432px -24px; }
|
||||
.icon-barcode { background-position: -456px -24px; }
|
||||
|
||||
.icon-tag { background-position: 0 -48px; }
|
||||
.icon-tags { background-position: -25px -48px; } // 1px off
|
||||
.icon-book { background-position: -48px -48px; }
|
||||
.icon-bookmark { background-position: -72px -48px; }
|
||||
.icon-print { background-position: -96px -48px; }
|
||||
.icon-camera { background-position: -120px -48px; }
|
||||
.icon-font { background-position: -144px -48px; }
|
||||
.icon-bold { background-position: -167px -48px; } // 1px off
|
||||
.icon-italic { background-position: -192px -48px; }
|
||||
.icon-text-height { background-position: -216px -48px; }
|
||||
.icon-text-width { background-position: -240px -48px; }
|
||||
.icon-align-left { background-position: -264px -48px; }
|
||||
.icon-align-center { background-position: -288px -48px; }
|
||||
.icon-align-right { background-position: -312px -48px; }
|
||||
.icon-align-justify { background-position: -336px -48px; }
|
||||
.icon-list { background-position: -360px -48px; }
|
||||
.icon-indent-left { background-position: -384px -48px; }
|
||||
.icon-indent-right { background-position: -408px -48px; }
|
||||
.icon-facetime-video { background-position: -432px -48px; }
|
||||
.icon-picture { background-position: -456px -48px; }
|
||||
|
||||
.icon-pencil { background-position: 0 -72px; }
|
||||
.icon-map-marker { background-position: -24px -72px; }
|
||||
.icon-adjust { background-position: -48px -72px; }
|
||||
.icon-tint { background-position: -72px -72px; }
|
||||
.icon-edit { background-position: -96px -72px; }
|
||||
.icon-share { background-position: -120px -72px; }
|
||||
.icon-check { background-position: -144px -72px; }
|
||||
.icon-move { background-position: -168px -72px; }
|
||||
.icon-step-backward { background-position: -192px -72px; }
|
||||
.icon-fast-backward { background-position: -216px -72px; }
|
||||
.icon-backward { background-position: -240px -72px; }
|
||||
.icon-play { background-position: -264px -72px; }
|
||||
.icon-pause { background-position: -288px -72px; }
|
||||
.icon-stop { background-position: -312px -72px; }
|
||||
.icon-forward { background-position: -336px -72px; }
|
||||
.icon-fast-forward { background-position: -360px -72px; }
|
||||
.icon-step-forward { background-position: -384px -72px; }
|
||||
.icon-eject { background-position: -408px -72px; }
|
||||
.icon-chevron-left { background-position: -432px -72px; }
|
||||
.icon-chevron-right { background-position: -456px -72px; }
|
||||
|
||||
.icon-plus-sign { background-position: 0 -96px; }
|
||||
.icon-minus-sign { background-position: -24px -96px; }
|
||||
.icon-remove-sign { background-position: -48px -96px; }
|
||||
.icon-ok-sign { background-position: -72px -96px; }
|
||||
.icon-question-sign { background-position: -96px -96px; }
|
||||
.icon-info-sign { background-position: -120px -96px; }
|
||||
.icon-screenshot { background-position: -144px -96px; }
|
||||
.icon-remove-circle { background-position: -168px -96px; }
|
||||
.icon-ok-circle { background-position: -192px -96px; }
|
||||
.icon-ban-circle { background-position: -216px -96px; }
|
||||
.icon-arrow-left { background-position: -240px -96px; }
|
||||
.icon-arrow-right { background-position: -264px -96px; }
|
||||
.icon-arrow-up { background-position: -289px -96px; } // 1px off
|
||||
.icon-arrow-down { background-position: -312px -96px; }
|
||||
.icon-share-alt { background-position: -336px -96px; }
|
||||
.icon-resize-full { background-position: -360px -96px; }
|
||||
.icon-resize-small { background-position: -384px -96px; }
|
||||
.icon-plus { background-position: -408px -96px; }
|
||||
.icon-minus { background-position: -433px -96px; }
|
||||
.icon-asterisk { background-position: -456px -96px; }
|
||||
|
||||
.icon-exclamation-sign { background-position: 0 -120px; }
|
||||
.icon-gift { background-position: -24px -120px; }
|
||||
.icon-leaf { background-position: -48px -120px; }
|
||||
.icon-fire { background-position: -72px -120px; }
|
||||
.icon-eye-open { background-position: -96px -120px; }
|
||||
.icon-eye-close { background-position: -120px -120px; }
|
||||
.icon-warning-sign { background-position: -144px -120px; }
|
||||
.icon-plane { background-position: -168px -120px; }
|
||||
.icon-calendar { background-position: -192px -120px; }
|
||||
.icon-random { background-position: -216px -120px; width: 16px; }
|
||||
.icon-comment { background-position: -240px -120px; }
|
||||
.icon-magnet { background-position: -264px -120px; }
|
||||
.icon-chevron-up { background-position: -288px -120px; }
|
||||
.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
|
||||
.icon-retweet { background-position: -336px -120px; }
|
||||
.icon-shopping-cart { background-position: -360px -120px; }
|
||||
.icon-folder-close { background-position: -384px -120px; width: 16px; }
|
||||
.icon-folder-open { background-position: -408px -120px; width: 16px; }
|
||||
.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
|
||||
.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
|
||||
|
||||
.icon-hdd { background-position: 0 -144px; }
|
||||
.icon-bullhorn { background-position: -24px -144px; }
|
||||
.icon-bell { background-position: -48px -144px; }
|
||||
.icon-certificate { background-position: -72px -144px; }
|
||||
.icon-thumbs-up { background-position: -96px -144px; }
|
||||
.icon-thumbs-down { background-position: -120px -144px; }
|
||||
.icon-hand-right { background-position: -144px -144px; }
|
||||
.icon-hand-left { background-position: -168px -144px; }
|
||||
.icon-hand-up { background-position: -192px -144px; }
|
||||
.icon-hand-down { background-position: -216px -144px; }
|
||||
.icon-circle-arrow-right { background-position: -240px -144px; }
|
||||
.icon-circle-arrow-left { background-position: -264px -144px; }
|
||||
.icon-circle-arrow-up { background-position: -288px -144px; }
|
||||
.icon-circle-arrow-down { background-position: -312px -144px; }
|
||||
.icon-globe { background-position: -336px -144px; }
|
||||
.icon-wrench { background-position: -360px -144px; }
|
||||
.icon-tasks { background-position: -384px -144px; }
|
||||
.icon-filter { background-position: -408px -144px; }
|
||||
.icon-briefcase { background-position: -432px -144px; }
|
||||
.icon-fullscreen { background-position: -456px -144px; }
|
||||
@@ -3,242 +3,209 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// BASE TABLES
|
||||
// -----------------
|
||||
|
||||
table {
|
||||
max-width: 100%;
|
||||
background-color: @tableBackground;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
background-color: @table-bg;
|
||||
}
|
||||
th {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
// BASELINE STYLES
|
||||
|
||||
// Baseline styles
|
||||
// ---------------
|
||||
|
||||
.table {
|
||||
width: 100%;
|
||||
margin-bottom: @baseLineHeight;
|
||||
margin-bottom: @line-height-computed;
|
||||
// Cells
|
||||
th,
|
||||
td {
|
||||
padding: 8px;
|
||||
line-height: @baseLineHeight;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid @tableBorder;
|
||||
}
|
||||
th {
|
||||
font-weight: bold;
|
||||
thead,
|
||||
tbody,
|
||||
tfoot {
|
||||
> tr {
|
||||
> th,
|
||||
> td {
|
||||
padding: @table-cell-padding;
|
||||
line-height: @line-height-base;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid @table-border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Bottom align for column headings
|
||||
thead th {
|
||||
thead > tr > th {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
// Remove top border from thead by default
|
||||
caption + thead tr:first-child th,
|
||||
caption + thead tr:first-child td,
|
||||
colgroup + thead tr:first-child th,
|
||||
colgroup + thead tr:first-child td,
|
||||
thead:first-child tr:first-child th,
|
||||
thead:first-child tr:first-child td {
|
||||
border-top: 0;
|
||||
caption + thead,
|
||||
colgroup + thead,
|
||||
thead:first-child {
|
||||
tr:first-child {
|
||||
th, td {
|
||||
border-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Account for multiple tbody instances
|
||||
tbody + tbody {
|
||||
border-top: 2px solid @tableBorder;
|
||||
border-top: 2px solid @table-border-color;
|
||||
}
|
||||
|
||||
// Nesting
|
||||
.table {
|
||||
background-color: @bodyBackground;
|
||||
background-color: @body-bg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// CONDENSED TABLE W/ HALF PADDING
|
||||
// Condensed table w/ half padding
|
||||
// -------------------------------
|
||||
|
||||
.table-condensed {
|
||||
th,
|
||||
td {
|
||||
padding: 4px 5px;
|
||||
thead,
|
||||
tbody,
|
||||
tfoot {
|
||||
> tr {
|
||||
> th,
|
||||
> td {
|
||||
padding: @table-condensed-cell-padding;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// BORDERED VERSION
|
||||
|
||||
// Bordered version
|
||||
// ----------------
|
||||
|
||||
.table-bordered {
|
||||
border: 1px solid @tableBorder;
|
||||
border-collapse: separate; // Done so we can round those corners!
|
||||
*border-collapse: collapse; // IE7 can't round corners anyway
|
||||
border-left: 0;
|
||||
.border-radius(@baseBorderRadius);
|
||||
th,
|
||||
td {
|
||||
border-left: 1px solid @tableBorder;
|
||||
border: 1px solid @table-border-color;
|
||||
> thead,
|
||||
> tbody,
|
||||
> tfoot {
|
||||
> tr {
|
||||
> th,
|
||||
> td {
|
||||
border: 1px solid @table-border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Prevent a double border
|
||||
caption + thead tr:first-child th,
|
||||
caption + tbody tr:first-child th,
|
||||
caption + tbody tr:first-child td,
|
||||
colgroup + thead tr:first-child th,
|
||||
colgroup + tbody tr:first-child th,
|
||||
colgroup + tbody tr:first-child td,
|
||||
thead:first-child tr:first-child th,
|
||||
tbody:first-child tr:first-child th,
|
||||
tbody:first-child tr:first-child td {
|
||||
border-top: 0;
|
||||
}
|
||||
// For first th/td in the first row in the first thead or tbody
|
||||
thead:first-child tr:first-child > th:first-child,
|
||||
tbody:first-child tr:first-child > td:first-child,
|
||||
tbody:first-child tr:first-child > th:first-child {
|
||||
.border-top-left-radius(@baseBorderRadius);
|
||||
}
|
||||
// For last th/td in the first row in the first thead or tbody
|
||||
thead:first-child tr:first-child > th:last-child,
|
||||
tbody:first-child tr:first-child > td:last-child,
|
||||
tbody:first-child tr:first-child > th:last-child {
|
||||
.border-top-right-radius(@baseBorderRadius);
|
||||
}
|
||||
// For first th/td (can be either) in the last row in the last thead, tbody, and tfoot
|
||||
thead:last-child tr:last-child > th:first-child,
|
||||
tbody:last-child tr:last-child > td:first-child,
|
||||
tbody:last-child tr:last-child > th:first-child,
|
||||
tfoot:last-child tr:last-child > td:first-child,
|
||||
tfoot:last-child tr:last-child > th:first-child {
|
||||
.border-bottom-left-radius(@baseBorderRadius);
|
||||
}
|
||||
// For last th/td (can be either) in the last row in the last thead, tbody, and tfoot
|
||||
thead:last-child tr:last-child > th:last-child,
|
||||
tbody:last-child tr:last-child > td:last-child,
|
||||
tbody:last-child tr:last-child > th:last-child,
|
||||
tfoot:last-child tr:last-child > td:last-child,
|
||||
tfoot:last-child tr:last-child > th:last-child {
|
||||
.border-bottom-right-radius(@baseBorderRadius);
|
||||
}
|
||||
|
||||
// Clear border-radius for first and last td in the last row in the last tbody for table with tfoot
|
||||
tfoot + tbody:last-child tr:last-child td:first-child {
|
||||
.border-bottom-left-radius(0);
|
||||
}
|
||||
tfoot + tbody:last-child tr:last-child td:last-child {
|
||||
.border-bottom-right-radius(0);
|
||||
}
|
||||
|
||||
// Special fixes to round the left border on the first td/th
|
||||
caption + thead tr:first-child th:first-child,
|
||||
caption + tbody tr:first-child td:first-child,
|
||||
colgroup + thead tr:first-child th:first-child,
|
||||
colgroup + tbody tr:first-child td:first-child {
|
||||
.border-top-left-radius(@baseBorderRadius);
|
||||
}
|
||||
caption + thead tr:first-child th:last-child,
|
||||
caption + tbody tr:first-child td:last-child,
|
||||
colgroup + thead tr:first-child th:last-child,
|
||||
colgroup + tbody tr:first-child td:last-child {
|
||||
.border-top-right-radius(@baseBorderRadius);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// ZEBRA-STRIPING
|
||||
// Zebra-striping
|
||||
// --------------
|
||||
|
||||
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
|
||||
.table-striped {
|
||||
tbody {
|
||||
> tr:nth-child(odd) > td,
|
||||
> tr:nth-child(odd) > th {
|
||||
background-color: @tableBackgroundAccent;
|
||||
> tbody {
|
||||
> tr:nth-child(odd) {
|
||||
> td,
|
||||
> th {
|
||||
background-color: @table-bg-accent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// HOVER EFFECT
|
||||
|
||||
// Hover effect
|
||||
// ------------
|
||||
|
||||
// Placed here since it has to come after the potential zebra striping
|
||||
.table-hover {
|
||||
tbody {
|
||||
tr:hover > td,
|
||||
tr:hover > th {
|
||||
background-color: @tableBackgroundHover;
|
||||
> tbody {
|
||||
> tr:hover {
|
||||
> td,
|
||||
> th {
|
||||
background-color: @table-bg-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TABLE CELL SIZING
|
||||
|
||||
// Table cell sizing
|
||||
// -----------------
|
||||
|
||||
// Reset default grid behavior
|
||||
table td[class*="span"],
|
||||
table th[class*="span"],
|
||||
.row-fluid table td[class*="span"],
|
||||
.row-fluid table th[class*="span"] {
|
||||
display: table-cell;
|
||||
float: none; // undo default grid column styles
|
||||
margin-left: 0; // undo default grid column styles
|
||||
// Reset default table behavior
|
||||
table col[class^="col-"] {
|
||||
float: none;
|
||||
display: table-column;
|
||||
}
|
||||
|
||||
// Change the column widths to account for td/th padding
|
||||
.table td,
|
||||
.table th {
|
||||
&.span1 { .tableColumns(1); }
|
||||
&.span2 { .tableColumns(2); }
|
||||
&.span3 { .tableColumns(3); }
|
||||
&.span4 { .tableColumns(4); }
|
||||
&.span5 { .tableColumns(5); }
|
||||
&.span6 { .tableColumns(6); }
|
||||
&.span7 { .tableColumns(7); }
|
||||
&.span8 { .tableColumns(8); }
|
||||
&.span9 { .tableColumns(9); }
|
||||
&.span10 { .tableColumns(10); }
|
||||
&.span11 { .tableColumns(11); }
|
||||
&.span12 { .tableColumns(12); }
|
||||
table {
|
||||
td,
|
||||
th {
|
||||
&[class^="col-"] {
|
||||
float: none;
|
||||
display: table-cell;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TABLE BACKGROUNDS
|
||||
// Table backgrounds
|
||||
// -----------------
|
||||
// Exact selectors below required to override .table-striped
|
||||
// Exact selectors below required to override `.table-striped` and prevent
|
||||
// inheritance to nested tables.
|
||||
|
||||
.table tbody tr {
|
||||
&.success > td {
|
||||
background-color: @successBackground;
|
||||
.table > thead > tr,
|
||||
.table > tbody > tr,
|
||||
.table > tfoot > tr {
|
||||
> td.active,
|
||||
> th.active,
|
||||
&.active > td,
|
||||
&.active > th {
|
||||
background-color: @table-bg-hover;
|
||||
}
|
||||
&.error > td {
|
||||
background-color: @errorBackground;
|
||||
> td.success,
|
||||
> th.success,
|
||||
&.success > td,
|
||||
&.success > th {
|
||||
background-color: @state-success-bg;
|
||||
border-color: @state-success-border;
|
||||
}
|
||||
&.warning > td {
|
||||
background-color: @warningBackground;
|
||||
> td.danger,
|
||||
> th.danger,
|
||||
&.danger > td,
|
||||
&.danger > th {
|
||||
background-color: @state-danger-bg;
|
||||
border-color: @state-danger-border;
|
||||
}
|
||||
&.info > td {
|
||||
background-color: @infoBackground;
|
||||
> td.warning,
|
||||
> th.warning,
|
||||
&.warning > td,
|
||||
&.warning > th {
|
||||
background-color: @state-warning-bg;
|
||||
border-color: @state-warning-border;
|
||||
}
|
||||
}
|
||||
|
||||
// Hover states for .table-hover
|
||||
.table-hover tbody tr {
|
||||
// Hover states for `.table-hover`
|
||||
// Note: this is not available for cells or rows within `thead` or `tfoot`.
|
||||
.table-hover > tbody > tr {
|
||||
> td.success:hover,
|
||||
> th.success:hover,
|
||||
&.success:hover > td {
|
||||
background-color: darken(@successBackground, 5%);
|
||||
background-color: darken(@state-success-bg, 5%);
|
||||
border-color: darken(@state-success-border, 5%);
|
||||
}
|
||||
&.error:hover > td {
|
||||
background-color: darken(@errorBackground, 5%);
|
||||
> td.danger:hover,
|
||||
> th.danger:hover,
|
||||
&.danger:hover > td {
|
||||
background-color: darken(@state-danger-bg, 5%);
|
||||
border-color: darken(@state-danger-border, 5%);
|
||||
}
|
||||
> td.warning:hover,
|
||||
> th.warning:hover,
|
||||
&.warning:hover > td {
|
||||
background-color: darken(@warningBackground, 5%);
|
||||
}
|
||||
&.info:hover > td {
|
||||
background-color: darken(@infoBackground, 5%);
|
||||
background-color: darken(@state-warning-bg, 5%);
|
||||
border-color: darken(@state-warning-border, 5%);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,51 +3,40 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
|
||||
// Base classes
|
||||
// For thumbnail block-level composite components and simple image styles
|
||||
|
||||
// Make wrapper ul behave like the grid
|
||||
.thumbnails {
|
||||
margin-left: -@gridGutterWidth;
|
||||
list-style: none;
|
||||
.clearfix();
|
||||
}
|
||||
// Fluid rows have no left margin
|
||||
.row-fluid .thumbnails {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
// Float li to make thumbnails appear in a row
|
||||
.thumbnails > li {
|
||||
float: left; // Explicity set the float since we don't require .span* classes
|
||||
margin-bottom: @baseLineHeight;
|
||||
margin-left: @gridGutterWidth;
|
||||
}
|
||||
|
||||
// The actual thumbnail (can be `a` or `div`)
|
||||
.thumbnail {
|
||||
display: block;
|
||||
// The actual thumbnailed element
|
||||
// Can be `a`, `div`, or `img`
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
padding: 4px;
|
||||
line-height: @baseLineHeight;
|
||||
border: 1px solid #ddd;
|
||||
.border-radius(@baseBorderRadius);
|
||||
.box-shadow(0 1px 3px rgba(0,0,0,.055));
|
||||
line-height: @line-height-base;
|
||||
background-color: @thumbnail-bg;
|
||||
border: 1px solid @thumbnail-border;
|
||||
border-radius: @thumbnail-border-radius;
|
||||
.transition(all .2s ease-in-out);
|
||||
}
|
||||
// Add a hover/focus state for linked versions only
|
||||
.thumbnail {
|
||||
display: block;
|
||||
}
|
||||
.thumbnail > img,
|
||||
.img-thumbnail {
|
||||
.img-responsive();
|
||||
}
|
||||
|
||||
// Add a hover state for linked versions only
|
||||
a.thumbnail:hover,
|
||||
a.thumbnail:focus {
|
||||
border-color: @linkColor;
|
||||
.box-shadow(0 1px 4px rgba(0,105,214,.25));
|
||||
border-color: @link-color;
|
||||
}
|
||||
|
||||
// Images and captions
|
||||
.thumbnail > img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.thumbnail .caption {
|
||||
padding: 9px;
|
||||
color: @gray;
|
||||
color: @thumbnail-caption-color;
|
||||
}
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
// Base class
|
||||
.tooltip {
|
||||
position: absolute;
|
||||
z-index: @zindexTooltip;
|
||||
z-index: @zindex-tooltip;
|
||||
display: block;
|
||||
visibility: visible;
|
||||
font-size: 11px;
|
||||
font-size: @font-size-small;
|
||||
line-height: 1.4;
|
||||
.opacity(0);
|
||||
&.in { .opacity(80); }
|
||||
|
||||
&.in { .opacity(1); }
|
||||
&.top { margin-top: -3px; padding: 5px 0; }
|
||||
&.right { margin-left: 3px; padding: 0 5px; }
|
||||
&.bottom { margin-top: 3px; padding: 5px 0; }
|
||||
@@ -21,13 +22,13 @@
|
||||
|
||||
// Wrapper for the tooltip content
|
||||
.tooltip-inner {
|
||||
max-width: 200px;
|
||||
padding: 8px;
|
||||
color: @tooltipColor;
|
||||
max-width: @tooltip-max-width;
|
||||
padding: 3px 8px;
|
||||
color: @tooltip-color;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
background-color: @tooltipBackground;
|
||||
.border-radius(@baseBorderRadius);
|
||||
background-color: @tooltip-bg;
|
||||
border-radius: @border-radius-base;
|
||||
}
|
||||
|
||||
// Arrows
|
||||
@@ -42,29 +43,53 @@
|
||||
&.top .tooltip-arrow {
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
margin-left: -@tooltipArrowWidth;
|
||||
border-width: @tooltipArrowWidth @tooltipArrowWidth 0;
|
||||
border-top-color: @tooltipArrowColor;
|
||||
margin-left: -@tooltip-arrow-width;
|
||||
border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
|
||||
border-top-color: @tooltip-arrow-color;
|
||||
}
|
||||
&.top-left .tooltip-arrow {
|
||||
bottom: 0;
|
||||
left: 5px;
|
||||
border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
|
||||
border-top-color: @tooltip-arrow-color;
|
||||
}
|
||||
&.top-right .tooltip-arrow {
|
||||
bottom: 0;
|
||||
right: 5px;
|
||||
border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
|
||||
border-top-color: @tooltip-arrow-color;
|
||||
}
|
||||
&.right .tooltip-arrow {
|
||||
top: 50%;
|
||||
left: 0;
|
||||
margin-top: -@tooltipArrowWidth;
|
||||
border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0;
|
||||
border-right-color: @tooltipArrowColor;
|
||||
margin-top: -@tooltip-arrow-width;
|
||||
border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
|
||||
border-right-color: @tooltip-arrow-color;
|
||||
}
|
||||
&.left .tooltip-arrow {
|
||||
top: 50%;
|
||||
right: 0;
|
||||
margin-top: -@tooltipArrowWidth;
|
||||
border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth;
|
||||
border-left-color: @tooltipArrowColor;
|
||||
margin-top: -@tooltip-arrow-width;
|
||||
border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
|
||||
border-left-color: @tooltip-arrow-color;
|
||||
}
|
||||
&.bottom .tooltip-arrow {
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -@tooltipArrowWidth;
|
||||
border-width: 0 @tooltipArrowWidth @tooltipArrowWidth;
|
||||
border-bottom-color: @tooltipArrowColor;
|
||||
margin-left: -@tooltip-arrow-width;
|
||||
border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
|
||||
border-bottom-color: @tooltip-arrow-color;
|
||||
}
|
||||
&.bottom-left .tooltip-arrow {
|
||||
top: 0;
|
||||
left: 5px;
|
||||
border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
|
||||
border-bottom-color: @tooltip-arrow-color;
|
||||
}
|
||||
&.bottom-right .tooltip-arrow {
|
||||
top: 0;
|
||||
right: 5px;
|
||||
border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
|
||||
border-bottom-color: @tooltip-arrow-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,13 +7,17 @@
|
||||
// -------------------------
|
||||
|
||||
p {
|
||||
margin: 0 0 @baseLineHeight / 2;
|
||||
margin: 0 0 (@line-height-computed / 2);
|
||||
}
|
||||
.lead {
|
||||
margin-bottom: @baseLineHeight;
|
||||
font-size: @baseFontSize * 1.5;
|
||||
margin-bottom: @line-height-computed;
|
||||
font-size: (@font-size-base * 1.15);
|
||||
font-weight: 200;
|
||||
line-height: @baseLineHeight * 1.5;
|
||||
line-height: 1.4;
|
||||
|
||||
@media (min-width: 768px) {
|
||||
font-size: (@font-size-base * 1.5);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,31 +27,18 @@ p {
|
||||
// Ex: 14px base font * 85% = about 12px
|
||||
small { font-size: 85%; }
|
||||
|
||||
strong { font-weight: bold; }
|
||||
em { font-style: italic; }
|
||||
// Undo browser default styling
|
||||
cite { font-style: normal; }
|
||||
|
||||
// Utility classes
|
||||
.muted { color: @grayLight; }
|
||||
a.muted:hover,
|
||||
a.muted:focus { color: darken(@grayLight, 10%); }
|
||||
|
||||
.text-warning { color: @warningText; }
|
||||
a.text-warning:hover,
|
||||
a.text-warning:focus { color: darken(@warningText, 10%); }
|
||||
|
||||
.text-error { color: @errorText; }
|
||||
a.text-error:hover,
|
||||
a.text-error:focus { color: darken(@errorText, 10%); }
|
||||
|
||||
.text-info { color: @infoText; }
|
||||
a.text-info:hover,
|
||||
a.text-info:focus { color: darken(@infoText, 10%); }
|
||||
|
||||
.text-success { color: @successText; }
|
||||
a.text-success:hover,
|
||||
a.text-success:focus { color: darken(@successText, 10%); }
|
||||
// Contextual emphasis
|
||||
.text-muted { color: @text-muted; }
|
||||
.text-primary { color: @brand-primary; }
|
||||
.text-warning { color: @state-warning-text; }
|
||||
.text-danger { color: @state-danger-text; }
|
||||
.text-success { color: @state-success-text; }
|
||||
.text-info { color: @state-info-text; }
|
||||
|
||||
// Alignment
|
||||
.text-left { text-align: left; }
|
||||
.text-right { text-align: right; }
|
||||
.text-center { text-align: center; }
|
||||
@@ -56,44 +47,51 @@ a.text-success:focus { color: darken(@successText, 10%); }
|
||||
// Headings
|
||||
// -------------------------
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: (@baseLineHeight / 2) 0;
|
||||
font-family: @headingsFontFamily;
|
||||
font-weight: @headingsFontWeight;
|
||||
line-height: @baseLineHeight;
|
||||
color: @headingsColor;
|
||||
text-rendering: optimizelegibility; // Fix the character spacing for headings
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.h1, .h2, .h3, .h4, .h5, .h6 {
|
||||
font-family: @headings-font-family;
|
||||
font-weight: @headings-font-weight;
|
||||
line-height: @headings-line-height;
|
||||
small {
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
color: @grayLight;
|
||||
color: @headings-small-color;
|
||||
}
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3 { line-height: @baseLineHeight * 2; }
|
||||
h3 {
|
||||
margin-top: @line-height-computed;
|
||||
margin-bottom: (@line-height-computed / 2);
|
||||
}
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: (@line-height-computed / 2);
|
||||
margin-bottom: (@line-height-computed / 2);
|
||||
}
|
||||
|
||||
h1 { font-size: @baseFontSize * 2.75; } // ~38px
|
||||
h2 { font-size: @baseFontSize * 2.25; } // ~32px
|
||||
h3 { font-size: @baseFontSize * 1.75; } // ~24px
|
||||
h4 { font-size: @baseFontSize * 1.25; } // ~18px
|
||||
h5 { font-size: @baseFontSize; }
|
||||
h6 { font-size: @baseFontSize * 0.85; } // ~12px
|
||||
h1, .h1 { font-size: ceil(@font-size-base * 2.70); } // ~38px
|
||||
h2, .h2 { font-size: ceil(@font-size-base * 2.25); } // ~32px
|
||||
h3, .h3 { font-size: ceil(@font-size-base * 1.70); } // ~24px
|
||||
h4, .h4 { font-size: ceil(@font-size-base * 1.25); } // ~18px
|
||||
h5, .h5 { font-size: @font-size-base; }
|
||||
h6, .h6 { font-size: ceil(@font-size-base * 0.85); } // ~12px
|
||||
|
||||
h1 small { font-size: @baseFontSize * 1.75; } // ~24px
|
||||
h2 small { font-size: @baseFontSize * 1.25; } // ~18px
|
||||
h3 small { font-size: @baseFontSize; }
|
||||
h4 small { font-size: @baseFontSize; }
|
||||
h1 small, .h1 small { font-size: ceil(@font-size-base * 1.70); } // ~24px
|
||||
h2 small, .h2 small { font-size: ceil(@font-size-base * 1.25); } // ~18px
|
||||
h3 small, .h3 small,
|
||||
h4 small, .h4 small { font-size: @font-size-base; }
|
||||
|
||||
|
||||
// Page header
|
||||
// -------------------------
|
||||
|
||||
.page-header {
|
||||
padding-bottom: (@baseLineHeight / 2) - 1;
|
||||
margin: @baseLineHeight 0 (@baseLineHeight * 1.5);
|
||||
border-bottom: 1px solid @grayLighter;
|
||||
padding-bottom: ((@line-height-computed / 2) - 1);
|
||||
margin: (@line-height-computed * 2) 0 @line-height-computed;
|
||||
border-bottom: 1px solid @page-header-border-color;
|
||||
}
|
||||
|
||||
|
||||
@@ -102,35 +100,28 @@ h4 small { font-size: @baseFontSize; }
|
||||
// --------------------------------------------------
|
||||
|
||||
// Unordered and Ordered lists
|
||||
ul, ol {
|
||||
padding: 0;
|
||||
margin: 0 0 @baseLineHeight / 2 25px;
|
||||
}
|
||||
ul ul,
|
||||
ul ol,
|
||||
ol ol,
|
||||
ol ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
li {
|
||||
line-height: @baseLineHeight;
|
||||
ul,
|
||||
ol {
|
||||
margin-top: 0;
|
||||
margin-bottom: (@line-height-computed / 2);
|
||||
ul,
|
||||
ol{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove default list styles
|
||||
ul.unstyled,
|
||||
ol.unstyled {
|
||||
margin-left: 0;
|
||||
// List options
|
||||
|
||||
// Unstyled keeps list items block level, just removes default browser padding and list-style
|
||||
.list-unstyled {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
// Single-line list items
|
||||
ul.inline,
|
||||
ol.inline {
|
||||
margin-left: 0;
|
||||
list-style: none;
|
||||
// Inline turns list items into inline-block
|
||||
.list-inline {
|
||||
.list-unstyled();
|
||||
> li {
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
@@ -138,50 +129,42 @@ ol.inline {
|
||||
|
||||
// Description Lists
|
||||
dl {
|
||||
margin-bottom: @baseLineHeight;
|
||||
margin-bottom: @line-height-computed;
|
||||
}
|
||||
dt,
|
||||
dd {
|
||||
line-height: @baseLineHeight;
|
||||
line-height: @line-height-base;
|
||||
}
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
dd {
|
||||
margin-left: @baseLineHeight / 2;
|
||||
margin-left: 0; // Undo browser default
|
||||
}
|
||||
// Horizontal layout (like forms)
|
||||
.dl-horizontal {
|
||||
.clearfix(); // Ensure dl clears floats if empty dd elements present
|
||||
dt {
|
||||
float: left;
|
||||
width: @horizontalComponentOffset - 20;
|
||||
width: (@component-offset-horizontal - 20);
|
||||
clear: left;
|
||||
text-align: right;
|
||||
.text-overflow();
|
||||
}
|
||||
dd {
|
||||
margin-left: @horizontalComponentOffset;
|
||||
.clearfix(); // Clear the floated `dt` if an empty `dd` is present
|
||||
margin-left: @component-offset-horizontal;
|
||||
}
|
||||
}
|
||||
|
||||
// MISC
|
||||
// ----
|
||||
|
||||
// Horizontal rules
|
||||
hr {
|
||||
margin: @baseLineHeight 0;
|
||||
border: 0;
|
||||
border-top: 1px solid @hrBorder;
|
||||
border-bottom: 1px solid @white;
|
||||
}
|
||||
|
||||
// Abbreviations and acronyms
|
||||
abbr[title],
|
||||
// Added data-* attribute to help out our tooltip plugin, per https://github.com/twitter/bootstrap/issues/5257
|
||||
// Added data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
|
||||
abbr[data-original-title] {
|
||||
cursor: help;
|
||||
border-bottom: 1px dotted @grayLight;
|
||||
border-bottom: 1px dotted @abbr-border-color;
|
||||
}
|
||||
abbr.initialism {
|
||||
font-size: 90%;
|
||||
@@ -190,21 +173,23 @@ abbr.initialism {
|
||||
|
||||
// Blockquotes
|
||||
blockquote {
|
||||
padding: 0 0 0 15px;
|
||||
margin: 0 0 @baseLineHeight;
|
||||
border-left: 5px solid @grayLighter;
|
||||
padding: (@line-height-computed / 2) @line-height-computed;
|
||||
margin: 0 0 @line-height-computed;
|
||||
border-left: 5px solid @blockquote-border-color;
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
font-size: @baseFontSize * 1.25;
|
||||
font-size: (@font-size-base * 1.25);
|
||||
font-weight: 300;
|
||||
line-height: 1.25;
|
||||
}
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
small {
|
||||
display: block;
|
||||
line-height: @baseLineHeight;
|
||||
color: @grayLight;
|
||||
line-height: @line-height-base;
|
||||
color: @blockquote-small-color;
|
||||
&:before {
|
||||
content: '\2014 \00A0';
|
||||
content: '\2014 \00A0';// EM DASH, NBSP
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +198,7 @@ blockquote {
|
||||
float: right;
|
||||
padding-right: 15px;
|
||||
padding-left: 0;
|
||||
border-right: 5px solid @grayLighter;
|
||||
border-right: 5px solid @blockquote-border-color;
|
||||
border-left: 0;
|
||||
p,
|
||||
small {
|
||||
@@ -224,7 +209,7 @@ blockquote {
|
||||
content: '';
|
||||
}
|
||||
&:after {
|
||||
content: '\00A0 \2014';
|
||||
content: '\00A0 \2014';// NBSP, EM DASH
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -241,7 +226,7 @@ blockquote:after {
|
||||
// Addresses
|
||||
address {
|
||||
display: block;
|
||||
margin-bottom: @baseLineHeight;
|
||||
margin-bottom: @line-height-computed;
|
||||
font-style: normal;
|
||||
line-height: @baseLineHeight;
|
||||
line-height: @line-height-base;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,12 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Quick floats
|
||||
// Floats
|
||||
// -------------------------
|
||||
|
||||
.clearfix {
|
||||
.clearfix();
|
||||
}
|
||||
.pull-right {
|
||||
float: right;
|
||||
}
|
||||
@@ -11,20 +16,27 @@
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
// Toggling content
|
||||
// -------------------------
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
display: none !important;
|
||||
}
|
||||
.show {
|
||||
display: block;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
// Visibility
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
.text-hide {
|
||||
.hide-text();
|
||||
}
|
||||
|
||||
|
||||
// For Affix plugin
|
||||
// -------------------------
|
||||
|
||||
.affix {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
@@ -6,131 +6,156 @@
|
||||
// Global values
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Grays
|
||||
// -------------------------
|
||||
@black: #000;
|
||||
@grayDarker: #222;
|
||||
@grayDark: #333;
|
||||
@gray: #555;
|
||||
@grayLight: #999;
|
||||
@grayLighter: #eee;
|
||||
@white: #fff;
|
||||
|
||||
@gray-darker: lighten(#000, 13.5%); // #222
|
||||
@gray-dark: lighten(#000, 20%); // #333
|
||||
@gray: lighten(#000, 33.5%); // #555
|
||||
@gray-light: lighten(#000, 60%); // #999
|
||||
@gray-lighter: lighten(#000, 93.5%); // #eee
|
||||
|
||||
// Accent colors
|
||||
// Brand colors
|
||||
// -------------------------
|
||||
@blue: #049cdb;
|
||||
@blueDark: #0064cd;
|
||||
@green: #46a546;
|
||||
@red: #9d261d;
|
||||
@yellow: #ffc40d;
|
||||
@orange: #f89406;
|
||||
@pink: #c3325f;
|
||||
@purple: #7a43b6;
|
||||
|
||||
@brand-primary: #428bca;
|
||||
@brand-success: #5cb85c;
|
||||
@brand-warning: #f0ad4e;
|
||||
@brand-danger: #d9534f;
|
||||
@brand-info: #5bc0de;
|
||||
|
||||
// Scaffolding
|
||||
// -------------------------
|
||||
@bodyBackground: @white;
|
||||
@textColor: @grayDark;
|
||||
|
||||
@body-bg: #fff;
|
||||
@text-color: @gray-dark;
|
||||
|
||||
// Links
|
||||
// -------------------------
|
||||
@linkColor: #08c;
|
||||
@linkColorHover: darken(@linkColor, 15%);
|
||||
|
||||
@link-color: @brand-primary;
|
||||
@link-hover-color: darken(@link-color, 15%);
|
||||
|
||||
// Typography
|
||||
// -------------------------
|
||||
@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
@serifFontFamily: Georgia, "Times New Roman", Times, serif;
|
||||
@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
|
||||
@baseFontSize: 14px;
|
||||
@baseFontFamily: @sansFontFamily;
|
||||
@baseLineHeight: 20px;
|
||||
@altFontFamily: @serifFontFamily;
|
||||
@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
@font-family-serif: Georgia, "Times New Roman", Times, serif;
|
||||
@font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
@font-family-base: @font-family-sans-serif;
|
||||
|
||||
@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
|
||||
@headingsFontWeight: bold; // instead of browser default, bold
|
||||
@headingsColor: inherit; // empty to use BS default, @textColor
|
||||
@font-size-base: 14px;
|
||||
@font-size-large: ceil(@font-size-base * 1.25); // ~18px
|
||||
@font-size-small: ceil(@font-size-base * 0.85); // ~12px
|
||||
|
||||
@line-height-base: 1.428571429; // 20/14
|
||||
@line-height-computed: floor(@font-size-base * @line-height-base); // ~20px
|
||||
|
||||
@headings-font-family: @font-family-base;
|
||||
@headings-font-weight: 500;
|
||||
@headings-line-height: 1.1;
|
||||
|
||||
|
||||
// Component sizing
|
||||
// Components
|
||||
// -------------------------
|
||||
// Based on 14px font-size and 20px line-height
|
||||
// Based on 14px font-size and 1.428 line-height (~20px to start)
|
||||
|
||||
@fontSizeLarge: @baseFontSize * 1.25; // ~18px
|
||||
@fontSizeSmall: @baseFontSize * 0.85; // ~12px
|
||||
@fontSizeMini: @baseFontSize * 0.75; // ~11px
|
||||
@padding-base-vertical: 8px;
|
||||
@padding-base-horizontal: 12px;
|
||||
|
||||
@paddingLarge: 11px 19px; // 44px
|
||||
@paddingSmall: 2px 10px; // 26px
|
||||
@paddingMini: 0 6px; // 22px
|
||||
@padding-large-vertical: 14px;
|
||||
@padding-large-horizontal: 16px;
|
||||
|
||||
@baseBorderRadius: 4px;
|
||||
@borderRadiusLarge: 6px;
|
||||
@borderRadiusSmall: 3px;
|
||||
@padding-small-vertical: 5px;
|
||||
@padding-small-horizontal: 10px;
|
||||
|
||||
@border-radius-base: 4px;
|
||||
@border-radius-large: 6px;
|
||||
@border-radius-small: 3px;
|
||||
|
||||
@component-active-bg: @brand-primary;
|
||||
|
||||
|
||||
// Tables
|
||||
// -------------------------
|
||||
@tableBackground: transparent; // overall background-color
|
||||
@tableBackgroundAccent: #f9f9f9; // for striping
|
||||
@tableBackgroundHover: #f5f5f5; // for hover
|
||||
@tableBorder: #ddd; // table and cell border
|
||||
|
||||
@table-cell-padding: 8px;
|
||||
@table-condensed-cell-padding: 5px;
|
||||
|
||||
@table-bg: transparent; // overall background-color
|
||||
@table-bg-accent: #f9f9f9; // for striping
|
||||
@table-bg-hover: #f5f5f5;
|
||||
@table-bg-active: @table-bg-hover;
|
||||
|
||||
@table-border-color: #ddd; // table and cell border
|
||||
|
||||
|
||||
// Buttons
|
||||
// -------------------------
|
||||
@btnBackground: @white;
|
||||
@btnBackgroundHighlight: darken(@white, 10%);
|
||||
@btnBorder: #ccc;
|
||||
|
||||
@btnPrimaryBackground: @linkColor;
|
||||
@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);
|
||||
@btn-default-color: #fff;
|
||||
@btn-default-bg: #474949;
|
||||
@btn-default-border: @btn-default-bg;
|
||||
|
||||
@btnInfoBackground: #5bc0de;
|
||||
@btnInfoBackgroundHighlight: #2f96b4;
|
||||
@btn-primary-color: @btn-default-color;
|
||||
@btn-primary-bg: @brand-primary;
|
||||
@btn-primary-border: @btn-primary-bg;
|
||||
|
||||
@btnSuccessBackground: #62c462;
|
||||
@btnSuccessBackgroundHighlight: #51a351;
|
||||
@btn-success-color: @btn-default-color;
|
||||
@btn-success-bg: @brand-success;
|
||||
@btn-success-border: @btn-success-bg;
|
||||
|
||||
@btnWarningBackground: lighten(@orange, 15%);
|
||||
@btnWarningBackgroundHighlight: @orange;
|
||||
@btn-warning-color: @btn-default-color;
|
||||
@btn-warning-bg: @brand-warning;
|
||||
@btn-warning-border: @btn-warning-bg;
|
||||
|
||||
@btnDangerBackground: #ee5f5b;
|
||||
@btnDangerBackgroundHighlight: #bd362f;
|
||||
@btn-danger-color: @btn-default-color;
|
||||
@btn-danger-bg: @brand-danger;
|
||||
@btn-danger-border: @btn-danger-bg;
|
||||
|
||||
@btnInverseBackground: #444;
|
||||
@btnInverseBackgroundHighlight: @grayDarker;
|
||||
@btn-info-color: @btn-default-color;
|
||||
@btn-info-bg: @brand-info;
|
||||
@btn-info-border: @btn-info-bg;
|
||||
|
||||
@btn-hover-color: @btn-default-color;
|
||||
|
||||
|
||||
// Forms
|
||||
// -------------------------
|
||||
@inputBackground: @white;
|
||||
@inputBorder: #ccc;
|
||||
@inputBorderRadius: @baseBorderRadius;
|
||||
@inputDisabledBackground: @grayLighter;
|
||||
@formActionsBackground: #f5f5f5;
|
||||
@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
|
||||
|
||||
@input-bg: #fff;
|
||||
@input-bg-disabled: @gray-lighter;
|
||||
|
||||
@input-border: #ccc;
|
||||
@input-border-radius: @border-radius-base;
|
||||
|
||||
@input-color-placeholder: @gray-light;
|
||||
|
||||
@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
|
||||
@input-height-large: (ceil(@font-size-large * @line-height-base) + (@padding-large-vertical * 2) + 2);
|
||||
@input-height-small: (ceil(@font-size-small * @line-height-base) + (@padding-small-vertical * 2) + 2);
|
||||
|
||||
@legend-border-color: #e5e5e5;
|
||||
|
||||
@input-group-addon-border-color: @input-border;
|
||||
|
||||
|
||||
// Dropdowns
|
||||
// -------------------------
|
||||
@dropdownBackground: @white;
|
||||
@dropdownBorder: rgba(0,0,0,.2);
|
||||
@dropdownDividerTop: #e5e5e5;
|
||||
@dropdownDividerBottom: @white;
|
||||
|
||||
@dropdownLinkColor: @grayDark;
|
||||
@dropdownLinkColorHover: @white;
|
||||
@dropdownLinkColorActive: @white;
|
||||
@dropdown-bg: #fff;
|
||||
@dropdown-border: rgba(0,0,0,.15);
|
||||
@dropdown-fallback-border: #ccc;
|
||||
@dropdown-divider-bg: #e5e5e5;
|
||||
|
||||
@dropdownLinkBackgroundActive: @linkColor;
|
||||
@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive;
|
||||
@dropdown-link-active-color: #fff;
|
||||
@dropdown-link-active-bg: @component-active-bg;
|
||||
|
||||
@dropdown-link-color: @gray-dark;
|
||||
@dropdown-link-hover-color: #fff;
|
||||
@dropdown-link-hover-bg: @dropdown-link-active-bg;
|
||||
|
||||
@dropdown-caret-color: #000;
|
||||
|
||||
|
||||
// COMPONENT VARIABLES
|
||||
@@ -141,161 +166,403 @@
|
||||
// -------------------------
|
||||
// Used for a bird's eye view of components dependent on the z-axis
|
||||
// Try to avoid customizing these :)
|
||||
@zindexDropdown: 1000;
|
||||
@zindexPopover: 1010;
|
||||
@zindexTooltip: 1030;
|
||||
@zindexFixedNavbar: 1030;
|
||||
@zindexModalBackdrop: 1040;
|
||||
@zindexModal: 1050;
|
||||
|
||||
|
||||
// Sprite icons path
|
||||
// -------------------------
|
||||
@iconSpritePath: "../img/glyphicons-halflings.png";
|
||||
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
|
||||
|
||||
|
||||
// Input placeholder text color
|
||||
// -------------------------
|
||||
@placeholderText: @grayLight;
|
||||
|
||||
|
||||
// Hr border color
|
||||
// -------------------------
|
||||
@hrBorder: @grayLighter;
|
||||
|
||||
|
||||
// Horizontal forms & lists
|
||||
// -------------------------
|
||||
@horizontalComponentOffset: 180px;
|
||||
|
||||
|
||||
// Wells
|
||||
// -------------------------
|
||||
@wellBackground: #f5f5f5;
|
||||
@zindex-dropdown: 1000;
|
||||
@zindex-popover: 1010;
|
||||
@zindex-tooltip: 1030;
|
||||
@zindex-navbar-fixed: 1030;
|
||||
@zindex-modal-background: 1040;
|
||||
@zindex-modal: 1050;
|
||||
|
||||
|
||||
// Navbar
|
||||
// -------------------------
|
||||
@navbarCollapseWidth: 979px;
|
||||
@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1;
|
||||
|
||||
@navbarHeight: 40px;
|
||||
@navbarBackgroundHighlight: #ffffff;
|
||||
@navbarBackground: darken(@navbarBackgroundHighlight, 5%);
|
||||
@navbarBorder: darken(@navbarBackground, 12%);
|
||||
// Basics of a navbar
|
||||
@navbar-height: 50px;
|
||||
@navbar-color: #777;
|
||||
@navbar-bg: #eee;
|
||||
@navbar-padding-horizontal: floor(@grid-gutter-width / 2); // ~15px
|
||||
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
|
||||
|
||||
@navbarText: #777;
|
||||
@navbarLinkColor: #777;
|
||||
@navbarLinkColorHover: @grayDark;
|
||||
@navbarLinkColorActive: @gray;
|
||||
@navbarLinkBackgroundHover: transparent;
|
||||
@navbarLinkBackgroundActive: darken(@navbarBackground, 5%);
|
||||
// Navbar links
|
||||
@navbar-link-color: #777;
|
||||
@navbar-link-hover-color: #333;
|
||||
@navbar-link-hover-bg: transparent;
|
||||
@navbar-link-active-color: #555;
|
||||
@navbar-link-active-bg: darken(@navbar-bg, 10%);
|
||||
@navbar-link-disabled-color: #ccc;
|
||||
@navbar-link-disabled-bg: transparent;
|
||||
|
||||
// Navbar brand label
|
||||
@navbar-brand-color: @navbar-link-color;
|
||||
@navbar-brand-hover-color: darken(@navbar-link-color, 10%);
|
||||
@navbar-brand-hover-bg: transparent;
|
||||
|
||||
// Navbar toggle
|
||||
@navbar-toggle-hover-bg: #ddd;
|
||||
@navbar-toggle-icon-bar-bg: #ccc;
|
||||
@navbar-toggle-border-color: #ddd;
|
||||
|
||||
@navbarBrandColor: @navbarLinkColor;
|
||||
|
||||
// Inverted navbar
|
||||
@navbarInverseBackground: #111111;
|
||||
@navbarInverseBackgroundHighlight: #222222;
|
||||
@navbarInverseBorder: #252525;
|
||||
//
|
||||
// Reset inverted navbar basics
|
||||
@navbar-inverse-color: @gray-light;
|
||||
@navbar-inverse-bg: #222;
|
||||
|
||||
@navbarInverseText: @grayLight;
|
||||
@navbarInverseLinkColor: @grayLight;
|
||||
@navbarInverseLinkColorHover: @white;
|
||||
@navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
|
||||
@navbarInverseLinkBackgroundHover: transparent;
|
||||
@navbarInverseLinkBackgroundActive: @navbarInverseBackground;
|
||||
// Inverted navbar links
|
||||
@navbar-inverse-link-color: @gray-light;
|
||||
@navbar-inverse-link-hover-color: #fff;
|
||||
@navbar-inverse-link-hover-bg: transparent;
|
||||
@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
|
||||
@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
|
||||
@navbar-inverse-link-disabled-color: #444;
|
||||
@navbar-inverse-link-disabled-bg: transparent;
|
||||
|
||||
@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
|
||||
@navbarInverseSearchBackgroundFocus: @white;
|
||||
@navbarInverseSearchBorder: @navbarInverseBackground;
|
||||
@navbarInverseSearchPlaceholderColor: #ccc;
|
||||
// Inverted navbar brand label
|
||||
@navbar-inverse-brand-color: @navbar-inverse-link-color;
|
||||
@navbar-inverse-brand-hover-color: #fff;
|
||||
@navbar-inverse-brand-hover-bg: transparent;
|
||||
|
||||
@navbarInverseBrandColor: @navbarInverseLinkColor;
|
||||
// Inverted navbar search
|
||||
// Normal navbar needs no special styles or vars
|
||||
@navbar-inverse-search-bg: lighten(@navbar-inverse-bg, 25%);
|
||||
@navbar-inverse-search-bg-focus: #fff;
|
||||
@navbar-inverse-search-border: @navbar-inverse-bg;
|
||||
@navbar-inverse-search-placeholder-color: #ccc;
|
||||
|
||||
// Inverted navbar toggle
|
||||
@navbar-inverse-toggle-hover-bg: #333;
|
||||
@navbar-inverse-toggle-icon-bar-bg: #fff;
|
||||
@navbar-inverse-toggle-border-color: #333;
|
||||
|
||||
|
||||
// Navs
|
||||
// -------------------------
|
||||
|
||||
@nav-link-hover-bg: @gray-lighter;
|
||||
|
||||
@nav-disabled-link-color: @gray-light;
|
||||
@nav-disabled-link-hover-color: @gray-light;
|
||||
|
||||
@nav-open-link-hover-color: #fff;
|
||||
@nav-open-caret-border-color: #fff;
|
||||
|
||||
// Tabs
|
||||
@nav-tabs-border-color: #ddd;
|
||||
|
||||
@nav-tabs-link-hover-border-color: @gray-lighter;
|
||||
|
||||
@nav-tabs-active-link-hover-bg: @body-bg;
|
||||
@nav-tabs-active-link-hover-color: @gray;
|
||||
@nav-tabs-active-link-hover-border-color: #ddd;
|
||||
|
||||
@nav-tabs-justified-link-border-color: #ddd;
|
||||
@nav-tabs-justified-active-link-border-color: @body-bg;
|
||||
|
||||
// Pills
|
||||
@nav-pills-active-link-hover-bg: @component-active-bg;
|
||||
@nav-pills-active-link-hover-color: #fff;
|
||||
|
||||
|
||||
// Pagination
|
||||
// -------------------------
|
||||
@paginationBackground: #fff;
|
||||
@paginationBorder: #ddd;
|
||||
@paginationActiveBackground: #f5f5f5;
|
||||
|
||||
@pagination-bg: #fff;
|
||||
@pagination-border: #ddd;
|
||||
@pagination-active-bg: #f5f5f5;
|
||||
@pagination-active-color: @gray-light;
|
||||
@pagination-disabled-color: @gray-light;
|
||||
|
||||
// Hero unit
|
||||
// Pager
|
||||
// -------------------------
|
||||
@heroUnitBackground: @grayLighter;
|
||||
@heroUnitHeadingColor: inherit;
|
||||
@heroUnitLeadColor: inherit;
|
||||
|
||||
@pager-border-radius: 15px;
|
||||
@pager-disabled-color: @gray-light;
|
||||
|
||||
|
||||
// Jumbotron
|
||||
// -------------------------
|
||||
|
||||
@jumbotron-bg: @gray-lighter;
|
||||
@jumbotron-heading-color: inherit;
|
||||
@jumbotron-lead-color: inherit;
|
||||
|
||||
|
||||
// Form states and alerts
|
||||
// -------------------------
|
||||
@warningText: #c09853;
|
||||
@warningBackground: #fcf8e3;
|
||||
@warningBorder: darken(spin(@warningBackground, -10), 3%);
|
||||
|
||||
@errorText: #b94a48;
|
||||
@errorBackground: #f2dede;
|
||||
@errorBorder: darken(spin(@errorBackground, -10), 3%);
|
||||
@state-warning-text: #c09853;
|
||||
@state-warning-bg: #fcf8e3;
|
||||
@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);
|
||||
|
||||
@successText: #468847;
|
||||
@successBackground: #dff0d8;
|
||||
@successBorder: darken(spin(@successBackground, -10), 5%);
|
||||
@state-danger-text: #b94a48;
|
||||
@state-danger-bg: #f2dede;
|
||||
@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);
|
||||
|
||||
@infoText: #3a87ad;
|
||||
@infoBackground: #d9edf7;
|
||||
@infoBorder: darken(spin(@infoBackground, -10), 7%);
|
||||
@state-success-text: #468847;
|
||||
@state-success-bg: #dff0d8;
|
||||
@state-success-border: darken(spin(@state-success-bg, -10), 5%);
|
||||
|
||||
@state-info-text: #3a87ad;
|
||||
@state-info-bg: #d9edf7;
|
||||
@state-info-border: darken(spin(@state-info-bg, -10), 7%);
|
||||
|
||||
|
||||
// Tooltips and popovers
|
||||
// Tooltips
|
||||
// -------------------------
|
||||
@tooltipColor: #fff;
|
||||
@tooltipBackground: #000;
|
||||
@tooltipArrowWidth: 5px;
|
||||
@tooltipArrowColor: @tooltipBackground;
|
||||
@tooltip-max-width: 200px;
|
||||
@tooltip-color: #fff;
|
||||
@tooltip-bg: rgba(0,0,0,.9);
|
||||
|
||||
@popoverBackground: #fff;
|
||||
@popoverArrowWidth: 10px;
|
||||
@popoverArrowColor: #fff;
|
||||
@popoverTitleBackground: darken(@popoverBackground, 3%);
|
||||
|
||||
// Special enhancement for popovers
|
||||
@popoverArrowOuterWidth: @popoverArrowWidth + 1;
|
||||
@popoverArrowOuterColor: rgba(0,0,0,.25);
|
||||
@tooltip-arrow-width: 5px;
|
||||
@tooltip-arrow-color: @tooltip-bg;
|
||||
|
||||
|
||||
// Popovers
|
||||
// -------------------------
|
||||
@popover-bg: #fff;
|
||||
@popover-max-width: 276px;
|
||||
@popover-border-color: rgba(0,0,0,.2);
|
||||
@popover-fallback-border-color: #ccc;
|
||||
|
||||
// GRID
|
||||
@popover-title-bg: darken(@popover-bg, 3%);
|
||||
|
||||
@popover-arrow-width: 10px;
|
||||
@popover-arrow-color: #fff;
|
||||
|
||||
@popover-arrow-outer-width: (@popover-arrow-width + 1);
|
||||
@popover-arrow-outer-color: rgba(0,0,0,.25);
|
||||
@popover-arrow-outer-fallback-color: #999;
|
||||
|
||||
|
||||
// Labels
|
||||
// -------------------------
|
||||
@label-success-bg: @brand-success;
|
||||
@label-info-bg: @brand-info;
|
||||
@label-warning-bg: @brand-warning;
|
||||
@label-danger-bg: @brand-danger;
|
||||
|
||||
@label-color: #fff;
|
||||
@label-link-hover-color: #fff;
|
||||
|
||||
|
||||
// Modals
|
||||
// -------------------------
|
||||
@modal-inner-padding: 20px;
|
||||
|
||||
@modal-title-padding: 15px;
|
||||
@modal-title-line-height: @line-height-base;
|
||||
|
||||
@modal-content-bg: #fff;
|
||||
@modal-content-border-color: rgba(0,0,0,.2);
|
||||
@modal-content-fallback-border-color: #999;
|
||||
|
||||
@modal-backdrop-bg: #000;
|
||||
@modal-header-border-color: #e5e5e5;
|
||||
@modal-footer-border-color: @modal-header-border-color;
|
||||
|
||||
|
||||
// Alerts
|
||||
// -------------------------
|
||||
@alert-bg: @state-warning-bg;
|
||||
@alert-text: @state-warning-text;
|
||||
@alert-border: @state-warning-border;
|
||||
@alert-border-radius: @border-radius-base;
|
||||
|
||||
@alert-success-bg: @state-success-bg;
|
||||
@alert-success-text: @state-success-text;
|
||||
@alert-success-border: @state-success-border;
|
||||
|
||||
@alert-danger-bg: @state-danger-bg;
|
||||
@alert-danger-text: @state-danger-text;
|
||||
@alert-danger-border: @state-danger-border;
|
||||
|
||||
@alert-info-bg: @state-info-bg;
|
||||
@alert-info-text: @state-info-text;
|
||||
@alert-info-border: @state-info-border;
|
||||
|
||||
|
||||
// Progress bars
|
||||
// -------------------------
|
||||
@progress-bg: #f5f5f5;
|
||||
@progress-bar-color: #fff;
|
||||
|
||||
@progress-bar-bg: @brand-primary;
|
||||
@progress-bar-success-bg: @brand-success;
|
||||
@progress-bar-warning-bg: @brand-warning;
|
||||
@progress-bar-danger-bg: @brand-danger;
|
||||
@progress-bar-info-bg: @brand-info;
|
||||
|
||||
|
||||
// List group
|
||||
// -------------------------
|
||||
@list-group-bg: #fff;
|
||||
@list-group-border: #ddd;
|
||||
@list-group-border-radius: @border-radius-base;
|
||||
|
||||
@list-group-hover-bg: #f5f5f5;
|
||||
@list-group-active-color: #fff;
|
||||
@list-group-active-bg: @component-active-bg;
|
||||
@list-group-active-border: @list-group-active-bg;
|
||||
|
||||
@list-group-link-color: #555;
|
||||
@list-group-link-heading-color: #333;
|
||||
|
||||
|
||||
// Panels
|
||||
// -------------------------
|
||||
@panel-bg: #fff;
|
||||
@panel-border: #ddd;
|
||||
@panel-border-radius: @border-radius-base;
|
||||
@panel-heading-bg: #f5f5f5;
|
||||
@panel-footer-bg: #f5f5f5;
|
||||
|
||||
@panel-primary-text: #fff;
|
||||
@panel-primary-border: @brand-primary;
|
||||
@panel-primary-heading-bg: @brand-primary;
|
||||
|
||||
@panel-success-text: @state-success-text;
|
||||
@panel-success-border: @state-success-border;
|
||||
@panel-success-heading-bg: @state-success-bg;
|
||||
|
||||
@panel-warning-text: @state-warning-text;
|
||||
@panel-warning-border: @state-warning-border;
|
||||
@panel-warning-heading-bg: @state-warning-bg;
|
||||
|
||||
@panel-danger-text: @state-danger-text;
|
||||
@panel-danger-border: @state-danger-border;
|
||||
@panel-danger-heading-bg: @state-danger-bg;
|
||||
|
||||
@panel-info-text: @state-info-text;
|
||||
@panel-info-border: @state-info-border;
|
||||
@panel-info-heading-bg: @state-info-bg;
|
||||
|
||||
|
||||
// Thumbnails
|
||||
// -------------------------
|
||||
@thumbnail-caption-color: @text-color;
|
||||
@thumbnail-bg: @body-bg;
|
||||
@thumbnail-border: #ddd;
|
||||
@thumbnail-border-radius: @border-radius-base;
|
||||
|
||||
|
||||
// Wells
|
||||
// -------------------------
|
||||
@well-bg: #f5f5f5;
|
||||
|
||||
|
||||
// Accordion
|
||||
// -------------------------
|
||||
@accordion-border-color: #e5e5e5;
|
||||
|
||||
|
||||
// Badges
|
||||
// -------------------------
|
||||
@badge-color: #fff;
|
||||
@badge-link-hover-color: #fff;
|
||||
|
||||
@badge-bg: @gray-light;
|
||||
@badge-active-color: @link-color;
|
||||
@badge-active-bg: #fff;
|
||||
|
||||
|
||||
// Breadcrumbs
|
||||
// -------------------------
|
||||
@breadcrumb-bg: #f5f5f5;
|
||||
@breadcrumb-color: #ccc;
|
||||
@breadcrumb-active-color: @gray-light;
|
||||
|
||||
|
||||
// Carousel
|
||||
// ------------------------
|
||||
@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
|
||||
|
||||
@carousel-control-color: #fff;
|
||||
|
||||
@carousel-indicator-border-color: #fff;
|
||||
@carousel-indicator-active-bg: #fff;
|
||||
|
||||
@carousel-caption-color: #fff;
|
||||
|
||||
|
||||
// Close
|
||||
// ------------------------
|
||||
@close-color: #000;
|
||||
@close-text-shadow: 0 1px 0 #fff;
|
||||
|
||||
|
||||
// Code
|
||||
// ------------------------
|
||||
@code-color: #c7254e;
|
||||
@code-bg: #f9f2f4;
|
||||
|
||||
@pre-bg: #f5f5f5;
|
||||
@pre-border-color: #ccc;
|
||||
|
||||
// Type
|
||||
// ------------------------
|
||||
@text-muted: @gray-light;
|
||||
@abbr-border-color: @gray-light;
|
||||
@headings-small-color: @gray-light;
|
||||
@blockquote-small-color: @gray-light;
|
||||
@blockquote-border-color: @gray-lighter;
|
||||
@page-header-border-color: @gray-lighter;
|
||||
|
||||
// Miscellaneous
|
||||
// -------------------------
|
||||
|
||||
// Hr border color
|
||||
@hr-border: @gray-lighter;
|
||||
|
||||
// Horizontal forms & lists
|
||||
@component-offset-horizontal: 180px;
|
||||
|
||||
|
||||
// Media queries breakpoints
|
||||
// --------------------------------------------------
|
||||
|
||||
// Tiny screen / phone
|
||||
@screen-tiny: 480px;
|
||||
@screen-phone: @screen-tiny;
|
||||
|
||||
// Default 940px grid
|
||||
// -------------------------
|
||||
@gridColumns: 12;
|
||||
@gridColumnWidth: 60px;
|
||||
@gridGutterWidth: 20px;
|
||||
@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
|
||||
// Small screen / tablet
|
||||
@screen-small: 768px;
|
||||
@screen-tablet: @screen-small;
|
||||
|
||||
// 1200px min
|
||||
@gridColumnWidth1200: 70px;
|
||||
@gridGutterWidth1200: 30px;
|
||||
@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));
|
||||
// Medium screen / desktop
|
||||
@screen-medium: 992px;
|
||||
@screen-desktop: @screen-medium;
|
||||
|
||||
// 768px-979px
|
||||
@gridColumnWidth768: 42px;
|
||||
@gridGutterWidth768: 20px;
|
||||
@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));
|
||||
// So media queries don't overlap when required, provide a maximum
|
||||
@screen-small-max: (@screen-medium - 1);
|
||||
@screen-tablet-max: @screen-small-max;
|
||||
|
||||
// Large screen / wide desktop
|
||||
@screen-large: 1200px;
|
||||
@screen-large-desktop: @screen-large;
|
||||
|
||||
|
||||
// Fluid grid
|
||||
// -------------------------
|
||||
@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth);
|
||||
@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth);
|
||||
// Container sizes
|
||||
// --------------------------------------------------
|
||||
|
||||
// 1200px min
|
||||
@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200);
|
||||
@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200);
|
||||
// Small screen / tablet
|
||||
@container-tablet: 728px;
|
||||
|
||||
// 768px-979px
|
||||
@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768);
|
||||
@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768);
|
||||
// Medium screen / desktop
|
||||
@container-desktop: 940px;
|
||||
|
||||
// Large screen / wide desktop
|
||||
@container-large-desktop: 1170px;
|
||||
|
||||
|
||||
// Grid system
|
||||
// --------------------------------------------------
|
||||
|
||||
// Number of columns in the grid system
|
||||
@grid-columns: 12;
|
||||
// Padding, to be divided by two and applied to the left and right of all columns
|
||||
@grid-gutter-width: 30px;
|
||||
// Point at which the navbar stops collapsing
|
||||
@grid-float-breakpoint: @screen-tablet;
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
min-height: 20px;
|
||||
padding: 19px;
|
||||
margin-bottom: 20px;
|
||||
background-color: @wellBackground;
|
||||
border: 1px solid darken(@wellBackground, 7%);
|
||||
.border-radius(@baseBorderRadius);
|
||||
background-color: @well-bg;
|
||||
border: 1px solid darken(@well-bg, 7%);
|
||||
border-radius: @border-radius-base;
|
||||
.box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
|
||||
blockquote {
|
||||
border-color: #ddd;
|
||||
@@ -21,9 +21,9 @@
|
||||
// Sizes
|
||||
.well-large {
|
||||
padding: 24px;
|
||||
.border-radius(@borderRadiusLarge);
|
||||
border-radius: @border-radius-large;
|
||||
}
|
||||
.well-small {
|
||||
padding: 9px;
|
||||
.border-radius(@borderRadiusSmall);
|
||||
border-radius: @border-radius-small;
|
||||
}
|
||||
|
||||
2
base.php
2
base.php
@@ -1,7 +1,7 @@
|
||||
<?php get_template_part('templates/head'); ?>
|
||||
<body <?php body_class(); ?>>
|
||||
|
||||
<!--[if lt IE 7]><div class="alert">Your browser is <em>ancient!</em> <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</div><![endif]-->
|
||||
<!--[if lt IE 7]><div class="alert"><?php _e('You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.', 'roots'); ?></div><![endif]-->
|
||||
|
||||
<?php
|
||||
do_action('get_header');
|
||||
|
||||
@@ -17,7 +17,7 @@ Change permalink structure to `/%postname%/`. This is normally handled from the
|
||||
|
||||
### Change uploads folder
|
||||
|
||||
Change uploads folder to `/assets/` instead of `/wp-content/uploads/`. This is normally handled from the Media settings.
|
||||
Change uploads folder to `/media/` instead of `/wp-content/uploads/`.
|
||||
|
||||
### Create navigation menu
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@ table of contents](TOC.md)
|
||||
|
||||
# Theme wrapper
|
||||
|
||||
The theme wrapper functionality is found in `lib/utils.php`. This code comes directly from [scribu's theme wrapper](http://scribu.net/wordpress/theme-wrappers.html) post.
|
||||
The theme wrapper functionality is found in `lib/wrapper.php`. This code comes directly from [scribu's theme wrapper](http://scribu.net/wordpress/theme-wrappers.html) post.
|
||||
|
||||
`base.php` is used to serve all of the templates for your site. In the theme root, the following files are only used to include files in the `templates/` directory, which contains all of the [theme templates](templates.md):
|
||||
`base.php` in the roots theme top level directory is used to serve all of the templates for your site. In the theme root, the following files are only used to include files in the `templates/` directory, which contains all of the [theme templates](templates.md):
|
||||
|
||||
1. `index.php` (archive page templates) includes `templates/content.php`
|
||||
2. `page.php` includes `templates/content-page.php`
|
||||
3. `single.php` includes `templates/content-single.php`
|
||||
|
||||
The [Template Hierarchy](http://codex.wordpress.org/Template_Hierarchy) is traversed as normal before the wrapper is loaded.
|
||||
The [Template Hierarchy](http://codex.wordpress.org/Template_Hierarchy) is traversed as normal before the wrapper is loaded.
|
||||
|
||||
@@ -4,13 +4,17 @@
|
||||
*/
|
||||
require_once locate_template('/lib/utils.php'); // Utility functions
|
||||
require_once locate_template('/lib/init.php'); // Initial theme setup and constants
|
||||
require_once locate_template('/lib/wrapper.php'); // Theme wrapper class
|
||||
require_once locate_template('/lib/sidebar.php'); // Sidebar class
|
||||
require_once locate_template('/lib/config.php'); // Configuration
|
||||
require_once locate_template('/lib/activation.php'); // Theme activation
|
||||
require_once locate_template('/lib/titles.php'); // Page titles
|
||||
require_once locate_template('/lib/cleanup.php'); // Cleanup
|
||||
require_once locate_template('/lib/nav.php'); // Custom nav modifications
|
||||
require_once locate_template('/lib/gallery.php'); // Custom [gallery] modifications
|
||||
require_once locate_template('/lib/comments.php'); // Custom comments modifications
|
||||
require_once locate_template('/lib/rewrites.php'); // URL rewriting for assets
|
||||
require_once locate_template('/lib/relative-urls.php'); // Root relative URLs
|
||||
require_once locate_template('/lib/widgets.php'); // Sidebars and widgets
|
||||
require_once locate_template('/lib/scripts.php'); // Scripts and stylesheets
|
||||
require_once locate_template('/lib/custom.php'); // Custom functions
|
||||
|
||||
BIN
lang/ms_MY.mo
BIN
lang/ms_MY.mo
Binary file not shown.
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Roots Bahasa Melayu\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-05-13 13:46+0800\n"
|
||||
"PO-Revision-Date: 2013-05-13 13:46+0800\n"
|
||||
"POT-Creation-Date: 2013-07-08 02:01+0800\n"
|
||||
"PO-Revision-Date: 2013-07-08 02:01+0800\n"
|
||||
"Last-Translator: Hariadi Hinta <diperakui@gmail.com>\n"
|
||||
"Language-Team: Hariadi Hinta <diperakui@gmail.com>\n"
|
||||
"Language: Bahasa Melayu\n"
|
||||
@@ -33,6 +33,15 @@ msgstr "salah taip alamat"
|
||||
msgid "an out-of-date link"
|
||||
msgstr "pautan tamat tempoh"
|
||||
|
||||
#: base.php:4
|
||||
msgid ""
|
||||
"You are using an <strong>outdated</strong> browser. Please <a href=\"http://"
|
||||
"browsehappy.com/\">upgrade your browser</a> to improve your experience."
|
||||
msgstr ""
|
||||
"Anda menggunakan <strong>pelayar ketinggalan zaman</ strong>. Sila <a href="
|
||||
"\"http://browsehappy.com/\">naik taraf pelayar anda</ a> untuk meningkatkan "
|
||||
"pengalaman anda."
|
||||
|
||||
#: index.php:5
|
||||
msgid "Sorry, no results were found."
|
||||
msgstr "Maaf, tiada keputusan ditemui."
|
||||
@@ -95,8 +104,8 @@ msgid "Update uploads folder?"
|
||||
msgstr "Kemaskini folder muat naik?"
|
||||
|
||||
#: lib/activation.php:96
|
||||
msgid "Change uploads folder to /assets/ instead of /wp-content/uploads/"
|
||||
msgstr "Tukar folder muat naik ke /assets/ berbanding /wp-content/uploads/"
|
||||
msgid "Change uploads folder to /media/ instead of /wp-content/uploads/"
|
||||
msgstr "Tukar folder muat naik ke /media/ berbanding /wp-content/uploads/"
|
||||
|
||||
#: lib/activation.php:101 lib/activation.php:103
|
||||
msgid "Create navigation menu?"
|
||||
@@ -114,7 +123,7 @@ msgstr "Tambah halaman ke menu?"
|
||||
msgid "Add all current published pages to the Primary Navigation"
|
||||
msgstr "Tambah semua halaman yang sudah diterbitkan ke Menu Utama"
|
||||
|
||||
#: lib/cleanup.php:358
|
||||
#: lib/cleanup.php:210
|
||||
msgid "Continued"
|
||||
msgstr "Teruskan"
|
||||
|
||||
@@ -122,42 +131,42 @@ msgstr "Teruskan"
|
||||
msgid "Primary Navigation"
|
||||
msgstr "Menu Utama"
|
||||
|
||||
#: lib/utils.php:60
|
||||
#: lib/titles.php:10
|
||||
msgid "Latest Posts"
|
||||
msgstr "Artikel Terbaru"
|
||||
|
||||
#: lib/utils.php:69
|
||||
#: lib/titles.php:19
|
||||
#, php-format
|
||||
msgid "Daily Archives: %s"
|
||||
msgstr "Arkib Harian: %s"
|
||||
|
||||
#: lib/utils.php:71
|
||||
#: lib/titles.php:21
|
||||
#, php-format
|
||||
msgid "Monthly Archives: %s"
|
||||
msgstr "Arkib Bulanan: %s"
|
||||
|
||||
#: lib/utils.php:73
|
||||
#: lib/titles.php:23
|
||||
#, php-format
|
||||
msgid "Yearly Archives: %s"
|
||||
msgstr "Arkib Tahunan: %s"
|
||||
|
||||
#: lib/utils.php:75
|
||||
#: lib/titles.php:26
|
||||
#, php-format
|
||||
msgid "Author Archives: %s"
|
||||
msgstr "Arkib Penulis: %s"
|
||||
|
||||
#: lib/utils.php:80
|
||||
#: lib/titles.php:31
|
||||
#, php-format
|
||||
msgid "Search Results for %s"
|
||||
msgstr "Hasil Carian untuk %s"
|
||||
|
||||
#: lib/utils.php:82
|
||||
#: lib/titles.php:33
|
||||
msgid "Not Found"
|
||||
msgstr "Tidak ditemui"
|
||||
|
||||
#: lib/widgets.php:8
|
||||
msgid "Primary Sidebar"
|
||||
msgstr "Sidebar Utama"
|
||||
msgid "Primary"
|
||||
msgstr "Utama"
|
||||
|
||||
#: lib/widgets.php:17
|
||||
msgid "Footer"
|
||||
|
||||
@@ -19,6 +19,10 @@ msgstr ""
|
||||
msgid "an out-of-date link"
|
||||
msgstr ""
|
||||
|
||||
#: base.php:4
|
||||
msgid "You are using an <strong>outdated</strong> browser. Please <a href=\"http://browsehappy.com/\">upgrade your browser</a> to improve your experience."
|
||||
msgstr ""
|
||||
|
||||
#: index.php:5
|
||||
msgid "Sorry, no results were found."
|
||||
msgstr ""
|
||||
@@ -31,73 +35,73 @@ msgstr ""
|
||||
msgid "Newer posts →"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:33 lib/activation.php:34
|
||||
#: lib/activation.php:28 lib/activation.php:29
|
||||
msgid "Theme Activation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:70
|
||||
#: lib/activation.php:51
|
||||
msgid "%s Theme Activation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:85 lib/activation.php:87
|
||||
#: lib/activation.php:62 lib/activation.php:64
|
||||
msgid "Create static front page?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:89 lib/activation.php:102 lib/activation.php:115
|
||||
#: lib/activation.php:128 lib/activation.php:141
|
||||
#: lib/activation.php:66 lib/activation.php:79 lib/activation.php:92
|
||||
#: lib/activation.php:105 lib/activation.php:118
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:90 lib/activation.php:103 lib/activation.php:116
|
||||
#: lib/activation.php:129 lib/activation.php:142
|
||||
#: lib/activation.php:67 lib/activation.php:80 lib/activation.php:93
|
||||
#: lib/activation.php:106 lib/activation.php:119
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:93
|
||||
#: lib/activation.php:70
|
||||
msgid "Create a page called Home and set it to be the static front page"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:98
|
||||
#: lib/activation.php:75
|
||||
msgid "Change permalink structure?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:100
|
||||
#: lib/activation.php:77
|
||||
msgid "Update permalink structure?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:106
|
||||
#: lib/activation.php:83
|
||||
msgid "Change permalink structure to /%postname%/"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:111
|
||||
#: lib/activation.php:88
|
||||
msgid "Change uploads folder?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:113
|
||||
#: lib/activation.php:90
|
||||
msgid "Update uploads folder?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:119
|
||||
msgid "Change uploads folder to /assets/ instead of /wp-content/uploads/"
|
||||
#: lib/activation.php:96
|
||||
msgid "Change uploads folder to /media/ instead of /wp-content/uploads/"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:124 lib/activation.php:126
|
||||
#: lib/activation.php:101 lib/activation.php:103
|
||||
msgid "Create navigation menu?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:132
|
||||
#: lib/activation.php:109
|
||||
msgid "Create the Primary Navigation menu and set the location"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:137 lib/activation.php:139
|
||||
#: lib/activation.php:114 lib/activation.php:116
|
||||
msgid "Add pages to menu?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/activation.php:145
|
||||
#: lib/activation.php:122
|
||||
msgid "Add all current published pages to the Primary Navigation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cleanup.php:382
|
||||
#: lib/cleanup.php:210
|
||||
msgid "Continued"
|
||||
msgstr ""
|
||||
|
||||
@@ -105,40 +109,36 @@ msgstr ""
|
||||
msgid "Primary Navigation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:60
|
||||
#: lib/titles.php:10
|
||||
msgid "Latest Posts"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:69
|
||||
#: lib/titles.php:19
|
||||
msgid "Daily Archives: %s"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:71
|
||||
#: lib/titles.php:21
|
||||
msgid "Monthly Archives: %s"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:73
|
||||
#: lib/titles.php:23
|
||||
msgid "Yearly Archives: %s"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:75
|
||||
#: lib/titles.php:26
|
||||
msgid "Author Archives: %s"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:80
|
||||
#: lib/titles.php:31
|
||||
msgid "Search Results for %s"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:82
|
||||
#: lib/titles.php:33
|
||||
msgid "Not Found"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils.php:94
|
||||
msgid "Please make sure your <a href=\"%s\">.htaccess</a> file is writable "
|
||||
msgstr ""
|
||||
|
||||
#: lib/widgets.php:8
|
||||
msgid "Primary Sidebar"
|
||||
msgid "Primary"
|
||||
msgstr ""
|
||||
|
||||
#: lib/widgets.php:17
|
||||
|
||||
BIN
lang/ru_RU.mo
BIN
lang/ru_RU.mo
Binary file not shown.
219
lang/ru_RU.po
219
lang/ru_RU.po
@@ -1,170 +1,153 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: roots-russian\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2013-03-01 21:19+0400\n"
|
||||
"Last-Translator: Fedor Sumkin <qosys.net@gmai.com>\n"
|
||||
"Language-Team: Fedor Sumkin <qosys.net@gmail.com>\n"
|
||||
"Language: ru_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11) ? 0 : ((n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20)) ? 1 : 2);\n"
|
||||
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"X-Generator: Poedit 1.5.5\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Project-Id-Version: Roots Theme 6.4.0\n"
|
||||
"PO-Revision-Date: 2013-07-05 01:16+0400\n"
|
||||
"Last-Translator: Di M Dub <zensimilia@gmai.com>\n"
|
||||
"Language-Team: Fedor Sumkin <qosys.net@gmail.com>, Di M Dub <zensimilia@gmai.com>\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11) ? 0 : ((n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20)) ? 1 : 2);\n"
|
||||
|
||||
#: 404.php:5
|
||||
msgid ""
|
||||
"The page you are looking for might have been removed, had its name changed, "
|
||||
"or is temporarily unavailable."
|
||||
msgstr ""
|
||||
"Страница, которую вы ищете, возможно, была удалена, переименована, или она "
|
||||
"временно недоступна."
|
||||
#: 404.php:4
|
||||
msgid "Sorry, but the page you were trying to view does not exist."
|
||||
msgstr "Извините, но страница, которую вы пытаетесь просмотреть, не существует."
|
||||
|
||||
#: 404.php:8
|
||||
msgid "Please try the following:"
|
||||
msgstr "Пожалуйста, попробуйте следующее:"
|
||||
#: 404.php:7
|
||||
msgid "It looks like this was the result of either:"
|
||||
msgstr "Похоже, результатом этого могло служить:"
|
||||
|
||||
#: 404.php:9
|
||||
msgid "a mistyped address"
|
||||
msgstr "опечатка в адресе"
|
||||
|
||||
#: 404.php:10
|
||||
msgid "Check your spelling"
|
||||
msgstr "Проверьте правописание"
|
||||
msgid "an out-of-date link"
|
||||
msgstr "устаревшая ссылка"
|
||||
|
||||
#: 404.php:11
|
||||
msgid "Return to the <a href=\"%s\">home page</a>"
|
||||
msgstr "Вернуться на <a href=\"%s\">главную страницу</a>"
|
||||
#: base.php:4
|
||||
msgid "You are using an <strong>outdated</strong> browser. Please <a href=\"http://browsehappy.com/\">upgrade your browser</a> to improve your experience."
|
||||
msgstr "Вы используете <strong>устаревший</strong> браузер. Пожалуйста <a href=\"http://browsehappy.com/\">обновите свой браузер</a> для комфортной работы в интернете."
|
||||
|
||||
#: 404.php:12
|
||||
msgid "Click the <a href=\"javascript:history.back()\">Back</a> button"
|
||||
msgstr "Нажмите на кнопку <a href=\"javascript:history.back()\">назад</a>"
|
||||
#: lib/titles.php:33
|
||||
msgid "Not Found"
|
||||
msgstr "Страница не найдена"
|
||||
|
||||
#: lib/activation.php:31 lib/activation.php:32
|
||||
#: lib/activation.php:28 lib/activation.php:29
|
||||
msgid "Theme Activation"
|
||||
msgstr "Активация темы"
|
||||
|
||||
#: lib/activation.php:68
|
||||
#: lib/activation.php:51
|
||||
msgid "%s Theme Activation"
|
||||
msgstr "%s Активация темы"
|
||||
msgstr "%s активация темы"
|
||||
|
||||
#: lib/activation.php:83 lib/activation.php:85
|
||||
#: lib/activation.php:62 lib/activation.php:64
|
||||
msgid "Create static front page?"
|
||||
msgstr "Создать статичную первую страницу?"
|
||||
msgstr "Создать статичную главную страницу?"
|
||||
|
||||
#: lib/activation.php:87 lib/activation.php:100 lib/activation.php:113
|
||||
#: lib/activation.php:126 lib/activation.php:139
|
||||
#: lib/activation.php:66 lib/activation.php:79 lib/activation.php:92
|
||||
#: lib/activation.php:105 lib/activation.php:118
|
||||
msgid "Yes"
|
||||
msgstr "Да"
|
||||
|
||||
#: lib/activation.php:88 lib/activation.php:101 lib/activation.php:114
|
||||
#: lib/activation.php:127 lib/activation.php:140
|
||||
#: lib/activation.php:67 lib/activation.php:80 lib/activation.php:93
|
||||
#: lib/activation.php:106 lib/activation.php:119
|
||||
msgid "No"
|
||||
msgstr "Нет"
|
||||
|
||||
#: lib/activation.php:91
|
||||
#: lib/activation.php:70
|
||||
msgid "Create a page called Home and set it to be the static front page"
|
||||
msgstr "Создать страницу Home и установить её как статичную первую страницу"
|
||||
msgstr "Создать страницу Home и установить её как статичную главную страницу"
|
||||
|
||||
#: lib/activation.php:96
|
||||
#: lib/activation.php:75
|
||||
msgid "Change permalink structure?"
|
||||
msgstr "Изменить структуру постоянных ссылок?"
|
||||
|
||||
#: lib/activation.php:98
|
||||
#: lib/activation.php:77
|
||||
msgid "Update permalink structure?"
|
||||
msgstr "Обновить структуру постоянных ссылок?"
|
||||
|
||||
#: lib/activation.php:104
|
||||
#: lib/activation.php:83
|
||||
msgid "Change permalink structure to /%postname%/"
|
||||
msgstr "Изменение структуры постоянных ссылок на /%postname%/"
|
||||
msgstr "Изменить структуру постоянных ссылок на /%postname%/"
|
||||
|
||||
#: lib/activation.php:109
|
||||
#: lib/activation.php:88
|
||||
msgid "Change uploads folder?"
|
||||
msgstr "Изменить папку загрузки?"
|
||||
msgstr "Изменить папку для загрузок?"
|
||||
|
||||
#: lib/activation.php:111
|
||||
#: lib/activation.php:90
|
||||
msgid "Update uploads folder?"
|
||||
msgstr "Обновить папку загрузки?"
|
||||
msgstr "Обновить папку для загрузок?"
|
||||
|
||||
#: lib/activation.php:117
|
||||
msgid "Change uploads folder to /assets/ instead of /wp-content/uploads/"
|
||||
msgstr "Поменять папку загрузки на /assets/ с /wp-content/uploads/"
|
||||
#: lib/activation.php:96
|
||||
msgid "Change uploads folder to /media/ instead of /wp-content/uploads/"
|
||||
msgstr "Поменять папку для загрузок на /media/ с /wp-content/uploads/"
|
||||
|
||||
#: lib/activation.php:122 lib/activation.php:124
|
||||
#: lib/activation.php:101 lib/activation.php:103
|
||||
msgid "Create navigation menu?"
|
||||
msgstr "Создать меню навигации?"
|
||||
|
||||
#: lib/activation.php:130
|
||||
#: lib/activation.php:109
|
||||
msgid "Create the Primary Navigation menu and set the location"
|
||||
msgstr "Создать меню навигации Primary Navigation"
|
||||
|
||||
#: lib/activation.php:135 lib/activation.php:137
|
||||
#: lib/activation.php:114 lib/activation.php:116
|
||||
msgid "Add pages to menu?"
|
||||
msgstr "Добавить страницу в меню?"
|
||||
msgstr "Добавить страницы в меню?"
|
||||
|
||||
#: lib/activation.php:143
|
||||
#: lib/activation.php:122
|
||||
msgid "Add all current published pages to the Primary Navigation"
|
||||
msgstr ""
|
||||
"Добавить все опубликованные страницы в меню навигации Primary Navigation"
|
||||
msgstr "Добавить все опубликованные страницы в меню навигации Primary Navigation"
|
||||
|
||||
#: lib/cleanup.php:388
|
||||
#: lib/cleanup.php:210
|
||||
msgid "Continued"
|
||||
msgstr "Читать дальше"
|
||||
msgstr "Читать далее"
|
||||
|
||||
#: lib/htaccess.php:25
|
||||
msgid "Please make sure your <a href=\"%s\">.htaccess</a> file is writable "
|
||||
msgstr "Убедитесь, что файл <a href=\"%s\">.htaccess</a> доступен для записи"
|
||||
|
||||
#: lib/init.php:13
|
||||
#: lib/init.php:11
|
||||
msgid "Primary Navigation"
|
||||
msgstr "Основная Навигация"
|
||||
|
||||
#: lib/utils.php:14
|
||||
#: lib/titles.php:10
|
||||
msgid "Latest Posts"
|
||||
msgstr "Последние новости"
|
||||
msgstr "Последние записи"
|
||||
|
||||
#: lib/utils.php:23
|
||||
#: lib/titles.php:19
|
||||
msgid "Daily Archives: %s"
|
||||
msgstr "Архив за день: %s"
|
||||
|
||||
#: lib/utils.php:25
|
||||
#: lib/titles.php:21
|
||||
msgid "Monthly Archives: %s"
|
||||
msgstr "Архив за месяц: %s"
|
||||
|
||||
#: lib/utils.php:27
|
||||
#: lib/titles.php:23
|
||||
msgid "Yearly Archives: %s"
|
||||
msgstr "Архив за год: %s"
|
||||
|
||||
#: lib/utils.php:31
|
||||
#: lib/titles.php:26
|
||||
msgid "Author Archives: %s"
|
||||
msgstr "Архив автора: %s"
|
||||
|
||||
#: lib/utils.php:36
|
||||
#: lib/titles.php:31
|
||||
msgid "Search Results for %s"
|
||||
msgstr "Результаты поиска %s"
|
||||
|
||||
#: lib/utils.php:38
|
||||
msgid "File Not Found"
|
||||
msgstr "Файл не найден"
|
||||
|
||||
#: lib/widgets.php:6
|
||||
msgid "Primary Sidebar"
|
||||
#: lib/widgets.php:8
|
||||
msgid "Primary"
|
||||
msgstr "Первичная боковая панель"
|
||||
|
||||
#: lib/widgets.php:15
|
||||
msgid "Footer"
|
||||
msgstr "Футер"
|
||||
|
||||
#: lib/widgets.php:41
|
||||
#: lib/widgets.php:45
|
||||
msgid "Use this widget to add a vCard"
|
||||
msgstr "Используйте этот виджет для добавления vCard"
|
||||
|
||||
#: lib/widgets.php:43
|
||||
#: lib/widgets.php:47
|
||||
msgid "Roots: vCard"
|
||||
msgstr ""
|
||||
|
||||
#: lib/widgets.php:70
|
||||
#: lib/widgets.php:74
|
||||
msgid "vCard"
|
||||
msgstr ""
|
||||
|
||||
@@ -186,15 +169,14 @@ msgstr "Ваш комментарий ожидает модерации."
|
||||
|
||||
#: templates/comments.php:32
|
||||
msgid "This post is password protected. Enter the password to view comments."
|
||||
msgstr ""
|
||||
"Это сообщение защищено паролем. Введите пароль для просмотра комментариев."
|
||||
msgstr "Эта запись защищена паролем. Введите пароль для просмотра комментариев."
|
||||
|
||||
#: templates/comments.php:39
|
||||
msgid "One Response to “%2$s”"
|
||||
msgid_plural "%1$s Responses to “%2$s”"
|
||||
msgstr[0] "Один ответ к “%2$s”"
|
||||
msgstr[1] "%1$s ответа к “%2$s”"
|
||||
msgstr[2] "%1$s ответов к “%2$s”"
|
||||
msgstr[0] "Один комментарий к “%2$s”"
|
||||
msgstr[1] "%1$s комментария к “%2$s”"
|
||||
msgstr[2] "%1$s комментариев к “%2$s”"
|
||||
|
||||
#: templates/comments.php:49 templates/comments.php:51
|
||||
msgid "← Older comments"
|
||||
@@ -230,7 +212,7 @@ msgstr "Выход из этой учетной записи"
|
||||
|
||||
#: templates/comments.php:90
|
||||
msgid "Log out »"
|
||||
msgstr "Выйдите из системы »"
|
||||
msgstr "Выйдите из системы »"
|
||||
|
||||
#: templates/comments.php:92
|
||||
msgid "Name"
|
||||
@@ -242,7 +224,7 @@ msgstr " (необходимо)"
|
||||
|
||||
#: templates/comments.php:94
|
||||
msgid "Email (will not be published)"
|
||||
msgstr "E-mail (не публикуется)"
|
||||
msgstr "Email (не публикуется)"
|
||||
|
||||
#: templates/comments.php:96
|
||||
msgid "Website"
|
||||
@@ -254,31 +236,27 @@ msgstr "Комментарий"
|
||||
|
||||
#: templates/comments.php:101
|
||||
msgid "Submit Comment"
|
||||
msgstr "Добавить комментарий"
|
||||
msgstr "Отправить комментарий"
|
||||
|
||||
#: templates/content-single.php:11
|
||||
msgid "Pages:"
|
||||
msgstr "Страницы:"
|
||||
|
||||
#: templates/content.php:4
|
||||
#: index.php:5
|
||||
msgid "Sorry, no results were found."
|
||||
msgstr "Извините, ничего не найдено."
|
||||
|
||||
#: templates/content.php:28 templates/content.php:30
|
||||
#: index.php:17
|
||||
msgid "← Older posts"
|
||||
msgstr "← Предыдущие сообщения"
|
||||
msgstr "← Предыдущие записи"
|
||||
|
||||
#: templates/content.php:33 templates/content.php:35
|
||||
#: index.php:18
|
||||
msgid "Newer posts →"
|
||||
msgstr "Новые сообщения →"
|
||||
|
||||
#: templates/entry-meta.php:1
|
||||
msgid "Posted on %s at %s."
|
||||
msgstr "Опубликовано %s в %s."
|
||||
msgstr "Новые записи →"
|
||||
|
||||
#: templates/entry-meta.php:2
|
||||
msgid "Written by"
|
||||
msgstr "Написано"
|
||||
msgid "By"
|
||||
msgstr "Опубликовано"
|
||||
|
||||
#: templates/searchform.php:2
|
||||
msgid "Search for:"
|
||||
@@ -288,30 +266,23 @@ msgstr "Поиск:"
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Please update your <a href=\"%s\">site tagline</a> <a href=\"%s\" style="
|
||||
#~ "\"float: right;\">Hide Notice</a>"
|
||||
#~ msgstr ""
|
||||
#~ "Пожалуйста, обновите ваш <a href=\"%s\">лозунг для сайта</ a> <a href=\"%s"
|
||||
#~ "\" style=\"float: right;\">Скрыть замечание</a>"
|
||||
#~ msgid "Title (optional)"
|
||||
#~ msgstr "Заголовок (необязательно)"
|
||||
|
||||
#~ msgid "Title (optional):"
|
||||
#~ msgstr "Заголовок (необязательно):"
|
||||
#~ msgid "Street Address"
|
||||
#~ msgstr "Адрес"
|
||||
|
||||
#~ msgid "Street Address:"
|
||||
#~ msgstr "Адрес:"
|
||||
#~ msgid "City/Locality"
|
||||
#~ msgstr "Город/Населенный пункт"
|
||||
|
||||
#~ msgid "City/Locality:"
|
||||
#~ msgstr "Город/Населенный пункт:"
|
||||
#~ msgid "State/Region"
|
||||
#~ msgstr "Штат/Область"
|
||||
|
||||
#~ msgid "State/Region:"
|
||||
#~ msgstr "Штат/Регион:"
|
||||
#~ msgid "Zipcode/Postal Code"
|
||||
#~ msgstr "Почтовый индекс"
|
||||
|
||||
#~ msgid "Zipcode/Postal Code:"
|
||||
#~ msgstr "Почтовый индекс:"
|
||||
#~ msgid "Telephone"
|
||||
#~ msgstr "Телефон"
|
||||
|
||||
#~ msgid "Telephone:"
|
||||
#~ msgstr "Телефон:"
|
||||
|
||||
#~ msgid "Email:"
|
||||
#~ msgstr "Электронная почта:"
|
||||
#~ msgid "Email"
|
||||
#~ msgstr "Электронная почта"
|
||||
|
||||
@@ -93,7 +93,7 @@ function roots_theme_activation_options_render_page() { ?>
|
||||
<option value="false"><?php echo _e('No', 'roots'); ?></option>
|
||||
</select>
|
||||
<br>
|
||||
<small class="description"><?php printf(__('Change uploads folder to /assets/ instead of /wp-content/uploads/', 'roots')); ?></small>
|
||||
<small class="description"><?php printf(__('Change uploads folder to /media/ instead of /wp-content/uploads/', 'roots')); ?></small>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -191,7 +191,7 @@ function roots_theme_activation_action() {
|
||||
|
||||
update_option('uploads_use_yearmonth_folders', 0);
|
||||
if (!is_multisite()) {
|
||||
update_option('upload_path', 'assets');
|
||||
update_option('upload_path', 'media');
|
||||
} else {
|
||||
update_option('upload_path', '');
|
||||
}
|
||||
|
||||
169
lib/cleanup.php
169
lib/cleanup.php
@@ -20,8 +20,6 @@ function roots_head_cleanup() {
|
||||
global $wp_widget_factory;
|
||||
remove_action('wp_head', array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style'));
|
||||
|
||||
add_filter('use_default_gallery_style', '__return_null');
|
||||
|
||||
if (!class_exists('WPSEO_Frontend')) {
|
||||
remove_action('wp_head', 'rel_canonical');
|
||||
add_action('wp_head', 'roots_rel_canonical');
|
||||
@@ -126,54 +124,6 @@ function roots_body_class($classes) {
|
||||
}
|
||||
add_filter('body_class', 'roots_body_class');
|
||||
|
||||
/**
|
||||
* Root relative URLs
|
||||
*
|
||||
* WordPress likes to use absolute URLs on everything - let's clean that up.
|
||||
* Inspired by http://www.456bereastreet.com/archive/201010/how_to_make_wordpress_urls_root_relative/
|
||||
*
|
||||
* You can enable/disable this feature in config.php:
|
||||
* current_theme_supports('root-relative-urls');
|
||||
*
|
||||
* @author Scott Walkinshaw <scott.walkinshaw@gmail.com>
|
||||
*/
|
||||
function roots_root_relative_url($input) {
|
||||
preg_match('|https?://([^/]+)(/.*)|i', $input, $matches);
|
||||
|
||||
if (isset($matches[1]) && isset($matches[2]) && $matches[1] === $_SERVER['SERVER_NAME']) {
|
||||
return wp_make_link_relative($input);
|
||||
} else {
|
||||
return $input;
|
||||
}
|
||||
}
|
||||
|
||||
function roots_enable_root_relative_urls() {
|
||||
return !(is_admin() || in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'))) && current_theme_supports('root-relative-urls');
|
||||
}
|
||||
|
||||
if (roots_enable_root_relative_urls()) {
|
||||
$root_rel_filters = array(
|
||||
'bloginfo_url',
|
||||
'the_permalink',
|
||||
'wp_list_pages',
|
||||
'wp_list_categories',
|
||||
'roots_wp_nav_menu_item',
|
||||
'the_content_more_link',
|
||||
'the_tags',
|
||||
'get_pagenum_link',
|
||||
'get_comment_link',
|
||||
'month_link',
|
||||
'day_link',
|
||||
'year_link',
|
||||
'tag_link',
|
||||
'the_author_posts_link',
|
||||
'script_loader_src',
|
||||
'style_loader_src'
|
||||
);
|
||||
|
||||
add_filters($root_rel_filters, 'roots_root_relative_url');
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrap embedded media as suggested by Readability
|
||||
*
|
||||
@@ -185,16 +135,6 @@ function roots_embed_wrap($cache, $url, $attr = '', $post_ID = '') {
|
||||
}
|
||||
add_filter('embed_oembed_html', 'roots_embed_wrap', 10, 4);
|
||||
|
||||
/**
|
||||
* Add class="thumbnail" to attachment items
|
||||
*/
|
||||
function roots_attachment_link_class($html) {
|
||||
$postid = get_the_ID();
|
||||
$html = str_replace('<a', '<a class="thumbnail"', $html);
|
||||
return $html;
|
||||
}
|
||||
add_filter('wp_get_attachment_link', 'roots_attachment_link_class', 10, 1);
|
||||
|
||||
/**
|
||||
* Add Bootstrap thumbnail styling to images with captions
|
||||
* Use <figure> and <figcaption>
|
||||
@@ -234,105 +174,6 @@ function roots_caption($output, $attr, $content) {
|
||||
}
|
||||
add_filter('img_caption_shortcode', 'roots_caption', 10, 3);
|
||||
|
||||
/**
|
||||
* Clean up gallery_shortcode()
|
||||
*
|
||||
* Re-create the [gallery] shortcode and use thumbnails styling from Bootstrap
|
||||
*
|
||||
* @link http://twitter.github.com/bootstrap/components.html#thumbnails
|
||||
*/
|
||||
function roots_gallery($attr) {
|
||||
$post = get_post();
|
||||
|
||||
static $instance = 0;
|
||||
$instance++;
|
||||
|
||||
if (!empty($attr['ids'])) {
|
||||
if (empty($attr['orderby'])) {
|
||||
$attr['orderby'] = 'post__in';
|
||||
}
|
||||
$attr['include'] = $attr['ids'];
|
||||
}
|
||||
|
||||
$output = apply_filters('post_gallery', '', $attr);
|
||||
|
||||
if ($output != '') {
|
||||
return $output;
|
||||
}
|
||||
|
||||
if (isset($attr['orderby'])) {
|
||||
$attr['orderby'] = sanitize_sql_orderby($attr['orderby']);
|
||||
if (!$attr['orderby']) {
|
||||
unset($attr['orderby']);
|
||||
}
|
||||
}
|
||||
|
||||
extract(shortcode_atts(array(
|
||||
'order' => 'ASC',
|
||||
'orderby' => 'menu_order ID',
|
||||
'id' => $post->ID,
|
||||
'itemtag' => '',
|
||||
'icontag' => '',
|
||||
'captiontag' => '',
|
||||
'columns' => 3,
|
||||
'size' => 'thumbnail',
|
||||
'include' => '',
|
||||
'exclude' => ''
|
||||
), $attr));
|
||||
|
||||
$id = intval($id);
|
||||
|
||||
if ($order === 'RAND') {
|
||||
$orderby = 'none';
|
||||
}
|
||||
|
||||
if (!empty($include)) {
|
||||
$_attachments = get_posts(array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
|
||||
|
||||
$attachments = array();
|
||||
foreach ($_attachments as $key => $val) {
|
||||
$attachments[$val->ID] = $_attachments[$key];
|
||||
}
|
||||
} elseif (!empty($exclude)) {
|
||||
$attachments = get_children(array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
|
||||
} else {
|
||||
$attachments = get_children(array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
|
||||
}
|
||||
|
||||
if (empty($attachments)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (is_feed()) {
|
||||
$output = "\n";
|
||||
foreach ($attachments as $att_id => $attachment) {
|
||||
$output .= wp_get_attachment_link($att_id, $size, true) . "\n";
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
$output = '<ul class="thumbnails gallery">';
|
||||
|
||||
$i = 0;
|
||||
foreach ($attachments as $id => $attachment) {
|
||||
$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
|
||||
|
||||
$output .= '<li>' . $link;
|
||||
if (trim($attachment->post_excerpt)) {
|
||||
$output .= '<div class="caption hidden">' . wptexturize($attachment->post_excerpt) . '</div>';
|
||||
}
|
||||
$output .= '</li>';
|
||||
}
|
||||
|
||||
$output .= '</ul>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
if (current_theme_supports('bootstrap-gallery')) {
|
||||
remove_shortcode('gallery');
|
||||
add_shortcode('gallery', 'roots_gallery');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove unnecessary dashboard widgets
|
||||
*
|
||||
@@ -415,11 +256,11 @@ function roots_request_filter($query_vars) {
|
||||
add_filter('request', 'roots_request_filter');
|
||||
|
||||
/**
|
||||
* Tell WordPress to use searchform.php from the templates/ directory
|
||||
* Tell WordPress to use searchform.php from the templates/ directory. Requires WordPress 3.6+
|
||||
*/
|
||||
function roots_get_search_form($argument) {
|
||||
if ($argument === '') {
|
||||
locate_template('/templates/searchform.php', true, false);
|
||||
}
|
||||
function roots_get_search_form($form) {
|
||||
$form = '';
|
||||
locate_template('/templates/searchform.php', true, false);
|
||||
return $form;
|
||||
}
|
||||
add_filter('get_search_form', 'roots_get_search_form');
|
||||
|
||||
@@ -16,7 +16,7 @@ class Roots_Walker_Comment extends Walker_Comment {
|
||||
echo '</ul>';
|
||||
}
|
||||
|
||||
function start_el(&$output, $comment, $depth, $args, $id = 0) {
|
||||
function start_el(&$output, $comment, $depth = 0, $args = array(), $id = 0) {
|
||||
$depth++;
|
||||
$GLOBALS['comment_depth'] = $depth;
|
||||
$GLOBALS['comment'] = $comment;
|
||||
|
||||
@@ -21,10 +21,10 @@ define('POST_EXCERPT_LENGTH', 40);
|
||||
function roots_main_class() {
|
||||
if (roots_display_sidebar()) {
|
||||
// Classes on pages with the sidebar
|
||||
$class = 'span8';
|
||||
$class = 'col-sm-8 col-lg-8';
|
||||
} else {
|
||||
// Classes on full width pages
|
||||
$class = 'span12';
|
||||
$class = 'col-lg-12';
|
||||
}
|
||||
|
||||
return $class;
|
||||
@@ -34,7 +34,7 @@ function roots_main_class() {
|
||||
* .sidebar classes
|
||||
*/
|
||||
function roots_sidebar_class() {
|
||||
return 'span4';
|
||||
return 'col-sm-4 col-lg-4';
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,3 +78,13 @@ function roots_display_sidebar() {
|
||||
* Default: 940px is the default Bootstrap container width.
|
||||
*/
|
||||
if (!isset($content_width)) { $content_width = 940; }
|
||||
|
||||
/**
|
||||
* Define helper constants
|
||||
*/
|
||||
$get_theme_name = explode('/themes/', get_template_directory());
|
||||
|
||||
define('RELATIVE_PLUGIN_PATH', str_replace(home_url() . '/', '', plugins_url()));
|
||||
define('RELATIVE_CONTENT_PATH', str_replace(home_url() . '/', '', content_url()));
|
||||
define('THEME_NAME', next($get_theme_name));
|
||||
define('THEME_PATH', RELATIVE_CONTENT_PATH . '/themes/' . THEME_NAME);
|
||||
|
||||
120
lib/gallery.php
Normal file
120
lib/gallery.php
Normal file
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
/**
|
||||
* Clean up gallery_shortcode()
|
||||
*
|
||||
* Re-create the [gallery] shortcode and use thumbnails styling from Bootstrap
|
||||
* The number of columns must be a factor of 12.
|
||||
*
|
||||
* @link http://twbs.github.io/bootstrap/components/#thumbnails
|
||||
*/
|
||||
function roots_gallery($attr) {
|
||||
$post = get_post();
|
||||
|
||||
static $instance = 0;
|
||||
$instance++;
|
||||
|
||||
if (!empty($attr['ids'])) {
|
||||
if (empty($attr['orderby'])) {
|
||||
$attr['orderby'] = 'post__in';
|
||||
}
|
||||
$attr['include'] = $attr['ids'];
|
||||
}
|
||||
|
||||
$output = apply_filters('post_gallery', '', $attr);
|
||||
|
||||
if ($output != '') {
|
||||
return $output;
|
||||
}
|
||||
|
||||
if (isset($attr['orderby'])) {
|
||||
$attr['orderby'] = sanitize_sql_orderby($attr['orderby']);
|
||||
if (!$attr['orderby']) {
|
||||
unset($attr['orderby']);
|
||||
}
|
||||
}
|
||||
|
||||
extract(shortcode_atts(array(
|
||||
'order' => 'ASC',
|
||||
'orderby' => 'menu_order ID',
|
||||
'id' => $post->ID,
|
||||
'itemtag' => '',
|
||||
'icontag' => '',
|
||||
'captiontag' => '',
|
||||
'columns' => 4,
|
||||
'size' => 'thumbnail',
|
||||
'include' => '',
|
||||
'exclude' => '',
|
||||
'link' => 'file'
|
||||
), $attr));
|
||||
|
||||
$id = intval($id);
|
||||
$columns = (12 % $columns == 0) ? $columns: 4;
|
||||
$grid = sprintf('col-sm-%1$s col-lg-%1$s', 12/$columns);
|
||||
|
||||
if ($order === 'RAND') {
|
||||
$orderby = 'none';
|
||||
}
|
||||
|
||||
if (!empty($include)) {
|
||||
$_attachments = get_posts(array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
|
||||
|
||||
$attachments = array();
|
||||
foreach ($_attachments as $key => $val) {
|
||||
$attachments[$val->ID] = $_attachments[$key];
|
||||
}
|
||||
} elseif (!empty($exclude)) {
|
||||
$attachments = get_children(array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
|
||||
} else {
|
||||
$attachments = get_children(array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
|
||||
}
|
||||
|
||||
if (empty($attachments)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (is_feed()) {
|
||||
$output = "\n";
|
||||
foreach ($attachments as $att_id => $attachment) {
|
||||
$output .= wp_get_attachment_link($att_id, $size, true) . "\n";
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
$unique = (get_query_var('page')) ? $instance . '-p' . get_query_var('page'): $instance;
|
||||
$output = '<div class="gallery gallery-' . $id . '-' . $unique . '">';
|
||||
|
||||
$i = 0;
|
||||
foreach ($attachments as $id => $attachment) {
|
||||
$image = ('file' == $link) ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
|
||||
$output .= ($i % $columns == 0) ? '<div class="row gallery-row">': '';
|
||||
$output .= '<div class="' . $grid .'">' . $image;
|
||||
|
||||
if (trim($attachment->post_excerpt)) {
|
||||
$output .= '<div class="caption hidden">' . wptexturize($attachment->post_excerpt) . '</div>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$i++;
|
||||
$output .= ($i % $columns == 0) ? '</div>' : '';
|
||||
}
|
||||
|
||||
$output .= ($i % $columns != 0 ) ? '</div>' : '';
|
||||
$output .= '</div>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
if (current_theme_supports('bootstrap-gallery')) {
|
||||
remove_shortcode('gallery');
|
||||
add_shortcode('gallery', 'roots_gallery');
|
||||
add_filter('use_default_gallery_style', '__return_null');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add class="thumbnail img-thumbnail" to attachment items
|
||||
*/
|
||||
function roots_attachment_link_class($html) {
|
||||
$postid = get_the_ID();
|
||||
$html = str_replace('<a', '<a class="thumbnail img-thumbnail"', $html);
|
||||
return $html;
|
||||
}
|
||||
add_filter('wp_get_attachment_link', 'roots_attachment_link_class', 10, 1);
|
||||
@@ -26,11 +26,3 @@ add_action('after_setup_theme', 'roots_setup');
|
||||
|
||||
// Backwards compatibility for older than PHP 5.3.0
|
||||
if (!defined('__DIR__')) { define('__DIR__', dirname(__FILE__)); }
|
||||
|
||||
// Define helper constants
|
||||
$get_theme_name = explode('/themes/', get_template_directory());
|
||||
|
||||
define('RELATIVE_PLUGIN_PATH', str_replace(home_url() . '/', '', plugins_url()));
|
||||
define('RELATIVE_CONTENT_PATH', str_replace(home_url() . '/', '', content_url()));
|
||||
define('THEME_NAME', next($get_theme_name));
|
||||
define('THEME_PATH', RELATIVE_CONTENT_PATH . '/themes/' . THEME_NAME);
|
||||
|
||||
10
lib/nav.php
10
lib/nav.php
@@ -30,7 +30,7 @@ class Roots_Nav_Walker extends Walker_Nav_Menu {
|
||||
elseif (stristr($item_html, 'li class="divider')) {
|
||||
$item_html = preg_replace('/<a[^>]*>.*?<\/a>/iU', '', $item_html);
|
||||
}
|
||||
elseif (stristr($item_html, 'li class="nav-header')) {
|
||||
elseif (stristr($item_html, 'li class="dropdown-header')) {
|
||||
$item_html = preg_replace('/<a[^>]*>(.*)<\/a>/iU', '$1', $item_html);
|
||||
}
|
||||
|
||||
@@ -42,11 +42,7 @@ class Roots_Nav_Walker extends Walker_Nav_Menu {
|
||||
$element->is_dropdown = ((!empty($children_elements[$element->ID]) && (($depth + 1) < $max_depth || ($max_depth === 0))));
|
||||
|
||||
if ($element->is_dropdown) {
|
||||
if ($depth === 0) {
|
||||
$element->classes[] = 'dropdown';
|
||||
} elseif ($depth === 1) {
|
||||
$element->classes[] = 'dropdown-submenu';
|
||||
}
|
||||
$element->classes[] = 'dropdown';
|
||||
}
|
||||
|
||||
parent::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
|
||||
@@ -85,7 +81,7 @@ function roots_nav_menu_args($args = '') {
|
||||
}
|
||||
|
||||
if (current_theme_supports('bootstrap-top-navbar')) {
|
||||
$roots_nav_menu_args['depth'] = 3;
|
||||
$roots_nav_menu_args['depth'] = 2;
|
||||
}
|
||||
|
||||
if (!$args['walker']) {
|
||||
|
||||
48
lib/relative-urls.php
Normal file
48
lib/relative-urls.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* Root relative URLs
|
||||
*
|
||||
* WordPress likes to use absolute URLs on everything - let's clean that up.
|
||||
* Inspired by http://www.456bereastreet.com/archive/201010/how_to_make_wordpress_urls_root_relative/
|
||||
*
|
||||
* You can enable/disable this feature in config.php:
|
||||
* current_theme_supports('root-relative-urls');
|
||||
*
|
||||
* @author Scott Walkinshaw <scott.walkinshaw@gmail.com>
|
||||
*/
|
||||
function roots_root_relative_url($input) {
|
||||
preg_match('|https?://([^/]+)(/.*)|i', $input, $matches);
|
||||
|
||||
if (isset($matches[1]) && isset($matches[2]) && $matches[1] === $_SERVER['SERVER_NAME']) {
|
||||
return wp_make_link_relative($input);
|
||||
} else {
|
||||
return $input;
|
||||
}
|
||||
}
|
||||
|
||||
function roots_enable_root_relative_urls() {
|
||||
return !(is_admin() || in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'))) && current_theme_supports('root-relative-urls');
|
||||
}
|
||||
|
||||
if (roots_enable_root_relative_urls()) {
|
||||
$root_rel_filters = array(
|
||||
'bloginfo_url',
|
||||
'the_permalink',
|
||||
'wp_list_pages',
|
||||
'wp_list_categories',
|
||||
'roots_wp_nav_menu_item',
|
||||
'the_content_more_link',
|
||||
'the_tags',
|
||||
'get_pagenum_link',
|
||||
'get_comment_link',
|
||||
'month_link',
|
||||
'day_link',
|
||||
'year_link',
|
||||
'tag_link',
|
||||
'the_author_posts_link',
|
||||
'script_loader_src',
|
||||
'style_loader_src'
|
||||
);
|
||||
|
||||
add_filters($root_rel_filters, 'roots_root_relative_url');
|
||||
}
|
||||
@@ -2,14 +2,13 @@
|
||||
/**
|
||||
* URL rewriting
|
||||
*
|
||||
* Rewrites currently do not happen for child themes (or network installs)
|
||||
* @todo https://github.com/retlehs/roots/issues/461
|
||||
* Rewrites do not happen for multisite installations or child themes
|
||||
*
|
||||
* Rewrite:
|
||||
* /wp-content/themes/themename/css/ to /css/
|
||||
* /wp-content/themes/themename/js/ to /js/
|
||||
* /wp-content/themes/themename/img/ to /img/
|
||||
* /wp-content/plugins/ to /plugins/
|
||||
* /wp-content/themes/themename/assets/css/ to /assets/css/
|
||||
* /wp-content/themes/themename/assets/js/ to /assets/js/
|
||||
* /wp-content/themes/themename/assets/img/ to /assets/img/
|
||||
* /wp-content/plugins/ to /plugins/
|
||||
*
|
||||
* If you aren't using Apache, alternate configuration settings can be found in the docs.
|
||||
*
|
||||
|
||||
@@ -4,32 +4,24 @@
|
||||
*
|
||||
* Enqueue stylesheets in the following order:
|
||||
* 1. /theme/assets/css/bootstrap.css
|
||||
* 2. /theme/assets/css/bootstrap-responsive.css
|
||||
* 3. /theme/assets/css/app.css
|
||||
* 4. /child-theme/style.css (if a child theme is activated)
|
||||
* 2. /theme/assets/css/app.css
|
||||
*
|
||||
* Enqueue scripts in the following order:
|
||||
* 1. jquery-1.9.1.min.js via Google CDN
|
||||
* 1. jquery-1.10.2.min.js via Google CDN
|
||||
* 2. /theme/assets/js/vendor/modernizr-2.6.2.min.js
|
||||
* 3. /theme/assets/js/plugins.js (in footer)
|
||||
* 4. /theme/assets/js/main.js (in footer)
|
||||
*/
|
||||
function roots_scripts() {
|
||||
wp_enqueue_style('roots_bootstrap', get_template_directory_uri() . '/assets/css/bootstrap.css', false, null);
|
||||
wp_enqueue_style('roots_bootstrap_responsive', get_template_directory_uri() . '/assets/css/bootstrap-responsive.css', array('roots_bootstrap'), null);
|
||||
wp_enqueue_style('roots_app', get_template_directory_uri() . '/assets/css/app.css', false, null);
|
||||
|
||||
// Load style.css from child theme
|
||||
if (is_child_theme()) {
|
||||
wp_enqueue_style('roots_child', get_stylesheet_uri(), false, null);
|
||||
}
|
||||
|
||||
// jQuery is loaded using the same method from HTML5 Boilerplate:
|
||||
// Grab Google CDN's latest jQuery with a protocol relative URL; fallback to local if offline
|
||||
// It's kept in the header instead of footer to avoid conflicts with plugins.
|
||||
if (!is_admin() && current_theme_supports('jquery-cdn')) {
|
||||
wp_deregister_script('jquery');
|
||||
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', false, null, false);
|
||||
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', false, null, false);
|
||||
add_filter('script_loader_src', 'roots_jquery_local_fallback', 10, 2);
|
||||
}
|
||||
|
||||
@@ -52,7 +44,7 @@ function roots_jquery_local_fallback($src, $handle) {
|
||||
static $add_jquery_fallback = false;
|
||||
|
||||
if ($add_jquery_fallback) {
|
||||
echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/assets/js/vendor/jquery-1.9.1.min.js"><\/script>\')</script>' . "\n";
|
||||
echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/assets/js/vendor/jquery-1.10.2.min.js"><\/script>\')</script>' . "\n";
|
||||
$add_jquery_fallback = false;
|
||||
}
|
||||
|
||||
@@ -65,11 +57,14 @@ function roots_jquery_local_fallback($src, $handle) {
|
||||
|
||||
function roots_google_analytics() { ?>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','<?php echo GOOGLE_ANALYTICS_ID; ?>'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
(function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
|
||||
function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
|
||||
e=o.createElement(i);r=o.getElementsByTagName(i)[0];
|
||||
e.src='//www.google-analytics.com/analytics.js';
|
||||
r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
|
||||
ga('create','<?php echo GOOGLE_ANALYTICS_ID; ?>');ga('send','pageview');
|
||||
</script>
|
||||
|
||||
<?php }
|
||||
if (GOOGLE_ANALYTICS_ID) {
|
||||
add_action('wp_footer', 'roots_google_analytics', 20);
|
||||
|
||||
37
lib/titles.php
Normal file
37
lib/titles.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* Page titles
|
||||
*/
|
||||
function roots_title() {
|
||||
if (is_home()) {
|
||||
if (get_option('page_for_posts', true)) {
|
||||
echo get_the_title(get_option('page_for_posts', true));
|
||||
} else {
|
||||
_e('Latest Posts', 'roots');
|
||||
}
|
||||
} elseif (is_archive()) {
|
||||
$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy'));
|
||||
if ($term) {
|
||||
echo $term->name;
|
||||
} elseif (is_post_type_archive()) {
|
||||
echo get_queried_object()->labels->name;
|
||||
} elseif (is_day()) {
|
||||
printf(__('Daily Archives: %s', 'roots'), get_the_date());
|
||||
} elseif (is_month()) {
|
||||
printf(__('Monthly Archives: %s', 'roots'), get_the_date('F Y'));
|
||||
} elseif (is_year()) {
|
||||
printf(__('Yearly Archives: %s', 'roots'), get_the_date('Y'));
|
||||
} elseif (is_author()) {
|
||||
$author = get_queried_object();
|
||||
printf(__('Author Archives: %s', 'roots'), $author->display_name);
|
||||
} else {
|
||||
single_cat_title();
|
||||
}
|
||||
} elseif (is_search()) {
|
||||
printf(__('Search Results for %s', 'roots'), get_search_query());
|
||||
} elseif (is_404()) {
|
||||
_e('Not Found', 'roots');
|
||||
} else {
|
||||
the_title();
|
||||
}
|
||||
}
|
||||
@@ -1,92 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* Theme wrapper
|
||||
*
|
||||
* @link http://scribu.net/wordpress/theme-wrappers.html
|
||||
* Utility functions
|
||||
*/
|
||||
function roots_template_path() {
|
||||
return Roots_Wrapping::$main_template;
|
||||
}
|
||||
|
||||
function roots_sidebar_path() {
|
||||
return Roots_Wrapping::sidebar();
|
||||
}
|
||||
|
||||
class Roots_Wrapping {
|
||||
// Stores the full path to the main template file
|
||||
static $main_template;
|
||||
|
||||
// Stores the base name of the template file; e.g. 'page' for 'page.php' etc.
|
||||
static $base;
|
||||
|
||||
static function wrap($template) {
|
||||
self::$main_template = $template;
|
||||
|
||||
self::$base = substr(basename(self::$main_template), 0, -4);
|
||||
|
||||
if (self::$base === 'index') {
|
||||
self::$base = false;
|
||||
}
|
||||
|
||||
$templates = array('base.php');
|
||||
|
||||
if (self::$base) {
|
||||
array_unshift($templates, sprintf('base-%s.php', self::$base));
|
||||
}
|
||||
|
||||
$templates = apply_filters('roots_wrap_base', $templates);
|
||||
return locate_template($templates);
|
||||
}
|
||||
|
||||
static function sidebar() {
|
||||
$templates = array('templates/sidebar.php');
|
||||
|
||||
if (self::$base) {
|
||||
array_unshift($templates, sprintf('templates/sidebar-%s.php', self::$base));
|
||||
}
|
||||
|
||||
$templates = apply_filters('roots_wrap_sidebar', $templates);
|
||||
return locate_template($templates);
|
||||
}
|
||||
}
|
||||
add_filter('template_include', array('Roots_Wrapping', 'wrap'), 99);
|
||||
|
||||
/**
|
||||
* Page titles
|
||||
*/
|
||||
function roots_title() {
|
||||
if (is_home()) {
|
||||
if (get_option('page_for_posts', true)) {
|
||||
echo get_the_title(get_option('page_for_posts', true));
|
||||
} else {
|
||||
_e('Latest Posts', 'roots');
|
||||
}
|
||||
} elseif (is_archive()) {
|
||||
$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy'));
|
||||
if ($term) {
|
||||
echo $term->name;
|
||||
} elseif (is_post_type_archive()) {
|
||||
echo get_queried_object()->labels->name;
|
||||
} elseif (is_day()) {
|
||||
printf(__('Daily Archives: %s', 'roots'), get_the_date());
|
||||
} elseif (is_month()) {
|
||||
printf(__('Monthly Archives: %s', 'roots'), get_the_date('F Y'));
|
||||
} elseif (is_year()) {
|
||||
printf(__('Yearly Archives: %s', 'roots'), get_the_date('Y'));
|
||||
} elseif (is_author()) {
|
||||
printf(__('Author Archives: %s', 'roots'), get_the_author());
|
||||
} else {
|
||||
single_cat_title();
|
||||
}
|
||||
} elseif (is_search()) {
|
||||
printf(__('Search Results for %s', 'roots'), get_search_query());
|
||||
} elseif (is_404()) {
|
||||
_e('Not Found', 'roots');
|
||||
} else {
|
||||
the_title();
|
||||
}
|
||||
}
|
||||
|
||||
function add_filters($tags, $function) {
|
||||
foreach($tags as $tag) {
|
||||
add_filter($tag, $function);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
function roots_widgets_init() {
|
||||
// Sidebars
|
||||
register_sidebar(array(
|
||||
'name' => __('Primary Sidebar', 'roots'),
|
||||
'name' => __('Primary', 'roots'),
|
||||
'id' => 'sidebar-primary',
|
||||
'before_widget' => '<section class="widget %1$s %2$s"><div class="widget-inner">',
|
||||
'after_widget' => '</div></section>',
|
||||
|
||||
48
lib/wrapper.php
Normal file
48
lib/wrapper.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* Theme wrapper
|
||||
*
|
||||
* @link http://scribu.net/wordpress/theme-wrappers.html
|
||||
*/
|
||||
function roots_template_path() {
|
||||
return Roots_Wrapping::$main_template;
|
||||
}
|
||||
|
||||
function roots_sidebar_path() {
|
||||
return new Roots_Wrapping('templates/sidebar.php');
|
||||
}
|
||||
|
||||
class Roots_Wrapping {
|
||||
// Stores the full path to the main template file
|
||||
static $main_template;
|
||||
|
||||
// Stores the base name of the template file; e.g. 'page' for 'page.php' etc.
|
||||
static $base;
|
||||
|
||||
public function __construct($template='base.php') {
|
||||
$this->slug = basename($template, '.php');
|
||||
$this->templates = array($template);
|
||||
|
||||
if (self::$base) {
|
||||
$str = substr($template, 0, -4);
|
||||
array_unshift($this->templates, sprintf($str . '-%s.php', self::$base));
|
||||
}
|
||||
}
|
||||
|
||||
public function __toString() {
|
||||
$this->templates = apply_filters('roots_wrap_' . $this->slug, $this->templates);
|
||||
return locate_template($this->templates);
|
||||
}
|
||||
|
||||
static function wrap($main) {
|
||||
self::$main_template = $main;
|
||||
self::$base = basename(self::$main_template, '.php');
|
||||
|
||||
if (self::$base === 'index') {
|
||||
self::$base = false;
|
||||
}
|
||||
|
||||
return new Roots_Wrapping();
|
||||
}
|
||||
}
|
||||
add_filter('template_include', array('Roots_Wrapping', 'wrap'), 99);
|
||||
@@ -54,15 +54,23 @@
|
||||
<a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php __('Log out of this account', 'roots'); ?>"><?php _e('Log out »', 'roots'); ?></a>
|
||||
</p>
|
||||
<?php else : ?>
|
||||
<label for="author"><?php _e('Name', 'roots'); if ($req) _e(' (required)', 'roots'); ?></label>
|
||||
<input type="text" class="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" <?php if ($req) echo 'aria-required="true"'; ?>>
|
||||
<label for="email"><?php _e('Email (will not be published)', 'roots'); if ($req) _e(' (required)', 'roots'); ?></label>
|
||||
<input type="email" class="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" <?php if ($req) echo 'aria-required="true"'; ?>>
|
||||
<label for="url"><?php _e('Website', 'roots'); ?></label>
|
||||
<input type="url" class="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22">
|
||||
<div class="form-group">
|
||||
<label for="author"><?php _e('Name', 'roots'); if ($req) _e(' (required)', 'roots'); ?></label>
|
||||
<input type="text" class="form-control" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" <?php if ($req) echo 'aria-required="true"'; ?>>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="email"><?php _e('Email (will not be published)', 'roots'); if ($req) _e(' (required)', 'roots'); ?></label>
|
||||
<input type="email" class="form-control" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" <?php if ($req) echo 'aria-required="true"'; ?>>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="url"><?php _e('Website', 'roots'); ?></label>
|
||||
<input type="url" class="form-control" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22">
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<label for="comment"><?php _e('Comment', 'roots'); ?></label>
|
||||
<textarea name="comment" id="comment" class="input-xlarge" rows="5" aria-required="true"></textarea>
|
||||
<div class="form-group">
|
||||
<label for="comment"><?php _e('Comment', 'roots'); ?></label>
|
||||
<textarea name="comment" id="comment" class="form-control" rows="5" aria-required="true"></textarea>
|
||||
</div>
|
||||
<p><input name="submit" class="btn btn-primary" type="submit" id="submit" value="<?php _e('Submit Comment', 'roots'); ?>"></p>
|
||||
<?php comment_id_fields(); ?>
|
||||
<?php do_action('comment_form', $post->ID); ?>
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<time class="updated" datetime="<?php echo get_the_time('c'); ?>" pubdate><?php echo get_the_date(); ?></time>
|
||||
<time class="published" datetime="<?php echo get_the_time('c'); ?>"><?php echo get_the_date(); ?></time>
|
||||
<p class="byline author vcard"><?php echo __('By', 'roots'); ?> <a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>" rel="author" class="fn"><?php echo get_the_author(); ?></a></p>
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<footer class="content-info" role="contentinfo">
|
||||
<div class="container">
|
||||
<?php dynamic_sidebar('sidebar-footer'); ?>
|
||||
<p>© <?php echo date('Y'); ?> <?php bloginfo('name'); ?></p>
|
||||
<footer class="content-info container" role="contentinfo">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<?php dynamic_sidebar('sidebar-footer'); ?>
|
||||
<p>© <?php echo date('Y'); ?> <?php bloginfo('name'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<?php wp_footer(); ?>
|
||||
<?php wp_footer(); ?>
|
||||
@@ -1,21 +1,19 @@
|
||||
<header class="banner navbar navbar-static-top" role="banner">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<a class="brand" href="<?php echo home_url(); ?>/">
|
||||
<?php bloginfo('name'); ?>
|
||||
</a>
|
||||
<nav class="nav-main nav-collapse collapse" role="navigation">
|
||||
<?php
|
||||
if (has_nav_menu('primary_navigation')) :
|
||||
wp_nav_menu(array('theme_location' => 'primary_navigation', 'menu_class' => 'nav'));
|
||||
endif;
|
||||
?>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="<?php echo home_url(); ?>/">
|
||||
<?php bloginfo('name'); ?>
|
||||
</a>
|
||||
<button data-target=".nav-main" data-toggle="collapse" type="button" class="navbar-toggle">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<nav class="nav-main nav-collapse collapse" role="navigation">
|
||||
<?php
|
||||
if (has_nav_menu('primary_navigation')) :
|
||||
wp_nav_menu(array('theme_location' => 'primary_navigation', 'menu_class' => 'nav navbar-nav'));
|
||||
endif;
|
||||
?>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
<header class="banner" role="banner">
|
||||
<div class="container">
|
||||
<a class="brand" href="<?php echo home_url(); ?>/"><?php bloginfo('name'); ?></a>
|
||||
<nav class="nav-main" role="navigation">
|
||||
<?php
|
||||
if (has_nav_menu('primary_navigation')) :
|
||||
wp_nav_menu(array('theme_location' => 'primary_navigation', 'menu_class' => 'nav nav-pills'));
|
||||
endif;
|
||||
?>
|
||||
</nav>
|
||||
<header class="banner container" role="banner">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<a class="brand" href="<?php echo home_url(); ?>/"><?php bloginfo('name'); ?></a>
|
||||
<nav class="nav-main" role="navigation">
|
||||
<?php
|
||||
if (has_nav_menu('primary_navigation')) :
|
||||
wp_nav_menu(array('theme_location' => 'primary_navigation', 'menu_class' => 'nav nav-pills'));
|
||||
endif;
|
||||
?>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
@@ -1,5 +1,9 @@
|
||||
<form role="search" method="get" id="searchform" class="form-search" action="<?php echo home_url('/'); ?>">
|
||||
<label class="hide" for="s"><?php _e('Search for:', 'roots'); ?></label>
|
||||
<input type="text" value="<?php if (is_search()) { echo get_search_query(); } ?>" name="s" id="s" class="search-query" placeholder="<?php _e('Search', 'roots'); ?> <?php bloginfo('name'); ?>">
|
||||
<input type="submit" id="searchsubmit" value="<?php _e('Search', 'roots'); ?>" class="btn">
|
||||
</form>
|
||||
<form role="search" method="get" class="search-form form-inline" action="<?php echo home_url('/'); ?>">
|
||||
<div class="input-group">
|
||||
<input type="search" value="<?php if (is_search()) { echo get_search_query(); } ?>" name="s" class="search-field form-control" placeholder="<?php _e('Search', 'roots'); ?> <?php bloginfo('name'); ?>">
|
||||
<label class="hide"><?php _e('Search for:', 'roots'); ?></label>
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="search-submit btn btn-default"><?php _e('Search', 'roots'); ?></button>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user