// Copyright (C) 2022-present Daniel31x13 // This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // You should have received a copy of the GNU General Public License along with this program. If not, see . import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faUser, faPenToSquare, faTrashCan, faEllipsis, } from "@fortawesome/free-solid-svg-icons"; import Link from "next/link"; import { ExtendedCollection } from "@/types/global"; import useLinkStore from "@/store/links"; import ImageWithFallback from "./ImageWithFallback"; import Dropdown from "./Dropdown"; import { useState } from "react"; import Modal from "@/components/Modal"; import EditCollection from "@/components/Modal/EditCollection"; import DeleteCollection from "@/components/Modal/DeleteCollection"; export default function ({ collection }: { collection: ExtendedCollection }) { const { links } = useLinkStore(); const formattedDate = new Date(collection.createdAt).toLocaleString("en-US", { year: "numeric", month: "short", day: "numeric", }); const [expandDropdown, setExpandDropdown] = useState(false); const [editCollectionModal, setEditCollectionModal] = useState(false); const [deleteCollectionModal, setDeleteCollectionModal] = useState(false); const toggleEditCollectionModal = () => { setEditCollectionModal(!editCollectionModal); }; const toggleDeleteCollectionModal = () => { setDeleteCollectionModal(!deleteCollectionModal); }; return (
setExpandDropdown(!expandDropdown)} id="edit-dropdown" className="inline-flex absolute top-5 right-5 rounded-md cursor-pointer hover:bg-white hover:border-sky-500 border-sky-100 border duration-100 p-1" >

{collection.name}

{collection.members .sort((a, b) => a.userId - b.userId) .map((e, i) => { return (
); }) .slice(0, 4)} {collection.members.length - 4 > 0 ? (
+{collection.members.length - 3}
) : null}

{links.filter((e) => e.collectionId === collection.id).length}{" "} Links

{formattedDate}

{expandDropdown ? ( , onClick: () => { toggleEditCollectionModal(); setExpandDropdown(false); }, }, { name: "Delete Collection", icon: , onClick: () => { toggleDeleteCollectionModal(); setExpandDropdown(false); }, }, ]} onClickOutside={(e: Event) => { const target = e.target as HTMLInputElement; if (target.id !== "edit-dropdown") setExpandDropdown(false); }} className="absolute top-[3.2rem] right-5 z-10 w-44" /> ) : null} {editCollectionModal ? ( ) : null} {deleteCollectionModal ? ( ) : null}
); }