import { RoleImpersonationSelector } from '.' import { ChevronDown, User as IconUser } from 'lucide-react' import { useState } from 'react' import { Button, cn, Popover, PopoverContent, PopoverTrigger } from 'ui' import { getAvatarUrl, getDisplayName } from '../Auth/Users/Users.utils' import type { User } from '@/data/auth/users-infinite-query' import { useRoleImpersonationStateSnapshot } from '@/state/role-impersonation-state' export interface RoleImpersonationPopoverProps { header?: string serviceRoleLabel?: string variant?: 'regular' | 'connected-on-right' | 'connected-on-left' | 'connected-on-both' align?: 'center' | 'start' | 'end' disallowAuthenticatedOption?: boolean } export const RoleImpersonationPopover = ({ header, serviceRoleLabel, variant = 'regular', align = 'end', disallowAuthenticatedOption = false, }: RoleImpersonationPopoverProps) => { const state = useRoleImpersonationStateSnapshot() const [isOpen, setIsOpen] = useState(false) const currentRole = state.role?.role ?? serviceRoleLabel ?? 'postgres' return ( ) } const UserRoleButtonSection = ({ user }: { user: User }) => { const avatarUrl = getAvatarUrl(user) const displayName = getDisplayName(user, user.email ?? user.phone ?? user.id ?? 'Unknown') return (
{avatarUrl ? ( {displayName} ) : (
)} {displayName}
) } const ExternalAuthButtonSection = ({ sub }: { sub: string }) => { return (
{sub}
) }