import { LinkIncludingShortenedCollectionAndTags } from "@/types/global"; import Image from "next/image"; import isValidUrl from "@/lib/shared/isValidUrl"; import React from "react"; export default function LinkIcon({ link, className, size, }: { link: LinkIncludingShortenedCollectionAndTags; className?: string; size?: "small" | "medium"; }) { let iconClasses: string = "bg-white shadow rounded-md border-[2px] flex item-center justify-center border-white select-none z-10 " + (className || ""); let dimension; switch (size) { case "small": dimension = " w-8 h-8"; break; case "medium": dimension = " w-12 h-12"; break; default: size = "medium"; dimension = " w-12 h-12"; break; } const url = isValidUrl(link.url || "") && link.url ? new URL(link.url) : undefined; const [showFavicon, setShowFavicon] = React.useState(true); return ( <> {link.type === "url" && url ? ( showFavicon ? ( { setShowFavicon(false); }} /> ) : ( ) ) : link.type === "pdf" ? ( ) : link.type === "image" ? ( ) : // : link.type === "monolith" ? ( // // ) undefined} ); } const LinkPlaceholderIcon = ({ iconClasses, size, icon, }: { iconClasses: string; size?: "small" | "medium"; icon: string; }) => { return (
); };