// shared.jsx — NavBar, Footer, Section dividers, used by all 3 concepts. const NavBar = ({ variant = 'warm', activeAnchor = null }) => { const isInk = variant === 'ink'; const bg = variant === 'cool' ? 'rgba(244,247,249,0.9)' : variant === 'ink' ? 'rgba(28,51,67,0.9)' : 'rgba(250,245,234,0.92)'; const color = isInk ? 'var(--gold-bright)' : 'var(--ink-navy)'; const border = isInk ? 'rgba(231,196,108,0.18)' : 'var(--border-warm)'; const [menuOpen, setMenuOpen] = React.useState(false); const navLink = (anchor, label, onClick) => { const isActive = activeAnchor === anchor.replace('#', ''); return ( {label} ); }; // Order matches the actual scroll order down the page: // Features (FiveQuestions) → How it works (RealWeekWalkthrough) → Levels. const sectionLinks = [ ['#features', 'Features'], ['#how-it-works', 'How it works'], ['#levels', 'Levels'], ['/login', 'Try the agent'], ]; const menuBg = variant === 'cool' ? '#fff' : variant === 'ink' ? '#1c3343' : 'var(--surface-page-warm)'; return (
{/* Brand mark — single SVG source of truth (matches the browser-tab favicon). Replaces the previous CSS-italic-T treatment so the wordmark visually ties to the favicon + welcome animation + every other surface using transcriptagent-mark.svg. */} TranscriptAgent TranscriptAgent
Sign in Try it free
{/* Mobile: keep the primary CTA visible + a hamburger that reveals the section links and Sign in (the desktop nav/cta are hidden ≤860px). */}
Try it free
{menuOpen && (
{sectionLinks.map(([a, l]) => navLink(a, l, () => setMenuOpen(false)))} setMenuOpen(false)}>Sign in
)}
); }; const SectionDivider = ({ tone = 'warm' }) => (
); const Footer = ({ variant = 'warm' }) => { const isInk = variant === 'ink'; return ( ); }; Object.assign(window, { NavBar, Footer, SectionDivider });