import { create } from "zustand" // TODO: When MyPagesMobileMenu is removed, also remove the // isMyPagesMobileMenuOpen state and toggleMyPagesMobileMenu function interface DropdownState { isHamburgerMenuOpen: boolean isMyPagesMobileMenuOpen: boolean isMyPagesMenuOpen: boolean isLanguageSwitcherOpen: boolean toggleHamburgerMenu: () => void toggleMyPagesMobileMenu: () => void toggleMyPagesMenu: () => void toggleLanguageSwitcher: () => void } const useDropdownStore = create((set) => ({ isHamburgerMenuOpen: false, isMyPagesMobileMenuOpen: false, isMyPagesMenuOpen: false, isLanguageSwitcherOpen: false, toggleHamburgerMenu: () => set( ({ isHamburgerMenuOpen, isMyPagesMenuOpen, isMyPagesMobileMenuOpen }) => { // Close the other dropdowns if they're open if (!isHamburgerMenuOpen) { if (isMyPagesMenuOpen) { set({ isMyPagesMenuOpen: false }) } if (isMyPagesMobileMenuOpen) { set({ isMyPagesMobileMenuOpen: false }) } } return { isHamburgerMenuOpen: !isHamburgerMenuOpen } } ), toggleMyPagesMobileMenu: () => set( ({ isMyPagesMenuOpen, isMyPagesMobileMenuOpen, isHamburgerMenuOpen, isLanguageSwitcherOpen, }) => { // Close the other dropdowns if they're open if (!isMyPagesMobileMenuOpen) { if (isMyPagesMenuOpen) { set({ isMyPagesMenuOpen: false }) } if (isHamburgerMenuOpen) { set({ isHamburgerMenuOpen: false }) } if (isLanguageSwitcherOpen) { set({ isLanguageSwitcherOpen: false }) } } return { isMyPagesMobileMenuOpen: !isMyPagesMobileMenuOpen } } ), toggleMyPagesMenu: () => set( ({ isHamburgerMenuOpen, isLanguageSwitcherOpen, isMyPagesMenuOpen, isMyPagesMobileMenuOpen, }) => { // Close the other dropdowns if they're open if (!isMyPagesMenuOpen) { if (isHamburgerMenuOpen) { set({ isHamburgerMenuOpen: false }) } if (isMyPagesMobileMenuOpen) { set({ isMyPagesMobileMenuOpen: false }) } if (isLanguageSwitcherOpen) { set({ isLanguageSwitcherOpen: false }) } } return { isMyPagesMenuOpen: !isMyPagesMenuOpen } } ), toggleLanguageSwitcher: () => set( ({ isLanguageSwitcherOpen, isMyPagesMenuOpen, isMyPagesMobileMenuOpen, }) => { // Close the other dropdowns if they're open if (!isLanguageSwitcherOpen) { if (isMyPagesMenuOpen) { set({ isMyPagesMenuOpen: false }) } if (isMyPagesMobileMenuOpen) { set({ isMyPagesMobileMenuOpen: false }) } } return { isLanguageSwitcherOpen: !isLanguageSwitcherOpen } } ), })) export default useDropdownStore