'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 (
);
}