import { useState } from 'react' import { Link } from 'react-router-dom' import { IconLogin, IconLogout, IconUserCircle } from '@tabler/icons-react' import { useAuth } from '../../hooks/useAuth' import { useVisibleActor } from '../../hooks/useVisibleActor' import { ProfileAvatar } from '../profile/ProfileAvatar' type AccountButtonProps = { ariaLabel: string to: string } export function AccountButton({ ariaLabel, to }: AccountButtonProps) { const { session, isLoading, error, signOut } = useAuth() const [isSigningOut, setIsSigningOut] = useState(false) const { actor, miniDoc, elementRef } = useVisibleActor(session?.info.sub ?? null) const handle = miniDoc && miniDoc.handle !== 'handle.invalid' ? miniDoc.handle : null const actionClassName = 'flex h-full w-9 items-center justify-center transition-colors hover:bg-ctp-surface-0' const isSignedIn = session !== null const isUnavailable = isLoading || (isSignedIn && handle === null) async function handleSignOut() { if (isSigningOut) return setIsSigningOut(true) try { await signOut() } finally { setIsSigningOut(false) } } const accountAvatar = actor ? ( ) : (