import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { authApi, familyApi } from '../api/client'; import { useStore } from '../store/useStore'; import { Shield, Home, LogOut, Users, Plus, Trash2, Lock, ArrowLeft, } from 'lucide-react'; export default function AdminPanel() { const { t } = useTranslation(); const navigate = useNavigate(); const { user, logout: storeLogout } = useStore(); const [newFamilyName, setNewFamilyName] = useState(''); const [newFamilyPassword, setNewFamilyPassword] = useState(''); const [families, setFamilies] = useState>([]); useEffect(() => { loadFamilies(); }, []); const handleLogout = async () => { try { await authApi.logout(); storeLogout(); navigate('/'); } catch (err) { console.error('Logout error:', err); } }; const loadFamilies = async () => { try { const response = await familyApi.getAll(); setFamilies(response.data); } catch (err) { console.error('Error loading families:', err); } }; const handleCreateFamily = async () => { if (!newFamilyName.trim() || !newFamilyPassword.trim()) { alert(t('admin.fillNameAndPassword')); return; } try { await familyApi.create({ name: newFamilyName, password: newFamilyPassword }); setNewFamilyName(''); setNewFamilyPassword(''); loadFamilies(); } catch (err) { alert(t('admin.createError')); console.error(err); } }; const handleDeleteFamily = async (id: number) => { if (!confirm(t('admin.deleteConfirm'))) return; try { await familyApi.delete(id); loadFamilies(); } catch (err) { alert(t('admin.deleteError')); console.error(err); } }; if (!user?.is_admin) { return (

{t('admin.accessDenied')}

{t('admin.requiresAdmin')}

); } return (

{t('admin.title')}

{t('admin.subtitle')}

{t('admin.createFamily')}

setNewFamilyName(e.target.value)} className="w-full px-5 py-4 border-2 border-gray-300 rounded-2xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-all font-medium text-center" />
setNewFamilyPassword(e.target.value)} className="w-full px-5 py-4 border-2 border-gray-300 rounded-2xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-all font-medium text-center" />

{t('admin.familyList')}

{families.length === 0 ? (

{t('admin.noFamilies')}

{t('admin.createFirst')}

) : (
{families.map((family) => (
{family.name}
))}
)}
); }