"use client" import { useState, useMemo } from "react" import { cn } from "@/lib/utils" type NationId = string type TournamentId = string type MarketId = string const SPORTS_WITH_NATIONS: { sport: string; sportId: string; nations: { id: NationId; name: string; flag: string }[] }[] = [ { sport: "Football", sportId: "football", nations: [ { id: "intl-clubs", name: "International Clubs", flag: "๐ŸŒ" }, { id: "england", name: "England", flag: "๐Ÿด" }, { id: "spain", name: "Spain", flag: "๐Ÿ‡ช๐Ÿ‡ธ" }, { id: "germany", name: "Germany", flag: "๐Ÿ‡ฉ๐Ÿ‡ช" }, { id: "italy", name: "Italy", flag: "๐Ÿ‡ฎ๐Ÿ‡น" }, { id: "international", name: "International", flag: "๐ŸŒ" }, { id: "france", name: "France", flag: "๐Ÿ‡ซ๐Ÿ‡ท" }, { id: "portugal", name: "Portugal", flag: "๐Ÿ‡ต๐Ÿ‡น" }, { id: "england-amateur", name: "England Amateur", flag: "๐Ÿด" }, { id: "netherlands", name: "Netherlands", flag: "๐Ÿ‡ณ๐Ÿ‡ฑ" }, { id: "scotland", name: "Scotland", flag: "๐Ÿด" }, { id: "belgium", name: "Belgium", flag: "๐Ÿ‡ง๐Ÿ‡ช" }, { id: "turkiye", name: "Turkiye", flag: "๐Ÿ‡น๐Ÿ‡ท" }, ], }, ] const TOURNAMENTS_BY_NATION: Record = { "intl-clubs": [ { id: "uefa-cl", name: "UEFA Champions League", flag: "๐Ÿ†" }, { id: "uefa-el", name: "UEFA Europa League", flag: "๐Ÿ†" }, { id: "uefa-ecl", name: "UEFA Europa Conference League", flag: "๐Ÿ†" }, { id: "copa-libertadores", name: "Copa Libertadores", flag: "๐Ÿ†" }, { id: "copa-sudamericana", name: "Copa Sudamericana", flag: "๐Ÿ†" }, ], england: [ { id: "premier-league", name: "Premier League", flag: "๐Ÿด" }, { id: "championship", name: "Championship", flag: "๐Ÿด" }, { id: "league-one", name: "League One", flag: "๐Ÿด" }, { id: "league-two", name: "League Two", flag: "๐Ÿด" }, { id: "fa-cup", name: "FA Cup", flag: "๐Ÿด" }, { id: "efl-cup", name: "EFL Cup", flag: "๐Ÿด" }, { id: "national-league", name: "National League", flag: "๐Ÿด" }, ], spain: [ { id: "laliga", name: "LaLiga", flag: "๐Ÿ‡ช๐Ÿ‡ธ" }, { id: "laliga2", name: "LaLiga 2", flag: "๐Ÿ‡ช๐Ÿ‡ธ" }, { id: "copa-del-rey", name: "Copa del Rey", flag: "๐Ÿ‡ช๐Ÿ‡ธ" }, ], germany: [ { id: "bundesliga", name: "Bundesliga", flag: "๐Ÿ‡ฉ๐Ÿ‡ช" }, { id: "bundesliga2", name: "2. Bundesliga", flag: "๐Ÿ‡ฉ๐Ÿ‡ช" }, { id: "dfb-pokal", name: "DFB-Pokal", flag: "๐Ÿ‡ฉ๐Ÿ‡ช" }, ], italy: [ { id: "serie-a", name: "Serie A", flag: "๐Ÿ‡ฎ๐Ÿ‡น" }, { id: "serie-b", name: "Serie B", flag: "๐Ÿ‡ฎ๐Ÿ‡น" }, { id: "coppa-italia", name: "Coppa Italia", flag: "๐Ÿ‡ฎ๐Ÿ‡น" }, ], international: [ { id: "world-cup", name: "FIFA World Cup", flag: "๐ŸŒ" }, { id: "euro", name: "UEFA European Championship", flag: "๐ŸŒ" }, ], france: [ { id: "ligue1", name: "Ligue 1", flag: "๐Ÿ‡ซ๐Ÿ‡ท" }, { id: "ligue2", name: "Ligue 2", flag: "๐Ÿ‡ซ๐Ÿ‡ท" }, ], portugal: [ { id: "liga-portugal", name: "Liga Portugal", flag: "๐Ÿ‡ต๐Ÿ‡น" }, ], "england-amateur": [], netherlands: [ { id: "eredivisie", name: "Eredivisie", flag: "๐Ÿ‡ณ๐Ÿ‡ฑ" }, { id: "eerste-divisie", name: "Eerste Divisie", flag: "๐Ÿ‡ณ๐Ÿ‡ฑ" }, ], scotland: [{ id: "scotland-prem", name: "Scottish Premiership", flag: "๐Ÿด" }], belgium: [{ id: "pro-league", name: "Pro League", flag: "๐Ÿ‡ง๐Ÿ‡ช" }], turkiye: [{ id: "super-lig", name: "Sรผper Lig", flag: "๐Ÿ‡น๐Ÿ‡ท" }], } const ALL_MARKETS: { id: MarketId; code: string; name: string }[] = [ { id: "164", code: "164", name: "1x2" }, { id: "166", code: "166", name: "Double Chance" }, { id: "168", code: "168", name: "Draw No Bet" }, { id: "170", code: "170", name: "Handicap 1:0" }, { id: "172", code: "172", name: "Asian Handicap 0.5" }, { id: "174", code: "174", name: "Total 0.5" }, { id: "176", code: "176", name: "Total 1.5" }, { id: "178", code: "178", name: "Total 2.5" }, { id: "180", code: "180", name: "Total 3.5" }, { id: "181", code: "181", name: "Total 4.5" }, { id: "184", code: "184", name: "Home Team Over/Under" }, { id: "186", code: "186", name: "Home Team Over/Under" }, { id: "188", code: "188", name: "Away Team Over/Under" }, { id: "189", code: "189", name: "Away Team Over/Under" }, { id: "191", code: "191", name: "Home Team Goals" }, { id: "193", code: "193", name: "Away Team Goals" }, { id: "194", code: "194", name: "1st Half - 1X2" }, { id: "196", code: "196", name: "1st Half - Draw No Bet" }, ] const MAIN_MARKET_IDS: MarketId[] = ["164", "166", "168", "178", "194"] export default function PrintOddsPage() { const [sportChecked, setSportChecked] = useState(true) const [selectedNations, setSelectedNations] = useState>(new Set()) const [selectedTournaments, setSelectedTournaments] = useState>(new Set()) const [selectedMarkets, setSelectedMarkets] = useState>(new Set()) const [sorting, setSorting] = useState("Events") const [printSorting, setPrintSorting] = useState("Horizontal") const [dateHelper, setDateHelper] = useState("Today") const [startDate, setStartDate] = useState("02/28/2026") const [endDate, setEndDate] = useState("02/28/2026") const [logo, setLogo] = useState("Without logo") const availableTournaments = useMemo(() => { if (!sportChecked || selectedNations.size === 0) return [] const list: { id: TournamentId; name: string; flag: string }[] = [] selectedNations.forEach((nationId) => { const tournaments = TOURNAMENTS_BY_NATION[nationId as NationId] if (tournaments) list.push(...tournaments) }) return list }, [sportChecked, selectedNations]) const toggleNation = (id: NationId) => { setSelectedNations((prev) => { const next = new Set(prev) if (next.has(id)) next.delete(id) else next.add(id) return next }) } const toggleTournament = (id: TournamentId) => { setSelectedTournaments((prev) => { const next = new Set(prev) if (next.has(id)) next.delete(id) else next.add(id) return next }) } const toggleMarket = (id: MarketId) => { setSelectedMarkets((prev) => { const next = new Set(prev) if (next.has(id)) next.delete(id) else next.add(id) return next }) } const pickMainMarkets = () => { setSelectedMarkets((prev) => { const next = new Set(prev) MAIN_MARKET_IDS.forEach((id) => next.add(id)) return next }) } const makePdf = () => { const printWindow = window.open("", "_blank") if (!printWindow) { window.print() return } printWindow.document.write(` Print Odds

Print Odds โ€“ ${dateHelper}

Date range: ${startDate} โ€“ ${endDate}

Nations: ${Array.from(selectedNations).join(", ")}

Tournaments: ${Array.from(selectedTournaments).join(", ")}

Markets: ${Array.from(selectedMarkets).map((id) => ALL_MARKETS.find((m) => m.id === id)?.name ?? id).join(", ")}

Odds sheet would be generated based on selected options.

`) printWindow.document.close() printWindow.focus() printWindow.print() printWindow.close() } const sport = SPORTS_WITH_NATIONS[0] return (
setStartDate(e.target.value)} className="bg-brand-surface-light border border-white/20 text-white text-[11px] w-28 px-2 py-1.5 rounded-none" /> setEndDate(e.target.value)} className="bg-brand-surface-light border border-white/20 text-white text-[11px] w-28 px-2 py-1.5 rounded-none" />
) }