2025-03-09 21:57:21 +03:00
|
|
|
'use client';
|
2024-06-07 20:17:03 +03:00
|
|
|
|
2025-03-14 21:06:31 +03:00
|
|
|
import clsx from 'clsx';
|
|
|
|
|
|
2025-03-12 12:04:23 +03:00
|
|
|
import { IconDarkTheme, IconLightTheme, IconPin, IconUnpin } from '@/components/icons';
|
2025-03-12 11:54:32 +03:00
|
|
|
import { useAppLayoutStore } from '@/stores/app-layout';
|
2025-01-15 16:06:18 +03:00
|
|
|
import { usePreferencesStore } from '@/stores/preferences';
|
2025-03-09 21:57:21 +03:00
|
|
|
import { globalIDs } from '@/utils/constants';
|
2024-06-07 20:17:03 +03:00
|
|
|
|
2025-02-19 23:29:45 +03:00
|
|
|
export function ToggleNavigation() {
|
2025-01-15 16:06:18 +03:00
|
|
|
const darkMode = usePreferencesStore(state => state.darkMode);
|
|
|
|
|
const toggleDarkMode = usePreferencesStore(state => state.toggleDarkMode);
|
2025-01-14 21:57:32 +03:00
|
|
|
const noNavigationAnimation = useAppLayoutStore(state => state.noNavigationAnimation);
|
|
|
|
|
const toggleNoNavigation = useAppLayoutStore(state => state.toggleNoNavigation);
|
2024-06-07 20:17:03 +03:00
|
|
|
return (
|
2025-03-14 21:06:31 +03:00
|
|
|
<div
|
|
|
|
|
className={clsx('absolute top-0 right-0 z-navigation h-12', noNavigationAnimation ? 'grid' : 'hidden sm:grid')}
|
|
|
|
|
>
|
2025-03-09 21:57:21 +03:00
|
|
|
<button
|
|
|
|
|
tabIndex={-1}
|
|
|
|
|
type='button'
|
|
|
|
|
className='p-1 cursor-pointer self-start'
|
|
|
|
|
onClick={toggleNoNavigation}
|
|
|
|
|
data-tooltip-id={globalIDs.tooltip}
|
|
|
|
|
data-tooltip-content={noNavigationAnimation ? 'Показать навигацию' : 'Скрыть навигацию'}
|
2025-03-20 11:33:19 +03:00
|
|
|
aria-label={noNavigationAnimation ? 'Показать навигацию' : 'Скрыть навигацию'}
|
2025-03-09 21:57:21 +03:00
|
|
|
>
|
2025-06-19 12:44:40 +03:00
|
|
|
{!noNavigationAnimation ? (
|
|
|
|
|
<IconPin size='0.75rem' className='hover:text-primary cc-animate-color cc-hover-pulse' />
|
|
|
|
|
) : null}
|
|
|
|
|
{noNavigationAnimation ? (
|
|
|
|
|
<IconUnpin size='0.75rem' className='hover:text-primary cc-animate-color cc-hover-pulse' />
|
|
|
|
|
) : null}
|
2025-03-09 21:57:21 +03:00
|
|
|
</button>
|
2024-12-19 18:48:43 +03:00
|
|
|
{!noNavigationAnimation ? (
|
|
|
|
|
<button
|
|
|
|
|
tabIndex={-1}
|
|
|
|
|
type='button'
|
2025-02-22 16:12:29 +03:00
|
|
|
className='p-1 cursor-pointer'
|
2024-12-19 18:48:43 +03:00
|
|
|
onClick={toggleDarkMode}
|
2025-02-20 18:10:34 +03:00
|
|
|
data-tooltip-id={globalIDs.tooltip}
|
2024-12-19 18:48:43 +03:00
|
|
|
data-tooltip-content={darkMode ? 'Тема: Темная' : 'Тема: Светлая'}
|
2025-03-20 11:33:19 +03:00
|
|
|
aria-label={darkMode ? 'Тема: Темная' : 'Тема: Светлая'}
|
2024-12-19 18:48:43 +03:00
|
|
|
>
|
2025-06-19 12:44:40 +03:00
|
|
|
{darkMode ? (
|
|
|
|
|
<IconDarkTheme size='0.75rem' className='hover:text-primary cc-animate-color cc-hover-pulse' />
|
|
|
|
|
) : null}
|
|
|
|
|
{!darkMode ? (
|
|
|
|
|
<IconLightTheme size='0.75rem' className='hover:text-primary cc-animate-color cc-hover-pulse' />
|
|
|
|
|
) : null}
|
2024-12-19 18:48:43 +03:00
|
|
|
</button>
|
|
|
|
|
) : null}
|
|
|
|
|
</div>
|
2024-06-07 20:17:03 +03:00
|
|
|
);
|
|
|
|
|
}
|