tmai 1.4.0

Tactful Multi Agent Interface - Monitor and control multiple AI coding agents
Documentation
import { useState } from "react";
import { useThemeStore } from "../../stores/theme";
import { ConnectionIndicator } from "../common/ConnectionIndicator";
import { SpawnDialog } from "../spawn/SpawnDialog";

interface HeaderProps {
  connected: boolean;
}

export function Header({ connected }: HeaderProps) {
  const { theme, toggle } = useThemeStore();
  const [showSpawn, setShowSpawn] = useState(false);

  return (
    <>
      <header className="flex h-12 shrink-0 items-center justify-between border-b border-neutral-300 bg-neutral-200 px-4 dark:border-neutral-800 dark:bg-transparent">
        <div className="flex items-center gap-2">
          <span className="text-lg font-bold tracking-tight">tmai</span>
        </div>
        <div className="flex items-center gap-3">
          <button
            type="button"
            onClick={() => setShowSpawn(true)}
            className="rounded bg-blue-600 px-3 py-1 text-sm font-medium text-white hover:bg-blue-500"
            title="Spawn a new agent"
          >
            + Spawn
          </button>
          <ConnectionIndicator connected={connected} />
          <button
            type="button"
            onClick={toggle}
            className="rounded p-1.5 text-sm hover:bg-neutral-200 dark:hover:bg-neutral-800"
            aria-label={`Switch to ${theme === "dark" ? "light" : "dark"} theme`}
            title={`Switch to ${theme === "dark" ? "light" : "dark"} theme`}
          >
            {theme === "dark" ? "🌙" : "☀️"}
          </button>
        </div>
      </header>
      {showSpawn && <SpawnDialog onClose={() => setShowSpawn(false)} />}
    </>
  );
}