"use client"; import { useEffect, useCallback } from "react"; /** * useVoiceCommand — listens for voice-command CustomEvents * dispatched by the VoiceOrb and calls the appropriate handler. * * Usage in a page: * useVoiceCommand({ * run_research: () => researchRef.current?.click(), * run_confounders: () => confoundersRef.current?.click(), * ... * }); */ export function useVoiceCommand(handlers: Record void>) { const onCommand = useCallback((event: Event) => { const detail = (event as CustomEvent).detail; if (detail?.action && handlers[detail.action]) { handlers[detail.action](); } }, [handlers]); useEffect(() => { window.addEventListener("voice-command", onCommand as EventListener); return () => window.removeEventListener("voice-command", onCommand as EventListener); }, [onCommand]); }