import { ExtendedLink } from "@/types/global"; import { faFolder, faArrowUpRightFromSquare, faEllipsis, faPenToSquare, faTrashCan, } from "@fortawesome/free-solid-svg-icons"; import { faFileImage, faFilePdf } from "@fortawesome/free-regular-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useState } from "react"; import Image from "next/image"; import Dropdown from "./Dropdown"; import useLinkStore from "@/store/links"; import Modal from "./Modal"; import EditLink from "./Modal/EditLink"; export default function ({ link, count, }: { link: ExtendedLink; count: number; }) { const [editDropdown, setEditDropdown] = useState(false); const [editModal, setEditModal] = useState(false); const [archiveLabel, setArchiveLabel] = useState("Archived Formats"); const { removeLink } = useLinkStore(); const shortendURL = new URL(link.url).host.toLowerCase(); const formattedDate = new Date(link.createdAt).toLocaleString("en-US", { year: "numeric", month: "short", day: "numeric", }); const toggleEditModal = () => { setEditModal(!editModal); }; return (
{editModal ? ( ) : null} { const target = e.target as HTMLElement; target.style.opacity = "0"; }} /> { const target = e.target as HTMLElement; target.style.opacity = "0"; }} />

{count + 1}.

{link.name}

{link.title}

{link.collection.name}

{link.tags.map((e, i) => (

# {e.name}

))}

{formattedDate}

{shortendURL}

setEditDropdown(!editDropdown)} id="edit-dropdown" className="text-gray-500 inline-flex rounded-md cursor-pointer hover:bg-white hover:outline outline-sky-100 outline-1 duration-100 p-1" >

{archiveLabel}

setArchiveLabel("Archived Formats")} > setArchiveLabel("Screenshot")} target="_blank" > setArchiveLabel("PDF")} > setArchiveLabel("Wayback Machine")} />
{editDropdown ? ( , onClick: () => { setEditModal(true); setEditDropdown(false); }, }, { name: "Delete", icon: , onClick: () => { removeLink(link); setEditDropdown(false); }, }, ]} onClickOutside={(e: Event) => { const target = e.target as HTMLInputElement; if (target.id !== "edit-dropdown") setEditDropdown(false); }} className="absolute top-9 right-0" /> ) : null}
); }