import { faFolder, faLink } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import Image from "next/image"; import { faCalendarDays } from "@fortawesome/free-regular-svg-icons"; import isValidUrl from "@/lib/shared/isValidUrl"; import A from "next/link"; import unescapeString from "@/lib/client/unescapeString"; import { Link } from "@prisma/client"; type Props = { link?: Partial; className?: string; settings: { blurredFavicons: boolean; displayLinkIcons: boolean; }; }; export default function LinkPreview({ link, className, settings }: Props) { if (!link) { link = { name: "Linkwarden", url: "https://linkwarden.app", createdAt: Date.now() as unknown as Date, }; } let shortendURL; try { shortendURL = new URL(link.url as string).host.toLowerCase(); } catch (error) { console.log(error); } const url = isValidUrl(link.url as string) ? new URL(link.url as string) : undefined; const formattedDate = new Date(link.createdAt as Date).toLocaleString( "en-US", { year: "numeric", month: "short", day: "numeric", } ); return ( <>
{url && settings?.displayLinkIcons && ( { const target = e.target as HTMLElement; target.style.display = "none"; }} /> )}

{1}

{unescapeString(link.name as string)}

Landing Pages ⚡️

{ e.stopPropagation(); }} className="flex items-center gap-1 max-w-full w-fit text-neutral hover:opacity-70 duration-100" >

{shortendURL}

{formattedDate}

); }