Feature: Offline-Banner, Online-Toast und API-Offline-Fehlerbehandlung

- #offline-banner in index.html (display:none, fixed oben) mit Inline-Script für window.online/offline Events
- Wieder-online Toast via UI.toast.success
- api.js fängt network-Fehler und SW-503-Offline-Antworten ab und zeigt UI.toast.warning
- SW-Cache auf by-v210 gebumpt (api.js + components.css geändert)
This commit is contained in:
rene 2026-04-18 18:40:05 +02:00
parent e98ce0d232
commit eb72d6f675
4 changed files with 154 additions and 4 deletions

View file

@ -5399,3 +5399,88 @@ svg.empty-state-icon {
.empty-state-cta {
margin-top: var(--space-2);
}
/* ============================================================
RATING STARS Bewertungskomponente
============================================================ */
.rating-display {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: var(--space-2);
margin: var(--space-3) 0;
}
.rating-stars-avg {
display: flex;
gap: 2px;
}
.rating-star {
font-size: 1.25rem;
line-height: 1;
cursor: default;
user-select: none;
position: relative;
}
.rating-star--filled { color: #f59e0b; }
.rating-star--half {
color: #e5e7eb;
}
.rating-star--half::before {
content: '★';
color: #f59e0b;
position: absolute;
left: 0;
width: 50%;
overflow: hidden;
display: inline-block;
}
.rating-star--empty { color: #e5e7eb; }
.rating-star--pick {
cursor: pointer;
font-size: 1.6rem;
transition: transform .1s;
}
.rating-star--pick:hover,
.rating-star--pick:active { transform: scale(1.15); }
.rating-avg-label {
font-size: var(--text-sm);
color: var(--c-text-secondary);
}
.rating-rate-btn {
color: var(--c-primary);
padding: var(--space-1) var(--space-2);
}
.rating-widget {
background: var(--c-surface-2);
border-radius: var(--radius-md);
padding: var(--space-3);
margin-top: var(--space-2);
border: 1px solid var(--c-border-light);
}
.rating-pick-stars {
display: flex;
gap: var(--space-2);
margin-bottom: var(--space-3);
}
.rating-kommentar {
font-size: var(--text-sm);
}
/* ------------------------------------------------------------
OFFLINE-BANNER
------------------------------------------------------------ */
#offline-banner {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 9999;
background: var(--c-text-secondary, #6b7280);
color: #fff;
font-size: var(--text-sm);
text-align: center;
padding: var(--space-2) var(--space-4);
pointer-events: none;
letter-spacing: 0.01em;
}