spaxel/dashboard/css/notifications.css
jedarden 07abc03ef4 style(dashboard): complete design token migration and live view cleanup
Replace remaining hard-coded colors across all CSS files with design
tokens from tokens.css. Remove duplicate inline positioning from
live.html panels (now in layout.css). Add replay session blob fetch
for immediate 3D scene state on seek.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-24 16:39:53 -04:00

677 lines
11 KiB
CSS

/* Notification Settings Panel Styles */
.notification-settings {
max-width: 800px;
margin: 0;
padding: var(--space-5);
}
.notification-settings h2 {
margin-bottom: 30px;
color: var(--text-on-accent);
}
.settings-section {
background: var(--bg-card);
border-radius: var(--radius-card);
padding: var(--space-5);
margin-bottom: 30px;
}
.settings-section h3 {
margin-top: 0;
margin-bottom: 10px;
color: var(--blue-10);
}
.section-desc {
color: var(--text-secondary);
font-size: 0.9em;
margin-bottom: var(--space-5);
}
/* Channel Cards */
.channels-list {
display: grid;
gap: 15px;
margin-bottom: var(--space-5);
}
.channel-card {
background: var(--bg-hover);
border: 1px solid var(--slate-5);
border-radius: var(--radius-card);
padding: 15px;
}
.channel-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.channel-type {
font-weight: 600;
color: var(--ok);
text-transform: uppercase;
font-size: 0.85em;
}
.channel-actions {
display: flex;
gap: 10px;
}
.channel-details {
color: var(--text-secondary);
font-size: 0.9em;
}
.channel-url {
color: var(--text-muted);
font-family: var(--font-mono);
}
/* Buttons */
.btn {
padding: 10px var(--space-5);
border: none;
border-radius: var(--radius-control);
font-size: var(--text-sm);
cursor: pointer;
transition: all 0.2s;
display: inline-flex;
align-items: center;
gap: var(--space-2);
}
.btn-primary {
background: var(--blue-10);
color: var(--slate-1);
}
.btn-primary:hover {
background: var(--blue-10);
}
.btn-secondary {
background: var(--slate-5);
color: var(--text-on-accent);
}
.btn-secondary:hover {
background: var(--slate-6);
}
.btn-icon {
background: none;
border: none;
font-size: var(--text-xl);
cursor: pointer;
padding: 5px;
opacity: 0.7;
transition: opacity 0.2s;
}
.btn-icon:hover {
opacity: 1;
}
/* Quiet Hours Configuration */
.quiet-hours-config {
display: flex;
flex-direction: column;
gap: var(--space-5);
}
.checkbox-label {
display: flex;
align-items: center;
gap: 10px;
color: var(--text-on-accent);
cursor: pointer;
}
.checkbox-label input[type="checkbox"] {
width: 18px;
height: 18px;
cursor: pointer;
}
.time-range {
display: flex;
gap: var(--space-5);
}
.time-field {
display: flex;
flex-direction: column;
gap: 5px;
}
.time-field label {
color: var(--text-secondary);
font-size: 0.9em;
}
.time-field input {
padding: var(--space-2) var(--space-3);
background: var(--bg-hover);
border: 1px solid var(--slate-5);
border-radius: var(--radius-control);
color: var(--text-on-accent);
font-size: var(--text-sm);
}
.days-selector {
display: flex;
flex-direction: column;
gap: 10px;
}
.day-checkbox {
display: flex;
gap: 15px;
}
.day-checkbox-label {
display: flex;
align-items: center;
gap: 5px;
color: var(--text-on-accent);
cursor: pointer;
font-size: 0.9em;
}
.day-checkbox-input {
width: 16px;
height: 16px;
cursor: pointer;
}
/* Batching Configuration */
.batching-config {
display: flex;
flex-direction: column;
gap: 15px;
}
.batch-window,
.max-batch-size {
display: flex;
flex-direction: column;
gap: 5px;
}
.batch-window label,
.max-batch-size label {
color: var(--text-secondary);
font-size: 0.9em;
}
.batch-window input,
.max-batch-size input {
padding: var(--space-2) var(--space-3);
background: var(--bg-hover);
border: 1px solid var(--slate-5);
border-radius: var(--radius-control);
color: var(--text-on-accent);
font-size: var(--text-sm);
max-width: 150px;
}
/* Event Type Toggles */
.event-types {
display: flex;
flex-direction: column;
gap: var(--space-3);
}
.event-type-toggle {
display: flex;
align-items: center;
gap: 15px;
padding: 10px;
background: var(--bg-hover);
border-radius: var(--radius-control);
}
.event-type-info {
display: flex;
flex-direction: column;
}
.event-type-label {
color: var(--text-on-accent);
font-weight: 500;
}
.event-type-desc {
color: var(--text-muted);
font-size: 0.85em;
}
/* Toggle Switch */
.toggle-switch {
position: relative;
display: inline-block;
width: 44px;
height: 24px;
}
.toggle-switch input {
opacity: 0;
width: 0;
height: 0;
}
.toggle-slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: var(--slate-5);
transition: 0.3s;
border-radius: var(--radius-modal);
}
.toggle-slider:before {
position: absolute;
content: "";
height: 18px;
width: 18px;
left: 3px;
bottom: 3px;
background-color: var(--text-on-accent);
transition: 0.3s;
border-radius: 50%;
}
.toggle-switch input:checked + .toggle-slider {
background-color: var(--blue-10);
}
.toggle-switch input:checked + .toggle-slider:before {
transform: translateX(20px);
}
/* Modal */
.modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--overlay-strong);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
}
.modal.hidden {
display: none;
}
.modal-content {
background: var(--bg-card);
border-radius: var(--radius-card);
width: 90%;
max-width: 500px;
max-height: 90vh;
overflow-y: auto;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: var(--space-5);
border-bottom: 1px solid var(--slate-5);
}
.modal-header h3 {
margin: 0;
color: var(--text-on-accent);
}
.close-modal {
background: none;
border: none;
color: var(--text-muted);
font-size: var(--text-3xl);
cursor: pointer;
padding: 5px;
line-height: 1;
}
.close-modal:hover {
color: var(--text-on-accent);
}
.modal-body {
padding: var(--space-5);
}
/* Form Styles */
.form-group {
margin-bottom: var(--space-5);
}
.form-group label {
display: block;
color: var(--text-secondary);
font-size: 0.9em;
margin-bottom: var(--space-2);
}
.form-group input,
.form-group select {
width: 100%;
padding: 10px var(--space-3);
background: var(--bg-hover);
border: 1px solid var(--slate-5);
border-radius: var(--radius-control);
color: var(--text-on-accent);
font-size: var(--text-sm);
box-sizing: border-box;
}
.auth-fields {
display: flex;
gap: 10px;
}
.auth-fields input {
flex: 1;
}
.event-types-selector {
margin-top: var(--space-5);
}
.event-types-selector label {
display: block;
color: var(--text-secondary);
font-size: 0.9em;
margin-bottom: 10px;
}
#modal-event-types {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.form-actions {
display: flex;
gap: 10px;
justify-content: flex-end;
margin-top: var(--space-5);
}
/* Toast Notifications */
.toast {
position: fixed;
bottom: 20px;
right: 20px;
padding: 15px var(--space-5);
border-radius: var(--radius-card);
color: var(--text-on-accent);
font-size: var(--text-sm);
z-index: 2000;
animation: slideIn 0.3s ease-out;
}
.toast-success {
background: var(--ok);
}
.toast-error {
background: var(--alert);
}
.toast-hiding {
animation: fadeOut 0.3s ease-out forwards;
}
@keyframes slideIn {
from {
transform: translateX(100%);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
@keyframes fadeOut {
to {
opacity: 0;
}
}
/* Empty State */
.empty-state {
text-align: center;
color: var(--text-muted);
padding: var(--space-10) var(--space-5);
font-style: italic;
}
/* Responsive Design */
@media (max-width: 600px) {
.notification-settings {
padding: 15px;
}
.settings-section {
padding: 15px;
}
.time-range {
flex-direction: column;
gap: 10px;
}
.channels-list {
grid-template-columns: 1fr;
}
.modal-content {
width: 95%;
}
#modal-event-types {
grid-template-columns: 1fr;
}
}
/* Settings Tabs */
.settings-tabs {
display: flex;
gap: var(--space-1);
margin-bottom: var(--space-5);
border-bottom: 1px solid var(--slate-5);
}
.settings-tab {
flex: 1;
padding: var(--space-3) var(--space-4);
background: transparent;
border: none;
color: var(--text-muted);
font-size: var(--text-sm);
cursor: pointer;
transition: all 0.2s;
border-bottom: 2px solid transparent;
}
.settings-tab:hover {
color: var(--text-on-accent);
background: var(--border-subtle);
}
.settings-tab.active {
color: var(--blue-10);
border-bottom-color: var(--blue-10);
}
/* Panel-specific notification settings styles */
.panel-select {
width: 100%;
padding: 10px var(--space-3);
background: var(--bg-hover);
border: 1px solid var(--slate-5);
border-radius: var(--radius-control);
color: var(--text-on-accent);
font-size: var(--text-sm);
}
.panel-input {
width: 100%;
padding: 10px var(--space-3);
background: var(--bg-hover);
border: 1px solid var(--slate-5);
border-radius: var(--radius-control);
color: var(--text-on-accent);
font-size: var(--text-sm);
box-sizing: border-box;
}
.panel-input:focus,
.panel-select:focus {
outline: none;
border-color: var(--blue-10);
}
.channel-config-group {
margin-bottom: var(--space-5);
padding: 15px;
background: var(--bg-hover);
border-radius: var(--radius-control);
}
.panel-time-range {
display: flex;
gap: var(--space-5);
}
.panel-time-field {
flex: 1;
}
.panel-time-field label {
display: block;
color: var(--text-secondary);
font-size: 0.9em;
margin-bottom: var(--space-2);
}
.panel-days-selector {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 10px;
}
.panel-day-checkbox {
display: flex;
align-items: center;
gap: 5px;
color: var(--text-on-accent);
cursor: pointer;
font-size: 0.9em;
}
.panel-day-checkbox input {
width: 16px;
height: 16px;
cursor: pointer;
}
.panel-event-type-toggle {
display: flex;
align-items: center;
gap: 15px;
padding: 10px;
background: var(--bg-hover);
border-radius: var(--radius-control);
}
.panel-event-type-info {
display: flex;
flex-direction: column;
}
.panel-event-type-label {
color: var(--text-on-accent);
font-weight: 500;
}
.panel-event-type-desc {
color: var(--text-muted);
font-size: 0.85em;
}
.panel-toggle-switch {
position: relative;
display: inline-block;
width: 44px;
height: 24px;
}
.panel-toggle-switch input {
opacity: 0;
width: 0;
height: 0;
}
.panel-toggle-slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: var(--slate-5);
transition: 0.3s;
border-radius: var(--radius-modal);
}
.panel-toggle-slider:before {
position: absolute;
content: "";
height: 18px;
width: 18px;
left: 3px;
bottom: 3px;
background-color: var(--text-on-accent);
transition: 0.3s;
border-radius: 50%;
}
.panel-toggle-switch input:checked + .panel-toggle-slider {
background-color: var(--blue-10);
}
.panel-toggle-switch input:checked + .panel-toggle-slider:before {
transform: translateX(20px);
}
.panel-form-hint {
color: var(--text-muted);
font-size: 0.85em;
margin-top: -8px;
margin-bottom: var(--space-3);
}
.event-type-toggles {
display: flex;
flex-direction: column;
gap: var(--space-2);
}