refactor(system-info): reduce to Stripe-style status page

Reduce admin/system-info to a single focused status view: overall
status banner, components list from existing health checks, and an
environment meta table. Drops the Modules and Permissions tabs —
those were dev-diagnostics already available via CLI.

- Remove SystemInfoService + its test; wire the action directly to
  SystemHealthService and build meta inline
- Extend SystemHealthService with per-check label + description so
  the UI speaks in customer terms while the CLI doctor path stays
  compatible
- Rebuild the view on existing app-stats-table + app-empty-state
  primitives; add a small app-status-banner component for the
  headline signal
- Align help-center nav label and i18n keys (de/en)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 16:32:46 +02:00
parent d9ed4ab5b4
commit 87652e55da
13 changed files with 340 additions and 461 deletions

View File

@@ -0,0 +1,74 @@
@layer components {
.app-status-banner {
display: flex;
align-items: center;
gap: 18px;
padding: calc(var(--app-spacing) * 1) calc(var(--app-spacing) * 1.25);
border: 1px solid var(--badge-neutral-border);
border-radius: var(--app-border-radius);
background: var(--badge-neutral-bg);
color: var(--badge-neutral-color);
margin-block-end: var(--app-spacing);
}
.app-status-banner[data-variant="success"] {
background: var(--badge-success-bg);
color: var(--badge-success-color);
border-color: var(--badge-success-border);
}
.app-status-banner[data-variant="warn"] {
background: var(--badge-warn-bg);
color: var(--badge-warn-color);
border-color: var(--badge-warn-border);
}
.app-status-banner[data-variant="danger"] {
background: var(--badge-danger-bg);
color: var(--badge-danger-color);
border-color: var(--badge-danger-border);
}
.app-status-banner > i {
font-size: var(--text-3xl);
line-height: var(--leading-none);
flex-shrink: 0;
}
.app-status-banner-text {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}
.app-status-banner-text h2 {
margin: 0;
font-size: var(--text-lg);
line-height: var(--leading-snug);
}
.app-status-banner-text small {
opacity: 0.85;
}
.app-stats-table .app-status-description {
display: block;
color: var(--app-muted-color);
margin-top: 2px;
}
.app-stats-table td.app-status-badge-cell {
text-align: end;
white-space: nowrap;
width: 1%;
}
@media (max-width: 600px) {
.app-status-banner {
flex-direction: column;
align-items: flex-start;
text-align: start;
}
}
}