import { C as ComponentProps } from './component-props-50e69975.js';
import React from 'react';
import { U as UI } from './ui-40a4a170.js';
/**
* 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
*
*
*
* ```
*/
interface IconProps$1 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;
}
declare function Star({ size, fill, strokeColor, styles, role, alt, ...props }: Pick): React.JSX.Element;
declare namespace Star {
var displayName: string;
}
type IconProps = React.ComponentProps & {
/**
* Controls screen reader visibility.
* - `true` (default): Hides icon from screen readers (decorative icon)
* - `false`: Makes icon visible to screen readers (semantic icon)
*
* **When to use decorative (aria-hidden="true", default):**
* - Icon accompanies visible text (e.g., button with icon + label)
* - Icon is purely visual decoration
*
* **When to use semantic (aria-hidden="false"):**
* - Icon is the only content (e.g., icon-only button)
* - Must provide `aria-label` or `aria-labelledby` for accessible name
*
* @default true
* @see https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html
*/
"aria-hidden"?: boolean;
/**
* Accessible label for semantic icons.
* Required when icon is standalone (not accompanied by visible text).
*
* @example
* ```tsx
* // ✅ GOOD: Icon-only button with accessible name
*
*
* // ✅ GOOD: Icon with visible text (default decorative)
*
* ```
*/
"aria-label"?: string;
/**
* Semantic role override.
* Use `role="img"` when icon conveys meaning and is not decorative.
*
* @default undefined (no role for decorative icons)
*/
role?: string;
};
/**
* Icon wrapper component that enforces accessibility best practices.
*
* **Default behavior (decorative icon):**
* - Hidden from screen readers (`aria-hidden="true"`)
* - Used when icon accompanies visible text
*
* **Semantic icon pattern:**
* - Set `aria-hidden={false}` to expose to screen readers
* - Must provide `aria-label` for accessible name
* - Consider `role="img"` for complex SVG icons
*
* @param {IconProps} props - Component props
* @returns {React.ReactElement} Accessible icon wrapper
*
* @example
* // ✅ Decorative icon with text (default)
*
*
* @example
* // ✅ Semantic icon-only button
*
*
* @example
* // ❌ BAD: Icon-only button without accessible name
*
*/
declare const Icon: {
({ id, classes, children, styles, "aria-hidden": ariaHidden, "aria-label": ariaLabel, role, ...props }: IconProps): React.JSX.Element;
displayName: string;
Add: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
styles: {
fill: string;
display: string;
alignItems: string;
width: string;
};
displayName: string;
};
ArrowDown: {
({ fill, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
styles: {
display: string;
alignItems: string;
width: string;
};
displayName: string;
};
ArrowLeft: {
({ strokeColor, fill, size, styles, role, alt, ...props }: Pick): React.JSX.Element;
styles: {
display: string;
alignItems: string;
width: string;
};
displayName: string;
};
ArrowRight: {
({ size, fill, strokeColor, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
};
ArrowUp: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Chat: {
({ size, strokeColor, styles, role, alt, ...props }: Pick): JSX.Element;
styles: {
display: string;
alignItems: string;
width: string;
};
displayName: string;
};
Code: {
({ strokeColor, fill, size, styles, role, alt, ...props }?: Pick): React.JSX.Element;
styles: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Copy: {
({ size, strokeColor, styles, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
styles: {
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Down: {
({ size, fill, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
display: string;
alignItems: string;
width: string;
};
};
Home: {
({ strokeColor, fill, size, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Info: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
};
InfoSolid: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
};
AlertSolid: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
};
Left: {
({ fill, size, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
fill: string;
display: string;
alignItems: string;
width: string;
};
};
Minus: {
({ size, fill, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
fill: string;
};
};
Pause: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
PauseSolid: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Play: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
PlaySolid: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Remove: {
({ size, fill, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
fill: string;
};
};
Resume: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
ResumeSolid: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Right: {
({ size, fill, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
fill: string;
};
};
Star: typeof Star;
Stop: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
}; /**
* Controls screen reader visibility.
* - `true` (default): Hides icon from screen readers (decorative icon)
* - `false`: Makes icon visible to screen readers (semantic icon)
*
* **When to use decorative (aria-hidden="true", default):**
* - Icon accompanies visible text (e.g., button with icon + label)
* - Icon is purely visual decoration
*
* **When to use semantic (aria-hidden="false"):**
* - Icon is the only content (e.g., icon-only button)
* - Must provide `aria-label` or `aria-labelledby` for accessible name
*
* @default true
* @see https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html
*/
};
StopSolid: {
({ strokeColor, styles, size, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
style: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
};
Up: {
({ size, fill, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
display: string;
alignItems: string;
width: string;
};
};
User: {
({ size, fill, strokeColor, styles, alt, role, ...props }: Pick): React.JSX.Element;
styles: {
fill: string;
stroke: string;
display: string;
alignItems: string;
width: string;
};
displayName: string;
};
styles: {
display: string;
direction: string;
gap: string;
placeItems: string;
width: string;
};
QuestionSolid: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
};
WarnSolid: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
};
SuccessSolid: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
};
AlertSquareSolid: {
({ fill, size, role, alt, ...props }: Pick): JSX.Element;
displayName: string;
};
Close: {
({ size, fill, styles, role, alt, ...props }: Pick): React.JSX.Element;
displayName: string;
styles: {
fill: string;
};
};
};
export { IconProps$1 as I, Icon as a, IconProps as b };