import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';
import { cn } from '@/utils/classNames';
export interface IconButtonProps extends ButtonHTMLAttributes {
readonly label: string;
readonly icon: ReactNode;
readonly size?: 'sm' | 'md' | 'lg';
readonly variant?: 'solid' | 'ghost' | 'outline';
}
const sizeClasses = {
sm: 'size-9 rounded-xl',
md: 'size-10 rounded-xl',
lg: 'size-12 rounded-2xl'
} as const;
const variantClasses = {
solid: 'border-border/80 bg-elevated text-foreground hover:border-accent/45 hover:bg-accent/12',
ghost: 'border-transparent bg-transparent text-muted hover:bg-elevated/75 hover:text-foreground',
outline: 'border-border/80 bg-transparent text-foreground hover:border-accent/55 hover:bg-accent/10'
} as const;
export const IconButton = forwardRef(function IconButton(
{ className, icon, label, size = 'md', type = 'button', variant = 'ghost', ...props },
ref,
) {
return (
);
});