import type { ButtonHTMLAttributes, ReactNode } from "react";
import { BusyRing } from "./BusyRing";
export type IconButtonVariant = "neutral" | "add" | "danger";
export interface IconButtonProps extends Omit<
ButtonHTMLAttributes,
"title"
> {
label: string;
icon: ReactNode;
variant?: IconButtonVariant;
loading?: boolean;
tooltip?: string;
}
export function IconButton({
label,
icon,
variant = "neutral",
loading = false,
tooltip,
className,
disabled,
...props
}: IconButtonProps) {
const tooltipText = tooltip === "" ? undefined : (tooltip ?? label);
const classes = [
"ui-icon-button",
`ui-icon-button--${variant}`,
loading ? "is-loading" : "",
className ?? "",
]
.filter(Boolean)
.join(" ");
return (
);
}