diff --git a/.changeset/red-cooks-juggle.md b/.changeset/red-cooks-juggle.md new file mode 100644 index 00000000000..061f3b9c6ba --- /dev/null +++ b/.changeset/red-cooks-juggle.md @@ -0,0 +1,5 @@ +--- +"thirdweb": patch +--- + +Fix `NFTMetadata` type diff --git a/apps/dashboard/src/@/components/Responsive.tsx b/apps/dashboard/src/@/components/Responsive.tsx new file mode 100644 index 00000000000..b5a6a88d198 --- /dev/null +++ b/apps/dashboard/src/@/components/Responsive.tsx @@ -0,0 +1,25 @@ +"use client"; +import { Suspense } from "react"; +import { ClientOnly } from "../../components/ClientOnly/ClientOnly"; +import { useIsMobile } from "../hooks/use-mobile"; + +export function ResponsiveLayout(props: { + desktop: React.ReactNode; + mobile: React.ReactNode; + fallback: React.ReactNode; + debugMode?: boolean; +}) { + const isMobile = useIsMobile(); + + if (props.debugMode) { + return props.fallback; + } + + return ( + + + {isMobile ? props.mobile : props.desktop} + + + ); +} diff --git a/apps/dashboard/src/@/components/blocks/media-renderer.tsx b/apps/dashboard/src/@/components/blocks/media-renderer.tsx new file mode 100644 index 00000000000..929a21ef416 --- /dev/null +++ b/apps/dashboard/src/@/components/blocks/media-renderer.tsx @@ -0,0 +1,37 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { MediaRenderer, type MediaRendererProps } from "thirdweb/react"; +import { cn } from "../../lib/utils"; +import { Skeleton } from "../ui/skeleton"; + +export function CustomMediaRenderer(props: MediaRendererProps) { + const [loadedSrc, setLoadedSrc] = useState(undefined); + + // eslint-disable-next-line no-restricted-syntax + useEffect(() => { + if (loadedSrc && loadedSrc !== props.src) { + setLoadedSrc(undefined); + } + }, [loadedSrc, props.src]); + + return ( +
{ + if (props.src) { + setLoadedSrc(props.src); + } + }} + > + {!loadedSrc && } + div]:!bg-accent [&_a]:!text-muted-foreground [&_a]:!no-underline [&_svg]:!size-6 [&_svg]:!text-muted-foreground relative z-10", + )} + /> +
+ ); +} diff --git a/apps/dashboard/src/@/components/blocks/wallet-address.tsx b/apps/dashboard/src/@/components/blocks/wallet-address.tsx index 5993b1a6845..848d647c340 100644 --- a/apps/dashboard/src/@/components/blocks/wallet-address.tsx +++ b/apps/dashboard/src/@/components/blocks/wallet-address.tsx @@ -24,6 +24,7 @@ export function WalletAddress(props: { className?: string; iconClassName?: string; client: ThirdwebClient; + preventOpenOnFocus?: boolean; }) { // default back to zero address if no address provided const address = useMemo(() => props.address || ZERO_ADDRESS, [props.address]); @@ -64,7 +65,10 @@ export function WalletAddress(props: { return ( - +