Files
ob248.com/node_modules/@iconify/react/dist/offline.d.cts
2026-02-05 17:31:20 +00:00

210 lines
6.3 KiB
TypeScript

import type { IconifyIcon } from '@iconify/types';
import type { IconifyJSON } from '@iconify/types';
import { IconifyTransformations } from '@iconify/types';
import type { JSX as JSX_2 } from 'react';
import type { ReactNode } from 'react';
import type { SVGProps } from 'react';
/**
* Add collection to storage, allowing to call icons by name
*
* @param data Icon set
* @param prefix Optional prefix to add to icon names, true (default) if prefix from icon set should be used.
*/
export declare function addCollection(data: IconifyJSON, prefix?: string | boolean): void;
/**
* Add icon to storage, allowing to call it by name
*
* @param name
* @param data
*/
export declare function addIcon(name: string, data: IconifyIcon): void;
/**
* Block icon
*
* @param props - Component properties
*/
export declare const Icon: IconComponentType;
declare type IconComponentType = (props: IconProps) => JSX_2.Element;
/**
* React component properties: generic element for Icon component, SVG for generated component
*/
declare type IconifyElementProps = SVGProps<SVGSVGElement>;
export { IconifyIcon }
/**
* Icon customisation properties
*
* Extends the base Iconify icon customisations with React-specific options.
* These properties control the appearance and behavior of the icon.
*/
export declare type IconifyIconCustomisations = IconifyIconCustomisations_2 & {
/**
* Rotation angle for the icon
*
* Can be specified as:
* - String with units: "90deg", "0.5turn", "1.5708rad"
* - Number representing quarter-turns: 0=0°, 1=90°, 2=180°, 3=270°
*
* @example
* ```tsx
* <Icon icon="bi:check2-circle" /> // No rotation
* <Icon icon="bi:check2-circle" rotate="90deg" /> // 90° clockwise
* <Icon icon="bi:check2-circle" rotate={2} /> // 180° rotation
* <Icon icon="bi:check2-circle" rotate="0.5turn" /> // 180° rotation
* ```
*
* @see https://iconify.design/docs/icon-components/react/transform.html#rotation
*/
rotate?: string | number;
/**
* Display mode for the icon
*
* When `true`, the icon is displayed as an inline element with baseline
* vertical alignment. When `false`, it's displayed as a block element
* with middle vertical alignment.
*
* @default false
*
* @example
* ```tsx
* <Icon icon="mdi:home" inline /> // Aligns with text baseline
* <Icon icon="mdi:home" /> // Centers vertically
* ```
*
* @see https://iconify.design/docs/icon-components/react/inline.html
*/
inline?: boolean;
};
/**
* Icon customisations
*/
declare interface IconifyIconCustomisations_2 extends IconifyTransformations, IconifyIconSizeCustomisations {}
/**
* Callback function invoked when icon data has been loaded from the API
*
* @param name - The name of the icon that was loaded (e.g., "mdi:home")
*/
declare type IconifyIconOnLoad = (name: string) => void;
/**
* Icon properties
*/
export declare interface IconifyIconProps extends IconifyIconCustomisations {
/**
* The icon to render
*
* Can be either:
* - An icon object (IconifyIcon) containing SVG data
* - A string with icon name in format "prefix:name" (must be loaded first)
*
* @see https://iconify.design/docs/icon-components/react/#icon
*/
icon: IconifyIcon | string;
/**
* Rendering mode for the icon
* @see {@link IconifyRenderMode}
*/
mode?: IconifyRenderMode;
/**
* Icon color (for monotone icons only)
*
* Only affects monotone icons. Icons with hardcoded palettes (like emoji)
* cannot be recolored. Accepts any valid CSS color value.
*
* @see https://iconify.design/docs/icon-components/react/color.html
*/
color?: string;
/**
* Flip transformation shorthand
*
* Convenient way to flip icons horizontally and/or vertically.
*
* @example
* flip="horizontal"
* flip="vertical"
* flip="horizontal,vertical"
*
* @see https://iconify.design/docs/icon-components/react/transform.html#flip
*/
flip?: string;
/**
* Unique identifier for the icon
*
* Used as base for generating unique IDs for SVG elements and shapes.
* Ensures consistent IDs for server-side rendering and accessibility.
*/
id?: string;
/**
* Server-side rendering mode
*
* When `true`, icon renders immediately without waiting for component
* to mount. Useful for server-side rendering to prevent hydration issues.
*/
ssr?: boolean;
/**
* Fallback content while icon is loading or failed to load
*
* Displayed before the icon is loaded and rendered. If not provided,
* an empty span will be rendered as placeholder.
*/
fallback?: ReactNode;
/**
* Callback fired when icon data is loaded
*
* Only triggered for icons loaded from the Iconify API. Not called
* for icons that are already available or provided as objects.
*/
onLoad?: IconifyIconOnLoad;
}
/**
* Icon size
*/
export declare type IconifyIconSize = null | string | number;
/**
* Dimensions
*/
declare interface IconifyIconSizeCustomisations {
width?: IconifyIconSize;
height?: IconifyIconSize;
}
export { IconifyJSON }
/**
* Icon rendering mode
*
* Defines how the icon should be rendered in the DOM.
*
* - `'svg'` - Render as SVG element (recommended, best compatibility)
* - `'style'` - Auto-detect between 'bg' or 'mask' based on icon content
* - `'bg'` - Render as `<span>` with `background-image` CSS property
* - `'mask'` - Render as `<span>` with `mask-image` CSS property
*
* @see https://iconify.design/docs/icon-components/react/render-modes.html
*/
export declare type IconifyRenderMode = 'style' | 'bg' | 'mask' | 'svg';
/**
* Mix of icon properties and SVGSVGElement properties
*/
export declare type IconProps = IconifyElementProps & IconifyIconProps;
/**
* Inline icon (has negative verticalAlign that makes it behave like icon font)
*
* @param props - Component properties
*/
export declare const InlineIcon: IconComponentType;
export { }