feat: integrate user profile pictures with circular avatar display and upload in settings
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 57s
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 57s
This commit is contained in:
1 parent
8b043c4809
commit
444442fdf0
13 files changed
+367
-65
No files matched your search
+13
-15
@@ -46,6 +46,7 @@ import { HelpView } from './features/help/HelpView';
|
||||
import { GroupsView } from './features/teams/GroupsView';
|
||||
import { useMobileActions } from './context/MobileActionContext';
|
||||
import { MobileHeaderMenu } from './components/MobileHeaderMenu';
|
||||
import { UserAvatar } from './components/UserAvatar';
|
||||
|
||||
type ActiveTab =
|
||||
| 'triage'
|
||||
@@ -588,9 +589,7 @@ export const App: React.FC = () => {
|
||||
}`}
|
||||
title="Profil & Einstellungen"
|
||||
>
|
||||
<div className="w-8 h-8 rounded-full bg-accent text-on-accent text-xs font-bold shadow-sm flex items-center justify-center">
|
||||
{user.displayName ? user.displayName.slice(0, 1).toUpperCase() : 'U'}
|
||||
</div>
|
||||
<UserAvatar user={user} size="sm" className="shadow-sm" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -632,9 +631,7 @@ export const App: React.FC = () => {
|
||||
className="h-8 flex items-center gap-2 text-xs font-medium text-main hover:opacity-85 transition-opacity cursor-pointer group"
|
||||
title="Benutzermenü öffnen"
|
||||
>
|
||||
<div className="w-7 h-7 rounded-full bg-accent text-on-accent text-[11px] font-bold flex items-center justify-center flex-shrink-0">
|
||||
{user.displayName ? user.displayName.slice(0, 1).toUpperCase() : 'U'}
|
||||
</div>
|
||||
<UserAvatar user={user} size="sm" />
|
||||
<span className="max-w-[130px] truncate hidden sm:inline text-main font-medium">
|
||||
{user.displayName}
|
||||
</span>
|
||||
@@ -644,12 +641,15 @@ export const App: React.FC = () => {
|
||||
{showProfileMenu && (
|
||||
<div className="absolute right-0 top-full mt-1.5 w-64 panel-surface shadow-panel z-50 divide-y divide-border text-xs">
|
||||
{/* User Info Header */}
|
||||
<div className="p-3 bg-canvas">
|
||||
<p className="font-bold text-main truncate">{user.displayName}</p>
|
||||
<p className="text-[11px] text-muted truncate">{user.email}</p>
|
||||
<span className="inline-block mt-1.5 px-1.5 py-0.5 bg-panel border border-border rounded-btn text-[10px] text-accent font-semibold">
|
||||
{roleLabel}
|
||||
</span>
|
||||
<div className="p-3 bg-canvas flex items-center gap-2.5">
|
||||
<UserAvatar user={user} size="md" className="border border-border/70" />
|
||||
<div className="min-w-0 flex-1">
|
||||
<p className="font-bold text-main truncate">{user.displayName}</p>
|
||||
<p className="text-[11px] text-muted truncate">{user.email}</p>
|
||||
<span className="inline-block mt-1 px-1.5 py-0.5 bg-panel border border-border rounded-btn text-[10px] text-accent font-semibold">
|
||||
{roleLabel}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Theme Quick Switcher */}
|
||||
@@ -1070,9 +1070,7 @@ export const App: React.FC = () => {
|
||||
{/* User Info Header */}
|
||||
<div className="flex items-center justify-between pb-2">
|
||||
<div className="flex items-center gap-3">
|
||||
<div className="w-10 h-10 rounded-full bg-accent text-on-accent text-sm font-bold flex items-center justify-center flex-shrink-0">
|
||||
{user.displayName ? user.displayName.slice(0, 1).toUpperCase() : 'U'}
|
||||
</div>
|
||||
<UserAvatar user={user} size="lg" className="border border-border/80 shadow-sm" />
|
||||
<div>
|
||||
<p className="font-bold text-sm text-main">{user.displayName}</p>
|
||||
<p className="text-xs text-muted">{user.email}</p>
|
||||
|
||||
Reference in new issue
Block a user