Files
supabase/apps/design-system/context/mobile-sidebar-context.tsx
kemal.earth b97e41e20b chore(design-system): tidy up mobile styling (#41267)
* feat: tidy up header on mobile

* fix: graceful searchbar header

* fix: header classes and unused elements

* feat: trim down logo on header

* fix: logos again

* chore: remove dead code

* fix: classic dark logo header

* fix: page padding tidy ups

* fix: some font sizing

* feat: updated homepage cards

* fix: toc layout

* fix: toc again

* feat: homepage cards all the same size

* fix: footer paddings

* fix: pager if only 1 directional item

* fix: sidebar padding issues

* chore: killing all the defaults

* fix: import for side nav

* fix: sidebar complaining about dialog title

* fix: homepage paddings

* fix: killing one more default export

* feat: update colours icon to francescos

* fix: loose repeated copy
2025-12-12 10:08:48 +00:00

35 lines
972 B
TypeScript

'use client'
import React, { ReactNode, useState, useCallback } from 'react'
import { MobileSidebarContext, MobileSidebarContextType } from '@/hooks/use-mobile-sidebar'
interface MobileSidebarProviderProps {
children: ReactNode
}
/**
* Provider component for mobile sidebar state
* Wraps children with context that provides mobile sidebar state and controls
*/
export function MobileSidebarProvider({ children }: MobileSidebarProviderProps) {
const [open, setOpen] = useState(false)
// Use useCallback for stable function references
const handleSetOpen = useCallback((value: boolean) => {
setOpen(value)
}, [])
const toggle = useCallback(() => {
setOpen((prev) => !prev)
}, [])
// Memoize the context value to prevent unnecessary re-renders
const value: MobileSidebarContextType = {
open,
setOpen: handleSetOpen,
toggle,
}
return <MobileSidebarContext.Provider value={value}>{children}</MobileSidebarContext.Provider>
}