/**
* BridgeStatusPanel — Shows the connection status of a Teams meeting bridge.
*
* Displays:
* - Connected/disconnected state with visual indicator
* - Meeting chat ID
* - Messages ingested count
* - Voice detection toggle (chat-only vs chat+voice)
* - Disconnect button
*
* This is a compact panel meant to sit inside the MeetingRoom right rail
* or as an overlay badge.
*/
import React, { useState } from 'react';
import { Wifi, Mic, MessageSquare, Unplug, RefreshCw, ChevronDown, ChevronUp, } from 'lucide-react';
// ---------------------------------------------------------------------------
// Component
// ---------------------------------------------------------------------------
export function BridgeStatusPanel({ status, onDisconnect, onToggleVoice, onRefresh, loading, }) {
const [expanded, setExpanded] = useState(false);
if (!status || !status.connected) {
return null; // Don't render if not connected
}
const bridge = status.bridge;
const voiceEnabled = bridge?.voice_enabled ?? false;
const messagesSeen = bridge?.messages_seen ?? 0;
const chatId = bridge?.chat_id || '(resolving...)';
return (
{/* Header — always visible */}
{/* Expanded details */}
{expanded && (
{/* Chat ID */}
{/* Stats */}
Poll Rate
{bridge?.poll_interval || 5}s
{/* Voice toggle */}
Input Mode
{/* Actions */}
)}
);
}
// ---------------------------------------------------------------------------
// Compact badge variant (for inline use in headers)
// ---------------------------------------------------------------------------
export function BridgeBadge({ status, onClick, }) {
if (!status?.connected)
return null;
const voiceEnabled = status.bridge?.voice_enabled ?? false;
const messagesSeen = status.bridge?.messages_seen ?? 0;
return ();
}