a tool for shared writing and social publishing
1import { type ReactNode } from "react";
2
3export function ToggleGroup<T extends string>(props: {
4 value: T;
5 onChange: (value: T) => void;
6 options: { value: T; label: ReactNode }[];
7 className?: string;
8 optionClassName?: string;
9}) {
10 return (
11 <div
12 className={`flex gap-1 p-1 bg-accent-1 rounded-lg text-sm ${props.className || ""}`}
13 >
14 {props.options.map((option) => (
15 <button
16 key={option.value}
17 type="button"
18 className={`px-1 rounded-md ${
19 props.value === option.value
20 ? "bg-accent-2 font-bold text-accent-1"
21 : "bg-transparent text-accent-2"
22 }
23 ${props.optionClassName}
24 `}
25 onClick={() => props.onChange(option.value)}
26 >
27 {option.label}
28 </button>
29 ))}
30 </div>
31 );
32}