mirror of
https://github.com/hex248/ob248.com.git
synced 2026-02-08 10:43:38 +00:00
210 lines
6.3 KiB
TypeScript
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 { }
|