• Provides debug context to its children, managing debug state and persistence.

    Parameters

    • children: { children: ReactNode }

      The React children to be wrapped by the provider.

    Returns Element

    The debug context provider with value for consumers.

    export function DebugProvider({ children }: { children: React.ReactNode }) {
    const [isDebugEnabled, setIsDebugEnabled] = useState(false);

    // Load debug state from localStorage on initialization
    useEffect(() => {
    try {
    const savedDebugState = localStorage.getItem(DEBUG_STORAGE_KEY);
    if (savedDebugState !== null) {
    setIsDebugEnabled(JSON.parse(savedDebugState));
    }
    } catch (error) {
    console.error("Failed to load debug state from localStorage:", error);
    }
    }, []);

    // Save debug state to localStorage whenever it changes
    const setDebugEnabled = useCallback((enabled: boolean) => {
    setIsDebugEnabled(enabled);
    try {
    localStorage.setItem(DEBUG_STORAGE_KEY, JSON.stringify(enabled));
    } catch (error) {
    console.error("Failed to save debug state to localStorage:", error);
    }
    }, []);

    const toggleDebug = useCallback(() => {
    setDebugEnabled(!isDebugEnabled);
    }, [isDebugEnabled, setDebugEnabled]);

    const value: DebugContextType = {
    isDebugEnabled,
    toggleDebug,
    setDebugEnabled,
    };

    return (
    <DebugContext.Provider value={value}>{children}</DebugContext.Provider>
    );
    }