/
viktorphp
/
front-socket
Обзор
Документация
Войти
/
viktorphp
/
front-socket
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/features/auth/ui/logoutButton/LogoutButton.tsx
46 строк
1 KB
Иванов Виктор Евгеньевич
[feature-diary]: поправить баги и верстку, добавить README.md
12 апр 2026, 20:01
12 апр 2026, 20:01
0d63759
Код
Авторство
О чём код?
'use client'; import { useState, useTransition } from 'react'; import { MenuItem } from '@mui/material'; import { useRouter } from 'next/navigation'; import { useUserStore } from '@entities/user'; import { logoutAction } from '@features/auth'; import { EAppRoutes } from '@shared/config'; import { LoaderOverlay } from '@shared/ui'; export const LogoutButton = ({ handleClose }: { handleClose: () => void }) => { const [hovered, setHovered] = useState(false); const [isPending, startTransition] = useTransition(); const { setUser } = useUserStore((state) => state); const router = useRouter(); const handleLogout = async () => { startTransition(async () => { await logoutAction(); setUser(null); router.push(EAppRoutes.LOGIN); }); setTimeout(() => handleClose(), 400); }; if (isPending) return <LoaderOverlay />; return ( <MenuItem onClick={handleLogout} onMouseEnter={() => setHovered(true)} onMouseLeave={() => setHovered(false)} sx={{ py: '0.6rem', px: '1rem', fontSize: '1.25rem' }} style={{ backgroundColor: hovered ? '#e0e0e0' : undefined }} > Выйти </MenuItem> ); };