mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-09 03:36:48 +00:00
Bootstrap SCSS, the JS bundle and the Bootswatch themes go from 5.3.3 to 5.3.8 (bug fixes only), and wvc-main.min.css is recompiled from zephyr. Bootswatch now gives table text the body color, and Lux drops card and modal header borders. Tests compile every theme with the pinned libsass and check that the shipped CSS is zephyr from these sources. The update and rollback steps put back the two files a theme change rewrites, or git refuses to pull over them.
337 lines
5.5 KiB
SCSS
Executable file
337 lines
5.5 KiB
SCSS
Executable file
// Vapor 5.3.8
|
|
// Bootswatch
|
|
|
|
|
|
// Variables
|
|
|
|
$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" !default;
|
|
@if $web-font-path {
|
|
@import url("#{$web-font-path}");
|
|
}
|
|
|
|
$outrun: false !default;
|
|
|
|
// Mixins
|
|
|
|
@mixin text-shadow($color) {
|
|
text-shadow: 0 0 1px rgba($color, .6), 0 0 3px rgba($color, .5), 0 0 .5rem rgba($color, .3), 0 0 2rem rgba($color, .2);
|
|
}
|
|
|
|
@mixin text-shadow-sm($color) {
|
|
text-shadow: 0 0 1px rgba($color, .3), 0 0 2px rgba($color, .3), 0 0 5px rgba($color, .2);
|
|
}
|
|
|
|
@mixin box-shadow($color) {
|
|
box-shadow: 0 0 2px rgba($color, .9), 0 0 4px rgba($color, .4), 0 0 1rem rgba($color, .3), 0 0 4rem rgba($color, .1);
|
|
}
|
|
|
|
@mixin box-shadow-lg($color) {
|
|
box-shadow: 0 0 2rem rgba(tint-color($color, 10%), .4), 0 0 8rem rgba(tint-color($color, 10%), .3);
|
|
}
|
|
|
|
@mixin header-shadow($color) {
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6,
|
|
.h1,
|
|
.h2,
|
|
.h3,
|
|
.h4,
|
|
.h5,
|
|
.h6 {
|
|
@include text-shadow($color);
|
|
}
|
|
}
|
|
|
|
// Body
|
|
|
|
body {
|
|
min-height: 100vh;
|
|
background-image: linear-gradient(shade-color($body-bg, 10%) 0%, $body-bg 7%, $body-bg 80%, shade-color(#173e98, 50%) 100%);
|
|
@include text-shadow-sm($body-color);
|
|
|
|
@if ($outrun) {
|
|
position: relative;
|
|
overflow-x: hidden;
|
|
|
|
&::after {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: -50vw;
|
|
z-index: -1;
|
|
display: block;
|
|
width: 200vw;
|
|
height: 100vh;
|
|
content: "";
|
|
background-image: repeating-linear-gradient(rgba($blue, .6) 0 1px, transparent 1px 100%), repeating-linear-gradient(90deg, rgba($blue, .6) 0 1px, transparent 1px 100%);
|
|
background-size: 200px 200px;
|
|
transform: perspective(50vh) rotateX(50deg) translateY(-11.3vh) translateZ(10px);
|
|
transform-origin: center center;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Typography
|
|
|
|
@include header-shadow($cyan);
|
|
|
|
.text {
|
|
@each $color, $value in $theme-colors {
|
|
&-#{$color} {
|
|
@include text-shadow-sm($value);
|
|
}
|
|
}
|
|
|
|
&-white {
|
|
@include text-shadow-sm($white);
|
|
@include header-shadow($white);
|
|
}
|
|
|
|
&-muted {
|
|
@include text-shadow-sm(shade-color($text-muted, 20%));
|
|
}
|
|
}
|
|
|
|
a {
|
|
@include text-shadow-sm($link-color);
|
|
}
|
|
|
|
.blockquote {
|
|
|
|
&-footer {
|
|
@include text-shadow-sm(shade-color($blockquote-footer-color, 20%));
|
|
}
|
|
}
|
|
|
|
hr {
|
|
border-top: 1px solid $primary;
|
|
@include box-shadow($primary);
|
|
opacity: 1;
|
|
}
|
|
|
|
// Tables
|
|
|
|
table,
|
|
.table {
|
|
@include text-shadow-sm($white);
|
|
}
|
|
|
|
// Buttons
|
|
|
|
.btn {
|
|
@each $color, $value in $theme-colors {
|
|
@if (($color != dark) or ($color != link)) {
|
|
&-#{$color},
|
|
&-outline-#{$color} {
|
|
@include box-shadow($value);
|
|
}
|
|
}
|
|
|
|
&-#{$color} {
|
|
@include text-shadow-sm($white);
|
|
}
|
|
|
|
&-outline-#{$color} {
|
|
color: $white;
|
|
border-width: 2px;
|
|
}
|
|
}
|
|
|
|
&-dark {
|
|
@include box-shadow($primary);
|
|
}
|
|
|
|
&-link {
|
|
box-shadow: none;
|
|
@include text-shadow($body-color);
|
|
}
|
|
|
|
&-outline-dark {
|
|
color: $white;
|
|
}
|
|
}
|
|
|
|
// Navbars
|
|
|
|
.navbar {
|
|
@each $color, $value in $theme-colors {
|
|
&.bg-#{$color} {
|
|
@include box-shadow($value);
|
|
}
|
|
}
|
|
|
|
&[data-bs-theme="dark"] {
|
|
&,
|
|
a {
|
|
@include text-shadow-sm($white);
|
|
}
|
|
|
|
.navbar-brand {
|
|
@include text-shadow($white);
|
|
}
|
|
}
|
|
|
|
&[data-bs-theme="light"] {
|
|
&,
|
|
a {
|
|
@include text-shadow-sm($black);
|
|
}
|
|
|
|
.navbar-brand {
|
|
@include text-shadow($black);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Navs
|
|
|
|
.nav-link {
|
|
&.disabled {
|
|
@include text-shadow-sm($nav-link-disabled-color);
|
|
}
|
|
}
|
|
|
|
.nav-tabs .nav-link.active,
|
|
.nav-tabs .nav-item.show .nav-link {
|
|
@include text-shadow-sm($component-active-bg);
|
|
}
|
|
|
|
.nav-pills .nav-link.active,
|
|
.nav-pills .show > .nav-link {
|
|
@include box-shadow($component-active-bg);
|
|
}
|
|
|
|
.breadcrumb {
|
|
&-item.active {
|
|
@include text-shadow-sm($breadcrumb-active-color);
|
|
}
|
|
|
|
&-item + .breadcrumb-item::before {
|
|
@include text-shadow-sm($breadcrumb-divider-color);
|
|
}
|
|
}
|
|
|
|
.page-link {
|
|
border-radius: $border-radius;
|
|
}
|
|
|
|
.page-item.active {
|
|
.page-link {
|
|
@include box-shadow($component-active-bg);
|
|
}
|
|
}
|
|
|
|
.nav-underline {
|
|
.nav-link {
|
|
&.active {
|
|
@include text-shadow-sm($nav-underline-link-active-color);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Forms
|
|
|
|
legend {
|
|
@include text-shadow($body-color);
|
|
}
|
|
|
|
.valid-feedback {
|
|
@include text-shadow-sm($success);
|
|
}
|
|
|
|
.invalid-feedback {
|
|
@include text-shadow-sm($danger);
|
|
}
|
|
|
|
// Indicators
|
|
|
|
.alert {
|
|
@each $color, $value in $theme-colors {
|
|
&-#{$color} {
|
|
color: $white;
|
|
background-color: $value;
|
|
@include text-shadow-sm($white);
|
|
@include box-shadow-lg($value);
|
|
}
|
|
}
|
|
|
|
.alert-link,
|
|
a {
|
|
color: $white;
|
|
}
|
|
|
|
@include header-shadow($white);
|
|
}
|
|
|
|
.progress {
|
|
overflow: visible;
|
|
|
|
&-bar {
|
|
@include box-shadow($primary);
|
|
|
|
@each $color, $value in $theme-colors {
|
|
&.bg-#{$color} {
|
|
@include box-shadow($value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.tooltip {
|
|
--bs-tooltip-bg: var(--bs-body-bg);
|
|
--bs-tooltip-color: var(--bs-body-color);
|
|
|
|
&-inner,
|
|
.arrow {
|
|
@include box-shadow-lg($primary);
|
|
}
|
|
}
|
|
|
|
.modal,
|
|
.popover,
|
|
.toast {
|
|
@include text-shadow-sm($white);
|
|
@include header-shadow($white);
|
|
}
|
|
|
|
.popover,
|
|
.toast {
|
|
@include box-shadow-lg($primary);
|
|
}
|
|
|
|
.modal {
|
|
&-content {
|
|
@include box-shadow-lg($primary);
|
|
}
|
|
}
|
|
|
|
// Containers
|
|
|
|
.list-group {
|
|
|
|
&-item.active {
|
|
@include header-shadow($white);
|
|
}
|
|
}
|
|
|
|
.card {
|
|
background-color: transparent;
|
|
@include text-shadow-sm($white);
|
|
|
|
@each $color, $value in $theme-colors {
|
|
@if ($color != dark) {
|
|
&.border-#{$color} {
|
|
@include box-shadow($value);
|
|
}
|
|
}
|
|
}
|
|
|
|
&.border-dark {
|
|
@include box-shadow($primary);
|
|
}
|
|
|
|
@include header-shadow($white);
|
|
}
|