1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 11:16:47 +00:00

build(deps): Bootstrap and Bootswatch 5.3.8

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.
This commit is contained in:
catborise 2026-10-12 08:20:48 +03:00
parent c23521bcf4
commit d4f04cbf1e
80 changed files with 701 additions and 246 deletions

View file

@ -444,6 +444,7 @@ docker compose up -d
venv/bin/python3 -c "import sqlite3,sys; sqlite3.connect('db.sqlite3').backup(sqlite3.connect(sys.argv[1]))" "$b/db.sqlite3" &&
cp -p webvirtcloud/settings.py /etc/nginx/conf.d/webvirtcloud.conf "$b"/ &&
git rev-parse HEAD > "$b/commit" &&
git checkout -- static/css/wvc-main.min.css dev/scss/wvc-main.scss &&
git checkout master && git pull
```
@ -507,6 +508,7 @@ b=/root/webvirtcloud-backup-YYYYMMDD-HHMMSS
supervisorctl stop webvirtcloud novncd
cd /srv/webvirtcloud &&
! supervisorctl status webvirtcloud novncd | grep RUNNING &&
git checkout -- static/css/wvc-main.min.css dev/scss/wvc-main.scss &&
git checkout "$(cat "$b/commit")" &&
venv/bin/python3 -c "import os,sqlite3,sys; [os.remove(p) for p in ('db.sqlite3-journal','db.sqlite3-wal','db.sqlite3-shm') if os.path.exists(p)]; sqlite3.connect(sys.argv[1]).backup(sqlite3.connect('db.sqlite3'))" "$b/db.sqlite3" &&
cp "$b/settings.py" webvirtcloud/settings.py &&
@ -552,6 +554,7 @@ A rollback leaves the clone on a detached HEAD at the restored commit; the updat
- A running VM without a guest agent shows the IPv4 address the host learned by ARP (the lookup always failed before).
- After a live migration the VM's NVRAM file is deleted on the source, when it is in libvirt's `/var/lib/libvirt/qemu/nvram` and the destination does not share that directory (a VM created there later with the same name would start with those UEFI variables).
- gstfsd finds the guest's operating system the way libguestfs inspects it, so a root on LVM works, and it always answers (an error when it finds no or several operating systems). Update `/usr/local/bin/gstfsd` on every compute (see [Adding a Compute Node](#adding-a-compute-node), step 3).
- A theme picked on the Settings page rewrites two tracked files; the update and rollback steps put back the shipped theme. Pick yours again afterwards, also after Docker recreates the container.
- Docker no longer publishes port 6080; the console goes through nginx on the panel's port (`WS_PUBLIC_PORT`, default 80).
## Usage

View file

@ -0,0 +1,33 @@
"""The themes in dev/scss/wvc-themes compile with the pinned libsass, and the
shipped wvc-main.min.css is the default theme compiled from these sources."""
from pathlib import Path
import sass
from django.conf import settings
from django.test import SimpleTestCase
SCSS = Path(settings.BASE_DIR, "dev", "scss")
def compile_theme(theme):
# the imports the settings view compiles
return sass.compile(
string=f"@import '{SCSS}/wvc-themes/{theme}/variables';\n"
f"@import '{SCSS}/bootstrap-overrides.scss';\n"
f"@import '{SCSS}/wvc-themes/{theme}/bootswatch';",
output_style="compressed",
)
class ThemeTests(SimpleTestCase):
def test_every_theme_compiles(self):
themes = sorted(p.name for p in (SCSS / "wvc-themes").iterdir() if p.is_dir())
self.assertIn("zephyr", themes)
for theme in themes:
with self.subTest(theme=theme):
self.assertIn(".btn", compile_theme(theme))
def test_the_shipped_css_is_zephyr_from_these_sources(self):
shipped = Path(settings.BASE_DIR, "static", "css", "wvc-main.min.css").read_text()
self.assertEqual(shipped, compile_theme("zephyr"))

View file

@ -1,6 +1,6 @@
/*!
* Bootstrap v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Bootstrap v5.3.8 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View file

@ -134,17 +134,12 @@
&:last-child { border-bottom: 0; }
// stylelint-disable selector-max-class
> .accordion-header .accordion-button {
&,
&.collapsed {
@include border-radius(0);
}
}
// stylelint-enable selector-max-class
> .accordion-collapse {
> .accordion-collapse,
> .accordion-header .accordion-button,
> .accordion-header .accordion-button.collapsed {
@include border-radius(0);
}
// stylelint-enable selector-max-class
}
}

View file

@ -39,7 +39,7 @@
// Prevent double borders when buttons are next to each other
> :not(.btn-check:first-child) + .btn,
> .btn-group:not(:first-child) {
margin-left: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list
margin-left: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
}
// Reset rounded corners
@ -126,7 +126,7 @@
> .btn:not(:first-child),
> .btn-group:not(:first-child) {
margin-top: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list
margin-top: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
}
// Reset rounded corners
@ -135,7 +135,12 @@
@include border-bottom-radius(0);
}
> .btn ~ .btn,
// The top radius should be 0 if the button is:
// - the "third or more" child
// - the second child and the previous element isn't `.btn-check` (making it the first child visually)
// - part of a btn-group which isn't the first child
> .btn:nth-child(n + 3),
> :not(.btn-check) + .btn,
> .btn-group:not(:first-child) > .btn {
@include border-top-radius(0);
}

View file

@ -193,8 +193,7 @@
// The child selector allows nested `.card` within `.card-group`
// to display properly.
> .card {
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
flex: 1 0 0%;
flex: 1 0 0;
margin-bottom: 0;
+ .card {
@ -207,13 +206,13 @@
&:not(:last-child) {
@include border-end-radius(0);
.card-img-top,
.card-header {
> .card-img-top,
> .card-header {
// stylelint-disable-next-line property-disallowed-list
border-top-right-radius: 0;
}
.card-img-bottom,
.card-footer {
> .card-img-bottom,
> .card-footer {
// stylelint-disable-next-line property-disallowed-list
border-bottom-right-radius: 0;
}
@ -222,13 +221,13 @@
&:not(:first-child) {
@include border-start-radius(0);
.card-img-top,
.card-header {
> .card-img-top,
> .card-header {
// stylelint-disable-next-line property-disallowed-list
border-top-left-radius: 0;
}
.card-img-bottom,
.card-footer {
> .card-img-bottom,
> .card-footer {
// stylelint-disable-next-line property-disallowed-list
border-bottom-left-radius: 0;
}

View file

@ -99,6 +99,7 @@
color: $carousel-control-color;
text-align: center;
background: none;
filter: var(--#{$prefix}carousel-control-icon-filter);
border: 0;
opacity: $carousel-control-opacity;
@include transition($carousel-control-transition);
@ -168,7 +169,7 @@
margin-left: $carousel-indicator-spacer;
text-indent: -999px;
cursor: pointer;
background-color: $carousel-indicator-active-bg;
background-color: var(--#{$prefix}carousel-indicator-active-bg);
background-clip: padding-box;
border: 0;
// Use transparent borders to increase the hit area by 10px on top and bottom.
@ -195,42 +196,31 @@
left: (100% - $carousel-caption-width) * .5;
padding-top: $carousel-caption-padding-y;
padding-bottom: $carousel-caption-padding-y;
color: $carousel-caption-color;
color: var(--#{$prefix}carousel-caption-color);
text-align: center;
}
// Dark mode carousel
@mixin carousel-dark() {
.carousel-control-prev-icon,
.carousel-control-next-icon {
filter: $carousel-dark-control-icon-filter;
}
.carousel-indicators [data-bs-target] {
background-color: $carousel-dark-indicator-active-bg;
}
.carousel-caption {
color: $carousel-dark-caption-color;
}
--#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg-dark};
--#{$prefix}carousel-caption-color: #{$carousel-caption-color-dark};
--#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter-dark};
}
.carousel-dark {
@include carousel-dark();
}
:root,
[data-bs-theme="light"] {
--#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg};
--#{$prefix}carousel-caption-color: #{$carousel-caption-color};
--#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter};
}
@if $enable-dark-mode {
@include color-mode(dark) {
@if $color-mode-type == "media-query" {
.carousel {
@include carousel-dark();
}
} @else {
.carousel,
&.carousel {
@include carousel-dark();
}
}
@include color-mode(dark, true) {
@include carousel-dark();
}
}

View file

@ -12,7 +12,6 @@
--#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
--#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
--#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
--#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};
// scss-docs-end close-css-vars
box-sizing: content-box;
@ -21,6 +20,7 @@
padding: $btn-close-padding-y $btn-close-padding-x;
color: var(--#{$prefix}btn-close-color);
background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
filter: var(--#{$prefix}btn-close-filter);
border: 0; // for button elements
@include border-radius();
opacity: var(--#{$prefix}btn-close-opacity);
@ -47,17 +47,20 @@
}
@mixin btn-close-white() {
filter: var(--#{$prefix}btn-close-white-filter);
--#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
}
.btn-close-white {
@include btn-close-white();
}
:root,
[data-bs-theme="light"] {
--#{$prefix}btn-close-filter: #{$btn-close-filter};
}
@if $enable-dark-mode {
@include color-mode(dark) {
.btn-close {
@include btn-close-white();
}
@include color-mode(dark, true) {
@include btn-close-white();
}
}

View file

@ -157,7 +157,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
@each $color in $foregrounds {
$contrast-ratio: contrast-ratio($background, $color);
@if $contrast-ratio > $min-contrast-ratio {
@if $contrast-ratio >= $min-contrast-ratio {
@return $color;
} @else if $contrast-ratio > $max-ratio {
$max-ratio: $contrast-ratio;
@ -177,7 +177,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
@return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
}
// Return WCAG2.1 relative luminance
// Return WCAG2.2 relative luminance
// See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
// See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
@function luminance($color) {

View file

@ -43,31 +43,6 @@
}
}
// Interactive list items
//
// Use anchor or button elements instead of `li`s or `div`s to create interactive
// list items. Includes an extra `.active` modifier class for selected items.
.list-group-item-action {
width: 100%; // For `<button>`s (anchors become 100% by default though)
color: var(--#{$prefix}list-group-action-color);
text-align: inherit; // For `<button>`s (anchors inherit)
// Hover state
&:hover,
&:focus {
z-index: 1; // Place hover/focus items above their siblings for proper border styling
color: var(--#{$prefix}list-group-action-hover-color);
text-decoration: none;
background-color: var(--#{$prefix}list-group-action-hover-bg);
}
&:active {
color: var(--#{$prefix}list-group-action-active-color);
background-color: var(--#{$prefix}list-group-action-active-bg);
}
}
// Individual list items
//
// Use on `li`s or `div`s within the `.list-group` parent.
@ -115,6 +90,33 @@
}
}
// Interactive list items
//
// Use anchor or button elements instead of `li`s or `div`s to create interactive
// list items. Includes an extra `.active` modifier class for selected items.
.list-group-item-action {
width: 100%; // For `<button>`s (anchors become 100% by default though)
color: var(--#{$prefix}list-group-action-color);
text-align: inherit; // For `<button>`s (anchors inherit)
&:not(.active) {
// Hover state
&:hover,
&:focus {
z-index: 1; // Place hover/focus items above their siblings for proper border styling
color: var(--#{$prefix}list-group-action-hover-color);
text-decoration: none;
background-color: var(--#{$prefix}list-group-action-hover-bg);
}
&:active {
color: var(--#{$prefix}list-group-action-active-color);
background-color: var(--#{$prefix}list-group-action-active-bg);
}
}
}
// Horizontal
//
// Change the layout of list group items from vertical (default) to horizontal.

View file

@ -59,8 +59,8 @@
// When fading in the modal, animate it to slide down
.modal.fade & {
@include transition($modal-transition);
transform: $modal-fade-transform;
@include transition($modal-transition);
}
.modal.show & {
transform: $modal-show-transform;
@ -132,7 +132,11 @@
.btn-close {
padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
// Split properties to avoid invalid calc() function if value is 0
margin-top: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
margin-right: calc(-.5 * var(--#{$prefix}modal-header-padding-x));
margin-bottom: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
margin-left: auto;
}
}

View file

@ -169,8 +169,8 @@
.nav-justified {
> .nav-link,
.nav-item {
flex-basis: 0;
flex-grow: 1;
flex-basis: 0;
text-align: center;
}
}

View file

@ -139,8 +139,8 @@
// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
// on the `.navbar` parent.
.navbar-collapse {
flex-basis: 100%;
flex-grow: 1;
flex-basis: 100%;
// For always expanded or extra full navbars, ensure content aligns itself
// properly vertically. Can be easily overridden with flex utilities.
align-items: center;

View file

@ -127,7 +127,11 @@
.btn-close {
padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
margin: calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) calc(-.5 * var(--#{$prefix}offcanvas-padding-x)) calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) auto;
// Split properties to avoid invalid calc() function if value is 0
margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
margin-left: auto;
}
}

View file

@ -75,7 +75,7 @@
margin-left: $pagination-margin-start;
}
@if $pagination-margin-start == calc(#{$pagination-border-width} * -1) {
@if $pagination-margin-start == calc(-1 * #{$pagination-border-width}) {
&:first-child {
.page-link {
@include border-start-radius(var(--#{$prefix}pagination-border-radius));

View file

@ -3,7 +3,7 @@
// scss-docs-start progress-keyframes
@if $enable-transitions {
@keyframes progress-bar-stripes {
0% { background-position-x: $progress-height; }
0% { background-position-x: var(--#{$prefix}progress-height); }
}
}
// scss-docs-end progress-keyframes

View file

@ -499,9 +499,9 @@ legend {
width: 100%;
padding: 0;
margin-bottom: $legend-margin-bottom;
@include font-size($legend-font-size);
font-weight: $legend-font-weight;
line-height: inherit;
@include font-size($legend-font-size);
+ * {
clear: left; // 2
@ -534,6 +534,12 @@ legend {
[type="search"] {
-webkit-appearance: textfield; // 1
outline-offset: -2px; // 2
// 3. Better affordance and consistent appearance for search cancel button
&::-webkit-search-cancel-button {
cursor: pointer;
filter: grayscale(1);
}
}
// 1. A few input types should stay LTR

View file

@ -5,6 +5,7 @@
.spinner-grow,
.spinner-border {
display: inline-block;
flex-shrink: 0;
width: var(--#{$prefix}spinner-width);
height: var(--#{$prefix}spinner-height);
vertical-align: var(--#{$prefix}spinner-vertical-align);

View file

@ -34,11 +34,11 @@
// Type display classes
@each $display, $font-size in $display-font-sizes {
.display-#{$display} {
@include font-size($font-size);
font-family: $display-font-family;
font-style: $display-font-style;
font-weight: $display-font-weight;
line-height: $display-line-height;
@include font-size($font-size);
}
}

View file

@ -82,6 +82,21 @@ $form-invalid-border-color-dark: $red-300 !default;
$accordion-icon-color-dark: $primary-text-emphasis-dark !default;
$accordion-icon-active-color-dark: $primary-text-emphasis-dark !default;
$accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
$accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
$accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>") !default;
$accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>") !default;
// scss-docs-end sass-dark-mode-vars
//
// Carousel
//
$carousel-indicator-active-bg-dark: $carousel-dark-indicator-active-bg !default;
$carousel-caption-color-dark: $carousel-dark-caption-color !default;
$carousel-control-icon-filter-dark: $carousel-dark-control-icon-filter !default;
//
// Close button
//
$btn-close-filter-dark: $btn-close-white-filter !default;

View file

@ -67,8 +67,8 @@ $colors: (
) !default;
// scss-docs-end colors-map
// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.2 are 3, 4.5 and 7.
// See https://www.w3.org/TR/WCAG/#contrast-minimum
$min-contrast-ratio: 4.5 !default;
// Customize the light and dark text colors for use in our color contrast function.
@ -1091,7 +1091,7 @@ $form-feedback-valid-color: $success !default;
$form-feedback-invalid-color: $danger !default;
$form-feedback-icon-valid-color: $form-feedback-valid-color !default;
$form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
$form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/></svg>") !default;
$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
$form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
// scss-docs-end form-feedback-variables
@ -1302,7 +1302,7 @@ $pagination-color: var(--#{$prefix}link-color) !default;
$pagination-bg: var(--#{$prefix}body-bg) !default;
$pagination-border-radius: var(--#{$prefix}border-radius) !default;
$pagination-border-width: var(--#{$prefix}border-width) !default;
$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list
$pagination-margin-start: calc(-1 * #{$pagination-border-width}) !default; // stylelint-disable-line function-disallowed-list
$pagination-border-color: var(--#{$prefix}border-color) !default;
$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;
@ -1394,8 +1394,8 @@ $accordion-icon-active-color: $primary-text-emphasis !default;
$accordion-icon-transition: transform .2s ease-in-out !default;
$accordion-icon-transform: rotate(-180deg) !default;
$accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>") !default;
$accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>") !default;
$accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>") !default;
$accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>") !default;
// scss-docs-end accordion-variables
// Tooltips
@ -1507,7 +1507,7 @@ $modal-dialog-margin-y-sm-up: 1.75rem !default;
$modal-title-line-height: $line-height-base !default;
$modal-content-color: null !default;
$modal-content-color: var(--#{$prefix}body-color) !default;
$modal-content-bg: var(--#{$prefix}body-bg) !default;
$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;
$modal-content-border-width: var(--#{$prefix}border-width) !default;
@ -1652,6 +1652,7 @@ $carousel-control-width: 15% !default;
$carousel-control-opacity: .5 !default;
$carousel-control-hover-opacity: .9 !default;
$carousel-control-transition: opacity .15s ease !default;
$carousel-control-icon-filter: null !default;
$carousel-indicator-width: 30px !default;
$carousel-indicator-height: 3px !default;
@ -1669,17 +1670,17 @@ $carousel-caption-spacer: 1.25rem !default;
$carousel-control-icon-width: 2rem !default;
$carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>") !default;
$carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>") !default;
$carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>") !default;
$carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>") !default;
$carousel-transition-duration: .6s !default;
$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
// scss-docs-end carousel-variables
// scss-docs-start carousel-dark-variables
$carousel-dark-indicator-active-bg: $black !default;
$carousel-dark-caption-color: $black !default;
$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;
$carousel-dark-indicator-active-bg: $black !default; // Deprecated in v5.3.4
$carousel-dark-caption-color: $black !default; // Deprecated in v5.3.4
$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default; // Deprecated in v5.3.4
// scss-docs-end carousel-dark-variables
@ -1706,13 +1707,14 @@ $btn-close-height: $btn-close-width !default;
$btn-close-padding-x: .25em !default;
$btn-close-padding-y: $btn-close-padding-x !default;
$btn-close-color: $black !default;
$btn-close-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>") !default;
$btn-close-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/></svg>") !default;
$btn-close-focus-shadow: $focus-ring-box-shadow !default;
$btn-close-opacity: .5 !default;
$btn-close-hover-opacity: .75 !default;
$btn-close-focus-opacity: 1 !default;
$btn-close-disabled-opacity: .25 !default;
$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;
$btn-close-filter: null !default;
$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default; // Deprecated in v5.3.4
// scss-docs-end close-variables

View file

@ -14,9 +14,11 @@
top: 0;
left: 0;
z-index: 2;
max-width: 100%;
height: 100%; // allow textareas
padding: $form-floating-padding-y $form-floating-padding-x;
overflow: hidden;
color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
text-align: start;
text-overflow: ellipsis;
white-space: nowrap;
@ -49,6 +51,7 @@
> .form-select {
padding-top: $form-floating-input-padding-t;
padding-bottom: $form-floating-input-padding-b;
padding-left: $form-floating-padding-x;
}
> .form-control:focus,
@ -56,27 +59,30 @@
> .form-control-plaintext,
> .form-select {
~ label {
color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
transform: $form-floating-label-transform;
&::after {
position: absolute;
inset: $form-floating-padding-y ($form-floating-padding-x * .5);
z-index: -1;
height: $form-floating-label-height;
content: "";
background-color: $input-bg;
@include border-radius($input-border-radius);
}
}
}
// Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
> .form-control:-webkit-autofill {
~ label {
color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
transform: $form-floating-label-transform;
}
}
> textarea:focus,
> textarea:not(:placeholder-shown) {
~ label::after {
position: absolute;
inset: $form-floating-padding-y ($form-floating-padding-x * .5);
z-index: -1;
height: $form-floating-label-height;
content: "";
background-color: $input-bg;
@include border-radius($input-border-radius);
}
}
> textarea:disabled ~ label::after {
background-color: $input-disabled-bg;
}
> .form-control-plaintext {
~ label {
@ -87,9 +93,5 @@
> :disabled ~ label,
> .form-control:disabled ~ label { // Required for `.form-control`s because of specificity
color: $form-floating-label-disabled-color;
&::after {
background-color: $input-disabled-bg;
}
}
}

View file

@ -121,7 +121,7 @@
}
> :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
margin-left: calc(#{$input-border-width} * -1); // stylelint-disable-line function-disallowed-list
margin-left: calc(-1 * #{$input-border-width}); // stylelint-disable-line function-disallowed-list
@include border-start-radius(0);
}

View file

@ -1,7 +1,7 @@
@mixin bsBanner($file) {
/*!
* Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Bootstrap #{$file} v5.3.8 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
}

View file

@ -1,17 +1,23 @@
@mixin box-shadow($shadow...) {
@if $enable-shadows {
$result: ();
$has-single-value: false;
$single-value: null;
@each $value in $shadow {
@if $value != null {
$result: append($result, $value, "comma");
}
@if $value == none and length($shadow) > 1 {
@warn "The keyword 'none' must be used as a single argument.";
@if $value == none or $value == initial or $value == inherit or $value == unset {
$has-single-value: true;
$single-value: $value;
} @else {
$result: append($result, $value, "comma");
}
}
}
@if (length($result) > 0) {
@if $has-single-value {
box-shadow: $single-value;
} @else if (length($result) > 0) {
box-shadow: $result;
}
}

View file

@ -72,7 +72,7 @@
@include media-breakpoint-up($breakpoint, $breakpoints) {
// Provide basic `.col-{bp}` classes for equal-width flexbox columns
.col#{$infix} {
flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
flex: 1 0 0;
}
.row-cols#{$infix}-auto > * {

View file

@ -19,12 +19,17 @@
&:not(caption) {
position: absolute !important;
}
// Fix to prevent overflowing children to become focusable
* {
overflow: hidden !important;
}
}
// Use to only display content when it's focused, or one of its child elements is focused
// (i.e. when focus is within the element/container that the class was applied to)
//
// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
// Useful for "Skip to main content" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html
@mixin visually-hidden-focusable() {
&:not(:focus):not(:focus-within) {

View file

@ -1,4 +1,4 @@
// Cerulean 5.3.3
// Cerulean 5.3.8
// Bootswatch
@ -20,6 +20,18 @@ $text-shadow: 0 1px 0 rgba(0, 0, 0, .05) !default;
@include gradient-y-three-colors(shade-color($color, 20%), shade-color($color, 20%), 60%, shade-color($color, 30%));
}
// Tables
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Navbar
.navbar {

View file

@ -1,4 +1,4 @@
// Cerulean 5.3.3
// Cerulean 5.3.8
// Bootswatch
$theme: "cerulean" !default;
@ -49,6 +49,10 @@ $body-color: $gray-700 !default;
$headings-color: $cyan !default;
// Tables
$table-color: initial !default;
// Dropdowns
$dropdown-link-hover-color: $white !default;

View file

@ -1,4 +1,4 @@
// Cosmo 5.3.3
// Cosmo 5.3.8
// Bootswatch
@ -15,6 +15,24 @@ body {
-webkit-font-smoothing: antialiased;
}
// Tables
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
.form-range::-moz-range-thumb {
border-radius: inherit;
}
// Indicators
.badge {

View file

@ -1,4 +1,4 @@
// Cosmo 5.3.3
// Cosmo 5.3.8
// Bootswatch
$theme: "cosmo" !default;
@ -55,6 +55,10 @@ $body-color: $gray-800 !default;
$font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$headings-font-weight: 400 !default;
// Tables
$table-color: initial !default;
// Navbar
$navbar-dark-hover-color: rgba($white, 1) !default;

View file

@ -1,4 +1,4 @@
// Cyborg 5.3.3
// Cyborg 5.3.8
// Bootswatch

View file

@ -1,4 +1,4 @@
// Cyborg 5.3.3
// Cyborg 5.3.8
// Bootswatch
$theme: "cyborg" !default;
@ -60,7 +60,7 @@ $headings-color: $white !default;
// Tables
$table-color: $white !default;
$table-color: initial !default;
$table-accent-bg: rgba($white, .05) !default;
$table-hover-bg: rgba($white, .075) !default;
$table-border-color: $gray-700 !default;
@ -80,7 +80,8 @@ $input-disabled-bg: $gray-400 !default;
$input-color: $gray-900 !default;
$input-border-color: $white !default;
$input-border-width: 0 !default;
// stylelint-disable-next-line length-zero-no-unit
$input-border-width: 0px !default;
$input-group-addon-color: $white !default;
$input-group-addon-bg: $gray-700 !default;
@ -109,6 +110,8 @@ $nav-tabs-link-active-color: $white !default;
$nav-tabs-link-active-bg: $nav-tabs-border-color !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
$nav-underline-link-active-color: $white !default;
// Navbar
$navbar-dark-hover-color: $white !default;

View file

@ -1,4 +1,4 @@
// Darkly 5.3.3
// Darkly 5.3.8
// Bootswatch
@ -17,6 +17,10 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0
}
}
.text-secondary {
color: var(--bs-secondary-color) !important;
}
// Forms
@include color-mode(dark) {
@ -35,19 +39,6 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0
// Navs
.nav-tabs,
.nav-pills {
.nav-link,
.nav-link.active,
.nav-link.active:focus,
.nav-link.active:hover,
.nav-item.open .nav-link,
.nav-item.open .nav-link:focus,
.nav-item.open .nav-link:hover {
color: $white;
}
}
.breadcrumb a {
color: $white;
}

View file

@ -1,4 +1,4 @@
// Darkly 5.3.3
// Darkly 5.3.8
// Bootswatch
$theme: "darkly" !default;
@ -61,7 +61,7 @@ $text-muted: $gray-600 !default;
// Tables
$table-color: $white !default;
$table-color: initial !default;
$table-border-color: $gray-700 !default;
@ -97,12 +97,16 @@ $dropdown-link-hover-bg: $primary !default;
// Navs
$nav-link-padding-x: 2rem !default;
$nav-link-disabled-color: $gray-500 !default;
$nav-link-color: $white !default;
$nav-link-hover-color: $white !default;
$nav-link-disabled-color: $gray-600 !default;
$nav-tabs-border-color: $gray-700 !default;
$nav-tabs-link-hover-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
$nav-tabs-link-active-color: $white !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
$nav-underline-link-active-color: $white !default;
// Navbar
$navbar-padding-y: 1rem !default;

View file

@ -1,4 +1,4 @@
// Flatly 5.3.3
// Flatly 5.3.8
// Bootswatch

View file

@ -1,4 +1,4 @@
// Flatly 5.3.3
// Flatly 5.3.8
// Bootswatch
$theme: "flatly" !default;
@ -55,6 +55,7 @@ $h3-font-size: 2rem !default;
// Tables
$table-color: initial !default;
$table-bg-scale: 0% !default;
// Dropdowns

View file

@ -1,4 +1,4 @@
// Journal 5.3.3
// Journal 5.3.8
// Bootswatch
@ -9,6 +9,18 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=News+Cycle:wght@400;70
@import url("#{$web-font-path}");
}
// Tables
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Navbar
.navbar {

View file

@ -1,4 +1,4 @@
// Journal 5.3.3
// Journal 5.3.8
// Bootswatch
$theme: "journal" !default;
@ -47,6 +47,10 @@ $headings-font-family: "News Cycle", "Arial Narrow Bold", sans-serif !default;
$headings-font-weight: 700 !default;
$headings-line-height: 1.1 !default;
// Tables
$table-color: initial !default;
// Buttons
$input-btn-padding-x: 1rem !default;

View file

@ -1,4 +1,4 @@
// Litera 5.3.3
// Litera 5.3.8
// Bootswatch

View file

@ -1,4 +1,4 @@
// Litera 5.3.3
// Litera 5.3.8
// Bootswatch
$theme: "litera" !default;
@ -57,6 +57,8 @@ $headings-font-weight: 700 !default;
// Tables
$table-color: initial !default;
$table-border-color: rgba(0, 0, 0, .1) !default;
$table-bg-scale: 0% !default;

View file

@ -1,4 +1,4 @@
// Lumen 5.3.3
// Lumen 5.3.8
// Bootswatch
@ -100,6 +100,13 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,w
color: $gray-600;
}
// Tables
.table-secondary,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
.form-control {

View file

@ -1,4 +1,4 @@
// Lumen 5.3.3
// Lumen 5.3.8
// Bootswatch
$theme: "lumen" !default;
@ -53,6 +53,8 @@ $font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFo
// Tables
$table-color: initial !default;
$table-bg-scale: 0% !default;
// Buttons

View file

@ -1,4 +1,4 @@
// Lux 5.3.3
// Lux 5.3.8
// Bootswatch
@ -9,6 +9,10 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@200;3
@import url("#{$web-font-path}");
}
:root {
--bs-border-width: 0;
}
// Navbar
.navbar {
@ -54,31 +58,43 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@200;3
font-size: 10px;
}
&-warning {
&,
&:hover,
&:not([disabled]):not(.disabled):active,
&:focus {
color: $white;
}
&-primary {
--bs-btn-hover-bg: #{$black};
--bs-btn-hover-border-color: #{$black};
--bs-btn-active-bg: #{$black};
--bs-btn-active-border-color: #{$black};
}
&-secondary {
--bs-btn-hover-bg: #{$gray-200};
--bs-btn-hover-border-color: #{$gray-200};
--bs-btn-active-bg: #{$gray-300};
--bs-btn-active-border-color: #{$gray-300};
}
&-light {
--bs-btn-hover-bg: #{$gray-300};
--bs-btn-hover-border-color: #{$gray-300};
--bs-btn-active-bg: #{$gray-400};
--bs-btn-active-border-color: #{$gray-400};
}
&-link {
font-weight: $btn-font-weight;
}
}
.btn-outline-secondary {
color: $gray-600;
border-color: $gray-600;
--bs-btn-color: #{$black};
--bs-btn-hover-bg: #{$gray-200};
--bs-btn-hover-border-color: #{$gray-200};
--bs-btn-active-bg: #{$gray-300};
--bs-btn-active-border-color: #{$gray-300};
border-color: $gray-100;
}
&:not([disabled]):not(.disabled):hover,
&:not([disabled]):not(.disabled):focus,
&:not([disabled]):not(.disabled):active {
color: $white;
background-color: $gray-400;
border-color: $gray-400;
}
&:not([disabled]):not(.disabled):focus {
box-shadow: 0 0 0 .2rem rgba($gray-400, .5);
}
.btn-outline-light {
color: var(--bs-btn-active-color);
}
[class*="btn-outline-"] {
@ -91,7 +107,37 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@200;3
@include color-mode(dark) {
.btn-primary {
background-color: #080808;
--bs-btn-bg: #080808;
--bs-btn-hover-bg: #{$black};
}
.btn-outline-primary {
color: $white;
border-color: #080808;
--bs-btn-hover-bg: #{$black};
}
.btn-outline-secondary {
--bs-btn-color: #{$white};
--bs-btn-hover-color: #{$black};
--bs-btn-hover-bg: #{$gray-200};
--bs-btn-hover-border-color: #{$gray-200};
--bs-btn-active-bg: #{$gray-300};
--bs-btn-active-border-color: #{$gray-300};
}
.btn-outline-light {
color: $white;
&:not([disabled]):not(.disabled):hover,
&:not([disabled]):not(.disabled):focus,
&:not([disabled]):not(.disabled):active {
color: var(--bs-btn-active-color);
}
}
.btn-outline-dark {
color: $white;
}
}
@ -136,6 +182,16 @@ th {
}
}
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
@include color-mode(dark) {
@ -224,3 +280,25 @@ th {
color: inherit;
}
}
.modal-dialog {
box-shadow: var(--bs-box-shadow);
}
.popover {
--bs-popover-border-color: transparent;
box-shadow: var(--bs-box-shadow);
.popover-arrow {
--bs-popover-border-width: 1px;
}
}
@include color-mode(dark) {
.modal-content,
.popover,
.toast {
background-color: lighten($gray-900, 5%);
}
}

View file

@ -1,4 +1,4 @@
// Lux 5.3.3
// Lux 5.3.8
// Bootswatch
$theme: "lux" !default;
@ -9,9 +9,9 @@ $theme: "lux" !default;
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #f7f7f9 !default;
$gray-300: #eceeef !default;
$gray-400: #ced4da !default;
$gray-200: #f0f1f2 !default;
$gray-300: #e0e1e2 !default;
$gray-400: #cdcecf !default;
$gray-500: #adb5bd !default;
$gray-600: #919aa1 !default;
$gray-700: #55595c !default;
@ -36,10 +36,10 @@ $success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $white !default;
$light: $gray-200 !default;
$dark: $gray-800 !default;
$min-contrast-ratio: 2.3 !default;
$min-contrast-ratio: 1.9 !default;
// Options
@ -73,12 +73,12 @@ $headings-color: $gray-900 !default;
// Tables
$table-color: initial !default;
$table-border-color: rgba(0, 0, 0, .05) !default;
// Buttons + Forms
$input-btn-border-width: 0 !default;
// Buttons
$btn-line-height: 1.5rem !default;
@ -113,3 +113,12 @@ $navbar-light-active-color: $gray-900 !default;
$pagination-border-color: transparent !default;
$pagination-hover-border-color: $pagination-border-color !default;
$pagination-disabled-border-color: $pagination-border-color !default;
// Popovers
$popover-header-bg: transparent !default;
$popover-header-color: var(--bs-popover-header-color) !default;
// Toasts
$toast-header-background-color: transparent !default;

View file

@ -1,4 +1,4 @@
// Materia 5.3.3
// Materia 5.3.8
// Bootswatch
@ -236,6 +236,16 @@ p {
background-color: $primary;
}
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
.col-form-label {
@ -317,7 +327,7 @@ select.form-control {
margin-top: 1px;
border: 2px solid $gray-400;
&:checked[type="radio"] {
:not(.form-check) > &:checked[type="radio"] {
background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$blue}' stroke='#{$white}'/></svg>")), var(--bs-gradient);
background-size: 1.8em;
}

View file

@ -1,4 +1,4 @@
// Materia 5.3.3
// Materia 5.3.8
// Bootswatch
$theme: "materia" !default;
@ -54,6 +54,12 @@ $font-family-sans-serif: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI
$font-size-base: 1rem !default;
$font-weight-base: 400 !default;
$line-height-base: 1.5 !default;
// Tables
$table-color: initial !default;
// Buttons
$input-btn-padding-y: .8rem !default;
@ -78,6 +84,12 @@ $input-border-radius-sm: 0 !default;
$input-placeholder-color: rgba(0, 0, 0, .4) !default;
$input-group-addon-bg: transparent !default;
$input-height: calc($line-height-base * 1em + $input-padding-y * 2) !default;
$input-height-sm: $line-height-base * 1em !default;
$input-height-lg: calc($line-height-base * 1em + $input-padding-y-lg * 2) !default;
$form-floating-height: 3.5rem !default;
// Navs
$nav-link-disabled-color: $gray-500 !default;

View file

@ -1,4 +1,4 @@
// Minty 5.3.3
// Minty 5.3.8
// Bootswatch
@ -72,6 +72,12 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;50
}
}
// Tables
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
legend {

View file

@ -1,4 +1,4 @@
// Minty 5.3.3
// Minty 5.3.8
// Bootswatch
$theme: "minty" !default;
@ -59,6 +59,7 @@ $headings-color: $gray-700 !default;
// Tables
$table-color: initial !default;
$table-border-color: rgba(0, 0, 0, .05) !default;
$table-bg-scale: 0% !default;

View file

@ -1,4 +1,4 @@
// Morph 5.3.3
// Morph 5.3.8
// Bootswatch
@ -341,6 +341,18 @@ $box-shadow-dark: 5px 5px 10px rgba(darken($dark, 50%), .2), -5px -5px 10px rgba
}
}
// Tables
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
.input-group {

View file

@ -1,4 +1,4 @@
// Morph 5.3.3
// Morph 5.3.8
// Bootswatch
$theme: "morph" !default;
@ -73,6 +73,10 @@ $headings-color: $link-color !default;
$text-muted: lighten($body-color, 15%) !default;
// Tables
$table-color: initial !default;
// Buttons + Forms
$input-btn-padding-y: 1rem !default;

View file

@ -1,4 +1,4 @@
// Pulse 5.3.3
// Pulse 5.3.8
// Bootswatch
@ -72,6 +72,16 @@
border-color: $table-border-color;
}
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
.form-control:focus {

View file

@ -1,4 +1,4 @@
// Pulse 5.3.3
// Pulse 5.3.8
// Bootswatch
$theme: "pulse" !default;
@ -55,6 +55,8 @@ $link-hover-color: $primary !default;
// Tables
$table-color: initial !default;
$table-border-color: rgba(0, 0, 0, .05) !default;
// Forms
@ -63,7 +65,6 @@ $input-focus-border-color: $primary !default;
// Dropdowns
$dropdown-link-color: $gray-700 !default;
$dropdown-link-hover-color: $white !default;
$dropdown-link-hover-bg: $primary !default;

View file

@ -1,4 +1,4 @@
// Quartz 5.3.3
// Quartz 5.3.8
// Bootswatch

View file

@ -1,4 +1,4 @@
// Quartz 5.3.3
// Quartz 5.3.8
// Bootswatch
$theme: "quartz" !default;
@ -76,6 +76,8 @@ $blockquote-footer-color: $text-muted !default;
// Tables
$table-color: initial !default;
$table-dark-bg: $dark !default;
$table-dark-border-color: darken($dark, 5%) !default;
@ -134,6 +136,8 @@ $nav-pills-border-radius: $border-radius-pill !default;
$nav-pills-link-active-color: $white !default;
$nav-pills-link-active-bg: $primary !default;
$nav-underline-link-active-color: $white !default;
// Navbars
// Dropdowns

View file

@ -1,4 +1,4 @@
// Sandstone 5.3.3
// Sandstone 5.3.8
// Bootswatch
@ -52,6 +52,16 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;70
}
}
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
input,

View file

@ -1,4 +1,4 @@
// Sandstone 5.3.3
// Sandstone 5.3.8
// Bootswatch
$theme: "sandstone" !default;
@ -55,6 +55,10 @@ $link-color: $success !default;
$font-family-sans-serif: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$headings-font-weight: 400 !default;
// Tables
$table-color: initial !default;
// Dropdowns
$dropdown-link-color: $gray-600 !default;

View file

@ -1,4 +1,4 @@
// Simplex 5.3.3
// Simplex 5.3.8
// Bootswatch
@ -109,6 +109,18 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700
color: $gray-600 !important;
}
// Tables
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
legend,

View file

@ -1,4 +1,4 @@
// Simplex 5.3.3
// Simplex 5.3.8
// Bootswatch
$theme: "simplex" !default;
@ -50,6 +50,10 @@ $body-bg: #fcfcfc !default;
// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
// Tables
$table-color: initial !default;
// Dropdowns
$dropdown-link-hover-color: $white !default;

View file

@ -1,4 +1,4 @@
// Sketchy 5.3.3
// Sketchy 5.3.8
// Bootswatch
@ -63,6 +63,36 @@ $border-radius-sm-sketchy: 255px 25px 225px 25px / 25px 225px 25px 255px;
opacity: 0;
}
[data-bs-theme="dark"] .btn-primary {
--bs-btn-bg: #{$gray-100};
--bs-btn-hover-bg: #{$gray-300};
--bs-btn-active-bg: #{$gray-400};
--bs-btn-disabled-bg: #{$gray-500};
--bs-btn-color: #{$black};
--bs-btn-hover-color: #{$black};
--bs-btn-active-color: #{$black};
--bs-btn-disabled-color: #{$black};
}
[data-bs-theme="dark"] .btn-outline-primary {
--bs-btn-hover-bg: #{$gray-300};
--bs-btn-active-bg: #{$gray-100};
--bs-btn-disabled-bg: #{$gray-500};
--bs-btn-border-color: #{$gray-100};
--bs-btn-hover-border-color: #{$gray-300};
--bs-btn-active-border-color: #{$gray-100};
--bs-btn-disabled-border-color: #{$gray-500};
--bs-btn-color: #{$gray-100};
--bs-btn-hover-color: #{$black};
--bs-btn-active-color: #{$black};
--bs-btn-disabled-color: #{$black};
}
[data-bs-theme="dark"] .btn-outline-secondary,
[data-bs-theme="dark"] .btn-outline-dark {
--bs-btn-color: #{$white};
}
// Typography
button,
@ -149,6 +179,15 @@ table {
}
}
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
@ -250,6 +289,32 @@ select.form-control {
}
}
[data-bs-theme="dark"] {
[type="radio"]::before {
border-color: $white;
}
[type="radio"]:checked::before {
background-color: $white;
}
[type="checkbox"]::before {
border-color: $white;
}
[type="checkbox"]:checked::before {
background-color: $white;
}
.form-range::-webkit-slider-thumb {
background-color: $white;
}
.form-range:disabled::-webkit-slider-thumb {
background-color: $secondary;
}
}
.form-check-input {
&:focus {
box-shadow: none;
@ -386,6 +451,11 @@ select.form-control {
border-radius: $border-radius-sm-sketchy;
}
[data-bs-theme="dark"] .progress,
[data-bs-theme="dark"] .progress-stacked {
background-color: $secondary;
}
// Containers
.card {

View file

@ -1,4 +1,4 @@
// Sketchy 5.3.3
// Sketchy 5.3.8
// Bootswatch
$theme: "sketchy" !default;
@ -63,6 +63,8 @@ $blockquote-small-color: $gray-800 !default;
// Tables
$table-color: initial !default;
$table-hover-bg: $white !default;
$table-border-width: 2px !default;
$table-border-color: $gray-800 !default;
@ -87,7 +89,6 @@ $dropdown-link-hover-bg: $gray-800 !default;
$nav-tabs-border-color: $gray-800 !default;
$nav-tabs-link-hover-border-color: $gray-800 !default;
$nav-tabs-link-active-color: $gray-800 !default;
$nav-tabs-link-active-border-color: $gray-800 !default;
// Navbar
@ -145,7 +146,6 @@ $list-group-action-color: $gray-800 !default;
$breadcrumb-padding-y: .375rem !default;
$breadcrumb-padding-x: .75rem !default;
$breadcrumb-divider-color: $gray-800 !default;
$breadcrumb-active-color: $gray-800 !default;
$breadcrumb-border-radius: .25rem !default;
// Close

View file

@ -1,4 +1,4 @@
// Slate 5.3.3
// Slate 5.3.8
// Bootswatch
@ -337,3 +337,4 @@ legend {
}
}
}

View file

@ -1,4 +1,4 @@
// Slate 5.3.3
// Slate 5.3.8
// Bootswatch
$theme: "slate" !default;
@ -56,7 +56,7 @@ $link-color: $white !default;
// Tables
$table-color: $white !default;
$table-color: initial !default;
$table-accent-bg: rgba($white, .05) !default;
$table-hover-bg: rgba($white, .075) !default;
$table-border-color: rgba($black, .6) !default;
@ -107,6 +107,8 @@ $nav-tabs-link-hover-border-color: $nav-tabs-border-color !default;
$nav-tabs-link-active-color: $white !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
$nav-underline-link-active-color: $white !default;
// Navbar
$navbar-padding-y: 0 !default;

View file

@ -1,4 +1,4 @@
// Solar 5.3.3
// Solar 5.3.8
// Bootswatch

View file

@ -1,4 +1,4 @@
// Solar 5.3.3
// Solar 5.3.8
// Bootswatch
$theme: "solar" !default;
@ -63,7 +63,7 @@ $font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFo
// Tables
$table-color: $white !default;
$table-color: initial !default;
$table-accent-bg: rgba($white, .05) !default;
$table-hover-bg: rgba($white, .075) !default;
$table-border-color: $component-active-bg !default;
@ -116,6 +116,8 @@ $nav-tabs-link-active-color: $component-active-color !default;
$nav-tabs-link-active-bg: $body-bg !default;
$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
$nav-underline-link-active-color: rgba(255, 255, 255, .75) !default;
// Navbars
// Pagination

View file

@ -1,4 +1,4 @@
// Spacelab 5.3.3
// Spacelab 5.3.8
// Bootswatch
@ -93,3 +93,15 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,
color: inherit;
}
}
// Tables
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}

View file

@ -1,4 +1,4 @@
// Spacelab 5.3.3
// Spacelab 5.3.8
// Bootswatch
$theme: "spacelab" !default;
@ -55,6 +55,10 @@ $link-color: $info !default;
$font-family-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$headings-color: $gray-900 !default;
// Tables
$table-color: initial !default;
// Navbar
$navbar-light-hover-color: $info !default;

View file

@ -1,4 +1,4 @@
// Superhero 5.3.3
// Superhero 5.3.8
// Bootswatch
@ -25,6 +25,10 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&
// Typography
.text-secondary {
color: var(--bs-secondary-color) !important;
}
.dropdown-menu {
font-size: $font-size-sm;
}

View file

@ -1,4 +1,4 @@
// Superhero 5.3.3
// Superhero 5.3.8
// Bootswatch
$theme: "superhero" !default;
@ -62,7 +62,7 @@ $text-muted: rgba(255, 255, 255, .4) !default;
// Tables
$table-color: $white !default;
$table-color: initial !default;
$table-accent-bg: rgba($white, .05) !default;
$table-hover-bg: rgba($white, .075) !default;
$table-border-color: rgba($black, .15) !default;
@ -117,6 +117,8 @@ $nav-tabs-link-hover-border-color: $nav-tabs-border-color !default;
$nav-tabs-link-active-color: $body-color !default;
$nav-tabs-link-active-border-color: $gray-600 !default;
$nav-underline-link-active-color: $white !default;
// Navbar
$navbar-dark-color: rgba($white, .75) !default;

View file

@ -1,4 +1,4 @@
// United 5.3.3
// United 5.3.8
// Bootswatch
@ -16,3 +16,15 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;700&di
color: $body-color;
}
}
// Tables
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}

View file

@ -1,4 +1,4 @@
// United 5.3.3
// United 5.3.8
// Bootswatch
$theme: "united" !default;
@ -52,5 +52,5 @@ $font-family-sans-serif: Ubuntu, -apple-system, BlinkMacSystemFont, "Segoe
// Tables
$table-dark-bg: $dark !default;
$table-color: initial !default;
$table-dark-border-color: darken($dark, 5%) !default;

View file

@ -1,4 +1,4 @@
// Vapor 5.3.3
// Vapor 5.3.8
// Bootswatch
@ -224,6 +224,14 @@ table,
}
}
.nav-underline {
.nav-link {
&.active {
@include text-shadow-sm($nav-underline-link-active-color);
}
}
}
// Forms
legend {

View file

@ -1,4 +1,4 @@
// Vapor 5.3.3
// Vapor 5.3.8
// Bootswatch
$theme: "vapor" !default;
@ -72,9 +72,11 @@ $text-muted: rgba($body-color, .3) !default;
$blockquote-footer-color: $text-muted !default;
$vr-border-width: 1px !default;
// Tables
$table-color: $white !default;
$table-color: initial !default;
$table-bg-scale: 0% !default;
@ -106,6 +108,8 @@ $nav-link-disabled-color: $text-muted !default;
$nav-tabs-link-active-color: $component-active-bg !default;
$nav-underline-link-active-color: $component-active-bg !default;
// Dropdowns
$dropdown-link-hover-bg: rgba($white, .15) !default;

View file

@ -1,4 +1,4 @@
// Yeti 5.3.3
// Yeti 5.3.8
// Bootswatch
@ -221,6 +221,11 @@ table {
font-size: $font-size-sm;
}
.table-secondary,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
label,

View file

@ -1,4 +1,4 @@
// Yeti 5.3.3
// Yeti 5.3.8
// Bootswatch
$theme: "yeti" !default;
@ -55,6 +55,7 @@ $headings-font-weight: 300 !default;
// Tables
$table-color: initial !default;
$table-bg-scale: 0% !default;
// Buttons

View file

@ -1,4 +1,4 @@
// Zephyr 5.3.3
// Zephyr 5.3.8
// Bootswatch
@ -107,6 +107,16 @@ thead th {
text-transform: uppercase;
}
.table-primary,
.table-secondary,
.table-success,
.table-warning,
.table-danger,
.table-info,
.table-light {
--#{$prefix}table-color: #{$body-color};
}
// Forms
.input-group-text {

View file

@ -1,4 +1,4 @@
// Zephyr 5.3.3
// Zephyr 5.3.8
// Bootswatch
$theme: "zephyr" !default;
@ -63,6 +63,8 @@ $box-shadow-lg: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0,
// Tables
$table-color: initial !default;
$table-cell-padding-y: 1rem !default;
$table-cell-padding-x: 1rem !default;
$table-cell-padding-y-sm: .5rem !default;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long