28 lines
808 B
TypeScript
28 lines
808 B
TypeScript
import { createContext, useMemo, useState } from 'react';
|
|
|
|
type Tab = {
|
|
key: string;
|
|
title: string;
|
|
};
|
|
|
|
type NavigationContextType = {
|
|
currentTab: string;
|
|
setCurrentTab: (tab: string) => void;
|
|
setTabsList: (list: Tab[]) => void;
|
|
tabsList: Tab[];
|
|
};
|
|
|
|
export const NavigationContext = createContext<NavigationContextType>({} as NavigationContextType);
|
|
|
|
export function NavigationProvider({ children }: { readonly children: React.ReactNode }) {
|
|
const [currentTab, setCurrentTab] = useState('');
|
|
const [tabsList, setTabsList] = useState<Tab[]>([]);
|
|
|
|
const value = useMemo(
|
|
() => ({ currentTab, setCurrentTab, setTabsList, tabsList }),
|
|
[currentTab, setCurrentTab, setTabsList, tabsList]
|
|
);
|
|
|
|
return <NavigationContext.Provider value={value}>{children}</NavigationContext.Provider>;
|
|
}
|