import {Collapse, Dropdown} from "flowbite"; import {useEffect} from "react"; import delve from "dlv"; import {signOut, useSession} from "next-auth/react"; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome' import {useRouter} from "next/router"; import {faBagShopping, faRightToBracket, faUserPlus} from "@fortawesome/free-solid-svg-icons"; import {getBackendImg, hasAvatar} from "../../libs/api"; import {siteConfig} from "../../config"; import {buildShopParamsGET} from "../../libs/utils"; export function Header({items = []}) { const {data: session} = useSession(); const router = useRouter(); useEffect(() => { if (session == null) { return; } }, [session]); useEffect(function mount() { const menuButton = document.getElementById('menu-dropdown-button'); const menuZone = document.getElementById('menu-dropdown'); if (menuButton && menuZone) { new Dropdown(menuZone, menuButton); } const userButton = document.getElementById('user-menu-button'); const userZone = document.getElementById('user-dropdown'); if (userButton && userZone) { new Dropdown(userZone, userButton); } const burgerButton = document.getElementById('menu-button'); const megaZone = document.getElementById('navbar-dropdown'); if (burgerButton && megaZone) { new Collapse(megaZone, burgerButton); } }); const isActive = (item) => router.route.includes(item.attributes.url); const renderGenerateItem = (item, index, isActive = false) => { const value = delve(item, 'attributes', {}); return (
  • {value.children.data.length > 0 ? renderDropdownItem(value, isActive) : renderRegularItem(value, isActive)}
  • ); } const renderRegularItem = (item, isActive = false) => { const url = item.url.includes('/shop') ? `${item.url}${buildShopParamsGET()}` : item.url; return ( {item.title} ) } const renderRegularDropdownItem = (item, index) => { const value = delve(item, 'attributes', {}); return (
  • {value.title}
  • ); } const renderDropdownItem = (item, isActive = false) => { return ( <> ) } const renderAnonymousUser = () => { return ( <> Connexion Inscription ); } const renderConnectedUser = () => { return ( <>
    {(session.user as any).username} {session.user.email}
    ); } return ( ); } export default Header;