/* Copyright (C) 2025 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import React, { useRef } from 'react'; import { Link } from 'react-router-dom'; import { Avatar, Button, Dropdown, Typography } from '@douyinfe/semi-ui'; import { ChevronDown } from 'lucide-react'; import { IconExit, IconUserSetting, IconCreditCard, IconKey, } from '@douyinfe/semi-icons'; import { stringToColor } from '../../../helpers'; import SkeletonWrapper from '../components/SkeletonWrapper'; const UserArea = ({ userState, isLoading, isMobile, isSelfUseMode, logout, navigate, t, }) => { const dropdownRef = useRef(null); if (isLoading) { return ( ); } if (userState.user) { return (
dropdownRef.current} render={ { navigate('/console/personal'); }} className='!px-3 !py-1.5 !text-sm !text-semi-color-text-0 hover:!bg-semi-color-fill-1 dark:!text-gray-200 dark:hover:!bg-blue-500 dark:hover:!text-white' >
{t('个人设置')}
{ navigate('/console/token'); }} className='!px-3 !py-1.5 !text-sm !text-semi-color-text-0 hover:!bg-semi-color-fill-1 dark:!text-gray-200 dark:hover:!bg-blue-500 dark:hover:!text-white' >
{t('令牌管理')}
{ navigate('/console/topup'); }} className='!px-3 !py-1.5 !text-sm !text-semi-color-text-0 hover:!bg-semi-color-fill-1 dark:!text-gray-200 dark:hover:!bg-blue-500 dark:hover:!text-white' >
{t('钱包管理')}
{t('退出')}
} >
); } else { const showRegisterButton = !isSelfUseMode; const commonSizingAndLayoutClass = 'flex items-center justify-center !py-[10px] !px-1.5'; const loginButtonSpecificStyling = '!bg-semi-color-fill-0 dark:!bg-semi-color-fill-1 hover:!bg-semi-color-fill-1 dark:hover:!bg-gray-700 transition-colors'; let loginButtonClasses = `${commonSizingAndLayoutClass} ${loginButtonSpecificStyling}`; let registerButtonClasses = `${commonSizingAndLayoutClass}`; const loginButtonTextSpanClass = '!text-xs !text-semi-color-text-1 dark:!text-gray-300 !p-1.5'; const registerButtonTextSpanClass = '!text-xs !text-white !p-1.5'; if (showRegisterButton) { if (isMobile) { loginButtonClasses += ' !rounded-full'; } else { loginButtonClasses += ' !rounded-l-full !rounded-r-none'; } registerButtonClasses += ' !rounded-r-full !rounded-l-none'; } else { loginButtonClasses += ' !rounded-full'; } return (
{showRegisterButton && (
)}
); } }; export default UserArea;