UserInfoDisplay.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React from 'react';
  2. import { User, Shield, UserRound } from 'lucide-react';
  3. import { useLanguage } from '../contexts/LanguageContext';
  4. interface UserInfoDisplayProps {
  5. currentUser: any;
  6. }
  7. export const UserInfoDisplay: React.FC<UserInfoDisplayProps> = ({ currentUser }) => {
  8. const { t } = useLanguage();
  9. if (!currentUser) {
  10. return null;
  11. }
  12. return (
  13. <div className="px-4 py-3 bg-slate-900 border-b border-slate-800">
  14. <div className="flex items-center gap-3">
  15. <div className="relative">
  16. <div className="w-10 h-10 rounded-full bg-gradient-to-br from-blue-500 to-indigo-600 flex items-center justify-center text-white">
  17. <UserRound size={18} />
  18. </div>
  19. {currentUser.isAdmin && (
  20. <div className="absolute -bottom-1 -right-1 bg-orange-500 rounded-full p-1 border-2 border-slate-900">
  21. <Shield size={10} className="text-white" />
  22. </div>
  23. )}
  24. </div>
  25. <div className="flex-1 min-w-0">
  26. <div className="flex items-center gap-2">
  27. <p className="text-sm font-medium text-white truncate">{currentUser.username}</p>
  28. {currentUser.isAdmin && (
  29. <span className="text-xs px-2 py-0.5 bg-orange-500/20 text-orange-300 rounded-full border border-orange-500/30">
  30. {t('admin')}
  31. </span>
  32. )}
  33. </div>
  34. <p className="text-xs text-slate-400 truncate">
  35. ID: {currentUser.id?.substring(0, 8)}...
  36. </p>
  37. </div>
  38. </div>
  39. </div>
  40. );
  41. };