import * as react from 'react';
import { HTMLAttributes, ComponentType } from 'react';
interface IconProps extends HTMLAttributes {
/** Icon container size */
size?: "xs" | "sm" | "md" | "lg" | "xl";
/** Icon name to resolve from the registered icon set (e.g., "rocket", "arrow-right") */
name?: string;
/** Which registered icon set to use (defaults to the configured default) */
iconSet?: string;
}
declare const Icon: react.ForwardRefExoticComponent>;
interface IconSet {
resolve: (name: string) => ComponentType<{
className?: string;
size?: number;
}> | null;
}
type IconComponent = ComponentType<{
className?: string;
size?: number;
}>;
/** Register an icon set as an addendum (supplements every base set). */
declare function registerIconAddendum(set: IconSet): void;
/**
* Register individual icon components by their kebab-case name.
*
* ```tsx
* import { registerIcons } from "@particle-academy/react-fancy";
* import { Home, Settings, Mail } from "lucide-react";
*
* registerIcons({ Home, Settings, Mail });
* ```
*
* Icons are registered into the default "lucide" icon set and resolved
* by the `` component using kebab-case names.
*/
declare function registerIcons(icons: Record>): void;
declare function registerIconSet(name: string, set: IconSet): void;
declare function configureIcons(options: {
defaultSet?: string;
}): void;
declare function resolveIcon(name: string, setName?: string): IconComponent | null;
export { Icon, type IconProps, type IconSet, configureIcons, registerIconAddendum, registerIconSet, registerIcons, resolveIcon };