bingo-silver / src /components /user-menu.tsx
SilverStarShadow's picture
Duplicate from hf4all/bingo
15bfa8d
'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>
)
}