fix: update base menu
This commit is contained in:
@@ -1,231 +1,163 @@
|
||||
import { ROUTES } from '@core/constants/route';
|
||||
|
||||
export const Menu = [
|
||||
export type TMenu = {
|
||||
name: string;
|
||||
link?: string;
|
||||
children?: TMenu;
|
||||
}[];
|
||||
|
||||
export const baseMenu: TMenu = [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Экспертиза',
|
||||
children: [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Автотехническая',
|
||||
link: ROUTES.EXPERTIZA_AUTOTECH,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Трасологическая',
|
||||
link: ROUTES.EXPERTIZA_TRASOLOGIA,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Пожарно-техническая',
|
||||
link: ROUTES.EXPERTIZA_POZHAR,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Товароведческая',
|
||||
link: ROUTES.EXPERTIZA_TOVAR,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Рецензирование и проверка экспертизы',
|
||||
link: ROUTES.EXPERTIZA_RECENZII,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Документарная',
|
||||
link: ROUTES.EXPERTIZA_DOCUMENT,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Бухгалтерская',
|
||||
link: ROUTES.EXPERTIZA_BUHGALTER,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Финансово-экономическая',
|
||||
link: ROUTES.EXPERTIZA_FINANS,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Земле-устроительная',
|
||||
link: ROUTES.EXPERTIZA_ZEM_STROY,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Кадастровая',
|
||||
link: ROUTES.EXPERTIZA_KADASTR,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Строительно-техническая',
|
||||
link: ROUTES.EXPERTIZA_STROIT,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Компьютерно-техническая',
|
||||
link: ROUTES.EXPERTIZA_COPMPUTER,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Почерковедческая',
|
||||
link: ROUTES.EXPERTIZA_POCHERK,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Технико-криминалистическая',
|
||||
link: ROUTES.EXPERTIZA_TECH_CRIM,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка',
|
||||
children: [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'По ситуации',
|
||||
children: [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Независимая оценка',
|
||||
link: ROUTES.OCENKA_NEZAVISIM,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для опеки',
|
||||
link: ROUTES.OCENKA_OPEKA,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для нотариуса',
|
||||
link: ROUTES.OCENKA_NOTARIUS,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для вступления в наследство',
|
||||
link: ROUTES.OCENKA_NASLEDSTVO,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для страхования',
|
||||
link: ROUTES.OCENKA_STRAHOVANIE,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для определения стоимости ущерба',
|
||||
link: ROUTES.OCENKA_USCHERB,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка имущества при разводе',
|
||||
link: ROUTES.OCENKA_RAZVOD,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка недвижимости для суда',
|
||||
link: ROUTES.OCENKA_SUD,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для внесения в уставный капитал',
|
||||
link: ROUTES.OCENKA_USTAV_KAPITAL,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для ипотеки',
|
||||
link: ROUTES.OCENKA_IPOTEKA,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка для банка',
|
||||
link: ROUTES.OCENKA_BANK,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка имущества для банкротства',
|
||||
link: ROUTES.OCENKA_BANKROTSTV,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Жилая недвижимость',
|
||||
children: [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка квартиры',
|
||||
link: ROUTES.OCENKA_KVARTIRA,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка жилого дома',
|
||||
link: ROUTES.OCENKA_DOM,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка земельного участка',
|
||||
link: ROUTES.OCENKA_UCHASTOK,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка гаража',
|
||||
link: ROUTES.OCENKA_GARAZH,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка ущерба недвижимости',
|
||||
link: ROUTES.OCENKA_USCHERB_NEDVIGI,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка ущерба от залива',
|
||||
link: ROUTES.OCENKA_ZATOPLENIE,
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Оценка ущерба от пожара',
|
||||
link: ROUTES.OCENKA_POZHAR,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Коммерческая недвижимость',
|
||||
children: [
|
||||
{
|
||||
@@ -258,9 +190,7 @@ export const Menu = [
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Имущество',
|
||||
children: [
|
||||
{
|
||||
@@ -293,9 +223,7 @@ export const Menu = [
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Ипотека',
|
||||
children: [
|
||||
{
|
||||
@@ -308,9 +236,7 @@ export const Menu = [
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Транспорт',
|
||||
children: [
|
||||
{
|
||||
@@ -343,12 +269,9 @@ export const Menu = [
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Юрист',
|
||||
children: [
|
||||
{
|
||||
@@ -402,5 +325,12 @@ export const Menu = [
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'Эксперты',
|
||||
link: ROUTES.EXPERTS,
|
||||
},
|
||||
{
|
||||
name: 'Контакты',
|
||||
link: ROUTES.CONTACTS,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: rem(24px);
|
||||
gap: rem(32px);
|
||||
}
|
||||
|
||||
.Parent {
|
||||
@@ -27,35 +27,45 @@
|
||||
position: relative;
|
||||
float: left;
|
||||
line-height: 40px;
|
||||
//background-color: #ffc72c;
|
||||
//border-right: #CCC 1px solid;
|
||||
|
||||
.Row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.Parent a {
|
||||
//margin: 10px 24px;
|
||||
//color: #5d3200;
|
||||
& a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.Parent:hover > ul {
|
||||
&:hover > ul {
|
||||
display: block;
|
||||
position: absolute;
|
||||
box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
.Child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.Child li {
|
||||
& li {
|
||||
background-color: #FFFFFF;
|
||||
line-height: 40px;
|
||||
padding: 0 10px;
|
||||
padding: 4px 16px;
|
||||
width: 100%;
|
||||
text-wrap: nowrap;
|
||||
|
||||
& a {
|
||||
color: $color-text;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.Child li a {
|
||||
color: $color-text;
|
||||
& .Parent > .Row > .Expand {
|
||||
transform: rotateZ(0deg);
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
@@ -94,13 +104,7 @@
|
||||
}
|
||||
|
||||
.Expand {
|
||||
font-size: 16px;
|
||||
float: right;
|
||||
margin-left: 8px;
|
||||
color: $color-text
|
||||
transform: rotateZ(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
.Invite {
|
||||
}
|
||||
}
|
||||
@@ -1,51 +1,45 @@
|
||||
import s from './styles.module.scss';
|
||||
import Image from 'next/image';
|
||||
import dtrLogo from '@public/images/dtr-logo-eagle.png';
|
||||
import { baseMenu, TMenu } from '@core/constants/menu';
|
||||
import { Icons } from '@shared/ui/icon';
|
||||
import Link from 'next/link';
|
||||
|
||||
function BaseMenu() {
|
||||
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 />
|
||||
<nav className={s.Nav}>
|
||||
<ul className={s.Menu}>
|
||||
<li>
|
||||
<a href='#'>Экспертиза</a>
|
||||
</li>
|
||||
<li className={s.Parent}>
|
||||
<a href='#'>Оценка</a> <span className={s.Expand}>🢒</span>
|
||||
<ul className={s.Child}>
|
||||
<li>
|
||||
<a href='#'>Link1</a>
|
||||
</li>
|
||||
<li className={s.Parent}>
|
||||
<a href='#'>Link2</a>{' '}
|
||||
<span className={s.Expand}>🢒</span>
|
||||
<ul className={s.Child}>
|
||||
<li>
|
||||
<a href='#'>SubLink 1 asdasd</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='#'>SubLink 2 asdasdasd</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='#'>SubLink 3 xczzxcc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href='#'>Юрист</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='#'>Эксперты</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='#'>Контакты</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<Menu list={baseMenu} />
|
||||
<div className={s.Invite}>
|
||||
<button>+7 (999) 123-45-67</button>
|
||||
</div>
|
||||
@@ -55,81 +49,3 @@ function BaseMenu() {
|
||||
}
|
||||
|
||||
export { BaseMenu };
|
||||
|
||||
const Menu = [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Home',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Link1',
|
||||
children: [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link1-1',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link1-2',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link1-3',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'Link2',
|
||||
children: [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link2-1',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link2-2',
|
||||
children: [
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link2-1',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link2-2',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link2-3',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
menuItem: {
|
||||
name: 'link2-3',
|
||||
link: '/home',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@@ -144,9 +144,28 @@ function Youtube(props: SVGIcon) {
|
||||
);
|
||||
}
|
||||
|
||||
//WeuiArrowFilled
|
||||
export function MenuArrow(props: SVGIcon) {
|
||||
return (
|
||||
<svg
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
width={12}
|
||||
height={24}
|
||||
viewBox='0 0 12 24'
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill='currentColor'
|
||||
fillRule='evenodd'
|
||||
d='M10.157 12.711L4.5 18.368l-1.414-1.414l4.95-4.95l-4.95-4.95L4.5 5.64l5.657 5.657a1 1 0 0 1 0 1.414'
|
||||
></path>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
const Icons = Object.assign(
|
||||
{},
|
||||
{ Map, Envelope, Whatsapp, Telegram, Phone, Vk, Youtube },
|
||||
{ Map, Envelope, Whatsapp, Telegram, Phone, Vk, Youtube, MenuArrow },
|
||||
);
|
||||
|
||||
export { Icons };
|
||||
|
||||
Reference in New Issue
Block a user