"use client"; import Link from "next/link"; import type { ReactElement } from "react"; import { useTranslation } from "react-i18next"; import { ArrowRight, Clock, Ticket } from "lucide-react"; import { buttonVariants } from "@/components/ui/button"; import { AdminNoResourceState } from "@/components/admin/admin-no-resource-state"; import { Card, CardContent } from "@/components/ui/card"; import { Skeleton } from "@/components/ui/skeleton"; import { useAdminDateTimeFormatter } from "@/hooks/use-admin-datetime-formatter"; import { cn } from "@/lib/utils"; import type { DrawCurrentSnapshot } from "@/types/api/public-draw"; function formatDashboardDrawStatus( status: string, t: (key: string, options?: Record) => string, ): string { const lower = status.trim().toLowerCase(); switch (lower) { case "pending": return t("statusOptions.pending", { ns: "draws" }); case "open": return t("statusOptions.open", { ns: "draws" }); case "closing": return t("statusOptions.closing", { ns: "draws" }); case "closed": return t("statusOptions.closed", { ns: "draws" }); case "drawing": return t("statusOptions.drawing", { ns: "draws" }); case "review": return t("statusOptions.review", { ns: "draws" }); case "cooldown": return t("statusOptions.cooldown", { ns: "draws" }); case "settling": return t("statusOptions.settling", { ns: "draws" }); case "settled": return t("statusOptions.settled", { ns: "draws" }); case "cancelled": return t("statusOptions.cancelled", { ns: "draws" }); default: return status; } } function isOpenLikeStatus(status: string): boolean { const lower = status.toLowerCase(); return lower.includes("open") || lower.includes("sale"); } type DashboardCurrentDrawCardProps = { hall: DrawCurrentSnapshot | null; drawId: number | null; loading?: boolean; }; export function DashboardCurrentDrawCard({ hall, drawId, loading = false, }: DashboardCurrentDrawCardProps): ReactElement { const { t } = useTranslation(["dashboard", "draws"]); const formatDt = useAdminDateTimeFormatter(); if (loading) { return ( ); } if (!hall) { return (

{t("sections.currentDraw")}

); } const openLike = isOpenLikeStatus(hall.status); const statusLabel = formatDashboardDrawStatus(hall.status, t); return (

{t("sections.currentDraw")}

{hall.draw_no}

{t("drawSequence", { sequence: hall.sequence_no ?? "—" })} {statusLabel}
{hall.draw_time ? (

{t("scheduledDrawTime", { time: formatDt(hall.draw_time) })}

) : null} {drawId != null ? ( {t("drawFinanceDetails")} ) : null}
); }