// react
import React, { createContext, useCallback, useContext, useState } from "react";

interface MobileMenuContextValue {
    isOpen: boolean;
    setIsOpen: (value: boolean) => void;
    toggle: () => void;
}

const MobileMenuContext = createContext<MobileMenuContextValue | undefined>(undefined);

export function MobileMenuProvider({ children }: { children: React.ReactNode }) {
    const [isOpen, setIsOpen] = useState(false);

    const toggle = useCallback(() => {
        setIsOpen((prev) => !prev);
    }, []);

    return (
        <MobileMenuContext.Provider value={{ isOpen, setIsOpen, toggle }}>
            {children}
        </MobileMenuContext.Provider>
    );
}

export function useMobileMenu(): MobileMenuContextValue {
    const context = useContext(MobileMenuContext);
    if (!context) {
        throw new Error("useMobileMenu must be used within MobileMenuProvider");
    }
    return context;
}
