import { CSSProperties, ReactNode } from 'react'; /** * Icon size variants */ export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number; /** * Icon color variants mapped to design tokens */ export type IconColor = 'inherit' | 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error' | 'muted'; /** * Props for the Icon component */ export interface IconProps { /** * Material Symbol name (e.g., 'folder', 'download', 'search') * Use this for Material Symbols font icons */ name?: string; /** * Custom SVG as children (alternative to name) * Use this for custom inline SVG icons */ children?: ReactNode; /** * Size variant or custom size in pixels * @default 'md' */ size?: IconSize; /** * Color variant * @default 'inherit' */ color?: IconColor; /** * Apply spin animation (useful for loading indicators) * @default false */ spin?: boolean; /** * Rotation in degrees */ rotate?: number; /** * Accessible label (required for meaningful icons) * Should be provided when the icon conveys meaning */ 'aria-label'?: string; /** * Hide from screen readers (for decorative icons) * @default false */ 'aria-hidden'?: boolean; /** * Additional CSS classes */ className?: string; /** * Inline styles */ style?: CSSProperties; /** * Test ID for testing (deprecated, use dataTestId) */ 'data-testid'?: string; /** * Test identifier for automated testing */ dataTestId?: string; /** * Data identifier for ib-ui compatibility */ dataId?: string; } //# sourceMappingURL=Icon.types.d.ts.map