Spaces:
Runtime error
Runtime error
'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> | |
) | |
} | |