fix ui
All checks were successful
Deploy on Master Change / deploy (push) Successful in 1m19s

This commit is contained in:
2026-07-07 06:52:33 +07:00
parent 939097ddd9
commit 2bb856f2fd
4 changed files with 325 additions and 112 deletions

View File

@@ -12,13 +12,25 @@ interface StudentAvatarProps {
avatar?: string | null;
isOnline?: boolean;
size?: number;
showStatusBadge?: boolean;
}
export const StudentOnlineBadge: React.FC<{
isOnline: boolean;
size?: 'sm' | 'md';
}> = ({ isOnline, size = 'sm' }) => (
<span className={`student-online-badge ${isOnline ? 'online' : 'offline'} student-online-badge--${size}`}>
<span className="student-online-badge-dot" aria-hidden />
{isOnline ? 'Online' : 'Offline'}
</span>
);
export const StudentAvatar: React.FC<StudentAvatarProps> = ({
fullName,
avatar,
isOnline = false,
size = 48,
showStatusBadge = true,
}) => {
const [imgFailed, setImgFailed] = useState(false);
const avatarUrl = normalizeAvatarUrl(avatar);
@@ -30,20 +42,28 @@ export const StudentAvatar: React.FC<StudentAvatarProps> = ({
}, [avatarUrl]);
return (
<div
className={`student-workspace-avatar ${isOnline ? 'online' : ''} ${showImage ? 'has-image' : ''}`}
style={{ width: size, height: size, fontSize: size * 0.38 }}
>
{showImage ? (
<img
src={avatarUrl}
alt={fullName}
className="student-avatar-img"
referrerPolicy="no-referrer"
onError={() => setImgFailed(true)}
<div className="student-avatar-wrap" style={{ width: size, height: size }}>
<div
className={`student-workspace-avatar ${isOnline ? 'online' : 'offline'} ${showImage ? 'has-image' : ''}`}
style={{ width: size, height: size, fontSize: size * 0.38 }}
>
{showImage ? (
<img
src={avatarUrl}
alt={fullName}
className="student-avatar-img"
referrerPolicy="no-referrer"
onError={() => setImgFailed(true)}
/>
) : (
initial
)}
</div>
{showStatusBadge && (
<span
className={`student-avatar-status-ring ${isOnline ? 'online' : 'offline'}`}
title={isOnline ? 'Đang online' : 'Đang offline'}
/>
) : (
initial
)}
</div>
);