forked from cerc-io/snowballtools-base
⚡️ feat: create cloneIcon
util function
This commit is contained in:
parent
2b78cab849
commit
7e6b74208d
17
packages/frontend/src/utils/cloneIcon.tsx
Normal file
17
packages/frontend/src/utils/cloneIcon.tsx
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import { Children, cloneElement, isValidElement } from 'react';
|
||||||
|
import type { Attributes, ReactElement, ReactNode } from 'react';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clones an icon element with optional additional props.
|
||||||
|
* @param {ReactNode} icon - The icon element to clone.
|
||||||
|
* @param {Attributes & P} [props] - Additional props to apply to the cloned icon.
|
||||||
|
* @returns {ReactNode} - The cloned icon element with the applied props.
|
||||||
|
*/
|
||||||
|
export function cloneIcon<P extends object>(
|
||||||
|
icon: ReactNode,
|
||||||
|
props?: Attributes & P,
|
||||||
|
): ReactNode {
|
||||||
|
return Children.map(icon, (child) =>
|
||||||
|
isValidElement(child) ? cloneElement(child as ReactElement, props) : child,
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user