import { useFlag } from 'common' import { FlaskConical, Loader2, ScrollText, Settings } from 'lucide-react' import { useTheme } from 'next-themes' import Link from 'next/link' import { useRouter } from 'next/router' import { cn, DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, singleThemes, Theme, } from 'ui' import { ButtonTooltip } from '../ui/ButtonTooltip' import { useFeaturePreviewModal } from './App/FeaturePreview/FeaturePreviewContext' import { TimezoneDropdown } from './UserDropdown/TimezoneDropdown' import { ProfileImage } from '@/components/ui/ProfileImage' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' import { IS_PLATFORM } from '@/lib/constants' import { useProfileNameAndPicture } from '@/lib/profile' import { useTrack } from '@/lib/telemetry/track' import { useAppStateSnapshot } from '@/state/app-state' export function UserDropdown({ triggerClassName, contentClassName, }: { triggerClassName?: string contentClassName?: string }) { const router = useRouter() const { theme, setTheme } = useTheme() const appStateSnapshot = useAppStateSnapshot() const profileShowEmailEnabled = useIsFeatureEnabled('profile:show_email') const timezonePickerEnabled = useFlag('timezonePicker') const { username, avatarUrl, primaryEmail, isLoading } = useProfileNameAndPicture() const { toggleFeaturePreviewModal } = useFeaturePreviewModal() const track = useTrack() return ( { if (open) track('header_user_dropdown_opened') }} > {isLoading ? (
) : ( )}
{IS_PLATFORM && ( <>
{!!username ? ( <> {username} {primaryEmail !== username && profileShowEmailEnabled && ( {primaryEmail} )} ) : ( {primaryEmail} )}
{ if (router.pathname !== '/account/me') { appStateSnapshot.setLastRouteBeforeVisitingAccountPage(router.asPath) } }} > Account preferences toggleFeaturePreviewModal(true)} // onSelect={() => toggleFeaturePreviewModal(true)} > Feature previews Changelog )} Theme { setTheme(value) }} > {singleThemes.map((theme: Theme) => ( {theme.name} ))} {timezonePickerEnabled && ( <> )} {IS_PLATFORM && ( <> { router.push('/logout') }} > Log out )}
) }