import { ComponentProps } from '#/types' /** * Props for individual icon SVG components (e.g., Icon.Code, Icon.Home). * * These props control the visual presentation of SVG icons. Icon components * are decorative by default and should be wrapped in the `Icon` container * component which handles accessibility concerns. * * @property {string} [fill] - SVG fill color (CSS color value) * @property {number} [size] - Icon size in pixels (sets both width and height) * @property {string} [strokeColor] - SVG stroke color (CSS color value) * @property {string} [strokeWidth] - SVG stroke width (e.g., '2px', '1.5') * @property {string} [role] - ARIA role (use 'img' for semantic icons) * @property {string} [aria-label] - Accessible label for standalone icons * @property {boolean} [aria-hidden] - Hide from screen readers (default: true via Icon wrapper) * @property {string} [alt] - @deprecated Use aria-label instead. Legacy prop for accessible label. * @property {number} [width] - Explicit width in pixels (overrides size) * @property {number} [height] - Explicit height in pixels (overrides size) * * @example * ```tsx * // Decorative icon with custom styling * * * View Code * * * // Standalone semantic icon * * * * ``` */ export interface IconProps extends Partial { /** SVG fill color */ fill?: string /** Icon size in pixels (sets both width and height) */ size?: number /** SVG stroke color */ strokeColor?: string /** SVG stroke width */ strokeWidth?: string /** ARIA role (use 'img' for semantic icons) */ role?: string /** Accessible label (required for standalone icons) */ 'aria-label'?: string /** Hide from screen readers (default: true) */ 'aria-hidden'?: boolean /** * @deprecated Use aria-label instead. This prop exists for backward compatibility. * The alt attribute is only valid for img elements, not SVG. */ alt?: string /** Explicit width in pixels */ width?: number /** Explicit height in pixels */ height?: number }