import { produce } from "immer" import { create } from "zustand" import { type DropdownState, DropdownTypeEnum, } from "@/types/components/dropdown/dropdown" // TODO: When MyPagesMobileMenu is removed, also remove the // isMyPagesMobileMenuOpen state const useDropdownStore = create((set, get) => ({ isHamburgerMenuOpen: false, isMyPagesMobileMenuOpen: false, isMyPagesMenuOpen: false, isHeaderLanguageSwitcherOpen: false, isHeaderLanguageSwitcherMobileOpen: false, isFooterLanguageSwitcherOpen: false, handleHamburgerClick: () => { const state = get() if (state.isMyPagesMobileMenuOpen) { set({ isMyPagesMobileMenuOpen: false }) } else { if (state.isHeaderLanguageSwitcherMobileOpen) { set({ isHeaderLanguageSwitcherMobileOpen: false }) } if (!state.isFooterLanguageSwitcherOpen) { set({ isHamburgerMenuOpen: !state.isHamburgerMenuOpen }) } else { set({ isFooterLanguageSwitcherOpen: false }) } } }, toggleDropdown: (dropdown: DropdownTypeEnum) => set( produce((state: DropdownState) => { switch (dropdown) { case DropdownTypeEnum.HamburgerMenu: state.isHamburgerMenuOpen = !state.isHamburgerMenuOpen state.isMyPagesMobileMenuOpen = false state.isMyPagesMenuOpen = false state.isHeaderLanguageSwitcherOpen = false state.isHeaderLanguageSwitcherMobileOpen = false state.isFooterLanguageSwitcherOpen = false break case DropdownTypeEnum.MyPagesMobileMenu: state.isMyPagesMobileMenuOpen = !state.isMyPagesMobileMenuOpen state.isHamburgerMenuOpen = false state.isMyPagesMenuOpen = false state.isHeaderLanguageSwitcherOpen = false state.isHeaderLanguageSwitcherMobileOpen = false state.isFooterLanguageSwitcherOpen = false break case DropdownTypeEnum.MyPagesMenu: state.isMyPagesMenuOpen = !state.isMyPagesMenuOpen state.isHamburgerMenuOpen = false state.isMyPagesMobileMenuOpen = false state.isHeaderLanguageSwitcherOpen = false state.isHeaderLanguageSwitcherMobileOpen = false state.isFooterLanguageSwitcherOpen = false break case DropdownTypeEnum.HeaderLanguageSwitcher: state.isHeaderLanguageSwitcherOpen = !state.isHeaderLanguageSwitcherOpen state.isHamburgerMenuOpen = false state.isMyPagesMobileMenuOpen = false state.isMyPagesMenuOpen = false state.isHeaderLanguageSwitcherMobileOpen = false state.isFooterLanguageSwitcherOpen = false break case DropdownTypeEnum.HeaderLanguageSwitcherMobile: state.isHeaderLanguageSwitcherMobileOpen = !state.isHeaderLanguageSwitcherMobileOpen state.isHamburgerMenuOpen = false state.isMyPagesMobileMenuOpen = false state.isMyPagesMenuOpen = false state.isHeaderLanguageSwitcherOpen = false state.isFooterLanguageSwitcherOpen = false break case DropdownTypeEnum.FooterLanguageSwitcher: state.isFooterLanguageSwitcherOpen = !state.isFooterLanguageSwitcherOpen state.isHamburgerMenuOpen = false state.isMyPagesMobileMenuOpen = false state.isMyPagesMenuOpen = false state.isHeaderLanguageSwitcherOpen = false state.isHeaderLanguageSwitcherMobileOpen = false break } }) ), })) export default useDropdownStore