File size: 990 Bytes
e859fb0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { cn } from "@/lib/utils";

export type Mode = "single" | "dialog";

type Props = {
  mode: Mode;
  onChange: (m: Mode) => void;
};

const MODES: { id: Mode; label: string }[] = [
  { id: "single", label: "Single voice" },
  { id: "dialog", label: "Dialog" },
];

export default function ModeToggle({ mode, onChange }: Props) {
  return (
    <div
      role="tablist"
      aria-label="Generation mode"
      className="inline-flex rounded-sm border border-border overflow-hidden"
    >
      {MODES.map((m) => (
        <button
          key={m.id}
          role="tab"
          aria-selected={mode === m.id}
          type="button"
          onClick={() => onChange(m.id)}
          className={cn(
            "label-mono px-3 py-1.5 transition-colors",
            mode === m.id
              ? "bg-[hsl(var(--ember))]/15 text-[hsl(var(--ember))]"
              : "hover:text-foreground",
          )}
        >
          {m.label}
        </button>
      ))}
    </div>
  );
}