import { findComponent } from '@/internal/utils/findComponent'; import { cn } from '@/styles/theme'; import { Children, cloneElement, useMemo } from 'react'; import type { ReactNode } from 'react'; import { Address } from './Address'; import { Avatar } from './Avatar'; import { EthBalance } from './EthBalance'; import { Name } from './Name'; import { Socials } from './Socials'; type IdentityLayoutProps = { children: ReactNode; className?: string; hasCopyAddressOnClick?: boolean; }; export function IdentityLayout({ children, className, hasCopyAddressOnClick, }: IdentityLayoutProps) { const { avatar, name, address: addressComponent, ethBalance, socials, } = useMemo(() => { const childrenArray = Children.toArray(children); const addressElement = childrenArray.find(findComponent(Address)); return { avatar: childrenArray.find(findComponent(Avatar)), name: childrenArray.find(findComponent(Name)), address: addressElement ? cloneElement(addressElement, { hasCopyAddressOnClick }) : undefined, ethBalance: childrenArray.find(findComponent(EthBalance)), socials: childrenArray.find(findComponent(Socials)), } as const; }, [children, hasCopyAddressOnClick]); return (