// Shared sketchy primitives — kept tiny and explicit so each tab composes from same vocab. const Box = ({children, style, className='', as='div', ...rest}) => { const Tag = as; return {children}; }; const Pill = ({children, className='', style}) => ( {children} ); const Btn = ({children, className='', style, onClick}) => ( ); // Hand-drawn line of fake text const FakeLine = ({w='100%', kind='', style}) => (
); // Mini stack of fake text lines const FakePara = ({lines=3, widths=['100%','94%','78%'], kind=''}) => (
{Array.from({length: lines}).map((_,i) => )}
); const Squiggle = ({style}) =>
; const Note = ({children, style}) =>
{children}
; const LabelTag = ({children, rot=-1.2, style}) => ( {children} ); // SVG hand-drawn arrow (curved or straight) const Arrow = ({d='M0,0 C40,20 80,-10 120,0', w=130, h=30, color='#d96b2c', label, style}) => (
{label &&
{label}
}
); // Simple device chrome: browser/mobile const Browser = ({title='h2learn.app/...', children, style, className=''}) => (
{title}
{children}
); const Phone = ({children, style, className=''}) => (
9:41 •••
{children}
); // Frame container = labelled wireframe panel const Frame = ({title, tag, children, style}) => (

{title}

{tag && {tag}}
{children}
); // Mini node for graph sketches const Node = ({x, y, r=14, kind='person', label, glow=false, on=false}) => { const colors = { person: '#1c5fbf', project: '#d96b2c', org: '#2a8a5c', domain: '#b14fa6', method: '#7a6cf0', challenge: '#c33a3a', bottleneck: '#5b5b5b', uncertainty: '#c9a227', me: '#1a1a1a', }; const c = colors[kind] || '#1a1a1a'; return ( {glow && } {kind === 'me' && } {label && {label}} ); }; const Edge = ({x1,y1,x2,y2, kind='sim', strength=2, dashed=false, glow=false}) => { const colors = { sim: '#1c5fbf', comp: '#d96b2c', dup: '#c33a3a', bridge: '#2a8a5c', method: '#7a6cf0', weak: '#bdbab0', }; const c = colors[kind] || '#1a1a1a'; return ( {glow && } ); }; // horizontal section title const SectionLead = ({eyebrow, title, sub, children}) => (
{eyebrow &&
{eyebrow}
}

{title}

{sub &&
{sub}
} {children}
); Object.assign(window, { Box, Pill, Btn, FakeLine, FakePara, Squiggle, Note, LabelTag, Arrow, Browser, Phone, Frame, Node, Edge, SectionLead });