Files
supabase/apps/learn/context/mobile-menu-context.tsx
T
dda0b526ac Feat/learn (#41566)
wip

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

# Release Notes

* **New Features**
* Added a new Learn application offering foundational Supabase courses
with interactive documentation
* Courses include Architecture, Authentication, Data Fundamentals,
Security, Storage, Realtime, and Edge Functions
  * Chapter tracking and progress indicators for course completions
  * Responsive sidebar navigation with search/command menu
  * Theme switching support (light, dark, classic dark modes)
  * Mobile-friendly course interface

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Alan Daniel <stylesshjs@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-04 21:36:24 -03:30

37 lines
960 B
TypeScript

'use client'
import React, { ReactNode, useState, useCallback } 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>
}