Newer
Older
cortex-hub / ui / tts-client-app / src / components / Controls.js
// src/components/Controls.js
import React from "react";
import { FaMicrophone, FaRegStopCircle, FaCog } from "react-icons/fa";

const Controls = ({
  status,
  isBusy,
  isRecording,
  isAutoMode,
  isAutoListening,
  onMicClick,
  onToggleAutoMode,
}) => {
  const micButtonColorClass = isRecording
    ? "bg-red-600 hover:bg-red-700 active:bg-red-800"
    : "bg-indigo-600 hover:bg-indigo-700 active:bg-indigo-800";

  const micButtonState =
    isAutoMode && isAutoListening ? isAutoListening : isRecording;

  return (
    <div className="bg-white dark:bg-gray-800 p-4 border-t border-gray-200 dark:border-gray-700 flex flex-col items-center gap-4">
      <div className="text-center text-sm text-gray-500 dark:text-gray-400 font-medium">
        {status}
      </div>
      <div className="flex items-center space-x-4">
        <button
          onClick={onMicClick}
          disabled={isBusy}
          className={`p-4 rounded-full text-white transition-colors duration-200 ease-in-out transform hover:scale-105 active:scale-95 ${micButtonColorClass} disabled:bg-gray-400`}
        >
          {micButtonState ? (
            <FaRegStopCircle size={28} />
          ) : (
            <FaMicrophone size={28} />
          )}
        </button>

        <div className="flex items-center space-x-2">
          <label htmlFor="auto-mode-toggle" className="text-gray-700 dark:text-gray-300">
            Auto Mode
          </label>
          <input
            type="checkbox"
            id="auto-mode-toggle"
            checked={isAutoMode}
            onChange={onToggleAutoMode}
            disabled={isBusy}
            className="h-5 w-5 text-indigo-600 rounded focus:ring-indigo-500"
          />
        </div>
      </div>
    </div>
  );
};

export default Controls;