import type { ButtonHTMLAttributes } from "react";
import { cn } from "./cn.ts";
export type IconButtonVariant = "ghost" | "secondary";
export type IconButtonSize = "sm" | "md";
export interface IconButtonProps
extends Omit, "aria-label"> {
/** Required accessible name — the button has no visible text. */
label: string;
variant?: IconButtonVariant;
size?: IconButtonSize;
}
const base =
"inline-flex items-center justify-center rounded-md transition-colors " +
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent " +
"focus-visible:ring-offset-1 focus-visible:ring-offset-bg " +
"disabled:pointer-events-none disabled:opacity-30";
const variants: Record = {
ghost: "text-text-md hover:bg-bg-subtle hover:text-text-hi",
secondary:
"border border-border bg-bg-raised text-text-hi hover:bg-bg-subtle",
};
const sizes: Record = {
sm: "h-7 w-7",
md: "h-9 w-9",
};
export function IconButton({
label,
variant = "ghost",
size = "md",
className,
type = "button",
title,
...props
}: IconButtonProps) {
return (
);
}