import { useOpenGraph } from "@lume/utils"; function isImage(url: string) { return /^https?:\/\/.+\.(jpg|jpeg|png|webp|avif)$/.test(url); } export function LinkPreview({ url }: { url: string }) { const domain = new URL(url); const { isLoading, isError, data } = useOpenGraph(url); if (isLoading) { return (
{domain.hostname}
); } if (!data.title && !data.image && !data.description) { return ( {url} ); } if (isError) { return ( {url} ); } return ( {isImage(data.image) ? ( {url} ) : null}
{data.title ? (
{data.title}
) : null} {data.description ? (
{data.description}
) : null}
{domain.hostname}
); }