| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| 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;
|
|
|