mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 17:35:10 +03:00
Sorted all imports in all packages, `cms`, `design-system` and `ui-library` apps by running `pnpm format` on them. All changes in this PR are done by the script.
38 lines
961 B
TypeScript
38 lines
961 B
TypeScript
'use client'
|
|
|
|
import React, { ReactNode, useCallback, useState } from 'react'
|
|
|
|
import { MobileMenuContext, MobileMenuContextType } from '@/hooks/use-mobile-menu'
|
|
|
|
interface MobileMenuProviderProps {
|
|
children: ReactNode
|
|
}
|
|
|
|
/**
|
|
* Provider component for mobile menu state
|
|
* Wraps children with context that provides mobile menu state and controls
|
|
*/
|
|
export function MobileMenuProvider({ children }: MobileMenuProviderProps) {
|
|
const [open, setOpen] = useState(false)
|
|
|
|
// Use useCallback for stable function references
|
|
const handleSetOpen = useCallback((value: boolean) => {
|
|
setOpen(value)
|
|
}, [])
|
|
|
|
const toggle = useCallback(() => {
|
|
setOpen((prev) => {
|
|
return !prev
|
|
})
|
|
}, [])
|
|
|
|
// Memoize the context value to prevent unnecessary re-renders
|
|
const value: MobileMenuContextType = {
|
|
open,
|
|
setOpen: handleSetOpen,
|
|
toggle,
|
|
}
|
|
|
|
return <MobileMenuContext.Provider value={value}>{children}</MobileMenuContext.Provider>
|
|
}
|