// // Theme // -------------------------------------------------- @mixin color-theme($brand-primary, $brand-light, $brand-lighter, $brand-dark, $brand-darker, $body-bg, $body-bg-dark, $body-bg-light, $body-color, $body-color-dark, $body-color-light, $link-color, $link-hover-color, $headings-color, $headings-small-color, $header-bg, $header-inverse-bg, $sidebar-bg, $sidebar-inverse-bg, $side-overlay-bg, $input-color, $input-focus-color, $input-border-color, $input-focus-border-color, $input-bg, $input-focus-bg) { // Scaffolding body { color: $body-color; background-color: $body-bg; } // Links a { color: $link-color; &.link-effect::before { background-color: $link-color; } @include hover { color: $link-hover-color; } } // Typography h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { color: $headings-color; } small, .small { color: $headings-small-color; } .content-heading { border-bottom-color: $body-bg-dark; } hr { border-top-color: $body-bg; } // Contextual colors @include text-emphasis-variant('.text-primary', $brand-primary); @include text-emphasis-variant('.text-primary-dark', $brand-dark); @include text-emphasis-variant('.text-primary-darker', $brand-darker); @include text-emphasis-variant('.text-primary-light', $brand-light); @include text-emphasis-variant('.text-primary-lighter', $brand-lighter); @include text-emphasis-variant('.text-body-bg', $body-bg); @include text-emphasis-variant('.text-body-bg-light', $body-bg-light); @include text-emphasis-variant('.text-body-bg-dark', $body-bg-dark); @include text-emphasis-variant('.text-body-color', $body-color); @include text-emphasis-variant('.text-body-color-dark', $body-color-dark); @include text-emphasis-variant('.text-body-color-light', $body-color-light); // Contextual dual text colors (for inverse header/sidebar) @include text-emphasis-variant('.text-dual-primary-dark', $brand-dark); .page-header-inverse #page-header, .sidebar-inverse #sidebar { @include text-emphasis-variant('.text-dual-primary-dark', $body-color-light); } // Contextual colors @include bg-variant('.bg-primary', $brand-primary); @include bg-variant('.bg-primary-op', rgba($brand-primary, .75)); @include bg-variant('.bg-primary-dark', $brand-dark); @include bg-variant('.bg-primary-dark-op', rgba($brand-dark, .8)); @include bg-variant('.bg-primary-darker', $brand-darker); @include bg-variant('.bg-primary-light', $brand-light); @include bg-variant('.bg-primary-lighter', $brand-lighter); @include bg-variant('.bg-body', $body-bg); @include bg-variant('.bg-body-light', $body-bg-light); @include bg-variant('.bg-body-dark', $body-bg-dark); // Gradients @include bg-gradient-variant('.bg-gd-primary', 135deg, darken($brand-primary, 15%), lighten($brand-primary, 5%)); // Buttons .btn-link { color: $link-color; @include hover-focus { color: $link-hover-color; } } .btn-primary { @include button-variant($brand-primary, $brand-primary); } .btn-secondary { @include button-variant($body-bg, $body-bg); } .btn-outline-primary { @include button-outline-variant($brand-primary); } .btn-outline-secondary { @include button-outline-variant(darken($body-bg-dark, 40%)); } .btn-alt-primary { @include button-alt-variant($brand-primary, $brand-lighter); } .btn-alt-secondary { @include button-alt-variant($body-color, $body-bg-dark); } // Used for buttons that adapt to light/dark header and sidebar variations .btn-dual-secondary { @include button-dual-variant(darken($body-color, 22%), darken($body-bg, 10%)); } .page-header-inverse #page-header .btn-dual-secondary, .sidebar-inverse #sidebar .btn-dual-secondary { @include button-dual-variant($white, $brand-darker); } // Alerts .alert-primary { @include alert-variant($brand-lighter, darken($brand-lighter, 10%), $brand-dark); } // Badges .badge-primary { @include badge-variant($brand-primary); } // Progress Bars .progress-bar { background-color: $brand-primary; } // Nav links .nav-link { color: $body-color; @include hover-focus { color: $brand-primary; } } // Nav Tabs .nav-tabs { border-bottom-color: $body-bg-dark; .nav-link { @include hover-focus { border-color: $body-bg-dark $body-bg-dark $body-bg-dark; } } .nav-link.active, .nav-item.show .nav-link { color: $body-color; border-color: $body-bg-dark $body-bg-dark $white; } } .nav-tabs-block { background-color: $body-bg-light; .nav-link { border-color: transparent; @include hover-focus { color: $brand-primary; background-color: transparent; border-color: transparent; } } .nav-link.active, .nav-item.show .nav-link { color: $body-color; background-color: $white; border-color: transparent; } } .nav-tabs-alt { border-bottom-color: $body-bg-dark; .nav-link { background-color: transparent; border-color: transparent; @include hover-focus { color: $brand-primary; background-color: transparent; border-color: transparent; box-shadow: inset 0 -2px $brand-primary; } } .nav-link.active, .nav-item.show .nav-link { background-color: transparent; border-color: transparent; box-shadow: inset 0 -2px $brand-primary; } } // Nav Pills .nav-pills { .nav-link { color: $body-color; @include hover-focus { color: $brand-primary; } } .nav-link.active, .nav-item.show .nav-link { color: $white; background-color: $brand-primary; } } // Pagination .page-item { &.active .page-link { background-color: $brand-primary; border-color: $brand-primary; } } .page-link { color: $body-color-dark; background-color: $body-bg; border-color: $body-bg; @include hover-focus { color: $body-color-dark; background-color: $body-bg-dark; border-color: $body-bg-dark; } } // List Group .list-group-item-action { color: $body-color; @include hover-focus { color: $body-color; background-color: $body-bg-light; } &:active { color: $body-color; background-color: $body-bg-dark; } } .list-group-item { border-color: $body-bg-dark; &.active { color: $white; background-color: $brand-primary; border-color: $brand-primary; } } // Breadcrumb .breadcrumb { background-color: $body-bg; } .breadcrumb-item { &.active { color: $body-color-dark; } } // Tooltip .tooltip { &.bs-tooltip-top { .arrow::before { border-top-color: $brand-dark; } } &.bs-tooltip-right { .arrow::before { border-right-color: $brand-dark; } } &.bs-tooltip-bottom { .arrow::before { border-bottom-color: $brand-dark; } } &.bs-tooltip-left { .arrow::before { border-left-color: $brand-dark; } } &.bs-tooltip-auto { &[x-placement^="top"] { @extend .bs-tooltip-top; } &[x-placement^="right"] { @extend .bs-tooltip-right; } &[x-placement^="bottom"] { @extend .bs-tooltip-bottom; } &[x-placement^="left"] { @extend .bs-tooltip-left; } } } .tooltip-inner { background-color: $brand-dark; } // Popovers .popover { border-color: $body-bg-dark; border-radius: 2px; box-shadow: 0 15px 25px rgba(0,0,0,.05); &.bs-popover-top { .arrow::before { border-top-color: $body-bg-dark; } .arrow::after { border-top-color: $white; } } &.bs-popover-right { .arrow::before { border-right-color: $body-bg-dark; } .arrow::after { border-right-color: $white; } } &.bs-popover-bottom { .arrow::before { border-bottom-color: $body-bg-dark; } .arrow::after { border-bottom-color: $white; } } &.bs-popover-left { .arrow::before { border-left-color: $body-bg-dark; } .arrow::after { border-left-color: $white; } } &.bs-popover-auto { &[x-placement^="top"] { @extend .bs-popover-top; } &[x-placement^="right"] { @extend .bs-popover-right; } &[x-placement^="bottom"] { @extend .bs-popover-bottom; } &[x-placement^="left"] { @extend .bs-popover-left; } } } // Modals .modal-header { border-bottom-color: $body-bg-dark; } .modal-footer { border-top-color: $body-bg-dark; } .modal-backdrop { background-color: darken($brand-primary, 45%); } // Dropdowns .dropdown-menu { border-color: $body-bg-dark; } .dropdown-header { color: $headings-color; } .dropdown-item { color: $body-color; @include hover-focus { color: $body-color; background-color: $body-bg; } &.active, &:active { color: $body-color; background-color: $body-bg-dark; } } .dropdown-divider { border-top-color: $body-bg; } // Tables .table { th, td { border-top-color: $body-bg-dark; } tbody + tbody { border-top-color: $body-bg-dark; } .thead-dark { th { background-color: $brand-dark; } } .thead-light { th { background-color: $body-bg-dark; } } } .table-bordered { &, th, td { border-color: $body-bg-dark; } } @include table-row-variant("active", $body-bg); @include table-row-variant("primary", $brand-lighter); .table-dark { background-color: $brand-dark; th, td, thead th { border-color: lighten($brand-dark, 5%); } } .table-responsive, [class*="table-responsive-"] { > .table.table-bordered thead th { border-top: 1px solid $body-bg-dark; } } // Forms .form-control, .input-group-text { color: $input-color; background-color: $input-bg; border-color: $input-border-color; } .input-group-text { background-color: $body-bg-light; } .form-control:focus { color: $input-focus-color; background-color: $input-focus-bg; border-color: $input-focus-border-color; } select.form-control { &:focus::-ms-value { color: $input-color; background-color: $input-focus-bg; } } // Custom Forms .custom-checkbox, .custom-radio { .custom-control-input { &:checked ~ .custom-control-label::before { background-color: $brand-primary; } &:focus ~ .custom-control-label::before { box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px $brand-primary; } &:active ~ .custom-control-label::before { background-color: lighten($brand-primary, 10%); } } } .custom-checkbox { .custom-control-input:indeterminate ~ .custom-control-label::before { background-color: $brand-primary; } } .custom-select { border-color: $input-border-color; &:focus { border-color: $input-focus-border-color; &::-ms-value { color: $input-color; background-color: $input-bg; } } } .custom-file-control { border-color: $input-border-color; &::before { color: $body-color; background-color: $body-bg; border-color: $input-border-color; } } // Form feedback @include form-validation-state("valid", $brand-success); @include form-validation-state("invalid", $brand-danger); // Material Forms .form-material { // Form controls and input addons > .form-control { border-color: transparent; box-shadow: 0 1px 0 $input-border-color; ~ .input-group-append { box-shadow: 0 1px 0 $input-border-color; } &:focus { box-shadow: 0 2px 0 $input-focus-border-color; + label { color: $body-color; } ~ .input-group-append { box-shadow: 0 2px 0 $input-focus-border-color; } } } // Form Focus Variations &.form-material-primary > .form-control { @include form-control-material-focus-variant($brand-primary); } } @include form-validation-state-material("valid", $brand-success); @include form-validation-state-material("invalid", $brand-danger); // CSS Radios .css-radio { &:hover .css-control-input ~ .css-control-indicator { border-color: $body-bg-dark; } // Color Variations &.css-control-primary .css-control-input:checked ~ .css-control-indicator::after { background-color: $brand-primary; } } // CSS Checkboxes .css-checkbox { &:hover .css-control-input ~ .css-control-indicator { border-color: $body-bg-dark; } // Color Variations &.css-control-primary .css-control-input:checked ~ .css-control-indicator { background-color: $brand-primary; border-color: darken($brand-primary, 15%); } } // CSS Switches .css-switch { // Color Variations &.css-control-primary .css-control-input:checked ~ .css-control-indicator { background-color: $brand-primary; } } // Border .border { border-color: $body-bg-dark !important; &-t { border-top-color: $body-bg-dark !important; } &-r { border-right-color: $body-bg-dark !important; } &-b { border-bottom-color: $body-bg-dark !important; } &-l { border-left-color: $body-bg-dark !important; } } .border-light { border-color: $body-bg-light !important; &-t { border-top-color: $body-bg-light !important; } &-r { border-right-color: $body-bg-light !important; } &-b { border-bottom-color: $body-bg-light !important; } &-l { border-left-color: $body-bg-light !important; } } // Main Structure #page-overlay { background: rgba(darken($brand-primary, 45%), .4); background: linear-gradient(to right, rgba(darken($brand-primary, 45%), 0), rgba(darken($brand-primary, 45%), .6)); .sidebar-r & { background: linear-gradient(to right, rgba(darken($brand-primary, 45%),.6), rgba(darken($brand-primary, 45%),0)); } } #page-header { background-color: $header-bg; } .content-side { &-user { background-color: $body-bg-light; } } #sidebar { background-color: $sidebar-bg; } #side-overlay { background-color: $side-overlay-bg; } // Layout/Style variations based on #page-container classes #page-container { // Page header related @include media-breakpoint-up(lg) { &.page-header-modern #page-header { background-color: $body-bg; } } &.page-header-inverse #page-header { color: darken($body-color-light, 8%); background-color: $header-inverse-bg; } &.page-header-glass { #page-header { background-color: transparent; } &.page-header-fixed { &.page-header-scroll #page-header { background-color: $header-bg; } &.page-header-scroll.page-header-inverse #page-header { background-color: $header-inverse-bg; } } } // Sidebar and side overlay related @include media-breakpoint-up(lg) { &.page-header-modern #sidebar { box-shadow: 5px 0 10px $body-bg-dark; } &.page-header-modern.sidebar-r #sidebar { box-shadow: -5px 0 10px $body-bg-dark; } } &.sidebar-inverse #sidebar { color: $body-color-light; background-color: $sidebar-inverse-bg; .content-side-user { background-color: darken($sidebar-inverse-bg, 3%); } } } // Blocks .block { box-shadow: 0 1px 1px $body-bg-dark; &.block-transparent { box-shadow: none; } } .block-header { &-default { background-color: $body-bg-light; } } .block-title { small { color: $headings-small-color; } } // Block Variations .block { &.block-bordered { border-color: $body-bg-dark; } &.block-themed > .block-header { background-color: $brand-primary; } } // Block Modes .block { &.block-mode-loading { &::after { color: $brand-dark; box-shadow: 0 0 15px 15px rgba($brand-dark,.05); } &.block-mode-hidden::after { box-shadow: 0 0 8px 8px rgba($brand-dark,.05); } &.block-mode-loading-inverse::after { background-color: $brand-dark; } } } // Block Links a.block { color: $body-color; @include hover-focus { color: $body-color; } &.block-link-pop { &:hover { box-shadow: 0 2px 30px darken($body-bg, 8%); } &:active { box-shadow: 0 2px 10px darken($body-bg, 1%); } } &.block-link-shadow { &:hover { box-shadow: 0 0 36px darken($body-bg, 8%); } &:active { box-shadow: 0 0 10px darken($body-bg, 4%); } } } // Block Effects .block { &.block-fx-pop { box-shadow: 0 2px 30px darken($body-bg, 8%); } &.block-fx-shadow { box-shadow: 0 0 36px darken($body-bg, 8%); } } // Page Loader #page-loader { background-color: $brand-primary; } // Main Sidebar Navigation .nav-main { // Default links a { color: rgba($body-color, .9); @at-root .sidebar-inverse #sidebar & { color: rgba($body-color-light, .75); } > i { color: rgba($brand-dark, .75); @at-root .sidebar-inverse #sidebar & { color: $body-color-light; } } &:hover, &:focus, &.active { > i { color: $brand-primary; @at-root .sidebar-inverse #sidebar & { color: $brand-primary; } } } } // Sub menus ul { a { color: rgba($body-color, .6); } } // Active sub menu li.open { > a.nav-submenu { > i { color: $brand-primary; @at-root .sidebar-inverse #sidebar & { color: $brand-primary; } } } > ul { background-color: $body-bg-light; @at-root .sidebar-inverse #sidebar & { background-color: darken($sidebar-inverse-bg, 3%); } } } } // Main Navigation (Header) .nav-main-header { @include media-breakpoint-up(lg) { // Handle menu colors a { color: lighten($body-color, 10%); } ul a { color: lighten($body-color, 22%); } a:hover, a:focus, a.active, li.open > a.nav-submenu, li:hover > a.nav-submenu { color: $black; background-color: $body-bg-dark; } ul, > li:hover > a.nav-submenu { background-color: darken($body-bg-dark, 3%); } @at-root { .page-header-inverse #page-header &, .page-header-inverse.page-header-glass.page-header-scroll #page-header & { a { color: darken($body-color-light, 9%); } ul a { color: darken($body-color-light, 18%); } a:hover, a:focus, a.active, li.open > a.nav-submenu, li:hover > a.nav-submenu { color: $white; background-color: rgba(0,0,0,.25); } ul, > li:hover > a.nav-submenu { background-color: $brand-dark; } } } @at-root .page-header-inverse.page-header-glass #page-header & { ul, > li:hover > a.nav-submenu { background-color: darken($brand-dark, 5%); } } } } // User Navigation .nav-users { a { border-color: $body-bg; @include hover { background-color: $body-bg-light; } } } // Timeline .list-timeline { .list-timeline-time { background-color: $body-bg-light; } } @include media-breakpoint-up(md) { .list-timeline-modern { &::before { background-color: $body-bg-light; } .list-timeline-time { background-color: transparent; } } } // Activity .list-activity { > li { border-bottom-color: $body-bg; } } // Ribbons .ribbon { // Colors &-primary { @include ribbon-variation($brand-primary); } } // Bootstrap Datepicker .datepicker table tr td.active:hover, .datepicker table tr td.active:hover:hover, .datepicker table tr td.active.disabled:hover, .datepicker table tr td.active.disabled:hover:hover, .datepicker table tr td.active:focus, .datepicker table tr td.active:hover:focus, .datepicker table tr td.active.disabled:focus, .datepicker table tr td.active.disabled:hover:focus, .datepicker table tr td.active:active, .datepicker table tr td.active:hover:active, .datepicker table tr td.active.disabled:active, .datepicker table tr td.active.disabled:hover:active, .datepicker table tr td.active.active, .datepicker table tr td.active:hover.active, .datepicker table tr td.active.disabled.active, .datepicker table tr td.active.disabled:hover.active, .open .dropdown-toggle.datepicker table tr td.active, .open .dropdown-toggle.datepicker table tr td.active:hover, .open .dropdown-toggle.datepicker table tr td.active.disabled, .open .dropdown-toggle.datepicker table tr td.active.disabled:hover, .datepicker table tr td span.active:hover, .datepicker table tr td span.active:hover:hover, .datepicker table tr td span.active.disabled:hover, .datepicker table tr td span.active.disabled:hover:hover, .datepicker table tr td span.active:focus, .datepicker table tr td span.active:hover:focus, .datepicker table tr td span.active.disabled:focus, .datepicker table tr td span.active.disabled:hover:focus, .datepicker table tr td span.active:active, .datepicker table tr td span.active:hover:active, .datepicker table tr td span.active.disabled:active, .datepicker table tr td span.active.disabled:hover:active, .datepicker table tr td span.active.active, .datepicker table tr td span.active:hover.active, .datepicker table tr td span.active.disabled.active, .datepicker table tr td span.active.disabled:hover.active, .open .dropdown-toggle.datepicker table tr td span.active, .open .dropdown-toggle.datepicker table tr td span.active:hover, .open .dropdown-toggle.datepicker table tr td span.active.disabled, .open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { background-color: $brand-primary; border-color: $brand-primary; } // DropzoneJS .dropzone { background-color: $body-bg-light; border-color: $input-border-color; .dz-message { color: $body-color; } @include hover { border-color: $brand-primary; .dz-message { color: $brand-primary; } } } // FullCalendar .fc-event { color: $body-color-dark; @include hover { color: $body-color; } } .fc-state-default { color: $body-color-dark; background-color: $body-bg; border-color: darken($body-bg-dark, 5%); } .fc-state-hover, .fc-state-down, .fc-state-active, .fc-state-disabled { background-color: darken($body-bg, 12%); border-color: darken($body-bg-dark, 18%); } .fc-state-hover { color: $body-color-dark; } .fc-state-down, .fc-state-active { background-color: darken($body-bg, 12%); border-color: darken($body-bg-dark, 18%); } .fc thead th.fc-widget-header { background-color: $body-bg-light; } .fc-unthemed .fc-content, .fc-unthemed .fc-divider, .fc-unthemed .fc-list-heading td, .fc-unthemed .fc-list-view, .fc-unthemed .fc-popover, .fc-unthemed .fc-row, .fc-unthemed tbody, .fc-unthemed td, .fc-unthemed th, .fc-unthemed thead { border-color: $body-bg-dark; } .fc-unthemed .fc-divider, .fc-unthemed .fc-list-heading td, .fc-unthemed .fc-popover .fc-header { background: $body-bg; } .fc-unthemed .fc-today { background: $body-bg-light; } // Ion Range Slider .irs { &-line { background: $body-bg; } &-bar { background: $brand-primary; &-edge { background: $brand-primary; } } &-from, &-to, &-single { background: $brand-primary; } &-grid-pol { background: $brand-primary; } } // jQuery AutoComplete .autocomplete-suggestions { border-color: $body-bg-dark; } .autocomplete-suggestion { color: $body-color; b { color: $brand-primary; } &.selected { background-color: $body-bg; } } // jQuery Tags Input div.tagsinput { border-color: $input-border-color; .form-material & { border-bottom: 1px solid $input-border-color; } span.tag { background-color: $brand-primary; } } // Draggable (jQueryUI) .draggable { &-placeholder { background-color: darken($body-bg, 1%); border-color: darken($body-bg-dark, 10%); } } // jVectorMap .jvectormap-tip { background: $brand-darker; } // Select2 .select2-container { .select2-dropdown { border-color: $input-border-color; } } .select2-container--default { .select2-selection--single { border-color: $input-border-color; .form-material & { border-bottom-color: $input-border-color; } } .select2-selection--multiple { border-color: $input-border-color; .form-material & { border-bottom-color: $input-border-color; } } &.select2-container--focus .select2-selection--multiple, &.select2-container--focus .select2-selection--single { border-color: $input-focus-border-color; .form-material & { border-bottom-color: $input-focus-border-color; } } .select2-selection--multiple { .select2-selection__choice { background-color: $brand-primary; } } .select2-search--dropdown .select2-search__field { border-color: $input-border-color; } .select2-results__option--highlighted[aria-selected] { background-color: $brand-primary; } } // Simple Bar .simplebar-scrollbar::before { background: $brand-darker; .sidebar-inverse #sidebar & { background: $brand-lighter; } } // Slick .slick-slider { .slick-prev, .slick-next { &::before { color: $brand-dark; } } } }