Move maintenance status into root sidebar

This commit is contained in:
MOH
2026-03-07 18:44:48 +01:00
parent 4f39c097e4
commit f6a5a37676
2 changed files with 40 additions and 13 deletions
+29 -7
View File
@@ -1,6 +1,7 @@
import {
ExternalLink,
FolderKanban,
Globe2,
ImageIcon,
LockKeyhole,
ShieldAlert,
@@ -59,6 +60,7 @@ const copy = {
maintenance: "Wartungsmodus",
maintenanceTitle: "Wartungsmodus",
maintenanceVisitorsClosed: "Website fuer Besucher geschlossen",
maintenanceVisitorsShort: "Besucher gesperrt",
maintenanceDescription:
"Wenn aktiv, werden alle Seiten auf die Coming Soon Seite weitergeleitet.",
maintenanceOpen: "Website fuer Besucher offen",
@@ -67,6 +69,7 @@ const copy = {
uiKitDescription: "Globale Referenz fuer Cards, Buttons, Inputs und Surface Levels.",
uiKitAction: "Zur UI Kit",
media: "Media",
siteSettings: "SEO",
portfolio: "Portfolio",
portfolioTitle: "Portfolio",
portfolioDescription: "Kategorien, Projekte, Abschnitte und Dateien verwalten.",
@@ -74,6 +77,9 @@ const copy = {
mediaTitle: "Media Library",
mediaDescription: "Uploads, externe URLs und Verwendungsorte zentral verwalten.",
mediaAction: "Zur Media Library",
siteSettingsTitle: "SEO",
siteSettingsDescription: "Favicon, Site Name, Description, Subhead und globale SEO Defaults verwalten.",
siteSettingsAction: "Zu SEO",
loginTitle: "Root Login",
loginText: "Nur autorisierte Nutzer duerfen diesen Bereich verwenden.",
passwordLabel: "Passwort",
@@ -238,6 +244,14 @@ export default async function RootPage({ searchParams }: RootPageProps) {
badgeVariant: "outline" as const,
action: copy.mediaAction,
},
{
label: copy.siteSettingsTitle,
summary: copy.siteSettingsDescription,
status: copy.authStatusOk,
href: "/root/site-settings",
badgeVariant: "outline" as const,
action: copy.siteSettingsAction,
},
{
label: copy.portfolioTitle,
summary: `${projects.length} ${copy.totalProjects} / ${categories.length} ${copy.totalCategories}`,
@@ -263,11 +277,11 @@ export default async function RootPage({ searchParams }: RootPageProps) {
logoutAction={logoutAction}
headerTitle={copy.title}
headerDescription={copy.subtitle}
headerActions={
sidebarTopContent={
maintenanceEnabled ? (
<Button asChild variant="destructive" className="hidden sm:inline-flex">
<Link href="/root/maintenance">{copy.maintenanceVisitorsClosed}</Link>
</Button>
<p className="px-1 text-xs font-medium text-destructive">
{copy.maintenanceVisitorsShort}
</p>
) : null
}
>
@@ -294,7 +308,7 @@ export default async function RootPage({ searchParams }: RootPageProps) {
title={copy.totalProjects}
value={String(projects.length)}
description={copy.projectCountDescription}
icon={FolderKanban}
icon={Globe2}
/>
</MotionFade>
<MotionFade delay={0.2}>
@@ -302,13 +316,21 @@ export default async function RootPage({ searchParams }: RootPageProps) {
title={copy.totalCategories}
value={String(categories.length)}
description={copy.categoryCountDescription}
icon={FolderKanban}
/>
</MotionFade>
<MotionFade delay={0.25}>
<DashboardCard
title={copy.siteSettingsTitle}
value={copy.authStatusOk}
description={copy.siteSettingsDescription}
icon={Shapes}
/>
</MotionFade>
</section>
<section className="grid gap-6 xl:grid-cols-[minmax(0,1.5fr)_minmax(320px,1fr)]">
<MotionFade delay={0.25}>
<MotionFade delay={0.3}>
<Card className="border-border/70 bg-card/95 shadow-sm">
<CardHeader>
<CardTitle>{copy.tableTitle}</CardTitle>
@@ -349,7 +371,7 @@ export default async function RootPage({ searchParams }: RootPageProps) {
</MotionFade>
<div className="grid gap-6">
<MotionFade delay={0.3}>
<MotionFade delay={0.35}>
<Card className="border-border/70 bg-card/95 shadow-sm">
<CardHeader>
<CardTitle>{copy.systemStatusTitle}</CardTitle>