{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "user-menu",
  "type": "registry:block",
  "title": "User Menu",
  "description": "A dropdown menu for logged-in user actions, including an account switcher.",
  "registryDependencies": [
    "profile-picture",
    "username-display"
  ],
  "files": [
    {
      "path": "src/components/deso/user-menu.tsx",
      "content": "import * as React from 'react';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport {\n  User,\n  Wallet,\n  DollarSign,\n  LogOut,\n  PlusCircle,\n  Users,\n} from 'lucide-react';\nimport { UserInfo } from './user-info';\nimport { ProfilePicture } from './profile-picture';\nimport { cn } from '@/lib/utils/deso';\nimport { Profile } from '@/lib/schemas/deso';\nimport { UserPublicKey } from './user-public-key';\nimport { UsernameDisplay } from './username-display';\n\nexport interface UserMenuAccount {\n  publicKey: string;\n  profile?: Profile;\n}\n\ninterface UserMenuProps {\n  currentUser: UserMenuAccount;\n  otherAccounts?: UserMenuAccount[];\n  onAccountSwitch?: (publicKey: string) => void;\n  onLogout?: () => void;\n  onAddAccount?: () => void;\n  onMyProfile?: () => void;\n  onMyWallet?: () => void;\n  onMyEarnings?: () => void;\n  variant?: 'full' | 'compact';\n  align?: 'center' | 'start' | 'end';\n  triggerClassName?: string;\n}\n\nexport function UserMenu({\n  currentUser,\n  otherAccounts = [],\n  onAccountSwitch,\n  onLogout,\n  onAddAccount,\n  onMyProfile,\n  onMyWallet,\n  onMyEarnings,\n  variant = 'full',\n  align = 'end',\n  triggerClassName,\n}: UserMenuProps) {\n  const trigger =\n    variant === 'full' ? (\n      <UserInfo\n        publicKey={currentUser.publicKey}\n        profile={currentUser.profile}\n        pictureSize=\"sm\"\n        className={cn(\n          'cursor-pointer hover:bg-accent p-2 rounded-lg -m-2 w-full w-fit',\n          triggerClassName\n        )}\n      />\n    ) : (\n      <ProfilePicture\n        publicKey={currentUser.publicKey}\n        profile={currentUser.profile}\n        size=\"md\"\n        className={cn('cursor-pointer', triggerClassName)}\n      />\n    );\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <div className=\"flex items-center\">{trigger}</div>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-64 border border-border\" align={align}>\n        <div className=\"p-2 space-y-1\">\n          <p className=\"text-xs text-muted-foreground px-2\">Logged in as:</p>\n          <div className=\"px-2\">\n            <UsernameDisplay\n              publicKey={currentUser.publicKey}\n              profile={currentUser.profile}\n              className=\"font-semibold\"\n            />\n            <UserPublicKey\n              publicKey={currentUser.publicKey}\n              showCopyButton\n              truncate\n            />\n          </div>\n        </div>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem onSelect={onMyProfile}>\n          <User className=\"mr-2 h-4 w-4\" />\n          <span>My Profile</span>\n        </DropdownMenuItem>\n        <DropdownMenuItem onSelect={onMyWallet}>\n          <Wallet className=\"mr-2 h-4 w-4\" />\n          <span>My Wallet</span>\n        </DropdownMenuItem>\n        <DropdownMenuItem onSelect={onMyEarnings}>\n          <DollarSign className=\"mr-2 h-4 w-4\" />\n          <span>My Earnings</span>\n        </DropdownMenuItem>\n        <DropdownMenuSeparator />\n        <DropdownMenuSub>\n          <DropdownMenuSubTrigger>\n            <Users className=\"mr-2 h-4 w-4\" />\n            <span>Switch Account</span>\n          </DropdownMenuSubTrigger>\n          <DropdownMenuSubContent className=\"border border-border\">\n            {otherAccounts.map((account) => (\n              <DropdownMenuItem\n                key={account.publicKey}\n                onSelect={() => onAccountSwitch?.(account.publicKey)}\n              >\n                <UserInfo\n                  publicKey={account.publicKey}\n                  profile={account.profile}\n                  pictureSize=\"xs\"\n                />\n              </DropdownMenuItem>\n            ))}\n            <DropdownMenuSeparator />\n            <DropdownMenuItem onSelect={onAddAccount}>\n              <PlusCircle className=\"mr-2 h-4 w-4\" />\n              <span>Add account</span>\n            </DropdownMenuItem>\n          </DropdownMenuSubContent>\n        </DropdownMenuSub>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem variant=\"destructive\" onSelect={onLogout}>\n          <LogOut className=\"mr-2 h-4 w-4\" />\n          <span>Log out</span>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n} ",
      "type": "registry:component",
      "target": "src/components/deso-ui/user-menu.tsx"
    }
  ]
}