mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-10 13:22:14 +00:00
ux(about): fold About card into the Admin Console
The About surface (version + license + source links + update check) used to live as its own Settings section and the user-card dropdown exposed it from both desktop and mobile. The three cards collectively get opened once or twice a year, mostly by the operator confirming the running version against the latest release. Move the surface to `/admin/about` and drop the dropdown link from both the desktop sidebar and the mobile top-bar. The public-facing landing at `/about` (credits + MaxMind attribution) stays untouched since it's reachable without a session. The legacy `/settings/about` route still resolves so external bookmarks don't break, but is no longer surfaced in any nav. The existing `<AboutSection>` is reused as-is — no markup changes, the component owns its own heading so the admin renderer mounts it without the SectionFrame wrapper.
This commit is contained in:
1 parent
d2bad6943c
commit
23cf9a4a78
11 files changed
+49
-22
No files matched your search
@@ -2438,6 +2438,10 @@
|
||||
"danger-zone": {
|
||||
"title": "Gefahrenzone",
|
||||
"subtitle": "Destruktive systemweite Operationen."
|
||||
},
|
||||
"about": {
|
||||
"title": "Über",
|
||||
"subtitle": "Version, Lizenz, Quellcode und Update-Prüfung."
|
||||
}
|
||||
},
|
||||
"carrier": "Anbieter",
|
||||
|
||||
@@ -2438,6 +2438,10 @@
|
||||
"danger-zone": {
|
||||
"title": "Danger Zone",
|
||||
"subtitle": "Destructive system-wide operations."
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"subtitle": "Version, license, source, and update check."
|
||||
}
|
||||
},
|
||||
"carrier": "Carrier",
|
||||
|
||||
@@ -2438,6 +2438,10 @@
|
||||
"danger-zone": {
|
||||
"title": "Danger Zone",
|
||||
"subtitle": "Destructive system-wide operations."
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"subtitle": "Version, license, source, and update check."
|
||||
}
|
||||
},
|
||||
"carrier": "Operador",
|
||||
|
||||
@@ -2438,6 +2438,10 @@
|
||||
"danger-zone": {
|
||||
"title": "Danger Zone",
|
||||
"subtitle": "Destructive system-wide operations."
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"subtitle": "Version, license, source, and update check."
|
||||
}
|
||||
},
|
||||
"carrier": "Opérateur",
|
||||
|
||||
@@ -2438,6 +2438,10 @@
|
||||
"danger-zone": {
|
||||
"title": "Danger Zone",
|
||||
"subtitle": "Destructive system-wide operations."
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"subtitle": "Version, license, source, and update check."
|
||||
}
|
||||
},
|
||||
"carrier": "Operatore",
|
||||
|
||||
@@ -2438,6 +2438,10 @@
|
||||
"danger-zone": {
|
||||
"title": "Danger Zone",
|
||||
"subtitle": "Destructive system-wide operations."
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"subtitle": "Version, license, source, and update check."
|
||||
}
|
||||
},
|
||||
"carrier": "Operator",
|
||||
|
||||
@@ -16,6 +16,7 @@ import type { JSX } from "react";
|
||||
|
||||
import { useAuth } from "@/hooks/use-auth";
|
||||
import { useTranslations } from "@/lib/i18n/context";
|
||||
import { AboutSection } from "@/components/settings/about-section";
|
||||
import { AiQualitySection } from "@/components/admin/ai-quality-section";
|
||||
import { AssistantSection } from "@/components/admin/assistant-section";
|
||||
import { CoachFeedbackSection } from "@/components/admin/coach-feedback-section";
|
||||
@@ -185,6 +186,11 @@ export function AdminSectionRenderer({
|
||||
<DangerZoneSection />
|
||||
</SectionFrame>
|
||||
);
|
||||
case "about":
|
||||
// v1.4.36 W4e — About section reused as-is from the settings
|
||||
// surface. The component owns its own heading + cards layout
|
||||
// so no SectionFrame wrapper.
|
||||
return <AboutSection />;
|
||||
default:
|
||||
slug satisfies never;
|
||||
return null;
|
||||
|
||||
@@ -21,6 +21,7 @@ import {
|
||||
Bell,
|
||||
Database,
|
||||
FileText,
|
||||
Info,
|
||||
KeyRound,
|
||||
Inbox,
|
||||
Plug,
|
||||
@@ -125,6 +126,12 @@ export const ADMIN_SECTIONS: readonly AdminSection[] = [
|
||||
titleKey: "admin.section.danger-zone.title",
|
||||
icon: ShieldAlert,
|
||||
},
|
||||
// v1.4.36 W4e — About / version / update check folded into Admin.
|
||||
{
|
||||
slug: "about",
|
||||
titleKey: "admin.section.about.title",
|
||||
icon: Info,
|
||||
},
|
||||
] as const;
|
||||
|
||||
export interface AdminShellProps {
|
||||
|
||||
@@ -29,6 +29,10 @@ export const ADMIN_SECTION_SLUGS = [
|
||||
"app-logs",
|
||||
"backups",
|
||||
"danger-zone",
|
||||
// v1.4.36 W4e — About / version / update check folded into Admin
|
||||
// Console. Lives at /admin/about; the legacy /settings/about route
|
||||
// is unlinked from the user-card dropdown.
|
||||
"about",
|
||||
] as const;
|
||||
|
||||
export type AdminSectionSlug = (typeof ADMIN_SECTION_SLUGS)[number];
|
||||
|
||||
@@ -8,7 +8,6 @@ import {
|
||||
ChevronsLeft,
|
||||
ChevronsRight,
|
||||
Home,
|
||||
Info,
|
||||
Lightbulb,
|
||||
LogOut,
|
||||
Monitor,
|
||||
@@ -144,17 +143,10 @@ function SidebarUserSection({ collapsed }: { collapsed: boolean }) {
|
||||
{t("nav.notifications")}
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
{/* v1.4.33 IW7 — "About" used to live as its own Settings
|
||||
section but the three small cards inside (identity / links /
|
||||
update check) collectively get read once or twice a year, so
|
||||
the top-level slot has been collapsed into this dropdown. The
|
||||
route stays alive at `/settings/about`. */}
|
||||
<DropdownMenuItem asChild>
|
||||
<Link href="/settings/about" className="cursor-pointer">
|
||||
<Info className="mr-2 h-4 w-4" />
|
||||
{t("nav.about")}
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
{/* v1.4.36 W4e — About moved into the Admin Console
|
||||
(`/admin/about`). Admins reach it through the Admin sidebar
|
||||
and the mobile section strip; non-admin users see the
|
||||
public `/about` landing instead. */}
|
||||
<DropdownMenuSub>
|
||||
<DropdownMenuSubTrigger>
|
||||
{themeIcon}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
import {
|
||||
Bell,
|
||||
ChevronDown,
|
||||
Info,
|
||||
LogIn,
|
||||
LogOut,
|
||||
Monitor,
|
||||
@@ -95,15 +94,10 @@ export function TopBar() {
|
||||
{t("nav.notifications")}
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
{/* v1.4.33 IW7 — "About" folded out of Settings into the
|
||||
user-card dropdown; mobile dropdown mirrors the
|
||||
desktop sidebar so the entry shows up here too. */}
|
||||
<DropdownMenuItem asChild>
|
||||
<Link href="/settings/about" className="cursor-pointer">
|
||||
<Info className="mr-2 h-4 w-4" />
|
||||
{t("nav.about")}
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
{/* v1.4.36 W4e — About moved into the Admin Console
|
||||
(`/admin/about`). The dropdown entry was redundant
|
||||
for the small audience that still reaches it (admins
|
||||
only, on the order of once or twice a year). */}
|
||||
<DropdownMenuSub>
|
||||
<DropdownMenuSubTrigger>
|
||||
{themeIcon}
|
||||
|
||||
Reference in new issue
Block a user