2025-08-13 18:19:25 +03:00
|
|
|
import type {ReactNode} 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 Heading from '@theme/Heading';
|
2025-08-15 15:09:55 +03:00
|
|
|
import Translate, {translate} from '@docusaurus/Translate';
|
2025-08-13 18:19:25 +03:00
|
|
|
|
|
|
|
|
import styles from './index.module.css';
|
|
|
|
|
|
|
|
|
|
function HomepageHeader() {
|
|
|
|
|
const {siteConfig} = useDocusaurusContext();
|
|
|
|
|
return (
|
|
|
|
|
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
|
|
|
|
<div className="container">
|
|
|
|
|
<Heading as="h1" className="hero__title">
|
2025-08-15 15:09:55 +03:00
|
|
|
<Translate id="homepage.title">CherryPick</Translate>
|
2025-08-13 18:19:25 +03:00
|
|
|
</Heading>
|
|
|
|
|
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
|
|
|
|
<div className={styles.buttons}>
|
|
|
|
|
<Link
|
|
|
|
|
className="button button--secondary button--lg"
|
2025-08-15 15:09:55 +03:00
|
|
|
to="/docs/intro"
|
|
|
|
|
>
|
|
|
|
|
<Translate id="homepage.cta">Explore CherryPick Documentation 🍒</Translate>
|
2025-08-13 18:19:25 +03:00
|
|
|
</Link>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</header>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default function Home(): ReactNode {
|
|
|
|
|
const {siteConfig} = useDocusaurusContext();
|
|
|
|
|
return (
|
|
|
|
|
<Layout
|
2025-08-14 13:41:54 +03:00
|
|
|
title={siteConfig.title}
|
|
|
|
|
description="CherryPick: Modular and lightweight dependency injection for Dart & Flutter. Fast, powerful, easy to integrate.">
|
2025-08-13 18:19:25 +03:00
|
|
|
<HomepageHeader />
|
|
|
|
|
<main>
|
|
|
|
|
<HomepageFeatures />
|
|
|
|
|
</main>
|
|
|
|
|
</Layout>
|
|
|
|
|
);
|
|
|
|
|
}
|