test-task-sws
39 строк · 945.0 Байт
1import styles from "./NavBar.module.scss";
2
3import { IconsNames } from "../../ts/enums/IconsNames";
4import navItems from "../../utils/navItems";
5import NavItem from "../navitem/NavItem";
6import { useCallback, useState } from "react";
7
8/**
9* Navbar component
10*/
11export default function Navbar() {
12const [navs, setNavs] = useState(navItems);
13
14const setActiveNav = useCallback(
15(navName: string) => {
16const newNavs = [...navs.map((nav) => ({ active: false, navIconName: nav.navIconName as IconsNames, navName: nav.navName }))];
17
18newNavs.find((nav) => nav.navName === navName)!.active = true;
19setNavs(newNavs);
20},
21[navs, setNavs],
22);
23
24return (
25<>
26<div className={styles.navbar}>
27{navs.map((item) => (
28<NavItem
29key={item.navName}
30active={item.active}
31navIconName={item.navIconName as IconsNames}
32navName={item.navName}
33setActiveNav={setActiveNav}
34/>
35))}
36</div>
37</>
38);
39}
40