'use client' import { useEffect, useState } from 'react' import Image from 'next/image' import { toast } from 'react-hot-toast' import { Button } from '@/components/ui/button' import pkg from '../../package.json' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' import { IconCopy, IconExternalLink, IconGitHub } from '@/components/ui/icons' import SettingIcon from '@/assets/images/settings.svg' import { useCopyToClipboard } from '@/lib/hooks/use-copy-to-clipboard' export function UserMenu() { const [host, setHost] = useState('') const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 }) useEffect(() => { setHost(location.host) }, []) useEffect(() => { if (isCopied) { toast.success('复制成功') } }, [isCopied]) return ( <div className="flex items-center justify-between"> <DropdownMenu> <DropdownMenuTrigger asChild> <Button className="pl-0"> <div className="flex items-center justify-center text-xs font-medium uppercase rounded-full select-none h-7 w-7 shrink-0 bg-muted/50 text-muted-foreground"> <Image alt="settings" src={SettingIcon} width={20} /> </div> <span className="ml-2">设置</span> </Button> </DropdownMenuTrigger> <DropdownMenuContent sideOffset={8} align="start" className="w-[180px] bg-background"> <DropdownMenuItem onClick={() => location.href='#dialog="settings"' } className="cursor-pointer" > 设置用户 </DropdownMenuItem> <DropdownMenuSeparator /> <DropdownMenuItem onClick={() => location.href='#dialog="voice"' } className="cursor-pointer" > 语音设置 </DropdownMenuItem> <DropdownMenuSeparator /> <DropdownMenuItem asChild> <a href="https://github.com/weaigc/bingo/" target="_blank" rel="noopener noreferrer" className="inline-flex items-center justify-between w-full gap-2 cursor-pointer" > 开源地址 <IconGitHub /> <IconExternalLink className="w-3 h-3 ml-auto" /> </a> </DropdownMenuItem> <DropdownMenuSeparator /> <DropdownMenuItem asChild> <a href="https://huggingface.co/spaces/hf4all/bingo" target="_blank" rel="noopener noreferrer" className="inline-flex items-center justify-between w-full gap-2 cursor-pointer" > 托管地址 🤗 <IconExternalLink className="w-3 h-3 ml-auto" /> </a> </DropdownMenuItem> <DropdownMenuSeparator /> <DropdownMenuItem asChild> <a href="https://huggingface.co/login?next=%2Fspaces%2Fhf4all%2Fbingo%3Fduplicate%3Dtrue%26visibility%3Dpublic" target="_blank" rel="noopener noreferrer" className="inline-flex items-center justify-between w-full gap-2 cursor-pointer" > 复制站点 <IconExternalLink className="w-3 h-3 ml-auto" /> </a> </DropdownMenuItem> <DropdownMenuSeparator /> <DropdownMenuItem className="flex-col items-start"> <div className="font-medium">版本信息 {pkg.version}</div> </DropdownMenuItem> <DropdownMenuSeparator /> <DropdownMenuItem className="flex-col items-start"> <div className="font-medium">站点域名</div> <div onClick={() => copyToClipboard(host)} className="flex gap-1 text-xs text-zinc-500 cursor-pointer"> {host} <IconCopy /> </div> </DropdownMenuItem> </DropdownMenuContent> </DropdownMenu> </div> ) }