import type { CSSProperties, ReactNode } from "react"; import type { IconSize } from "../../types/icon.js"; import { type SvgColor } from "../../utils/svg-color.js"; /** * Consumer-facing props for the generated Icon component. */ export interface IconProps extends Omit { className?: string; color?: IconColor; size?: IconSize; style?: Omit; } /** * Supported icon color options. */ export type IconColor = SvgColor; /** * Base icon component used by all generated named icon components. * * @private Internal component - not for direct consumer use * * @remarks Icon sizing: * - All icons have a consistent height (validated at build time) * - Some icons are not square - width varies to preserve the design * - The `size` prop controls height and automatically adjusts width to maintain aspect ratio * * @remarks Performance: * - Uses JSX children instead of dangerouslySetInnerHTML for better React reconciliation * - On re-renders, React can skip DOM updates if children haven't changed */ export declare const BaseIcon: import("react").NamedExoticComponent; type ReservedCSSProps = "color" | "width" | "height"; type AllSVGProps = React.SVGProps; type ReservedSVGProps = "color" | "size" | "width" | "height" | "fill" | "viewBox"; /** * Internal props for the BaseIcon component. * @private Internal types - not for direct consumer use */ interface BaseIconProps extends IconProps { $generated: GeneratedIconProps; children: ReactNode; } /** * Icon props that will be provided at build time. */ interface GeneratedIconProps { aspectRatio: number; /** * Set for glyphs that are (roughly) a circle filling their box * (check-circle, cross-circle, …). Emitted as `data-glyph` so * layout-aware containers can adapt automatically. Curated in * `scripts/icons/_build/circular-glyphs.ts`. */ glyph?: "circular"; height: number; viewBox: string; } export {}; //# sourceMappingURL=base-icon.d.ts.map