client,server folders
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { isMobile } from "react-device-detect";
|
||||
import { useNavigate, useLocation } from "react-router-dom";
|
||||
import { Tab } from "../../../types/tab";
|
||||
import NavbarDesktop from "./NavbarDesktop";
|
||||
import NavbarMobile from "./NavbarMobile";
|
||||
import { tabs } from "../../../consts/tabs";
|
||||
|
||||
const Navbar = () => {
|
||||
const [selectedTab, setSelectedTab] = useState<Tab | null>(null);
|
||||
const location = useLocation();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const onTabClick = (tab: Tab) => {
|
||||
setSelectedTab(tab);
|
||||
navigate(tab.path);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const pathname = location.pathname;
|
||||
const tab = tabs.find((tab) => tab.path === pathname);
|
||||
const defaultTab = tabs[0];
|
||||
if (tab) {
|
||||
setSelectedTab(tab);
|
||||
} else {
|
||||
setSelectedTab(defaultTab);
|
||||
}
|
||||
}, [location.pathname]);
|
||||
|
||||
return (
|
||||
<>
|
||||
{isMobile ? (
|
||||
<NavbarMobile onTabClick={onTabClick} tabs={tabs} />
|
||||
) : (
|
||||
<NavbarDesktop
|
||||
selectedTab={selectedTab}
|
||||
onTabClick={onTabClick}
|
||||
tabs={tabs}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Navbar;
|
||||
Reference in New Issue
Block a user