import { BaseIcon } from "./base-icon"; import type { IconDefinition, IconNode, IconProps } from "./types"; import type { JSX } from "react"; type CreateIconParams = { definition: IconDefinition; }; function renderIconNodes({ nodes }: { nodes: IconNode }) { const elements: Array = []; for (const [index, node] of nodes.entries()) { const Element = node.element; const children = node.children ? renderIconNodes({ nodes: node.children }) : undefined; elements.push( {children} , ); } return elements; } export function createIcon({ definition }: CreateIconParams) { function Icon({ title, size, ...props }: IconProps) { const iconTitle = title ?? definition.title; return ( {renderIconNodes({ nodes: definition.nodes })} ); } Icon.displayName = `${definition.title}Icon`; return Icon; }