import { KernelMark } from '@app/components/brand' import { useT } from '@app/i18n' import { getRegion, toggleTheme, useTheme } from '@app/lib' import { IconMoon as Moon, IconSun as Sun } from '@tabler/icons-react' import { type ReactNode, useEffect } from 'react' import { Link } from 'react-router-dom' export interface AuthShellProps { /** Breadcrumb current segment, e.g. "SIGN IN". */ current: string /** Mono caption above the status row, unique per screen. */ hint: string children: ReactNode } const mark = 'pointer-events-none absolute size-[18px] border-border' const markTL = 'left-4 top-4 sm:left-6 sm:top-6 lg:left-9 lg:top-9' const markTR = 'right-4 top-4 sm:right-6 sm:top-6 lg:right-9 lg:top-9' const markBL = 'bottom-4 left-4 sm:bottom-6 sm:left-6 lg:bottom-9 lg:left-9' const markBR = 'bottom-4 right-4 sm:bottom-6 sm:right-6 lg:bottom-9 lg:right-9' const crumbSep = 'font-mono text-[10px] text-border' /** Full-viewport chrome shared by all auth screens. */ export function AuthShell({ current, hint, children }: AuthShellProps) { const { t } = useT() const theme = useTheme() const region = getRegion() // Each auth screen is a full document: keep the tab title in step with the // active step and the interface language (current is already localized). useEffect(() => { document.title = `${current} · ${t('common.app.name')}` }, [current, t]) return (
{children}

{hint}

{t('auth.shell.region', { region }).toUpperCase()} · © 2026 GitDataAI

) }