import React from 'react'; import { Box, useColorMode, Text } from '@chakra-ui/react'; import { useThemeManager } from '../../hooks/useThemeManager'; interface UserCardProps { user: { id: string; name: string; photo?: string; role?: string; status?: 'online' | 'offline' | 'away'; attendance?: number; }; onClick?: () => void; showStatus?: boolean; showAttendance?: boolean; } export const UserCard: React.FC = ({ user, onClick, showStatus = false, showAttendance = false }) => { const { isLightVariant } = useThemeManager(); // Функция для определения цвета статуса онлайн const getStatusColor = (status: string) => { switch (status) { case 'online': return 'green.500'; case 'away': return 'yellow.500'; default: return 'gray.400'; } }; // Функция для рендера индикатора посещаемости const renderAttendanceIndicator = (attendance: number) => { let color; let text; if (attendance >= 90) { color = 'green.500'; text = '✓✓✓'; } else if (attendance >= 70) { color = 'green.400'; text = '✓✓'; } else if (attendance >= 50) { color = 'yellow.500'; text = '✓'; } else if (attendance >= 30) { color = 'orange.500'; text = '⚠'; } else { color = 'red.500'; text = '✗'; } return ( {text} ); }; return ( {user.photo ? ( ) : ( {user.name.charAt(0).toUpperCase()} )} {showStatus && user.status && ( )} {user.name} {user.role && ( {user.role} )} {showAttendance && typeof user.attendance === 'number' && renderAttendanceIndicator(user.attendance)} {/* Дополнительные декоративные элементы в зависимости от темы */} ); };