Changeset View
Changeset View
Standalone View
Standalone View
landing/landing.react.js
// @flow | // @flow | ||||
import classNames from 'classnames'; | |||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { useRouteMatch } from 'react-router-dom'; | import { useRouteMatch } from 'react-router-dom'; | ||||
import { | import { | ||||
ModalProvider, | ModalProvider, | ||||
useModalContext, | useModalContext, | ||||
} from 'lib/components/modal-provider.react.js'; | } from 'lib/components/modal-provider.react.js'; | ||||
import AppLanding from './app-landing.react.js'; | import AppLanding from './app-landing.react.js'; | ||||
import Footer from './footer.react.js'; | import Footer from './footer.react.js'; | ||||
import Header from './header.react.js'; | import Header from './header.react.js'; | ||||
import Investors from './investors.react.js'; | import Investors from './investors.react.js'; | ||||
import Keyservers from './keyservers.react.js'; | import Keyservers from './keyservers.react.js'; | ||||
import css from './landing.css'; | import css from './landing.css'; | ||||
import MobileNav from './mobile-nav.react.js'; | |||||
import Privacy from './privacy.react.js'; | import Privacy from './privacy.react.js'; | ||||
import QR from './qr.react.js'; | import QR from './qr.react.js'; | ||||
import SIWE from './siwe.react.js'; | import SIWE from './siwe.react.js'; | ||||
import Support from './support.react.js'; | import Support from './support.react.js'; | ||||
import Team from './team.react.js'; | import Team from './team.react.js'; | ||||
import Terms from './terms.react.js'; | import Terms from './terms.react.js'; | ||||
import useScrollToTopOnNavigate from './use-scroll-to-top-on-navigate.react.js'; | import useScrollToTopOnNavigate from './use-scroll-to-top-on-navigate.react.js'; | ||||
import './reset.css'; | import './reset.css'; | ||||
Show All 17 Lines | function LandingSite(): React.Node { | ||||
const modals = React.useMemo( | const modals = React.useMemo( | ||||
() => | () => | ||||
modalContext.modals.map(([modal, key]) => ( | modalContext.modals.map(([modal, key]) => ( | ||||
<React.Fragment key={key}>{modal}</React.Fragment> | <React.Fragment key={key}>{modal}</React.Fragment> | ||||
)), | )), | ||||
[modalContext.modals], | [modalContext.modals], | ||||
); | ); | ||||
const [showMobileNav, setShowMobileNav] = React.useState<boolean>(false); | |||||
const innerContainerClassName = classNames({ | |||||
[css.innerContainer]: true, | |||||
[css.innerContainerMobileNav]: showMobileNav, | |||||
}); | |||||
useScrollToTopOnNavigate(); | useScrollToTopOnNavigate(); | ||||
const onPrivacy = useRouteMatch({ path: '/privacy' }); | const onPrivacy = useRouteMatch({ path: '/privacy' }); | ||||
const onTerms = useRouteMatch({ path: '/terms' }); | const onTerms = useRouteMatch({ path: '/terms' }); | ||||
const onSupport = useRouteMatch({ path: '/support' }); | const onSupport = useRouteMatch({ path: '/support' }); | ||||
const onKeyservers = useRouteMatch({ path: '/keyservers' }); | const onKeyservers = useRouteMatch({ path: '/keyservers' }); | ||||
const onQR = useRouteMatch({ path: '/qr' }); | const onQR = useRouteMatch({ path: '/qr' }); | ||||
const onTeam = useRouteMatch({ path: '/team' }); | const onTeam = useRouteMatch({ path: '/team' }); | ||||
const onInvestors = useRouteMatch({ path: '/investors' }); | const onInvestors = useRouteMatch({ path: '/investors' }); | ||||
Show All 25 Lines | function LandingSite(): React.Node { | ||||
let footer = <Footer />; | let footer = <Footer />; | ||||
if (onQR) { | if (onQR) { | ||||
footer = null; | footer = null; | ||||
} | } | ||||
return ( | return ( | ||||
<div className={css.container}> | <div className={css.container}> | ||||
<div className={css.innerContainer}> | <div className={innerContainerClassName}> | ||||
{header} | {header} | ||||
<div className={css.pageContentContainer}> | |||||
<MobileNav | |||||
showMobileNav={showMobileNav} | |||||
setShowMobileNav={setShowMobileNav} | |||||
/> | |||||
{activePage} | {activePage} | ||||
{footer} | {footer} | ||||
{modals} | {modals} | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | |||||
); | ); | ||||
} | } | ||||
export default Landing; | export default Landing; |