2023-12-08 16:33:22 +03:00
|
|
|
import { Link } from "react-router-dom";
|
|
|
|
|
import Logo from "@/components/Logo";
|
2024-02-10 15:30:53 +03:00
|
|
|
import { LuMenu } from "react-icons/lu";
|
2023-12-08 16:33:22 +03:00
|
|
|
import { Button } from "@/components/ui/button";
|
2024-02-06 02:55:08 +03:00
|
|
|
import { ENV } from "@/env";
|
2024-02-10 15:30:53 +03:00
|
|
|
import { NavLink } from "react-router-dom";
|
|
|
|
|
import { navbarLinks } from "@/pages/site-navigation";
|
|
|
|
|
import SettingsNavItems from "./settings/SettingsNavItems";
|
2023-12-08 16:33:22 +03:00
|
|
|
|
|
|
|
|
type HeaderProps = {
|
|
|
|
|
onToggleNavbar: () => void;
|
|
|
|
|
};
|
|
|
|
|
|
2024-02-10 15:30:53 +03:00
|
|
|
function HeaderNavigation() {
|
|
|
|
|
return (
|
|
|
|
|
<div className="hidden md:flex">
|
|
|
|
|
{navbarLinks.map((item) => {
|
|
|
|
|
let shouldRender = item.dev ? ENV !== "production" : true;
|
|
|
|
|
return (
|
|
|
|
|
shouldRender && (
|
|
|
|
|
<NavLink
|
|
|
|
|
key={item.id}
|
|
|
|
|
to={item.url}
|
|
|
|
|
className={({ isActive }) =>
|
|
|
|
|
`my-2 py-3 px-4 text-muted-foreground flex flex-row items-center text-center rounded-lg gap-2 hover:bg-border ${
|
|
|
|
|
isActive ? "font-bold bg-popover text-popover-foreground" : ""
|
|
|
|
|
}`
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
<div className="text-sm">{item.title}</div>
|
|
|
|
|
</NavLink>
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
})}
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
2023-12-08 16:33:22 +03:00
|
|
|
|
2024-02-10 15:30:53 +03:00
|
|
|
function Header({ onToggleNavbar }: HeaderProps) {
|
2023-12-08 16:33:22 +03:00
|
|
|
return (
|
2024-02-10 15:30:53 +03:00
|
|
|
<div className="flex gap-10 lg:gap-20 justify-between pt-2 mb-2 border-b-[1px] px-4 items-center md:hidden">
|
|
|
|
|
<div className="flex gap-4 items-center flex-shrink-0 m-1">
|
2023-12-08 16:33:22 +03:00
|
|
|
<Button
|
|
|
|
|
variant="ghost"
|
|
|
|
|
size="icon"
|
|
|
|
|
className="md:hidden"
|
|
|
|
|
onClick={onToggleNavbar}
|
|
|
|
|
>
|
|
|
|
|
<LuMenu />
|
|
|
|
|
</Button>
|
|
|
|
|
<Link to="/">
|
|
|
|
|
<div className="flex flex-row items-center">
|
2024-02-13 02:34:45 +03:00
|
|
|
<Logo className="w-10 mr-5" />
|
2023-12-08 16:33:22 +03:00
|
|
|
</div>
|
|
|
|
|
</Link>
|
2024-02-10 15:30:53 +03:00
|
|
|
<HeaderNavigation />
|
2023-12-08 16:33:22 +03:00
|
|
|
</div>
|
2024-02-10 15:30:53 +03:00
|
|
|
<SettingsNavItems className="flex flex-shrink-0 md:gap-2" />
|
2023-12-08 16:33:22 +03:00
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default Header;
|