"use client"; /** * MIRROR of main frontend `frontend/src/components/auth/NoAccessScreen.tsx` * — keep in sync manually. Tradein-mvp бандлится отдельно (basePath=/trade-in), * нет общего workspace package. * * Fullscreen «доступа нет» — для 403 от /me или для denied path. * Token-based styling per `.claude/rules/ui-tokens.md` (см. globals.css). */ import { logout } from "@/lib/logout"; interface NoAccessScreenProps { variant: "user" | "path" | "session" | "trial"; path?: string; } export function NoAccessScreen({ variant, path }: NoAccessScreenProps) { const title = variant === "session" ? "Сессия истекла" : variant === "trial" ? "Пробный доступ закончился" : "Доступа нет"; const subtitle = variant === "session" ? "Сессия истекла или вы не авторизованы. Обновите страницу, чтобы войти снова." : variant === "user" ? "Учётная запись не привязана к роли. Обратитесь к администратору GenDesign — kopylov." : variant === "path" ? "У вашей роли нет доступа к этому разделу. Вернитесь на главную или обратитесь к администратору." : null; return (

{title}

{variant === "trial" ? (

Пробный доступ к сервису «Мера» закончился. Чтобы продлить доступ или получить полную версию — напишите Артёму Копылову:{" "} @ArtemKopylov87 .

) : (

{subtitle}

)} {variant === "path" && path ? (

{path}

) : null} {/* Always-available logout — иначе locked/no-access юзер заперт: UserMenu (где обычно «Выйти») на этом экране не рендерится. */}
); }