import type { ReactNode } from 'react'; import { Link, NavLink } from 'react-router-dom'; import { apiMode } from '../api/client'; import { useSession } from '../state/session'; import { BrandMark } from '../brand/mark'; import s from './Shell.module.css'; export const DISCLAIMER = 'For education. Not for clinical use.'; export function Footer({ className }: { className?: string }) { return ( ); } /** `short` is for the reading-room header, where width is tight; the title carries the full explanation. */ export function SyntheticBadge({ short = false }: { short?: boolean }) { const m = apiMode(); if (m.mode !== 'mock') return null; return ( {short ? 'Synthetic' : 'Synthetic cases'} ); } /** The learner's pages: Read · Reading log · Reference · About. `compact` is the reading-room header, where Read is * where you already are. Cohort and expert review are not learner pages: they are reached by URL or from About. */ export function Nav({ compact = false }: { compact?: boolean }) { // "Read" goes back to the open set if there is one, otherwise to the start screen. const inSet = useSession((st) => !!st.session); return ( ); } /** Paper page: header, optional full-bleed hero, single report column, disclaimer footer. */ export function PageShell({ children, wide = false, width, hero }: { children: ReactNode; wide?: boolean; width?: number; hero?: ReactNode }) { const w = width ?? (wide ? 1100 : undefined); return (