/* Vooice — mobile screens, on iOS frame. - MobileLiveCall: viewing the live outbound call from your phone - MobileChat: telegram-style async thread with Vooice (text + voice clip) */ function MobileLiveCall({ tweaks }) { const [tSec, setTSec] = React.useState(8); React.useEffect(() => { const id = setInterval(() => setTSec(t => (t + 0.1) % 46), 100); return () => clearInterval(id); }, []); return (
{/* Top */}
← BACK VOOICE / LIVE ···
OUTBOUND · ON THE LINE
Bayview Hair
Studio
Booking Thursday at 2 with Marcus.
{/* Wave */}
VOOICE 00:{(20 + Math.floor(tSec)).toString().padStart(2,'0')}
{/* Live transcript bubble */}
MARCUS · 00:13
"Sure, let me check… we have Wednesday 3:30 with Lina, or Thursday 2 with Marcus."
VOOICE · NOW
"Thursday at 2 works for Jordan's calendar. Could you confirm 45 minutes, on the books as Marcus Wu?"
{/* Big buttons */}
); } function MobileChat() { return (
{/* Top */}
← TELEGRAM
vooice
i
{/* Day stamp */}
TODAY · APR 8
{/* You */} Can you call Bayview Hair and book a haircut this week? Wed or Thu afternoon. {/* Vooice voice clip reply */}
· · · 4 minutes · · ·
{/* Update card */}
BOOKED
Thu Apr 11 · 2:00–2:45 PM
Marcus Wu · Bayview Hair Studio
"Marcus is the same one cutting your hair — he's the owner. He said hi."
📅 ADDED · 🔔 30 MIN BEFORE
Nice. Did he ask about the cancellation last time? No — and he didn't seem to remember. I logged it as resolved. k thx
{/* Composer */}
Message Vooice…
); } function Bub({ side, t, voice, children }) { const isMe = side === 'me'; return (
{isMe ? 'YOU' : 'VOOICE'} · {t}
{children}
); } function VoiceClip({ duration, caption }) { return (
{duration}
{caption}
); } window.MobileLiveCall = MobileLiveCall; window.MobileChat = MobileChat;