'use client';
import {
Anchor,
Card,
CloseButton,
Group,
Image,
Skeleton,
Stack,
Text,
Tooltip,
} from '@mantine/core';
import { useQuery } from '@tanstack/react-query';
import { createSembleClient } from '@/services/client.apiClient';
import { getDomain } from '@/lib/utils/link';
function SourceCardPreviewSkeleton() {
return (
);
}
interface Props {
sourceUrl: string;
onRemove?: () => void;
}
export default function SourceCardPreview(props: Props) {
const { data, isLoading: isLoadingMetadata } = useQuery({
queryKey: ['url metadata', props.sourceUrl],
queryFn: async () => {
const client = createSembleClient();
return client.getUrlMetadata({ url: props.sourceUrl });
},
enabled: !!props.sourceUrl,
});
if (isLoadingMetadata) {
return ;
}
return (
{data?.metadata?.imageUrl && (
)}
{data?.metadata?.title || props.sourceUrl}
e.stopPropagation()}
>
{getDomain(props.sourceUrl)}
{props.onRemove && (
)}
);
}