f6592d331f
Refactored the Sidebar component into smaller, more manageable files to improve code organization and maintainability. Fix sidebar auto-expansion issue Ensured the sidebar's collapsed state is maintained when navigating between pages.
38 lines
944 B
TypeScript
38 lines
944 B
TypeScript
|
|
import React, { createContext, useContext, useState } from 'react';
|
|
|
|
interface SidebarContextType {
|
|
sidebarCollapsed: boolean;
|
|
setSidebarCollapsed: (collapsed: boolean) => void;
|
|
toggleSidebar: () => void;
|
|
}
|
|
|
|
const SidebarContext = createContext<SidebarContextType | undefined>(undefined);
|
|
|
|
export const SidebarProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
|
|
|
|
const toggleSidebar = () => {
|
|
setSidebarCollapsed(prev => !prev);
|
|
};
|
|
|
|
const value = {
|
|
sidebarCollapsed,
|
|
setSidebarCollapsed,
|
|
toggleSidebar
|
|
};
|
|
|
|
return (
|
|
<SidebarContext.Provider value={value}>
|
|
{children}
|
|
</SidebarContext.Provider>
|
|
);
|
|
};
|
|
|
|
export const useSidebar = () => {
|
|
const context = useContext(SidebarContext);
|
|
if (context === undefined) {
|
|
throw new Error('useSidebar must be used within a SidebarProvider');
|
|
}
|
|
return context;
|
|
}; |