2023-04-23 08:26:39 -05:00
// Copyright (C) 2022-present Daniel31x13 <daniel31x13@gmail.com>
// 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 <https://www.gnu.org/licenses/>.
2023-03-22 18:11:54 -05:00
import useCollectionStore from "@/store/collections" ;
2023-03-28 02:31:50 -05:00
import { faAdd , faBox , faEllipsis } from "@fortawesome/free-solid-svg-icons" ;
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" ;
2023-02-24 11:32:28 -06:00
import CollectionCard from "@/components/CollectionCard" ;
2023-03-28 02:31:50 -05:00
import Dropdown from "@/components/Dropdown" ;
import { useState } from "react" ;
2023-04-23 08:26:39 -05:00
import Modal from "@/components/Modal" ;
import AddCollection from "@/components/Modal/AddCollection" ;
2023-02-24 11:32:28 -06:00
export default function ( ) {
2023-03-22 18:11:54 -05:00
const { collections } = useCollectionStore ( ) ;
2023-04-23 08:26:39 -05:00
const [ expandDropdown , setExpandDropdown ] = useState ( false ) ;
const [ linkModal , setLinkModal ] = useState ( false ) ;
const toggleLinkModal = ( ) = > {
setLinkModal ( ! linkModal ) ;
} ;
2023-02-24 11:32:28 -06:00
return (
// ml-80
2023-03-28 02:31:50 -05:00
< div className = "p-5" >
< div className = "flex gap-3 items-center mb-5" >
< div className = "flex gap-2 items-center" >
< FontAwesomeIcon icon = { faBox } className = "w-5 h-5 text-sky-300" / >
< p className = "text-lg text-sky-900" > All Collections < / p >
< / div >
< div className = "relative" >
< div
2023-04-23 08:26:39 -05:00
onClick = { ( ) = > setExpandDropdown ( ! expandDropdown ) }
2023-03-28 02:31:50 -05:00
id = "edit-dropdown"
className = "inline-flex rounded-md cursor-pointer hover:bg-white hover:border-sky-500 border-sky-100 border duration-100 p-1"
>
< FontAwesomeIcon
icon = { faEllipsis }
id = "edit-dropdown"
className = "w-4 h-4 text-gray-500"
/ >
< / div >
2023-04-23 08:26:39 -05:00
{ expandDropdown ? (
2023-03-28 02:31:50 -05:00
< Dropdown
items = { [
{
name : "New" ,
icon : < FontAwesomeIcon icon = { faAdd } / > ,
2023-04-23 08:26:39 -05:00
onClick : ( ) = > {
toggleLinkModal ( ) ;
setExpandDropdown ( false ) ;
} ,
2023-03-28 02:31:50 -05:00
} ,
] }
onClickOutside = { ( e : Event ) = > {
const target = e . target as HTMLInputElement ;
2023-04-23 08:26:39 -05:00
if ( target . id !== "edit-dropdown" ) setExpandDropdown ( false ) ;
2023-03-28 02:31:50 -05:00
} }
2023-04-23 08:26:39 -05:00
className = "absolute top-7 left-0 w-36"
2023-03-28 02:31:50 -05:00
/ >
) : null }
< / div >
2023-04-23 08:26:39 -05:00
{ linkModal ? (
< Modal toggleModal = { toggleLinkModal } >
< AddCollection toggleCollectionModal = { toggleLinkModal } / >
< / Modal >
) : null }
2023-03-28 02:31:50 -05:00
< / div >
< div className = "flex flex-wrap gap-5" >
{ collections . map ( ( e , i ) = > {
return < CollectionCard key = { i } collection = { e } / > ;
} ) }
< / div >
2023-02-24 11:32:28 -06:00
< / div >
) ;
}