|
@@ -2,12 +2,11 @@ import React, { useEffect, useState } from 'react';
|
|
|
import PropTypes from 'prop-types';
|
|
|
import { PaperPlaneIcon } from '@radix-ui/react-icons';
|
|
|
import Spacer from '../public/Spacer';
|
|
|
+import * as Tabs from '@radix-ui/react-tabs';
|
|
|
// assets
|
|
|
import download_bg from '../../assets/imgs/download_bg.png';
|
|
|
import download_qrcode from '../../assets/imgs/qr_codes/download_qrcode.png';
|
|
|
-import AppleIcon from '../svg/AppleIcon';
|
|
|
-import AndroidIcon from '../svg/AndroidIcon';
|
|
|
-import WindowsIcon from '../svg/WindowsIcon';
|
|
|
+import SVGIcon from '../svg/SVGIcon';
|
|
|
|
|
|
const SectionDownload = ({ t, isCN }) => {
|
|
|
const [config, setConfig] = useState({});
|
|
@@ -37,56 +36,23 @@ const SectionDownload = ({ t, isCN }) => {
|
|
|
window.open(url);
|
|
|
};
|
|
|
|
|
|
- const _buildSVGLogo = (altString) => {
|
|
|
- switch (altString) {
|
|
|
- case 'apple':
|
|
|
- return (
|
|
|
- <AppleIcon
|
|
|
- className={
|
|
|
- 'h-full object-contain group-hover:fill-blue-500 fill-white'
|
|
|
- }
|
|
|
- />
|
|
|
- );
|
|
|
- case 'android':
|
|
|
- return (
|
|
|
- <AndroidIcon
|
|
|
- className={
|
|
|
- 'h-full object-contain group-hover:fill-blue-500 fill-white'
|
|
|
- }
|
|
|
- />
|
|
|
- );
|
|
|
- case 'windows':
|
|
|
- return (
|
|
|
- <WindowsIcon
|
|
|
- className={
|
|
|
- 'h-full object-contain group-hover:fill-blue-500 fill-white'
|
|
|
- }
|
|
|
- />
|
|
|
- );
|
|
|
- default:
|
|
|
- return '';
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- const _buildIconButton = ({ altString, buttonString, onClick }) => {
|
|
|
- const iconImage = _buildSVGLogo(altString);
|
|
|
+ const _buildPCDownloadButton = ({ platformType, buttonString, onClick }) => {
|
|
|
return (
|
|
|
<div
|
|
|
onClick={onClick}
|
|
|
- className='group hover:bg-gray-100 duration-300 cursor-pointer w-[200px] h-[40px] p-2 flex flex-row items-center justify-center rounded-full border'>
|
|
|
- {iconImage}
|
|
|
+ className='group hover:bg-gray-100 duration-300 cursor-pointer w-full h-[80px] p-6 flex flex-row items-center justify-center rounded border'>
|
|
|
+ <SVGIcon type={platformType} />
|
|
|
<div className='ml-3 font-thin text-white group-hover:text-blue-500 duration-300 tracking-widest-cn'>
|
|
|
{buttonString}
|
|
|
</div>
|
|
|
</div>
|
|
|
);
|
|
|
};
|
|
|
-
|
|
|
const _buildTextButton = ({ buttonString, onClick }) => {
|
|
|
return (
|
|
|
<div
|
|
|
onClick={onClick}
|
|
|
- className='group hover:bg-gray-100 duration-300 cursor-pointer w-[200px] h-[40px] p-2 flex flex-row items-center justify-center rounded-full border'>
|
|
|
+ className='group hover:bg-gray-100 duration-300 cursor-pointer w-full h-[80px] p-6 flex flex-row items-center justify-center rounded border'>
|
|
|
<div className='font-thin text-white group-hover:text-blue-500 duration-300 tracking-widest-cn'>
|
|
|
{buttonString}
|
|
|
</div>
|
|
@@ -98,8 +64,8 @@ const SectionDownload = ({ t, isCN }) => {
|
|
|
return (
|
|
|
<div
|
|
|
onClick={onClick}
|
|
|
- className='group hover:bg-gray-100 duration-300 cursor-pointer w-[200px] h-[40px] p-2 flex flex-row items-center justify-center rounded-full border'>
|
|
|
- <PaperPlaneIcon className='h-full w-5 text-white group-hover:text-blue-500' />
|
|
|
+ className='group hover:bg-gray-100 duration-300 cursor-pointer w-full h-[80px] p-6 flex flex-row items-center justify-center rounded border'>
|
|
|
+ <PaperPlaneIcon className='h-full w-10 text-white group-hover:text-blue-500' />
|
|
|
<div className='ml-3 font-thin text-white group-hover:text-blue-500 duration-300 tracking-widest-cn'>
|
|
|
{t('直接登录')}
|
|
|
</div>
|
|
@@ -107,25 +73,95 @@ const SectionDownload = ({ t, isCN }) => {
|
|
|
);
|
|
|
};
|
|
|
|
|
|
- const _buildHeadText = ({ textString }) => {
|
|
|
- return (
|
|
|
- <div className='w-[200px] h-[40px] p-2 flex flex-row items-center justify-end'>
|
|
|
- <div className='font-bold text-white duration-300 tracking-widest-cn'>
|
|
|
- {textString}
|
|
|
+ const TabsDemo = () => (
|
|
|
+ <Tabs.Root
|
|
|
+ className='flex flex-col px-3 w-full md:w-1/2 shadow-[0_2px_10px] shadow-blackA4'
|
|
|
+ defaultValue='tab1'>
|
|
|
+ <Tabs.List
|
|
|
+ className='shrink-0 flex border-b border-mauve6'
|
|
|
+ aria-label='Manage your account'>
|
|
|
+ <Tabs.Trigger
|
|
|
+ className='backdrop-blur-sm bg-white bg-opacity-30 data-[state=active]:font-bold data-[state=active]:bg-opacity-90 px-5 h-20 flex-1 flex items-center justify-center text-xl tracking-widest-cn text-gray-300 select-none first:rounded-tl-md last:rounded-tr-md hover:text-gray-100 data-[state=active]:text-blue-500 data-[state=active]:shadow-[inset_0_-3px_0_0,0_1px_0_0] data-[state=active]:shadow-white data-[state=active]:focus:relative outline-none cursor-pointer'
|
|
|
+ value='tab1'>
|
|
|
+ {t('正式版')}
|
|
|
+ </Tabs.Trigger>
|
|
|
+ <Tabs.Trigger
|
|
|
+ className='backdrop-blur-sm bg-white bg-opacity-30 data-[state=active]:font-bold data-[state=active]:bg-opacity-90 px-5 h-20 flex-1 flex items-center justify-center text-xl tracking-widest-cn text-gray-300 select-none first:rounded-tl-md last:rounded-tr-md hover:text-gray-100 data-[state=active]:text-blue-500 data-[state=active]:shadow-[inset_0_-3px_0_0,0_1px_0_0] data-[state=active]:shadow-white data-[state=active]:focus:relative outline-none cursor-pointer'
|
|
|
+ value='tab2'>
|
|
|
+ {t('预览版')}
|
|
|
+ </Tabs.Trigger>
|
|
|
+ </Tabs.List>
|
|
|
+ <Tabs.Content
|
|
|
+ className='grow p-5 backdrop-blur-sm bg-white bg-opacity-20 rounded-b-md outline-none'
|
|
|
+ value='tab1'>
|
|
|
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-6'>
|
|
|
+ <_buildPCDownloadButton
|
|
|
+ platformType='android'
|
|
|
+ buttonString={t('Android 客户端下载')}
|
|
|
+ onClick={() =>
|
|
|
+ _handleWindowOpen(config.OLD_FLYINSONO_ANDROID_DOWNLOAD_URL)
|
|
|
+ }
|
|
|
+ />
|
|
|
+ <_buildPCDownloadButton
|
|
|
+ platformType='apple'
|
|
|
+ buttonString={t('iOS 客户端下载')}
|
|
|
+ onClick={() =>
|
|
|
+ _handleWindowOpen(config.OLD_FLYINSONO_IOS_DOWNLOAD_URL)
|
|
|
+ }
|
|
|
+ />
|
|
|
+ <div className='hidden md:block'>
|
|
|
+ <_buildPCDownloadButton
|
|
|
+ platformType='windows'
|
|
|
+ buttonString={t('Windows 客户端下载')}
|
|
|
+ onClick={() =>
|
|
|
+ _handleWindowOpen(config.OLD_FLYINSONO_WINDOWS_DOWNLOAD_URL)
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div className='hidden md:block'>
|
|
|
+ <_buildTextButton
|
|
|
+ buttonString={t('Sonopost 配置工具')}
|
|
|
+ onClick={() =>
|
|
|
+ _handleWindowOpen(config.SONOPOST_TOOL_DOWNLOAD_URL)
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- );
|
|
|
- };
|
|
|
-
|
|
|
- const _buildCenterText = ({ textString }) => {
|
|
|
- return (
|
|
|
- <div className='w-[200px] h-[40px] p-2 flex flex-row items-center justify-center'>
|
|
|
- <div className='font-bold text-white duration-300 tracking-widest-cn'>
|
|
|
- {textString}
|
|
|
+ </Tabs.Content>
|
|
|
+ <Tabs.Content
|
|
|
+ className='grow p-5 backdrop-blur-sm bg-white bg-opacity-20 rounded-b-md outline-none'
|
|
|
+ value='tab2'>
|
|
|
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-6'>
|
|
|
+ <_buildPCDownloadButton
|
|
|
+ platformType='android'
|
|
|
+ buttonString={t('Android 客户端下载')}
|
|
|
+ onClick={() =>
|
|
|
+ _handleWindowOpen(config.FLYINSONO_ANDROID_DOWNLOAD_URL)
|
|
|
+ }
|
|
|
+ />
|
|
|
+ <_buildPCDownloadButton
|
|
|
+ platformType='apple'
|
|
|
+ buttonString={t('iOS 客户端下载')}
|
|
|
+ onClick={() => _handleWindowOpen(config.FLYINSONO_IOS_DOWNLOAD_URL)}
|
|
|
+ />
|
|
|
+ <div className='hidden md:block'>
|
|
|
+ <_buildPCDownloadButton
|
|
|
+ platformType='windows'
|
|
|
+ buttonString={t('Windows 客户端下载')}
|
|
|
+ onClick={() =>
|
|
|
+ _handleWindowOpen(config.FLYINSONO_WINDOWS_DOWNLOAD_URL)
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div className='hidden md:block'>
|
|
|
+ <_buildLoginButton
|
|
|
+ onClick={() => _handleWindowOpen(config.FLYINSONO_WEB_APP_URL)}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- );
|
|
|
- };
|
|
|
+ </Tabs.Content>
|
|
|
+ </Tabs.Root>
|
|
|
+ );
|
|
|
|
|
|
return (
|
|
|
<>
|
|
@@ -145,99 +181,14 @@ const SectionDownload = ({ t, isCN }) => {
|
|
|
<img
|
|
|
src={download_qrcode}
|
|
|
alt='download_qrcode'
|
|
|
- className='w-[150px] h-[150px] object-cover hover:w-[350px] hover:h-[350px] duration-300 cursor-pointer'
|
|
|
+ className='w-[150px] h-[150px] object-cover hover:w-[300px] hover:h-[300px] duration-300 cursor-pointer'
|
|
|
/>
|
|
|
<Spacer height={'20px'} />
|
|
|
<div className='font-thin text-white text-xl duration-300 tracking-widest-cn'>
|
|
|
{t('扫描二维码下载手机客户端')}
|
|
|
</div>
|
|
|
</div>
|
|
|
- {/* PC端 */}
|
|
|
- <div className='hidden md:grid mt-10 grid-cols-5 gap-6'>
|
|
|
- <_buildHeadText textString={t('新版本')} />
|
|
|
- <_buildIconButton
|
|
|
- altString='android'
|
|
|
- buttonString={t('安卓客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.FLYINSONO_ANDROID_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- <_buildIconButton
|
|
|
- altString='apple'
|
|
|
- buttonString={t('iOS客户端下载')}
|
|
|
- onClick={() => _handleWindowOpen(config.FLYINSONO_IOS_DOWNLOAD_URL)}
|
|
|
- />
|
|
|
- <_buildIconButton
|
|
|
- altString='windows'
|
|
|
- buttonString={t('PC客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.FLYINSONO_WINDOWS_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- <_buildLoginButton
|
|
|
- onClick={() => _handleWindowOpen(config.FLYINSONO_WEB_APP_URL)}
|
|
|
- />
|
|
|
- <_buildHeadText textString={t('旧版本')} />
|
|
|
- <_buildIconButton
|
|
|
- altString='android'
|
|
|
- buttonString={t('安卓客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.OLD_FLYINSONO_ANDROID_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- <_buildIconButton
|
|
|
- altString='apple'
|
|
|
- buttonString={t('iOS客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.OLD_FLYINSONO_IOS_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- <_buildIconButton
|
|
|
- altString='windows'
|
|
|
- buttonString={t('PC客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.OLD_FLYINSONO_WINDOWS_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- <_buildTextButton
|
|
|
- buttonString={t('Sonopost 配置工具')}
|
|
|
- onClick={() => _handleWindowOpen(config.SONOPOST_TOOL_DOWNLOAD_URL)}
|
|
|
- />
|
|
|
- </div>
|
|
|
- {/* 移动端 */}
|
|
|
- <div className='md:hidden flex flex-col'>
|
|
|
- <_buildCenterText textString={t('新版本')} />
|
|
|
- <_buildIconButton
|
|
|
- altString='android'
|
|
|
- buttonString={t('安卓客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.FLYINSONO_ANDROID_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- <Spacer height={'10px'} />
|
|
|
- <_buildIconButton
|
|
|
- altString='apple'
|
|
|
- buttonString={t('iOS客户端下载')}
|
|
|
- onClick={() => _handleWindowOpen(config.FLYINSONO_IOS_DOWNLOAD_URL)}
|
|
|
- />
|
|
|
- <Spacer height={'20px'} />
|
|
|
- <_buildCenterText textString={t('旧版本')} />
|
|
|
- <_buildIconButton
|
|
|
- altString='android'
|
|
|
- buttonString={t('安卓客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.OLD_FLYINSONO_ANDROID_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- <Spacer height={'10px'} />
|
|
|
- <_buildIconButton
|
|
|
- altString='apple'
|
|
|
- buttonString={t('iOS客户端下载')}
|
|
|
- onClick={() =>
|
|
|
- _handleWindowOpen(config.OLD_FLYINSONO_IOS_DOWNLOAD_URL)
|
|
|
- }
|
|
|
- />
|
|
|
- </div>
|
|
|
+ <TabsDemo />
|
|
|
</div>
|
|
|
</>
|
|
|
);
|