import { useState } from 'react'; import { AppBar, Toolbar, Typography, IconButton, Tooltip, Box, Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button, List, ListItem, ListItemText } from '@mui/material'; import { Brightness7, Brightness4, BrightnessAuto, Logout, HelpOutline } from '@mui/icons-material'; import { useNavigate } from 'react-router-dom'; import { useThemeContext } from '../ThemeContext'; import { useAuth } from '../auth/AuthContext'; import { Menu as MenuIcon } from '@mui/icons-material'; import { APP_VERSION } from '../utils/version'; import { Logger } from '../utils/logger'; interface HeaderProps { onMenuClick?: () => void; isMobile?: boolean; } export default function Header({ onMenuClick, isMobile }: HeaderProps) { const { mode, toggleColorMode } = useThemeContext(); const { logout } = useAuth(); const navigate = useNavigate(); const [helpOpen, setHelpOpen] = useState(false); const [confirmDialog, setConfirmDialog] = useState({ open: false, title: '', onConfirm: () => {} }); const handleLogout = () => { Logger.debug('Opening logout confirmation dialog', 'Header'); setConfirmDialog({ open: true, title: 'Вы действительно хотите выйти?', onConfirm: async () => { Logger.debug('Logout confirmed by user', 'Header'); await logout(); Logger.debug('logout() resolved in Header', 'Header'); navigate('/login'); } }); }; const getThemeIcon = () => { switch (mode) { case 'light': return ; case 'dark': return ; case 'system': return ; } }; const getThemeLabel = () => { switch (mode) { case 'light': return 'Светлая тема'; case 'dark': return 'Темная тема'; case 'system': return 'Системная тема'; } }; return ( <> theme.zIndex.drawer + 1 }} > {isMobile && ( )} Logo 3DP-MANAGER setHelpOpen(true)}> {getThemeIcon()} setHelpOpen(false)} maxWidth="sm" fullWidth > Об утилите 3DP-MANAGER Утилита для автогенерации инбаундов к панели 3x-ui, формирования единой подписки и настройки перенаправления трафика с промежуточного сервера на основной. Основные возможности: Версия: {APP_VERSION}
Разработчик: DenPiligrim
{/* Confirmation Dialog for logout */} setConfirmDialog({ ...confirmDialog, open: false })}> Подтверждение {confirmDialog.title} ); }