import { Copy, ExternalLink, Globe } from "lucide-react"; import type { LinkMetadata } from "@/lib/link-metadata"; import { Skeleton } from "@/components/ui/skeleton"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; interface LinkPreviewCardProps { metadata: LinkMetadata; compact?: boolean; } export function LinkPreviewCard({ metadata, compact }: LinkPreviewCardProps) { const handleOpen = (e: React.MouseEvent) => { e.stopPropagation(); window.electronLink.openExternal(metadata.url); }; const handleCopy = (e: React.MouseEvent) => { e.stopPropagation(); navigator.clipboard.writeText(metadata.url); }; return (
{ e.stopPropagation(); handleOpen(e); }} > {metadata.image && ( { (e.target as HTMLImageElement).style.display = "none"; }} /> )}
{metadata.favicon ? ( { (e.target as HTMLImageElement).replaceWith( document.createElement("span"), ); }} /> ) : ( )} {metadata.domain}
{metadata.title && (

{metadata.title}

)} {metadata.description && (

{metadata.description}

)} {!compact && (
)}
); } export function LinkPreviewCardSkeleton() { return (
); }