'use client'; import { useEffect, useState } from 'react'; import { loadComponent } from '@/lib/material-components'; import { useOptimizedFetch } from '@/hooks/useOptimizedFetch'; import { useRouter } from 'next/navigation'; export default function ChildrenPage() { const router = useRouter(); const [componentsLoaded, setComponentsLoaded] = useState(false); const [selectedChild, setSelectedChild] = useState(null); useEffect(() => { Promise.all([ loadComponent('elevated-card'), loadComponent('filled-button'), loadComponent('icon'), loadComponent('list'), loadComponent('list-item'), ]).then(() => { setComponentsLoaded(true); }).catch((err) => { console.error('Error loading components:', err); setComponentsLoaded(true); }); }, []); const { data: childrenData, loading } = useOptimizedFetch({ url: '/users/parents/children/', cacheKey: 'children_list', cacheTTL: 5 * 60 * 1000, // 5 минут }); if (!componentsLoaded) { return (
Загрузка...
); } const children = childrenData?.results || childrenData || []; return (

Мои дети

{loading ? (
Загрузка...
) : children.length === 0 ? ( family_restroom

Нет привязанных детей

) : (
{children.map((child: any) => ( { setSelectedChild(child.id); localStorage.setItem('selected_child_id', child.id.toString()); }} onMouseEnter={(e: any) => { e.currentTarget.style.transform = 'translateY(-4px)'; }} onMouseLeave={(e: any) => { e.currentTarget.style.transform = 'translateY(0)'; }} >
person

{child.first_name || ''} {child.last_name || ''}

{child.email}

{ e.stopPropagation(); router.push(`/children-progress?child=${child.id}`); }} > Посмотреть прогресс
))}
)}
); }