'use client'; import Link from 'next/link'; import { CreditCard, Lock, LogOut, User as LucideUser, Monitor, Moon, Palette, Sun, UserCog, } from 'lucide-react'; import { signOut } from 'next-auth/react'; import { useTheme } from 'next-themes'; import { LuGithub } from 'react-icons/lu'; import { useFeatureFlags } from '@documenso/lib/client-only/providers/feature-flag'; import { isAdmin } from '@documenso/lib/next-auth/guards/is-admin'; import { recipientInitials } from '@documenso/lib/utils/recipient-formatter'; import { User } from '@documenso/prisma/client'; import { Avatar, AvatarFallback } from '@documenso/ui/primitives/avatar'; import { Button } from '@documenso/ui/primitives/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from '@documenso/ui/primitives/dropdown-menu'; export type ProfileDropdownProps = { user: User; }; export const ProfileDropdown = ({ user }: ProfileDropdownProps) => { const { getFlag } = useFeatureFlags(); const { theme, setTheme } = useTheme(); const isUserAdmin = isAdmin(user); const isBillingEnabled = getFlag('app_billing'); const avatarFallback = user.name ? recipientInitials(user.name) : user.email.slice(0, 1).toUpperCase(); return ( Account {isUserAdmin && ( <> Admin )} Profile Security {isBillingEnabled && ( Billing )} Themes Light Dark System Star on Github void signOut({ callbackUrl: '/', }) } > Sign Out ); };