/* eslint-disable max-lines */ /* eslint-disable @typescript-eslint/naming-convention */ import clsx from 'clsx'; import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { Box, Button, Grid, Typography } from '@mui/joy'; import { styled } from '@mui/joy/styles'; import { LogoIcon } from '@toeverything/components/icons'; // eslint-disable-next-line no-restricted-imports import { useMediaQuery } from '@mui/material'; import CollaborationImage from './collaboration.png'; import { AFFiNEFooter, AFFiNEHeader, AFFiNEImage } from './Common'; import { GitHub } from './Icons'; import PageImage from './page.png'; import ShapeImage from './shape.png'; import TaskImage from './task.png'; const Alternatives = styled(Box)<{ width: string }>(({ width }) => ({ position: 'relative', width: '24em', height: '128px', transform: 'translateY(-8px)', overflowY: 'hidden', '@media (max-width: 1024px)': { width, height: '48px', transform: 'translateY(0)', }, '& .scroll-element': { width: 'inherit', height: 'inherit', position: 'absolute', left: '0%', top: '0%', lineHeight: '96px', '@media (max-width: 1024px)': { lineHeight: '32px', }, }, '& .scroll-element.active': { animation: 'primary 500ms linear infinite', }, '.primary.active': { animation: 'primary 500ms linear infinite', }, '.secondary.active': { animation: 'secondary 500ms linear infinite', }, '@keyframes primary': { from: { top: '0%', }, to: { top: '-100%', }, }, '@keyframes secondary': { from: { top: '100%', }, to: { top: '0%', }, }, })); const _alternatives = ['Notion', 'Miro', 'Monday']; const _alternativesSize = [8, 6, 10]; const Product = () => { const [idx, setIdx] = useState(0); const [last, current] = useMemo( () => [ _alternatives[idx], _alternatives[idx + 1] ? _alternatives[idx + 1] : _alternatives[0], ], [idx] ); const maxWidth = useMemo(() => _alternativesSize[idx], [idx]); const [active, setActive] = useState(false); const matches = useMediaQuery('(max-width: 1024px)'); useEffect(() => { const handle = setInterval(() => { setActive(true); setTimeout( () => { setIdx(idx => (_alternatives[idx + 1] ? idx + 1 : 0)); setActive(false); }, matches ? 450 : 380 ); }, 2000); return () => clearInterval(handle); }, [matches]); return ( {last} {current} ); }; const AFFiNEOnline = (props: { center?: boolean; flat?: boolean }) => { const matches = useMediaQuery('(max-width: 1024px)'); const { t } = useTranslation(); return ( ); }; export function App() { const matches = useMediaQuery('(max-width: 1024px)'); const navigate = useNavigate(); const { t, i18n } = useTranslation(); const changeLanguage = (event: any) => { i18n.changeLanguage(event); }; return ( <> {t('Open Source')}, {t('Privacy First')} {t('Alternative')} {t('description1.part1')} {t('description1.part2')} {t('description1.part3')} {t('description1.part4')} {t('description2.part1')} {t('description2.part2')} {t('description2.part3')} {t('description3.part1')} {t('description3.part2')} {t('description3.part3')} {t('description3.part4')} {t('description4.part1')} {t('description4.part2')} {t('description4.part3')} ); }