tianji/website/src/pages/index.tsx

159 lines
5.2 KiB
TypeScript
Raw Normal View History

2023-10-28 18:23:19 +00:00
import React from 'react';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
2023-11-04 11:50:34 +00:00
import LogoSvg from '@site/static/img/logo.svg';
import { Carousel } from 'react-responsive-carousel';
2023-12-29 18:13:41 +00:00
import { Popover } from 'antd';
import { RiDiscordFill, RiTwitterXFill, RiWechatFill } from 'react-icons/ri';
import { BlockCard } from '../components/BlockCard';
import 'react-responsive-carousel/lib/styles/carousel.min.css';
2023-10-28 18:23:19 +00:00
function HomepageHeader() {
2023-11-04 10:23:32 +00:00
const { siteConfig } = useDocusaurusContext();
2023-10-28 18:23:19 +00:00
return (
2023-11-04 11:50:34 +00:00
<header className="container">
<div className="text-center mt-10">
<LogoSvg className="w-40 h-40" />
<h1 className="text-5xl">
2024-01-29 17:46:44 +00:00
<span className="text-gradient font-bold">Tianji</span>
2023-11-04 11:50:34 +00:00
</h1>
2024-01-29 17:46:44 +00:00
<p className="opacity-60 text-2xl">All-in-One Insight Hub</p>
2023-11-04 11:50:34 +00:00
<div className="text-xl">
<span className="text-gradient font-bold">Tianji</span> ={' '}
2023-12-31 07:03:50 +00:00
<span className="underline font-semibold">Website Analytics</span> +{' '}
2023-11-04 11:50:34 +00:00
<span className="underline font-semibold">Uptime Monitor</span> +{' '}
<span className="underline font-semibold">Server Status</span>
2023-10-28 18:23:19 +00:00
</div>
</div>
2023-11-04 11:50:34 +00:00
<div className="text-center my-6">
2023-12-02 07:33:43 +00:00
{/* <Link
2023-11-04 11:50:34 +00:00
className="button button--primary button--lg"
to="mailto:moonrailgun@gmail.com?subject=I want to apply for Tianji early access account&body=Here is my account: <Here place your username>"
>
Early Access
2023-12-02 07:33:43 +00:00
</Link> */}
2023-12-24 07:58:30 +00:00
{/* <Link
2023-12-02 07:33:43 +00:00
className="button button--primary button--lg"
to="https://demo.tianji.msgbyte.com"
>
Visit Demo
2023-12-24 07:58:30 +00:00
</Link> */}
2023-12-29 18:13:41 +00:00
<div className="w-min m-auto text-left bg-neutral-100 dark:bg-neutral-800 p-2 rounded-lg overflow-auto max-w-full">
2023-12-24 07:58:30 +00:00
<div className="whitespace-nowrap">
2023-12-25 06:24:12 +00:00
<span className="select-none opacity-50 mr-1">$</span>wget
2023-12-24 07:58:30 +00:00
https://raw.githubusercontent.com/msgbyte/tianji/master/docker-compose.yml
</div>
2023-12-25 06:24:12 +00:00
<div>
<span className="select-none opacity-50 mr-1">$</span>docker compose
up -d
</div>
2023-12-24 07:58:30 +00:00
</div>
2023-12-25 06:24:12 +00:00
<small className="opacity-50">
Default account is <b>admin</b>/<b>admin</b>, please change password
ASAP.
</small>
2023-11-04 11:50:34 +00:00
</div>
2023-10-28 18:23:19 +00:00
</header>
);
}
2023-11-04 11:50:34 +00:00
function HomepageMain() {
return (
<main className="container pb-8">
<div className="flex flex-wrap gap-2 justify-around mt-4 mb-8">
<div className="px-4 py-2 border rounded border-solid border-gray-300 checked-item">
No cookies
</div>
<div className="px-4 py-2 border rounded border-solid border-gray-300 checked-item">
International support
</div>
2023-11-04 11:50:34 +00:00
<div className="px-4 py-2 border rounded border-solid border-gray-300 checked-item">
GDPR & CCPA compliant
</div>
<div className="px-4 py-2 border rounded border-solid border-gray-300 checked-item">
Open API
</div>
<div className="px-4 py-2 border rounded border-solid border-gray-300 checked-item">
Open Source
</div>
</div>
<div className="text-center">
<div className="border-8 border-solid border-gray-200 rounded-lg shadow-lg">
<Carousel
className="cursor-move"
showThumbs={false}
showStatus={false}
showIndicators={true}
autoPlay={true}
swipeable={true}
interval={5000}
stopOnHover={true}
emulateTouch={true}
infiniteLoop={true}
>
<img src="/img/preview1.png" />
<img src="/img/preview2.png" />
<img src="/img/preview3.png" />
<img src="/img/preview4.png" />
</Carousel>
</div>
2023-11-04 11:50:34 +00:00
</div>
</main>
);
}
2023-12-29 18:13:41 +00:00
function HomepageFooter() {
return (
<div className="text-center py-8">
<div className="text-2xl font-bold mb-8">Join Our Community</div>
<div className="flex justify-center gap-4">
<Popover
content={<img width={300} src="/img/wechat.jpg" />}
trigger={'click'}
>
<BlockCard
icon={<RiWechatFill className="text-green-500" />}
title="Wechat"
data-tianji-event="community-wechat"
2023-12-29 18:13:41 +00:00
/>
</Popover>
<BlockCard
icon={<RiDiscordFill className="text-indigo-600" />}
title="Discord"
data-tianji-event="community-discord"
2023-12-29 18:13:41 +00:00
onClick={() => window.open('https://discord.gg/8Vv47wAEej')}
/>
<BlockCard
icon={<RiTwitterXFill />}
title="Twitter"
data-tianji-event="community-twitter"
2023-12-29 18:13:41 +00:00
onClick={() => window.open('https://twitter.com/moonrailgun')}
/>
</div>
</div>
);
}
2023-10-28 18:23:19 +00:00
export default function Home(): JSX.Element {
2023-11-04 10:23:32 +00:00
const { siteConfig } = useDocusaurusContext();
2023-10-28 18:23:19 +00:00
return (
<Layout
title={`Tianji = Website Analytics + Uptime Monitor + Server Status`}
description={siteConfig.tagline}
2023-11-04 10:23:32 +00:00
>
2023-10-28 18:23:19 +00:00
<HomepageHeader />
2023-11-04 11:50:34 +00:00
<HomepageMain />
2023-12-29 18:13:41 +00:00
<HomepageFooter />
2023-10-28 18:23:19 +00:00
</Layout>
);
}