import React, { useMemo } from 'react'; import ReactDOMServer from 'react-dom/server'; import { coinbaseWalletSvg } from '../../svg/coinbaseWalletSvg'; type RenderLogoProps = { size: number; logo: { uri: string } | React.ReactNode | undefined; logoSize: number; logoBackgroundColor: string; logoMargin: number; logoBorderRadius: number; }; const defaultSvgString = ReactDOMServer.renderToString(coinbaseWalletSvg); const defaultSvgDataUri = `data:image/svg+xml;charset=utf-8,${encodeURIComponent( defaultSvgString, )}`; export function useLogo({ size, logo = defaultSvgDataUri, logoSize, logoBackgroundColor, logoMargin, logoBorderRadius, }: RenderLogoProps) { const svgLogo = useMemo(() => { const transformedLogo = React.isValidElement(logo) ? `data:image/svg+xml;charset=utf-8,${encodeURIComponent( ReactDOMServer.renderToString(logo), )}` : logo; const logoPosition = (size - logoSize - logoMargin * 2) / 2; const logoBackgroundSize = logoSize + logoMargin * 2; return ( ); }, [logo, logoBackgroundColor, logoBorderRadius, logoMargin, logoSize, size]); return svgLogo; }