/* ============================================================ SHLOK — shared UI components → window.* ============================================================ */ const { useState, useEffect, useRef, useCallback } = React; const Icon = window.Icon; /* ---------- Liquid glass orb ---------- */ function Orb({ active }) { return (
); } /* ---------- Option card (single / multi / rank / scenario) ---------- */ function OptionCard({ opt, selected, rank, disabled, multi, long, onClick }) { const [pulse, setPulse] = useState(false); const cls = [ "opt", selected ? "sel" : "", disabled ? "disabled" : "", pulse ? "pulse" : "", long ? "long" : "", ].join(" ").trim(); function handle() { if (disabled) return; setPulse(true); setTimeout(() => setPulse(false), 440); onClick(); } return ( ); } /* ---------- Chip ---------- */ function Chip({ opt, selected, onClick }) { return ( ); } /* ---------- Progress header ---------- */ function ProgressHeader({ stepNum, total, onBack, canBack, onBrandHold }) { const holdRef = useRef(null); const pct = Math.round((stepNum / total) * 100); function startHold() { holdRef.current = setTimeout(() => onBrandHold && onBrandHold(), 650); } function endHold() { if (holdRef.current) clearTimeout(holdRef.current); } return (