refactor(settings): consolidate user profile into single settings page

Drop the standalone /settings/profile route + user-profile component;
folding the same fields into user-settings means one place to update
and one menu item. UserMenu loses the Profile dropdown entry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-14 03:35:07 +02:00
parent 12e22d9be3
commit 05b57abf05
4 changed files with 135 additions and 241 deletions

View File

@@ -3,7 +3,7 @@
/**
* Unified user menu - used by the topbar avatar AND the sidebar-footer
* profile row. Encapsulates:
* - Profile / Settings / Notification preferences links
* - Settings / Notification preferences links
* - Dark-mode toggle
* - Sign out
* - Inline port switcher (when the user has access to >1 port)
@@ -15,7 +15,7 @@
import { useRouter } from 'next/navigation';
import { useQueryClient } from '@tanstack/react-query';
import { LogOut, User, Settings, Bell, Check, Building2 } from 'lucide-react';
import { LogOut, Settings, Bell, Check, Building2 } from 'lucide-react';
import { type ReactNode } from 'react';
import { useUIStore } from '@/stores/ui-store';
@@ -107,11 +107,6 @@ export function UserMenu({ trigger, align = 'end', user, ports }: UserMenuProps)
</>
)}
{/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}
<DropdownMenuItem onClick={() => router.push(`${base}/settings/profile` as any)}>
<User className="w-4 h-4 mr-2" aria-hidden />
Profile
</DropdownMenuItem>
{/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}
<DropdownMenuItem onClick={() => router.push(`${base}/settings` as any)}>
<Settings className="w-4 h-4 mr-2" aria-hidden />