fix(dashboard): Grid kollabierte auf Content-Breite, Kachel-Titel liefen ab
CI / backend-tests (push) Failing after 2m6s
CI / frontend-build (push) Successful in 21s

Root Cause (Screenshot-Analyse): .page-wide hatte kein width:100%/flex:1 wie .page - als Flex-Kind von .app-shell schrumpfte es auf reine Content-Breite. react-grid-layout positioniert Kacheln absolut (kein Beitrag zur intrinsischen Breite), dadurch kollabierte der ganze Grid-Container auf ~380px statt volle verfügbare Breite - Kacheln dadurch winzig, Text lief mitten im Wort ab. Fix: .page-wide bekommt flex:1/width:100%. Zusätzlich CardHeader/CardTitle mit min-w-0/truncate gegen abgeschnittene Titel, Einsatzbereitschaft-Vierer-Zeile von sm:grid-cols-4 (reagiert auf Viewport-, nicht Kachel-Breite) auf festes grid-cols-2 - lief in schmalen Kacheln trotz breitem Viewport ineinander.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
2026-09-07 13:57:34 +02:00
co-authored by Claude Sonnet 5
parent a2a44fb780
commit 52936245e1
4 changed files with 51 additions and 3 deletions
+42
View File
@@ -6602,3 +6602,45 @@ Keine Commits in dieser Session.
- frontend/src/pages/dashboard/layout.ts | 74 +++++++++++++++++++++++++++++++++------------------------------------ - frontend/src/pages/dashboard/layout.ts | 74 +++++++++++++++++++++++++++++++++------------------------------------
--- ---
## 2026-09-07 13:49 13:53 (3m)
**Beschreibung:** Claude Code Session
**Projekt:** asb-material
### Commits
- a2a44fb style(dashboard): Kacheln modernisiert - Karten, Einsatzbereitschaft-Balken, Termin-Listen, Skeleton
### Geänderte Dateien
- DEVLOG.md | 16 ++++++++++++++++
- frontend/src/components/status/FristBadge.tsx | 18 ++++++++++--------
- frontend/src/components/status/InspectionStatus.tsx | 4 ++--
- frontend/src/components/status/InventoryStatus.tsx | 4 ++--
- frontend/src/components/ui/card.tsx | 10 +++++++++-
- frontend/src/pages/dashboard/DashboardPage.tsx | 8 +++++++-
- frontend/src/pages/dashboard/tiles/AblaufdatenTile.tsx | 48 +++++++++++++++++++++++++++++++++++-------------
- frontend/src/pages/dashboard/tiles/EinsatzbereitschaftTile.tsx | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
- frontend/src/pages/dashboard/tiles/PrueftermineTile.tsx | 48 +++++++++++++++++++++++++++++++++++-------------
- frontend/src/pages/dashboard/tiles/QualifikationTile.tsx | 45 +++++++++++++++++++++++++++++++--------------
- frontend/src/styles/global.css | 7 +++++++
---
## 2026-09-07 13:54 13:54 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** asb-material
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- DEVLOG.md | 16 ++++++++++++++++
- frontend/src/components/status/FristBadge.tsx | 18 ++++++++++--------
- frontend/src/components/status/InspectionStatus.tsx | 4 ++--
- frontend/src/components/status/InventoryStatus.tsx | 4 ++--
- frontend/src/components/ui/card.tsx | 10 +++++++++-
- frontend/src/pages/dashboard/DashboardPage.tsx | 8 +++++++-
- frontend/src/pages/dashboard/tiles/AblaufdatenTile.tsx | 48 +++++++++++++++++++++++++++++++++++-------------
- frontend/src/pages/dashboard/tiles/EinsatzbereitschaftTile.tsx | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
- frontend/src/pages/dashboard/tiles/PrueftermineTile.tsx | 48 +++++++++++++++++++++++++++++++++++-------------
- frontend/src/pages/dashboard/tiles/QualifikationTile.tsx | 45 +++++++++++++++++++++++++++++++--------------
- frontend/src/styles/global.css | 7 +++++++
---
+6 -2
View File
@@ -20,13 +20,17 @@ export const Card = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>((
Card.displayName = "Card"; Card.displayName = "Card";
export const CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => ( export const CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (
<div ref={ref} className={cn("flex items-center justify-between gap-2 px-5 pt-4 pb-2", className)} {...props} /> <div ref={ref} className={cn("flex min-w-0 items-center justify-between gap-2 px-5 pt-4 pb-2", className)} {...props} />
)); ));
CardHeader.displayName = "CardHeader"; CardHeader.displayName = "CardHeader";
export const CardTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>( export const CardTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(
({ className, ...props }, ref) => ( ({ className, ...props }, ref) => (
<h3 ref={ref} className={cn("text-sm font-semibold tracking-wide text-muted-foreground uppercase", className)} {...props} /> <h3
ref={ref}
className={cn("min-w-0 truncate text-sm font-semibold tracking-wide text-muted-foreground uppercase", className)}
{...props}
/>
) )
); );
CardTitle.displayName = "CardTitle"; CardTitle.displayName = "CardTitle";
@@ -55,7 +55,7 @@ function EinsatzbereitschaftTileKomponente({ bereitschaft }: Props) {
)} )}
</div> </div>
<div className="mt-3 grid grid-cols-2 gap-x-3 gap-y-1.5 sm:grid-cols-4"> <div className="mt-3 grid grid-cols-2 gap-x-3 gap-y-1.5">
{segmente.map((s) => ( {segmente.map((s) => (
<div key={s.label} className="flex items-center gap-1.5 text-sm"> <div key={s.label} className="flex items-center gap-1.5 text-sm">
<span className="h-2 w-2 shrink-0 rounded-full" style={{ backgroundColor: s.farbVar }} /> <span className="h-2 w-2 shrink-0 rounded-full" style={{ backgroundColor: s.farbVar }} />
+2
View File
@@ -249,6 +249,8 @@ a {
ausgerichtet statt zentriert - bei 1200px sonst viel verschenkter Platz ausgerichtet statt zentriert - bei 1200px sonst viel verschenkter Platz
rechts/links auf breiten Monitoren. */ rechts/links auf breiten Monitoren. */
.page-wide { .page-wide {
flex: 1;
width: 100%;
max-width: 1240px; max-width: 1240px;
margin: 0; margin: 0;
padding: 1.75rem 2rem 3rem; padding: 1.75rem 2rem 3rem;