FEATURE #1933 @1h: add basic SASS structure and configure gulp/elixir

This commit is contained in:
Michal Kváček
2016-10-26 03:31:20 +02:00
parent 785387b796
commit 9f430cee11
131 changed files with 12975 additions and 2 deletions
+45
View File
@@ -0,0 +1,45 @@
@import './modularAdmin/_main';
@import './modularAdmin/_variables';
@import './modularAdmin/_common/navigation/navigation';
@import './modularAdmin/_common/animations/animations';
@import './modularAdmin/_common/button/button';
@import './modularAdmin/_common/_styles/typography';
@import './modularAdmin/_common/_styles/_mixins';
@import './modularAdmin/_common/_styles/misc';
@import './modularAdmin/_common/_styles/layout';
@import './modularAdmin/_common/chart/chart';
@import './modularAdmin/_common/form/form';
@import './modularAdmin/_common/images-container/images-container';
@import './modularAdmin/_common/alert/alert';
@import './modularAdmin/_common/dropdown/dropdown';
@import './modularAdmin/_common/flex/flex';
@import './modularAdmin/_common/nprogress/nprogress';
@import './modularAdmin/_common/pagination/pagination';
@import './modularAdmin/_common/items-list/items-list';
@import './modularAdmin/_common/table/table';
@import './modularAdmin/_common/modal/modal-tabs';
@import './modularAdmin/_common/card/card';
@import './modularAdmin/_common/logo/logo';
@import './modularAdmin/_common/scrollbar/scrollbar';
@import './modularAdmin/app/pages/error';
@import './modularAdmin/app/tables/responsive-tables/responsive-tables';
@import './modularAdmin/app/_common/sidebar/header/header';
@import './modularAdmin/app/_common/sidebar/sidebar';
@import './modularAdmin/app/_common/sidebar/customize/customize';
@import './modularAdmin/app/_common/editor/editor';
@import './modularAdmin/app/_common/header/search/search';
@import './modularAdmin/app/_common/header/collapse/collapse';
@import './modularAdmin/app/_common/header/header';
@import './modularAdmin/app/_common/header/nav/notifications/notifications';
@import './modularAdmin/app/_common/header/nav/profile/profile';
@import './modularAdmin/app/_common/header/nav/nav';
@import './modularAdmin/app/_common/header/buttons/buttons';
@import './modularAdmin/app/_common/footer/footer';
@import './modularAdmin/app/_common/modals/modals';
@import './modularAdmin/app/_common/modals/modal-media/modal-media';
@import './modularAdmin/app/app';
@import './modularAdmin/app/items/list/items-list';
@import './modularAdmin/auth/auth';
@@ -0,0 +1,103 @@
@import '../../../../bootstrap/scss/mixins';
// /*****************************************
// * Triangle Creation Mixin
// ******************************************/
// @mixin triangle-base() {
// content: '';
// display: block;
// width: 0;
// height: 0;
// -moz-transform: scale(.9999);
// }
// @mixin triangle($direction, $size, $color) {
// @include triangle($direction, $size * 2, $size, $color);
// }
// @mixin triangle($direction, $width, $height, $color) when ($direction = up) {
// @include triangle-base();
// border-left: ($width / 2) solid transparent;
// border-right: ($width / 2) solid transparent;
// border-bottom: $height solid $color;
// }
// @mixin triangle($direction, $width, $height, $color) when ($direction = down) {
// @include triangle-base();
// border-left: ($width / 2) solid transparent;
// border-right: ($width / 2) solid transparent;
// border-top: $height solid $color;
// }
// @mixin triangle($direction, $width, $height, $color) when ($direction = left) {
// @include triangle-base();
// border-top: ($width / 2) solid transparent;
// border-bottom: ($width / 2) solid transparent;
// border-right: $height solid $color;
// }
// @mixin triangle($direction, $width, $height, $color) when ($direction = right) {
// @include triangle-base();
// border-top: ($width / 2) solid transparent;
// border-bottom: ($width / 2) solid transparent;
// border-left: $height solid $color;
// }
/*****************************************
* Background-image: cover mixin
******************************************/
@mixin bg-cover() {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
/*****************************************
* Media Query Mixins
******************************************/
// Specified breakpoint
@mixin media($name) {
@include media-breakpoint-only($name) {
@content;
};
}
// Larger than specified breakpoint
@mixin media-up($name) {
@include media-breakpoint-up($name) {
@content;
};
}
// smaller than specified breakpoint
@mixin media-down($name) {
@include media-breakpoint-down($name) {
@content;
};
}
// /******************************************
// * Placeholder
// *******************************************/
@mixin placeholder() {
&::-webkit-input-placeholder { /* WebKit, Blink, Edge */
@content;
}
&:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
@content;
}
&::-moz-placeholder { /* Mozilla Firefox 19+ */
@content;
}
&:-ms-input-placeholder { /* Internet Explorer 10-11 */
@content;
}
}
// /******************************************
// * Hardware Acceleration
// *******************************************/
@mixin accelerate() {
transform: translate3d(0, 0, 0);
}
@@ -0,0 +1,74 @@
.row {
.col {
padding-left: $grid-gutter-width/2;
padding-right: $grid-gutter-width/2;
float: left;
}
}
.row-sm {
margin-left: -10px;
margin-right: -10px;
[class^='col'] {
padding-left: 10px;
padding-right: 10px;
}
}
.title-block {
padding-bottom: 15px;
margin-bottom: 30px;
border-bottom: 1px solid $color-divider;
@include clearfix();
@include media-down(sm) {
margin-bottom: 20px;
}
}
.subtitle-block {
padding-bottom: 10px;
margin-bottom: 20px;
border-bottom: 1px dashed lighten($color-divider, 3%);
}
.section {
display: block;
margin-bottom: $content-padding-y-md - $card-margin-bottom;
@include media(xl) {
margin-bottom: $content-padding-y-xl - $card-margin-bottom;
}
@include media(lg) {
margin-bottom: $content-padding-y-lg - $card-margin-bottom;
}
@include media(md) {
margin-bottom: $content-padding-y-md - $card-margin-bottom;
}
@include media-down(sm) {
margin-bottom: $content-padding-y-sm - $card-margin-bottom;
}
&:last-of-type {
margin-bottom: 0;
}
}
.box-placeholder {
margin-bottom: 15px;
padding: 20px;
border: 1px dashed #ddd;
background: #fafafa;
color: #444;
cursor: pointer;
}
@@ -0,0 +1,115 @@
.underline-animation {
position: absolute;
top: auto;
bottom: 1px;
left: 0;
width: 100%;
height: 1px;
background-color: $color-primary;
content: '';
transition: all 0.2s;
backface-visibility: hidden;
transform: scaleX(0);
}
.bar {
// background-color: $color-primary !important;
}
.stat-chart {
border-radius: 50%;
}
.stat {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
margin-right: 10px;
.value {
font-size: 20px;
line-height: 24px;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 500;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
}
&.lg {
.value {
font-size: 26px;
line-height: 28px;
}
.name {
font-size: 16px;
}
}
}
.list-icon {
[class^='col'] {
cursor: pointer;
em {
font-size: 14px;
width: 40px;
vertical-align: middle;
margin: 0;
display: inline-block;
text-align: center;
-webkit-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
line-height: 30px;
}
&:hover {
em {
transform: scale(2,2);
}
}
}
}
.well {
background-image: none;
background-color: #fff;
}
.jumbotron {
background-image: none;
background-color: #fff;
padding: 15px 30px;
&.jumbotron-fluid {
padding-left: 0;
padding-right: 0;
}
}
.rounded {
border-radius: $border-radius;
}
.rounded-l {
border-radius: $border-radius-lg;
}
.rounded-s {
border-radius: $border-radius-sm;
}
.jqstooltip {
height: 25px !important;
width: auto !important;
border-radius: $border-radius-sm;
}
@@ -0,0 +1,60 @@
.title {
// font-size: 21px;
font-size: 1.45rem;
font-weight: 600;
margin-bottom: 0;
// Title large
&.l {
// font-size: 23px;
font-size: 1.6rem;
}
&.s {
// font-size: 18px;
font-size: 1.4rem;
}
.card & {
font-size: 1.1rem;
color: $color-text;
}
}
.title-description {
margin: 0;
// font-size: 14px;
font-size: 0.9rem;
font-weight: normal;
color: $color-text-light;
// Small
&.s {
// font-size: 13px;
font-size: 0.8rem;
}
@include media-down(sm) {
display: none;
}
}
.subtitle {
font-size: 1.2rem;
margin: 0;
color: $color-text-light;
}
.text-primary {
color: $color-primary;
}
.text-muted {
color: lighten($color-text-light, 10%)
}
pre {
padding: 0;
border: none;
background: none;
}
@@ -0,0 +1,27 @@
.alert {
background-image: none;
&.alert-primary {
@include alert-variant($color-primary, $color-primary, #ffffff);
}
&.alert-success {
@include alert-variant($color-success, $color-success, #ffffff);
}
&.alert-info {
@include alert-variant($color-info, $color-info, #ffffff);
}
&.alert-warning {
@include alert-variant($color-warning, $color-warning, #ffffff);
}
&.alert-danger {
@include alert-variant($color-danger, $color-danger, #ffffff);
}
&.alert-inverse {
@include alert-variant($color-inverse, $color-inverse, #ffffff);
}
}
@@ -0,0 +1,4 @@
.animated {
animation-duration: .5s;
animation-delay: .1s;
}
@@ -0,0 +1,97 @@
.btn {
background-image: none;
border-radius: 0;
margin-bottom: 5px;
&.btn-primary {
@include button-variant( $btn-primary-color-text, $color-primary, $color-primary);
}
&.btn-secondary {
@include button-variant( $color-text, #fff, $color-divider );
}
&.btn-success {
@include button-variant( $color-text-inverse, $color-success, $color-success);
}
&.btn-info {
@include button-variant( $color-text-inverse, $color-info, $color-info);
}
&.btn-warning {
@include button-variant( $color-text-inverse, $color-warning, $color-warning);
}
&.btn-danger {
@include button-variant( $color-text-inverse, $color-danger, $color-danger);
}
// Remove all backgrounds
&.btn-primary-outline {
@include button-outline-variant($color-primary);
}
&.btn-secondary-outline {
@include button-outline-variant($color-divider);
}
&.btn-info-outline {
@include button-outline-variant($color-info);
}
&.btn-success-outline {
@include button-outline-variant($color-success);
}
&.btn-warning-outline {
@include button-outline-variant($color-warning);
}
&.btn-danger-outline {
@include button-outline-variant($color-danger);
}
&.btn-pill-left,
&.btn-pill-right,
&.btn-oval {
&:focus {
outline: none;
outline-offset: initial;
}
}
&.btn-pill-left {
border-top-left-radius: $btn-radius;
border-bottom-left-radius: $btn-radius;
}
&.btn-pill-right {
border-top-right-radius: $btn-radius;
border-bottom-right-radius: $btn-radius;
}
&.btn-oval {
border-radius: $btn-radius;
}
&.btn-link {
text-decoration: none;
}
strong {
font-weight: 600;
}
}
.btn-group {
.dropdown-menu {
& > li:last-child {
a:hover:before {
height: 0px;
transform: scaleX(0)
}
}
}
}
@@ -0,0 +1,200 @@
.card {
background-color: #fff;
box-shadow: 1px 1px 5px fade-out($color-text-light, 0.9);
.card {
box-shadow: none;
}
margin-bottom: $card-margin-bottom;
border-radius: 0;
border: none;
.card-header {
background-image: none;
background-color: #ffffff;
align-items: center;
display: flex;
flex-direction: row;
padding: 0;
border-radius: 0;
min-height: 50px;
border: none;
@include clearfix();
&.bordered {
border-bottom: 1px solid $color-divider;
}
&.card-header-sm {
min-height: 40px;
}
&>span {
vertical-align: middle;
}
.pull-right {
margin-left: auto;
}
.header-block {
padding: 0.5rem $card-padding-x;;
@include media(xl) {
padding: 0.5rem $card-padding-x-xl;
}
@include media-down(sm) {
padding: 0.5rem $card-padding-x-sm;
}
}
.title {
color: $color-text;
display: inline-flex;
}
.btn {
margin: 0;
}
.nav-tabs {
border-color: transparent;
align-self: stretch;
display: flex;
position: relative;
top: 1px;
.nav-item {
margin-left: 0;
display: flex;
align-self: stretch;
.nav-link {
display: flex;
align-self: stretch;
align-items: center;
color: $color-text;
opacity: 0.7;
padding-left: 10px;
padding-right: 10px;
border-radius: 0;
font-size: 14px;
border-top-width: 2px;
border-bottom: 1px solid $color-divider;
text-decoration: none;
&.active {
border-top-color: $color-primary;
border-bottom-color: transparent;
opacity: 1;
&:hover,
&:focus {
opacity: 1;
background-color: $color-text-inverse;
border-color: $color-divider $color-divider transparent;
border-top-color: $color-primary;;
}
}
&:hover,
&:focus {
opacity: 1;
background-color: transparent;
border-color: transparent;
}
}
}
}
}
&.card-default {
& > .card-header {
background-color: #fff;
color: inherit;
}
}
&.card-primary {
border-color: $color-primary;
& > .card-header {
background-color: $color-primary;
border-color: $color-primary;
}
}
&.card-success {
& > .card-header {
background-color: $color-success;
}
}
&.card-info {
& > .card-header {
background-color: $color-info;
}
}
&.card-warning {
& > .card-header {
background-color: $color-warning;
}
}
&.card-danger {
& > .card-header {
background-color: $color-danger;
}
}
&.card-inverse {
& > .card-header {
background-color: $color-inverse;
}
}
.title-block,
.card-title-block {
padding-bottom: 0;
margin-bottom: 20px;
border: none;
@include clearfix();
}
.section {
margin-bottom: 20px;
}
.example,
.section.demo {
margin-bottom: 20px;
}
}
.card-block {
padding: $card-padding-x;
.tab-content {
padding: 0;
border-color: transparent;
}
@include media(xl) {
padding: $card-padding-x-xl;
}
@include media-down(sm) {
padding: $card-padding-x-sm;
}
}
.card-footer {
background-color: #fafafa;
}
@@ -0,0 +1,9 @@
.easy-pie-chart {
width: 50px;
height: 50px;
// margin-right: 10px;
display: inline-block;
background-color: $color-divider;
border-radius: 5px;
// vertical-align: top;
}
@@ -0,0 +1,28 @@
.dropdown-menu {
float: left;
box-shadow: 2px 3px 6px $dropbown-color-border;
border: 1px solid $dropbown-color-border;
border-top-left-radius: 0;
border-top-right-radius: 0;
.dropdown-item {
display: block;
padding: 0px 15px;
clear: both;
font-weight: normal;
color: $color-text;
white-space: nowrap;
transition: none;
i {
margin-right: 2px;
}
&:hover {
color: $color-primary !important;
background: none;
background-color: darken(#fff, 4%);
}
}
}
@@ -0,0 +1,14 @@
.flex-row {
display: flex;
flex-direction: row;
}
.flex-col {
display: flex;
flex-direction: column;
}
.centralize-y {
display: flex;
align-items: center;
}
@@ -0,0 +1,229 @@
input,
textarea {
outline: none;
}
.form-group {
.row {
margin-left: -10px;
margin-right: -10px;
[class^='col'] {
padding-left: 10px;
padding-right: 10px;
}
}
&.has-error {
span.has-error {
color: $color-danger;
font-size: 13px;
display: block !important;
}
.form-control-feedback {
color: $color-danger;
}
}
&.has-warning {
span.has-warning {
color: $color-warning;
font-size: 13px;
display: block !important;
}
.form-control-feedback {
color: $color-warning;
}
}
&.has-success {
span.has-success {
color: $color-success;
font-size: 13px;
display: block !important;
}
.form-control-feedback {
color: $color-success;
}
}
}
/* Input groups */
.input-group {
margin-bottom: 10px;
.form-control {
padding-left: 5px;
}
span.input-group-addon {
font-style: italic;
border: none;
border-radius: 0;
border: none;
background-color: $color-divider;
transition: background-color ease-in-out 15s, color ease-in-out .15s;
&.focus {
background-color: $color-primary;
color: #ffffff;
}
}
}
label,
.control-label {
font-weight: 600;
}
.form-control.underlined {
padding-left: 0;
padding-right: 0;
border-radius: 0;
border: none;
border-radius: 0;
box-shadow: none;
border-bottom: 1px solid $color-divider;
&.indented {
padding: .375rem .75rem;
}
.has-error &:focus,
.has-warning &:focus,
.has-success &:focus,
&:focus {
border: none;
box-shadow: none;
border-bottom: 1px solid $color-primary;
}
.has-error & {
box-shadow: none;
border-color: $color-danger;
}
.has-warning & {
box-shadow: none;
border-color: $color-warning;
}
.has-success & {
box-shadow: none;
border-color: $color-success;
}
}
.form-control.boxed {
border-radius: 0;
box-shadow: none;
&:focus {
border: 1px solid $color-primary;
}
}
.radio,
.checkbox {
display: none;
& + span {
padding: 0;
padding-right: 10px;
}
& + span:before {
font-family: FontAwesome;
font-size: 21px;
display: inline-block;
vertical-align: middle;
letter-spacing: 10px;
color: darken($color-divider, 5%);
}
&:checked + span:before {
color: $color-primary;
}
&:disabled + span:before {
opacity: 0.5;
cursor: not-allowed;
}
&:checked:disabled + span:before {
color: darken($color-divider, 5%);
}
}
.checkbox {
& + span:before {
content: "\f0c8";
}
&:checked + span:before {
content: "\f14a";
}
&.rounded {
& + span:before {
content: "\f111";
}
&:checked + span:before {
content: "\f058";
}
}
}
.radio {
& + span:before {
content: "\f111";
}
&:checked + span:before {
content: "\f192";
}
&.squared {
& + span:before {
content: "\f0c8";
}
&:checked + span:before {
content: "\f14a";
}
}
}
// Placeholders
.form-control {
&::-webkit-input-placeholder {
font-style: italic;
color: darken($color-divider, 5%);
}
&:-moz-placeholder { /* Firefox 18- */
font-style: italic;
color: $color-divider;
}
&::-moz-placeholder { /* Firefox 19+ */
font-style: italic;
color: $color-divider;
}
&:-ms-input-placeholder {
font-style: italic;
color: $color-divider;
}
}
@@ -0,0 +1,129 @@
.images-container {
@include clearfix();
// padding-top: 30px;
.image-container {
float: left;
padding: 3px;
margin-right: 10px;
margin-bottom: 35px;
position: relative;
border: 1px solid lighten($color-divider, 5%);
overflow: hidden;
// box-shadow: 0 0 3px #BFBFBF;
// border-radius: 3px;
&.active {
border-color: $color-primary;
}
// .controls {
// transition: opacity .2s ease;
// opacity: 0;
// }
&:hover {
.controls {
bottom: 0;
opacity: 1;
}
}
}
.controls {
position: absolute;
left: 0;
right: 0;
opacity: 0;
bottom: -35px;
text-align: center;
height: 35px;
// background-color: lighten($color-divider, 8%);
font-size: 24px;
transition: bottom 0.2s ease, opacity 0.2s ease;
background-color: #fff;
@include clearfix();
.control-btn {
display: inline-block;
color: $color-text;
// border-radius: 3px;
cursor: pointer;
width: 35px;
height: 35px;
line-height: 35px;
text-align: center;
// color: $color-text-inverse;
opacity: 0.5;
transition: opacity 0.3s ease;
&:hover {
opacity: 1;
}
&.move {
cursor: move;
}
&.star {
color: #FFB300;
i:before{
content: "\f006";
}
&.active {
i:before{
content: "\f005";
}
}
}
&.remove {
color: $color-danger;
}
}
}
.image {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
width: 130px;
height: 135px;
// cursor: pointer;
line-height: 135px;
text-align: center;
&:active {
}
}
.image-container.main {
border-color: #FFB300;
}
.image-container.new {
opacity: 0.6;
transition: opacity 0.3s ease;
border-style: dashed;
border: 1px $color-primary solid;
color: $color-primary;
.image {
font-size: 2.5rem;
}
&:hover {
opacity: 1;
}
}
}
@@ -0,0 +1,388 @@
$item-list-padding-x: 10px !default;
$item-list-padding-y: 10px !default;
$item-list-line-height: 1.4rem !default;
$item-list-col-grow: 3 !default;
$item-list-col-shrink: 3 !default;
/* *******************************************
* Item List general styles
********************************************** */
.item-list {
list-style: none;
padding: 0;
margin: 0;
margin-bottom: 0;
line-height: $item-list-line-height;
@include media(lg) {
font-size: 1rem;
}
@include media(md) {
font-size: 0.95rem;
}
@include media-down(sm) {
font-size: 1.05rem;
}
display: flex;
flex-flow: column nowrap;
&.striped {
& > li {
border-bottom: 1px solid $item-list-color-border;
}
& > li:nth-child(2n + 1) {
background-color: lighten($color-divider, 12%);
@include media-down(sm) {
background-color: lighten($color-divider, 11%);
}
}
.item-list-footer {
border-bottom: none;
}
}
}
/* *******************************************
* Item general styles
********************************************** */
.item-list {
.item {
display: flex;
flex-direction: column;
}
.item-row {
display: flex;
align-items: stretch;
flex-direction: row;
justify-content: space-between;
flex-wrap: wrap;
min-width: 100%;
&.nowrap {
flex-wrap: nowrap;
}
}
.item-col {
align-items: center;
display: flex;
padding: $item-list-padding-y $item-list-padding-x $item-list-padding-y 0;
flex-basis: 0;
flex-grow: $item-list-col-grow;
flex-shrink: $item-list-col-shrink;
margin-left: auto;
margin-right: auto;
min-width: 0;
&.fixed {
flex-grow: 0;
flex-shrink: 0;
flex-basis: auto;
}
&.pull-left {
margin-right: auto;
}
&.pull-right {
margin-left: auto;
}
& > div {
width: 100%;
}
&:last-child {
padding-right: 0;
}
}
.no-overflow {
overflow: hidden;
}
.no-wrap {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
/* *******************************************
* Item components
********************************************** */
.item-list {
/********************************************
* Header
*********************************************/
.item-list-header {
.item-col.item-col-header {
span {
color: #999;
font-size: 0.8rem;
font-weight: 700 !important;
}
}
}
/********************************************
* Heading
*********************************************/
.item-heading {
font-size: 0.9rem;
display: none;
color: #666;
font-weight: 700;
padding-right: $item-list-padding-x;
@include media-down(sm) {
display: block;
}
@include media(sm) {
width: 100%;
}
@include media(xs) {
width: 40%;
}
}
/********************************************
* Checkbox
*********************************************/
.item-col.item-col-check {
flex-basis: 20px + $item-list-padding-x;
@include media-down(sm) {
order: -8;
}
}
.item-check {
margin-bottom: 0;
.checkbox + span {
padding-right: 0;
&:before {
width: 20px;
}
}
}
/********************************************
* Image
*********************************************/
.item-col.item-col-img {
display: flex;
flex-basis: 60px + $item-list-padding-x;
&.xs{
flex-basis: 30px + $item-list-padding-x;
}
&.sm {
flex-basis: 40px + $item-list-padding-x;
}
&.lg {
flex-basis: 90px + $item-list-padding-x;
}
&.xl {
flex-basis: 110px + $item-list-padding-x;
}
a {
width: 100%;
// display: flex;
}
}
.item-img {
flex-grow: 1;
align-self: stretch;
background-color: #efefef;
padding-bottom: 100%;
width: 100%;
height: 0;
@include bg-cover();
}
/********************************************
* Title
*********************************************/
.item-col.item-col-title {
@include media-down(sm) {
order: -4;
}
a {
display: block;
}
}
.item-title {
margin: 0;
font-size: inherit;
line-height: inherit;
font-weight: 600;
}
/********************************************
* Stats
*********************************************/
.item-stats {
height: $item-list-line-height;
}
/********************************************
* Actions
*********************************************/
.item-col.item-col-actions-dropdown {
flex-basis: 30px + $item-list-padding-x;
text-align: center;
padding-left: 0 !important;
@include media-down(sm) {
order: -3;
flex-basis: 30px + $item-list-padding-x !important;
padding-right: $item-list-padding-x;
}
}
.item-actions-dropdown {
position: relative;
font-size: 1.1rem;
&.active {
.item-actions-block {
max-width: 120px;
}
.item-actions-toggle-btn {
color: $color-primary;
.active {
display: block;
}
.inactive {
display: none;
}
}
}
.item-actions-toggle-btn {
color: lighten($color-text-light, 10);
font-size: 1.2rem;
cursor: pointer;
width: 100%;
line-height: 30px;
text-align: center;
text-decoration: none;
.active {
display: none;
}
}
.item-actions-block {
height: 30px;
max-width: 0px;
line-height: 30px;
overflow: hidden;
position: absolute;
top: 0;
right: 100%;
background-color: $color-divider;
border-radius: 3px;
transition: all 0.15s ease-in-out;
&.direction-right {
right: auto;
left: 100%;
}
.item-actions-list {
padding: 0;
list-style: none;
white-space: nowrap;
padding: 0 5px;
li{
display: inline-block;
padding: 0;
}
a {
display: block;
padding: 0 5px;
&.edit {
color: #38424C;
}
&.check {
color: #40B726;
}
&.remove {
color: #DB0E1E;
}
}
}
}
}
/********************************************
* Something else?
*********************************************/
}
/* *******************************************
* Adjustments
********************************************** */
// Item which is located inside card inside item-list
.card > .item-list .item > .item-row {
padding: 0 $card-padding-x;
@include media(xl) {
padding: 0 $card-padding-x-xl;
}
@include media-down(sm) {
padding: 0 $card-padding-x-sm;
}
}
@@ -0,0 +1,46 @@
.logo {
display: inline-block;
width: 45px;
height: 25px;
vertical-align: middle;
margin-right: 5px;
// background-color: fade(#fff, 10%);
position: relative;
.l {
width: 11px;
height: 11px;
border-radius: 50%;
background-color: $color-primary;
position: absolute;
&.l1 {
bottom: 0;
left: 0;
}
&.l2 {
width: 7px;
height: 7px;
bottom: 13px;
left: 10px;
}
&.l3 {
width: 7px;
height: 7px;
bottom: 4px;
left: 17px;
}
&.l4 {
bottom: 13px;
left: 25px;
}
&.l5 {
bottom: 0;
left: 34px;
}
}
}
@@ -0,0 +1,27 @@
.modal-body.modal-tab-container {
padding: 0;
.modal-tabs {
padding-left: 0;
margin-bottom: 0;
list-style:none;
background-color: #ffffff;
border-bottom: 1px solid #ddd;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.3);
.nav-link {
padding: 10px 20px;
border: none;
&:hover,
&.active {
color: $color-primary;
border-bottom: 2px solid $color-primary;
}
&.active {
font-weight: 600;
}
}
}
}
@@ -0,0 +1,114 @@
a:not(.btn) {
// display: inline-block;
// position: relative;
// overflow: hidden;
// vertical-align: top;
// z-index: 0;
transition: $link-transition;
text-decoration: $link-decoration;
color: $link-color;
// &:before {
// &:extend(.underline-animation);
// }
&:hover{
text-decoration: $link-hover-decoration;
color: $link-hover-color;
&:before {
transform: scaleX(1);
}
}
&:focus {
text-decoration: none;
}
}
span a {
vertical-align: text-bottom;
}
[class^='nav'],
[class*=' nav'] {
li > a {
// Display these anchors as block
display: block;
// Hide underline in anchors which are inside LI tag
&:before {
display: none;
}
}
}
.nav {
&.nav-tabs-bordered {
border-color: $color-primary;
& + .tab-content {
border-style: solid;
border-width: 0 1px 1px 1px;
border-color: $color-primary;
padding: 10px 20px 0;
}
.nav-item {
.nav-link {
text-decoration: none;
&:hover {
color: #ffffff;
background-color: $color-primary;
border: 1px solid $color-primary;
}
&.active {
border-color: $color-primary;
border-bottom-color: transparent;
&:hover {
background-color: #ffffff;
color: inherit;
}
}
}
}
}
&.nav-pills {
& + .tab-content {
border: 0;
padding: 5px;
}
.nav-item {
.nav-link {
text-decoration: none;
&:hover {
color: $color-text;
background-color: transparent;
border: 0;
}
&.active {
border-color: $color-primary;
border-bottom-color: transparent;
background-color: $color-primary;
&:hover {
background-color: $color-primary;
color: #ffffff;
}
}
}
}
}
}
@@ -0,0 +1,22 @@
#nprogress {
.bar {
background: $color-primary !important;
.peg {
box-shadow: 0 0 10px $color-primary, 0 0 5px $color-primary;
}
}
.spinner {
top: 25px !important;
right: 23px !important;
.spinner-icon {
border-top-color: $color-primary !important;
border-left-color: $color-primary !important;
}
}
}
@@ -0,0 +1,19 @@
.pagination {
margin-top: 0;
.page-item {
.page-link {
color: $color-primary;
}
&.active {
.page-link,
.page-link:focus,
.page-link:hover {
color: #fff;
border-color: $color-primary;
background-color: $color-primary;
}
}
}
}
@@ -0,0 +1,24 @@
/* Let's get this party started */
::-webkit-scrollbar {
width: 7px;
height: 7px;
}
/* Track */
::-webkit-scrollbar-track {
// -webkit-box-shadow: inset 0 0 6px #626d77;
// background: #626d77;
-webkit-border-radius: 0;
border-radius: 0;
}
/* Handle */
::-webkit-scrollbar-thumb {
-webkit-border-radius: 0;
border-radius: 0;
background: darken($color-primary, 5%);
// -webkit-box-shadow: inset 0 0 6px $color-primary;
}
::-webkit-scrollbar-thumb:window-inactive {
background: $color-primary;
}
@@ -0,0 +1,12 @@
.table {
label {
margin-bottom: 0;
}
.checkbox + span {
margin-bottom: 0;
&:before {
line-height: 20px;
}
}
}
@@ -0,0 +1,40 @@
@import url(http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,800,700,600);
@import '_variables';
@import '../bootstrap/scss/_variables';
@import '../bootstrap/scss/_mixins';
@import '_common/_styles/mixins';
html,
body {
padding: 0;
margin: 0;
height: 100%;
min-height: 100%;
font-family: 'Open Sans', sans-serif;
color: $color-text;
overflow-x: hidden;
}
.main-wrapper {
width: 100%;
position: absolute;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
}
#ref {
.color-primary {
color: $color-primary;
}
.chart {
.color-primary {
color: $chart-color-primary;
}
.color-secondary {
color: $chart-color-secondary;
}
}
}
@@ -0,0 +1 @@
$color-primary: #52BCD3;
@@ -0,0 +1,10 @@
$color-primary: #85CE36;
$dashboard-stat-icon-color: #BDBDBD;
// $link-color: darken($color-primary, 5%);
$link-color: #969696;
$link-transition: initial;
$link-decoration: underline;
$link-hover-color: darken($color-primary, 8%);
$link-hover-decoration: underline;
@@ -0,0 +1,12 @@
$color-primary: lighten(#FE7A0E, 3%);
$dashboard-stat-icon-color: #BDBDBD;
$link-color: #969696;
$link-transition: initial;
$link-decoration: underline;
$link-hover-color: desaturate(darken($color-primary, 4%), 4%);
$link-hover-decoration: underline;
$chart-color-primary: lighten($color-primary, 10%);
$chart-color-secondary: lighten($chart-color-primary, 20%);
@@ -0,0 +1,6 @@
$color-primary: #7867A7;
$dashboard-stat-icon-color: #BDBDBD;
$chart-color-primary: lighten($color-primary, 8%);
$chart-color-secondary: lighten($chart-color-primary, 10%);
@@ -0,0 +1,11 @@
$color-primary: #FF6161;
$link-color: #969696;
$link-transition: initial;
$link-decoration: underline;
$link-hover-color: #E45252;
$link-hover-decoration: underline;
$chart-color-primary: #FF8585;
$chart-color-secondary: #ccc;
@@ -0,0 +1,9 @@
$color-primary: #4bcf99;
// $link-color: darken($color-primary, 5%);
$link-color: #969696;
$link-transition: initial;
$link-decoration: underline;
$link-hover-color: darken($color-primary, 8%);
$link-hover-decoration: underline;
@@ -0,0 +1,109 @@
/*************************************************************
* App Variables
**************************************************************/
/*************************************************************
* Colors Definitions
**************************************************************/
$color-primary: #85CE36 !default;
$color-primary-light: lighten($color-primary, 10%) !default;
$color-primary-lighter: lighten($color-primary-light, 6%) !default;
$color-primary-dark: darken($color-primary, 10%) !default;
$color-primary-darker: darken($color-primary-dark, 6%) !default;
$color-divider: #d7dde4 !default;
$color-bg: #f0f3f6 !default;
$color-text: #4f5f6f !default;
$color-text-light: #7e8e9f !default;
$color-text-muted: #C2CCD6;
$color-text-inverse: #ffffff !default;
$color-text-passive: #c5c5c5 !default;
$color-success: #4bcf99 !default;
$color-info: #76D4F5 !default;
$color-warning: #fe974b !default;
$color-danger: #FF4444 !default;
$color-inverse: #131e26 !default;
/*************************************************************
* Common Element Variables
**************************************************************/
// Buttons
$btn-radius: 25px !default;
$btn-primary-color: $color-primary !default;
$btn-primary-color-text: $color-text-inverse !default;
// Links
$link-color: #969696 !default;
$link-transition: initial;
$link-decoration: underline;
$link-hover-color: darken($color-primary, 8%) !default;
$link-hover-decoration: underline !default;
// Header
$header-height: 70px !default;
$header-height-xs: 50px !default;
// Sidebar
$sidebar-width: 230px !default;
// Footer
$footer-height: 50px !default;
$sidebar-color-primary: darken(#4f5f6f, 10%) !default;
$sidebar-color-secondary: darken($sidebar-color-primary, 6%) !default;
$sidebar-color-text: fade-out($color-text-inverse, 0.5) !default;
$sidebar-color-text-active: $color-text-inverse;
// Dropdowns
$dropbown-color-border: fade-out($color-text-light, 0.9) !default;
$dropdown-link-hover-color-bg: #f5f5f5 !default;
// Content
$content-padding-x-xl: 40px !default;
$content-padding-y-xl: 35px !default;
$content-padding-x-lg: 35px !default;
$content-padding-y-lg: 30px !default;
$content-padding-x-md: 20px !default;
$content-padding-y-md: 25px !default;
$content-padding-x-sm: 20px !default;
$content-padding-y-sm: 20px !default;
$content-padding-x-xs: 10px !default;
$content-padding-y-xs: 15px !default;
// Card
$card-padding-x: 15px !default;
$card-padding-x-xl: 20px !default;
$card-padding-x-sm: 10px !default;
$card-margin-bottom: 10px;
// Item list
$item-list-color-border: lighten($color-divider, 6%) !default;
// Charts
$chart-color-primary: $color-primary !default;
$chart-color-secondary: lighten($chart-color-primary, 10%) !default;
/* ***************************************************
* Page Specific Element Variables
****************************************************** */
// Dashboard
$dashboard-stat-icon-color: #BDBDBD !default;
@@ -0,0 +1,28 @@
.wyswyg {
border: 1px solid $color-divider;
.toolbar,
.ql-picker-label,
.ql-picker-options {
// background-color: lighten($color-divider, 10%) !important;
}
.ql-container {
border-top: 1px solid $color-divider;
}
.toolbar {
.btn {
margin: 0;
}
}
.ql-container {
font-size: 1rem;
.ql-editor {
min-height: 200px;
}
}
}
@@ -0,0 +1,68 @@
.footer {
background-color: #fff;
position: absolute;
left: $sidebar-width;
right: 0;
bottom: 0;
height: $footer-height;
display: flex;
justify-content: space-between;
align-items: center;
.footer-fixed & {
position: fixed;
}
.footer-block {
vertical-align: middle;
margin-left: 20px;
margin-right: 20px;
// line-height: 30px;
}
.footer-github-btn {
vertical-align: middle;
}
@include media-down(md) {
left: 0;
}
.author > ul {
list-style: none;
margin: 0;
padding: 0;
li {
display: inline-block;
&:after {
content: "|";
}
&:last-child:after {
content: "";
}
@include media-down(md) {
display: block;
text-align: right;
&:after {
content: "";
}
}
}
@include media-down(md) {
display: block;
}
@include media-down(sm) {
display: none;
}
}
}
@@ -0,0 +1,30 @@
.header .header-block-buttons {
text-align: center;
margin-left: auto;
margin-right: auto;
white-space: nowrap;
.btn.header-btn {
background-color: transparent;
border: 1px solid lighten($color-text, 10%);
color: lighten($color-text, 10%);
margin: 0 5px;
border-radius: 0.2rem;
// border-radius: 25px;
&:hover,
&:focus {
border: 1px solid darken($color-text, 10%);
color: darken($color-text, 10%);
}
@include media-down(sm) {
span {
display: none;
}
}
}
}
@@ -0,0 +1,23 @@
.header .header-block-collapse {
padding-right: 5px;
@include media-down(sm) {
width: 155px;
}
.collapse-btn {
background: none;
border: none;
box-shadow: none;
color: $color-primary;
font-size: 24px;
line-height: 40px;
border-radius: 0;
outline: none;
padding: 0;
padding-left: 10px;
padding-right: 10px;
vertical-align: initial;
}
}
@@ -0,0 +1,33 @@
.header {
background-color: $color-divider;
height: $header-height;
position: absolute;
left: $sidebar-width;
right: 0;
transition: left 0.3s ease;
z-index: 10;
display: flex;
align-items: center;
justify-content: space-between;
@include media-down(md) {
left: 0;
}
@include media-down(sm) {
left: 0;
height: $header-height-xs;
}
.header-fixed & {
position: fixed;
}
.header-block {
@include media-down(sm) {
padding: 5px;
}
}
}
@@ -0,0 +1,64 @@
.header .header-block-nav {
margin-left: auto;
white-space: nowrap;
padding-right: 15px;
@include media-down(sm) {
padding-right: 25px;
}
@include clearfix();
a {
text-decoration: none;
}
// All lists
ul {
margin: 0;
padding: 0;
list-style: none;
}
& > ul {
display: table;
}
// First level items
& > ul > li {
display: table-cell;
position: relative;
&:before {
display: block;
content: " ";
width: 1px;
height: 24px;
top: 50%;
margin-top: -12px;
background-color: darken($color-divider, 25%);
position: absolute;
left: 0;
}
&:first-child:before {
display: none;
}
}
// First leve items links
& > ul > li > a {
padding: 0 15px;
color: $color-text;
&:hover {
color: $color-primary;
}
}
// Dropdown menus
.dropdown-menu {
margin-top: 15px;
}
}
@@ -0,0 +1,126 @@
.header .header-block-nav {
.notifications {
font-size: 16px;
a {
padding-right: 10px;
}
.counter {
font-weight: bold;
font-size: 14px;
position: relative;
top: -3px;
left: -2px;
}
&.new .counter {
color: $color-primary;
font-weight: bold;
}
@include media-down(sm) {
position: static;
}
}
.notifications-dropdown-menu {
white-space: normal;
left: auto;
right: 0;
min-width: 350px;
&:before {
position: absolute;
right: 20px;
bottom: 100%;
margin-right: -1px;
// @include triangle(up, 10px, $dropdown-border);
}
&:after {
position: absolute;
right: 20px;
bottom: 100%;
// @include triangle(up, 9px, $dropdown-bg);
}
.notifications-container {
.notification-item {
border-bottom: 1px solid $dropbown-color-border;
padding: 5px;
&:hover {
background-color: $dropdown-link-hover-color-bg;
}
}
.img-col {
display: table-cell;
padding: 5px;
}
.body-col {
padding: 5px;
display: table-cell;
}
.img {
width: 40px;
height: 40px;
border-radius: 3px;
vertical-align: top;
display: inline-block;
@include bg-cover();
}
p {
color: $color-text;
display: inline-block;
line-height: 18px;
font-size: 13px;
margin: 0;
vertical-align: top;
.accent {
font-weight: bold;
}
}
}
footer {
text-align: center;
a {
color: $dropdown-link-color;
transition: none;
&:hover {
background-color: $dropdown-link-hover-color-bg;
color: $color-primary;
}
}
}
@include media-down(sm) {
min-width: 100px;
width: 100%;
margin-top: 5px;
&:before,
&:after {
right: 107px;
}
}
}
}
@@ -0,0 +1,93 @@
.header .header-block-nav {
.profile {
.img {
display: inline-block;
width: 30px;
height: 30px;
line-height: 30px;
border-radius: 4px;
background-color: darken($color-divider, 25%);
color: $color-text-inverse;
text-align: center;
margin-right: 10px;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
vertical-align: middle;
}
.name {
display: inline-block;
margin-right: 9px;
font-weight: bold;
@include media-down(sm) {
display: none;
}
}
.arrow {
color: $color-primary;
}
}
.profile-dropdown-menu {
left: auto;
right: 0;
min-width: 180px;
white-space: normal;
&:before {
position: absolute;
right: 10px;
bottom: 100%;
margin-right: -1px;
// @include triangle(up, 10px, $dropdown-border);
}
&:after {
position: absolute;
right: 10px;
bottom: 100%;
// @include triangle(up, 9px, $dropdown-bg);
}
a {
padding: 10px 15px;
.icon {
color: $color-primary;
text-align: center;
width: 16px;
}
span {
display: inline-block;
padding-left: 5px;
text-align: left;
color: $color-text-light;
}
}
.profile-dropdown-menu-icon {
padding: 0;
}
.profile-dropdown-menu-topic {
color: #7e8e9f;
padding: 0;
}
.dropdown-divider {
margin: 0;
}
.logout {
border-top: 1px solid $dropbown-color-border;
}
@include media-down(sm) {
margin-top: 8px;
}
}
}
@@ -0,0 +1,67 @@
.header .header-block-search {
$line-height: $header-height - 30px;
margin-right: auto;
// float: left;
padding-left: $content-padding-x-md;
@include media-down(sm) {
padding-left: $content-padding-x-xs;
}
@include media(md) {
padding-left: $content-padding-x-sm;
}
@include media(lg) {
padding-left: $content-padding-x-md;
}
@include media(xl) {
padding-left: $content-padding-x-lg;
}
& > form {
float: right;
@include media-down(sm) {
padding-left: 0;
}
}
.input-container {
position: relative;
color: $color-text-light;
i {
position: absolute;
pointer-events: none;
display: block;
height: $line-height;
line-height: $line-height;
left: 0;
}
input {
background-color: transparent;
border: none;
padding-left: 25px;
height: 40px;
max-width: 150px;
@include media-down(sm) {
max-width: 140px;
}
}
// .underline {
// &:extend(.underline-animation);
// }
input:focus + .underline {
transform: scaleX(1);
}
}
}
@@ -0,0 +1,56 @@
#modal-media {
.modal-body {
min-height: 250px;
}
.modal-tab-content {
min-height: 300px;
}
.images-container {
padding: 15px;
text-align: center;
.image-container {
margin: 0 auto 10px auto;
cursor: pointer;
transition: all 0.3s ease;
display: inline-block;
float: none;
&:hover {
border-color: fade-out($color-primary, 0.5);
}
&.active {
border-color: fade-out($color-primary, 0.5);
}
}
}
.upload-container {
padding: 15px;
.dropzone {
position: relative;
border: 2px dashed $color-primary;
height: 270px;
.dz-message-block {
position: absolute;
top: 50%;
left: 50%;
transform: translateY(-50%) translateX(-50%);
.dz-message {
margin: 0;
font-size: 24px;
color: $color-primary;
width: 230px;
}
}
}
}
}
@@ -0,0 +1,19 @@
.modal {
.modal-content {
border-radius: 0;
}
// MOdal tabs are defined in _common/modal/modal.scss
.modal-header {
background-color: $color-primary;
color: #ffffff;
}
.modal-footer {
.btn {
margin-bottom: 0;
}
}
}
@@ -0,0 +1,157 @@
.customize {
// height: 200px;
width: 100%;
color: rgba(255, 255, 255, 0.5);
padding: 5px 15px;
text-align: center;
.customize-header{
margin-bottom: 10px;
}
}
#customize-menu {
position: fixed;
bottom: 0;
left: 0;
width: $sidebar-width;
@include media-down(sm) {
}
.sidebar-open & {
@include media-down(md) {
left: 0;
}
}
@include media-down(md) {
// position: absolute;
transition: left 0.3s ease;
left: -$sidebar-width;
}
& > li {
& > a {
background-color: $sidebar-color-primary;
border-top: 1px solid fade-out($sidebar-color-secondary, 0.5);
}
& > a:hover,
&.open > a {
background-color: $sidebar-color-secondary;
}
}
.customize {
width: $sidebar-width;
color: fade-out($color-text-inverse, 0.5);
background-color: $sidebar-color-secondary;
text-align: center;
padding: 10px 15px;
border-top: 2px solid $color-primary;
.customize-item {
margin-bottom: 15px;
.customize-header {
margin-bottom: 10px;
}
label {
font-weight: 400;
&.title {
font-size: 14px;
}
}
.radio {
& + span {
padding: 0;
padding-left: 5px
}
& + span:before {
font-size: 17px;
color: #546273;
cursor: pointer;
}
&:checked + span:before{
color: $color-primary;
}
}
.customize-colors {
list-style: none;
li {
display: inline-block;
margin-left: 5px;
margin-right: 5px;
.color-item {
display: block;
height: 20px;
width: 20px;
border: 1px solid;
cursor: pointer;
&.color-red {
background-color: #FB494D;
border-color: #FB494D;
}
&.color-orange {
background-color: #FE7A0E;
border-color: #FE7A0E;
}
&.color-green {
background-color: #8CDE33;
border-color: #8CDE33;
}
&.color-seagreen {
background-color: #4bcf99;
border-color: #4bcf99;
}
&.color-blue {
background-color: #52BCD3;
border-color: #52BCD3;
}
&.color-purple {
background-color: #7867A7;
border-color: #7867A7;
}
&.active {
position: relative;
font-family: FontAwesome;
font-size: 17px;
line-height: 17px;
&:before {
content: "\f00c";
position: absolute;
top: 0;
left: 0;
color: #fff;
}
}
}
}
}
}
}
}
@@ -0,0 +1,14 @@
.sidebar-header {
.brand {
color: #fff;
text-align: left;
padding-left: 25px;
line-height: $header-height;
font-size: 16px;
@include media-down(sm) {
line-height: $header-height-xs;
font-size: 16px;
}
}
}
@@ -0,0 +1,188 @@
.sidebar {
background-color: $sidebar-color-primary;
width: $sidebar-width;
padding-bottom: 60px;
position: absolute;
top: 0;
left: 0;
bottom: 0;
transition: left 0.3s ease;
z-index: 20;
@include media-down(md) {
position: fixed;
left: -$sidebar-width;
}
.sidebar-fixed & {
position: fixed;
}
.sidebar-open & {
left: 0;
}
.sidebar-container {
position: absolute;
top: 0;
bottom: 51px;
width: 100%;
left: 0;
overflow-y: auto;
overflow-x: hidden;
&::-webkit-scrollbar-track {
background-color: darken($sidebar-color-primary, 6.5%);
}
}
.nav {
font-size: 14px;
// Common styles
li {
a:focus,
.open & a:focus {
background-color: inherit;
}
}
// Second + menu items
ul {
padding: 0;
height: 0px;
overflow: hidden;
.loaded & {
height: auto;
}
}
li.active ul {
height: auto;
}
// All links which are not active
// have subdued color
li a {
color: $sidebar-color-text;
text-decoration: none;
}
// All links which are not active
// On hover bg become darker
// Their color become lighter
li a:hover,
li.open > a,
li.open a:hover {
color: $sidebar-color-text-active;
background-color: $sidebar-color-secondary;
}
// First level items
&> li {
// First level items links
& > a {
padding-top: 15px;
padding-bottom: 15px;
padding-left: 20px;
padding-right: 10px;
}
// First level active links have primary background
&.active > a,
&.active > a:hover {
background-color: $color-primary !important;
color: $color-text-inverse !important;
}
// First level active links have bit darker background
&.open > a {
background-color: darken($sidebar-color-primary, 3%);
}
// Open items links
&.open > a {
i.arrow {
transform: rotate(90deg);
}
}
// First level item links arrow
& > a {
i {
margin-right: 5px;
font-size: 16px;
&.arrow {
float: right;
font-size: 20px;
line-height: initial;
transition: all 0.3s ease;
&:before {
content: "\f105" !important;
}
}
}
}
}
// Second level items
& > li > ul > li {
// Second level and deeper items links
// Have bit darker background and more padding
// from left side
a {
padding-top: 10px;
padding-bottom: 10px;
padding-left: 50px;
background-color: darken($sidebar-color-primary, 3%);
}
// Second level active items links
// Have brighter color
&.active a {
color: $sidebar-color-text-active;
}
}
}
}
.sidebar-overlay {
position: absolute;
display: none;
left: 200vw;
right: 0;
top: 0;
bottom: 0;
z-index: 5;
opacity: 0;
transition: opacity 0.3s ease;
z-index: 15;
@include media-down(md) {
display: block;
}
@include media-down(sm) {
background-color: fade-out(#000, 0.3);
}
.sidebar-open & {
@include media-down(md) {
left: 0;
opacity: 1;
}
}
}
@@ -0,0 +1,72 @@
.app {
position: relative;
width: 100%;
padding-left: $sidebar-width;
min-height: 100vh;
margin: 0 auto;
left: 0;
background-color: $color-bg;
box-shadow: 0 0 3px #ccc;
transition: left 0.3s ease, padding-left 0.3s ease;
overflow: hidden;
.content {
$padding-x: $content-padding-x-md;
$padding-y: $content-padding-y-md;
padding: $header-height + $padding-y $padding-x $footer-height + $padding-y $padding-x;
min-height: 100vh;
@include media(xl) {
$padding-x: $content-padding-x-xl;
$padding-y: $content-padding-y-xl;
padding: $header-height + $padding-y $padding-x $footer-height + $padding-y $padding-x;
}
@include media(lg) {
$padding-x: $content-padding-x-lg;
$padding-y: $content-padding-y-lg;
padding: $header-height + $padding-y $padding-x $footer-height + $padding-y $padding-x;
}
@include media(md) {
$padding-x: $content-padding-x-md;
$padding-y: $content-padding-y-md;
padding: $header-height + $padding-y $padding-x $footer-height + $padding-y $padding-x;
}
@include media-down(sm) {
$padding-x: $content-padding-x-sm;
$padding-y: $content-padding-y-sm;
padding: $header-height-xs + $padding-y $padding-x $footer-height + $padding-y $padding-x;
}
}
@include media-down(md) {
padding-left: 0;
// background-color: #ccc;
// left: -$sidebar-width;
// width: calc(100% + #{$sidebar-width});
}
&.sidebar-open {
// Disable content scrolling when sidebar is open
@include media-down(md) {
left: 0;
// position: absolute;
// height: 100%;
// overflow: hidden;
}
}
&.blank {
background-color: #667380;
}
}
@@ -0,0 +1,322 @@
.items-list-page {
.title-search-block {
position: relative;
}
.title-block {
@include media-down(sm) {
padding-bottom: 10px;
margin-bottom: 13px;
}
.action {
display: inline;
a {
padding: 10px 15px;
.icon {
margin-right: 5px;
text-align: center;
width: 16px;
}
}
@include media-down(sm){
display: none;
}
}
}
.items-search {
position: absolute;
margin-bottom: 15px;
right: 0;
top: 0;
@include media-down(sm) {
position: static;
}
.search-button {
margin: 0;
}
}
// For common item-list class see /src/_common/styles/items.less
// Desktop view
.item-list {
.item-col {
&.item-col-check {
text-align: left;
// width: auto;
// flex-basis: 30px;
}
&.item-col-img {
text-align: left;
width: auto;
text-align: center;
flex-basis: 70px;
@include media-up(sm) {
&:not(.item-col-header) {
height: 80px;
}
}
}
&.item-col-title {
text-align: left;
margin-left: 0 !important;
margin-right: auto;
// flex-basis: calc(40% - 100px);
flex-basis: 0;
flex-grow: 3 * $item-list-col-grow;
}
&.item-col-sales {
text-align: right;
font-weight: 600;
}
&.item-col-stats {
text-align: center;
}
&.item-col-category {
text-align: left;
font-weight: 600;
}
&.item-col-author {
text-align: left;
flex-grow: 1.5 * $item-list-col-grow;
}
&.item-col-date {
text-align: right;
}
}
}
// All mobile views
@include media-down(sm) {
.card.items {
background: none;
box-shadow: none;
}
.item-list {
.item {
border: none;
margin-bottom: 10px;
background-color: #fff;
box-shadow: 1px 1px 5px fade-out($color-text-light, 0.9);
}
.item-row {
padding: 0 !important;
}
.item-col {
&.item-col-author {
flex-grow: $item-list-col-grow;
}
}
}
}
// Large Mobile view
@include media(sm) {
.item-list {
.item {
background-color: #fff;
margin-bottom: 10px;
box-shadow: 1px 1px 5px fade-out($color-text-light, 0.9);
}
.item-row {
padding: 0;
}
.item-heading {
width: 100%;
display: block;
position: absolute;
top: 0;
width: 100%;
left: 0;
line-height: 40px;
padding-left: 0;
}
.item-col {
&.item-col-check,
&.item-col-title,
&.item-col-actions-dropdown {
border-bottom: 1px solid $color-divider;
.item-heading {
display: none;
}
}
&.item-col-sales,
&.item-col-stats,
&.item-col-category,
&.item-col-author,
&.item-col-date {
padding-top: 40px;
position: relative;
}
&.item-col-check {
display: none;
}
&.item-col-title {
padding-left: $item-list-padding-x;
text-align: left;
margin-left: 0 !important;
margin-right: auto;
flex-basis: calc(100% - 40px);
}
&.item-col-actions {
}
&.item-col-img {
padding-left: $item-list-padding-x;
flex-basis: 69px + $item-list-padding-x;
}
&.item-col-sales {
text-align: left;
}
&.item-col-stats {
text-align: center;
}
&.item-col-category {
text-align: center;
}
&.item-col-author {
text-align: center;
}
&.item-col-date {
padding-right: $item-list-padding-x;
text-align: right;
white-space: nowrap;
flex-basis: 100px;
flex-basis: 0;
flex-grow: $item-list-col-grow;
}
}
}
}
// Small Mobile view
@include media(xs) {
.item-list .item {
border: none;
font-size: 0.9rem;
margin-bottom: 10px;
background-color: #fff;
box-shadow: 1px 1px 5px fade-out($color-text-light, 0.9);
.item-col {
text-align: right;
border-bottom: 1px solid $color-divider;
padding-left: $item-list-padding-x;
&[class^=item-col] {
flex-basis: 100%;
}
&.item-col-check {
display: none;
}
&.item-col-img {
.item-img {
padding-bottom: 65%;
}
}
&.item-col-title {
text-align: left;
padding-bottom: 0;
border: none;
flex-grow: 1;
flex-basis: 0;
.item-heading {
display: none;
}
.item-title {
font-size: 1rem;
line-height: 1.4rem;
}
}
&.item-col-actions-dropdown {
border: none;
padding-bottom: 0;
}
&.item-col-sales {
text-align: left;
}
&.item-col-stats {
text-align: left;
}
&.item-col-category {
text-align: left;
}
&.item-col-author {
text-align: left;
}
&.item-col-date {
text-align: left;
}
}
}
}
}
@@ -0,0 +1,73 @@
.error-card {
width: 410px;
min-height: 330px;
margin: 60px auto;
.error-title {
font-size: 150px;
line-height: 150px;
font-weight: 700;
color: #252932;
text-align: center;
text-shadow: rgba(61, 61, 61, 0.3) .5px .5px, rgba(61, 61, 61, 0.2) 1px 1px, rgba(61, 61, 61, 0.3) 1.5px 1.5px;
}
.error-sub-title {
font-weight: 100;
text-align: center;
}
.error-container {
text-align: center;
visibility: hidden;
&.visible {
visibility: visible;
}
}
&.global {
position: absolute;
top: 50%;
left: 50%;
transform: translateY(-50%) translateX(-50%);
margin: 0;
.error-title {
color: #ffffff;
}
.error-sub-title,
.error-container {
color: #ffffff;
}
}
}
@include media(md) {
.error-card {
width: 50%;
&.global {
position: relative;
top: 25%;
left: 0;
transform: inherit;
margin: 40px auto;
}
}
}
@include media-down(sm) {
.error-card {
width: 90%;
&.global {
position: relative;
top: 25%;
left: 0;
transform: inherit;
margin: 40px auto;
}
}
}
@@ -0,0 +1,77 @@
.table-flip-scroll table {
width: 100%
}
@media only screen and (max-width: 800px) {
.table-flip-scroll .flip-content:after,
.table-flip-scroll .flip-header:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0
}
.table-flip-scroll html .flip-content,
.table-flip-scroll html .flip-header {
-ms-zoom: 1;
zoom: 1
}
.table-flip-scroll *:first-child+html .flip-content,
.table-flip-scroll *:first-child+html .flip-header {
-ms-zoom: 1;
zoom: 1
}
.table-flip-scroll table {
width: 100%;
border-collapse: collapse;
border-spacing: 0;
display: block;
position: relative
}
.table-flip-scroll th,
.table-flip-scroll td {
margin: 0;
vertical-align: top
}
.table-flip-scroll th:last-child,
.table-flip-scroll td:last-child {
border-bottom: 1px solid #ddd
}
.table-flip-scroll th {
border: 0 !important;
border-right: 1px solid #ddd !important;
//font-size: 13px !important;
//padding: 5px;
width: auto !important;
display: block;
text-align: right;
}
.table-flip-scroll td {
display: block;
text-align: left;
border: 0 !important;
border-bottom: 1px solid #ddd !important;
}
.table-flip-scroll thead {
display: block;
float: left
}
.table-flip-scroll thead tr {
display: block;
}
.table-flip-scroll tbody {
display: block;
width: auto;
position: relative;
overflow-x: auto;
white-space: nowrap
}
.table-flip-scroll tbody tr {
display: inline-block;
vertical-align: top;
margin-left: -5px;
border-left: 1px solid #ddd
}
}
@@ -0,0 +1,72 @@
.auth {
position: absolute;
width: 100%;
height: 100%;
left: 0;
background-color: #667380;
overflow-x: hidden;
overflow-y: auto;
}
.auth-container {
width: 450px;
min-height: 330px;
position: absolute;
top: 50%;
left: 50%;
transform: translateY(-50%) translateX(-50%);
.auth-header {
//background-color: $color-primary;
text-align: center;
border-bottom: 1px solid $color-primary;
}
.auth-title {
color: #97A4B1;
padding: 20px;
line-height: 30px;
font-size: 26px;
font-weight: 600;
margin: 0;
}
.auth-content {
padding: 30px 50px;
min-height: 260px;
}
.forgot-btn {
line-height: 28px;
}
.checkbox {
label {
padding: 0;
}
a {
vertical-align: text-top;
}
span {
color: #4f5f6f;
}
}
}
@include media-down(sm) {
.auth-container {
width: 100%;
position: relative;
left: 0;
top: 0;
transform: inherit;
margin: 0;
margin-bottom: 10px;
.auth-content {
padding: 30px 25px;
}
}
}
-2
View File
@@ -1,2 +0,0 @@
// @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
@@ -0,0 +1,65 @@
//
// Base styles
//
.alert {
padding: $alert-padding;
margin-bottom: $spacer-y;
border: $alert-border-width solid transparent;
@include border-radius($alert-border-radius);
// Improve alignment and spacing of inner content
> p,
> ul {
margin-bottom: 0;
}
> p + p {
margin-top: 5px;
}
}
// Headings for larger alerts
.alert-heading {
// Specified to prevent conflicts of changing $headings-color
color: inherit;
}
// Provide class for links that match alerts
.alert-link {
font-weight: $alert-link-font-weight;
}
// Dismissible alerts
//
// Expand the right padding and account for the close button's positioning.
.alert-dismissible {
padding-right: ($alert-padding + 20);
// Adjust close link position
.close {
position: relative;
top: -2px;
right: -21px;
color: inherit;
}
}
// Alternate styles
//
// Generate contextual modifier classes for colorizing the alert.
.alert-success {
@include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
}
.alert-info {
@include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
}
.alert-warning {
@include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
}
.alert-danger {
@include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
}
@@ -0,0 +1,27 @@
.fade {
opacity: 0;
transition: opacity .15s linear;
&.in {
opacity: 1;
}
}
.collapse {
display: none;
&.in {
display: block;
}
// tr&.in { display: table-row; }
// tbody&.in { display: table-row-group; }
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
transition-timing-function: ease;
transition-duration: .35s;
transition-property: height;
}
@@ -0,0 +1,23 @@
.breadcrumb {
padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal;
margin-bottom: $spacer-y;
list-style: none;
background-color: $breadcrumb-bg;
@include border-radius($border-radius);
@include clearfix;
> li {
float: left;
+ li::before {
padding-right: .5rem;
padding-left: .5rem;
color: $breadcrumb-divider-color;
content: "#{$breadcrumb-divider}";
}
}
> .active {
color: $breadcrumb-active-color;
}
}
@@ -0,0 +1,224 @@
// 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
&:focus,
&:active,
&.active {
z-index: 2;
}
@include hover {
z-index: 2;
}
}
}
// Prevent double borders when buttons are next to each other
.btn-group {
.btn + .btn,
.btn + .btn-group,
.btn-group + .btn,
.btn-group + .btn-group {
margin-left: -$input-btn-border-width;
}
}
// Optional: Group multiple button groups together for a toolbar
.btn-toolbar {
margin-left: -5px; // Offset the first child's margin
@include clearfix();
.btn-group,
.input-group {
float: left;
}
> .btn,
> .btn-group,
> .input-group {
margin-left: 5px;
}
}
.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;
&:not(:last-child):not(.dropdown-toggle) {
@include 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:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
@include border-left-radius(0);
}
// 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:not(:last-child) {
> .btn:last-child,
> .dropdown-toggle {
@include border-right-radius(0);
}
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
@include border-left-radius(0);
}
// On active and open, don't show outline
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
outline: 0;
}
// Sizing
//
// Remix the default button sizing classes into new ones for easier manipulation.
.btn-group-sm > .btn { @extend .btn-sm; }
.btn-group-lg > .btn { @extend .btn-lg; }
//
// Split button dropdowns
//
// Give the line between buttons some depth
.btn-group > .btn + .dropdown-toggle {
padding-right: 8px;
padding-left: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
padding-right: 12px;
padding-left: 12px;
}
// 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 {
@include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
// Show no shadow for `.btn-link` since it has no other button styles.
&.btn-link {
@include box-shadow(none);
}
}
// Reposition the caret
.btn .caret {
margin-left: 0;
}
// Carets in other button sizes
.btn-lg .caret {
border-width: $caret-width-lg $caret-width-lg 0;
border-bottom-width: 0;
}
// Upside down carets for .dropup
.dropup .btn-lg .caret {
border-width: 0 $caret-width-lg $caret-width-lg;
}
//
// Vertical button groups
//
.btn-group-vertical {
> .btn,
> .btn-group,
> .btn-group > .btn {
display: block;
float: none;
width: 100%;
max-width: 100%;
}
// Clear floats so dropdown menus can be properly placed
> .btn-group {
@include clearfix();
> .btn {
float: none;
}
}
> .btn + .btn,
> .btn + .btn-group,
> .btn-group + .btn,
> .btn-group + .btn-group {
margin-top: -$input-btn-border-width;
margin-left: 0;
}
}
.btn-group-vertical > .btn {
&:not(:first-child):not(:last-child) {
border-radius: 0;
}
&:first-child:not(:last-child) {
border-top-right-radius: $btn-border-radius;
@include border-bottom-radius(0);
}
&:last-child:not(:first-child) {
border-bottom-left-radius: $btn-border-radius;
@include border-top-radius(0);
}
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) {
> .btn:last-child,
> .dropdown-toggle {
@include border-bottom-radius(0);
}
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
@include border-top-radius(0);
}
// Checkbox and radio options
//
// In order to support the browser's form validation feedback, powered by the
// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
// `display: none;` or `visibility: hidden;` as that also hides the popover.
// Simply visually hiding the inputs via `opacity` would leave them clickable in
// certain cases which is prevented by using `clip` and `pointer-events`.
// This way, we ensure a DOM element is visible to position the popover from.
//
// See https://github.com/twbs/bootstrap/pull/12794 and
// https://github.com/twbs/bootstrap/pull/14559 for more information.
[data-toggle="buttons"] {
> .btn,
> .btn-group > .btn {
input[type="radio"],
input[type="checkbox"] {
position: absolute;
clip: rect(0,0,0,0);
pointer-events: none;
}
}
}
@@ -0,0 +1,173 @@
//
// Base styles
//
.btn {
display: inline-block;
font-weight: $btn-font-weight;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
user-select: none;
border: $input-btn-border-width solid transparent;
@include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $line-height, $btn-border-radius);
@include transition(all .2s ease-in-out);
&,
&:active,
&.active {
&:focus,
&.focus {
@include tab-focus();
}
}
@include hover-focus {
text-decoration: none;
}
&.focus {
text-decoration: none;
}
&:active,
&.active {
background-image: none;
outline: 0;
@include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
}
&.disabled,
&:disabled {
cursor: $cursor-disabled;
opacity: .65;
@include box-shadow(none);
}
}
// Future-proof disabling of clicks on `<a>` elements
a.btn.disabled,
fieldset[disabled] a.btn {
pointer-events: none;
}
//
// Alternate buttons
//
.btn-primary {
@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
}
.btn-secondary {
@include button-variant($btn-secondary-color, $btn-secondary-bg, $btn-secondary-border);
}
.btn-info {
@include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
}
.btn-success {
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
}
.btn-warning {
@include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
}
.btn-danger {
@include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
}
// Remove all backgrounds
.btn-primary-outline {
@include button-outline-variant($btn-primary-bg);
}
.btn-secondary-outline {
@include button-outline-variant($btn-secondary-border);
}
.btn-info-outline {
@include button-outline-variant($btn-info-bg);
}
.btn-success-outline {
@include button-outline-variant($btn-success-bg);
}
.btn-warning-outline {
@include button-outline-variant($btn-warning-bg);
}
.btn-danger-outline {
@include button-outline-variant($btn-danger-bg);
}
//
// Link buttons
//
// Make a button look and behave like a link
.btn-link {
font-weight: normal;
color: $link-color;
border-radius: 0;
&,
&:active,
&.active,
&:disabled {
background-color: transparent;
@include box-shadow(none);
}
&,
&:focus,
&:active {
border-color: transparent;
}
@include hover {
border-color: transparent;
}
@include hover-focus {
color: $link-hover-color;
text-decoration: $link-hover-decoration;
background-color: transparent;
}
&:disabled {
@include hover-focus {
color: $btn-link-disabled-color;
text-decoration: none;
}
}
}
//
// Button Sizes
//
.btn-lg {
// line-height: ensure even-numbered height of button next to large input
@include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $line-height-lg, $btn-border-radius-lg);
}
.btn-sm {
// line-height: ensure proper height of button next to small input
@include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $line-height-sm, $btn-border-radius-sm);
}
//
// Block button
//
.btn-block {
display: block;
width: 100%;
}
// Vertically space out multiple block buttons
.btn-block + .btn-block {
margin-top: 5px;
}
// Specificity overrides
input[type="submit"],
input[type="reset"],
input[type="button"] {
&.btn-block {
width: 100%;
}
}
@@ -0,0 +1,292 @@
//
// Base styles
//
.card {
position: relative;
display: block;
margin-bottom: $card-spacer-y;
background-color: $card-bg;
border: $card-border-width solid $card-border-color;
@include border-radius($card-border-radius);
}
.card-block {
padding: $card-spacer-x;
}
.card-title {
margin-bottom: $card-spacer-y;
}
.card-subtitle {
margin-top: -($card-spacer-y / 2);
margin-bottom: 0;
}
.card-text:last-child {
margin-bottom: 0;
}
// .card-actions {
// padding: $card-spacer-y $card-spacer-x;
// .card-link + .card-link {
// margin-left: $card-spacer-x;
// }
// }
.card-link {
@include hover {
text-decoration: none;
}
+ .card-link {
margin-left: $card-spacer-x;
}
}
@if $enable-rounded {
.card {
> .list-group:first-child {
.list-group-item:first-child {
border-radius: $card-border-radius $card-border-radius 0 0;
}
}
> .list-group:last-child {
.list-group-item:last-child {
border-radius: 0 0 $card-border-radius $card-border-radius;
}
}
}
}
//
// Optional textual caps
//
.card-header {
padding: $card-spacer-y $card-spacer-x;
background-color: $card-cap-bg;
border-bottom: $card-border-width solid $card-border-color;
&:first-child {
@include border-radius($card-border-radius-inner $card-border-radius-inner 0 0);
}
}
.card-footer {
padding: $card-spacer-y $card-spacer-x;
background-color: $card-cap-bg;
border-top: $card-border-width solid $card-border-color;
&:last-child {
@include border-radius(0 0 $card-border-radius-inner $card-border-radius-inner);
}
}
//
// Background variations
//
.card-primary {
@include card-variant($brand-primary, $brand-primary);
}
.card-success {
@include card-variant($brand-success, $brand-success);
}
.card-info {
@include card-variant($brand-info, $brand-info);
}
.card-warning {
@include card-variant($brand-warning, $brand-warning);
}
.card-danger {
@include card-variant($brand-danger, $brand-danger);
}
// Remove all backgrounds
.card-primary-outline {
@include card-outline-variant($btn-primary-bg);
}
.card-secondary-outline {
@include card-outline-variant($btn-secondary-border);
}
.card-info-outline {
@include card-outline-variant($btn-info-bg);
}
.card-success-outline {
@include card-outline-variant($btn-success-bg);
}
.card-warning-outline {
@include card-outline-variant($btn-warning-bg);
}
.card-danger-outline {
@include card-outline-variant($btn-danger-bg);
}
//
// Inverse text within a card for use with dark backgrounds
//
.card-inverse {
@include card-inverse;
}
//
// Blockquote
//
.card-blockquote {
padding: 0;
margin-bottom: 0;
border-left: 0;
}
// Card image
.card-img {
// margin: -1.325rem;
@include border-radius(.25rem);
}
.card-img-overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 1.25rem;
}
// Card image caps
.card-img-top {
@include border-radius($card-border-radius-inner $card-border-radius-inner 0 0);
}
.card-img-bottom {
@include border-radius(0 0 $card-border-radius-inner $card-border-radius-inner);
}
//
// Card set
//
@if $enable-flex {
@include media-breakpoint-up(sm) {
.card-deck {
display: flex;
flex-flow: row wrap;
margin-right: -.625rem;
margin-left: -.625rem;
.card {
flex: 1 0 0;
margin-right: .625rem;
margin-left: .625rem;
}
}
}
} @else {
@include media-breakpoint-up(sm) {
.card-deck {
display: table;
table-layout: fixed;
border-spacing: 1.25rem 0;
.card {
display: table-cell;
width: 1%;
vertical-align: top;
}
}
.card-deck-wrapper {
margin-right: -1.25rem;
margin-left: -1.25rem;
}
}
}
//
// Card groups
//
@include media-breakpoint-up(sm) {
.card-group {
@if $enable-flex {
display: flex;
flex-flow: row wrap;
} @else {
display: table;
width: 100%;
table-layout: fixed;
}
.card {
@if $enable-flex {
flex: 1 0 0;
} @else {
display: table-cell;
vertical-align: top;
}
+ .card {
margin-left: 0;
border-left: 0;
}
// Handle rounded corners
@if $enable-rounded {
&:first-child {
@include border-right-radius(0);
.card-img-top {
border-top-right-radius: 0;
}
.card-img-bottom {
border-bottom-right-radius: 0;
}
}
&:last-child {
@include border-left-radius(0);
.card-img-top {
border-top-left-radius: 0;
}
.card-img-bottom {
border-bottom-left-radius: 0;
}
}
&:not(:first-child):not(:last-child) {
border-radius: 0;
.card-img-top,
.card-img-bottom {
border-radius: 0;
}
}
}
}
}
}
//
// Card
//
@include media-breakpoint-up(sm) {
.card-columns {
column-count: 3;
column-gap: 1.25rem;
.card {
display: inline-block;
width: 100%; // Don't let them exceed the column width
}
}
}
@@ -0,0 +1,252 @@
// Wrapper for the slide container and indicators
.carousel {
position: relative;
}
.carousel-inner {
position: relative;
width: 100%;
overflow: hidden;
> .carousel-item {
position: relative;
display: none;
transition: .6s ease-in-out left;
// Account for jankitude on images
> img,
> a > img {
@extend .img-fluid;
line-height: 1;
}
// WebKit CSS3 transforms for supported devices
@media all and (transform-3d), (-webkit-transform-3d) {
transition: transform .6s ease-in-out;
backface-visibility: hidden;
perspective: 1000px;
&.next,
&.active.right {
left: 0;
transform: translate3d(100%, 0, 0);
}
&.prev,
&.active.left {
left: 0;
transform: translate3d(-100%, 0, 0);
}
&.next.left,
&.prev.right,
&.active {
left: 0;
transform: translate3d(0, 0, 0);
}
}
}
> .active,
> .next,
> .prev {
display: block;
}
> .active {
left: 0;
}
> .next,
> .prev {
position: absolute;
top: 0;
width: 100%;
}
> .next {
left: 100%;
}
> .prev {
left: -100%;
}
> .next.left,
> .prev.right {
left: 0;
}
> .active.left {
left: -100%;
}
> .active.right {
left: 100%;
}
}
//
// Left/right controls for nav
//
.carousel-control {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: $carousel-control-width;
font-size: $carousel-control-font-size;
color: $carousel-control-color;
text-align: center;
text-shadow: $carousel-text-shadow;
opacity: $carousel-control-opacity;
// We can't have this transition here because WebKit cancels the carousel
// animation if you trip this while in the middle of another animation.
// Set gradients for backgrounds
&.left {
@include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
}
&.right {
right: 0;
left: auto;
@include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
}
// Hover/focus state
@include hover-focus {
color: $carousel-control-color;
text-decoration: none;
outline: 0;
opacity: .9;
}
// Toggles
.icon-prev,
.icon-next {
position: absolute;
top: 50%;
z-index: 5;
display: inline-block;
width: 20px;
height: 20px;
margin-top: -10px;
font-family: serif;
line-height: 1;
}
.icon-prev {
left: 50%;
margin-left: -10px;
}
.icon-next {
right: 50%;
margin-right: -10px;
}
.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)
}
}
}
// Optional indicator pips
//
// Add an unordered list with the following class and add a list item for each
// slide your carousel holds.
.carousel-indicators {
position: absolute;
bottom: 10px;
left: 50%;
z-index: 15;
width: 60%;
padding-left: 0;
margin-left: -30%;
text-align: center;
list-style: none;
li {
display: inline-block;
width: 10px;
height: 10px;
margin: 1px;
text-indent: -999px;
cursor: pointer;
// IE9 hack for event handling
//
// Internet Explorer 9 does not properly handle clicks on elements with a `background-color` of `transparent`,
// so we use `rgba(0,0,0,0)` instead since it's a non-buggy equivalent.
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
background-color: rgba(0,0,0,0); // IE9
border: 1px solid $carousel-indicator-border-color;
border-radius: 10px;
}
.active {
width: 12px;
height: 12px;
margin: 0;
background-color: $carousel-indicator-active-bg;
}
}
// Optional captions
//
// Hidden by default for smaller viewports.
.carousel-caption {
position: absolute;
right: 15%;
bottom: 20px;
left: 15%;
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
}
}
//
// Responsive variations
//
@include media-breakpoint-up(sm) {
// Scale up the controls a smidge
.carousel-control {
.icon-prev,
.icon-next {
width: 30px;
height: 30px;
margin-top: -15px;
font-size: 30px;
}
.icon-prev {
margin-left: -15px;
}
.icon-next {
margin-right: -15px;
}
}
// Show and left align the captions
.carousel-caption {
right: 20%;
left: 20%;
padding-bottom: 30px;
}
// Move up the indicators
.carousel-indicators {
bottom: 20px;
}
}
@@ -0,0 +1,28 @@
.close {
float: right;
font-size: ($font-size-base * 1.5);
font-weight: $close-font-weight;
line-height: 1;
color: $close-color;
text-shadow: $close-text-shadow;
opacity: .2;
@include hover-focus {
color: $close-color;
text-decoration: none;
cursor: pointer;
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="#"`.
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
button.close {
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
}
@@ -0,0 +1,58 @@
// Inline and block code styles
code,
kbd,
pre,
samp {
font-family: $font-family-monospace;
}
// Inline code
code {
padding: .2rem .4rem;
font-size: 90%;
color: $code-color;
background-color: $code-bg;
@include border-radius($border-radius);
}
// User input typically entered via keyboard
kbd {
padding: .2rem .4rem;
font-size: 90%;
color: $kbd-color;
background-color: $kbd-bg;
@include border-radius($border-radius-sm);
@include box-shadow(inset 0 -.1rem 0 rgba(0,0,0,.25));
kbd {
padding: 0;
font-size: 100%;
font-weight: $nested-kbd-font-weight;
@include box-shadow(none);
}
}
// Blocks of code
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
font-size: 90%;
line-height: $line-height;
color: $pre-color;
// Account for some code outputs that place code tags in pre tags
code {
padding: 0;
font-size: inherit;
color: inherit;
background-color: transparent;
border-radius: 0;
}
}
// Enable scrollable blocks of code
.pre-scrollable {
max-height: $pre-scrollable-max-height;
overflow-y: scroll;
}
@@ -0,0 +1,226 @@
// Embedded icons from Open Iconic.
// Released under MIT and copyright 2014 Waybury.
// http://useiconic.com/open
// Checkboxes and radios
//
// Base class takes care of all the key behavioral aspects.
.c-input {
position: relative;
display: inline;
padding-left: 1.5rem;
color: #555;
cursor: pointer;
> input {
position: absolute;
z-index: -1; // Put the input behind the label so it doesn't overlay text
opacity: 0;
&:checked ~ .c-indicator {
color: #fff;
background-color: #0074d9;
@include box-shadow(none);
}
&:focus ~ .c-indicator {
// the mixin is not used here to make sure there is feedback
box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9;
}
&:active ~ .c-indicator {
color: #fff;
background-color: #84c6ff;
@include box-shadow(none);
}
}
+ .c-input {
margin-left: 1rem;
}
}
// Custom indicator
//
// Generates a shadow element to create our makeshift checkbox/radio background.
.c-indicator {
position: absolute;
top: 0;
left: 0;
display: block;
width: 1rem;
height: 1rem;
font-size: 65%;
line-height: 1rem;
color: #eee;
text-align: center;
user-select: none;
background-color: #eee;
background-repeat: no-repeat;
background-position: center center;
background-size: 50% 50%;
@include box-shadow(inset 0 .125rem .125rem rgba(0,0,0,.1));
}
// Checkboxes
//
// Tweak just a few things for checkboxes.
.c-checkbox {
.c-indicator {
border-radius: .25rem;
}
input:checked ~ .c-indicator {
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=);
}
input:indeterminate ~ .c-indicator {
background-color: #0074d9;
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K);
@include box-shadow(none);
}
}
// Radios
//
// Tweak just a few things for radios.
.c-radio {
.c-indicator {
border-radius: 50%;
}
input:checked ~ .c-indicator {
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==);
}
}
// Layout options
//
// By default radios and checkboxes are `inline-block` with no additional spacing
// set. Use these optional classes to tweak the layout.
.c-inputs-stacked {
.c-input {
display: inline;
&::after {
display: block;
margin-bottom: .25rem;
content: "";
}
+ .c-input {
margin-left: 0;
}
}
}
// Select
//
// Replaces the browser default select with a custom one, mostly pulled from
// http://primercss.io.
//
// Includes IE9-specific hacks (noted by ` \9`).
.c-select {
display: inline-block;
max-width: 100%;
padding: .375rem 1.75rem .375rem .75rem;
padding-right: .75rem \9;
color: $input-color;
vertical-align: middle;
background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC) no-repeat right .75rem center;
background-image: none \9;
background-size: 8px 10px;
border: $input-btn-border-width solid $input-border-color;
// Use vendor prefixes as `appearance` isn't part of the CSS spec.
-moz-appearance: none;
-webkit-appearance: none;
&:focus {
border-color: #51a7e8;
outline: none;
@include box-shadow(inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(81, 167, 232, 0.5));
}
// Hides the default caret in IE11
&::-ms-expand {
opacity: 0;
}
}
.c-select-sm {
padding-top: 3px;
padding-bottom: 3px;
font-size: 12px;
&:not([multiple]) {
height: 26px;
min-height: 26px;
}
}
// File
//
// Custom file input.
.file {
position: relative;
display: inline-block;
height: 2.5rem;
cursor: pointer;
}
.file input {
min-width: 14rem;
margin: 0;
filter: alpha(opacity = 0);
opacity: 0;
}
.file-custom {
position: absolute;
top: 0;
right: 0;
left: 0;
z-index: 5;
height: 2.5rem;
padding: .5rem 1rem;
line-height: 1.5;
color: #555;
user-select: none;
background-color: #fff;
border: $input-btn-border-width solid #ddd;
border-radius: .25rem;
@include box-shadow(inset 0 .2rem .4rem rgba(0,0,0,.05));
}
.file-custom::after {
content: "Choose file...";
}
.file-custom::before {
position: absolute;
top: -.075rem;
right: -.075rem;
bottom: -.075rem;
z-index: 6;
display: block;
height: 2.5rem;
padding: .5rem 1rem;
line-height: 1.5;
color: #555;
content: "Browse";
background-color: #eee;
border: $input-btn-border-width solid #ddd;
border-radius: 0 .25rem .25rem 0;
}
// Focus state
.file input:focus ~ .file-custom {
@include box-shadow(0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9);
}
@@ -0,0 +1,193 @@
// The dropdown wrapper (`<div>`)
.dropup,
.dropdown {
position: relative;
}
.dropdown-toggle {
// Generate the caret automatically
&::after {
display: inline-block;
width: 0;
height: 0;
margin-right: .25rem;
margin-left: .25rem;
vertical-align: middle;
content: "";
border-top: $caret-width solid;
border-right: $caret-width solid transparent;
border-left: $caret-width solid transparent;
}
// Prevent the focus on the dropdown toggle when closing dropdowns
&:focus {
outline: 0;
}
}
.dropup {
.dropdown-toggle {
&::after {
border-top: 0;
border-bottom: $caret-width solid;
}
}
}
// The dropdown menu
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
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
font-size: $font-size-base;
color: $body-color;
text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
list-style: none;
background-color: $dropdown-bg;
background-clip: padding-box;
border: $dropdown-border-width solid $dropdown-border-color;
@include border-radius($border-radius);
@include box-shadow(0 6px 12px rgba(0,0,0,.175));
}
// Dividers (basically an `<hr>`) within the dropdown
.dropdown-divider {
@include nav-divider($dropdown-divider-bg);
}
// Links, buttons, and more within the dropdown menu
//
// `<button>`-specific styles are denoted with `// For <button>s`
.dropdown-item {
display: block;
width: 100%; // For `<button>`s
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: $line-height;
color: $dropdown-link-color;
text-align: inherit; // For `<button>`s
white-space: nowrap; // prevent links from randomly breaking onto new lines
background: none; // For `<button>`s
border: 0; // For `<button>`s
@include hover-focus {
color: $dropdown-link-hover-color;
text-decoration: none;
background-color: $dropdown-link-hover-bg;
}
// Active state
&.active {
@include plain-hover-focus {
color: $dropdown-link-active-color;
text-decoration: none;
background-color: $dropdown-link-active-bg;
outline: 0;
}
}
// Disabled state
//
// Gray out text and ensure the hover/focus state remains gray
&.disabled {
@include plain-hover-focus {
color: $dropdown-link-disabled-color;
}
// Nuke hover/focus effects
@include hover-focus {
text-decoration: none;
cursor: $cursor-disabled;
background-color: transparent;
background-image: none; // Remove CSS gradient
@include reset-filter();
}
}
}
// Open state for the dropdown
.open {
// Show the menu
> .dropdown-menu {
display: block;
}
// Remove the outline when :focus is triggered
> a {
outline: 0;
}
}
// Menu positioning
//
// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
// menu with the parent.
.dropdown-menu-right {
right: 0;
left: auto; // Reset the default from `.dropdown-menu`
}
// With v3, we enabled auto-flipping if you have a dropdown within a right
// aligned nav component. To enable the undoing of that, we provide an override
// to restore the default dropdown menu alignment.
//
// This is only for left-aligning a dropdown menu within a `.navbar-right` or
// `.pull-right` nav component.
.dropdown-menu-left {
right: auto;
left: 0;
}
// Dropdown section headers
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: $font-size-sm;
line-height: $line-height;
color: $dropdown-header-color;
white-space: nowrap; // as with > li > a
}
// Backdrop to catch body clicks on mobile, etc.
.dropdown-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: ($zindex-dropdown - 10);
}
// Right aligned dropdowns
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
// Allow for dropdowns to go bottom up (aka, dropup-menu)
//
// Just add .dropup after the standard .dropdown class and you're set.
// TODO: abstract this so that the navbar fixed styles are not placed here?
.dropup,
.navbar-fixed-bottom .dropdown {
// Reverse the caret
.caret {
content: "";
border-top: 0;
border-bottom: $caret-width solid;
}
// Different positioning for bottom up menu
.dropdown-menu {
top: auto;
bottom: 100%;
margin-bottom: 2px;
}
}
@@ -0,0 +1,452 @@
//
// Textual form controls
//
.form-control {
display: block;
width: 100%;
// // Make inputs at least the height of their button counterpart (base line-height + padding + border)
// height: $input-height;
padding: $input-padding-y $input-padding-x;
font-size: $font-size-base;
line-height: $line-height;
color: $input-color;
background-color: $input-bg;
// Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214.
background-image: none;
border: $input-btn-border-width solid $input-border-color;
// Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
@include border-radius($input-border-radius);
@include box-shadow($input-box-shadow);
@include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
// Make inputs at least the height of their button counterpart (base line-height + padding + border).
// Only apply the height to textual inputs and some selects.
// &:not(textarea),
// &:not(select[size]),
// &:not(select[multiple]) {
// height: $input-height;
// }
// Unstyle the caret on `<select>`s in IE10+.
&::-ms-expand {
background-color: transparent;
border: 0;
}
// Customize the `:focus` state to imitate native WebKit styles.
@include form-control-focus();
// Placeholder
&::placeholder {
color: $input-color-placeholder;
// Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
opacity: 1;
}
// Disabled and read-only inputs
//
// HTML5 says that controls 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] {
background-color: $input-bg-disabled;
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
opacity: 1;
}
&:disabled {
cursor: $cursor-disabled;
}
}
// Make file inputs better match text inputs by forcing them to new lines.
.form-control-file,
.form-control-range {
display: block;
}
//
// Labels
//
// For use with horizontal and inline forms, when you need the label text to
// align with the form controls.
.form-control-label {
padding: $input-padding-y $input-padding-x;
margin-bottom: 0; // Override the `<label>` default
}
// Todo: clear this up
// Special styles for iOS temporal inputs
//
// In Mobile Safari, setting `display: block` on temporal inputs causes the
// text within the input to become vertically misaligned. As a workaround, we
// set a pixel line-height that matches the given height of the input, but only
// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
//
// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
@media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
&.form-control {
line-height: $input-height;
}
&.input-sm,
.input-group-sm &.form-control {
line-height: $input-height-sm;
}
&.input-lg,
.input-group-lg &.form-control {
line-height: $input-height-lg;
}
}
}
// Static form control text
//
// Apply class to an element to make any string of text align with labels in a
// horizontal form layout.
.form-control-static {
min-height: $input-height;
// Size it appropriately next to real form controls
padding-top: $input-padding-y;
padding-bottom: $input-padding-y;
// Remove default margin from `p`
margin-bottom: 0;
&.form-control-sm,
&.form-control-lg {
padding-right: 0;
padding-left: 0;
}
}
// Form control sizing
//
// Build on `.form-control` with modifier classes to decrease or increase the
// height and font-size of form controls.
//
// The `.form-group-* form-control` variations are sadly duplicated to avoid the
// issue documented in https://github.com/twbs/bootstrap/issues/15074.
.form-control-sm {
// height: $input-height-sm;
padding: $input-padding-y-sm $input-padding-x-sm;
font-size: $font-size-sm;
line-height: $line-height-sm;
@include border-radius($input-border-radius-sm);
}
.form-control-lg {
// height: $input-height-lg;
padding: $input-padding-y-lg $input-padding-x-lg;
font-size: $font-size-lg;
line-height: $line-height-lg;
@include border-radius($input-border-radius-lg);
}
// 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: $form-group-margin-bottom;
}
// Checkboxes and radios
//
// Indent the labels to position radios/checkboxes as hanging controls.
.radio,
.checkbox {
position: relative;
display: block;
// margin-top: ($spacer * .75);
margin-bottom: ($spacer * .75);
label {
padding-left: 1.25rem;
margin-bottom: 0;
font-weight: normal;
cursor: pointer;
// When there's no labels, don't position the input.
input:only-child {
position: static;
}
}
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
position: absolute;
margin-top: .25rem;
// margin-top: 4px \9;
margin-left: -1.25rem;
}
.radio + .radio,
.checkbox + .checkbox {
// Move up sibling radios or checkboxes for tighter spacing
margin-top: -.25rem;
}
// Radios and checkboxes on same line
.radio-inline,
.checkbox-inline {
position: relative;
display: inline-block;
padding-left: 1.25rem;
margin-bottom: 0;
font-weight: normal;
vertical-align: middle;
cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
margin-top: 0;
margin-left: .75rem;
}
// Apply same disabled cursor tweak as for inputs
// Some special care is needed because <label>s don't inherit their parent's `cursor`.
//
// Note: Neither radios nor checkboxes can be readonly.
input[type="radio"],
input[type="checkbox"] {
&:disabled,
&.disabled {
cursor: $cursor-disabled;
}
}
// These classes are used directly on <label>s
.radio-inline,
.checkbox-inline {
&.disabled {
cursor: $cursor-disabled;
}
}
// These classes are used on elements with <label> descendants
.radio,
.checkbox {
&.disabled {
label {
cursor: $cursor-disabled;
}
}
}
// Form control feedback states
//
// Apply contextual and semantic states to individual form controls.
.form-control-success,
.form-control-warning,
.form-control-danger {
padding-right: ($input-padding-x * 3);
background-repeat: no-repeat;
background-position: center right ($input-height * .25);
background-size: ($input-height * .65) ($input-height * .65);
}
// Form validation states
.has-success {
@include form-control-validation($brand-success);
.form-control-success {
background-image: url($form-icon-success);
}
}
.has-warning {
@include form-control-validation($brand-warning);
.form-control-warning {
background-image: url($form-icon-warning);
}
}
.has-danger {
@include form-control-validation($brand-danger);
.form-control-danger {
background-image: url($form-icon-danger);
}
}
// .form-control-success {
// background-image: url("#{$form-icon-success}");
// border-color: $brand-success;
// }
//
// .form-control-warning {
// background-image: url("#{$form-icon-warning}");
// border-color: $brand-warning;
// }
//
// .form-control-error {
// background-image: url("#{$form-icon-danger}");
// border-color: $brand-danger;
// }
// .has-feedback {
// // Enable absolute positioning
// position: relative;
//
// // Ensure icons don't overlap text
// .form-control {
// padding-right: ($input-height * 1.25);
// }
// }
// // Feedback icon
// .form-control-feedback {
// position: absolute;
// top: 0;
// right: 0;
// z-index: 2; // Ensure icon is above input groups
// display: block;
// width: $input-height;
// height: $input-height;
// line-height: $input-height;
// text-align: center;
// pointer-events: none;
// }
// .input-lg + .form-control-feedback,
// .input-group-lg + .form-control-feedback {
// width: $input-height-lg;
// height: $input-height-lg;
// line-height: $input-height-lg;
// }
// .input-sm + .form-control-feedback,
// .input-group-sm + .form-control-feedback {
// width: $input-height-sm;
// height: $input-height-sm;
// line-height: $input-height-sm;
// }
//
// // Form validation states
// .has-success {
// @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
// }
// .has-warning {
// @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
// }
// .has-danger {
// @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
// }
//
// // Reposition feedback icon if input has visible label above
// .has-feedback label {
//
// ~ .form-control-feedback {
// // TODO: redo this since we nuked the `$line-height-computed`
// top: 0; // Height of the `label` and its margin
// }
//
// &.sr-only ~ .form-control-feedback {
// top: 0;
// }
// }
// Inline forms
//
// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
// forms begin stacked on extra small (mobile) devices and then go inline when
// viewports reach <768px.
//
// Requires wrapping inputs and labels with `.form-group` for proper display of
// default HTML form controls and our custom form controls (e.g., input groups).
.form-inline {
// Kick in the inline
@include media-breakpoint-up(sm) {
// Inline-block all the things for "inline"
.form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
// Allow folks to *not* use `.form-group`
.form-control {
display: inline-block;
width: auto; // Prevent labels from stacking above inputs in `.form-group`
vertical-align: middle;
}
// Make static controls behave like regular ones
.form-control-static {
display: inline-block;
}
.input-group {
display: inline-table;
vertical-align: middle;
.input-group-addon,
.input-group-btn,
.form-control {
width: auto;
}
}
// Input groups need that 100% width though
.input-group > .form-control {
width: 100%;
}
.form-control-label {
margin-bottom: 0;
vertical-align: middle;
}
// Remove default margin on radios/checkboxes that were used for stacking, and
// then undo the floating of radios and checkboxes to match.
.radio,
.checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
label {
padding-left: 0;
}
}
.radio input[type="radio"],
.checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
// Re-override the feedback icon.
.has-feedback .form-control-feedback {
top: 0;
}
}
}
@@ -0,0 +1,76 @@
// Container widths
//
// Set the container width, and override it for fixed navbars in media queries.
.container {
@include make-container();
@include make-container-max-widths();
}
// Fluid container
//
// Utilizes the mixin meant for fixed width containers, but without any defined
// width for fluid, full width layouts.
.container-fluid {
@include make-container();
}
// Row
//
// Rows contain and clear the floats of your columns.
@if $enable-grid-classes {
.row {
@include make-row();
}
}
// Columns
//
// Common styles for small and large grid columns
@if $enable-grid-classes {
@include make-grid-columns();
}
// Flex variation
//
// Custom styles for additional flex alignment options.
@if $enable-flex and $enable-grid-classes {
// Flex column reordering
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
.col-#{$breakpoint}-first { order: -1; }
.col-#{$breakpoint}-last { order: 1; }
}
}
// Alignment for every column in row
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
.row-#{$breakpoint}-top { align-items: flex-start; }
.row-#{$breakpoint}-center { align-items: center; }
.row-#{$breakpoint}-bottom { align-items: flex-end; }
}
}
// Alignment per column
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
.col-#{$breakpoint}-top { align-self: flex-start; }
.col-#{$breakpoint}-center { align-self: center; }
.col-#{$breakpoint}-bottom { align-self: flex-end; }
}
}
}
@@ -0,0 +1,53 @@
// Responsive images (ensure images don't scale beyond their parents)
//
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
// We previously tried the "images are responsive by default" approach in Bootstrap v2,
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
// which weren't expecting the images within themselves to be involuntarily resized.
// See also https://github.com/twbs/bootstrap/issues/18178
.img-fluid {
@include img-fluid();
}
// Rounded corners
.img-rounded {
@include border-radius($border-radius-lg);
}
// Image thumbnails
.img-thumbnail {
padding: $thumbnail-padding;
line-height: $line-height;
background-color: $thumbnail-bg;
border: $thumbnail-border-width solid $thumbnail-border-color;
border-radius: $thumbnail-border-radius;
transition: all .2s ease-in-out;
@include box-shadow(0 1px 2px rgba(0,0,0,.075));
// Keep them at most 100% wide
@include img-fluid(inline-block);
}
// Perfect circle
.img-circle {
border-radius: 50%;
}
//
// Figures
//
.figure {
// Ensures the caption's text aligns with the image.
display: inline-block;
}
.figure-img {
margin-bottom: ($spacer-y / 2);
line-height: 1;
}
.figure-caption {
font-size: 90%;
color: $gray-light;
}
@@ -0,0 +1,189 @@
//
// Base styles
//
.input-group {
position: relative;
@if $enable-flex {
display: flex;
} @else {
display: table;
// Prevent input groups from inheriting border styles from table cells when
// placed within a table.
border-collapse: separate;
}
.form-control {
// Ensure that the input is always above the *appended* addon button for
// proper border colors.
position: relative;
z-index: 2;
// Bring the "active" form control to the front
@include hover-focus-active {
z-index: 3;
}
@if $enable-flex {
flex: 1;
} @else {
// IE9 fubars the placeholder attribute in text inputs and the arrows on
// select elements in input groups. To fix it, we float the input. Details:
// https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
float: left;
width: 100%;
}
margin-bottom: 0;
}
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
@if $enable-flex {
// do nothing
} @else {
display: table-cell;
}
&:not(:first-child):not(:last-child) {
@include border-radius(0);
}
}
.input-group-addon,
.input-group-btn {
@if $enable-flex {
// do nothing
} @else {
width: 1%;
}
white-space: nowrap;
vertical-align: middle; // Match the inputs
}
// Sizing options
//
// Remix the default form control sizing classes into new ones for easier
// manipulation.
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
@extend .form-control-lg;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
@extend .form-control-sm;
}
//
// Text input groups
//
.input-group-addon {
padding: $input-padding-y $input-padding-x;
font-size: $font-size-base;
font-weight: normal;
line-height: 1;
color: $input-color;
text-align: center;
background-color: $input-group-addon-bg;
border: $input-btn-border-width solid $input-group-addon-border-color;
@include border-radius($border-radius);
// Sizing
&.form-control-sm {
padding: $input-padding-y-sm $input-padding-x-sm;
font-size: $font-size-sm;
@include border-radius($border-radius-sm);
}
&.form-control-lg {
padding: $input-padding-y-lg $input-padding-x-lg;
font-size: $font-size-lg;
@include border-radius($border-radius-lg);
}
// Nuke default margins from checkboxes and radios to vertically center within.
input[type="radio"],
input[type="checkbox"] {
margin-top: 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 > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
@include 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 > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
@include border-left-radius(0);
}
.input-group-addon:last-child {
border-left: 0;
}
//
// Button input groups
//
.input-group-btn {
position: relative;
// Jankily prevent input button groups from wrapping with `white-space` and
// `font-size` in combination with `inline-block` on buttons.
font-size: 0;
white-space: nowrap;
// Negative margin for spacing, position for bringing hovered/focused/actived
// element above the siblings.
> .btn {
position: relative;
+ .btn {
margin-left: (-$input-btn-border-width);
}
// Bring the "active" button to the front
@include hover-focus-active {
z-index: 3;
}
}
// Negative margin to only have a single, shared border between the two
&:first-child {
> .btn,
> .btn-group {
margin-right: (-$input-btn-border-width);
}
}
&:last-child {
> .btn,
> .btn-group {
z-index: 2;
margin-left: (-$input-btn-border-width);
// Because specificity
@include hover-focus-active {
z-index: 3;
}
}
}
}
@@ -0,0 +1,20 @@
.jumbotron {
padding: $jumbotron-padding ($jumbotron-padding / 2);
margin-bottom: $jumbotron-padding;
background-color: $jumbotron-bg;
@include border-radius($border-radius-lg);
@include media-breakpoint-up(sm) {
padding: ($jumbotron-padding * 2) $jumbotron-padding;
}
}
.jumbotron-hr {
border-top-color: darken($jumbotron-bg, 10%);
}
.jumbotron-fluid {
padding-right: 0;
padding-left: 0;
@include border-radius(0);
}
@@ -0,0 +1,77 @@
// Base class
//
// Requires one of the contextual, color modifier classes for `color` and
// `background-color`.
.label {
display: inline-block;
padding: .25em .4em;
font-size: 75%;
font-weight: $label-font-weight;
line-height: 1;
color: $label-color;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
@include border-radius();
// Empty labels collapse automatically
&:empty {
display: none;
}
}
// Quick fix for labels in buttons
.btn .label {
position: relative;
top: -1px;
}
// Add hover effects, but only for links
a.label {
@include hover-focus {
color: $label-link-hover-color;
text-decoration: none;
cursor: pointer;
}
}
// Pill labels
//
// Make them extra rounded with a modifier to replace v3's badges.
.label-pill {
padding-right: .6em;
padding-left: .6em;
// Use a higher than normal value to ensure completely rounded edges when
// customizing padding or font-size on labels.
@include border-radius(10rem);
}
// Colors
//
// Contextual variations (linked labels get darker on :hover).
.label-default {
@include label-variant($label-default-bg);
}
.label-primary {
@include label-variant($label-primary-bg);
}
.label-success {
@include label-variant($label-success-bg);
}
.label-info {
@include label-variant($label-info-bg);
}
.label-warning {
@include label-variant($label-warning-bg);
}
.label-danger {
@include label-variant($label-danger-bg);
}
@@ -0,0 +1,140 @@
// 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
padding-left: 0; // reset padding because ul and ol
margin-bottom: 0;
}
// Individual list items
//
// Use on `li`s or `div`s within the `.list-group` parent.
.list-group-item {
position: relative;
display: block;
padding: .75rem 1.25rem;
// Place the border on the list items and negative margin up for better styling
margin-bottom: -$list-group-border-width;
background-color: $list-group-bg;
border: $list-group-border-width solid $list-group-border-color;
// Round the first and last items
&:first-child {
@include border-top-radius($list-group-border-radius);
}
&:last-child {
margin-bottom: 0;
@include border-bottom-radius($list-group-border-radius);
}
}
.list-group-flush {
.list-group-item {
border-width: $list-group-border-width 0;
border-radius: 0;
}
&:first-child {
.list-group-item:first-child {
border-top: 0;
}
}
&:last-child {
.list-group-item:last-child {
border-bottom: 0;
}
}
}
// Interactive list items
//
// Use anchor or button elements instead of `li`s or `div`s to create interactive
// list items. Includes an extra `.active` modifier class for selected items.
a.list-group-item,
button.list-group-item {
width: 100%;
color: $list-group-link-color;
text-align: inherit;
.list-group-item-heading {
color: $list-group-link-heading-color;
}
// Hover state
@include hover-focus {
color: $list-group-link-hover-color;
text-decoration: none;
background-color: $list-group-hover-bg;
}
}
.list-group-item {
// Disabled state
&.disabled {
@include plain-hover-focus {
color: $list-group-disabled-color;
cursor: $cursor-disabled;
background-color: $list-group-disabled-bg;
// Force color to inherit for custom content
.list-group-item-heading {
color: inherit;
}
.list-group-item-text {
color: $list-group-disabled-text-color;
}
}
}
// Active class on item itself, not parent
&.active {
@include plain-hover-focus {
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,
.list-group-item-heading > small,
.list-group-item-heading > .small {
color: inherit;
}
.list-group-item-text {
color: $list-group-active-text-color;
}
}
}
}
// Contextual variants
//
// Add modifier classes to change text and background color on individual items.
// Organizationally, this must come after the `:hover` states.
@include list-group-item-variant(success, $state-success-bg, $state-success-text);
@include list-group-item-variant(info, $state-info-bg, $state-info-text);
@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);
@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);
// Custom content options
//
// Extra classes for creating well-formatted content within `.list-group-item`s.
.list-group-item-heading {
margin-top: 0;
margin-bottom: 5px;
}
.list-group-item-text {
margin-bottom: 0;
line-height: 1.3;
}
@@ -0,0 +1,90 @@
@if $enable-flex {
.media {
display: flex;
margin-bottom: $spacer;
}
.media-body {
flex: 1;
}
.media-middle {
align-self: center;
}
.media-bottom {
align-self: flex-end;
}
} @else {
.media {
margin-top: 15px;
&:first-child {
margin-top: 0;
}
}
.media,
.media-body {
overflow: hidden;
zoom: 1;
}
.media-body {
width: 10000px;
}
.media-left,
.media-right,
.media-body {
display: table-cell;
vertical-align: top;
}
.media-middle {
vertical-align: middle;
}
.media-bottom {
vertical-align: bottom;
}
}
//
// Images/elements as the media anchor
//
.media-object {
display: block;
// Fix collapse in webkit from max-width: 100% and display: table-cell.
&.img-thumbnail {
max-width: none;
}
}
//
// Alignment
//
.media-right {
padding-left: 10px;
}
.media-left {
padding-right: 10px;
}
//
// Headings
//
.media-heading {
margin-top: 0;
margin-bottom: 5px;
}
//
// Media list variation
//
.media-list {
padding-left: 0;
list-style: none;
}
@@ -0,0 +1,55 @@
// Toggles
//
// Used in conjunction with global variables to enable certain theme features.
@mixin box-shadow($shadow...) {
@if $enable-shadows {
box-shadow: $shadow;
}
}
@mixin transition($transition...) {
@if $enable-transitions {
transition: $transition;
}
}
// Utilities
@import "mixins/breakpoints";
@import "mixins/hover";
@import "mixins/image";
@import "mixins/label";
@import "mixins/reset-filter";
@import "mixins/resize";
@import "mixins/screen-reader";
@import "mixins/size";
@import "mixins/tab-focus";
@import "mixins/reset-text";
@import "mixins/text-emphasis";
@import "mixins/text-hide";
@import "mixins/text-truncate";
// // Components
@import "mixins/alert";
@import "mixins/buttons";
@import "mixins/cards";
@import "mixins/pagination";
@import "mixins/lists";
@import "mixins/list-group";
@import "mixins/nav-divider";
@import "mixins/forms";
@import "mixins/progress";
@import "mixins/table-row";
// // Skins
@import "mixins/background-variant";
@import "mixins/border-radius";
@import "mixins/gradients";
// // Layout
@import "mixins/clearfix";
@import "mixins/center-block";
// @import "mixins/navbar-align";
@import "mixins/grid-framework";
@import "mixins/grid";
@import "mixins/pulls";
@@ -0,0 +1,146 @@
// .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 {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: $zindex-modal;
display: none;
overflow: hidden;
// Prevent Chrome on Windows from adding a focus outline. For details, see
// https://github.com/twbs/bootstrap/pull/10951.
outline: 0;
-webkit-overflow-scrolling: touch;
// When fading in the modal, animate it to slide down
&.fade .modal-dialog {
transition: transform .3s ease-out;
transform: translate(0, -25%);
}
&.in .modal-dialog { transform: translate(0, 0); }
}
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
// Shell div to position the modal with bottom padding
.modal-dialog {
position: relative;
width: auto;
margin: 10px;
}
// Actual modal
.modal-content {
position: relative;
background-color: $modal-content-bg;
background-clip: padding-box;
border: 1px solid $modal-content-border-color;
border-radius: $border-radius-lg;
@include box-shadow(0 3px 9px rgba(0,0,0,.5));
// Remove focus outline from opened modal
outline: 0;
}
// Modal background
.modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: $zindex-modal-bg;
background-color: $modal-backdrop-bg;
// Fade for backdrop
&.fade { opacity: 0; }
&.in { opacity: $modal-backdrop-opacity; }
}
// Modal header
// Top section of the modal w/ title and dismiss
.modal-header {
padding: $modal-title-padding;
border-bottom: 1px solid $modal-header-border-color;
@include clearfix;
}
// Close icon
.modal-header .close {
margin-top: -2px;
}
// 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;
padding: $modal-inner-padding;
}
// Footer (for actions)
.modal-footer {
padding: $modal-inner-padding;
text-align: right; // right align buttons
border-top: 1px solid $modal-footer-border-color;
@include clearfix(); // clear it in case folks use .pull-* classes on buttons
// Properly space out buttons
.btn + .btn {
margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
margin-left: 5px;
}
// but override that for button groups
.btn-group .btn + .btn {
margin-left: -1px;
}
// and override it for block buttons as well
.btn-block + .btn-block {
margin-left: 0;
}
}
// Measure scrollbar width for padding body during modal show/hide
.modal-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll;
}
// Scale up the modal
@include media-breakpoint-up(sm) {
// Automatically set modal's width for larger viewports
.modal-dialog {
width: $modal-md;
margin: 30px auto;
}
.modal-content {
@include box-shadow(0 5px 15px rgba(0,0,0,.5));
}
// Modal sizes
.modal-sm { width: $modal-sm; }
}
@include media-breakpoint-up(md) {
.modal-lg { width: $modal-lg; }
}
@@ -0,0 +1,162 @@
// Base class
//
// Kickstart any navigation component with a set of style resets. Works with
// `<nav>`s or `<ul>`s.
.nav {
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav-link {
display: inline-block;
@include hover-focus {
text-decoration: none;
}
// Disabled state lightens text and removes hover/tab effects
&.disabled {
color: $nav-disabled-link-color;
@include plain-hover-focus {
color: $nav-disabled-link-hover-color;
cursor: $cursor-disabled;
background-color: transparent;
}
}
}
// Nav inline
.nav-inline {
.nav-item {
display: inline-block;
}
.nav-item + .nav-item,
.nav-link + .nav-link {
margin-left: 1rem;
}
}
//
// Tabs
//
.nav-tabs {
border-bottom: 1px solid $nav-tabs-border-color;
@include clearfix();
.nav-item {
float: left;
// Make the list-items overlay the bottom border
margin-bottom: -1px;
+ .nav-item {
margin-left: .2rem;
}
}
.nav-link {
display: block;
padding: $nav-link-padding;
border: $nav-tabs-link-border-width solid transparent;
@include border-radius($border-radius $border-radius 0 0);
@include hover-focus {
border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
}
&.disabled {
@include plain-hover-focus {
color: $nav-disabled-link-color;
background-color: transparent;
border-color: transparent;
}
}
}
.nav-link.active,
.nav-item.open .nav-link {
@include plain-hover-focus {
color: $nav-tabs-active-link-hover-color;
background-color: $nav-tabs-active-link-hover-bg;
border-color: $nav-tabs-active-link-hover-border-color $nav-tabs-active-link-hover-border-color transparent;
}
}
}
//
// Pills
//
.nav-pills {
@include clearfix();
.nav-item {
float: left;
+ .nav-item {
margin-left: .2rem;
}
}
.nav-link {
display: block;
padding: $nav-link-padding;
@include border-radius($nav-pills-border-radius);
}
.nav-link.active,
.nav-item.open .nav-link {
@include plain-hover-focus {
color: $component-active-color;
cursor: default;
background-color: $component-active-bg;
}
}
}
.nav-stacked {
.nav-item {
display: block;
float: none;
+ .nav-item {
margin-top: .2rem;
margin-left: 0;
}
}
}
//
// Tabbable tabs
//
// Hide tabbable panes to start, show them when `.active`
.tab-content {
> .tab-pane {
display: none;
}
> .active {
display: block;
}
}
//
// 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
@include border-top-radius(0);
}
@@ -0,0 +1,230 @@
// Wrapper and base class
//
// Provide a static navbar from which we expand to create full-width, fixed, and
// other navbar variations.
.navbar {
position: relative;
padding: $navbar-padding-vertical $navbar-padding-horizontal;
@include clearfix;
@include media-breakpoint-up(sm) {
@include border-radius($navbar-border-radius);
}
}
// Navbar alignment options
//
// Display the navbar across the entirety of the page or fixed it to the top or
// bottom of the page.
// A static, full width modifier with no rounded corners.
.navbar-full {
z-index: $zindex-navbar;
@include media-breakpoint-up(sm) {
@include border-radius(0);
}
}
// 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: $zindex-navbar-fixed;
// Undo the rounded corners
@include media-breakpoint-up(sm) {
@include border-radius(0);
}
}
.navbar-fixed-top {
top: 0;
}
.navbar-fixed-bottom {
bottom: 0;
}
.navbar-sticky-top {
position: sticky;
top: 0;
z-index: $zindex-navbar-sticky;
width: 100%;
// Undo the rounded corners
@include media-breakpoint-up(sm) {
@include border-radius(0);
}
}
//
// Brand/project name
//
.navbar-brand {
float: left;
padding-top: .25rem;
padding-bottom: .25rem;
margin-right: 1rem;
font-size: $font-size-lg;
@include hover-focus {
text-decoration: none;
}
> img {
display: block;
}
}
.navbar-divider {
float: left;
width: 1px;
padding-top: .425rem;
padding-bottom: .425rem;
margin-right: $navbar-padding-horizontal;
margin-left: $navbar-padding-horizontal;
overflow: hidden;
&::before {
content: "\00a0";
}
}
// Navbar toggle
//
// Custom button for toggling the `.navbar-collapse`, powered by the collapse
// Bootstrap JavaScript plugin.
.navbar-toggler {
padding: .5rem .75rem;
font-size: $font-size-lg;
line-height: 1;
background: none;
border: $border-width solid transparent;
@include border-radius($btn-border-radius);
@include hover-focus {
text-decoration: none;
}
}
// Custom override for
.navbar-toggleable {
&-xs {
@include media-breakpoint-up(sm) {
display: block !important;
}
}
&-sm {
@include media-breakpoint-up(md) {
display: block !important;
}
}
&-md {
@include media-breakpoint-up(lg) {
display: block !important;
}
}
}
// Navigation
//
// Custom navbar navigation built on the base `.nav` styles.
.navbar-nav {
.nav-item {
float: left;
}
.nav-link {
display: block;
padding-top: .425rem;
padding-bottom: .425rem;
+ .nav-link {
margin-left: 1rem;
}
}
.nav-item + .nav-item {
margin-left: 1rem;
}
}
// Dark links against a light background
.navbar-light {
.navbar-brand {
color: $navbar-light-active-color;
@include hover-focus {
color: $navbar-light-active-color;
}
}
.navbar-nav {
.nav-link {
color: $navbar-light-color;
@include hover-focus {
color: $navbar-light-hover-color;
}
}
.open > .nav-link,
.active > .nav-link,
.nav-link.open,
.nav-link.active {
@include plain-hover-focus {
color: $navbar-light-active-color;
}
}
}
.navbar-divider {
background-color: rgba(0,0,0,.075);
}
}
// White links against a dark background
.navbar-dark {
.navbar-brand {
color: $navbar-dark-active-color;
@include hover-focus {
color: $navbar-dark-active-color;
}
}
.navbar-nav {
.nav-link {
color: $navbar-dark-color;
@include hover-focus {
color: $navbar-dark-hover-color;
}
}
.open > .nav-link,
.active > .nav-link,
.nav-link.open,
.nav-link.active {
@include plain-hover-focus {
color: $navbar-dark-active-color;
}
}
}
.navbar-divider {
background-color: rgba(255,255,255,.075);
}
}
@@ -0,0 +1,428 @@
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
//
// 1. Set default font family to sans-serif.
// 2. Prevent iOS and IE text size adjust after device orientation change,
// without disabling user zoom.
//
html {
font-family: sans-serif; // 1
-ms-text-size-adjust: 100%; // 2
-webkit-text-size-adjust: 100%; // 2
}
//
// Remove default margin.
//
body {
margin: 0;
}
// HTML5 display definitions
// ==========================================================================
//
// Correct `block` display not defined for any HTML5 element in IE 8/9.
// Correct `block` display not defined for `details` or `summary` in IE 10/11
// and Firefox.
// Correct `block` display not defined for `main` in IE 11.
//
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
//
// 1. Correct `inline-block` display not defined in IE 8/9.
// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
//
audio,
canvas,
progress,
video {
display: inline-block; // 1
vertical-align: baseline; // 2
}
//
// Prevent modern browsers from displaying `audio` without controls.
// Remove excess height in iOS 5 devices.
//
audio:not([controls]) {
display: none;
height: 0;
}
//
// Address `[hidden]` styling not present in IE 8/9/10.
// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
//
[hidden],
template {
display: none;
}
// Links
// ==========================================================================
//
// Remove the gray background color from active links in IE 10.
//
a {
background-color: transparent;
}
//
// Improve readability of focused elements when they are also in an
// active/hover state.
//
a {
&:active {
outline: 0;
}
&:hover {
outline: 0;
}
}
// Text-level semantics
// ==========================================================================
//
// Address styling not present in IE 8/9/10/11, Safari, and Chrome.
//
abbr[title] {
border-bottom: 1px dotted;
}
//
// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
//
b,
strong {
font-weight: bold;
}
//
// Address styling not present in Safari and Chrome.
//
dfn {
font-style: italic;
}
//
// Address variable `h1` font-size and margin within `section` and `article`
// contexts in Firefox 4+, Safari, and Chrome.
//
h1 {
font-size: 2em;
margin: 0.67em 0;
}
//
// Address styling not present in IE 8/9.
//
mark {
background: #ff0;
color: #000;
}
//
// 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/10.
//
img {
border: 0;
}
//
// Correct overflow not hidden in IE 9/10/11.
//
svg:not(:root) {
overflow: hidden;
}
// Grouping content
// ==========================================================================
//
// Address margin not present in IE 8/9 and Safari.
//
figure {
margin: 1em 40px;
}
//
// Address differences between Firefox and other browsers.
//
hr {
box-sizing: content-box;
height: 0;
}
//
// Contain overflow in all browsers.
//
pre {
overflow: auto;
}
//
// Address odd `em`-unit font size rendering in all browsers.
//
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
// Forms
// ==========================================================================
//
// Known limitation: by default, Chrome and Safari on OS X allow very limited
// styling of `select`, unless a `border` property is set.
//
//
// 1. Correct color not being inherited.
// Known issue: affects color of disabled elements.
// 2. Correct font properties not being inherited.
// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
//
button,
input,
optgroup,
select,
textarea {
color: inherit; // 1
font: inherit; // 2
margin: 0; // 3
}
//
// Address `overflow` set to `hidden` in IE 8/9/10/11.
//
button {
overflow: visible;
}
//
// 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 Firefox, IE 8/9/10/11, and Opera.
// Correct `select` style inheritance in Firefox.
//
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;
}
//
// Remove inner padding and border in Firefox 4+.
//
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
//
// Address Firefox 4+ setting `line-height` on `input` using `!important` in
// the UA stylesheet.
//
input {
line-height: normal;
}
//
// It's recommended that you don't attempt to style these elements.
// Firefox's implementation doesn't respect box-sizing, padding, or width.
//
// 1. Address box sizing set to `content-box` in IE 8/9/10.
// 2. Remove excess padding in IE 8/9/10.
//
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; // 1
padding: 0; // 2
}
//
// Fix the cursor style for Chrome's increment/decrement buttons. For certain
// `font-size` values of the `input`, it causes the cursor style of the
// decrement button to change from `default` to `text`.
//
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
//
// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
//
input[type="search"] {
-webkit-appearance: textfield; // 1
box-sizing: content-box; //2
}
//
// Remove inner padding and search cancel button in Safari and Chrome on OS X.
// Safari (but not Chrome) clips the cancel button when the search input has
// padding (and `textfield` appearance).
//
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
//
// 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/10/11.
// 2. Remove padding so people aren't caught out if they zero out fieldsets.
//
legend {
border: 0; // 1
padding: 0; // 2
}
//
// Remove default vertical scrollbar in IE 8/9/10/11.
//
textarea {
overflow: auto;
}
//
// Don't inherit the `font-weight` (applied by a rule above).
// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
//
optgroup {
font-weight: bold;
}
// Tables
// ==========================================================================
//
// Remove most spacing between table cells.
//
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
@@ -0,0 +1,57 @@
.pager {
padding-left: 0;
margin-top: $spacer-y;
margin-bottom: $spacer-y;
text-align: center;
list-style: none;
@include clearfix();
li {
display: inline;
> a,
> span {
display: inline-block;
padding: 5px 14px;
background-color: $pager-bg;
border: $pager-border-width solid $pager-border-color;
border-radius: $pager-border-radius;
}
> a {
@include hover-focus {
text-decoration: none;
background-color: $pager-hover-bg;
}
}
}
.disabled {
> a {
@include plain-hover-focus {
color: $pager-disabled-color;
cursor: $cursor-disabled;
background-color: $pager-bg;
}
}
> span {
color: $pager-disabled-color;
cursor: $cursor-disabled;
background-color: $pager-bg;
}
}
}
.pager-next {
> a,
> span {
float: right;
}
}
.pager-prev {
> a,
> span {
float: left;
}
}
@@ -0,0 +1,73 @@
.pagination {
display: inline-block;
padding-left: 0;
margin-top: $spacer-y;
margin-bottom: $spacer-y;
@include border-radius();
}
.page-item {
display: inline; // Remove list-style and block-level defaults
&:first-child {
.page-link {
margin-left: 0;
@include border-left-radius($border-radius);
}
}
&:last-child {
.page-link {
@include border-right-radius($border-radius);
}
}
&.active .page-link {
@include plain-hover-focus {
z-index: 2;
color: $pagination-active-color;
cursor: default;
background-color: $pagination-active-bg;
border-color: $pagination-active-border;
}
}
&.disabled .page-link {
@include plain-hover-focus {
color: $pagination-disabled-color;
cursor: $cursor-disabled;
background-color: $pagination-disabled-bg;
border-color: $pagination-disabled-border;
}
}
}
.page-link {
position: relative;
float: left; // Collapse white-space
padding: $pagination-padding-y $pagination-padding-x;
margin-left: -1px;
line-height: $line-height;
color: $pagination-color;
text-decoration: none;
background-color: $pagination-bg;
border: $pagination-border-width solid $pagination-border-color;
@include hover-focus {
color: $pagination-hover-color;
background-color: $pagination-hover-bg;
border-color: $pagination-hover-border;
}
}
//
// Sizing
//
.pagination-lg {
@include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
}
.pagination-sm {
@include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
}
@@ -0,0 +1,140 @@
.popover {
position: absolute;
top: 0;
left: 0;
z-index: $zindex-popover;
display: block;
max-width: $popover-max-width;
padding: 1px;
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
// So reset our font and text properties to avoid inheriting weird values.
@include reset-text();
font-size: $font-size-sm;
background-color: $popover-bg;
background-clip: padding-box;
border: $popover-border-width solid $popover-border-color;
@include border-radius($border-radius-lg);
@include box-shadow(0 5px 10px rgba(0,0,0,.2));
// Popover directions
&.popover-top,
&.bs-tether-element-attached-bottom {
margin-top: -$popover-arrow-width;
.popover-arrow {
bottom: -$popover-arrow-outer-width;
left: 50%;
margin-left: -$popover-arrow-outer-width;
border-top-color: $popover-arrow-outer-color;
border-bottom-width: 0;
&::after {
bottom: 1px;
margin-left: -$popover-arrow-width;
content: "";
border-top-color: $popover-arrow-color;
border-bottom-width: 0;
}
}
}
&.popover-right,
&.bs-tether-element-attached-left {
margin-left: $popover-arrow-width;
.popover-arrow {
top: 50%;
left: -$popover-arrow-outer-width;
margin-top: -$popover-arrow-outer-width;
border-right-color: $popover-arrow-outer-color;
border-left-width: 0;
&::after {
bottom: -$popover-arrow-width;
left: 1px;
content: "";
border-right-color: $popover-arrow-color;
border-left-width: 0;
}
}
}
&.popover-bottom,
&.bs-tether-element-attached-top {
margin-top: $popover-arrow-width;
.popover-arrow {
top: -$popover-arrow-outer-width;
left: 50%;
margin-left: -$popover-arrow-outer-width;
border-top-width: 0;
border-bottom-color: $popover-arrow-outer-color;
&::after {
top: 1px;
margin-left: -$popover-arrow-width;
content: "";
border-top-width: 0;
border-bottom-color: $popover-arrow-color;
}
}
}
&.popover-left,
&.bs-tether-element-attached-right {
margin-left: -$popover-arrow-width;
.popover-arrow {
top: 50%;
right: -$popover-arrow-outer-width;
margin-top: -$popover-arrow-outer-width;
border-right-width: 0;
border-left-color: $popover-arrow-outer-color;
&::after {
right: 1px;
bottom: -$popover-arrow-width;
content: "";
border-right-width: 0;
border-left-color: $popover-arrow-color;
}
}
}
}
// Offset the popover to account for the popover arrow
.popover-title {
padding: 8px 14px;
margin: 0; // reset heading margin
font-size: $font-size-base;
background-color: $popover-title-bg;
border-bottom: $popover-border-width solid darken($popover-title-bg, 5%);
@include border-radius(($border-radius-lg - 1) ($border-radius-lg - 1) 0 0);
}
.popover-content {
padding: 9px 14px;
}
// Arrows
//
// .popover-arrow is outer, .popover-arrow::after is inner
.popover-arrow {
&,
&::after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
}
.popover-arrow {
border-width: $popover-arrow-outer-width;
}
.popover-arrow::after {
content: "";
border-width: $popover-arrow-width;
}
@@ -0,0 +1,88 @@
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
// ==========================================================================
// Print styles.
// Inlined to avoid the additional HTTP request: h5bp.com/r
// ==========================================================================
@media print {
*,
*::before,
*::after {
text-shadow: none !important;
box-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
abbr[title]::after {
content: " (" attr(title) ")";
}
pre,
blockquote {
border: $border-width 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;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
// Bootstrap specific changes start
// Bootstrap components
.navbar {
display: none;
}
.btn,
.dropup > .btn {
> .caret {
border-top-color: #000 !important;
}
}
.label {
border: $border-width solid #000;
}
.table {
border-collapse: collapse !important;
td,
th {
background-color: #fff !important;
}
}
.table-bordered {
th,
td {
border: 1px solid #ddd !important;
}
}
// Bootstrap specific changes end
}
@@ -0,0 +1,156 @@
//
// Progress animations
//
@keyframes progress-bar-stripes {
from { background-position: $spacer-y 0; }
to { background-position: 0 0; }
}
//
// Basic progress bar
//
.progress {
display: block;
width: 100%;
height: $spacer-y; // todo: make a new var for this
margin-bottom: $spacer-y;
}
.progress[value] {
// IE10 uses `color` to set the bar background-color
color: #0074d9;
// Remove Firefox and Opera border
border: 0;
// Reset the default appearance
appearance: none;
}
.progress[value]::-webkit-progress-bar {
background-color: #eee;
@include border-radius($border-radius);
@include box-shadow(inset 0 .1rem .1rem rgba(0,0,0,.1));
}
.progress[value]::-webkit-progress-value::before {
content: attr(value);
}
.progress[value]::-webkit-progress-value {
background-color: #0074d9;
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
.progress[value="100"]::-webkit-progress-value {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
// Firefox styles must be entirely separate or it busts Webkit styles.
//
// Commented out for now because linter.
//
// $-moz-document url-prefix() {
// .progress[value] {
// background-color: #eee;
// .border-radius($border-radius);
// .box-shadow(inset 0 .1rem .1rem rgba(0,0,0,.1));
// }
// .progress[value]::-moz-progress-bar {
// background-color: #0074d9;
// border-top-left-radius: $border-radius;
// border-bottom-left-radius: $border-radius;
// }
// .progress[value="0"]::-moz-progress-bar {
// color: $gray-light;
// min-width: 2rem;
// background-color: transparent;
// background-image: none;
// }
// .progress[value="100"]::-moz-progress-bar {
// border-top-right-radius: $border-radius;
// border-bottom-right-radius: $border-radius;
// }
// }
// IE9 hacks to accompany custom markup. We don't need to scope this via media queries, but I feel better doing it anyway.
@media screen and (min-width:0\0) {
.progress {
background-color: #eee;
@include border-radius($border-radius);
@include box-shadow(inset 0 .1rem .1rem rgba(0,0,0,.1));
}
.progress-bar {
display: inline-block;
height: $spacer-y;
text-indent: -999rem; // Simulate hiding of value as in native `<progress>`
background-color: #0074d9;
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
.progress[width^="0"] {
min-width: 2rem;
color: $gray-light;
background-color: transparent;
background-image: none;
}
.progress[width="100%"] {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
}
//
// Striped
//
.progress-striped[value]::-webkit-progress-value {
@include gradient-striped();
background-size: $spacer-y $spacer-y;
}
.progress-striped[value]::-moz-progress-bar {
@include gradient-striped();
background-size: $spacer-y $spacer-y;
}
// IE9
@media screen and (min-width:0\0) {
.progress-bar-striped {
@include gradient-striped();
background-size: $spacer-y $spacer-y;
}
}
//
// Animated
//
.progress-animated[value]::-webkit-progress-value {
animation: progress-bar-stripes 2s linear infinite;
}
.progress-animated[value]::-moz-progress-bar {
animation: progress-bar-stripes 2s linear infinite;
}
// IE9
@media screen and (min-width:0\0) {
.progress-animated .progress-bar-striped {
animation: progress-bar-stripes 2s linear infinite;
}
}
//
// Variations
//
.progress-success {
@include progress-variant($progress-bar-success-bg);
}
.progress-info {
@include progress-variant($progress-bar-info-bg);
}
.progress-warning {
@include progress-variant($progress-bar-warning-bg);
}
.progress-danger {
@include progress-variant($progress-bar-danger-bg);
}
@@ -0,0 +1,347 @@
// Reboot
//
// Global resets to common HTML elements and more for easier usage by Bootstrap.
// Adds additional rules on top of Normalize.css, including several overrides.
// Reset the box-sizing
//
// Change from `box-sizing: content-box` to `border-box` so that when you add
// `padding` or `border`s to an element, the overall declared `width` does not
// change. For example, `width: 100px;` will always be `100px` despite the
// `border: 10px solid red;` and `padding: 20px;`.
//
// Heads up! This reset may cause conflicts with some third-party widgets. For
// recommendations on resolving such conflicts, see
// http://getbootstrap.com/getting-started/#third-box-sizing.
//
// Credit: https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
// Make viewport responsive
//
// @viewport is needed because IE 10+ doesn't honor <meta name="viewport"> in
// some cases. See http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/.
// Eventually @viewport will replace <meta name="viewport">. It's been manually
// prefixed for forward-compatibility.
//
// However, `device-width` is broken on IE 10 on Windows (Phone) 8,
// (see http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ and https://github.com/twbs/bootstrap/issues/10497)
// and the fix for that involves a snippet of JavaScript to sniff the user agent
// and apply some conditional CSS.
//
// See http://getbootstrap.com/getting-started/#support-ie10-width for the relevant hack.
//
// Wrap `@viewport` with `@at-root` for when folks do a nested import (e.g.,
// `.class-name { @import "bootstrap"; }`).
//
// Includes future-proofed vendor prefixes as well.
@at-root {
@-moz-viewport { width: device-width; }
@-ms-viewport { width: device-width; }
@-o-viewport { width: device-width; }
@-webkit-viewport { width: device-width; }
@viewport { width: device-width; }
}
//
// Reset HTML, body, and more
//
html {
// Sets a specific default `font-size` for user with `rem` type scales.
font-size: $font-size-root;
// Changes the default tap highlight to be completely transparent in iOS.
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
body {
// Make the `body` use the `font-size-root`
font-family: $font-family-base;
font-size: $font-size-base;
line-height: $line-height;
// Go easy on the eyes and use something other than `#000` for text
color: $body-color;
// By default, `<body>` has no `background-color` so we set one as a best practice.
background-color: $body-bg;
}
// Suppress the focus outline on elements that cannot be accessed via keyboard.
// This prevents an unwanted focus outline from appearing around elements that
// might still respond to pointer events.
//
// Credit: https://github.com/suitcss/base
[tabindex="-1"]:focus {
outline: none !important;
}
//
// Typography
//
// Remove top margins from headings
//
// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
// margin for easier control within type scales as it avoids margin collapsing.
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: .5rem;
}
// Reset margins on paragraphs
//
// Similarly, the top margin on `<p>`s get reset. However, we also reset the
// bottom margin to use `rem` units instead of `em`.
p {
margin-top: 0;
margin-bottom: 1rem;
}
// Abbreviations and acronyms
abbr[title],
// Add 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 $abbr-border-color;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: $dt-font-weight;
}
dd {
margin-bottom: .5rem;
margin-left: 0; // Undo browser default
}
blockquote {
margin: 0 0 1rem;
}
//
// Links
//
a {
color: $link-color;
text-decoration: $link-decoration;
@include hover-focus {
color: $link-hover-color;
text-decoration: $link-hover-decoration;
}
&:focus {
@include tab-focus();
}
}
//
// Code
//
pre {
// Remove browser default top margin
margin-top: 0;
// Reset browser default of `1em` to use `rem`s
margin-bottom: 1rem;
}
//
// Figures
//
figure {
// Normalize adds `margin` to `figure`s as browsers apply it inconsistently.
// We reset that to create a better flow in-page.
margin: 0 0 1rem;
}
//
// Images
//
img {
// By default, `<img>`s are `inline-block`. This assumes that, and vertically
// centers them. This won't apply should you reset them to `block` level.
vertical-align: middle;
// Note: `<img>`s are deliberately not made responsive by default.
// For the rationale behind this, see the comments on the `.img-fluid` class.
}
// iOS "clickable elements" fix for role="button"
//
// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
// for traditionally non-focusable elements with role="button"
// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
[role="button"] {
cursor: pointer;
}
// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.
//
// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11
// DON'T remove the click delay when `<meta name="viewport" content="width=device-width">` is present.
// However, they DO support removing the click delay via `touch-action: manipulation`.
// See:
// * http://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch
// * http://caniuse.com/#feat=css-touch-action
// * http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay
a,
area,
button,
[role="button"],
input,
label,
select,
summary,
textarea {
touch-action: manipulation;
}
//
// Tables
//
table {
// Reset for nesting within parents with `background-color`.
background-color: $table-bg;
}
caption {
padding-top: $table-cell-padding;
padding-bottom: $table-cell-padding;
color: $text-muted;
text-align: left;
caption-side: bottom;
}
th {
// Centered by default, but left-align-ed to match the `td`s below.
text-align: left;
}
//
// Forms
//
label {
// Allow labels to use `margin` for spacing.
display: inline-block;
margin-bottom: .5rem;
}
// Work around a Firefox/IE bug where the transparent `button` background
// results in a loss of the default `button` focus styles.
//
// Credit: https://github.com/suitcss/base/
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
textarea {
// Remove all `margin`s so our classes don't have to do it themselves.
margin: 0;
// Normalize includes `font: inherit;`, so `font-family`. `font-size`, etc are
// properly inherited. However, `line-height` isn't addressed there. Using this
// ensures we don't need to unnecessarily redeclare the global font stack.
line-height: inherit;
// iOS adds rounded borders by default
border-radius: 0;
}
textarea {
// Textareas should really only resize vertically so they don't break their (horizontal) containers.
resize: vertical;
}
fieldset {
// Chrome and Firefox set a `min-width: min-content;` on fieldsets,
// so we reset that to ensure it behaves more like a standard block element.
// See https://github.com/twbs/bootstrap/issues/12359.
min-width: 0;
// Reset the default outline behavior of fieldsets so they don't affect page layout.
padding: 0;
margin: 0;
border: 0;
}
legend {
// Reset the entire legend element to match the `fieldset`
display: block;
width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
// border: 0;
}
input[type="search"] {
// Undo Normalize's default here to match our global overrides.
box-sizing: inherit;
// This overrides the extra rounded corners on search inputs in iOS so that our
// `.form-control` class can properly style them. Note that this cannot simply
// be added to `.form-control` as it's not specific enough. For details, see
// https://github.com/twbs/bootstrap/issues/11586.
-webkit-appearance: none;
}
// todo: needed?
output {
display: inline-block;
// font-size: $font-size-base;
// line-height: $line-height;
// color: $input-color;
}
// Always hide an element with the `hidden` HTML attribute (from PureCSS).
[hidden] {
display: none !important;
}
@@ -0,0 +1,39 @@
// Credit: Nicolas Gallagher and SUIT CSS.
.embed-responsive {
position: relative;
display: block;
height: 0;
padding: 0;
overflow: hidden;
.embed-responsive-item,
iframe,
embed,
object,
video {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
}
.embed-responsive-21by9 {
padding-bottom: percentage(9 / 21);
}
.embed-responsive-16by9 {
padding-bottom: percentage(9 / 16);
}
.embed-responsive-4by3 {
padding-bottom: percentage(3 / 4);
}
.embed-responsive-1by1 {
padding-bottom: percentage(1 / 1);
}
@@ -0,0 +1,193 @@
//
// Basic Bootstrap table
//
.table {
width: 100%;
max-width: 100%;
margin-bottom: $spacer;
th,
td {
padding: $table-cell-padding;
line-height: $line-height;
vertical-align: top;
border-top: $table-border-width solid $table-border-color;
}
thead th {
vertical-align: bottom;
border-bottom: (2 * $table-border-width) solid $table-border-color;
}
tbody + tbody {
border-top: (2 * $table-border-width) solid $table-border-color;
}
.table {
background-color: $body-bg;
}
}
//
// Condensed table w/ half padding
//
.table-sm {
th,
td {
padding: $table-sm-cell-padding;
}
}
// Bordered version
//
// Add borders all around the table and between all the columns.
.table-bordered {
border: $table-border-width solid $table-border-color;
th,
td {
border: $table-border-width solid $table-border-color;
}
thead {
th,
td {
border-bottom-width: (2 * $table-border-width);
}
}
}
// Zebra-striping
//
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
.table-striped {
tbody tr:nth-of-type(odd) {
background-color: $table-bg-accent;
}
}
// Hover effect
//
// Placed here since it has to come after the potential zebra striping
.table-hover {
tbody tr {
@include hover {
background-color: $table-bg-hover;
}
}
}
// Table backgrounds
//
// Exact selectors below required to override `.table-striped` and prevent
// inheritance to nested tables.
// Generate the contextual variants
@include table-row-variant(active, $table-bg-active);
@include table-row-variant(success, $state-success-bg);
@include table-row-variant(info, $state-info-bg);
@include table-row-variant(warning, $state-warning-bg);
@include table-row-variant(danger, $state-danger-bg);
// Responsive tables
//
// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
// by enabling horizontal scrolling. Only applies <768px. Everything above that
// will display normally.
.table-responsive {
display: block;
width: 100%;
min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
overflow-x: auto;
// TODO: find out if we need this still.
//
// border: $table-border-width solid $table-border-color;
// -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057
}
.thead-inverse {
th {
color: #fff;
background-color: $gray-dark;
}
}
.thead-default {
th {
color: $gray;
background-color: $gray-lighter;
}
}
.table-inverse {
color: $gray-lighter;
background-color: $gray-dark;
&.table-bordered {
border: 0;
}
th,
td,
thead th {
border-color: $gray;
}
}
.table-reflow {
thead {
float: left;
}
tbody {
display: block;
white-space: nowrap;
}
th,
td {
border-top: $table-border-width solid $table-border-color;
border-left: $table-border-width solid $table-border-color;
&:last-child {
border-right: $table-border-width solid $table-border-color;
}
}
thead,
tbody,
tfoot {
&:last-child {
tr:last-child {
th,
td {
border-bottom: $table-border-width solid $table-border-color;
}
}
}
}
tr {
float: left;
th,
td {
display: block !important;
border: $table-border-width solid $table-border-color;
}
}
}
@@ -0,0 +1,85 @@
// Base class
.tooltip {
position: absolute;
z-index: $zindex-tooltip;
display: block;
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
// So reset our font and text properties to avoid inheriting weird values.
@include reset-text();
font-size: $font-size-sm;
opacity: 0;
&.in { opacity: $tooltip-opacity; }
&.tooltip-top,
&.bs-tether-element-attached-bottom {
padding: $tooltip-arrow-width 0;
margin-top: -3px;
.tooltip-arrow {
bottom: 0;
left: 50%;
margin-left: -$tooltip-arrow-width;
border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
border-top-color: $tooltip-arrow-color;
}
}
&.tooltip-right,
&.bs-tether-element-attached-left {
padding: 0 $tooltip-arrow-width;
margin-left: 3px;
.tooltip-arrow {
top: 50%;
left: 0;
margin-top: -$tooltip-arrow-width;
border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
border-right-color: $tooltip-arrow-color;
}
}
&.tooltip-bottom,
&.bs-tether-element-attached-top {
padding: $tooltip-arrow-width 0;
margin-top: 3px;
.tooltip-arrow {
top: 0;
left: 50%;
margin-left: -$tooltip-arrow-width;
border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
border-bottom-color: $tooltip-arrow-color;
}
}
&.tooltip-left,
&.bs-tether-element-attached-right {
padding: 0 $tooltip-arrow-width;
margin-left: -3px;
.tooltip-arrow {
top: 50%;
right: 0;
margin-top: -$tooltip-arrow-width;
border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
border-left-color: $tooltip-arrow-color;
}
}
}
// Wrapper for the tooltip content
.tooltip-inner {
max-width: $tooltip-max-width;
padding: 3px 8px;
color: $tooltip-color;
text-align: center;
background-color: $tooltip-bg;
@include border-radius($border-radius);
}
// Arrows
.tooltip-arrow {
position: absolute;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
@@ -0,0 +1,157 @@
//
// Headings
//
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: $headings-margin-bottom;
font-family: $headings-font-family;
font-weight: $headings-font-weight;
line-height: $headings-line-height;
color: $headings-color;
}
h1 { font-size: $font-size-h1; }
h2 { font-size: $font-size-h2; }
h3 { font-size: $font-size-h3; }
h4 { font-size: $font-size-h4; }
h5 { font-size: $font-size-h5; }
h6 { font-size: $font-size-h6; }
// These declarations are kept separate from and placed after
// the previous tag-based declarations so that the classes beat the tags in
// the CSS cascade, and thus <h1 class="h2"> will be styled like an h2.
.h1 { font-size: $font-size-h1; }
.h2 { font-size: $font-size-h2; }
.h3 { font-size: $font-size-h3; }
.h4 { font-size: $font-size-h4; }
.h5 { font-size: $font-size-h5; }
.h6 { font-size: $font-size-h6; }
.lead {
font-size: $lead-font-size;
font-weight: $lead-font-weight;
}
// Type display classes
.display-1 {
font-size: $display1-size;
font-weight: $display1-weight;
}
.display-2 {
font-size: $display2-size;
font-weight: $display2-weight;
}
.display-3 {
font-size: $display3-size;
font-weight: $display3-weight;
}
.display-4 {
font-size: $display4-size;
font-weight: $display4-weight;
}
//
// Horizontal rules
//
hr {
margin-top: $spacer-y;
margin-bottom: $spacer-y;
border: 0;
border-top: $hr-border-width solid $hr-border-color;
}
//
// Emphasis
//
small,
.small {
font-size: 80%;
font-weight: normal;
}
mark,
.mark {
padding: .2em;
background-color: $state-warning-bg;
}
//
// Lists
//
.list-unstyled {
@include list-unstyled;
}
// Inline turns list items into inline-block
.list-inline {
@include list-unstyled;
}
.list-inline-item {
display: inline-block;
&:not(:last-child) {
margin-right: $list-inline-padding;
}
}
// Horizontal description lists w/ grid classes
.dl-horizontal {
margin-right: -$grid-gutter-width;
margin-left: -$grid-gutter-width;
@include clearfix;
}
//
// Misc
//
// Builds on `abbr`
.initialism {
font-size: 90%;
text-transform: uppercase;
}
// Blockquotes
.blockquote {
padding: ($spacer / 2) $spacer;
margin-bottom: $spacer;
font-size: $blockquote-font-size;
border-left: .25rem solid $blockquote-border-color;
}
.blockquote-footer {
display: block;
font-size: 80%; // back to default font-size
line-height: $line-height;
color: $blockquote-small-color;
&::before {
content: "\2014 \00A0"; // em dash, nbsp
}
}
// Opposite alignment of blockquote
.blockquote-reverse {
padding-right: $spacer;
padding-left: 0;
text-align: right;
border-right: .25rem solid $blockquote-border-color;
border-left: 0;
}
.blockquote-reverse .blockquote-footer {
&::before {
content: "";
}
&::after {
content: "\00A0 \2014"; // nbsp, em dash
}
}
@@ -0,0 +1,24 @@
//
// Contextual backgrounds
//
// Inverse
// TODO: redo this as a proper class
.bg-inverse {
color: $gray-lighter;
background-color: $gray-dark;
}
.bg-faded {
background-color: $gray-lightest;
}
@include bg-variant('.bg-primary', $brand-primary);
@include bg-variant('.bg-success', $brand-success);
@include bg-variant('.bg-info', $brand-info);
@include bg-variant('.bg-warning', $brand-warning);
@include bg-variant('.bg-danger', $brand-danger);
@@ -0,0 +1,49 @@
//
// Responsive utilities
//
@each $bp in map-keys($grid-breakpoints) {
.hidden-#{$bp}-up {
@include media-breakpoint-up($bp) {
display: none !important;
}
}
.hidden-#{$bp}-down {
@include media-breakpoint-down($bp) {
display: none !important;
}
}
}
// Print utilities
//
// Media queries are placed on the inside to be mixin-friendly.
.visible-print-block {
display: none !important;
@media print {
display: block !important;
}
}
.visible-print-inline {
display: none !important;
@media print {
display: inline !important;
}
}
.visible-print-inline-block {
display: none !important;
@media print {
display: inline-block !important;
}
}
.hidden-print {
@media print {
display: none !important;
}
}
@@ -0,0 +1,39 @@
// Margin and Padding
.m-x-auto {
margin-right: auto !important;
margin-left: auto !important;
}
@each $prop, $abbrev in (margin: m, padding: p) {
@each $size, $lengths in $spacers {
$length-x: map-get($lengths, x);
$length-y: map-get($lengths, y);
.#{$abbrev}-a-#{$size} { #{$prop}: $length-y $length-x !important; } // a = All sides
.#{$abbrev}-t-#{$size} { #{$prop}-top: $length-y !important; }
.#{$abbrev}-r-#{$size} { #{$prop}-right: $length-x !important; }
.#{$abbrev}-b-#{$size} { #{$prop}-bottom: $length-y !important; }
.#{$abbrev}-l-#{$size} { #{$prop}-left: $length-x !important; }
// Axes
.#{$abbrev}-x-#{$size} {
#{$prop}-right: $length-x !important;
#{$prop}-left: $length-x !important;
}
.#{$abbrev}-y-#{$size} {
#{$prop}-top: $length-y !important;
#{$prop}-bottom: $length-y !important;
}
}
}
// Positioning
.pos-f-t {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: $zindex-navbar-fixed;
}
@@ -0,0 +1,95 @@
//
// Floats
//
.clearfix {
@include clearfix();
}
.center-block {
@include center-block();
}
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
.pull-#{$breakpoint}-left {
@include pull-left();
}
.pull-#{$breakpoint}-right {
@include pull-right();
}
.pull-#{$breakpoint}-none {
float: none !important;
}
}
}
//
// Screenreaders
//
.sr-only {
@include sr-only();
}
.sr-only-focusable {
@include sr-only-focusable();
}
.invisible {
visibility: hidden !important;
}
.text-hide {
@include text-hide();
}
//
// Text
//
// Alignment
.text-justify { text-align: justify !important; }
.text-nowrap { white-space: nowrap !important; }
.text-truncate { @include text-truncate; }
// Responsive alignment
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
.text-#{$breakpoint}-left { text-align: left !important; }
.text-#{$breakpoint}-right { text-align: right !important; }
.text-#{$breakpoint}-center { text-align: center !important; }
}
}
// Transformation
.text-lowercase { text-transform: lowercase !important; }
.text-uppercase { text-transform: uppercase !important; }
.text-capitalize { text-transform: capitalize !important; }
// Weight and italics
.font-weight-normal { font-weight: normal; }
.font-weight-bold { font-weight: bold; }
.font-italic { font-style: italic; }
// Contextual colors
.text-muted {
color: $text-muted;
}
@include text-emphasis-variant('.text-primary', $brand-primary);
@include text-emphasis-variant('.text-success', $brand-success);
@include text-emphasis-variant('.text-info', $brand-info);
@include text-emphasis-variant('.text-warning', $brand-warning);
@include text-emphasis-variant('.text-danger', $brand-danger);
@@ -0,0 +1,666 @@
// Variables
//
// Copy settings from this file into the provided `_custom.scss` to override
// the Bootstrap defaults without modifying key, versioned files.
// Table of Contents
//
// Colors
// Options
// Spacing
// Body
// Links
// Grid breakpoints
// Grid containers
// Grid columns
// Fonts
// Components
// General variable structure
//
// Variable format should follow the `$component-modifier-state-property` order.
// Colors
//
// Grayscale and brand colors for use across Bootstrap.
$gray-dark: #373a3c !default;
$gray: #55595c !default;
$gray-light: #818a91 !default;
$gray-lighter: #eceeef !default;
$gray-lightest: #f7f7f9 !default;
$brand-primary: #0275d8 !default;
$brand-success: #5cb85c !default;
$brand-info: #5bc0de !default;
$brand-warning: #f0ad4e !default;
$brand-danger: #d9534f !default;
// Options
//
// Quickly modify global styling by enabling or disabling optional features.
$enable-flex: false !default;
$enable-rounded: true !default;
$enable-shadows: false !default;
$enable-gradients: false !default;
$enable-transitions: false !default;
$enable-hover-media-query: false !default;
$enable-grid-classes: true !default;
// Spacing
//
// Control the default styling of most Bootstrap elements by modifying these
// variables. Mostly focused on spacing.
$spacer: 1rem !default;
$spacer-x: $spacer !default;
$spacer-y: $spacer !default;
$spacers: (
0: (
x: 0,
y: 0
),
1: (
x: $spacer-x,
y: $spacer-y
),
2: (
x: ($spacer-x * 1.5),
y: ($spacer-y * 1.5)
),
3: (
x: ($spacer-x * 3),
y: ($spacer-y * 3)
)
) !default;
$border-width: 1px !default;
// Body
//
// Settings for the `<body>` element.
$body-bg: #fff !default;
$body-color: $gray-dark !default;
// Links
//
// Style anchor elements.
$link-color: $brand-primary !default;
$link-decoration: none !default;
$link-hover-color: darken($link-color, 15%) !default;
$link-hover-decoration: underline !default;
// Grid breakpoints
//
// Define the minimum and maximum dimensions at which your layout will change,
// adapting to different screen sizes, for use in media queries.
$grid-breakpoints: (
// Extra small screen / phone
xs: 0,
// Small screen / phone
sm: 544px,
// Medium screen / tablet
md: 768px,
// Large screen / desktop
lg: 992px,
// Extra large screen / wide desktop
xl: 1200px
) !default;
// Grid containers
//
// Define the maximum width of `.container` for different screen sizes.
$container-max-widths: (
sm: 576px,
md: 720px,
lg: 940px,
xl: 1140px
) !default;
// Grid columns
//
// Set the number of columns and specify the width of the gutters.
$grid-columns: 12 !default;
$grid-gutter-width: 1.875rem !default; // 30px
// Typography
//
// Font, line-height, and color for body text, headings, and more.
$font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default;
$font-family-serif: Georgia, "Times New Roman", Times, serif !default;
$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace !default;
$font-family-base: $font-family-sans-serif !default;
// Pixel value used to responsively scale all typography. Applied to the `<html>` element.
$font-size-root: 16px !default;
$font-size-base: 1rem !default;
$font-size-lg: 1.25rem !default;
$font-size-sm: .875rem !default;
$font-size-xs: .75rem !default;
$font-size-h1: 2.5rem !default;
$font-size-h2: 2rem !default;
$font-size-h3: 1.75rem !default;
$font-size-h4: 1.5rem !default;
$font-size-h5: 1.25rem !default;
$font-size-h6: 1rem !default;
$display1-size: 6rem !default;
$display2-size: 5.5rem !default;
$display3-size: 4.5rem !default;
$display4-size: 3.5rem !default;
$display1-weight: 300 !default;
$display2-weight: 300 !default;
$display3-weight: 300 !default;
$display4-weight: 300 !default;
$line-height: 1.5 !default;
$headings-margin-bottom: ($spacer / 2) !default;
$headings-font-family: inherit !default;
$headings-font-weight: 500 !default;
$headings-line-height: 1.1 !default;
$headings-color: inherit !default;
$lead-font-size: 1.25rem !default;
$lead-font-weight: 300 !default;
$text-muted: $gray-light !default;
$abbr-border-color: $gray-light !default;
$blockquote-small-color: $gray-light !default;
$blockquote-font-size: ($font-size-base * 1.25) !default;
$blockquote-border-color: $gray-lighter !default;
$hr-border-color: rgba(0,0,0,.1) !default;
$hr-border-width: $border-width !default;
$dt-font-weight: bold !default;
$nested-kbd-font-weight: bold !default;
$list-inline-padding: 5px !default;
// Components
//
// Define common padding and border radius sizes and more.
$line-height-lg: (4 / 3) !default;
$line-height-sm: 1.5 !default;
$border-radius: .25rem !default;
$border-radius-lg: .3rem !default;
$border-radius-sm: .2rem !default;
$component-active-color: #fff !default;
$component-active-bg: $brand-primary !default;
$caret-width: .3em !default;
$caret-width-lg: $caret-width !default;
// Tables
//
// Customizes the `.table` component with basic values, each used across all table variations.
$table-cell-padding: .75rem !default;
$table-sm-cell-padding: .3rem !default;
$table-bg: transparent !default;
$table-bg-accent: #f9f9f9 !default;
$table-bg-hover: #f5f5f5 !default;
$table-bg-active: $table-bg-hover !default;
$table-border-width: $border-width !default;
$table-border-color: $gray-lighter !default;
// Buttons
//
// For each of Bootstrap's buttons, define text, background and border color.
$btn-padding-x: 1rem !default;
$btn-padding-y: .375rem !default;
$btn-font-weight: normal !default;
$btn-primary-color: #fff !default;
$btn-primary-bg: $brand-primary !default;
$btn-primary-border: $btn-primary-bg !default;
$btn-secondary-color: $gray-dark !default;
$btn-secondary-bg: #fff !default;
$btn-secondary-border: #ccc !default;
$btn-info-color: #fff !default;
$btn-info-bg: $brand-info !default;
$btn-info-border: $btn-info-bg !default;
$btn-success-color: #fff !default;
$btn-success-bg: $brand-success !default;
$btn-success-border: $btn-success-bg !default;
$btn-warning-color: #fff !default;
$btn-warning-bg: $brand-warning !default;
$btn-warning-border: $btn-warning-bg !default;
$btn-danger-color: #fff !default;
$btn-danger-bg: $brand-danger !default;
$btn-danger-border: $btn-danger-bg !default;
$btn-link-disabled-color: $gray-light !default;
$btn-padding-x-sm: .75rem !default;
$btn-padding-y-sm: .25rem !default;
$btn-padding-x-lg: 1.25rem !default;
$btn-padding-y-lg: .75rem !default;
// Allows for customizing button radius independently from global border radius
$btn-border-radius: $border-radius !default;
$btn-border-radius-lg: $border-radius-lg !default;
$btn-border-radius-sm: $border-radius-sm !default;
// Forms
$input-padding-x: .75rem !default;
$input-padding-y: .375rem !default;
$input-bg: #fff !default;
$input-bg-disabled: $gray-lighter !default;
$input-color: $gray !default;
$input-border-color: #ccc !default;
$input-btn-border-width: $border-width !default; // For form controls and buttons
$input-box-shadow: inset 0 1px 1px rgba(0,0,0,.075) !default;
$input-border-radius: $border-radius !default;
$input-border-radius-lg: $border-radius-lg !default;
$input-border-radius-sm: $border-radius-sm !default;
$input-border-focus: #66afe9 !default;
$input-box-shadow-focus: rgba(102,175,233,.6) !default;
$input-color-placeholder: #999 !default;
$input-padding-x-sm: .75rem !default;
$input-padding-y-sm: .275rem !default;
$input-padding-x-lg: 1.25rem !default;
$input-padding-y-lg: .75rem !default;
$input-height: (($font-size-base * $line-height) + ($input-padding-y * 2)) !default;
$input-height-lg: (($font-size-lg * $line-height-lg) + ($input-padding-y-lg * 2)) !default;
$input-height-sm: (($font-size-sm * $line-height-sm) + ($input-padding-y-sm * 2)) !default;
$form-group-margin-bottom: $spacer-y !default;
$input-group-addon-bg: $gray-lighter !default;
$input-group-addon-border-color: $input-border-color !default;
$cursor-disabled: not-allowed !default;
// Form validation icons
$form-icon-success: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjNWNiODVjIiBkPSJNMjMzLjggNjEwYy0xMy4zIDAtMjYtNi0zNC0xNi44TDkwLjUgNDQ4LjhDNzYuMyA0MzAgODAgNDAzLjMgOTguOCAzODljMTguOC0xNC4yIDQ1LjUtMTAuNCA1OS44IDguNGw3MiA5NUw0NTEuMyAyNDJjMTIuNS0yMCAzOC44LTI2LjIgNTguOC0xMy43IDIwIDEyLjQgMjYgMzguNyAxMy43IDU4LjhMMjcwIDU5MGMtNy40IDEyLTIwLjIgMTkuNC0zNC4zIDIwaC0yeiIvPjwvc3ZnPg==" !default;
$form-icon-warning: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjZjBhZDRlIiBkPSJNNjAzIDY0MC4ybC0yNzguNS01MDljLTMuOC02LjYtMTAuOC0xMC42LTE4LjUtMTAuNnMtMTQuNyA0LTE4LjUgMTAuNkw5IDY0MC4yYy0zLjcgNi41LTMuNiAxNC40LjIgMjAuOCAzLjggNi41IDEwLjggMTAuNCAxOC4zIDEwLjRoNTU3YzcuNiAwIDE0LjYtNCAxOC40LTEwLjQgMy41LTYuNCAzLjYtMTQuNCAwLTIwLjh6bS0yNjYuNC0zMGgtNjEuMlY1NDloNjEuMnY2MS4yem0wLTEwN2gtNjEuMlYzMDRoNjEuMnYxOTl6Ii8+PC9zdmc+" !default;
$form-icon-danger: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNzkyIj48cGF0aCBmaWxsPSIjZDk1MzRmIiBkPSJNNDQ3IDU0NC40Yy0xNC40IDE0LjQtMzcuNiAxNC40LTUyIDBsLTg5LTkyLjctODkgOTIuN2MtMTQuNSAxNC40LTM3LjcgMTQuNC01MiAwLTE0LjQtMTQuNC0xNC40LTM3LjYgMC01Mmw5Mi40LTk2LjMtOTIuNC05Ni4zYy0xNC40LTE0LjQtMTQuNC0zNy42IDAtNTJzMzcuNi0xNC4zIDUyIDBsODkgOTIuOCA4OS4yLTkyLjdjMTQuNC0xNC40IDM3LjYtMTQuNCA1MiAwIDE0LjMgMTQuNCAxNC4zIDM3LjYgMCA1MkwzNTQuNiAzOTZsOTIuNCA5Ni40YzE0LjQgMTQuNCAxNC40IDM3LjYgMCA1MnoiLz48L3N2Zz4=" !default;
// Dropdowns
//
// Dropdown menu container and contents.
$dropdown-bg: #fff !default;
$dropdown-border-color: rgba(0,0,0,.15) !default;
$dropdown-border-width: $border-width !default;
$dropdown-divider-bg: #e5e5e5 !default;
$dropdown-link-color: $gray-dark !default;
$dropdown-link-hover-color: darken($gray-dark, 5%) !default;
$dropdown-link-hover-bg: #f5f5f5 !default;
$dropdown-link-active-color: $component-active-color !default;
$dropdown-link-active-bg: $component-active-bg !default;
$dropdown-link-disabled-color: $gray-light !default;
$dropdown-header-color: $gray-light !default;
// Z-index master list
//
// Warning: Avoid customizing these values. They're used for a bird's eye view
// of components dependent on the z-axis and are designed to all work together.
$zindex-navbar: 1000 !default;
$zindex-dropdown: 1000 !default;
$zindex-popover: 1060 !default;
$zindex-tooltip: 1070 !default;
$zindex-navbar-fixed: 1030 !default;
$zindex-navbar-sticky: 1030 !default;
$zindex-modal-bg: 1040 !default;
$zindex-modal: 1050 !default;
// Navbar
$navbar-border-radius: $border-radius !default;
$navbar-padding-horizontal: $spacer !default;
$navbar-padding-vertical: ($spacer / 2) !default;
$navbar-dark-color: rgba(255,255,255,.5) !default;
$navbar-dark-hover-color: rgba(255,255,255,.75) !default;
$navbar-dark-active-color: rgba(255,255,255,1) !default;
$navbar-dark-disabled-color: rgba(255,255,255,.25) !default;
$navbar-light-color: rgba(0,0,0,.3) !default;
$navbar-light-hover-color: rgba(0,0,0,.6) !default;
$navbar-light-active-color: rgba(0,0,0,.8) !default;
$navbar-light-disabled-color: rgba(0,0,0,.15) !default;
// Navs
$nav-link-padding: .5em 1em !default;
$nav-link-hover-bg: $gray-lighter !default;
$nav-disabled-link-color: $gray-light !default;
$nav-disabled-link-hover-color: $gray-light !default;
$nav-tabs-border-color: #ddd !default;
$nav-tabs-link-border-width: $border-width !default;
$nav-tabs-link-hover-border-color: $gray-lighter !default;
$nav-tabs-active-link-hover-bg: $body-bg !default;
$nav-tabs-active-link-hover-color: $gray !default;
$nav-tabs-active-link-hover-border-color: #ddd !default;
$nav-tabs-justified-link-border-color: #ddd !default;
$nav-tabs-justified-active-link-border-color: $body-bg !default;
$nav-pills-border-radius: $border-radius !default;
$nav-pills-active-link-hover-bg: $component-active-bg !default;
$nav-pills-active-link-hover-color: $component-active-color !default;
// Pagination
$pagination-padding-x: .75rem !default;
$pagination-padding-y: .5rem !default;
$pagination-padding-x-sm: .75rem !default;
$pagination-padding-y-sm: .275rem !default;
$pagination-padding-x-lg: 1.5rem !default;
$pagination-padding-y-lg: .75rem !default;
$pagination-color: $link-color !default;
$pagination-bg: #fff !default;
$pagination-border-width: $border-width !default;
$pagination-border-color: #ddd !default;
$pagination-hover-color: $link-hover-color !default;
$pagination-hover-bg: $gray-lighter !default;
$pagination-hover-border: #ddd !default;
$pagination-active-color: #fff !default;
$pagination-active-bg: $brand-primary !default;
$pagination-active-border: $brand-primary !default;
$pagination-disabled-color: $gray-light !default;
$pagination-disabled-bg: #fff !default;
$pagination-disabled-border: #ddd !default;
// Pager
$pager-bg: $pagination-bg !default;
$pager-border-width: $border-width !default;
$pager-border-color: $pagination-border-color !default;
$pager-border-radius: 15px !default;
$pager-hover-bg: $pagination-hover-bg !default;
$pager-active-bg: $pagination-active-bg !default;
$pager-active-color: $pagination-active-color !default;
$pager-disabled-color: $pagination-disabled-color !default;
// Jumbotron
$jumbotron-padding: 2rem !default;
$jumbotron-bg: $gray-lighter !default;
// Form states and alerts
//
// Define colors for form feedback states and, by default, alerts.
$state-success-text: #3c763d !default;
$state-success-bg: #dff0d8 !default;
$state-success-border: darken($state-success-bg, 5%) !default;
$state-info-text: #31708f !default;
$state-info-bg: #d9edf7 !default;
$state-info-border: darken($state-info-bg, 7%) !default;
$state-warning-text: #8a6d3b !default;
$state-warning-bg: #fcf8e3 !default;
$state-warning-border: darken($state-warning-bg, 5%) !default;
$state-danger-text: #a94442 !default;
$state-danger-bg: #f2dede !default;
$state-danger-border: darken($state-danger-bg, 5%) !default;
// Cards
$card-spacer-x: 1.25rem !default;
$card-spacer-y: .75rem !default;
$card-border-width: 1px !default;
$card-border-radius: $border-radius !default;
$card-border-color: #e5e5e5 !default;
$card-border-radius-inner: $card-border-radius !default;
$card-cap-bg: #f5f5f5 !default;
$card-bg: #fff !default;
$card-link-hover-color: #fff !default;
// Tooltips
$tooltip-max-width: 200px !default;
$tooltip-color: #fff !default;
$tooltip-bg: #000 !default;
$tooltip-opacity: .9 !default;
$tooltip-arrow-width: 5px !default;
$tooltip-arrow-color: $tooltip-bg !default;
// Popovers
$popover-bg: #fff !default;
$popover-max-width: 276px !default;
$popover-border-width: $border-width !default;
$popover-border-color: rgba(0,0,0,.2) !default;
$popover-title-bg: darken($popover-bg, 3%) !default;
$popover-arrow-width: 10px !default;
$popover-arrow-color: $popover-bg !default;
$popover-arrow-outer-width: ($popover-arrow-width + 1) !default;
$popover-arrow-outer-color: fade-in($popover-border-color, 0.05) !default;
// Labels
$label-default-bg: $gray-light !default;
$label-primary-bg: $brand-primary !default;
$label-success-bg: $brand-success !default;
$label-info-bg: $brand-info !default;
$label-warning-bg: $brand-warning !default;
$label-danger-bg: $brand-danger !default;
$label-color: #fff !default;
$label-link-hover-color: #fff !default;
$label-font-weight: bold !default;
// Modals
// Padding applied to the modal body
$modal-inner-padding: 15px !default;
$modal-title-padding: 15px !default;
$modal-title-line-height: $line-height !default;
$modal-content-bg: #fff !default;
$modal-content-border-color: rgba(0,0,0,.2) !default;
$modal-backdrop-bg: #000 !default;
$modal-backdrop-opacity: .5 !default;
$modal-header-border-color: #e5e5e5 !default;
$modal-footer-border-color: $modal-header-border-color !default;
$modal-lg: 900px !default;
$modal-md: 600px !default;
$modal-sm: 300px !default;
// Alerts
//
// Define alert colors, border radius, and padding.
$alert-padding: 15px !default;
$alert-border-radius: $border-radius !default;
$alert-link-font-weight: bold !default;
$alert-border-width: $border-width !default;
$alert-success-bg: $state-success-bg !default;
$alert-success-text: $state-success-text !default;
$alert-success-border: $state-success-border !default;
$alert-info-bg: $state-info-bg !default;
$alert-info-text: $state-info-text !default;
$alert-info-border: $state-info-border !default;
$alert-warning-bg: $state-warning-bg !default;
$alert-warning-text: $state-warning-text !default;
$alert-warning-border: $state-warning-border !default;
$alert-danger-bg: $state-danger-bg !default;
$alert-danger-text: $state-danger-text !default;
$alert-danger-border: $state-danger-border !default;
// Progress bars
$progress-bg: #f5f5f5 !default;
$progress-bar-color: #fff !default;
$progress-border-radius: $border-radius !default;
$progress-bar-bg: $brand-primary !default;
$progress-bar-success-bg: $brand-success !default;
$progress-bar-warning-bg: $brand-warning !default;
$progress-bar-danger-bg: $brand-danger !default;
$progress-bar-info-bg: $brand-info !default;
// List group
$list-group-bg: #fff !default;
$list-group-border-color: #ddd !default;
$list-group-border-width: $border-width !default;
$list-group-border-radius: $border-radius !default;
$list-group-hover-bg: #f5f5f5 !default;
$list-group-active-color: $component-active-color !default;
$list-group-active-bg: $component-active-bg !default;
$list-group-active-border: $list-group-active-bg !default;
$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default;
$list-group-disabled-color: $gray-light !default;
$list-group-disabled-bg: $gray-lighter !default;
$list-group-disabled-text-color: $list-group-disabled-color !default;
$list-group-link-color: #555 !default;
$list-group-link-hover-color: $list-group-link-color !default;
$list-group-link-heading-color: #333 !default;
// Image thumbnails
$thumbnail-padding: .25rem !default;
$thumbnail-bg: $body-bg !default;
$thumbnail-border-width: $border-width !default;
$thumbnail-border-color: #ddd !default;
$thumbnail-border-radius: $border-radius !default;
// Breadcrumbs
$breadcrumb-padding-vertical: .75rem !default;
$breadcrumb-padding-horizontal: 1rem !default;
$breadcrumb-bg: $gray-lighter !default;
$breadcrumb-divider-color: $gray-light !default;
$breadcrumb-active-color: $gray-light !default;
$breadcrumb-divider: "/" !default;
// Carousel
$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default;
$carousel-control-color: #fff !default;
$carousel-control-width: 15% !default;
$carousel-control-opacity: .5 !default;
$carousel-control-font-size: 20px !default;
$carousel-indicator-active-bg: #fff !default;
$carousel-indicator-border-color: #fff !default;
$carousel-caption-color: #fff !default;
// Close
$close-font-weight: bold !default;
$close-color: #000 !default;
$close-text-shadow: 0 1px 0 #fff !default;
// Code
$code-color: #bd4147 !default;
$code-bg: #f7f7f9 !default;
$kbd-color: #fff !default;
$kbd-bg: #333 !default;
$pre-bg: #f7f7f9 !default;
$pre-color: $gray-dark !default;
$pre-border-color: #ccc !default;
$pre-scrollable-max-height: 340px !default;
@@ -0,0 +1,8 @@
// Bootstrap with Flexbox enabled
//
// Includes all the imports from the standard Bootstrap project, but enables
// the flexbox variable.
$enable-flex: true;
@import "bootstrap";
@@ -0,0 +1,62 @@
// Bootstrap Grid only
//
// Includes relevant variables and mixins for the regular (non-flexbox) grid
// system, as well as the generated predefined classes (e.g., `.col-4-sm`).
//
// Variables
//
// Grid breakpoints
//
// Define the minimum and maximum dimensions at which your layout will change,
// adapting to different screen sizes, for use in media queries.
$grid-breakpoints: (
// Extra small screen / phone
xs: 0,
// Small screen / phone
sm: 544px,
// Medium screen / tablet
md: 768px,
// Large screen / desktop
lg: 992px,
// Extra large screen / wide desktop
xl: 1200px
) !default;
// Grid containers
//
// Define the maximum width of `.container` for different screen sizes.
$container-max-widths: (
sm: 576px,
md: 720px,
lg: 940px,
xl: 1140px
) !default;
// Grid columns
//
// Set the number of columns and specify the width of the gutters.
$grid-columns: 12 !default;
$grid-gutter-width: 1.875rem !default; // 30px
//
// Grid mixins
//
@import "variables";
@import "mixins/clearfix";
@import "mixins/breakpoints";
@import "mixins/grid-framework";
@import "mixins/grid";
@import "grid";
@@ -0,0 +1,10 @@
// Bootstrap Reboot only
//
// Includes only Normalize and our custom Reboot reset.
@import "variables";
@import "mixins/hover";
@import "mixins/tab-focus";
@import "normalize";
@import "reboot";
+56
View File
@@ -0,0 +1,56 @@
/*!
* Bootstrap v4.0.0-alpha.2 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// Core variables and mixins
@import "variables";
@import "mixins";
// Reset and dependencies
@import "normalize";
@import "print";
// Core CSS
@import "reboot";
@import "type";
@import "images";
@import "code";
@import "grid";
@import "tables";
@import "forms";
@import "buttons";
// Components
@import "animation";
@import "dropdown";
@import "button-group";
@import "input-group";
@import "custom-forms";
@import "nav";
@import "navbar";
@import "card";
@import "breadcrumb";
@import "pagination";
@import "pager";
@import "labels";
@import "jumbotron";
@import "alert";
@import "progress";
@import "media";
@import "list-group";
@import "responsive-embed";
@import "close";
// Components w/ JavaScript
@import "modal";
@import "tooltip";
@import "popover";
@import "carousel";
// Utility classes
@import "utilities";
@import "utilities-background";
@import "utilities-spacing";
@import "utilities-responsive";
@@ -0,0 +1,14 @@
// Alerts
@mixin alert-variant($background, $border, $body-color) {
background-color: $background;
border-color: $border;
color: $body-color;
hr {
border-top-color: darken($border, 5%);
}
.alert-link {
color: darken($body-color, 10%);
}
}
@@ -0,0 +1,13 @@
// Contextual backgrounds
@mixin bg-variant($parent, $color) {
#{$parent} {
color: #fff !important;
background-color: $color !important;
}
a#{$parent} {
@include hover-focus {
background-color: darken($color, 10%);
}
}
}
@@ -0,0 +1,35 @@
// Single side border-radius
@mixin border-radius($radius: $border-radius) {
@if $enable-rounded {
border-radius: $radius;
}
}
@mixin border-top-radius($radius) {
@if $enable-rounded {
border-top-right-radius: $radius;
border-top-left-radius: $radius;
}
}
@mixin border-right-radius($radius) {
@if $enable-rounded {
border-bottom-right-radius: $radius;
border-top-right-radius: $radius;
}
}
@mixin border-bottom-radius($radius) {
@if $enable-rounded {
border-bottom-right-radius: $radius;
border-bottom-left-radius: $radius;
}
}
@mixin border-left-radius($radius) {
@if $enable-rounded {
border-bottom-left-radius: $radius;
border-top-left-radius: $radius;
}
}
@@ -0,0 +1,86 @@
// Breakpoint viewport sizes and media queries.
//
// Breakpoints are defined as a map of (name: minimum width), order from small to large:
//
// (xs: 0, sm: 544px, md: 768px)
//
// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
// Name of the next breakpoint, or null for the last breakpoint.
//
// >> breakpoint-next(sm)
// md
// >> breakpoint-next(sm, (xs: 0, sm: 544px, md: 768px))
// md
// >> breakpoint-next(sm, $breakpoint-names: (xs sm md))
// md
@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
$n: index($breakpoint-names, $name);
@return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
}
// Minimum breakpoint width. Null for the smallest (first) breakpoint.
//
// >> breakpoint-min(sm, (xs: 0, sm: 544px, md: 768px))
// 544px
@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
$min: map-get($breakpoints, $name);
@return if($min != 0, $min, null);
}
// Maximum breakpoint width. Null for the largest (last) breakpoint.
// The maximum value is calculated as the minimum of the next one less 0.1.
//
// >> breakpoint-max(sm, (xs: 0, sm: 544px, md: 768px))
// 767px
@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
$next: breakpoint-next($name, $breakpoints);
@return if($next, breakpoint-min($next, $breakpoints) - 1px, null);
}
// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
// Makes the @content apply to the given breakpoint and wider.
@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
$min: breakpoint-min($name, $breakpoints);
@if $min {
@media (min-width: $min) {
@content;
}
} @else {
@content;
}
}
// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
// Makes the @content apply to the given breakpoint and narrower.
@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
$max: breakpoint-max($name, $breakpoints);
@if $max {
@media (max-width: $max) {
@content;
}
} @else {
@content;
}
}
// Media between the breakpoint's minimum and maximum widths.
// No minimum for the smallest breakpoint, and no maximum for the largest one.
// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
@include media-breakpoint-up($name, $breakpoints) {
@include media-breakpoint-down($name, $breakpoints) {
@content;
}
}
}
// Media that spans multiple breakpoint widths.
// Makes the @content apply between the min and max breakpoints
@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
@include media-breakpoint-up($lower, $breakpoints) {
@include media-breakpoint-down($upper, $breakpoints) {
@content;
}
}
}
@@ -0,0 +1,100 @@
// Button variants
//
// Easily pump out default styles, as well as :hover, :focus, :active,
// and disabled options for all buttons
@mixin button-variant($color, $background, $border) {
$active-background: darken($background, 10%);
$active-border: darken($border, 12%);
color: $color;
background-color: $background;
border-color: $border;
@include box-shadow(inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075));
@include hover {
color: $color;
background-color: $active-background;
border-color: $active-border;
}
&:focus,
&.focus {
color: $color;
background-color: $active-background;
border-color: $active-border;
}
&:active,
&.active,
.open > &.dropdown-toggle {
color: $color;
background-color: $active-background;
border-color: $active-border;
// Remove the gradient for the pressed/active state
background-image: none;
@include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
&:hover,
&:focus,
&.focus {
color: $color;
background-color: darken($background, 17%);
border-color: darken($border, 25%);
}
}
&.disabled,
&:disabled {
&:focus,
&.focus {
background-color: $background;
border-color: $border;
}
@include hover {
background-color: $background;
border-color: $border;
}
}
}
@mixin button-outline-variant($color) {
color: $color;
background-image: none;
background-color: transparent;
border-color: $color;
&:focus,
&.focus,
&:active,
&.active,
.open > &.dropdown-toggle {
color: #fff;
background-color: $color;
border-color: $color;
}
@include hover {
color: #fff;
background-color: $color;
border-color: $color;
}
&.disabled,
&:disabled {
&:focus,
&.focus {
border-color: lighten($color, 20%);
}
@include hover {
border-color: lighten($color, 20%);
}
}
}
// Button sizes
@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
padding: $padding-y $padding-x;
font-size: $font-size;
line-height: $line-height;
@include border-radius($border-radius);
}
@@ -0,0 +1,38 @@
// Card variants
@mixin card-variant($background, $border) {
background-color: $background;
border-color: $border;
}
@mixin card-outline-variant($color) {
background-color: transparent;
border-color: $color;
}
//
// Inverse text within a card for use with dark backgrounds
//
@mixin card-inverse {
.card-header,
.card-footer {
border-bottom: $card-border-width solid rgba(255,255,255,.2);
}
.card-header,
.card-footer,
.card-title,
.card-blockquote {
color: #fff;
}
.card-link,
.card-text,
.card-blockquote > footer {
color: rgba(255,255,255,.65);
}
.card-link {
@include hover-focus {
color: $card-link-hover-color;
}
}
}

Some files were not shown because too many files have changed in this diff Show More