"use client"; import { useTranslation } from "react-i18next"; import { ConfigChip, ConfigChipGroup } from "@/modules/config/config-chip-group"; import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { buildOddsPlayFilterGroups, filterOddsPlayTypesByCategory, type OddsCategoryTab, } from "@/modules/config/doc/odds-play-type-groups"; import { resolveAdminPlayTypeDisplayName } from "@/lib/admin-play-types"; import { cn } from "@/lib/utils"; import type { AdminPlayTypeRow } from "@/types/api/admin-config"; const PLAY_SELECT_NONE = "__none__"; type OddsConfigPlayNavProps = { catTab: OddsCategoryTab; onCatTabChange: (tab: OddsCategoryTab) => void; onPlayCodeChange: (code: string) => void; types: AdminPlayTypeRow[]; resolvedPlayCode: string; className?: string; }; export function OddsConfigPlayNav({ catTab, onCatTabChange, onPlayCodeChange, types, resolvedPlayCode, className, }: OddsConfigPlayNavProps) { const { t, i18n } = useTranslation("config"); const catTabs = [ { id: "all" as const, label: t("odds.tabs.all") }, { id: "d4" as const, label: "4D" }, { id: "d3" as const, label: "3D" }, { id: "d2" as const, label: "2D" }, ]; const filteredTypes = filterOddsPlayTypesByCategory(catTab, types); const playGroups = buildOddsPlayFilterGroups(catTab, types); const playSelectValue = resolvedPlayCode || PLAY_SELECT_NONE; const playLabel = (code: string): string => { const row = types.find((item) => item.play_code === code); return resolveAdminPlayTypeDisplayName(code, i18n.language, row); }; return (
{catTabs.map((tab) => ( onCatTabChange(tab.id)} > {tab.label} ))} {/* 小屏:下拉快速切换玩法 */}

{t("odds.playType")}

{/* 大屏:侧栏玩法列表,点选即切换 */}
); }