2025-03-12 11:55:43 +03:00
|
|
|
import { IconLibrary2, IconManuals, IconNewItem2 } from '@/components/icons1';
|
|
|
|
import { useWindowSize } from '@/hooks/use-window-size';
|
|
|
|
import { useAppLayoutStore } from '@/stores/app-layout';
|
2023-12-13 14:32:57 +03:00
|
|
|
|
2024-04-01 21:45:10 +03:00
|
|
|
import { urls } from '../urls';
|
2025-02-12 21:36:25 +03:00
|
|
|
|
2025-03-12 11:55:43 +03:00
|
|
|
import { Logo } from './logo1';
|
|
|
|
import { NavigationButton } from './navigation-button';
|
|
|
|
import { useConceptNavigation } from './navigation-context';
|
|
|
|
import { ToggleNavigation } from './toggle-navigation';
|
|
|
|
import { UserMenu } from './user-menu';
|
2023-07-15 17:46:19 +03:00
|
|
|
|
2025-02-10 01:32:55 +03:00
|
|
|
export function Navigation() {
|
2023-12-13 14:32:57 +03:00
|
|
|
const router = useConceptNavigation();
|
2024-12-12 13:19:12 +03:00
|
|
|
const size = useWindowSize();
|
2025-01-14 21:58:16 +03:00
|
|
|
const noNavigationAnimation = useAppLayoutStore(state => state.noNavigationAnimation);
|
2023-07-15 17:46:19 +03:00
|
|
|
|
2025-02-26 16:28:29 +03:00
|
|
|
const navigateHome = (event: React.MouseEvent<Element>) =>
|
|
|
|
router.push({ path: urls.home, newTab: event.ctrlKey || event.metaKey });
|
2025-02-22 14:04:01 +03:00
|
|
|
const navigateLibrary = (event: React.MouseEvent<Element>) =>
|
2025-02-26 16:28:29 +03:00
|
|
|
router.push({ path: urls.library, newTab: event.ctrlKey || event.metaKey });
|
|
|
|
const navigateHelp = (event: React.MouseEvent<Element>) =>
|
|
|
|
router.push({ path: urls.manuals, newTab: event.ctrlKey || event.metaKey });
|
2025-02-22 14:04:01 +03:00
|
|
|
const navigateCreateNew = (event: React.MouseEvent<Element>) =>
|
2025-02-26 16:28:29 +03:00
|
|
|
router.push({ path: urls.create_schema, newTab: event.ctrlKey || event.metaKey });
|
2023-12-28 14:04:44 +03:00
|
|
|
|
2023-07-15 17:46:19 +03:00
|
|
|
return (
|
2025-03-10 16:02:53 +03:00
|
|
|
<nav className='z-navigation sticky top-0 left-0 right-0 select-none bg-prim-100'>
|
2024-06-26 19:47:31 +03:00
|
|
|
<ToggleNavigation />
|
2024-12-12 13:19:12 +03:00
|
|
|
<div
|
2025-03-10 16:02:53 +03:00
|
|
|
className='pl-2 pr-6 sm:pr-4 h-12 flex cc-shadow-border'
|
2024-12-12 13:19:12 +03:00
|
|
|
style={{
|
2025-02-22 16:46:42 +03:00
|
|
|
maxHeight: noNavigationAnimation ? '0rem' : '3rem',
|
2024-12-12 13:19:12 +03:00
|
|
|
translate: noNavigationAnimation ? '0 -1.5rem' : '0'
|
|
|
|
}}
|
2023-12-26 14:23:51 +03:00
|
|
|
>
|
2025-03-10 16:02:53 +03:00
|
|
|
<div className='flex items-center mr-auto cursor-pointer' onClick={!size.isSmall ? navigateHome : undefined}>
|
2023-12-28 14:04:44 +03:00
|
|
|
<Logo />
|
|
|
|
</div>
|
2025-03-07 02:46:19 +03:00
|
|
|
<div className='flex gap-2 items-center'>
|
2024-06-23 14:20:52 +03:00
|
|
|
<NavigationButton text='Новая схема' icon={<IconNewItem2 size='1.5rem' />} onClick={navigateCreateNew} />
|
|
|
|
<NavigationButton text='Библиотека' icon={<IconLibrary2 size='1.5rem' />} onClick={navigateLibrary} />
|
|
|
|
<NavigationButton text='Справка' icon={<IconManuals size='1.5rem' />} onClick={navigateHelp} />
|
2023-12-28 14:04:44 +03:00
|
|
|
<UserMenu />
|
|
|
|
</div>
|
2024-12-12 13:19:12 +03:00
|
|
|
</div>
|
2023-12-28 14:04:44 +03:00
|
|
|
</nav>
|
|
|
|
);
|
2023-07-15 17:46:19 +03:00
|
|
|
}
|