| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import React from 'react'; |
| import { Link } from 'react-router-dom'; |
| import { Typography, Tag } from '@douyinfe/semi-ui'; |
| import SkeletonWrapper from '../components/SkeletonWrapper'; |
|
|
| const HeaderLogo = ({ |
| isMobile, |
| isConsoleRoute, |
| logo, |
| logoLoaded, |
| isLoading, |
| systemName, |
| isSelfUseMode, |
| isDemoSiteMode, |
| t, |
| }) => { |
| if (isMobile && isConsoleRoute) { |
| return null; |
| } |
|
|
| return ( |
| <Link to='/' className='group flex items-center gap-2'> |
| <div className='relative w-8 h-8 md:w-8 md:h-8'> |
| <SkeletonWrapper loading={isLoading || !logoLoaded} type='image' /> |
| <img |
| src={logo} |
| alt='logo' |
| className={`absolute inset-0 w-full h-full transition-all duration-200 group-hover:scale-110 rounded-full ${!isLoading && logoLoaded ? 'opacity-100' : 'opacity-0'}`} |
| /> |
| </div> |
| <div className='hidden md:flex items-center gap-2'> |
| <div className='flex items-center gap-2'> |
| <SkeletonWrapper |
| loading={isLoading} |
| type='title' |
| width={120} |
| height={24} |
| > |
| <Typography.Title |
| heading={4} |
| className='!text-lg !font-semibold !mb-0' |
| > |
| {systemName} |
| </Typography.Title> |
| </SkeletonWrapper> |
| {(isSelfUseMode || isDemoSiteMode) && !isLoading && ( |
| <Tag |
| color={isSelfUseMode ? 'purple' : 'blue'} |
| className='text-xs px-1.5 py-0.5 rounded whitespace-nowrap shadow-sm' |
| size='small' |
| shape='circle' |
| > |
| {isSelfUseMode ? t('自用模式') : t('演示站点')} |
| </Tag> |
| )} |
| </div> |
| </div> |
| </Link> |
| ); |
| }; |
|
|
| export default HeaderLogo; |
|
|