/** * Standardized icon sizing and styling utilities */ export const iconSizes = { xs: 'h-3 w-3', sm: 'h-4 w-4', md: 'h-5 w-5', lg: 'h-6 w-6', xl: 'h-8 w-8', '2xl': 'h-10 w-10', } as const; export type IconSize = keyof typeof iconSizes; export const iconVariants = { default: 'text-current', muted: 'text-muted-foreground', primary: 'text-primary', destructive: 'text-destructive', success: 'text-green-600', warning: 'text-yellow-600', } as const; export type IconVariant = keyof typeof iconVariants; export interface IconProps { size?: IconSize; variant?: IconVariant; className?: string; } export interface ExtendedIconProps extends IconProps { width?: number; height?: number; } /** * Helper function to combine icon size and variant classes */ export const getIconClasses = (size: IconSize = 'sm', variant: IconVariant = 'default', className = '') => { return `${iconSizes[size]} ${iconVariants[variant]} ${className}`.trim(); };