function VirtualLab({ onNavigate }) { const [current, setCurrent] = React.useState(2); const steps = [ { n: 1, t: 'PPE check & safety briefing', done: true }, { n: 2, t: 'Machine setup — voltage, wire, gas', done: false, current: true }, { n: 3, t: 'Workpiece positioning', done: false }, { n: 4, t: 'Tack weld both ends', done: false }, { n: 5, t: 'Root pass', done: false }, { n: 6, t: 'Filler & capping pass', done: false }, { n: 7, t: 'Post-weld inspection', done: false }, ]; return (
{/* Left — Tool tray */} {/* Center — Sim viewport */}
● LIVE SIMULATION ATTEMPT 3 · 00:04:22
{/* Crosshair / target */}
{/* Bottom HUD readouts */}
{[ { l: 'ARC VOLTAGE', v: '22.4', u: 'V', ok: true }, { l: 'WIRE FEED', v: '4.8', u: 'm/min', ok: true }, { l: 'TRAVEL SPEED', v: '285', u: 'mm/min', warn: true }, { l: 'TORCH ANGLE', v: '72°', u: '', ok: true }, { l: 'STICK-OUT', v: '14', u: 'mm', ok: true }, ].map(r => (
{r.l}
{r.v}{r.u}
))}
Slow down: travel speed is 12% high
{/* Attempt score bar */}
LIVE SCORE
82/100
{[ { l: 'Bead uniformity', v: 88 }, { l: 'Penetration', v: 76 }, { l: 'Speed control', v: 71 }, { l: 'Safety compliance', v: 100 }, ].map(m => (
{m.l} {m.v}
= 85 ? 'var(--green-600)' : m.v >= 70 ? 'var(--saffron-500)' : 'var(--red-600)', borderRadius: 999 }} />
))}
{/* Right — Exercise steps */}
); } window.VirtualLab = VirtualLab;