/* @component-map * App — Main container, handles view switching and tab navigation * BracketRegion — Renders a single region's bracket grid with all rounds * FinalFour — Renders Final Four matchups and national champion * UpsetsInsights — Renders predicted upsets and key bracket strategy insights * @end-component-map */ import { BracketRegion } from './components/BracketRegion.jsx'; import { FinalFour } from './components/FinalFour.jsx'; import { UpsetsInsights } from './components/UpsetsInsights.jsx'; import { useState } from 'react'; import { buildAllRegions, REGIONS } from './components/bracketData.jsx'; const TABS = [ { id: 'east', label: '🏀 East' }, { id: 'west', label: '🏀 West' }, { id: 'midwest', label: '🏀 Midwest' }, { id: 'south', label: '🏀 South' }, { id: 'final4', label: '🏆 Final Four' }, { id: 'upsets', label: '⚡ Upsets & Insights' }, ]; const ALL_RESULTS = buildAllRegions(); function App() { const [view, setView] = useState('east'); return (

2026 March Madness Bracket

V4.1 — KENPOM + HISTORICAL CALIBRATION + COACHING + EXPERT PICKS + INJURIES

Eight-layer KenPom model calibrated to historical upset rates (~6-7/R64) and Final Four seed distribution (avg 1.6 one-seeds/FF). Duke falls to Michigan State in E8. Arizona wins it all.

{TABS.map(t => ( ))}
{view === 'final4' && } {view === 'upsets' && } {['east', 'west', 'midwest', 'south'].includes(view) && ( )}
); } ReactDOM.createRoot(document.getElementById("root")).render();