File "SidebarContext.tsx"
Full Path: /home/trinadezambia/public_html/student_panel/src/components/shared/common/SidebarContext.tsx
File size: 1.12 KB
MIME-type: text/x-java
Charset: utf-8
'use client';
import React, { createContext, useContext, useState, ReactNode } from 'react';
interface SidebarContextType {
collapsed: boolean;
setCollapsed: (collapsed: boolean) => void;
isMobile: boolean;
setIsMobile: (isMobile: boolean) => void;
isMobileDrawerOpen: boolean;
setIsMobileDrawerOpen: (isOpen: boolean) => void;
}
const SidebarContext = createContext<SidebarContextType | undefined>(undefined);
export function SidebarProvider({ children }: { children: ReactNode }) {
const [collapsed, setCollapsed] = useState(false);
const [isMobile, setIsMobile] = useState(false);
const [isMobileDrawerOpen, setIsMobileDrawerOpen] = useState(false);
return (
<SidebarContext.Provider
value={{
collapsed,
setCollapsed,
isMobile,
setIsMobile,
isMobileDrawerOpen,
setIsMobileDrawerOpen,
}}
>
{children}
</SidebarContext.Provider>
);
}
export function useSidebar() {
const context = useContext(SidebarContext);
if (context === undefined) {
throw new Error('useSidebar must be used within a SidebarProvider');
}
return context;
}