'use client'; import { useIsMounted } from '@/internal/hooks/useIsMounted'; import { NFTLifecycleProvider } from '@/nft/components/NFTLifecycleProvider'; import { NFTProvider } from '@/nft/components/NFTProvider'; import { useNFTData as defaultUseNFTData } from '@/nft/hooks/useNFTData'; import { Lifecycle, type NFTCardProps } from '@/nft/types'; import { useCallback } from 'react'; import { useAccount } from 'wagmi'; import { cn, pressable } from '../../styles/theme'; import NFTErrorBoundary from './NFTErrorBoundary'; import { NFTErrorFallback } from './NFTErrorFallback'; import { NFTLastSoldPrice, NFTMedia, NFTNetwork, NFTOwner, NFTTitle, } from './view'; function NFTCardDefaultContent() { return ( <> ); } export function NFTCard({ children = , className, contractAddress, tokenId, useNFTData = defaultUseNFTData, onStatus, onError, onSuccess, }: NFTCardProps) { const isMounted = useIsMounted(); const { chain } = useAccount(); const handleOnClick = useCallback(() => { const network = chain?.name.toLowerCase() ?? 'base'; const zoraUrl = `https://zora.co/collect/${network}:${contractAddress}/${tokenId}`; window.open(zoraUrl, '_blank', 'noopener,noreferrer'); }, [chain, contractAddress, tokenId]); // prevents SSR hydration issue if (!isMounted) { return null; } return ( ); }