mirror of
https://github.com/arthur-pbty/flint.git
synced 2026-08-01 20:29:03 +02:00
82 lines
2.9 KiB
TypeScript
82 lines
2.9 KiB
TypeScript
import { Link } from "../i18n/navigation";
|
|
import { getT } from "../i18n/server";
|
|
|
|
import { Badge } from "./ui/Badge";
|
|
import { buttonClassName } from "./ui/Button";
|
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "./ui/Card";
|
|
|
|
export default async function Hero() {
|
|
const t = await getT();
|
|
|
|
const bots = [
|
|
{ name: t("hero.bots.moderation"), status: "online" as const },
|
|
{ name: t("hero.bots.welcome"), status: "stopped" as const },
|
|
{ name: t("hero.bots.analytics"), status: "online" as const },
|
|
];
|
|
|
|
return (
|
|
<section className="grid gap-8 lg:grid-cols-[1.1fr_0.9fr] lg:items-start">
|
|
<div className="reveal-up space-y-6">
|
|
<p className="section-kicker">{t("hero.kicker")}</p>
|
|
<h1 className="section-title">{t("hero.title")}</h1>
|
|
<p className="section-description text-base md:text-lg">
|
|
{t("hero.description")}
|
|
</p>
|
|
|
|
<div className="flex flex-wrap items-center gap-3">
|
|
<Link className={buttonClassName({ size: "lg", variant: "primary" })} href="/login">
|
|
{t("hero.ctaStart")}
|
|
</Link>
|
|
|
|
<Link
|
|
className={buttonClassName({ size: "lg", variant: "secondary" })}
|
|
href="/login"
|
|
>
|
|
{t("hero.ctaLogin")}
|
|
</Link>
|
|
</div>
|
|
</div>
|
|
|
|
<Card className="reveal-up lg:mt-2">
|
|
<CardHeader className="space-y-3">
|
|
<Badge className="w-fit" variant="accent">
|
|
{t("hero.card.preview")}
|
|
</Badge>
|
|
<CardTitle className="text-lg">{t("hero.card.title")}</CardTitle>
|
|
<CardDescription>{t("hero.card.subtitle")}</CardDescription>
|
|
</CardHeader>
|
|
|
|
<CardContent className="space-y-3">
|
|
{bots.map((bot) => (
|
|
<div
|
|
className="flex flex-wrap items-center justify-between gap-3 rounded-xl border border-[var(--border-muted)] bg-[var(--surface-subtle)] p-3"
|
|
key={bot.name}
|
|
>
|
|
<div className="space-y-1">
|
|
<p className="text-sm font-semibold text-[var(--foreground)]">{bot.name}</p>
|
|
<p className="text-xs text-[var(--foreground-muted)]">
|
|
{t("hero.card.instanceMetrics")}
|
|
</p>
|
|
</div>
|
|
|
|
<div className="flex items-center gap-2">
|
|
<Badge variant={bot.status === "online" ? "success" : "neutral"}>
|
|
{bot.status === "online"
|
|
? t("hero.status.online")
|
|
: t("hero.status.stopped")}
|
|
</Badge>
|
|
<button
|
|
className={buttonClassName({ size: "sm", variant: "ghost" })}
|
|
type="button"
|
|
>
|
|
{t("hero.card.manage")}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
))}
|
|
</CardContent>
|
|
</Card>
|
|
</section>
|
|
);
|
|
}
|