audiobookshelf/client/assets/theme.css

345 lines
8.9 KiB
CSS

:root,
:root.dark {
/* Main backgrounds - from your existing design */
--color-bg: #373838; /* From tailwind.css --color-bg */
--color-primary: #232323; /* From tailwind.css --color-primary */
--color-fg: #2e2e2e; /* From your existing even rows */
/* Gradient backgrounds - from your bookshelf design */
--gradient-bookshelf: linear-gradient(to right bottom, #2e2e2e, #303030, #313131, #333333, #353535, #343434, #323232, #313131, #2c2c2c, #282828, #232323, #1f1f1f);
/* Text colors */
--color-text: #ffffff;
--color-text-muted: #bbbbbb; /* From --color-black-50 */
--color-text-dim: #666666; /* From --color-black-100 */
/* Border colors - from your existing table styles */
--color-border: #474747; /* From tracksTable border */
--color-border-light: #555555; /* From --color-black-200 */
/* Interactive colors */
--color-hover: #474747; /* From tracksTable hover */
--color-accent: #1ad691; /* From tailwind.css --color-accent */
--color-success: #4caf50; /* From tailwind.css --color-success */
--color-darkgreen: rgb(34, 127, 35); /* From tailwind.css --color-darkgreen */
/* Status colors */
--color-warning: #fb8c00; /* From tailwind.css --color-warning */
--color-error: #ff5252; /* From tailwind.css --color-error */
--color-info: #2196f3; /* From tailwind.css --color-info */
/* Scrollbar colors - from your existing design */
--scrollbar-thumb: #855620;
--scrollbar-thumb-hover: #704922;
/* Shadow colors */
--color-shadow-light: rgba(17, 17, 17, 0.4); /* #111111aa */
--color-shadow-medium: rgba(17, 17, 17, 0.6); /* #111111ee */
--color-shadow-heavy: rgba(17, 17, 17, 0.8);
/* Bookshelf specific - keep your existing design */
--bookshelf-texture-img: url(~static/textures/wood_default.jpg);
--bookshelf-divider-bg: linear-gradient(180deg, rgba(149, 119, 90, 1) 0%, rgba(103, 70, 37, 1) 17%, rgba(103, 70, 37, 1) 88%, rgba(71, 48, 25, 1) 100%);
/* Special effects */
--shimmer-bg: linear-gradient(315deg, #19191a 0%, rgb(15, 15, 15) 74%);
--gold-border: rgba(255, 244, 182, 0.6);
--gold-text: #fce3a6;
--table-border: #474747;
--table-header-bg: #272727;
--table-row-bg: #373838;
--table-row-alt-bg: #2f2f2f;
--table-row-hover-bg: #474747;
--table-text-color: #e0e0e0;
}
/* Light theme */
:root.light {
/* Main backgrounds - lighter equivalents */
--color-bg: #f8f9fa;
--color-primary: #ffffff;
--color-fg: #f1f3f4;
/* Gradient backgrounds - light version */
--gradient-bookshelf: linear-gradient(to right bottom, #f8f9fa, #f1f3f4, #e9ecef, #dee2e6, #ced4da, #adb5bd, #868e96, #6c757d, #495057, #343a40, #212529, #000000);
/* Text colors */
--color-text: #212529;
--color-text-muted: #495057;
--color-text-dim: #868e96;
/* Border colors */
--color-border: #dee2e6;
--color-border-light: #e9ecef;
/* Interactive colors */
--color-hover: #e9ecef;
--color-accent: #20c997; /* Slightly adjusted for light mode */
--color-success: #198754;
--color-darkgreen: rgb(25, 135, 84);
/* Status colors - adjusted for light mode */
--color-warning: #fd7e14;
--color-error: #dc3545;
--color-info: #0d6efd;
/* Scrollbar colors */
--scrollbar-thumb: #adb5bd;
--scrollbar-thumb-hover: #868e96;
/* Shadow colors */
--color-shadow-light: rgba(0, 0, 0, 0.1);
--color-shadow-medium: rgba(0, 0, 0, 0.2);
--color-shadow-heavy: rgba(0, 0, 0, 0.3);
/* Bookshelf specific - lighter wood texture */
--bookshelf-texture-img: url(~static/textures/wood_default.jpg);
--bookshelf-divider-bg: linear-gradient(180deg, rgba(200, 170, 140, 1) 0%, rgba(180, 150, 120, 1) 17%, rgba(180, 150, 120, 1) 88%, rgba(160, 130, 100, 1) 100%);
/* Special effects */
--shimmer-bg: linear-gradient(315deg, #f8f9fa 0%, #e9ecef 74%);
--gold-border: rgba(133, 86, 32, 0.6);
--gold-text: #855620;
--table-border: #ccc;
--table-header-bg: #f0f0f0;
--table-row-bg: #ffffff;
--table-row-alt-bg: #f9f9f9;
--table-row-hover-bg: #e6e6e6;
--table-text-color: #333;
}
/* Smooth transitions for theme changes */
* {
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, fill 0.3s ease;
}
body {
color: var(--color-text);
}
.userSessionsTable {
color: var(--table-text-color);
}
/* Update common classes to use CSS variables */
.bg-bg {
background-color: var(--color-bg) !important;
}
.bg-primary {
background-color: var(--color-primary) !important;
}
.bg-fg {
background-color: var(--color-fg) !important;
}
.text-white,
.text-themed {
color: var(--color-text) !important;
}
.text-gray-100 {
color: var(--color-text-muted) !important;
}
.text-gray-200 {
color: var(--color-text-muted) !important;
}
.text-gray-300 {
color: var(--color-text-muted) !important;
}
.text-gray-400 {
color: var(--color-text-dim) !important;
}
.border-gray-500 {
border-color: var(--color-border) !important;
}
.shadow-xs {
box-shadow: 0 1px 2px var(--color-shadow) !important;
}
/* Ensure SVG icons also use theme colors */
svg {
color: var(--color-text);
fill: currentColor;
}
/* Material symbols and icons */
.material-symbols,
.material-icons {
color: var(--color-text) !important;
}
.tooltip-content,
.ui-tooltip-content {
background-color: var(--color-primary) !important;
color: var(--color-text) !important;
border: 1px solid var(--color-border) !important;
}
/* For Popper.js or similar tooltip libraries */
.popper,
.tippy-box {
background-color: var(--color-primary) !important;
color: var(--color-text) !important;
border: 1px solid var(--color-border) !important;
}
.tippy-arrow {
color: var(--color-primary) !important;
}
/* Ensure text is readable */
.ui-tooltip *,
.tooltip * {
color: var(--color-text) !important;
}
/* More specific overrides for common tooltip libraries */
[data-tippy-root] {
--tippy-color: var(--color-text) !important;
--tippy-bg: var(--color-primary) !important;
}
/* Vue/Nuxt specific tooltip classes */
.v-tooltip-content {
background: var(--color-primary) !important;
color: var(--color-text) !important;
border: 1px solid var(--color-border) !important;
}
/* Override any hardcoded dark/light theme classes */
.tooltip-dark,
.tooltip-light {
background-color: var(--color-primary) !important;
color: var(--color-text) !important;
border-color: var(--color-border) !important;
}
/* Force override for stubborn tooltips */
[class*="tooltip"],
[class*="popover"] {
background-color: var(--color-primary) !important;
color: var(--color-text) !important;
border-color: var(--color-border) !important;
}
/* READERS */
/* PDF Reader dark mode */
.pdf-reader-container {
background-color: var(--color-primary);
color: var(--color-text);
}
/* Ensure proper contrast for controls */
.pdf-reader-container .material-symbols {
color: var(--color-text);
}
/* Make sure the viewer area has proper background */
.pdf-reader-container .pdf-viewer {
background-color: var(--color-primary);
}
/* Modal specific overrides */
.modal-content {
background-color: var(--color-fg) !important;
color: var(--color-text) !important;
}
/* Input fields - general styling that works for both themes */
input,
textarea,
select {
background-color: var(--color-primary);
color: var(--color-text);
border-color: var(--color-border-light);
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
/* Input focus states */
input:focus,
textarea:focus,
select:focus {
border-color: var(--color-accent);
outline: none;
box-shadow: 0 0 0 2px rgba(var(--color-accent), 0.2);
}
/* Button styling - general that works for both themes */
.ui-btn,
button {
background-color: var(--color-primary);
color: var(--color-text);
border-color: var(--color-border-light);
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
/* Button hover states */
.ui-btn:hover,
button:hover {
background-color: var(--color-hover);
}
/* Tab styling */
.tab {
background-color: var(--color-primary);
color: var(--color-text);
border-color: var(--color-border);
transition: background-color 0.3s ease;
}
/* Tab hover states */
.tab:hover {
background-color: var(--color-hover);
}
/* Tab active states */
.tab.active,
.tab[aria-selected="true"] {
background-color: var(--color-fg);
border-color: var(--color-accent);
}
/* Dropdown menus */
.dropdown-menu,
select option {
background-color: var(--color-primary);
color: var(--color-text);
border-color: var(--color-border);
}
/* Form validation states */
input.error,
textarea.error {
border-color: var(--color-error);
}
input.success,
textarea.success {
border-color: var(--color-success);
}
/* Placeholder text */
input::placeholder,
textarea::placeholder {
color: var(--color-text-dim);
}
/* Disabled states */
input:disabled,
textarea:disabled,
select:disabled,
button:disabled,
.ui-btn:disabled {
background-color: var(--color-fg);
color: var(--color-text-dim);
border-color: var(--color-border);
opacity: 0.6;
cursor: not-allowed;
}