import { useOpenGraph } from "@lume/utils"; import { Link } from "react-router-dom"; 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 { status, data } = useOpenGraph(url); if (status === "pending") { return (
{domain.hostname}
); } if (!data.title && !data.image) { return ( {url} ); } return ( {isImage(data.image) ? ( {url} ) : null}
{data.title ? (
{data.title}
) : null} {data.description ? (
{data.description}
) : null}
{domain.hostname}
); }