Initial commit: Lagerbestand Blazor Projekt

This commit is contained in:
spaethf committed 2026-09-21 21:28:23 +02:00
commit cba9414e92
105 files changed
+36431

No files matched your search

+217
View File
@@ -0,0 +1,217 @@
/*
* Reifen Späth – App Interop styles
* Reconnect overlay + idle-lock overlay.
* Uses global design tokens from app.css.
*/
/* =============================================
Blazor reconnect overlay (replaces default)
The framework toggles styles on:
#components-reconnect-modal
via classes: components-reconnect-show / hide / failed / rejected
============================================= */
#components-reconnect-modal {
display: none;
position: fixed;
inset: 0;
z-index: 2147483000;
align-items: center;
justify-content: center;
padding: var(--space-4, 1rem);
background: rgba(0, 0, 0, 0.78);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
font-family: var(--font-family-base, sans-serif);
color: var(--text-primary, #fff);
}
#components-reconnect-modal.components-reconnect-show,
#components-reconnect-modal.components-reconnect-failed,
#components-reconnect-modal.components-reconnect-rejected {
display: flex;
}
#components-reconnect-modal .reconnect-dialog {
background: var(--surface-primary, rgba(28, 28, 30, 0.95));
border: 0.5px solid var(--border-default, rgba(255, 255, 255, 0.1));
border-radius: var(--radius-xl, 20px);
box-shadow: var(--shadow-xl, 0 20px 40px rgba(0, 0, 0, 0.5));
padding: var(--space-6, 1.5rem);
width: 100%;
max-width: 420px;
text-align: center;
}
#components-reconnect-modal .reconnect-icon {
width: 56px;
height: 56px;
margin: 0 auto var(--space-4, 1rem);
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: rgba(220, 38, 38, 0.15);
color: var(--color-primary-light, #ef4444);
}
#components-reconnect-modal .reconnect-icon svg {
animation: reconnect-spin 1.4s linear infinite;
}
@keyframes reconnect-spin {
to { transform: rotate(360deg); }
}
#components-reconnect-modal h2 {
margin: 0 0 var(--space-2, 0.5rem);
font-size: var(--text-xl, 1.25rem);
font-family: var(--font-family-base, sans-serif);
font-weight: var(--font-weight-semibold, 600);
}
#components-reconnect-modal p {
margin: 0 0 var(--space-5, 1.25rem);
color: var(--text-secondary, rgba(255, 255, 255, 0.7));
font-size: var(--text-sm, 0.875rem);
line-height: var(--line-height-relaxed, 1.6);
}
#components-reconnect-modal .reconnect-actions {
display: flex;
flex-direction: column;
gap: var(--space-3, 0.75rem);
}
#components-reconnect-modal .reconnect-text-show,
#components-reconnect-modal .reconnect-text-failed,
#components-reconnect-modal .reconnect-text-rejected,
#components-reconnect-modal .reconnect-actions-failed {
display: none;
}
#components-reconnect-modal.components-reconnect-show .reconnect-text-show { display: block; }
#components-reconnect-modal.components-reconnect-failed .reconnect-text-failed,
#components-reconnect-modal.components-reconnect-failed .reconnect-actions-failed { display: block; }
#components-reconnect-modal.components-reconnect-failed .reconnect-actions-failed { display: flex; flex-direction: column; gap: var(--space-3, 0.75rem); }
#components-reconnect-modal.components-reconnect-rejected .reconnect-text-rejected,
#components-reconnect-modal.components-reconnect-rejected .reconnect-actions-failed { display: block; }
#components-reconnect-modal.components-reconnect-rejected .reconnect-actions-failed { display: flex; flex-direction: column; gap: var(--space-3, 0.75rem); }
/* Hide default retry countdown */
#components-reconnect-modal .components-reconnect-current-attempt,
#components-reconnect-modal .components-reconnect-max-retries {
color: var(--text-tertiary, rgba(255, 255, 255, 0.5));
font-size: var(--text-xs, 0.75rem);
}
#components-reconnect-modal button {
min-height: var(--touch-target, 44px);
padding: var(--space-3, 0.75rem) var(--space-5, 1.25rem);
border-radius: var(--radius-md, 10px);
border: none;
font-family: var(--font-family-base, sans-serif);
font-size: var(--text-sm, 0.875rem);
font-weight: var(--font-weight-semibold, 600);
cursor: pointer;
transition: all var(--duration-fast, 150ms) var(--ease-out, ease);
}
#components-reconnect-modal .reconnect-retry {
background: linear-gradient(180deg, var(--color-primary-light, #ef4444) 0%, var(--color-primary, #dc2626) 100%);
color: var(--text-primary, #fff);
box-shadow: var(--shadow-btn-primary, 0 4px 12px rgba(220, 38, 38, 0.3));
}
#components-reconnect-modal .reconnect-reload {
background: rgba(255, 255, 255, 0.08);
color: var(--text-primary, #fff);
border: 0.5px solid var(--border-default, rgba(255, 255, 255, 0.1));
}
#components-reconnect-modal button:hover:not(:disabled) {
transform: translateY(-1px);
}
/* =============================================
Idle lock overlay
============================================= */
#app-idle-overlay {
display: none;
position: fixed;
inset: 0;
z-index: 2147482000;
align-items: center;
justify-content: center;
padding: var(--space-4, 1rem);
background: rgba(0, 0, 0, 0.82);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
font-family: var(--font-family-base, sans-serif);
color: var(--text-primary, #fff);
animation: fadeIn var(--duration-normal, 250ms) var(--ease-out, ease);
}
#app-idle-overlay.visible {
display: flex;
}
#app-idle-overlay .app-idle-dialog {
background: var(--surface-primary, rgba(28, 28, 30, 0.95));
border: 0.5px solid var(--border-default, rgba(255, 255, 255, 0.1));
border-radius: var(--radius-xl, 20px);
box-shadow: var(--shadow-xl, 0 20px 40px rgba(0, 0, 0, 0.5));
padding: var(--space-6, 1.5rem);
width: 100%;
max-width: 420px;
text-align: center;
}
#app-idle-overlay .app-idle-icon {
width: 64px;
height: 64px;
margin: 0 auto var(--space-4, 1rem);
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: rgba(251, 191, 36, 0.15);
color: var(--color-warning, #fbbf24);
}
#app-idle-overlay h2 {
margin: 0 0 var(--space-2, 0.5rem);
font-size: var(--text-xl, 1.25rem);
font-weight: var(--font-weight-semibold, 600);
}
#app-idle-overlay p {
margin: 0 0 var(--space-5, 1.25rem);
color: var(--text-secondary, rgba(255, 255, 255, 0.7));
font-size: var(--text-sm, 0.875rem);
line-height: var(--line-height-relaxed, 1.6);
}
#app-idle-overlay .app-idle-resume {
min-height: var(--touch-target, 44px);
width: 100%;
padding: var(--space-3, 0.75rem) var(--space-5, 1.25rem);
border-radius: var(--radius-md, 10px);
border: none;
background: linear-gradient(180deg, var(--color-primary-light, #ef4444) 0%, var(--color-primary, #dc2626) 100%);
color: var(--text-primary, #fff);
font-family: var(--font-family-base, sans-serif);
font-size: var(--text-base, 1rem);
font-weight: var(--font-weight-semibold, 600);
cursor: pointer;
box-shadow: var(--shadow-btn-primary, 0 4px 12px rgba(220, 38, 38, 0.3));
transition: transform var(--duration-fast, 150ms) var(--ease-out, ease);
}
#app-idle-overlay .app-idle-resume:hover {
transform: translateY(-1px);
}
#app-idle-overlay .app-idle-resume:focus-visible {
outline: 3px solid rgba(220, 38, 38, 0.5);
outline-offset: 2px;
}