Initial commit: Lagerbestand Blazor Projekt
This commit is contained in:
commit
cba9414e92
105 files changed
+36431
No files matched your search
@@ -0,0 +1,953 @@
|
||||
/* ========================================
|
||||
Status Page - Scoped Component Styles
|
||||
========================================
|
||||
Inherits from app.css:
|
||||
- .access-denied, .empty-icon, .access-denied-icon (section 19)
|
||||
- .alert, .alert-danger/success/warning (section 7)
|
||||
- .form-control, .form-select, .form-label (section 4)
|
||||
- .btn, .btn-primary/secondary/danger, .btn-sm, .btn-close (section 5)
|
||||
- .spinner-border, @keyframes spin (section 11)
|
||||
- Reduced motion (section 17)
|
||||
Only page-specific additions and overrides below.
|
||||
======================================== */
|
||||
|
||||
/* ========================================
|
||||
Page Container
|
||||
======================================== */
|
||||
.status-container {
|
||||
padding: var(--space-6) var(--space-page-x);
|
||||
max-width: 1600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.status-container {
|
||||
padding: var(--space-8) var(--space-12);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1440px) {
|
||||
.status-container {
|
||||
padding: var(--space-10) 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Header
|
||||
======================================== */
|
||||
.status-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: var(--space-8);
|
||||
gap: var(--space-6);
|
||||
}
|
||||
|
||||
.header-content h1 {
|
||||
margin: 0 0 var(--space-2) 0;
|
||||
font-size: clamp(1.5rem, 3vw, 2rem);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--font-family-heading);
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
.header-subtitle {
|
||||
margin: 0;
|
||||
color: var(--text-tertiary);
|
||||
font-size: var(--text-base);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Status Grid
|
||||
======================================== */
|
||||
.status-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
|
||||
gap: var(--space-5);
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.status-grid {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: var(--space-6);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1600px) {
|
||||
.status-grid {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: var(--space-8);
|
||||
}
|
||||
}
|
||||
|
||||
.status-card {
|
||||
background: var(--surface-elevated);
|
||||
border: 0.5px solid var(--border-default);
|
||||
border-radius: var(--radius-xl);
|
||||
overflow: hidden;
|
||||
transition: all var(--duration-fast) var(--ease-out);
|
||||
box-shadow: var(--shadow-md);
|
||||
}
|
||||
|
||||
.status-card:hover {
|
||||
transform: translateY(-3px);
|
||||
border-color: rgba(220, 38, 38, 0.4);
|
||||
box-shadow: var(--shadow-xl);
|
||||
}
|
||||
|
||||
.status-card-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: var(--space-5) var(--space-6);
|
||||
background: rgba(0, 0, 0, 0.25);
|
||||
border-bottom: 0.5px solid var(--border-light);
|
||||
}
|
||||
|
||||
.card-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-3);
|
||||
}
|
||||
|
||||
.card-title svg {
|
||||
color: var(--color-primary-light);
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.card-title h3 {
|
||||
margin: 0;
|
||||
font-size: var(--text-sm);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--font-family-base);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Status Badges
|
||||
======================================== */
|
||||
.status-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
padding: var(--space-1) var(--space-3);
|
||||
border-radius: var(--radius-full);
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
.status-badge.status-ok {
|
||||
background: rgba(34, 197, 94, 0.15);
|
||||
color: var(--color-success-light);
|
||||
}
|
||||
|
||||
.status-badge.status-error {
|
||||
background: rgba(220, 38, 38, 0.15);
|
||||
color: var(--color-error-light);
|
||||
}
|
||||
|
||||
.status-badge.status-warning {
|
||||
background: rgba(234, 179, 8, 0.15);
|
||||
color: var(--color-warning-light);
|
||||
}
|
||||
|
||||
.status-dot {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
border-radius: 50%;
|
||||
background: currentColor;
|
||||
animation: pulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.4; }
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Card Body & Status Items
|
||||
======================================== */
|
||||
.status-card-body {
|
||||
padding: var(--space-4) var(--space-6) var(--space-5);
|
||||
}
|
||||
|
||||
.status-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: var(--space-3) 0;
|
||||
border-bottom: 0.5px solid var(--border-light);
|
||||
}
|
||||
|
||||
.status-item:last-child {
|
||||
border-bottom: none;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.status-item .label {
|
||||
color: var(--text-tertiary);
|
||||
font-size: var(--text-sm);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
.status-item .value {
|
||||
color: var(--text-primary);
|
||||
font-weight: var(--font-weight-medium);
|
||||
font-size: var(--text-sm);
|
||||
text-align: right;
|
||||
max-width: 55%;
|
||||
word-break: break-all;
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
.status-item .value.mono {
|
||||
font-family: 'SF Mono', 'Consolas', monospace;
|
||||
font-size: var(--text-xs);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.status-item .value.small {
|
||||
font-size: var(--text-xs);
|
||||
}
|
||||
|
||||
.status-item .value.highlight {
|
||||
color: var(--color-error-light);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
}
|
||||
|
||||
.status-item .value.text-success {
|
||||
color: var(--color-success-light);
|
||||
}
|
||||
|
||||
.status-item .value.text-danger {
|
||||
color: var(--color-error-light);
|
||||
}
|
||||
|
||||
.status-item .value .text-success {
|
||||
color: var(--color-success-light);
|
||||
}
|
||||
|
||||
.status-item .value .text-danger {
|
||||
color: var(--color-error-light);
|
||||
}
|
||||
|
||||
.status-item .value .text-muted {
|
||||
color: var(--text-placeholder);
|
||||
}
|
||||
|
||||
.status-divider {
|
||||
height: 1px;
|
||||
background: var(--border-light);
|
||||
margin: var(--space-1) 0;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Environment & Role Badges
|
||||
======================================== */
|
||||
.env-badge {
|
||||
padding: var(--space-1) var(--space-3);
|
||||
border-radius: var(--radius-full);
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
text-transform: uppercase;
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
.env-badge.dev {
|
||||
background: rgba(59, 130, 246, 0.15);
|
||||
color: var(--color-info);
|
||||
}
|
||||
|
||||
.env-badge.prod {
|
||||
background: rgba(34, 197, 94, 0.15);
|
||||
color: var(--color-success-light);
|
||||
}
|
||||
|
||||
.role-badge {
|
||||
padding: var(--space-1) var(--space-3);
|
||||
border-radius: var(--radius-full);
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
background: rgba(220, 38, 38, 0.15);
|
||||
color: var(--color-error-light);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Stats Grid
|
||||
======================================== */
|
||||
.stats-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: var(--space-3);
|
||||
text-align: center;
|
||||
margin-bottom: var(--space-4);
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
padding: var(--space-5) var(--space-3);
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
border-radius: var(--radius-lg);
|
||||
border: 0.5px solid var(--border-light);
|
||||
transition: all var(--duration-fast) var(--ease-default);
|
||||
}
|
||||
|
||||
.stat-item:hover {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
border-color: rgba(220, 38, 38, 0.2);
|
||||
}
|
||||
|
||||
.stat-value {
|
||||
display: block;
|
||||
font-size: clamp(1.5rem, 3vw, 2rem);
|
||||
font-weight: var(--font-weight-bold);
|
||||
color: var(--color-error-light);
|
||||
font-family: var(--font-family-heading);
|
||||
line-height: var(--line-height-tight);
|
||||
}
|
||||
|
||||
.stat-label {
|
||||
display: block;
|
||||
font-size: var(--text-xs);
|
||||
color: var(--text-tertiary);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
margin-top: var(--space-2);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
/* Stats Detail */
|
||||
.stats-detail {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--space-3);
|
||||
padding-top: var(--space-4);
|
||||
border-top: 0.5px solid var(--border-light);
|
||||
}
|
||||
|
||||
.stats-detail-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-sm);
|
||||
}
|
||||
|
||||
.stats-detail-item .label {
|
||||
color: var(--text-tertiary);
|
||||
}
|
||||
|
||||
.stats-detail-item .value {
|
||||
color: var(--text-primary);
|
||||
font-weight: var(--font-weight-medium);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Quick Actions
|
||||
======================================== */
|
||||
.quick-actions {
|
||||
margin-top: var(--space-10);
|
||||
padding-top: var(--space-8);
|
||||
border-top: 0.5px solid var(--border-light);
|
||||
}
|
||||
|
||||
.quick-actions h3 {
|
||||
margin: 0 0 var(--space-5) 0;
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-base);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
color: var(--text-secondary);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
|
||||
.actions-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
||||
gap: var(--space-4);
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.actions-grid {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
.action-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-3);
|
||||
padding: var(--space-5) var(--space-6);
|
||||
background: var(--surface-elevated);
|
||||
border: 0.5px solid var(--border-default);
|
||||
border-radius: var(--radius-xl);
|
||||
color: var(--text-secondary);
|
||||
font-family: var(--font-family-base);
|
||||
font-weight: var(--font-weight-medium);
|
||||
font-size: var(--text-base);
|
||||
cursor: pointer;
|
||||
transition: all var(--duration-fast) var(--ease-out);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.action-btn:hover {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-color: rgba(220, 38, 38, 0.4);
|
||||
color: var(--text-primary);
|
||||
text-decoration: none;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: var(--shadow-lg);
|
||||
}
|
||||
|
||||
.action-btn:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.action-btn:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.action-btn svg {
|
||||
color: var(--color-primary-light);
|
||||
flex-shrink: 0;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
}
|
||||
|
||||
/* Action Message */
|
||||
.action-message {
|
||||
margin-top: var(--space-6);
|
||||
padding: var(--space-4) var(--space-5);
|
||||
border-radius: var(--radius-lg);
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-base);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.action-message.success {
|
||||
background: rgba(34, 197, 94, 0.12);
|
||||
border: 0.5px solid rgba(34, 197, 94, 0.25);
|
||||
color: var(--color-success-light);
|
||||
}
|
||||
|
||||
.action-message.error {
|
||||
background: rgba(220, 38, 38, 0.12);
|
||||
border: 0.5px solid rgba(220, 38, 38, 0.25);
|
||||
color: var(--color-error-light);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Loading & Auth States
|
||||
======================================== */
|
||||
.loading-state {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: var(--space-12) var(--space-8);
|
||||
color: var(--text-tertiary);
|
||||
}
|
||||
|
||||
.loading-state .spinner-border {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
margin-bottom: var(--space-6);
|
||||
color: var(--color-primary-light);
|
||||
}
|
||||
|
||||
.auth-required {
|
||||
text-align: center;
|
||||
padding: var(--space-10) var(--space-8);
|
||||
background: var(--surface-elevated);
|
||||
border: 0.5px solid var(--border-default);
|
||||
border-radius: var(--radius-2xl);
|
||||
max-width: 420px;
|
||||
margin: var(--space-12) auto;
|
||||
}
|
||||
|
||||
.auth-icon {
|
||||
font-size: 3rem;
|
||||
margin-bottom: var(--space-5);
|
||||
}
|
||||
|
||||
.auth-required h2 {
|
||||
margin: 0 0 var(--space-3) 0;
|
||||
color: var(--text-primary);
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-2xl);
|
||||
}
|
||||
|
||||
.auth-required p {
|
||||
color: var(--text-tertiary);
|
||||
margin-bottom: var(--space-8);
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-base);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Footer
|
||||
======================================== */
|
||||
.status-footer {
|
||||
text-align: center;
|
||||
margin-top: var(--space-10);
|
||||
padding-top: var(--space-6);
|
||||
border-top: 0.5px solid var(--border-light);
|
||||
}
|
||||
|
||||
.status-footer p {
|
||||
margin: 0;
|
||||
color: var(--text-placeholder);
|
||||
font-size: var(--text-sm);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Responsive - Mobile
|
||||
======================================== */
|
||||
@media (max-width: 768px) {
|
||||
.status-container {
|
||||
padding: var(--space-4) var(--space-3);
|
||||
padding-bottom: calc(var(--space-4) + var(--safe-area-bottom));
|
||||
}
|
||||
|
||||
.status-header {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
gap: var(--space-4);
|
||||
}
|
||||
|
||||
.status-header .btn {
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.status-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.status-card {
|
||||
border-radius: var(--radius-xl);
|
||||
}
|
||||
|
||||
.status-card-header {
|
||||
padding: var(--space-4);
|
||||
}
|
||||
|
||||
.status-card-body {
|
||||
padding: var(--space-4);
|
||||
}
|
||||
|
||||
.status-item {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: var(--space-1);
|
||||
padding: var(--space-3) 0;
|
||||
}
|
||||
|
||||
.status-item .value {
|
||||
text-align: left;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.stats-grid {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: var(--space-3);
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
padding: var(--space-4) var(--space-3);
|
||||
}
|
||||
|
||||
.stat-value {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.actions-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.action-btn {
|
||||
padding: var(--space-4);
|
||||
}
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Banner Settings Panel (Gold Theme)
|
||||
======================================== */
|
||||
.banner-settings-panel {
|
||||
margin-top: var(--space-8);
|
||||
background: var(--surface-primary);
|
||||
border: 1px solid rgba(218, 165, 32, 0.3);
|
||||
border-radius: var(--radius-xl);
|
||||
overflow: hidden;
|
||||
box-shadow: 0 8px 32px rgba(218, 165, 32, 0.1);
|
||||
}
|
||||
|
||||
.panel-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: var(--space-5) var(--space-6);
|
||||
background: linear-gradient(135deg, rgba(218, 165, 32, 0.15) 0%, rgba(184, 134, 11, 0.1) 100%);
|
||||
border-bottom: 1px solid rgba(218, 165, 32, 0.2);
|
||||
}
|
||||
|
||||
.panel-header h3 {
|
||||
margin: 0;
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-lg);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
color: #daa520;
|
||||
}
|
||||
|
||||
.panel-header .btn-close {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border: none;
|
||||
color: var(--text-tertiary);
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: var(--radius-md);
|
||||
cursor: pointer;
|
||||
font-size: var(--text-base);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all var(--duration-fast) var(--ease-default);
|
||||
}
|
||||
|
||||
.panel-header .btn-close:hover {
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
padding: var(--space-6);
|
||||
}
|
||||
|
||||
.panel-body .form-group {
|
||||
margin-bottom: var(--space-5);
|
||||
}
|
||||
|
||||
.panel-body .form-group label {
|
||||
display: block;
|
||||
margin-bottom: var(--space-2);
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-sm);
|
||||
font-weight: var(--font-weight-medium);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.panel-body .form-control {
|
||||
width: 100%;
|
||||
padding: var(--space-3) var(--space-4);
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
border: 1px solid rgba(255, 255, 255, 0.15);
|
||||
border-radius: var(--radius-lg);
|
||||
color: var(--text-primary);
|
||||
-webkit-text-fill-color: var(--text-primary);
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-base);
|
||||
transition: all var(--duration-fast) var(--ease-default);
|
||||
}
|
||||
|
||||
.panel-body .form-control:focus {
|
||||
outline: none;
|
||||
border-color: #daa520;
|
||||
box-shadow: 0 0 0 3px rgba(218, 165, 32, 0.15);
|
||||
color: var(--text-primary);
|
||||
-webkit-text-fill-color: var(--text-primary);
|
||||
}
|
||||
|
||||
.panel-body .form-control:-webkit-autofill,
|
||||
.panel-body .form-control:-webkit-autofill:hover,
|
||||
.panel-body .form-control:-webkit-autofill:focus {
|
||||
-webkit-text-fill-color: var(--text-primary);
|
||||
-webkit-box-shadow: 0 0 0 1000px rgba(0, 0, 0, 0.3) inset;
|
||||
transition: background-color 5000s ease-in-out 0s;
|
||||
}
|
||||
|
||||
.panel-body .form-control::placeholder {
|
||||
color: var(--text-placeholder);
|
||||
}
|
||||
|
||||
.form-hint {
|
||||
display: block;
|
||||
margin-top: var(--space-2);
|
||||
font-size: var(--text-xs);
|
||||
color: var(--text-placeholder);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
.panel-body textarea.form-control {
|
||||
resize: vertical;
|
||||
min-height: 100px;
|
||||
}
|
||||
|
||||
.panel-body .form-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: var(--space-4);
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.panel-body .form-row {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Toggle Switch
|
||||
======================================== */
|
||||
.toggle-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
.toggle-label-text {
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-sm);
|
||||
font-weight: var(--font-weight-medium);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.toggle-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.toggle-container input[type="checkbox"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.toggle-switch {
|
||||
position: relative;
|
||||
flex-shrink: 0;
|
||||
width: 48px;
|
||||
height: 26px;
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
border-radius: 13px;
|
||||
transition: all var(--duration-normal) var(--ease-default);
|
||||
}
|
||||
|
||||
.toggle-switch::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
left: 3px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: var(--text-primary);
|
||||
border-radius: 50%;
|
||||
transition: all var(--duration-normal) var(--ease-default);
|
||||
}
|
||||
|
||||
.toggle-container input[type="checkbox"]:checked + .toggle-switch {
|
||||
background: #daa520;
|
||||
}
|
||||
|
||||
.toggle-container input[type="checkbox"]:checked + .toggle-switch::after {
|
||||
transform: translateX(22px);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Panel Actions (Gold Theme)
|
||||
======================================== */
|
||||
.panel-actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: var(--space-3);
|
||||
margin-top: var(--space-6);
|
||||
padding-top: var(--space-6);
|
||||
border-top: 1px solid var(--border-light);
|
||||
}
|
||||
|
||||
.panel-actions .btn {
|
||||
padding: var(--space-3) var(--space-6);
|
||||
border-radius: var(--radius-lg);
|
||||
font-family: var(--font-family-base);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
font-size: var(--text-sm);
|
||||
cursor: pointer;
|
||||
transition: all var(--duration-fast) var(--ease-default);
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
.panel-actions .btn-outline {
|
||||
background: transparent;
|
||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.panel-actions .btn-outline:hover {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-color: rgba(255, 255, 255, 0.3);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.panel-actions .btn-primary {
|
||||
background: linear-gradient(135deg, #daa520 0%, #b8860b 100%);
|
||||
border: none;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.panel-actions .btn-primary:hover {
|
||||
box-shadow: 0 4px 16px rgba(218, 165, 32, 0.4);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.panel-actions .btn-primary:disabled {
|
||||
opacity: 0.6;
|
||||
cursor: not-allowed;
|
||||
transform: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Banner Message
|
||||
======================================== */
|
||||
.banner-message {
|
||||
margin-top: var(--space-4);
|
||||
padding: var(--space-3) var(--space-4);
|
||||
border-radius: var(--radius-lg);
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-sm);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.banner-message.success {
|
||||
background: rgba(34, 197, 94, 0.12);
|
||||
border: 1px solid rgba(34, 197, 94, 0.25);
|
||||
color: var(--color-success-light);
|
||||
}
|
||||
|
||||
.banner-message.error {
|
||||
background: rgba(220, 38, 38, 0.12);
|
||||
border: 1px solid rgba(220, 38, 38, 0.25);
|
||||
color: var(--color-error-light);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Banner Status Info
|
||||
======================================== */
|
||||
.banner-status-info {
|
||||
margin: var(--space-4) 0;
|
||||
padding: var(--space-3) var(--space-4);
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
border-radius: var(--radius-lg);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.status-indicator {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
font-family: var(--font-family-base);
|
||||
font-size: var(--text-sm);
|
||||
font-weight: var(--font-weight-medium);
|
||||
}
|
||||
|
||||
.status-indicator.active {
|
||||
color: var(--color-success-light);
|
||||
}
|
||||
|
||||
.status-indicator.inactive {
|
||||
color: var(--text-tertiary);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Status Icons
|
||||
======================================== */
|
||||
.status-icon {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.status-icon.active-icon {
|
||||
background: var(--color-success);
|
||||
box-shadow: 0 0 8px rgba(34, 197, 94, 0.5);
|
||||
}
|
||||
|
||||
.status-icon.active-icon::after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/10px no-repeat;
|
||||
}
|
||||
|
||||
.status-icon.disabled-icon {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border: 2px solid rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.status-icon.scheduled-icon {
|
||||
background: var(--color-info);
|
||||
box-shadow: 0 0 8px rgba(59, 130, 246, 0.5);
|
||||
}
|
||||
|
||||
.status-icon.scheduled-icon::after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E") center/12px no-repeat;
|
||||
}
|
||||
|
||||
.status-icon.expired-icon {
|
||||
background: #6b7280;
|
||||
}
|
||||
|
||||
.status-icon.expired-icon::after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2'%3E%3Crect x='6' y='6' width='12' height='12'/%3E%3C/svg%3E") center/10px no-repeat;
|
||||
}
|
||||
|
||||
.status-icon.warning-icon {
|
||||
background: var(--color-warning);
|
||||
box-shadow: 0 0 8px rgba(245, 158, 11, 0.5);
|
||||
}
|
||||
|
||||
.status-icon.warning-icon::after {
|
||||
content: '!';
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Panel Section Titles
|
||||
======================================== */
|
||||
.panel-section-title {
|
||||
font-size: var(--text-base);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
color: var(--text-primary);
|
||||
margin: var(--space-2) 0 var(--space-4);
|
||||
padding-bottom: var(--space-2);
|
||||
border-bottom: 1px solid var(--border-light);
|
||||
}
|
||||
Reference in new issue
Block a user