mirror of
https://github.com/retspen/webvirtcloud
synced 2024-11-01 20:14:15 +00:00
740 lines
14 KiB
SCSS
Executable file
740 lines
14 KiB
SCSS
Executable file
// Materia 4.5.3
|
|
// Bootswatch
|
|
|
|
|
|
// Variables ===================================================================
|
|
|
|
$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" !default;
|
|
@import url($web-font-path);
|
|
|
|
// Mixins ======================================================================
|
|
|
|
@mixin ripple($color){
|
|
position: relative;
|
|
|
|
&::before {
|
|
content: "";
|
|
display: block;
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
top: 0;
|
|
left: 0;
|
|
margin-left: 0;
|
|
@include gradient-radial($color 10%, transparent 10.01%);
|
|
background-size: 1000% 1000%;
|
|
background-position: 50%;
|
|
border: none;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transition: background .5s, opacity 1s;
|
|
}
|
|
|
|
&:active::before {
|
|
background-size: 0 0;
|
|
opacity: .2;
|
|
transition: none;
|
|
}
|
|
|
|
&.disabled,
|
|
&[disabled] {
|
|
&::before {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
@mixin btn($class,$bg,$color){
|
|
.btn-#{$class} {
|
|
&:focus {
|
|
background-color: $bg;
|
|
box-shadow: 0 0 0 2px rgba(204, 204, 204, .5);
|
|
}
|
|
|
|
&:hover,
|
|
&:active:hover {
|
|
background-color: darken($bg, 6%);
|
|
}
|
|
|
|
&:active {
|
|
box-shadow: 2px 2px 4px rgba(0, 0, 0, .4);
|
|
}
|
|
|
|
@include ripple($color);
|
|
}
|
|
|
|
.btn-outline-#{$class} {
|
|
@include ripple($color);
|
|
}
|
|
}
|
|
|
|
.dropdown-toggle::after,
|
|
.dropup .dropdown-toggle::after,
|
|
.dropright .dropdown-toggle::after,
|
|
.dropleft .dropdown-toggle::after {
|
|
border-width: 4px;
|
|
}
|
|
|
|
// Navbar ======================================================================
|
|
|
|
.navbar {
|
|
border: none;
|
|
box-shadow: 0 1px 2px rgba(0, 0, 0, .3);
|
|
|
|
&-brand {
|
|
font-size: 24px;
|
|
}
|
|
|
|
&-nav .nav-link {
|
|
padding-top: .9rem;
|
|
padding-bottom: .9rem;
|
|
}
|
|
|
|
&.bg-dark,
|
|
&.bg-primary {
|
|
input[type="text"],
|
|
input[type="password"],
|
|
input[type="email"],
|
|
input[type="number"],
|
|
input[type="tel"] {
|
|
color: $white;
|
|
box-shadow: inset 0 -1px 0 rgba(255, 255, 255, .5);
|
|
|
|
&:focus {
|
|
box-shadow: inset 0 -2px 0 $white;
|
|
}
|
|
|
|
&::placeholder {
|
|
color: rgba(255, 255, 255, .5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Buttons =====================================================================
|
|
|
|
@include btn(primary, $primary, $white);
|
|
@include btn(secondary, $secondary, $gray-500);
|
|
@include btn(success, $success, $white);
|
|
@include btn(info, $info, $white);
|
|
@include btn(warning, $warning, $white);
|
|
@include btn(danger, $danger, $white);
|
|
@include btn(dark, $dark, $white);
|
|
@include btn(light, $light, $white);
|
|
|
|
.btn {
|
|
text-transform: uppercase;
|
|
border: none;
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .4);
|
|
transition: color .4s, background-color .4s, border-color .4s, box-shadow .4s;
|
|
|
|
&-link {
|
|
box-shadow: none;
|
|
color: $link-color;
|
|
|
|
&:hover,
|
|
&:focus {
|
|
box-shadow: none;
|
|
color: $link-hover-color;
|
|
text-decoration: $link-hover-decoration;
|
|
}
|
|
|
|
&.disabled, // Although btn-link is intended for buttons, which want to look like link, I include here a.disable for the sake of consistency
|
|
&[disabled],
|
|
fieldset[disabled] & {
|
|
&:hover,
|
|
&:active:hover {
|
|
color: $btn-link-disabled-color;
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
&-secondary {
|
|
&.disabled,
|
|
&[disabled],
|
|
fieldset[disabled] & {
|
|
background-color: rgba(0, 0, 0, .1);
|
|
color: rgba(0, 0, 0, .4);
|
|
opacity: 1;
|
|
|
|
&:hover,
|
|
&:focus {
|
|
background-color: rgba(0, 0, 0, .1);
|
|
}
|
|
}
|
|
}
|
|
|
|
&-outline-secondary {
|
|
border-color: $gray-200;
|
|
color: $gray-300;
|
|
}
|
|
|
|
&-warning {
|
|
color: $white;
|
|
}
|
|
}
|
|
|
|
.btn-group {
|
|
.btn + .btn,
|
|
.btn + .btn-group,
|
|
.btn-group + .btn,
|
|
.btn-group + .btn-group {
|
|
margin-left: 0;
|
|
}
|
|
|
|
&-vertical {
|
|
> .btn + .btn,
|
|
> .btn + .btn-group,
|
|
> .btn-group + .btn,
|
|
> .btn-group + .btn-group {
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
|
|
.btn + .btn,
|
|
.btn + .btn-group > .dropdown-toggle {
|
|
box-shadow: 1px 1px 4px rgba(0, 0, 0, .4);
|
|
}
|
|
}
|
|
|
|
.border-secondary {
|
|
border: 1px solid #dfdfdf !important;
|
|
}
|
|
|
|
// Typography ==================================================================
|
|
|
|
body,
|
|
input,
|
|
button {
|
|
-webkit-font-smoothing: antialiased;
|
|
letter-spacing: .1px;
|
|
}
|
|
|
|
p {
|
|
margin: 0 0 1em;
|
|
}
|
|
|
|
.text-secondary {
|
|
color: $gray-500 !important;
|
|
}
|
|
|
|
// Tables ======================================================================
|
|
|
|
.table-hover {
|
|
> tbody > tr,
|
|
> tbody > tr > th,
|
|
> tbody > tr > td {
|
|
transition: background-color .2s, color .2s;
|
|
}
|
|
}
|
|
|
|
.thead-inverse th {
|
|
background-color: $primary;
|
|
color: $white;
|
|
}
|
|
|
|
// Forms =======================================================================
|
|
|
|
.col-form-label {
|
|
font-size: 16px;
|
|
|
|
&-sm {
|
|
font-size: $font-size-sm;
|
|
}
|
|
|
|
&-lg {
|
|
font-size: $font-size-lg;
|
|
}
|
|
}
|
|
|
|
textarea,
|
|
textarea.form-control,
|
|
input.form-control,
|
|
input[type="text"],
|
|
input[type="password"],
|
|
input[type="email"],
|
|
input[type="number"],
|
|
[type="text"].form-control,
|
|
[type="password"].form-control,
|
|
[type="email"].form-control,
|
|
[type="tel"].form-control,
|
|
[contenteditable].form-control {
|
|
box-shadow: inset 0 -1px 0 #ddd;
|
|
transition: box-shadow .2s;
|
|
|
|
&:focus {
|
|
box-shadow: inset 0 -2px 0 $primary;
|
|
}
|
|
|
|
&[disabled],
|
|
&[readonly] {
|
|
box-shadow: none;
|
|
border-bottom: 1px dotted #ddd;
|
|
}
|
|
|
|
&[disabled],
|
|
&[disabled]::placeholder {
|
|
color: #ddd;
|
|
}
|
|
|
|
&::-ms-clear {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
select,
|
|
select.form-control {
|
|
appearance: none;
|
|
padding: .5rem 0;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3E%3Cpolygon fill='%23666' points='8 0 4 4 0 0'/%3E%3C/svg%3E%0A");
|
|
background-size: 8px 4px;
|
|
background-repeat: no-repeat;
|
|
background-position: right center;
|
|
box-shadow: inset 0 -1px 0 #ddd;
|
|
|
|
&::-ms-expand {
|
|
display: none;
|
|
}
|
|
|
|
&.input {
|
|
&-sm {
|
|
font-size: $font-size-sm;
|
|
}
|
|
|
|
&-lg {
|
|
font-size: $font-size-lg;
|
|
}
|
|
}
|
|
|
|
&:focus {
|
|
box-shadow: inset 0 -2px 0 $primary;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3E%3Cpolygon fill='%23212121' points='8 0 4 4 0 0'/%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
&[multiple] {
|
|
background: none;
|
|
}
|
|
}
|
|
|
|
.custom-control {
|
|
min-height: 1.5rem;
|
|
}
|
|
|
|
.custom-control-label {
|
|
&::before {
|
|
top: 0;
|
|
border: 2px solid $gray-400;
|
|
}
|
|
&::after {
|
|
top: 0;
|
|
}
|
|
|
|
.custom-control-input:checked ~ &::before {
|
|
border-color: $primary;
|
|
}
|
|
}
|
|
|
|
.custom-checkbox .custom-control-input:checked {
|
|
~ .custom-control-label::before {
|
|
background-image: none;
|
|
}
|
|
|
|
~ .custom-control-label::after {
|
|
transform: scale(1.5);
|
|
}
|
|
}
|
|
|
|
.custom-radio .custom-control-input {
|
|
~ .custom-control-label::after {
|
|
transform: scale(.75);
|
|
}
|
|
|
|
&:checked {
|
|
~ .custom-control-label::before {
|
|
background-color: $white;
|
|
background-image: none;
|
|
transition: border-color .24s;
|
|
}
|
|
~ .custom-control-label::after {
|
|
transform: scale(1.125);
|
|
transition: background-image .24s, transform .24s;
|
|
}
|
|
}
|
|
}
|
|
|
|
.custom-switch {
|
|
.custom-control-label::before {
|
|
top: .125rem;
|
|
height: .875rem;
|
|
background-color: $gray-500;
|
|
border: none;
|
|
}
|
|
|
|
.custom-control-input:disabled ~ .custom-control-label {
|
|
opacity: .7;
|
|
}
|
|
|
|
.custom-control-input:disabled ~ .custom-control-label::before {
|
|
background-color: $gray-500;
|
|
}
|
|
|
|
.custom-control-label::after {
|
|
background-color: $white;
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
|
|
}
|
|
|
|
.custom-control-input:checked ~ .custom-control-label::before {
|
|
opacity: .38;
|
|
}
|
|
|
|
.custom-control-input:checked ~ .custom-control-label::after {
|
|
background-color: $primary;
|
|
}
|
|
|
|
.custom-control-input:hover:not(:disabled) ~ .custom-control-label::after {
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 0 9px rgba(0, 0, 0, .05);
|
|
}
|
|
|
|
.custom-control-input:focus:not(:disabled) ~ .custom-control-label::after {
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 0 9px rgba(0, 0, 0, .09);
|
|
}
|
|
|
|
.custom-control-input:active:not(:disabled) ~ .custom-control-label::after {
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 0 9px rgba(0, 0, 0, .16);
|
|
}
|
|
|
|
.custom-control-input:hover:checked:not(:disabled) ~ .custom-control-label::after {
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 0 9px rgba(33, 150, 243, .05);
|
|
}
|
|
|
|
.custom-control-input:focus:checked:not(:disabled) ~ .custom-control-label::after {
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 0 9px rgba(33, 150, 243, .09);
|
|
}
|
|
|
|
.custom-control-input:active:checked:not(:disabled) ~ .custom-control-label::after {
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 0 9px rgba(33, 150, 243, .16);
|
|
}
|
|
|
|
.custom-control-input:active:not(:checked) ~ .custom-control-label::before {
|
|
background-color: $gray-500;
|
|
}
|
|
}
|
|
|
|
.has-warning {
|
|
input:not([type="checkbox"]),
|
|
.form-control,
|
|
input.form-control[readonly],
|
|
input[type="text"][readonly],
|
|
[type="text"].form-control[readonly],
|
|
input:not([type="checkbox"]):focus,
|
|
.form-control:focus {
|
|
border-bottom: none;
|
|
box-shadow: inset 0 -2px 0 $warning;
|
|
}
|
|
}
|
|
|
|
.has-danger {
|
|
input:not([type="checkbox"]),
|
|
.form-control,
|
|
input.form-control[readonly],
|
|
input[type="text"][readonly],
|
|
[type="text"].form-control[readonly],
|
|
input:not([type="checkbox"]):focus,
|
|
.form-control:focus {
|
|
border-bottom: none;
|
|
box-shadow: inset 0 -2px 0 $danger;
|
|
}
|
|
}
|
|
|
|
.has-success {
|
|
input:not([type="checkbox"]),
|
|
.form-control,
|
|
input.form-control[readonly],
|
|
input[type="text"][readonly],
|
|
[type="text"].form-control[readonly],
|
|
input:not([type="checkbox"]):focus,
|
|
.form-control:focus {
|
|
border-bottom: none;
|
|
box-shadow: inset 0 -2px 0 $success;
|
|
}
|
|
}
|
|
|
|
// Remove the Bootstrap feedback styles for input addons
|
|
.input-group-addon {
|
|
.has-warning &,
|
|
.has-danger &,
|
|
.has-success & {
|
|
color: $input-color;
|
|
border-color: $input-group-addon-border-color;
|
|
background-color: $input-group-addon-bg;
|
|
}
|
|
}
|
|
|
|
.input-group {
|
|
> .input-group-prepend > .input-group-text {
|
|
padding-right: .25rem;
|
|
}
|
|
|
|
> .input-group-append > .input-group-text {
|
|
padding-left: .25rem;
|
|
}
|
|
|
|
.form-control {
|
|
padding-left: .25rem;
|
|
padding-right: .25rem;
|
|
}
|
|
}
|
|
|
|
.input-group-sm {
|
|
> .input-group-prepend > .btn,
|
|
> .input-group-append > .btn {
|
|
padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;
|
|
}
|
|
|
|
> .input-group-prepend > .input-group-text {
|
|
padding: $input-btn-padding-y-sm $input-btn-padding-x-sm $input-btn-padding-y-sm 0;
|
|
}
|
|
|
|
> .input-group-append > .input-group-text {
|
|
padding: $input-btn-padding-y-sm 0 $input-btn-padding-y-sm $input-btn-padding-x-sm;
|
|
}
|
|
|
|
> .input-group-prepend > .btn {
|
|
border-top-left-radius: $btn-border-radius-sm;
|
|
border-bottom-left-radius: $btn-border-radius-sm;
|
|
}
|
|
|
|
> .input-group-append > .btn {
|
|
border-top-right-radius: $btn-border-radius-sm;
|
|
border-bottom-right-radius: $btn-border-radius-sm;
|
|
}
|
|
}
|
|
|
|
.input-group-lg {
|
|
> .input-group-prepend > .btn,
|
|
> .input-group-append > .btn {
|
|
padding: $input-btn-padding-y-lg $input-btn-padding-x-lg;
|
|
}
|
|
|
|
> .input-group-prepend > .input-group-text {
|
|
padding: $input-btn-padding-y-lg $input-btn-padding-x-lg $input-btn-padding-y-lg 0;
|
|
}
|
|
|
|
> .input-group-append > .input-group-text {
|
|
padding: $input-btn-padding-y-lg 0 $input-btn-padding-y-lg $input-btn-padding-x-lg;
|
|
}
|
|
|
|
> .input-group-prepend > .btn {
|
|
border-top-left-radius: $btn-border-radius-lg;
|
|
border-bottom-left-radius: $btn-border-radius-lg;
|
|
}
|
|
|
|
> .input-group-append > .btn {
|
|
border-top-right-radius: $btn-border-radius-lg;
|
|
border-bottom-right-radius: $btn-border-radius-lg;
|
|
}
|
|
}
|
|
|
|
|
|
.form-group-lg {
|
|
select,
|
|
select.form-control {
|
|
line-height: 1.5;
|
|
}
|
|
}
|
|
|
|
// Navs ========================================================================
|
|
|
|
.nav-tabs {
|
|
.nav-item + .nav-item {
|
|
margin-left: 0;
|
|
}
|
|
|
|
.nav-link,
|
|
.nav-link:focus {
|
|
margin-right: 0;
|
|
background-color: transparent;
|
|
border: none;
|
|
color: $body-color;
|
|
box-shadow: inset 0 -1px 0 #ddd;
|
|
transition: color .2s, box-shadow .2s;
|
|
|
|
&:hover {
|
|
background-color: transparent;
|
|
box-shadow: inset 0 -2px 0 $primary;
|
|
color: $primary;
|
|
}
|
|
}
|
|
|
|
.nav-link.active,
|
|
.nav-link.active:focus {
|
|
border: none;
|
|
box-shadow: inset 0 -2px 0 $primary;
|
|
color: $primary;
|
|
|
|
&:hover {
|
|
border: none;
|
|
color: $primary;
|
|
}
|
|
}
|
|
|
|
.nav-link.disabled {
|
|
box-shadow: inset 0 -1px 0 #ddd;
|
|
}
|
|
|
|
&.nav-justified {
|
|
.nav-link,
|
|
.nav-link:hover,
|
|
.nav-link:focus,
|
|
.nav-link.active,
|
|
.nav-link.active:hover,
|
|
.nav-link.active:focus {
|
|
border: none;
|
|
}
|
|
}
|
|
|
|
.dropdown-menu {
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
|
|
.dropdown-menu {
|
|
margin-top: 0;
|
|
border: none;
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
|
|
}
|
|
|
|
// Indicators ==================================================================
|
|
|
|
.alert {
|
|
padding-right: 2.5rem;
|
|
border: none;
|
|
|
|
&,
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6 {
|
|
color: $white;
|
|
}
|
|
|
|
@each $color, $value in $theme-colors {
|
|
&-#{$color} {
|
|
@if $enable-gradients {
|
|
background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
|
|
} @else {
|
|
background-color: $value;
|
|
}
|
|
}
|
|
}
|
|
|
|
a:not(.btn),
|
|
.alert-link {
|
|
color: $white;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.close {
|
|
color: $white;
|
|
}
|
|
|
|
&-secondary,
|
|
&-light {
|
|
&,
|
|
a:not(.btn),
|
|
.alert-link {
|
|
color: $body-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
.badge {
|
|
&-secondary {
|
|
background-color: $gray-500;
|
|
color: $white;
|
|
}
|
|
|
|
&-light {
|
|
background-color: $gray-200;
|
|
}
|
|
|
|
&-warning {
|
|
color: $white;
|
|
}
|
|
}
|
|
|
|
.tag {
|
|
padding: 4px 6px;
|
|
}
|
|
|
|
// Containers ==================================================================
|
|
|
|
.close {
|
|
line-height: .5;
|
|
opacity: .6;
|
|
transition: opacity .2s;
|
|
|
|
&:hover {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
.card {
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .4);
|
|
|
|
&.border-primary,
|
|
&.border-secondary,
|
|
&.border-success,
|
|
&.border-info,
|
|
&.border-warning,
|
|
&.border-danger,
|
|
&.border-light,
|
|
&.border-dark {
|
|
border-width: 1px;
|
|
}
|
|
}
|
|
|
|
.alert-dismissible {
|
|
.close {
|
|
padding: .5rem .75rem;
|
|
}
|
|
}
|
|
|
|
.list-group {
|
|
&-item-action.active {
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6 {
|
|
color: $white;
|
|
}
|
|
}
|
|
}
|
|
|
|
.modal-content {
|
|
border-radius: .2rem;
|
|
box-shadow: 0 6px 36px rgba(0, 0, 0, .3);
|
|
}
|
|
|
|
.popover {
|
|
border: none;
|
|
box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
|
|
}
|
|
|
|
.carousel {
|
|
&-caption {
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6 {
|
|
color: inherit;
|
|
}
|
|
}
|
|
}
|