refactor: massive codebase stabilization, strict TS, UI/UX overhaul, and central logging

This commit is contained in:
iqubik
2026-03-28 18:33:13 +03:00
parent 388417cec9
commit 8f8a3bf724
69 changed files with 4272 additions and 1693 deletions
+32 -5
View File
@@ -11,6 +11,7 @@ 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';
interface HeaderProps {
onMenuClick?: () => void;
@@ -23,12 +24,17 @@ export default function Header({ onMenuClick, isMobile }: HeaderProps) {
const navigate = useNavigate();
const [helpOpen, setHelpOpen] = useState(false);
const [confirmDialog, setConfirmDialog] = useState({ open: false, title: '', onConfirm: () => {} });
const handleLogout = () => {
if (confirm('Вы действительно хотите выйти?')) {
logout();
navigate('/login');
}
setConfirmDialog({
open: true,
title: 'Вы действительно хотите выйти?',
onConfirm: () => {
logout();
navigate('/login');
}
});
};
const getThemeIcon = () => {
@@ -132,7 +138,7 @@ export default function Header({ onMenuClick, isMobile }: HeaderProps) {
</List>
<Typography variant="body2" color="text.secondary" sx={{ mt: 2 }}>
Версия: 2.0.2<br />
Версия: {APP_VERSION}<br />
Разработчик: DenPiligrim
</Typography>
</DialogContent>
@@ -140,6 +146,27 @@ export default function Header({ onMenuClick, isMobile }: HeaderProps) {
<Button onClick={() => setHelpOpen(false)}>Понятно</Button>
</DialogActions>
</Dialog>
{/* Confirmation Dialog for logout */}
<Dialog open={confirmDialog.open} onClose={() => setConfirmDialog({ ...confirmDialog, open: false })}>
<DialogTitle>Подтверждение</DialogTitle>
<DialogContent>
<Typography>{confirmDialog.title}</Typography>
</DialogContent>
<DialogActions>
<Button onClick={() => setConfirmDialog({ ...confirmDialog, open: false })}>Отмена</Button>
<Button
onClick={() => {
confirmDialog.onConfirm();
setConfirmDialog({ ...confirmDialog, open: false });
}}
variant="contained"
color="error"
>
Выйти
</Button>
</DialogActions>
</Dialog>
</>
);
}