(null);
const [isMenuOpen, setIsMenuOpen] = useState(false);
const isSponsorMode = useSponsorMode();
const shouldReduceMotion = useReducedMotion();
const primaryDriverId = useEffectiveDriverId();
useEffect(() => {
let cancelled = false;
async function loadDriver() {
if (!primaryDriverId) {
if (!cancelled) {
setDriver(null);
}
return;
}
const dto = await driverService.findById(primaryDriverId);
if (!cancelled) {
setDriver(dto ? new DriverViewModelClass(dto) : null);
}
}
void loadDriver();
return () => {
cancelled = true;
};
}, [primaryDriverId, driverService]);
const data = useMemo(() => {
if (!session?.user || !primaryDriverId || !driver) {
return null;
}
// Driver rating + rank are not exposed by the current API contract for the lightweight
// driver DTO used in the header. Keep it null until the API provides it.
const rating: number | null = null;
const rank: number | null = null;
const avatarSrc = mediaService.getDriverAvatar(primaryDriverId);
return {
driver,
avatarSrc,
rating,
rank,
};
}, [session, driver, primaryDriverId, mediaService]);
// Close menu when clicking outside
useEffect(() => {
const handleClickOutside = (e: MouseEvent) => {
if (isMenuOpen) {
const target = e.target as HTMLElement;
if (!target.closest('[data-user-pill]')) {
setIsMenuOpen(false);
}
}
};
document.addEventListener('click', handleClickOutside);
return () => document.removeEventListener('click', handleClickOutside);
}, [isMenuOpen]);
// Sponsor mode UI
if (isSponsorMode) {
return (
setIsMenuOpen((open) => !open)} />
{isMenuOpen && (
{/* Header */}
Acme Racing Co.
Sponsor Account
{/* Quick stats */}
{/* Menu Items */}
Sponsor portal is currently unavailable.
}
comingSoon={
Sponsor portal is coming soon.
}
>
setIsMenuOpen(false)}
>
Dashboard
setIsMenuOpen(false)}
>
My Sponsorships
setIsMenuOpen(false)}
>
Billing
setIsMenuOpen(false)}
>
Settings
{/* Footer */}
)}
);
}
if (!session) {
return (
Sign In
Get Started
);
}
if (!data) {
return null;
}
return (
setIsMenuOpen((open) => !open)}
/>
{isMenuOpen && (
setIsMenuOpen(false)}
>
Profile
setIsMenuOpen(false)}
>
Manage leagues
setIsMenuOpen(false)}
>
Liveries
setIsMenuOpen(false)}
>
Sponsorship Requests
setIsMenuOpen(false)}
>
Settings
)}
);
}