components/controls.tsx (42 lines of code) (raw):
import React from "react";
import { Mic, MicOff, Wifi } from "lucide-react";
interface ControlsProps {
isConnected: boolean;
isListening: boolean;
handleConnectClick: () => void;
handleMicToggleClick: () => void;
}
const Controls: React.FC<ControlsProps> = ({
isConnected,
isListening,
handleConnectClick,
handleMicToggleClick,
}) => {
return (
<div className="absolute top-4 right-4 flex items-center z-10">
<div
className="flex bg-slate-800 p-2.5 items-center rounded-full mr-2 cursor-pointer"
onClick={handleConnectClick}
>
<Wifi
className={`h-6 w-6 ${
isConnected ? "text-green-500" : "text-red-500"
}`}
/>
</div>
<div
className={`flex bg-slate-800 p-2.5 items-center rounded-full ${
isConnected ? "cursor-pointer" : "cursor-not-allowed"
}`}
onClick={handleMicToggleClick}
>
{isListening ? (
<Mic className="h-6 w-6 text-green-500" />
) : (
<MicOff className="h-6 w-6 text-red-500" />
)}
</div>
</div>
);
};
export default Controls;