import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faEllipsis, faLink } from "@fortawesome/free-solid-svg-icons"; import Link from "next/link"; import { CollectionIncludingMembersAndLinkCount } from "@/types/global"; import Dropdown from "./Dropdown"; import { useState } from "react"; import ProfilePhoto from "./ProfilePhoto"; import { faCalendarDays } from "@fortawesome/free-regular-svg-icons"; import useModalStore from "@/store/modals"; import usePermissions from "@/hooks/usePermissions"; type Props = { collection: CollectionIncludingMembersAndLinkCount; className?: string; }; export default function CollectionCard({ collection, className }: Props) { const { setModal } = useModalStore(); const formattedDate = new Date(collection.createdAt as string).toLocaleString( "en-US", { year: "numeric", month: "short", day: "numeric", } ); const [expandDropdown, setExpandDropdown] = useState(false); const permissions = usePermissions(collection.id as number); return (
setExpandDropdown(!expandDropdown)} id={"expand-dropdown" + collection.id} className="inline-flex absolute top-5 right-5 rounded-md cursor-pointer hover:bg-slate-200 hover:dark:bg-neutral-700 duration-100 p-1" >

{collection.name}

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

{formattedDate}

{expandDropdown ? ( { collection && setModal({ modal: "COLLECTION", state: true, method: "UPDATE", isOwner: permissions === true, active: collection, }); setExpandDropdown(false); }, } : undefined, { name: permissions === true ? "Share/Collaborate" : "View Team", onClick: () => { collection && setModal({ modal: "COLLECTION", state: true, method: "UPDATE", isOwner: permissions === true, active: collection, defaultIndex: permissions === true ? 1 : 0, }); setExpandDropdown(false); }, }, { name: permissions === true ? "Delete Collection" : "Leave Collection", onClick: () => { collection && setModal({ modal: "COLLECTION", state: true, method: "UPDATE", isOwner: permissions === true, active: collection, defaultIndex: permissions === true ? 2 : 1, }); setExpandDropdown(false); }, }, ]} onClickOutside={(e: Event) => { const target = e.target as HTMLInputElement; if (target.id !== "expand-dropdown" + collection.id) setExpandDropdown(false); }} className="absolute top-[3.2rem] right-5 z-10" /> ) : null}
); }