first commit

This commit is contained in:
dev-chiefworks
2022-05-31 16:21:53 -04:00
commit f76abffdcd
5978 changed files with 1078901 additions and 0 deletions
@@ -0,0 +1,156 @@
/* ------------------------------------------------------------------------------
*
* # Alert component
*
* Overrides for alert bootstrap component
*
* ---------------------------------------------------------------------------- */
// Dismissible alerts
.alert-dismissible {
// Adjust close link color
.close {
@include hover-focus {
color: inherit;
}
}
}
//
// Alternate styles
//
// Custom background color
.alert[class*=bg-]:not(.bg-transparent):not(.bg-white):not(.bg-light) {
.alert-link {
color: inherit;
border-bottom-color: rgba($white, 0.85);
}
}
// Rounded alert
.alert-rounded {
padding-left: ($alert-padding-x * 1.5);
padding-right: ($alert-padding-x * 1.5);
@include border-radius($border-radius-round);
// Close button
&.alert-dismissible {
.close {
@include border-right-radius($border-radius-round);
}
}
}
// Styled alerts
.alert {
// Icon variations
&[class*=alert-styled-] {
// Icon base
&:after {
content: $icon-alert-styled-base;
font-family: $icon-font-family;
color: $white;
width: (($alert-padding-y * 2) + $icon-font-size);
left: -(($alert-padding-y * 2) + $icon-font-size);
text-align: center;
position: absolute;
top: 50%;
margin-top: -($icon-font-size / 2);
font-size: $icon-font-size;
font-weight: $font-weight-normal;
line-height: 1;
@include ll-font-smoothing();
}
// Danger icon
&.alert-danger:after,
&[class*=bg-danger]:after {
content: $icon-alert-styled-danger;
}
// Success icon
&.alert-success:after,
&[class*=bg-success]:after {
content: $icon-alert-styled-success;
}
// Warning icon
&.alert-warning:after,
&[class*=bg-warning]:after {
content: $icon-alert-styled-warning;
}
// Info icon
&.alert-info:after,
&[class*=bg-info]:after {
content: $icon-alert-styled-info;
}
}
// Styled alert with left icon
&.alert-styled-left {
border-left-width: (($alert-padding-y * 2) + $icon-font-size);
// With custom bg
&[class*=bg-]:not(.bg-white):not(.bg-light) {
border-left-color: rgba($black, 0.15)!important;
}
}
// Styled alert with right icon
&.alert-styled-right {
border-right-width: (($alert-padding-y * 2) + $icon-font-size);
// Change icon position
&:after {
left: auto;
right: -(($alert-padding-y * 2) + $icon-font-size);
}
// With custom bg
&[class*=bg-]:not(.bg-white):not(.bg-light) {
border-right-color: rgba($black, 0.15)!important;
}
}
// With custom icon
&.alert-styled-custom {
&:after {
content: $icon-alert-styled-custom; // Change icon code for custom alert
}
}
}
// Alert arrow
.alert {
// Left arrow
&:not(.ui-pnotify)[class*=alert-arrow-]:before,
&.ui-pnotify[class*=alert-arrow-] > .brighttheme:before {
content: "";
display: inline-block;
position: absolute;
top: 50%;
left: 0;
border-left: $alert-arrow-size solid;
border-top: $alert-arrow-size solid transparent;
border-bottom: $alert-arrow-size solid transparent;
border-left-color: inherit;
margin-top: -$alert-arrow-size;
}
// Right arrow
&:not(.ui-pnotify).alert-arrow-right:before,
&.ui-pnotify.alert-arrow-right > .brighttheme:before {
left: auto;
right: 0;
border-left: 0;
border-right: $alert-arrow-size solid;
border-right-color: inherit;
}
}
@@ -0,0 +1,140 @@
/* ------------------------------------------------------------------------------
*
* # Badge component
*
* Overrides for badge bootstrap component
*
* ---------------------------------------------------------------------------- */
// Base
.badge {
// Direction arrow in badge dropdowns
&.dropdown-toggle {
&:after {
font-size: 85%;
vertical-align: baseline;
}
}
// Light color
&-light {
background-color: $gray-200;
}
}
// Linked badge
a.badge {
// Custom bg color
&[class*=bg-]:not(.bg-transparent):not(.bg-white):not(.bg-light) {
&:hover,
&:focus,
.show > &.dropdown-toggle {
box-shadow: $btn-dark-hover-box-shadow;
}
}
}
// Quick fix for badges in buttons
.btn .badge {
top: 0;
}
//
// Alternative styles
//
// Flat (outline) badge
.badge-flat {
background-color: transparent;
border: $badge-flat-border-width solid transparent;
padding: calc(#{$badge-padding-y} - #{$badge-flat-border-width}) calc(#{$badge-padding-x} - #{$badge-flat-border-width});
// Remove background color and shadow on hover
&[href] {
@include hover-focus {
background-color: transparent;
@include box-shadow(none);
}
}
// Pill badge
&.badge-pill {
padding-left: calc(#{$badge-pill-padding-x} - #{$badge-flat-border-width});
padding-right: calc(#{$badge-pill-padding-x} - #{$badge-flat-border-width});
}
}
// Striped badge
.badge-striped {
padding: $badge-striped-padding-y $badge-striped-padding-x;
position: relative;
// Stripe
&:before {
content: '';
width: 0;
position: absolute;
top: 0;
bottom: 0;
}
// Left alignment
&-left {
padding-left: calc(#{$badge-padding-x} + #{$badge-striped-border-width});
@include border-left-radius(0);
// Stripe
&:before {
left: 0;
border-left: $badge-striped-border-width solid;
border-left-color: inherit;
}
}
// Right alignment
&-right {
padding-right: calc(#{$badge-padding-x} + #{$badge-striped-border-width});
@include border-right-radius(0);
// Stripe
&:before {
right: 0;
border-right: $badge-striped-border-width solid;
border-right-color: inherit;
}
}
}
// Badge with icon
.badge-icon {
padding: $badge-padding-x;
line-height: 1;
// Remove top edge from icon
> i {
top: 0;
}
}
// Floating badge
.badge-float {
position: absolute;
right: $badge-float-margin;
top: $badge-float-margin;
}
// Badge mark
.badge-mark {
padding: 0;
border: $badge-mark-border-width solid;
@include size($badge-mark-size);
@include border-radius($border-radius-round);
// Override default behaviour if it's empty
&:empty {
display: inline-block;
}
}
@@ -0,0 +1,224 @@
/* ------------------------------------------------------------------------------
*
* # Breadcrumb component
*
* Overrides for breadcrumb bootstrap component
*
* ---------------------------------------------------------------------------- */
// Base
.breadcrumb {
padding: 0;
}
// Breadcrumb item
.breadcrumb-item {
padding: $breadcrumb-padding-y 0;
color: inherit;
// Icons
i {
font-size: $font-size-sm;
}
}
// Linked items
a.breadcrumb-item {
display: inline-block;
color: inherit;
@include transition(opacity ease-in-out $component-transition-timer);
// Hover state
&:hover,
&:focus,
.show > & {
opacity: 0.75;
}
}
// Transparent breadcrumb
.page-header-content {
// Breadcrumb
> .breadcrumb {
padding-top: 0;
padding-bottom: ($breadcrumb-padding-y * 2);
&:first-child {
padding-bottom: 0;
padding-top: ($breadcrumb-padding-y * 2);
}
}
}
//
// Divider styles
//
// Dash
.breadcrumb-dash > .breadcrumb-item + .breadcrumb-item:before {
content: '\2013\00a0';
}
// Arrow
.breadcrumb-arrow > .breadcrumb-item + .breadcrumb-item:before {
@if $direction == "LTR" {
content: '\2192\00a0';
}
@else {
content: '\2190\00a0';
}
}
// Arrows
.breadcrumb-arrows > .breadcrumb-item + .breadcrumb-item:before {
content: '\00bb\00a0';
}
// Caret
.breadcrumb-caret > .breadcrumb-item + .breadcrumb-item:before {
content: '\203A\00a0';
}
//
// Breadcrumb line
//
// Base
.breadcrumb-line {
position: relative;
padding-left: $breadcrumb-line-padding-x;
padding-right: $breadcrumb-line-padding-x;
border-top: $breadcrumb-line-border-width solid transparent;
border-bottom: $breadcrumb-line-border-width solid transparent;
// Inside page header (all levels)
&:not(.breadcrumb-line-component):first-child {
border-top-width: 0;
}
// After page header content
&:last-child {
margin-bottom: $spacer;
// Remove bottom margin if inside colored header
.page-header-light &,
.page-header-dark & {
margin-bottom: 0;
}
}
}
// Light line
.breadcrumb-line-light {
background-color: $breadcrumb-line-light-bg;
border-color: $breadcrumb-line-light-border-color;
color: $body-color;
// Remove bottom border in light header
&:not(.breadcrumb-line-component):last-child {
.page-header-light & {
border-bottom-width: 0;
}
}
// Remove borders in dark header
.page-header-dark &:not(.breadcrumb-line-component) {
border-top-width: 0;
// Remove bottom border if before title
&:first-child {
border-bottom-width: 0;
}
}
// Borders in line component
&.breadcrumb-line-component {
border-color: $breadcrumb-line-light-border-color;
}
}
// Dark line
.breadcrumb-line-dark {
background-color: $breadcrumb-line-dark-bg;
border-color: transparent;
color: $white;
// Remove bottom border in dark header
&:not(.breadcrumb-line-component):last-child {
.page-header-dark & {
border-bottom-width: 0;
}
}
// Active state
.breadcrumb-item {
&.active {
color: inherit;
}
}
// In dark page header
.page-header-dark & {
border-color: $breadcrumb-line-dark-border-color;
}
}
// As a component
.breadcrumb-line-component {
border: $breadcrumb-line-border-width solid transparent;
@include border-radius($border-radius);
// Inside page header
.page-header & {
margin-left: $page-header-padding-x;
margin-right: $page-header-padding-x;
}
}
//
// Breadrumb elements
//
// Base
.breadcrumb-elements-item {
padding: $breadcrumb-padding-y 0;
// Spacing between items
+ .breadcrumb-elements-item {
margin-left: map-get($spacers, 3);
}
}
// Links
a.breadcrumb-elements-item {
@extend a.breadcrumb-item;
}
// Layout specific additions
// ------------------------------
//
// # Layout 5
//
@if $layout == 'layout_5' {
// Breadcrumb line has extra horizontal spacing that
// matches page content spacing
.breadcrumb-line:not(.breadcrumb-line-component) {
@include media-breakpoint-up(md) {
padding-left: ($page-container-padding-x / 2) + ($content-container-padding-x * 2);
padding-right: ($page-container-padding-x / 2) + ($content-container-padding-x * 2);
}
@include media-breakpoint-up(xl) {
padding-left: $page-container-padding-x + ($content-container-padding-x * 2);
padding-right: $page-container-padding-x + ($content-container-padding-x * 2);
}
}
}
@@ -0,0 +1,33 @@
/* ------------------------------------------------------------------------------
*
* # Button group component
*
* Overrides for button group bootstrap component
*
* ---------------------------------------------------------------------------- */
// Make sure custom border widths work correctly
.btn-group {
// Double border width
> .btn.border-2:not(:first-child) {
margin-left: -($btn-border-width * 2);
}
// Tripple border width
> .btn.border-3:not(:first-child) {
margin-left: -($btn-border-width * 3);
}
}
// Justified button group
.btn-group-justified {
display: flex;
// Stretch the buttons
.btn,
.btn-group {
flex: 1;
}
}
@@ -0,0 +1,271 @@
/* ------------------------------------------------------------------------------
*
* # Button component
*
* Overrides for button bootstrap component
*
* ---------------------------------------------------------------------------- */
// Button base
.btn {
position: relative;
// Button states
&:not(.bg-transparent):not([class*=btn-outline]):not(.btn-light):not(.btn-link):not([class*=alpha-]):not(.fab-menu-btn) {
// States
&:hover,
&:focus,
&.focus,
&:active,
&.active,
.show > &.dropdown-toggle {
box-shadow: $btn-dark-hover-box-shadow;
}
// Disabled button
&.disabled,
&:disabled {
box-shadow: none;
}
}
// Disabled state
&.disabled,
&:disabled {
cursor: $cursor-disabled;
}
}
// Light button overrides
.btn-light {
color: $btn-light-color;
background-color: $btn-light-bg;
border-color: $btn-light-border-color;
// States
&:hover,
&:focus,
&.focus,
&:not([disabled]):not(.disabled):active,
&:not([disabled]):not(.disabled).active,
.show > &.dropdown-toggle {
color: $btn-light-hover-color;
background-color: $btn-light-hover-bg;
border-color: $btn-light-hover-border-color;
}
// Disabled button
&.disabled,
&:disabled {
background-color: $btn-light-bg;
border-color: $btn-light-border-color;
}
}
//
// Alternate buttons
//
// Custom outline buttons
.btn-outline {
&:not(:hover):not(:active):not(.active):not([aria-expanded=true]),
&.disabled,
&:disabled {
background-color: transparent!important;
}
// Hover/focus states
&:not(.disabled):not(:disabled):not([class*=alpha-]) {
&:hover,
&:not([disabled]):not(.disabled):active,
&:not([disabled]):not(.disabled).active,
.show > &.dropdown-toggle {
color: $white!important;
}
}
// White button
&.bg-white:not(.disabled):not(:disabled) {
&:hover,
&:not([disabled]):not(.disabled):active,
&:not([disabled]):not(.disabled).active,
.show > &.dropdown-toggle {
color: $body-color!important;
}
}
}
// Link buttons
.btn-link {
// Opened dropdown
.show > &.dropdown-toggle {
color: $link-hover-color;
}
}
// Button with icon only
.btn-icon {
padding-left: $btn-padding-y + (($line-height-computed - $icon-font-size) / 2);
padding-right: $btn-padding-y + (($line-height-computed - $icon-font-size) / 2);
// Checkbox and radio
input[type=checkbox],
input[type=radio] {
display: block;
}
// Sizes
&.btn-sm {
padding-left: $btn-padding-y-sm + (($line-height-computed - $icon-font-size) / 2);
padding-right: $btn-padding-y-sm + (($line-height-computed - $icon-font-size) / 2);
}
&.btn-lg {
padding-left: $btn-padding-y-lg + (($line-height-computed - $icon-font-size) / 2);
padding-right: $btn-padding-y-lg + (($line-height-computed - $icon-font-size) / 2);
}
}
// Float button
.btn-float {
padding: $btn-float-padding;
@include border-radius($btn-border-radius);
// Transparent button
&.btn-link {
padding: ($btn-float-padding / 1.25);
}
// Icon
i {
display: block;
top: 0;
}
// Text
> span {
display: block;
padding-top: ($spacer / 2);
margin-bottom: -($font-size-base / 2);
overflow: hidden;
text-overflow: ellipsis;
}
}
// Buttons with strong border
.btn {
&.border-2 {
padding-top: ($btn-padding-y - rem-calc($border-width));
padding-bottom: ($btn-padding-y - rem-calc($border-width));
// Sizes
&.btn-lg {
padding-top: ($btn-padding-y-lg - rem-calc($border-width));
padding-bottom: ($btn-padding-y-lg - rem-calc($border-width));
}
&.btn-sm {
padding-top: ($btn-padding-y-sm - rem-calc($border-width));
padding-bottom: ($btn-padding-y-sm - rem-calc($border-width));
}
// Icon button
&.btn-icon {
padding-left: $btn-padding-y + (($line-height-computed - $icon-font-size) / 2) - rem-calc($border-width);
padding-right: $btn-padding-y + (($line-height-computed - $icon-font-size) / 2) - rem-calc($border-width);
// Sizes
&.btn-lg {
padding-left: $btn-padding-y-lg + (($line-height-computed - $icon-font-size) / 2) - rem-calc($border-width);
padding-right: $btn-padding-y-lg + (($line-height-computed - $icon-font-size) / 2) - rem-calc($border-width);
}
&.btn-sm {
padding-left: $btn-padding-y-sm + (($line-height-computed - $icon-font-size) / 2) - rem-calc($border-width);
padding-right: $btn-padding-y-sm + (($line-height-computed - $icon-font-size) / 2) - rem-calc($border-width);
}
}
// Float button
&.btn-float {
padding: ($btn-float-padding - rem-calc($border-width));
}
}
}
//
// Labeled buttons
//
// Base
.btn-labeled {
// Icon
> b {
position: absolute;
top: -$btn-border-width;
background-color: rgba($black, 0.15);
display: block;
line-height: 1;
padding: ($line-height-computed - $icon-font-size + $btn-padding-y - rem-calc($btn-border-width));
// Center icon vertically
> i {
top: 0;
}
}
// Rounded icon
&.rounded-round {
> b {
@include border-radius($border-radius-round);
}
}
// Sizes
&.btn-lg > b {
padding: ($line-height-computed - $icon-font-size + $btn-padding-y-lg - rem-calc($btn-border-width));
}
&.btn-sm > b {
padding: ($line-height-computed - $icon-font-size + $btn-padding-y-sm - rem-calc($btn-border-width));
}
}
// Left icon
.btn-labeled-left {
padding-left: ((($line-height-computed - $icon-font-size + $btn-padding-y - rem-calc($btn-border-width)) * 2) + $icon-font-size) + $btn-padding-x;
// Icon
> b {
left: -$btn-border-width;
@include border-left-radius($btn-border-radius);
}
// Sizes
&.btn-lg {
padding-left: ((($line-height-computed-lg - $icon-font-size + $btn-padding-y-lg - rem-calc($btn-border-width)) * 2) + $icon-font-size) + $btn-padding-x-lg;
> b {
@include border-left-radius($btn-border-radius-lg);
}
}
&.btn-sm {
padding-left: ((($line-height-computed - $icon-font-size + $btn-padding-y-sm - rem-calc($btn-border-width)) * 2) + $icon-font-size) + $btn-padding-x-sm;
> b {
@include border-left-radius($btn-border-radius-sm);
}
}
}
// Right icon
.btn-labeled-right {
padding-right: ((($line-height-computed - $icon-font-size + $btn-padding-y - rem-calc($btn-border-width)) * 2) + $icon-font-size) + $btn-padding-x;
// Icon
> b {
right: -$btn-border-width;
@include border-right-radius($btn-border-radius);
}
}
@@ -0,0 +1,257 @@
/* ------------------------------------------------------------------------------
*
* # Card component
*
* Overrides for card bootstrap component
*
* ---------------------------------------------------------------------------- */
//
// Base styles
//
// Card base
.card {
margin-bottom: $spacer;
@include box-shadow($card-box-shadow);
// Full screen mode
&.fixed-top {
overflow: auto;
max-height: 100%;
}
}
// Card body
.card-body:not(.card) {
+ .card-body:not(.card) {
border-top: $card-border-width solid $card-border-color;
}
}
// Card title
.card-title {
position: relative;
}
// Card header
.card-header {
// Title
.card-title {
margin-bottom: 0;
}
// Inside dark card
.card[class*=bg-]:not(.bg-light):not(.bg-white):not(.bg-transparent) & {
border-bottom-color: rgba($white, 0.1);
}
// If header has no bottom border,
// make vertical spacing bigger
&:not([class*=bg-]):not([class*=alpha-]) {
background-color: transparent;
padding-top: $card-spacer-x;
padding-bottom: $card-spacer-x;
border-bottom-width: 0;
// Remove top padding from card body
+ .card-body,
+ * > .card-body:first-child {
padding-top: 0;
}
}
}
// Card footer
.card-footer {
// Add top borders if comes last
&:first-child,
.card-header + &,
.card-header + * > &:first-child {
border-top: 0;
border-bottom: $card-border-width solid $card-border-color;
}
// Add border if not last
&.border-bottom-1 {
border-bottom: $card-border-width solid $card-border-color;
}
}
//
// Header navs
//
.card-header-tabs {
margin-bottom: 0;
// Link
.nav-link {
border-top-width: 0;
}
}
//
// Image controls
//
// Card image
.card-img {
// Inside card body
.card-body & {
@include border-radius($card-border-radius);
}
}
// Img actions
.card-img-actions {
position: relative;
// Hover state
@include hover-focus {
.card-img-actions-overlay {
opacity: 1;
visibility: visible;
}
}
}
// Img actions overlay
.card-img-actions-overlay {
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba($black, 0.75);
color: $white;
opacity: 0;
visibility: hidden;
@include transition(all ease-in-out $component-transition-timer);
}
//
// Card actions
//
// Link base
[data-action] {
cursor: pointer;
// Icons base
&:after {
font-family: $icon-font-family;
font-size: $icon-font-size;
min-width: $icon-font-size;
text-align: center;
display: inline-block;
vertical-align: middle;
@include ll-font-smoothing();
}
}
// Collapse icon
[data-action="collapse"]:after {
content: $icon-card-action-collapse;
}
// Reload icon
[data-action="reload"]:after {
content: $icon-card-action-reload;
}
// Remove icon
[data-action="remove"]:after {
content: $icon-card-action-remove;
font-size: $font-size-base;
}
// Move icon
[data-action="move"] {
cursor: default;
// Icon
&:after {
content: $icon-card-action-move;
}
}
// Fullscreen
[data-action="fullscreen"] {
&:after {
content: $icon-card-action-full-base;
}
// Change icon when in fullscreen mode
&[data-fullscreen="active"]:after {
content: $icon-card-action-full-active;
}
}
// Open modal icon
[data-action="modal"]:after {
content: $icon-card-action-modal;
}
//
// Collapsable panels (aka, accordion)
//
.card-group-control {
.card-title > a {
display: inline-block;
// Collapsible icon
&:before {
content: $icon-card-expand;
font-family: $icon-font-family;
position: absolute;
top: 50%;
margin-top: -($icon-font-size / 2);
font-size: $icon-font-size;
font-weight: $font-weight-normal;
line-height: 1;
@include ll-font-smoothing();
}
// Change icon if collapsed
&.collapsed:before {
content: $icon-card-collapse;
}
}
// Left control position
&-left {
.card-title > a {
padding-left: ($icon-font-size + $element-spacer-x);
// Icon alignment
&:before {
left: 0;
}
}
}
// Right control position
&-right {
.card-title > a {
padding-right: ($icon-font-size + $element-spacer-x);
// Re-align the icon
&:before {
right: 0;
}
}
}
}
@@ -0,0 +1,25 @@
/* ------------------------------------------------------------------------------
*
* # Close button
*
* Overrides of default close button styles
*
* ---------------------------------------------------------------------------- */
// Base
.close {
opacity: .75;
@include transition(color ease-in-out $component-transition-timer, opacity ease-in-out $component-transition-timer);
// Hover and focus states
@include hover-focus {
outline: 0;
}
// Hover and focus states
&:not(:disabled):not(.disabled) {
@include hover-focus {
opacity: 1;
}
}
}
@@ -0,0 +1,21 @@
/* ------------------------------------------------------------------------------
*
* # Code blocks
*
* Overrides of default code block styles
*
* ---------------------------------------------------------------------------- */
// Inline code
code {
padding: $code-padding-y $code-padding-x;
background-color: $code-bg;
}
// Blocks of code
pre {
white-space: pre-wrap;
/*rtl:ignore*/
text-align: left;
@include border-radius($border-radius);
}
@@ -0,0 +1,117 @@
/* ------------------------------------------------------------------------------
*
* # Custom form inputs
*
* Custom checkboxes, radios, selects and file inputs
*
* ---------------------------------------------------------------------------- */
//
// Checkboxes and radios
//
// Container
.custom-control {
margin-bottom: $form-check-margin-y;
// Last item doesn't have spacing
&:last-child {
margin-bottom: 0;
}
}
// Inline list
.custom-control-inline {
margin-bottom: 0;
// Last item doesn't have spacing
&:last-child {
margin-right: 0;
}
}
// Input
.custom-control-input {
// Active state
&:active ~ .custom-control-label::before {
@include transition(all ease-in-out $component-transition-timer);
}
// Disabled state
&:disabled {
~ .custom-control-label {
cursor: $cursor-disabled;
}
}
}
// Custom control indicators
.custom-control-label {
cursor: pointer;
// Background
&::before {
top: (($line-height-computed - $custom-control-indicator-size) / 2);
}
// Foreground (icon)
&::after {
top: (($line-height-computed - $custom-control-indicator-size) / 2);
}
}
// Right input alignment
.custom-control-right {
padding-left: 0;
padding-right: ($custom-control-gutter + $custom-control-indicator-size);
// Input
.custom-control-input {
right: 0;
}
// Label
.custom-control-label {
&:before,
&:after {
left: auto;
right: 0;
}
}
}
//
// Select
//
.custom-select {
cursor: pointer;
@include transition(all ease-in-out $component-transition-timer);
// Hover state
@include hover-focus {
@include box-shadow($hover-shadow-lighter);
}
// Disabled state
&:disabled {
cursor: $cursor-disabled;
// Hover state
@include hover-focus {
@include box-shadow(none);
}
}
}
//
// File
//
.custom-file-label {
margin-bottom: 0;
}
@@ -0,0 +1,422 @@
/* ------------------------------------------------------------------------------
*
* # Dropdown menu component
*
* Overrides for dropdown menu bootstrap component
*
* ---------------------------------------------------------------------------- */
//
// Base styles
//
// Dropdown menu item
.dropdown-item {
display: flex;
align-items: center;
position: relative;
outline: 0;
overflow: hidden;
text-overflow: ellipsis;
cursor: pointer;
margin-bottom: 0;
@include transition(background-color ease-in-out $component-transition-timer, color ease-in-out $component-transition-timer);
// Add spacing between items
& + &,
.dropdown-submenu + &,
& + .dropdown-submenu {
margin-top: $dropdown-item-spacer-y;
}
// Due to default solution, this needs to be duplicated
// as :active is different from .active in the template
&:active {
color: $dropdown-link-hover-color;
@include gradient-bg($dropdown-link-hover-bg);
}
&.active {
color: $dropdown-link-active-color;
@include gradient-bg($dropdown-link-active-bg);
// Calculate color shades for badges
// depending on active item color
@if (lightness($dropdown-link-active-bg) < 75) {
// All badges except badge mark
.badge:not(.badge-mark) {
background-color: $white!important;
color: $body-color!important;
}
// Badge mark with custom bg
.badge-mark[class*=bg-] {
background-color: $white!important;
border-color: $white!important;
}
// Badge mark with custom border
.badge-mark[class*=border-] {
border-color: $white!important;
}
}
}
// Disabled state
&.disabled,
&:disabled {
color: $dropdown-link-disabled-color;
background-color: transparent;
cursor: $cursor-disabled;
// Mute badges and images
> .badge,
> img {
opacity: 0.8;
}
}
}
// Active submenu indicator
.dropdown-item-open {
background-color: $dropdown-link-hover-bg;
color: $dropdown-link-hover-color;
}
// Dropdown section headers
.dropdown-header {
display: flex;
align-items: center;
margin-top: ($dropdown-padding-y / 2);
margin-bottom: ($dropdown-padding-y / 2);
line-height: $line-height-sm;
// Highlighted header
&-highlight {
margin-top: 0;
background-color: $dropdown-header-bg;
// Add top spacing
.dropdown-item + &,
& + .dropdown-item {
margin-top: $dropdown-padding-y;
}
// ... but remove from the first one
&:first-child {
margin-top: 0;
}
}
}
// Icons, badges and images
.dropdown-item,
.dropdown-header {
// Icons and images
> i,
> img {
margin-right: $dropdown-icon-spacer-x;
}
// Icon
> i {
top: 0;
}
// Image thumbs
> img {
max-height: $line-height-computed;
}
}
// Checkboxes and radios
.dropdown-item {
&.form-check {
padding: 0;
margin-bottom: 0;
// Label
.form-check-label {
flex: 1;
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
}
// Right alignment
&.form-check-right {
.form-check-label {
padding-left: $dropdown-item-padding-x;
}
}
}
}
// Scrollable dropdown
.dropdown-scrollable {
max-height: $dropdown-scrollable-max-height;
overflow-y: auto;
}
//
// Dropdown submenu
//
.dropdown-menu {
> .dropdown-submenu {
position: relative;
// Link
> .dropdown-item {
padding-right: ($dropdown-item-padding-x + ($icon-font-size * 1.5));
// Arrow icon
&:after {
@if $direction == 'LTR' {
content: $icon-menu-sub-arrow-ltr;
}
@else {
content: $icon-menu-sub-arrow-rtl;
}
font-family: $icon-font-family;
position: absolute;
top: 50%;
margin-top: -($icon-font-size / 2);
right: $dropdown-item-padding-x;
font-size: $icon-font-size;
line-height: 1;
@include ll-font-smoothing();
}
}
// Hover and open states
&.show,
&:hover {
> .dropdown-item {
background-color: $dropdown-link-hover-bg;
color: $dropdown-link-hover-color;
}
}
// Display submenu on hover
&:hover > .dropdown-item:not(.dropdown-toggle) ~ .dropdown-menu,
&:focus > .dropdown-item:not(.dropdown-toggle) ~ .dropdown-menu {
display: block;
}
// Hide submenu if parent is disabled
&.disabled {
> .dropdown-menu {
display: none;
}
> .dropdown-item {
background-color: transparent;
color: $dropdown-link-disabled-color;
cursor: $cursor-disabled;
}
}
// Submenu position
> .dropdown-menu {
top: 0;
left: 100%;
margin-top: -($dropdown-padding-y + rem-calc($dropdown-border-width));
}
// Left submenu position
&.dropdown-submenu-left > .dropdown-menu {
left: auto;
right: 100%;
}
// Make submenu levels stacked on mobile
@include media-breakpoint-down(md) {
// Change arrow icon direction
.dropdown-toggle:after {
content: $icon-menu-arrow-down;
}
// Make them stacked
&,
&.dropdown-submenu-left {
.dropdown-menu {
position: static;
margin: 0!important;
border-width: 0;
box-shadow: none;
@include border-radius(0);
}
}
// Third level
> .dropdown-menu > .dropdown-item,
> .dropdown-menu > .dropdown-submenu > .dropdown-item {
padding-left: ($dropdown-item-padding-x * 2);
}
// Third level
> .dropdown-menu > .dropdown-submenu > .dropdown-menu > .dropdown-item,
> .dropdown-menu > .dropdown-submenu > .dropdown-menu > .dropdown-submenu > .dropdown-item {
padding-left: ($dropdown-item-padding-x * 3);
}
}
}
// Reverse in dropdown and bottom navbars
.dropup > .dropdown-menu {
top: auto;
bottom: 0;
margin-top: 0;
margin-bottom: -($dropdown-padding-y + rem-calc($dropdown-border-width));
}
// Spacing between submenus
.dropdown-submenu + .dropdown-submenu {
margin-top: $dropdown-item-spacer-y;
}
}
//
// Additional alignment
//
// RTL alignment
@if $direction == 'RTL' {
// Base alignment
.dropdown-menu {
.context-toggle &,
.navbar-nav > .nav-item:not([class*=mega-menu]) > &,
.nav-item:not([class*=mega-menu]) .navbar-nav-link ~ & {
/*rtl:ignore*/
right: 0;
}
}
// Reverse
.dropdown-menu-right {
.context-toggle &,
.navbar-nav > .nav-item:not([class*=mega-menu]) > &,
.nav-item:not([class*=mega-menu]) .navbar-nav-link ~ & {
/*rtl:begin:ignore*/
right: auto;
left: 0;
/*rtl:end:ignore*/
}
}
}
// Drop right
.dropright {
.dropdown-toggle {
&::after {
vertical-align: middle;
}
}
}
// Drop left
.dropleft {
.dropdown-toggle {
&::before {
vertical-align: middle;
}
}
// Remove left arrow in submenu
.dropdown-submenu .dropdown-toggle::before {
content: none;
}
}
//
// Optional sizing
//
// Large
.dropdown-menu-lg {
.dropdown-item {
padding-top: $input-btn-padding-y-lg;
padding-bottom: $input-btn-padding-y-lg;
font-size: $font-size-lg;
line-height: $input-btn-line-height-lg;
}
}
// Small
.dropdown-menu-sm {
.dropdown-item {
padding-top: $input-btn-padding-y-sm;
padding-bottom: $input-btn-padding-y-sm;
font-size: $font-size-sm;
line-height: $input-btn-line-height-sm;
}
}
//
// Solid color dropdown menu
//
.dropdown-menu[class*=bg-]:not(.bg-white):not(.bg-light) {
// Links and labels
> .dropdown-item,
> .dropdown-submenu > .dropdown-item {
color: $white;
// Hover state
@include hover-focus {
background-color: $dropdown-dark-hover-bg;
}
// Active state
&.active {
background-color: $dropdown-dark-active-bg;
}
// Disabled state
&.disabled {
background-color: transparent;
color: $dropdown-dark-disabled-color;
}
}
// Background color for submenu link states
> .dropdown-submenu {
&.show,
&:hover {
> .dropdown-item {
background-color: $dropdown-dark-hover-bg;
color: $white;
}
}
// Remove bg color in disabled links
&.disabled {
> .dropdown-item {
background-color: transparent;
color: $dropdown-dark-disabled-color;
}
}
}
// Dropdown header
> .dropdown-header {
color: $dropdown-dark-header-color;
&-highlight {
background-color: $dropdown-dark-header-bg;
}
}
// Divider
> .dropdown-divider {
border-top-color: $dropdown-dark-divider-bg;
}
}
@@ -0,0 +1,296 @@
/* ------------------------------------------------------------------------------
*
* # Form styles
*
* Basic form styles and overrides of default Bootstrap styles
*
* ---------------------------------------------------------------------------- */
//
// Base styles
//
// Legend
legend {
padding-top: ($spacer / 2);
padding-bottom: ($spacer / 2);
margin-bottom: $spacer;
border-bottom: $input-border-width solid $input-border-color;
font-size: $font-size-base;
// Remove top padding in first items
fieldset:first-child & {
&:first-child {
padding-top: 0;
}
}
}
// Multiple select
select[multiple],
select[size] {
height: 200px;
padding: $input-padding-x;
// Option
option {
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
@include border-radius($border-radius);
+ option {
margin-top: $dropdown-item-spacer-y;
}
}
}
// Textual form controls
.form-control {
background-clip: border-box;
// Disabled state
&:disabled {
color: $input-disabled-color;
}
// Input with custom color
&[class*=bg-]:not(.bg-white):not(.bg-light):not(.bg-transparent) {
// Disabled state
&:disabled,
&[readonly] {
background-color: $input-dark-disabled-bg;
color: $input-dark-disabled-color;
border-color: $input-dark-disabled-border-color;
}
// Placeholder color
&::placeholder {
color: $input-placeholder-light-color;
}
}
}
// Form groups
.form-group {
// Remove bottom margin from the last group
.form-group:last-child {
margin-bottom: 0;
}
// Add top margin on certain breakpoints
@include media-breakpoint-down(sm) {
[class*="col-md-"]:not([class*=col-form-label]) + [class*="col-md-"] {
margin-top: $form-group-margin-bottom;
}
}
@include media-breakpoint-down(md) {
[class*="col-lg-"]:not([class*=col-form-label]) + [class*="col-lg-"] {
margin-top: $form-group-margin-bottom;
}
}
@include media-breakpoint-down(lg) {
[class*="col-xl-"]:not([class*=col-form-label]) + [class*="col-xl-"] {
margin-top: $form-group-margin-bottom;
}
}
}
// Remove top padding in labels on certain breakpoints
// to match vertical form spacings
[class*=col-form-label] {
@include media-breakpoint-down(sm) {
&[class*="col-md-"] {
padding-top: 0;
}
}
@include media-breakpoint-down(md) {
&[class*="col-lg-"] {
padding-top: 0;
}
}
@include media-breakpoint-down(lg) {
&[class*="col-xl-"] {
padding-top: 0;
}
}
}
//
// Checkboxes and radios
//
// Container
.form-check {
// Exclude dropdown items
&:not(.form-check-inline) {
margin-bottom: $form-check-margin-y;
// Last item doesn't have spacing
&:last-child {
margin-bottom: 0;
}
}
// In horizontal form group
.form-group.row &:not(.dropdown-item) {
margin-top: ($input-padding-y + rem-calc($input-border-width));
}
// Disabled state
&.disabled {
color: $form-check-disabled-color;
.form-check-label {
cursor: $cursor-disabled;
}
}
}
// Input
.form-check-input {
&:disabled ~ .form-check-label {
cursor: $cursor-disabled;
}
}
// Label
.form-check-label {
cursor: pointer;
}
// Inline list
.form-check-inline {
// Label
.form-check-label {
display: inline-flex;
align-items: flex-start;
}
// Undo .form-check-input defaults and add some `margin-right`.
.form-check-input {
margin-top: $form-check-input-margin-y;
}
// Last item
&:last-child {
margin-right: 0;
}
// Make sure input is not affected by top/left spacings
input {
position: static;
}
}
// Right position
.form-check-right {
padding-left: 0;
padding-right: $form-check-input-gutter;
// Reverse input direction
.form-check-input,
input {
left: auto;
right: 0;
}
// Inline list
&.form-check-inline {
padding: 0;
// Input
.form-check-input {
margin-right: 0;
margin-left: $form-check-inline-input-margin-x;
}
}
}
//
// Form control feedback states
//
// Default left icon position
.form-group-feedback {
position: relative;
// Left alignment
&-left {
// Stick icon to the left
.form-control-feedback {
left: 0;
}
// Ensure icons don't overlap text
.form-control {
padding-left: $input-padding-x + $input-btn-padding-x + $icon-font-size;
// Sizes
&-lg {
padding-left: $input-padding-x-lg + $input-btn-padding-x-lg + $icon-font-size;
}
&-sm {
padding-left: $input-padding-x-sm + $input-btn-padding-x-sm + $icon-font-size;
}
}
}
// Right alignment
&-right {
// Stick icon to the right
.form-control-feedback {
right: 0;
}
// Ensure icons don't overlap text
.form-control {
padding-right: $input-padding-x + $input-btn-padding-x + $icon-font-size;
// Sizes
&-lg {
padding-right: $input-padding-x-lg + $input-btn-padding-x-lg + $icon-font-size;
}
&-sm {
padding-right: $input-padding-x-sm + $input-btn-padding-x-sm + $icon-font-size;
}
}
}
}
// Feedback icon
.form-control-feedback {
position: absolute;
top: 0;
color: $input-color;
padding-left: $input-padding-x;
padding-right: $input-padding-x;
line-height: $input-height;
min-width: $icon-font-size;
// Large size
&-lg {
padding-left: $input-padding-x-lg;
padding-right: $input-padding-x-lg;
line-height: $input-height-lg;
}
// Small size
&-sm {
padding-left: $input-padding-x-sm;
padding-right: $input-padding-x-sm;
line-height: $input-height-sm;
}
// Change color if comes after colored input
input[class*=bg-]:not(.bg-light):not(.bg-white):not(.bg-transparent) + & {
color: $white;
}
}
@@ -0,0 +1,48 @@
/* ------------------------------------------------------------------------------
*
* # Input group component
*
* Overrides for input group component
*
* ---------------------------------------------------------------------------- */
// Base styles
.input-group {
// Form group feedback
.form-group-feedback {
position: relative;
flex: 1 1 auto;
width: 1%;
z-index: 4;
// Border radius fixes
&:not(:last-child) {
.form-control {
@include border-right-radius(0);
}
}
&:not(:first-child) {
.form-control {
@include border-left-radius(0);
}
}
}
// Make sure icon is always on top
+ .form-control-feedback,
.form-control-feedback + & {
z-index: 4;
}
}
// Textual addons
.input-group-text {
// Icon
i {
display: block;
top: 0;
}
}
@@ -0,0 +1,178 @@
/* ------------------------------------------------------------------------------
*
* # List group component
*
* Overrides for list group component
*
* ---------------------------------------------------------------------------- */
// Base class
.list-group {
background-color: $card-bg;
border: $list-group-border-width solid $list-group-border-color;
padding: $list-group-padding-y 0;
background-clip: padding-box;
@include border-radius($list-group-border-radius);
}
// Individual list items
.list-group-item {
display: flex;
align-items: center;
margin-bottom: 0;
border-width: 0;
background-color: transparent;
@include transition(all ease-in-out $component-transition-timer);
// Top border
&:first-child {
@include border-top-radius(0);
}
// Bottom border
&:last-child {
@include border-bottom-radius(0);
}
// Active state
&.active {
// Calculate color shades for badges
// depending on active item color
@if (lightness($list-group-active-bg) < 75) {
// All badges except badge mark
.badge:not(.badge-mark) {
background-color: $white!important;
color: $body-color!important;
}
// Badge mark with custom bg
.badge-mark[class*=bg-] {
background-color: $white!important;
border-color: $white!important;
}
// Badge mark with custom border
.badge-mark[class*=border-] {
border-color: $white!important;
}
}
}
// Disabled state
&.disabled,
&:disabled {
cursor: $cursor-disabled;
}
}
// Horizontal
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
.list-group-horizontal#{$infix} {
border: 0;
.list-group-item-action {
width: auto;
}
.list-group-item {
border: $list-group-border-width solid $list-group-border-color;
}
}
}
}
// Flush list items
.list-group-flush {
border: 0;
@include border-radius(0);
@include box-shadow(none);
}
// List group divider
.list-group-divider {
padding: 0;
margin: $list-group-padding-y 0;
border-top-width: $list-group-border-width;
}
// Bordered list
.list-group-bordered {
padding: 0;
// Item
.list-group-item {
border-top-width: $list-group-border-width;
border-bottom-width: $list-group-border-width;
margin-bottom: -$list-group-border-width;
// Round top corners
&:first-child {
border-top-width: 0;
@include border-top-radius($list-group-border-radius);
}
// Round bottom corners
&:last-child {
@include border-bottom-radius($list-group-border-radius);
}
}
// Custom bg color
&[class*=bg-]:not(.bg-light):not(.bg-white):not(.bg-transparent) {
.list-group-item {
border-top-color: $navigation-dark-bordered-border-color;
border-bottom-color: $navigation-dark-bordered-border-color;
}
}
}
// Dark badkgrounds
.list-group[class*=bg-]:not(.bg-light):not(.bg-transparent):not(.bg-white) {
@include border-radius($list-group-border-radius);
// Links
.list-group-item-action {
&:not(.active):not(.disabled) {
color: rgba($white, 0.9);
// Hover state
@include hover-focus {
background-color: $dropdown-dark-hover-bg;
color: $white;
}
}
}
// Item
.list-group-item {
color: $white;
// Active state
&.active {
background-color: $dropdown-dark-active-bg;
}
// Disabled state
&.disabled,
&:disabled {
color: $dropdown-dark-disabled-color;
background-color: transparent;
}
}
// Divider
.list-group-divider {
border-top-color: $dropdown-dark-divider-bg;
}
}
// Contextual variants
@each $color, $value in $theme-colors-light {
@include list-group-item-variant($color, $value, theme-color-level($color, 6));
}
@@ -0,0 +1,82 @@
/* ------------------------------------------------------------------------------
*
* # Media object component
*
* Overrides for media object component
*
* ---------------------------------------------------------------------------- */
// Base class
.media {
margin-top: $spacer;
// Remove vertical spacing in certain cases
&.card-body,
&:first-child {
margin-top: 0;
}
}
// Media list
.media-list {
list-style: none;
padding-left: 0;
margin-bottom: 0;
}
// Media title inside .media-body
.media-title {
margin-bottom: $media-title-margin-bottom;
}
// Image preview
.img-preview {
max-height: $img-preview-max-height;
}
//
// Styling variations
//
// Bordered list
.media-list-bordered {
.media {
margin-top: 0;
padding: $media-padding-y $media-padding-x;
border-top: $media-border-width solid $media-border-color;
}
}
// Linked list
.media-list-linked {
// Item container
.media {
padding: $media-padding-y $media-padding-x;
}
// Inside media list
li.media {
margin-top: 0;
border-top: $media-border-width solid $media-border-color;
border-bottom: $media-border-width solid $media-border-color;
}
// Inside borderedmedia list
&.media-list-bordered li.media {
border-bottom: 0;
}
// Link
a.media {
color: inherit;
@include transition(all ease-in-out $component-transition-timer);
// Hover state
@include hover {
background-color: $media-link-hover-bg;
}
}
}
@@ -0,0 +1,18 @@
/* ------------------------------------------------------------------------------
*
* # Mixins
*
* Import Bootstrap mixins with overrides
*
* ---------------------------------------------------------------------------- */
// Utilities
@import "mixins/badge";
// Components
@import "mixins/forms";
@import "mixins/buttons";
@import "mixins/caret";
// Skins
@import "mixins/background-variant";
@@ -0,0 +1,59 @@
/* ------------------------------------------------------------------------------
*
* # Modal component
*
* Overrides for modal dialog component
*
* ---------------------------------------------------------------------------- */
// Modal header
.modal-header {
position: relative;
@include border-top-radius($border-radius-lg - rem-calc($modal-header-border-width));
// Close button
.close {
color: inherit;
}
// If header has '.bg-*' class,
// remove bottom padding and border
&:not([class*=bg-]) {
padding-bottom: 0;
border-bottom-width: 0;
}
}
// Footer (for actions)
.modal-footer {
// If footer has '.bg-*' class,
// remove top padding and border
&:not([class*=bg-]) {
padding-top: 0;
border-top-width: 0;
}
// Add top border if footer comes after table
[class*=table-responsive] + &,
.table + & {
border-top-width: $modal-footer-border-width;
border-top-color: $table-border-color;
}
}
// Scale up the modal
@include media-breakpoint-up(sm) {
// Mini size
.modal-xs {
max-width: $modal-xs-width;
}
// Full width size
.modal-full {
max-width: $modal-full-width;
margin-left: ((100% - $modal-full-width) / 2);
margin-right: ((100% - $modal-full-width) / 2);
}
}
@@ -0,0 +1,498 @@
/* ------------------------------------------------------------------------------
*
* # Nav components
*
* Overrides for nav components
*
* ---------------------------------------------------------------------------- */
// Base styles
// -------------------------
// Links
.nav-link {
position: relative;
@include transition(all ease-in-out $component-transition-timer);
// Disabled state
&.disabled {
cursor: $cursor-disabled;
}
}
// Tabs
// -------------------------
// Base
.nav-tabs {
margin-bottom: $spacer;
// Link
.nav-link {
border-top-left-radius: 0;
border-top-right-radius: 0;
color: $nav-tabs-link-color;
// Hover state
@include hover-focus {
color: $nav-tabs-link-hover-color;
}
// Disabled state
&.disabled {
color: $nav-link-disabled-color;
}
}
// When dropdown is opened
.nav-item.show .nav-link:not(.active) {
border-color: transparent;
background-color: transparent;
}
// Apply border color for border helper
&.border-top-1 {
border-top-color: $nav-tabs-border-color;
}
}
// Responsive tabs - add this class to parent container
// to make tabs nav inline, add scrollbar and prevent wrapping
.nav-tabs-responsive {
overflow-x: auto;
box-shadow: 0 (-$nav-tabs-border-width) 0 $nav-tabs-border-color inset;
}
//
// Alternative styles
//
// Commmon
.nav-tabs-highlight,
.nav-tabs-top,
.nav-tabs-bottom {
.nav-link {
position: relative;
// Highlight
&:before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
@include transition(background-color ease-in-out $component-transition-timer);
}
}
}
// Top highlight
.nav-tabs-highlight {
// Link
.nav-link {
border-top-color: transparent;
@include border-top-radius(0);
// Top highlight line
&:before {
height: $nav-tabs-highlight-link-border-width;
top: -($nav-tabs-border-width);
left: -($nav-tabs-border-width);
right: -($nav-tabs-border-width);
}
}
// Active state
.nav-link.active {
&:before {
background-color: $nav-tabs-highlight-link-border-color;
}
}
}
// Tabs with top border
.nav-tabs-top {
// Item
.nav-item {
margin-bottom: 0;
}
// Link
.nav-link {
border-width: 0;
@include border-top-radius(0);
// Hover state
@include hover-focus {
&:before {
background-color: $nav-tabs-border-color;
}
}
// Bottom highlight line
&:before {
height: $nav-tabs-top-link-border-width;
}
// Remove highlight in disabled items
&.disabled {
&:before {
content: none;
}
}
}
// When dropdown is opened
.nav-item.show .nav-link:not(.active) {
&:before {
background-color: $nav-tabs-border-color;
}
}
// Active state
.nav-link.active {
&:before {
background-color: $nav-tabs-top-link-border-color;
}
}
.nav-link.active,
.nav-item.show .nav-link {
background-color: transparent;
}
// Make sure dropdown comes after bottom border
.dropdown-menu {
margin-top: 0;
}
// Border helper adjustment
&.border-top-1 {
.nav-item {
margin-top: -($nav-tabs-border-width);
}
}
}
// Tabs with bottom border
.nav-tabs-bottom {
// Item
.nav-item {
margin-bottom: 0;
}
// Link
.nav-link {
border-width: 0;
// Bottom highlight line
&:before {
height: $nav-tabs-bottom-link-border-width;
top: auto;
bottom: -($nav-tabs-border-width);
}
}
// Active state
.nav-link.active {
&:before {
background-color: $nav-tabs-bottom-link-border-color;
}
}
.nav-link.active,
.nav-item.show .nav-link {
background-color: transparent;
}
// Make sure dropdown comes after bottom border
.dropdown-menu {
margin-top: 0;
}
}
// Tabs with darker background color
.nav-tabs-solid {
background-color: $nav-tabs-solid-bg;
border: $nav-tabs-border-width solid $nav-tabs-border-color;
// Item
.nav-item {
margin-bottom: 0;
}
// Link
.nav-link {
border-width: 0;
}
// When dropdown is opened
.nav-item.show .nav-link {
background-color: transparent;
}
// Active state
.nav-link.active,
.nav-item.show .nav-link.active {
color: $nav-tabs-solid-active-color;
background-color: $nav-tabs-solid-active-bg;
}
// Custom background color
&[class*=bg-]:not(.bg-light):not(.bg-white):not(.bg-transparent) {
.nav-link {
color: rgba($white, 0.9);
@include hover-focus {
color: $white;
}
&.disabled {
color: rgba($white, 0.6);
}
}
.nav-item.show .nav-link {
color: $white;
}
.nav-link.active,
.nav-item.show .nav-link.active {
color: $white;
background-color: rgba($black, 0.1);
}
+ .tab-content[class*=bg-] {
border-top-color: rgba($white, 0.5);
}
}
}
// Vertical tabs
.nav-tabs-vertical {
// Link
.nav-link {
justify-content: flex-start;
// Override border colors
&,
&:hover,
&:focus,
&.disabled {
border-color: transparent $nav-tabs-border-color transparent transparent;
}
// Highlight
&:before {
content: '';
position: absolute;
top: -$nav-tabs-border-width;
bottom: -$nav-tabs-border-width;
left: -$nav-tabs-border-width;
width: $nav-tabs-highlight-link-border-width;
@include transition(background-color ease-in-out $component-transition-timer);
}
}
// When dropdown is opened
.nav-item.show .nav-link:not(.active) {
border-right-color: $nav-tabs-border-color;
border-bottom-color: transparent;
}
// Right alignment
&-right {
.nav-link {
&,
&:hover,
&:focus,
&.disabled {
border-color: transparent transparent transparent $nav-tabs-border-color;
}
// Reverse highlight line alignment
&:before {
left: auto;
right: -$nav-tabs-border-width;
}
}
// Opened dropdown - toggle link
.nav-item.show .nav-link:not(.active) {
border-right-color: transparent;
border-left-color: $nav-tabs-border-color;
}
}
// Active state
.nav-link.active {
&:before {
background-color: $nav-tabs-highlight-link-border-color;
}
}
.nav-link.active,
.nav-item.show .nav-link {
background-color: transparent;
border-color: $nav-tabs-border-color transparent;
}
}
// Pills
// -------------------------
// Base
.nav-pills {
margin-bottom: $spacer;
// Link
.nav-link {
color: $nav-pills-link-color;
// Hover state
&:not(.active) {
@include hover-focus {
color: $nav-pills-link-hover-color;
}
}
// Active state
// - change badge color according to active link bg
&.active {
@if (lightness($nav-pills-link-active-bg) < 75) {
.badge:not(.bg-transparent):not(.bg-light):not(.bg-white) {
background-color: $white;
color: $nav-pills-link-hover-color;
@include transition(all ease-in-out $component-transition-timer);
}
}
}
// Disabled state
&.disabled {
@include plain-hover-focus {
color: $nav-link-disabled-color;
}
}
}
// Link with opened dropdown
.nav-item.show .nav-link:not(.active) {
color: $nav-pills-link-hover-color;
background-color: transparent;
}
// Stick text to the left in stacked pills
&.flex-column {
.nav-link {
justify-content: flex-start;
}
}
}
//
// Alternative styles
//
// Bordered pills
.nav-pills-bordered {
// Item
.nav-item + .nav-item {
margin-left: ($spacer / 2);
}
// Link
.nav-link {
border: $nav-pills-bordered-border-width solid $nav-pills-bordered-border-color;
}
// Hover state
.nav-link:not(.active):hover,
.nav-link:not(.active):focus,
.nav-item.show .nav-link:not(.active) {
background-color: $nav-pills-bordered-link-hover-color;
}
// Active state
.nav-link.active {
border-color: $nav-pills-link-active-bg;
}
// Disabled state
.nav-link.disabled {
@include plain-hover-focus {
background-color: $nav-pills-bordered-disabled-bg;
}
}
// Stacked pills layout
&.flex-column {
.nav-item + .nav-item {
margin-left: 0;
margin-top: ($spacer / 2);
}
}
}
// Pills toolbar
.nav-pills-toolbar {
// Item
.nav-item + .nav-item {
margin-left: -($nav-pills-bordered-border-width);
}
// Link
.nav-link {
border-radius: 0;
// Active state
&.active {
z-index: 3;
}
}
// Add rounded corners
.nav-item {
&:first-child {
.nav-link {
@include border-left-radius($border-radius);
}
}
&:last-child {
.nav-link {
@include border-right-radius($border-radius);
}
}
}
// Stacked pills layout
&.flex-column {
.nav-item {
&:first-child {
.nav-link {
@include border-left-radius(0);
@include border-top-radius($border-radius);
}
}
&:last-child {
.nav-link {
@include border-right-radius(0);
@include border-bottom-radius($border-radius);
}
}
+ .nav-item {
margin-left: 0;
margin-top: -($nav-pills-bordered-border-width);
}
}
}
}
@@ -0,0 +1,936 @@
/* ------------------------------------------------------------------------------
*
* # Navbar component
*
* Overrides for navbar component
*
* ---------------------------------------------------------------------------- */
// Base styles
// ------------------------------
// Base class
.navbar {
border-top: $navbar-border-width solid transparent;
border-bottom: $navbar-border-width solid transparent;
align-items: stretch;
// If navbar is at the bottom of the page, remove bottom borders
.page-content ~ &:not(.navbar-component):last-of-type,
.content ~ &:not(.navbar-component):last-of-type {
border-bottom-color: transparent;
}
}
// Navbar as a stand alone component
.navbar-component {
border: $navbar-border-width solid transparent;
margin-bottom: $spacer;
// Inside page header
.page-header & {
margin-left: $page-header-padding-x;
margin-right: $page-header-padding-x;
}
// Default navbar
&.navbar-dark {
border-color: $navbar-dark-border-color;
}
// Default navbar
&.navbar-light {
border-color: $navbar-light-border-color;
}
}
//
// Default navbar components
//
// Navbar brand
.navbar-brand {
// Logo image
img {
height: $navbar-brand-image-size;
display: block;
}
}
// Navbar text
.navbar-text {
padding-top: $navbar-link-padding-y;
padding-bottom: $navbar-link-padding-y;
}
//
// Navbar nav
//
// Base
.navbar-nav {
// Tricky one - by default Bootstrap doesn't support navs within navs (mega menu, tags in dropdowns etc).
// We need to override default behaviour and use our own solution
.nav-link {
padding-left: $nav-link-padding-x;
padding-right: $nav-link-padding-x;
}
}
// Navbar nav links (our solution)
.navbar-nav-link {
position: relative;
display: block;
cursor: pointer;
padding: $navbar-link-padding-y $navbar-link-padding-x;
outline: 0;
@include transition(all ease-in-out $component-transition-timer);
// Disabled state
&.disabled {
cursor: $cursor-disabled;
// Badges and images
.badge,
img {
opacity: 0.5;
}
}
// Badges
.badge {
position: absolute;
top: 0;
right: 0;
// Badge mark
&-mark {
top: $navbar-link-padding-y / 2;
right: $navbar-link-padding-x / 2;
}
}
// Navigation with bottom highlight
.navbar-nav-highlight & {
// Highlight
&:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 0;
background-color: transparent;
width: $navbar-link-highlight-size;
}
// Highlight color
.navbar-light &.active:before {
background-color: $navbar-light-link-highlight-color;
}
.navbar-dark &.active:before {
background-color: $navbar-dark-link-highlight-color;
}
}
}
//
// Responsive navbar
//
// Collapsible container
.navbar-collapse {
margin-left: -$navbar-padding-x;
margin-right: -$navbar-padding-x;
padding-left: $navbar-padding-x;
padding-right: $navbar-padding-x;
}
// Button for toggling the navbar when in its collapsed state
.navbar-toggler {
border: 0;
line-height: $line-height-base;
cursor: pointer;
@include transition(all ease-in-out $component-transition-timer);
// Add spacing between buttons
& + & {
margin-left: $navbar-padding-x;
}
// Hover state
@include hover-focus {
outline: 0;
}
// In dark navbar
.navbar-dark & {
@include hover-focus {
color: $navbar-dark-hover-color;
}
}
// In light navbar
.navbar-light & {
color: $navbar-light-color;
// Hover and expanded states
&:hover,
&:focus,
&[aria-expanded=true] {
color: $navbar-light-hover-color;
}
}
}
// Generate series of `.navbar-expand-*` responsive classes for configuring
// where your navbar collapses.
.navbar-expand {
@each $breakpoint in map-keys($grid-breakpoints) {
$next: breakpoint-next($breakpoint, $grid-breakpoints);
$infix: breakpoint-infix($next, $grid-breakpoints);
&#{$infix} {
@include media-breakpoint-down($breakpoint) {
// Add top spacing to the first nav item
.navbar-nav:first-child > .nav-item:first-child {
margin-top: ($navbar-padding-x / 2);
}
// Add bottom spacing to the last nav item
.navbar-nav:last-child > .nav-item:not(.show):last-child {
margin-bottom: ($navbar-padding-x / 2);
}
// Navbar nav link has 100% width
.navbar-nav-link {
display: flex;
align-items: center;
margin-left: -$navbar-padding-x;
margin-right: -$navbar-padding-x;
padding-left: $navbar-padding-x;
padding-right: $navbar-padding-x;
// Display badge on the right side
.badge {
&:not(.position-static) {
position: static;
}
}
// Display direction arrow on the right
&.dropdown-toggle:not(.caret-0) {
padding-right: ($navbar-padding-x * 2);
// Stick icon
&:after {
position: absolute;
top: 50%;
right: $navbar-padding-x;
margin: 0;
transform: translateY(-50%);
}
}
}
// Add top borders for better visual separation
&.navbar-dark .navbar-collapse {
border-top: $navbar-dark-collapse-border-width solid $navbar-dark-collapse-border-color;
}
&.navbar-light .navbar-collapse {
border-top: $navbar-light-collapse-border-width solid $navbar-light-collapse-border-color;
}
// Add vertical spacing to dropdowns
.navbar-nav > .nav-item {
> .dropdown-menu {
margin-top: $navbar-padding-x;
margin-bottom: $navbar-padding-x;
}
}
// Override dropdown submanus
.dropdown-submenu {
// Change arrow icon direction
.dropdown-toggle:after {
content: $icon-menu-arrow-down;
}
// Make them stacked
&,
&.dropdown-submenu-left {
.dropdown-menu {
margin: 0;
border-width: 0;
box-shadow: none;
@include border-radius(0);
}
}
// Third level
> .dropdown-menu > .dropdown-item,
> .dropdown-menu > .dropdown-submenu > .dropdown-item {
padding-left: ($dropdown-item-padding-x * 2);
}
// Fourth level
> .dropdown-menu > .dropdown-submenu > .dropdown-menu > .dropdown-item,
> .dropdown-menu > .dropdown-submenu > .dropdown-menu > .dropdown-submenu > .dropdown-item {
padding-left: ($dropdown-item-padding-x * 3);
}
}
// Make long lists scrollable if navbar is fixed
&.fixed-top .navbar-collapse,
&.fixed-bottom .navbar-collapse {
max-height: 440px;
overflow-y: auto;
}
}
@include media-breakpoint-up($next) {
// Logo
.navbar-brand {
min-width: $sidebar-base-width - $navbar-padding-x;
}
// Highlight
.navbar-nav-link {
&:before {
top: auto;
right: 0;
width: auto;
height: $navbar-link-highlight-size;
}
}
}
}
}
}
//
// Navbar themes
//
// Dark links against a white background
.navbar-light {
color: $navbar-light-color;
background-color: $navbar-light-bg;
border-bottom-color: $navbar-light-border-color;
// After page header content
.page-header-content + &,
.content + &,
.page-content + &,
.fixed-bottom > &:first-child {
border-top-color: $navbar-light-border-color;
}
// Navbar nav
// Again, override default BS styles since they affect
// other navs (tabs, menus, navs, pills etc)
.navbar-nav {
.nav-link {
color: $nav-link-color;
// Hover state
@include hover-focus {
color: $nav-link-hover-color;
}
// Disabled state
&.disabled {
color: $nav-link-disabled-color;
}
}
// Active state
.show > .nav-link,
.active > .nav-link,
.nav-link.show,
.nav-link.active {
color: $nav-link-active-color;
}
}
// Navbar nav link
.navbar-nav-link {
color: $navbar-light-color;
// Hover state
@include hover-focus {
color: $navbar-light-hover-color;
background-color: $navbar-light-hover-bg;
}
// Disabled state
&.disabled {
color: $navbar-light-disabled-color;
background-color: $navbar-light-link-disabled-bg;
}
}
// Active state
.show > .navbar-nav-link,
.active > .navbar-nav-link,
.navbar-nav-link.show,
.navbar-nav-link.active {
color: $navbar-light-active-color;
background-color: $navbar-light-link-active-bg;
}
// Text
.navbar-text {
a {
color: $link-color;
// Make sure links have correct colors
@include hover-focus {
color: $link-hover-color;
}
}
}
}
// White links against a dark background
.navbar-dark {
color: $navbar-dark-color;
background-color: $navbar-dark-bg;
border-bottom-color: $navbar-dark-border-color;
// After page header content
.page-header-content + &,
.content + &,
.page-content + &,
.fixed-bottom > &:first-child {
border-top-color: $navbar-dark-border-color;
}
// Navbar nav
// Again, override default BS styles since they affect
// other navs (tabs, menus, navs, pills etc)
.navbar-nav {
.nav-link {
color: $nav-link-color;
// Hover state
@include hover-focus {
color: $nav-link-hover-color;
}
// Disabled state
&.disabled {
color: $nav-link-disabled-color;
}
}
// Active state
.show > .nav-link,
.active > .nav-link,
.nav-link.show,
.nav-link.active {
color: $nav-link-active-color;
}
}
// Navbar nav link
.navbar-nav-link {
color: $navbar-dark-color;
// Hover state
@include hover-focus {
color: $navbar-dark-hover-color;
background-color: $navbar-dark-hover-bg;
}
// Disabled state
&.disabled {
color: $navbar-dark-disabled-color;
background-color: $navbar-dark-link-disabled-bg;
}
}
// Active state
.show > .navbar-nav-link,
.active > .navbar-nav-link,
.navbar-nav-link.show,
.navbar-nav-link.active {
color: $navbar-dark-active-color;
background-color: $navbar-dark-link-active-bg;
}
}
// Extra navbar components
// ------------------------------
// Tabs and pills
.navbar-nav {
// Tabs
.nav-tabs {
// Links
.nav-link {
color: $nav-tabs-link-color;
// Hover state
@include hover-focus {
color: $nav-tabs-link-hover-color;
}
// Disabled state
&.disabled {
color: $nav-link-disabled-color;
}
}
// Active state
.show > .nav-link,
.active > .nav-link,
.nav-link.show,
.nav-link.active {
color: $nav-tabs-link-active-color;
}
}
// Sadly this needs to be duplicated to override
// default BS behaviour
.nav-pills {
.nav-link {
color: $nav-pills-link-color;
// Hover state
&:not(.active) {
@include hover-focus {
color: $nav-pills-link-hover-color;
}
}
// Calculate color shades for badges
// depending on active item color
&.active {
@if (lightness($nav-pills-link-active-bg) < 75) {
// All badges except badge mark
.badge:not(.badge-mark) {
background-color: $white!important;
color: $body-color!important;
}
// Badge mark with custom bg
.badge-mark[class*=bg-] {
background-color: $white!important;
border-color: $white!important;
}
// Badge mark with custom border
.badge-mark[class*=border-] {
border-color: $white!important;
}
}
}
// Colrs in active state
&.active,
.show:not(.navbar-collapse) > & {
color: $nav-pills-link-active-color;
}
// Disabled state
&.disabled {
@include hover-focus {
color: $nav-link-disabled-color;
}
}
}
}
}
// Button dropdown
.navbar {
.btn-group {
.dropdown-menu-right {
/*rtl:begin:ignore*/
right: 0;
left: auto; // Reset the default from `.dropdown-menu`
/*rtl:end:ignore*/
}
}
}
// User dropdown
.dropdown-user {
.navbar-nav-link {
// Re-define vertical padding
&,
> span {
padding-top: ($navbar-link-padding-y / 2);
padding-bottom: ($navbar-link-padding-y / 2);
}
}
}
// Flag image in language selector
.img-flag {
height: $font-size-lg;
margin-top: ($line-height-computed - $font-size-lg) / 2;
vertical-align: top;
align-self: flex-start;
}
//
// Mega menu
//
// Left and right alignment
.mega-menu {
// Left alignment
&-left {
> .dropdown-menu {
/*rtl:ignore*/
left: auto;
}
}
// Right alignment
&-right {
> .dropdown-menu {
left: auto;
right: 0;
}
}
}
// Full width
.mega-menu-full {
> .dropdown-menu {
left: $navbar-padding-x;
right: $navbar-padding-x;
// In navbar component
.navbar-component & {
left: 0;
right: 0;
}
}
}
// Menu header
.dropdown-content-header {
display: flex;
justify-content: space-between;
padding-left: $dropdown-content-body-padding-x;
padding-right: $dropdown-content-body-padding-x;
@include border-top-radius($dropdown-border-radius - rem-calc($dropdown-border-width));
// If header has no background classes
&:not([class*=bg-]) {
padding-top: $dropdown-content-body-padding-y;
padding-bottom: $dropdown-content-body-padding-y;
}
// If header has background classes
&[class*=bg-] {
padding-top: $dropdown-content-header-padding-y;
padding-bottom: $dropdown-content-header-padding-y;
}
// Add top border if used with the table
+ .table-responsive,
+ .table {
border-top: $table-border-width solid $table-border-color;
}
}
// Menu container
.dropdown-content {
&:not(ul) {
padding-top: 0;
padding-bottom: 0;
}
}
// Menu body
.dropdown-content-body {
padding: $dropdown-content-body-padding-y $dropdown-content-body-padding-x;
// Remove top padding if header has no background
.dropdown-content-header:not([class*=bg-]) + & {
padding-top: 0;
}
}
// Menu footer
.dropdown-content-footer {
display: flex;
align-items: center;
padding: $dropdown-content-footer-padding-y $dropdown-content-body-padding-x;
border-top: $dropdown-content-footer-border-width solid $dropdown-content-footer-border-color;
@include border-bottom-radius($dropdown-border-radius - rem-calc($dropdown-border-width));
}
// Fixed navbar setup
// -------------------------
// Top placement
.navbar {
&-top {
padding-top: $nav-link-height + rem-calc($navbar-border-width * 2);
}
&-lg-top {
padding-top: $nav-link-height-lg + rem-calc($navbar-border-width * 2);
}
&-sm-top {
padding-top: $nav-link-height-sm + rem-calc($navbar-border-width * 2);
}
&-lg-md-top {
padding-top: ($nav-link-height-lg + rem-calc($navbar-border-width * 2)) + ($nav-link-height + rem-calc($navbar-border-width * 2));
}
&-md-md-top {
padding-top: ($nav-link-height + rem-calc($navbar-border-width * 2)) * 2;
}
&-sm-md-top {
padding-top: ($nav-link-height-sm + rem-calc($navbar-border-width * 2)) + ($nav-link-height + rem-calc($navbar-border-width * 2));
}
&-lg-sm-top {
padding-top: ($nav-link-height-lg + rem-calc($navbar-border-width * 2)) + ($nav-link-height-sm + rem-calc($navbar-border-width * 2));
}
}
// Bottom placement
.navbar {
&-bottom {
padding-bottom: $nav-link-height + rem-calc($navbar-border-width * 2);
}
&-lg-md-bottom {
padding-bottom: ($nav-link-height-lg + rem-calc($navbar-border-width * 2)) + ($nav-link-height + rem-calc($navbar-border-width * 2));
}
&-md-md-bottom {
padding-bottom: ($nav-link-height + rem-calc($navbar-border-width * 2)) * 2;
}
&-sm-md-bottom {
padding-bottom: ($nav-link-height-sm + rem-calc($navbar-border-width * 2)) + ($nav-link-height + rem-calc($navbar-border-width * 2));
}
&-lg-sm-bottom {
padding-bottom: ($nav-link-height-lg + rem-calc($navbar-border-width * 2)) + ($nav-link-height-sm + rem-calc($navbar-border-width * 2));
}
}
// Optional sizing
// ------------------------------
// Large
.navbar-lg {
// Brand
.navbar-brand {
padding-top: $navbar-brand-padding-y-lg;
padding-bottom: $navbar-brand-padding-y-lg;
}
// Nav links
.navbar-nav-link {
padding: $navbar-link-padding-y-lg $navbar-link-padding-x-lg;
// Badge
.badge-mark {
top: $navbar-link-padding-y-lg / 2;
right: $navbar-link-padding-x-lg / 2;
}
}
// Text
.navbar-text {
padding-top: $navbar-link-padding-y-lg;
padding-bottom: $navbar-link-padding-y-lg;
}
// User dropdown
.dropdown-user {
> .navbar-nav-link {
// Set vertical padding
&,
> span {
padding-top: ($navbar-link-padding-y-lg / 2);
padding-bottom: ($navbar-link-padding-y-lg / 2);
}
// User image
> img {
max-height: ($font-size-base * $line-height-base) + ($navbar-link-padding-y-lg / 2) + ($navbar-link-padding-y-lg / 2);
}
}
}
}
// Small
.navbar-sm {
// Brand
.navbar-brand {
padding-top: $navbar-brand-padding-y-sm;
padding-bottom: $navbar-brand-padding-y-sm;
}
// Items
.navbar-nav-link {
padding: $navbar-link-padding-y-sm $navbar-link-padding-x-sm;
// Badge
.badge-mark {
top: $navbar-link-padding-y-sm / 2;
right: $navbar-link-padding-x-sm / 2;
}
}
// Text
.navbar-text {
padding-top: $navbar-link-padding-y-sm;
padding-bottom: $navbar-link-padding-y-sm;
}
// User dropdown
.dropdown-user {
> .navbar-nav-link {
// Set vertical padding
&,
> span {
padding-top: ($navbar-link-padding-y-sm / 2);
padding-bottom: ($navbar-link-padding-y-sm / 2);
}
// User image
> img {
max-height: ($font-size-base * $line-height-base) + ($navbar-link-padding-y-sm / 2) + ($navbar-link-padding-y-sm / 2);
}
}
}
}
// Misc
// ------------------------------
// Navbar header - allows to use custom background colors
// in logo section. Uses negative margins.
.navbar-header {
margin-top: -($navbar-border-width);
margin-bottom: -($navbar-border-width);
margin-left: -($navbar-padding-x);
margin-right: $navbar-padding-x;
border-top: $navbar-border-width solid transparent;
border-bottom: $navbar-border-width solid transparent;
// Dark header
&.navbar-dark {
border-bottom-color: $navbar-dark-border-color;
}
// Light header
&.navbar-light {
border-bottom-color: $navbar-light-border-color;
}
// Logo
.navbar-brand {
margin-left: $navbar-padding-x;
margin-right: 0;
}
// Logo that appears only when sidebar is collapsed
.navbar-brand-xs {
display: none;
}
// When sidebar is collapsed
.sidebar-xs & {
// Hide original logo
.navbar-brand-md {
display: none;
}
// Show icon logo
.navbar-brand-xs {
display: inline-block;
min-width: $sidebar-mini-width;
margin-left: 0;
text-align: center;
}
}
}
// Fix for static navbar to appear on top of sidebar
.navbar-static {
z-index: ($sidebar-zindex-main + 1);
}
// Layout specific additions
// ------------------------------
//
// # Layout 5
//
@if $layout == 'layout_5' {
// Navbars have extra horizontal spacing that
// match page content spacing
.navbar:not(.navbar-component) {
@include media-breakpoint-up(md) {
padding-left: ($page-container-padding-x / 2) + ($content-container-padding-x * 2);
padding-right: ($page-container-padding-x / 2) + ($content-container-padding-x * 2);
}
@include media-breakpoint-up(xl) {
padding-left: $page-container-padding-x + ($content-container-padding-x * 2);
padding-right: $page-container-padding-x + ($content-container-padding-x * 2);
}
// Same for full width mega menu
.mega-menu-full {
.dropdown-menu {
@include media-breakpoint-up(md) {
left: ($page-container-padding-x / 2) + ($content-container-padding-x * 2);
right: ($page-container-padding-x / 2) + ($content-container-padding-x * 2);
}
@include media-breakpoint-up(xl) {
left: $page-container-padding-x + ($content-container-padding-x * 2);
right: $page-container-padding-x + ($content-container-padding-x * 2);
}
}
}
// Boxed layout
> .container {
.mega-menu-full .dropdown-menu {
left: ($content-container-padding-x * 2);
right: ($content-container-padding-x * 2);
}
}
}
}
@@ -0,0 +1,177 @@
/* ------------------------------------------------------------------------------
*
* # Pagination component
*
* Overrides for pagination component
*
* ---------------------------------------------------------------------------- */
//
// Base styles
//
// Container
.pagination {
margin-bottom: 0;
}
// Link
.page-link {
text-align: center;
min-width: ($font-size-base * $line-height-base) + rem-calc($pagination-border-width * 2) + ($pagination-padding-y * 2);
@include transition(all ease-in-out $component-transition-timer);
}
//
// Sizing
//
// Large
.pagination-lg {
.page-link {
min-width: ($font-size-lg * $line-height-lg) + rem-calc($pagination-border-width * 2) + ($pagination-padding-y-lg * 2);
}
}
// Small
.pagination-sm {
.page-link {
min-width: ($font-size-sm * $line-height-sm) + rem-calc($pagination-border-width * 2) + ($pagination-padding-y-sm * 2);
}
}
//
// Optional styles
//
// Rounded style
.pagination-rounded {
.page-item {
&:first-child {
.page-link {
@include border-left-radius($border-radius-round);
}
}
&:last-child {
.page-link {
@include border-right-radius($border-radius-round);
}
}
}
}
// Flat style
.pagination-flat {
// Item
.page-item {
// Active state
&.active .page-link {
background-color: $pagination-active-bg;
}
// Disabled state
&.disabled .page-link {
border-color: transparent;
}
}
// Link
.page-link {
background-color: transparent;
border-color: transparent;
margin-left: $pagination-flat-spacing;
@include border-radius($border-radius);
@include hover-focus {
background-color: $pagination-hover-bg;
}
}
// Rounded
&.pagination-rounded {
.page-link {
@include border-radius($border-radius-round);
}
}
}
// Separated style
.pagination-separated {
// Link
.page-link {
margin-left: $pagination-separated-spacing;
@include border-radius($border-radius);
}
// Rounded
&.pagination-rounded {
.page-link {
@include border-radius($border-radius-round);
}
}
}
// Pager style
.pagination-pager {
// Item
.page-item {
@include border-radius($border-radius);
}
// Link
.page-link {
margin-left: $spacer;
@include border-radius($border-radius);
}
// Rounded
&.pagination-rounded {
.page-link {
@include border-radius($border-radius-round);
}
}
// Linked style
&-linked {
// Item
.page-item {
&.disabled .page-link {
background-color: transparent;
border-color: transparent;
}
}
// Link
.page-link {
color: $link-color;
background-color: transparent;
border-color: transparent;
@include hover-focus {
color: $pagination-active-color;
background-color: $pagination-active-bg;
border-color: $pagination-active-border-color;
}
}
}
// Sizes
&:not(.pagination-rounded).pagination-lg {
.page-link {
@include border-radius($border-radius-lg);
}
}
&:not(.pagination-rounded).pagination-sm {
.page-link {
@include border-radius($border-radius-sm);
}
}
}
@@ -0,0 +1,90 @@
/* ------------------------------------------------------------------------------
*
* # Popover component
*
* Overrides for popover component
*
* ---------------------------------------------------------------------------- */
// Popover header
.popover-header {
font-weight: $font-weight-semibold;
padding-bottom: 0;
border-bottom-width: 0;
// Custom background
&[class*=bg-]:not(.bg-white):not(.bg-light) {
padding-top: ($popover-header-padding-y / 1.25);
padding-bottom: ($popover-header-padding-y / 1.25);
border-bottom-width: $popover-border-width;
}
}
//
// Optional styles
//
// Top placement
.bs-popover-top {
// Custom colors
&[class*=bg-]:not(.bg-white):not(.bg-light),
&[class*=border-] {
.arrow {
&,
&:after,
&:before {
border-top-color: inherit;
}
}
}
}
// Right placement
.bs-popover-right {
// Custom colors
&[class*=bg-]:not(.bg-white):not(.bg-light),
&[class*=border-] {
.arrow {
&,
&:after,
&:before {
border-right-color: inherit;
}
}
}
}
// Bottom placement
.bs-popover-bottom {
// Custom colors
&[class*=bg-]:not(.bg-white):not(.bg-light),
&[class*=border-] {
.arrow {
&,
&:after,
&:before {
border-bottom-color: inherit;
}
}
}
}
// Left placement
.bs-popover-left {
// Custom colors
&[class*=bg-]:not(.bg-white):not(.bg-light),
&[class*=border-] {
.arrow {
&,
&:after,
&:before {
border-left-color: inherit;
}
}
}
}
@@ -0,0 +1,90 @@
/* ------------------------------------------------------------------------------
*
* # Progress bar component
*
* Overrides for progress bar component
*
* ---------------------------------------------------------------------------- */
//
// Base styles
//
// Container
.progress {
position: relative;
}
// Bar
.progress-bar {
width: 0;
overflow: hidden;
white-space: nowrap;
}
//
// Enhanced bars
//
.progress {
// Progress bar back text
.progressbar-back-text,
.progressbar-front-text {
position: absolute;
left: 0;
top: 0;
width: 100%;
text-align: center;
font-size: $progress-font-size;
}
// Center the text
.progressbar-back-text {
align-self: center;
}
// Right alignment
&.right {
justify-content: flex-end;
}
// Vertical orientation
&.vertical {
width: 3rem;
height: 100%;
display: inline-block;
// Add horizontal spacing
& + & {
margin-left: $element-spacer-x;
}
// Progress bar adjustment
.progress-bar {
width: 100%;
height: 0;
@include transition(height 0.6s ease);
}
// Bottom direction
&.bottom {
// Progress bar back text
.progressbar-back-text,
.progressbar-front-text {
top: auto;
bottom: 0;
}
// Bar itself
.progress-bar {
position: absolute;
bottom: 0;
}
}
}
}
@@ -0,0 +1,83 @@
/* ------------------------------------------------------------------------------
*
* # Reboot
*
* Normalization of HTML elements - overrides of default Bootstrap styles
*
* ---------------------------------------------------------------------------- */
//
// Document
//
// Body
body {
position: relative;
}
//
// Typography
//
dt {
margin-bottom: map-get($spacers, 1);
}
dd {
margin-bottom: $spacer;
&:last-child {
margin-bottom: 0;
}
}
dl {
&:last-child {
margin-bottom: 0;
}
}
//
// Code
//
pre {
tab-size: 4;
border: $border-width solid $pre-border-color;
padding: $pre-padding-y $pre-padding-x;
margin-bottom: 0;
hyphens: none;
}
//
// Images and content
//
// SVG alignment
svg {
display: block;
// Inline
.svg-inline & {
display: inline-block;
}
// Centered object
.svg-center & {
margin: auto;
}
}
//
// Inputs
//
// File input type
input[type="file"] {
display: block;
}
@@ -0,0 +1,370 @@
/* ------------------------------------------------------------------------------
*
* # Table styling
*
* Override and extend default Bootstrap styles.
*
* ---------------------------------------------------------------------------- */
// Base styles
.table {
margin-bottom: 0;
// Cells
th,
td {
vertical-align: middle;
}
th {
font-weight: $font-weight-semibold;
}
// Header cells
thead th {
vertical-align: middle;
border-bottom: $table-border-width solid $table-head-border-color;
}
// Footer cells
tfoot th {
border-top-color: $table-head-border-color;
}
// Remove top border from thead by default
caption + thead,
colgroup + thead,
thead:first-child {
tr:first-child {
th,
td {
border-top-width: 0;
}
}
}
// Animate background color in cells and rows
tr,
th,
td {
@include transition(background-color ease-in-out $component-transition-timer);
}
}
// Dark styles
.table-dark {
thead {
th,
td {
border-color: $table-dark-head-border-color;
}
}
}
// Responsive tables
.table-responsive {
@each $breakpoint in map-keys($grid-breakpoints) {
$next: breakpoint-next($breakpoint, $grid-breakpoints);
$infix: breakpoint-infix($next, $grid-breakpoints);
&#{$infix} {
@include media-breakpoint-down($breakpoint) {
> .table-bordered {
border: $table-border-width solid $table-border-color;
}
}
}
}
}
//
// Optional styles
//
// Scrollable table
.table-scrollable {
max-height: $table-scrollable-max-height;
overflow: auto;
}
// Columned table
.table-columned {
tbody,
tfoot {
td,
th {
border: 0;
border-left: $table-border-width solid $table-border-color;
&:first-child {
border-left: 0;
}
}
}
thead {
th,
td {
border-left: $table-border-width solid $table-border-color;
&:first-child {
border-left: 0;
}
}
}
}
// Borderless table
.table-borderless {
td,
th {
border: 0;
}
}
//
// Optional table cell sizes
//
// Extra large
.table-xl {
th,
td {
padding: $table-cell-padding-xl;
}
}
// Large
.table-lg {
th,
td {
padding: $table-cell-padding-lg;
}
}
// Mini
.table-xs {
th,
td {
padding: $table-cell-padding-xs;
}
}
//
// Table borders
//
// Solid border
.table-border-solid {
thead & {
th,
td {
border-bottom-width: ($table-border-width * 2);
}
}
tbody &,
tfoot & {
td,
th {
border-top-width: ($table-border-width * 2);
}
}
}
// Double border
.table-border-double {
thead & {
th,
td {
border-bottom-width: ($table-border-width * 3);
border-bottom-style: double;
}
.table-bordered &:first-child {
th,
td {
border-bottom-width: ($table-border-width * 3);
border-bottom-style: double;
}
}
}
tbody &,
tfoot & {
td,
th {
border-top-width: ($table-border-width * 3);
border-top-style: double;
}
}
}
// Dashed border
.table-border-dashed {
td,
th {
border-top-style: dashed;
}
}
// Custom header bottom border color
.table {
thead {
tr[class*=border-bottom-] {
th,
td {
border-bottom-color: inherit;
}
}
}
// Custom body and footer bottom border color
tbody,
tfoot {
tr[class*=border-top-] {
th,
td {
border-top-color: inherit;
}
}
}
}
//
// Table inside card
//
// Remove top border from the table
.card {
> .table:first-child,
> [class*=table-responsive]:first-child > .table:first-child {
caption + thead,
colgroup + thead,
thead:first-child {
tr:first-child {
th,
td {
border-top-width: 0;
}
}
}
}
}
// If table is displayed in nested card
.card {
&.card-table {
border-width: $table-border-width;
border-color: $table-border-color;
}
}
// Immediate child
.card {
// Make sure caption has the same spacing
> .table,
> [class*=table-responsive] > .table {
caption {
padding-left: $card-spacer-x;
padding-right: $card-spacer-x;
}
}
// Add border top radius for first table
> .table:first-child,
> [class*=table-responsive]:first-child > .table:first-child {
@include border-top-radius($card-inner-border-radius);
thead:first-child,
tbody:first-child {
tr:first-child {
border-top-left-radius: $card-inner-border-radius;
border-top-right-radius: $card-inner-border-radius;
td:first-child,
th:first-child {
border-top-left-radius: $card-inner-border-radius;
}
td:last-child,
th:last-child {
border-top-right-radius: $card-inner-border-radius;
}
}
}
}
// Add border bottom radius for last table
> .table:last-child,
> [class*=table-responsive]:last-child > .table:last-child {
@include border-bottom-radius($card-inner-border-radius);
tbody:last-child,
tfoot:last-child {
tr:last-child {
border-bottom-left-radius: $card-inner-border-radius;
border-bottom-right-radius: $card-inner-border-radius;
td:first-child,
th:first-child {
border-bottom-left-radius: $card-inner-border-radius;
}
td:last-child,
th:last-child {
border-bottom-right-radius: $card-inner-border-radius;
}
}
}
}
// Remove unnecessary borders
> .table-bordered,
> [class*=table-responsive] > .table-bordered {
border: 0;
thead,
tbody,
tfoot {
th:first-child,
td:first-child {
border-left: 0;
}
th:last-child,
td:last-child {
border-right: 0;
}
}
}
}
// Add top border in certain cases
.card-header:not([class*=bg-]) + .table,
.card-header:not([class*=bg-]) + div[class*=table-responsive],
.card-body + .table,
.card-body + div[class*=table-responsive],
.table + .card-body,
div[class*=table-responsive] + .card-body,
.navbar-light + div[class*=table-responsive],
.navbar-light + .table {
border-top: $table-border-width solid $table-border-color;
}
// Remove top border if table doesn't have thead
.table tbody:first-child tr:first-child th,
div[class*=table-responsive] > .table tbody:first-child tr:first-child th,
.table tbody:first-child tr:first-child td,
div[class*=table-responsive] > .table tbody:first-child tr:first-child td {
border-top: 0;
}
// If table comes after card footer
.card-footer {
+ [class*=table-responsive],
+ .table {
border-top: $table-border-width solid $table-border-color;
}
}
@@ -0,0 +1,12 @@
/* ------------------------------------------------------------------------------
*
* # Tooltip component
*
* Override and extend default tooltip styles.
*
* ---------------------------------------------------------------------------- */
// Header
.toast-header {
background-clip: border-box;
}
@@ -0,0 +1,40 @@
/* ------------------------------------------------------------------------------
*
* # Tooltip component
*
* Override and extend default tooltip styles.
*
* ---------------------------------------------------------------------------- */
//
// Custom styles
//
// Top placement
.bs-tooltip-top {
.arrow[class*=border-]:before {
border-top-color: inherit;
}
}
// Right placement
.bs-tooltip-right {
.arrow[class*=border-]:before {
border-right-color: inherit;
}
}
// Bottom placement
.bs-tooltip-bottom {
.arrow[class*=border-]:before {
border-bottom-color: inherit;
}
}
// Left placement
.bs-tooltip-left {
.arrow[class*=border-]:before {
border-left-color: inherit;
}
}
@@ -0,0 +1,383 @@
/* ------------------------------------------------------------------------------
*
* # Text styling
*
* Override and extend default Bootstrap styles.
*
* ---------------------------------------------------------------------------- */
//
// Headings
//
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
letter-spacing: $headings-letter-spacing;
}
//
// Lists
//
// Custom list class
.list {
// Add vertical spacing to the list items
> li {
&,
.list > li {
margin-top: map-get($spacers, 1);
}
// Remove top margin from the first list item
&:first-child {
margin-top: 0;
}
}
// Extended list
&-extended {
> li {
&,
.list > li {
margin-top: ($spacer / 2);
}
}
}
}
// List item styling
ul {
&.list-square {
list-style-type: square;
}
&.list-circle {
list-style-type: circle;
}
}
// Inline turns list items into inline-block
.list-inline-item {
position: relative;
}
// Inline condensed
.list-inline-condensed {
.list-inline-item {
&:not(:last-child) {
margin-right: ($list-inline-padding / 2);
}
}
}
// Inline dotted
.list-inline-dotted {
.list-inline-item {
&:not(:last-child) {
margin-right: ($list-inline-padding / 2);
// Dot
&:after {
content: $icon-list-dot;
font-family: $icon-font-family;
font-size: ($icon-font-size / 2);
width: ($icon-font-size / 2.5);
text-align: center;
display: inline-block;
margin-left: ($list-inline-padding / 2) + (($icon-font-size / 2.5) / 2);
opacity: 0.25;
}
}
}
// Condensed dotted
&.list-inline-condensed {
.list-inline-item {
&:not(:last-child) {
margin-right: ($list-inline-padding / 3);
&:after {
margin-left: ($list-inline-padding / 3) + (($icon-font-size / 4) / 2);
}
}
}
}
}
//
// List with icons
//
// Base
.list-icons {
display: inline-flex;
align-items: center;
// Spacing between items
> *:not(:last-child) {
margin-right: $list-icons-spacer;
}
// Extended size
&-extended {
> *:not(:last-child) {
margin-right: $list-icons-spacer * 2;
}
}
}
// List icons item
.list-icons-item {
display: inline-block;
line-height: 1;
}
// Linked list icons item
a.list-icons-item {
@include transition(all ease-in-out $component-transition-timer);
// Color
&:not([class*=text-]) {
color: inherit;
}
// Hover/open states
&:hover,
&:focus,
.show > & {
outline: 0;
opacity: 0.75;
}
}
//
// Text styling
//
// Additional font weights
.font-weight-black {
font-weight: $font-weight-black;
}
.font-weight-semibold {
font-weight: $font-weight-semibold;
}
.font-weight-thin {
font-weight: $font-weight-thin;
}
// White text color
.text-white {
color: $white;
}
a.text-white {
&:not(.btn) {
@include transition(color ease-in-out $component-transition-timer);
}
// Hover state
@include hover-focus {
color: rgba($white, 0.75);
}
}
// Default text color
.text-default {
color: $body-color;
}
a.text-default {
&:not(.btn) {
@include transition(color ease-in-out $component-transition-timer);
}
// Hover state
@include hover-focus {
color: rgba($body-color, 0.75);
}
}
//
// Blockquotes
//
// Bordered style
.blockquote-bordered {
border-left: $blockquote-border-width solid $blockquote-border-color;
// Reverse border
&-reverse {
border-left: 0;
border-right: $blockquote-border-width solid $blockquote-border-color;
}
}
// Footer
.blockquote-footer {
font-size: $font-size-base;
// Add more horizontal spacing
&::before {
content: "\2014 \00A0 \00A0 \00A0";
}
}
//
// Feed list
//
// Feed item
.list-feed-item {
position: relative;
padding-bottom: $list-feed-item-padding-y;
padding-left: $list-feed-item-padding-x;
// Circle
&:before {
content: '';
position: absolute;
left: 0;
top: $list-feed-circle-position;
background-color: $card-bg;
display: inline-block;
border: $list-feed-circle-border-width solid $list-feed-circle-border-color;
z-index: 3;
@include size($list-feed-circle-radius);
@include border-radius($border-radius-circle);
}
// Line
&:after {
content: '';
position: absolute;
top: $list-feed-circle-position;
left: ($list-feed-circle-radius / 2) - (rem-calc($list-feed-circle-border-width) / 2);
bottom: -($list-feed-circle-position + rem-calc($list-feed-circle-border-width));
width: 0;
border-left: ($list-feed-circle-border-width / 2) solid $list-feed-circle-border-color;
border-right: ($list-feed-circle-border-width / 2) solid $list-feed-circle-border-color;
z-index: 2;
}
// First item
&:first-child {
&:after {
top: $list-feed-circle-radius;
}
}
// Last item
&:last-child {
padding-bottom: 0;
&:after {
content: none;
}
}
// Setup color inheritance
&[class*=border-] {
&:before,
&:after {
border-color: inherit;
}
}
}
// Filled symbols
.list-feed-solid {
.list-feed-item:before {
content: '';
border-width: ($list-feed-circle-radius / 2);
@include size(0);
}
}
// Square
.list-feed-square {
.list-feed-item:before {
content: '';
@include border-radius(0);
}
}
// Rhombus
.list-feed-rhombus {
.list-feed-item:before {
content: '';
transform: rotate(45deg);
@include border-radius(0);
}
}
// Time stamp
.list-feed-time {
.list-feed-item {
margin-left: (($list-feed-item-padding-x * 2) - ($list-feed-circle-radius / 2));
.feed-time {
position: absolute;
left: -(($list-feed-item-padding-x * 2) - ($list-feed-circle-radius / 2));
top: 0;
}
}
}
//
// Misc
//
// Content text divider
.content-divider {
text-align: center;
position: relative;
z-index: 1;
// Text container
> span {
background-color: $body-bg;
display: inline-block;
// Change bg color if inside other containers
.card &,
.tab-content-bordered & {
background-color: $card-bg;
}
.modal & {
background-color: $modal-content-bg;
}
// Add line
&:before {
content: "";
position: absolute;
top: 50%;
left: 0;
height: $content-divider-height;
background-color: $content-divider-color;
width: 100%;
z-index: -1;
}
}
}
// Large circle icon
.letter-icon {
width: $icon-font-size;
height: $line-height-computed;
display: block;
// Sizes
.btn-lg & {
height: $line-height-computed-lg;
}
.btn-sm & {
height: $line-height-computed-sm;
}
}
@@ -0,0 +1,9 @@
/* ------------------------------------------------------------------------------
*
* # Utilities
*
* Import Bootstrap utilities with overrides
*
* ---------------------------------------------------------------------------- */
@import "utilities/background";
@@ -0,0 +1,21 @@
/* ------------------------------------------------------------------------------
*
* # Background mixin
*
* Override and extend default background mixin.
*
* ---------------------------------------------------------------------------- */
// Contextual backgrounds
@mixin bg-variant($parent, $color) {
#{$parent} {
background-color: $color !important;
}
}
// Gradient
@mixin bg-gradient-variant($parent, $color) {
#{$parent} {
background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;
}
}
@@ -0,0 +1,23 @@
/* ------------------------------------------------------------------------------
*
* # Badge mixin
*
* Override and extend default badge mixin.
*
* ---------------------------------------------------------------------------- */
@mixin badge-variant($bg) {
color: color-yiq($bg);
background-color: $bg;
@at-root a#{&} {
@include hover-focus {
color: color-yiq($bg);
text-decoration: none;
&:not(.badge-light) {
box-shadow: $btn-dark-hover-box-shadow;
}
}
}
}
@@ -0,0 +1,68 @@
/* ------------------------------------------------------------------------------
*
* # Buttons mixin
*
* Override and extend default buttons mixin.
*
* ---------------------------------------------------------------------------- */
// Button variants
//
// Easily pump out default styles, as well as :hover, :focus, :active,
// and disabled options for all buttons
// Primary buttons
@mixin button-variant($background, $border, $hover-background: $background, $hover-border: $border, $active-background: $background, $active-border: $border) {
color: color-yiq($background);
@include gradient-bg($background);
@include hover {
color: color-yiq($hover-background);
@include gradient-bg($hover-background);
}
&:not([disabled]):not(.disabled):active,
&:not([disabled]):not(.disabled).active,
.show > &.dropdown-toggle {
@if $enable-gradients {
background-image: none; // Remove the gradient for the pressed/active state
}
}
}
// Outline button
@mixin button-outline-variant($color, $color-hover: #fff) {
color: $color;
background-color: transparent;
background-image: none;
border-color: $color;
@include hover {
color: $color-hover;
background-color: $color;
border-color: $color;
}
&.disabled,
&:disabled {
color: $color;
background-color: transparent;
}
&:not([disabled]):not(.disabled):active,
&:not([disabled]):not(.disabled).active,
.show > &.dropdown-toggle {
color: $color-hover;
background-color: $color;
border-color: $color;
}
}
// 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,0 +1,66 @@
/* ------------------------------------------------------------------------------
*
* # Caret mixin
*
* Override and extend default cared mixin.
*
* ---------------------------------------------------------------------------- */
@mixin caret-down {
content: $icon-caret-down;
}
@mixin caret-up {
content: $icon-caret-up;
}
@mixin caret-right {
content: $icon-caret-right;
}
@mixin caret-left {
content: $icon-caret-left;
}
@mixin caret($caret-direction: down) {
@if $enable-caret {
&::after {
font-family: $icon-font-family;
display: inline-block;
border: 0;
vertical-align: $caret-vertical-align;
font-size: $caret-font-size;
margin-left: $caret-spacing;
line-height: 1;
position: relative;
@if $caret-direction == down {
@include caret-down;
} @else if $caret-direction == up {
@include caret-up;
} @else if $caret-direction == right {
@include caret-right;
}
}
@if $caret-direction == left {
&::after {
content: none;
}
&::before {
font-family: $icon-font-family;
display: inline-block;
border: 0;
font-size: $caret-font-size;
margin-right: ($element-spacer-x * .75);
line-height: 1;
position: relative;
@include caret-left;
}
}
&:empty::after {
margin-left: 0;
}
}
}
@@ -0,0 +1,23 @@
/* ------------------------------------------------------------------------------
*
* # Forms mixin
*
* Override and extend default forms mixin.
*
* ---------------------------------------------------------------------------- */
// Form control focus state
@mixin form-control-focus() {
&:focus {
outline: 0;
@if $enable-shadows {
box-shadow: $input-box-shadow, $input-focus-box-shadow;
} @else {
box-shadow: $input-focus-box-shadow;
}
}
&:not(.border-1):not(.border-2):not(.border-3):focus {
border-color: $input-focus-border-color;
}
}
@@ -0,0 +1,12 @@
/* ------------------------------------------------------------------------------
*
* # Background utility
*
* Override and extend default background utility.
*
* ---------------------------------------------------------------------------- */
// Text color in dark containers
[class*=bg-]:not(.bg-transparent):not(.bg-light):not(.bg-white):not(.btn-outline):not(body) {
color: $white;
}