Files
ai-agent/web/components/section-cards.tsx
T

112 lines
4.0 KiB
TypeScript
Raw Normal View History

2026-04-09 10:01:23 +08:00
"use client"
import { Badge } from "@/components/ui/badge"
import {
Card,
CardAction,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card"
import { TrendingUpIcon, TrendingDownIcon } from "lucide-react"
2026-05-25 12:06:15 +08:00
import { useI18n } from "@/i18n/provider"
2026-04-09 10:01:23 +08:00
export function SectionCards() {
2026-05-25 12:06:15 +08:00
const t = useI18n()
2026-04-09 10:01:23 +08:00
return (
<div className="grid grid-cols-1 gap-4 px-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs lg:px-6 @xl/main:grid-cols-2 @5xl/main:grid-cols-4 dark:*:data-[slot=card]:bg-card">
<Card className="@container/card">
<CardHeader>
2026-05-25 12:06:15 +08:00
<CardDescription>{t("scaffold.adminUsers")}</CardDescription>
2026-04-09 10:01:23 +08:00
<CardTitle className="text-2xl font-semibold tabular-nums @[250px]/card:text-3xl">
12
</CardTitle>
<CardAction>
<Badge variant="outline">
<TrendingUpIcon
/>
+2
</Badge>
</CardAction>
</CardHeader>
<CardFooter className="flex-col items-start gap-1.5 text-sm">
<div className="line-clamp-1 flex gap-2 font-medium">
2026-05-25 12:06:15 +08:00
{t("scaffold.newAdminsThisWeek")}{" "}
2026-04-09 10:01:23 +08:00
<TrendingUpIcon className="size-4" />
</div>
<div className="text-muted-foreground">
2026-05-25 12:06:15 +08:00
{t("scaffold.accountSystemReady")}
2026-04-09 10:01:23 +08:00
</div>
</CardFooter>
</Card>
<Card className="@container/card">
<CardHeader>
2026-05-25 12:06:15 +08:00
<CardDescription>{t("scaffold.permissions")}</CardDescription>
2026-04-09 10:01:23 +08:00
<CardTitle className="text-2xl font-semibold tabular-nums @[250px]/card:text-3xl">
26
</CardTitle>
<CardAction>
<Badge variant="outline">
<TrendingUpIcon />
2026-05-25 12:06:15 +08:00
{t("scaffold.initialized")}
2026-04-09 10:01:23 +08:00
</Badge>
</CardAction>
</CardHeader>
<CardFooter className="flex-col items-start gap-1.5 text-sm">
<div className="line-clamp-1 flex gap-2 font-medium">
2026-05-25 12:06:15 +08:00
{t("scaffold.permissionsPending")}{" "}
2026-04-09 10:01:23 +08:00
<TrendingUpIcon className="size-4" />
</div>
<div className="text-muted-foreground">
2026-05-25 12:06:15 +08:00
{t("scaffold.permissionModelReady")}
2026-04-09 10:01:23 +08:00
</div>
</CardFooter>
</Card>
<Card className="@container/card">
<CardHeader>
2026-05-25 12:06:15 +08:00
<CardDescription>{t("scaffold.knowledgeTasks")}</CardDescription>
2026-04-09 10:01:23 +08:00
<CardTitle className="text-2xl font-semibold tabular-nums @[250px]/card:text-3xl">
8
</CardTitle>
<CardAction>
<Badge variant="outline">
<TrendingUpIcon
/>
2026-05-25 12:06:15 +08:00
{t("scaffold.running")}
2026-04-09 10:01:23 +08:00
</Badge>
</CardAction>
</CardHeader>
<CardFooter className="flex-col items-start gap-1.5 text-sm">
<div className="line-clamp-1 flex gap-2 font-medium">
2026-05-25 12:06:15 +08:00
{t("scaffold.ragReserved")}{" "}
2026-04-09 10:01:23 +08:00
<TrendingUpIcon className="size-4" />
</div>
2026-05-25 12:06:15 +08:00
<div className="text-muted-foreground">{t("scaffold.docIndexSupport")}</div>
2026-04-09 10:01:23 +08:00
</CardFooter>
</Card>
<Card className="@container/card">
<CardHeader>
2026-05-25 12:06:15 +08:00
<CardDescription>{t("scaffold.channelAccess")}</CardDescription>
2026-04-09 10:01:23 +08:00
<CardTitle className="text-2xl font-semibold tabular-nums @[250px]/card:text-3xl">
3
</CardTitle>
<CardAction>
<Badge variant="outline">
<TrendingDownIcon />
2026-05-25 12:06:15 +08:00
{t("scaffold.pendingConfig")}
2026-04-09 10:01:23 +08:00
</Badge>
</CardAction>
</CardHeader>
<CardFooter className="flex-col items-start gap-1.5 text-sm">
<div className="line-clamp-1 flex gap-2 font-medium">
2026-05-25 12:06:15 +08:00
{t("scaffold.channelEntrances")}{" "}
2026-04-09 10:01:23 +08:00
<TrendingDownIcon className="size-4" />
</div>
2026-05-25 12:06:15 +08:00
<div className="text-muted-foreground">{t("scaffold.waitingRealConfig")}</div>
2026-04-09 10:01:23 +08:00
</CardFooter>
</Card>
</div>
)
}