250 lines
5.3 KiB
CSS
250 lines
5.3 KiB
CSS
/*
|
|
* Dark theme of the admin portal.
|
|
*
|
|
* The file is linked only from the admin portal (src/components/admin_portal.rs) and switched
|
|
* on and off with the media attribute of the link, so the rules are not scoped by any class.
|
|
* It overrides colours of the vendor template for the components the admin portal uses.
|
|
******************************************************************************/
|
|
|
|
:root {
|
|
color-scheme: dark;
|
|
|
|
--dark-bg: #232333;
|
|
--dark-card: #2b2c40;
|
|
--dark-text: #a3a4cc;
|
|
--dark-heading: #cbcbe2;
|
|
--dark-muted: #7071a4;
|
|
--dark-border: #444564;
|
|
--dark-hover: rgba(255, 255, 255, 0.06);
|
|
|
|
--bs-body-bg: var(--dark-bg);
|
|
--bs-body-bg-rgb: 35, 35, 51;
|
|
--bs-body-color: var(--dark-text);
|
|
--bs-body-color-rgb: 163, 164, 204;
|
|
}
|
|
|
|
/* Typography */
|
|
|
|
h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6 {
|
|
color: var(--dark-heading);
|
|
}
|
|
|
|
hr {
|
|
color: var(--dark-border);
|
|
}
|
|
|
|
.text-muted {
|
|
color: var(--dark-muted) !important;
|
|
}
|
|
|
|
/* Layout: side menu, navbar, footer */
|
|
|
|
.bg-menu-theme,
|
|
.bg-navbar-theme {
|
|
background-color: var(--dark-card) !important;
|
|
color: var(--dark-text);
|
|
}
|
|
|
|
.bg-footer-theme {
|
|
background-color: var(--dark-bg) !important;
|
|
color: var(--dark-text);
|
|
}
|
|
|
|
.bg-menu-theme .menu-link,
|
|
.bg-menu-theme .menu-horizontal-prev,
|
|
.bg-menu-theme .menu-horizontal-next,
|
|
.bg-navbar-theme .navbar-nav > .nav-link,
|
|
.bg-navbar-theme .navbar-nav > .nav-item > .nav-link,
|
|
.bg-navbar-theme .navbar-nav > .nav > .nav-item > .nav-link {
|
|
color: var(--dark-text);
|
|
}
|
|
|
|
.bg-menu-theme .menu-link:hover,
|
|
.bg-menu-theme .menu-link:focus,
|
|
.bg-navbar-theme .navbar-nav > .nav-link:hover,
|
|
.bg-navbar-theme .navbar-nav > .nav-item > .nav-link:hover,
|
|
.bg-navbar-theme .navbar-nav > .nav-item > .nav-link:focus {
|
|
color: var(--dark-heading);
|
|
}
|
|
|
|
.bg-menu-theme .menu-inner > .menu-item:not(.active) > .menu-link:hover {
|
|
background-color: var(--dark-hover);
|
|
}
|
|
|
|
.layout-navbar,
|
|
.layout-navbar h4 {
|
|
color: var(--dark-heading);
|
|
}
|
|
|
|
.layout-menu,
|
|
.layout-navbar.navbar-detached {
|
|
box-shadow: 0 0 0.375rem 0.25rem rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.layout-overlay {
|
|
background: #000;
|
|
}
|
|
|
|
/* Year and month bar on the booking overview */
|
|
|
|
.filter-bar.bg-light {
|
|
background-color: var(--dark-card) !important;
|
|
border-radius: 0.5rem;
|
|
}
|
|
|
|
.filter-bar .nav-link {
|
|
color: var(--dark-text);
|
|
}
|
|
|
|
/* Cards */
|
|
|
|
.card {
|
|
background-color: var(--dark-card);
|
|
border-color: var(--dark-border);
|
|
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.card-link.disabled,
|
|
a.disabled {
|
|
color: var(--dark-border);
|
|
}
|
|
|
|
/* Tables */
|
|
|
|
.table {
|
|
--bs-table-striped-color: var(--dark-text);
|
|
--bs-table-striped-bg: rgba(255, 255, 255, 0.03);
|
|
--bs-table-active-color: var(--dark-text);
|
|
--bs-table-active-bg: rgba(255, 255, 255, 0.08);
|
|
--bs-table-hover-color: var(--dark-text);
|
|
--bs-table-hover-bg: var(--dark-hover);
|
|
color: var(--dark-text);
|
|
border-color: var(--dark-border);
|
|
}
|
|
|
|
.table:not(.table-dark) th {
|
|
color: var(--dark-heading);
|
|
}
|
|
|
|
.table > :not(:first-child) {
|
|
border-top-color: var(--dark-border);
|
|
}
|
|
|
|
/* Forms */
|
|
|
|
.form-label,
|
|
.col-form-label,
|
|
.form-check-label {
|
|
color: var(--dark-heading);
|
|
}
|
|
|
|
.form-control,
|
|
.form-select,
|
|
.input-group-text {
|
|
color: var(--dark-heading);
|
|
background-color: var(--dark-card);
|
|
border-color: var(--dark-border);
|
|
}
|
|
|
|
.form-control::placeholder {
|
|
color: var(--dark-muted);
|
|
}
|
|
|
|
.form-control:focus,
|
|
.form-select:focus {
|
|
color: var(--dark-heading);
|
|
background-color: var(--dark-card);
|
|
border-color: #696cff;
|
|
}
|
|
|
|
.form-control:disabled,
|
|
.form-control[readonly],
|
|
.form-select:disabled {
|
|
background-color: var(--dark-bg);
|
|
}
|
|
|
|
.form-control[type="file"]::file-selector-button {
|
|
color: var(--dark-heading);
|
|
background-color: var(--dark-bg);
|
|
}
|
|
|
|
.form-control[type="file"]:hover:not(:disabled):not([readonly])::file-selector-button {
|
|
background-color: var(--dark-border);
|
|
}
|
|
|
|
.form-select {
|
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23a3a4cc' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
|
|
}
|
|
|
|
.form-check-input:not(:checked) {
|
|
background-color: var(--dark-card);
|
|
border-color: var(--dark-border);
|
|
}
|
|
|
|
/* Buttons */
|
|
|
|
.btn-outline-secondary {
|
|
color: var(--dark-text);
|
|
border-color: var(--dark-muted);
|
|
}
|
|
|
|
.btn-outline-secondary:hover {
|
|
color: var(--dark-heading);
|
|
background-color: var(--dark-hover);
|
|
border-color: var(--dark-text);
|
|
}
|
|
|
|
.btn.p-0,
|
|
.btn:not([class*="btn-"]) {
|
|
color: var(--dark-text);
|
|
}
|
|
|
|
/* Dropdown menus */
|
|
|
|
.dropdown-menu {
|
|
color: var(--dark-text);
|
|
background-color: var(--dark-card);
|
|
border-color: var(--dark-border);
|
|
box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
.dropdown-item {
|
|
color: var(--dark-text);
|
|
}
|
|
|
|
.dropdown-item:hover,
|
|
.dropdown-item:focus {
|
|
color: var(--dark-heading);
|
|
background-color: var(--dark-hover);
|
|
}
|
|
|
|
.dropdown-divider {
|
|
border-top-color: var(--dark-border);
|
|
}
|
|
|
|
/* Dialogs */
|
|
|
|
.modal-content {
|
|
background-color: var(--dark-card);
|
|
box-shadow: 0 0.25rem 1.5rem rgba(0, 0, 0, 0.5);
|
|
}
|
|
|
|
.modal .btn-close {
|
|
background-color: var(--dark-border);
|
|
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
/* Alerts */
|
|
|
|
.alert-danger {
|
|
background-color: #55303a;
|
|
border-color: #6b3540;
|
|
color: #ff8a75;
|
|
}
|
|
|
|
/* Public booking form embedded in the "Create booking" dialog */
|
|
|
|
.leptos-captcha {
|
|
color: var(--dark-text);
|
|
}
|