import { type TextColor, type ThemeColor } from "../cssUtils.js"; import { type MaterialIconFamily, type MaterialSymbolFamily } from "./material.js"; declare module "react" { interface CSSProperties { "--rmd-icon-color"?: string; "--rmd-icon-size"?: string | number; "--rmd-icon-dense-size"?: string | number; "--rmd-icon-spacing"?: string | number; "--rmd-icon-rotate-from"?: string | number; "--rmd-icon-rotate-to"?: string | number; } } /** * @since 6.0.0 */ export type IconTheme = ThemeColor | TextColor | "currentcolor"; /** @since 6.0.0 */ export interface SVGIconClassNameOptions { className?: string; /** * An optional theme color to apply to the icon. When this is `undefined`, the * default icon color will be used instead. * * - `primary -> $primary-color` * - `secondary -> $secondary-color` * - `warning -> $warning-color` * - `success -> $success-color` * - `error -> $error-color` * - `text-primary -> $text-primary-color` * - `text-secondary -> $text-primary-color` * - `text-hint -> $text-hint-color` * - `text-disabled -> $text-disabled-color` * - `currentcolor -> currentcolor` */ theme?: IconTheme; /** * Boolean if the font icon should use the dense spec. * * @defaultValue `false` */ dense?: boolean; /** * Set this to `true` if the icon should display inline with other text (like * a paragraph) by applying `vertical-align: bottom`. * * @example * ```tsx * * * Some additional information around xyz. * * ``` * * @defaultValue `false` */ inline?: boolean; } /** @since 6.0.0 */ export interface FontIconClassNameOptions extends SVGIconClassNameOptions { /** * The font icon class name to use. * * @defaultValue `"material-icons"` */ iconClassName?: string; } /** @since 6.0.0 */ export interface MaterialIconClassNameOptions extends SVGIconClassNameOptions { family: MaterialIconFamily; } /** @since 6.0.0 */ export interface MaterialSymbolClassNameOptions extends SVGIconClassNameOptions { family: MaterialSymbolFamily; } /** @since 6.0.0 */ export type IconClassNameOptions = ({ type: "font"; } & FontIconClassNameOptions) | ({ type: "svg"; } & SVGIconClassNameOptions) | ({ type: "material"; } & MaterialIconClassNameOptions) | ({ type: "symbol"; } & MaterialSymbolClassNameOptions); /** * * @since 6.0.0 */ export declare function icon(options: IconClassNameOptions): string; /** @since 6.0.0 */ export interface IconRotatorClassNameOptions { className?: string; /** * Boolean if the icon is currently rotated. */ rotated: boolean; /** * Boolean if changing the {@link rotated} state should no longer transition. * * @defaultValue `false` */ disableTransition?: boolean; } /** * * @since 6.0.0 */ export declare function iconRotator(options: IconRotatorClassNameOptions): string;