import Link from "next/link"; import { getTranslations } from "next-intl/server"; import { requireAppAccess } from "@/server/app-access"; import { CraftviaLogo } from "@/components/brand/craftvia-logo"; import { AccountInactiveNotice } from "@/components/account-inactive-notice"; import { BottomNav } from "@/components/field/bottom-nav"; import { OnlineBadge } from "@/components/field/online-badge"; import { OfflineRuntime } from "@/components/offline/offline-runtime"; /** * Mobile shell `/m` (ARCHITEKTUR §5): same session/account/MFA checks as the backoffice * (src/server/app-access.ts), no sidebar, bottom navigation, online/offline badge. * Module gates live one level below: (core) → "field", emergency → "emergency". */ export default async function FieldShell({ children }: Readonly<{ children: React.ReactNode }>) { const access = await requireAppAccess(); if (access.kind === "inactive") return ; const t = await getTranslations("field.nav"); return (
{/* Slot für L6: aus src/components/notifications/bell.tsx */}
{children}
); }