Files
lotteryAdmin/src/modules/draws/draw-subnav.tsx
kang a76b681828 feat(api, i18n): add admin report job functionalities and enhance locale support
- Introduced new API functions for managing admin report jobs, including download and post operations.
- Updated English, Nepali, and Chinese locale files to include new messages related to report job actions and rollback confirmations.
- Enhanced user experience by providing clearer instructions and feedback in the admin interface.
- Refactored related components to integrate new functionalities and improve overall usability.
2026-05-26 11:48:51 +08:00

62 lines
2.0 KiB
TypeScript

"use client";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { useTranslation } from "react-i18next";
import { buttonVariants } from "@/components/ui/button";
import { cn } from "@/lib/utils";
const segments = [
{ suffix: "", key: "status", label: "subnav.status" },
{ suffix: "/results", key: "results", label: "subnav.results" },
{ suffix: "/finance", key: "finance", label: "subnav.finance" },
{ suffix: "/review", key: "review", label: "subnav.review" },
{ suffix: "/risk/occupancy", key: "riskLockLogs", label: "subnav.riskLockLogs" },
{ suffix: "/risk/hot", key: "riskHot", label: "subnav.riskHot" },
{ suffix: "/risk/sold-out", key: "riskSoldOut", label: "subnav.riskSoldOut" },
{ suffix: "/risk/pools", key: "riskPools", label: "subnav.riskPools" },
] as const;
function isReviewTabActive(pathname: string, base: string): boolean {
const reviewPrefix = `${base}/review`;
const publishPrefix = `${base}/publish`;
return (
pathname === reviewPrefix ||
pathname.startsWith(`${reviewPrefix}/`) ||
pathname.startsWith(`${publishPrefix}/`)
);
}
export function DrawSubnav({ drawId }: { drawId: string }) {
const { t } = useTranslation("draws");
const pathname = usePathname();
const base = `/admin/draws/${drawId}`;
return (
<nav className="mb-6 flex flex-wrap gap-2 border-b border-border pb-3">
{segments.map(({ suffix, key, label }) => {
const href = `${base}${suffix}`;
const active =
suffix === ""
? pathname === base || pathname === `${base}/`
: suffix === "/review"
? isReviewTabActive(pathname, base)
: pathname === href || pathname.startsWith(`${href}/`);
return (
<Link
key={key}
href={href}
className={cn(
buttonVariants({ variant: active ? "default" : "outline", size: "sm" }),
)}
>
{t(label)}
</Link>
);
})}
</nav>
);
}