65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
/**
|
||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||
*
|
||
* This source code is licensed under the MIT license found in the
|
||
* LICENSE file in the root directory of this source tree.
|
||
*/
|
||
|
||
import React, {Suspense} from 'react';
|
||
import clsx from 'clsx';
|
||
import Link from '@docusaurus/Link';
|
||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||
import Layout from '@theme/Layout';
|
||
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
||
import BrowserOnly from '@docusaurus/BrowserOnly';
|
||
|
||
import styles from './index.module.css';
|
||
|
||
function HomepageHeader() {
|
||
const {siteConfig} = useDocusaurusContext();
|
||
return (
|
||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
||
<div className="container">
|
||
<h1 className="hero__title">{siteConfig.title}</h1>
|
||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||
<div className={styles.buttons}>
|
||
<Link
|
||
className="button button--secondary button--lg"
|
||
to="/docs/intro">
|
||
Docusaurus Tutorial - 5min ⏱️
|
||
</Link>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
);
|
||
}
|
||
|
||
const LazyPlayground = React.lazy(() => import('../components/Playground'));
|
||
|
||
function ClientPlayground() {
|
||
const fallback = <div className={styles.playgroundFallback} />;
|
||
return <BrowserOnly fallback={fallback}>
|
||
{() => (
|
||
<Suspense fallback={fallback}>
|
||
<LazyPlayground />
|
||
</Suspense>
|
||
)}
|
||
</BrowserOnly>;
|
||
}
|
||
|
||
|
||
export default function Home(): JSX.Element {
|
||
const {siteConfig} = useDocusaurusContext();
|
||
return (
|
||
<Layout
|
||
title={`Hello from ${siteConfig.title}`}
|
||
description="Description will go into a meta tag in <head />">
|
||
<HomepageHeader />
|
||
<main>
|
||
<HomepageFeatures />
|
||
<ClientPlayground />
|
||
</main>
|
||
</Layout>
|
||
);
|
||
}
|