Files
ocenka-web/src/entities/base-menu/ui.tsx
2025-07-08 10:57:44 +03:00

56 lines
1.5 KiB
TypeScript

import s from './styles.module.scss';
import Image from 'next/image';
import Link from 'next/link';
import { Icons } from '@shared/ui/icon';
import { baseMenu } from '@shared/const/menu';
import { TMenu } from '@shared/types/menu';
import dtrLogo from '@public/images/dtr-logo-eagle.png';
import { BeautyButton } from '@/entities';
function BaseMenu() {
const phone = '+7 (900) 241-34-34';
const Menu = ({ list }: { list: TMenu }) => {
const nodeList = (list: TMenu) => {
return list.map((item, index) => {
if (item.children && item.children.length) {
return (
<li key={index} className={s.Parent}>
<div className={s.Row}>
{item.name}
<Icons.MenuArrow className={s.Expand} />
</div>
<ul className={s.Child}>{nodeList(item.children)}</ul>
</li>
);
}
return (
<li key={index}>
<Link href={item.link!}>{item.name}</Link>
</li>
);
});
};
return (
<nav className={s.Nav}>
<ul className={s.Menu}>{nodeList(list)}</ul>
</nav>
);
};
return (
<section className={s.ContainerNavbar}>
<div className={s.Navbar}>
<Image src={dtrLogo} alt={'ДиТрасо'} quality={75} priority />
<Menu list={baseMenu} />
<div className={s.Invite}>
<BeautyButton>{phone}</BeautyButton>
</div>
</div>
</section>
);
}
export { BaseMenu };