// All modal overlays for the prototype. const { useState: useStateM, useEffect: useEffectM } = React; const Modal = ({ title, sub, onClose, children, footer, wide }) => { useEffectM(() => { const k = (e) => { if (e.key === 'Escape') onClose(); }; document.addEventListener('keydown', k); return () => document.removeEventListener('keydown', k); }, []); return (
e.stopPropagation()} style={ wide ? { maxWidth: 920 } : null }>

{title}

{sub && {sub}}
{children}
{footer &&
{footer}
}
); }; // ────────────────────────────────────────────────────────────────────────────── // Reasoning trail expanded const TrailModal = ({ onClose }) => { const D = window.OMNI_DATA; const [showDax, setShowDax] = useStateM(false); const totalMs = D.DEMO_TRAIL.reduce((s, t) => s + t.ms, 0); const totalTok = D.DEMO_TRAIL.reduce((s, t) => s + t.tokens, 0); return (
$0.0144 · 2 LLM calls }>
{D.DEMO_TRAIL.map((s, i) => (
{String(i+1).padStart(2, '0')}
{s.tool}
{s.detail}
{s.ms}ms · {s.tokens.toLocaleString()} tokens
{showDax && s.dax &&
{s.dax}
}
))}
); }; // ────────────────────────────────────────────────────────────────────────────── // Data sources picker const SourcesModal = ({ active, onToggle, onClose, autoRoute, setAutoRoute }) => { const D = window.OMNI_DATA; return (
setAutoRoute(!autoRoute)}/> Auto-route based on question
}>
Pick the dashboards OmniBuddy is allowed to query. Power users can pin specific sources; analysts working across domains should usually leave auto-route on.
{D.AGENTS.map(a => { const on = active.includes(a.id); return (
onToggle(a.id)}>
{a.icon}
{a.name}
{a.desc}
{on && }
); })}
); }; // ────────────────────────────────────────────────────────────────────────────── // Saved questions const SavedModal = ({ onClose, onSchedule }) => { const D = window.OMNI_DATA; return (
}>
{D.SAVED_QUESTIONS.map(q => { const A = D.AGENTS.find(a => a.id === q.agent); return (
{A.icon}
{q.title}
{q.schedule}  · last run {q.last}  ·  sent to {q.recipients} {q.recipients === 1 ? 'person' : 'people'}
); })}
); }; // ────────────────────────────────────────────────────────────────────────────── // Schedule modal const ScheduleModal = ({ onClose, defaultQ }) => { const [q, setQ ] = useStateM(defaultQ || 'FY27 secured sales — Americas, exact figures'); const [freq, setFreq] = useStateM('weekly'); const [day, setDay ] = useStateM('Monday'); const [time, setTime] = useStateM('08:00'); const [emails, setEmails] = useStateM('priya.k@omniactive.com, exec-team@omniactive.com'); const field = { display: 'flex', flexDirection: 'column', gap: 6, marginBottom: 14 }; const lbl = { fontSize: 11, letterSpacing: '.08em', textTransform: 'uppercase', color: 'var(--muted-2)', fontWeight: 600 }; const input = { padding: '10px 12px', border: '1px solid var(--line)', borderRadius: 10, background: 'transparent', color: 'var(--ink)', font: '13.5px var(--font-sans)', outline: 'none' }; return (
}>
Question