import type { Achievement, Challenge, FanGoal, FanProfile, LeaderboardEntry, Match, Memory, NavItem, Prediction, Stadium, Sticker, Team, TriviaQuestion, } from "../types/passport"; export const navItems: NavItem[] = [ { id: "dashboard", label: "Passport Dashboard", shortLabel: "Home", icon: "๐Ÿ“˜", group: "primary", description: "Daily missions and collection progress", }, { id: "profile", label: "Fan Profile", shortLabel: "Profile", icon: "๐Ÿ™‹", group: "primary", description: "Your supporter identity and goals", }, { id: "teams", label: "Team Collection", shortLabel: "Teams", icon: "๐Ÿณ๏ธ", group: "collection", description: "Collect every qualified nation", }, { id: "matches", label: "Match Journey", shortLabel: "Matches", icon: "โšฝ", group: "collection", description: "Track fixtures, watch stamps, and rewards", }, { id: "stadiums", label: "Stadium Collection", shortLabel: "Venues", icon: "๐ŸŸ๏ธ", group: "collection", description: "Unlock host-city memories", }, { id: "stickers", label: "Sticker Album", shortLabel: "Stickers", icon: "๐Ÿƒ", group: "collection", description: "Open packs and complete pages", }, { id: "predictions", label: "Prediction Center", shortLabel: "Picks", icon: "๐Ÿ”ฎ", group: "play", description: "Predict shocks, winners, and moments", }, { id: "trivia", label: "Daily Trivia", shortLabel: "Trivia", icon: "๐Ÿง ", group: "play", description: "Answer World Cup questions every day", }, { id: "achievements", label: "Achievements", shortLabel: "Badges", icon: "๐Ÿ…", group: "play", description: "Claim badges and passport rewards", }, { id: "leaderboard", label: "Global Leaderboard", shortLabel: "Rank", icon: "๐ŸŒ", group: "social", description: "Compare passport scores worldwide", }, { id: "memories", label: "Memory Timeline", shortLabel: "Memories", icon: "๐Ÿ“ธ", group: "social", description: "Save your tournament story", }, ]; export const fanGoals: FanGoal[] = [ { id: "goal-england-matches", title: "Watch all England matches", description: "Earn a stamp for every England fixture and unlock the Three Lions Loyalist badge.", icon: "๐Ÿด", screen: "matches", }, { id: "goal-giant-killing", title: "Predict a giant killing", description: "Back an underdog before kick-off and chase the Giant Killing Oracle achievement.", icon: "๐Ÿ‰", screen: "predictions", }, { id: "goal-complete-groups", title: "Complete every group", description: "Collect all nations in each group to finish your group-stage pages.", icon: "๐Ÿ—‚๏ธ", screen: "teams", }, { id: "goal-stadiums", title: "Collect all stadiums", description: "Unlock every host venue with stadium facts, match stamps, and travel memories.", icon: "๐ŸŸ๏ธ", screen: "stadiums", }, { id: "goal-trivia-streak", title: "Answer daily trivia", description: "Return every day, protect your streak, and climb the trivia leaderboard.", icon: "๐Ÿง ", screen: "trivia", }, { id: "goal-sticker-album", title: "Build a sticker collection", description: "Open virtual packs, chase rare moments, and trade duplicates in the future ecosystem.", icon: "๐Ÿƒ", screen: "stickers", }, ]; export const initialFanProfile: FanProfile = { id: "fan-2026-founder", displayName: "Passport Founder", handle: "@founderfan", avatarEmoji: "๐Ÿฆ", country: "England", homeCity: "Manchester", favoriteTeamId: "england", joinedAt: "2026-06-01T10:00:00.000Z", level: 7, xp: 2480, nextLevelXp: 3200, streakDays: 5, passportScore: 4380, supporterStyle: "Collector + predictor", bio: "Following every kick, every badge, and every story from the biggest World Cup ever.", selectedGoalIds: ["goal-england-matches", "goal-giant-killing", "goal-sticker-album"], }; export const teams: Team[] = [ { id: "england", name: "England", shortName: "ENG", flagEmoji: "๐Ÿด", confederation: "UEFA", group: "Group B", fifaRank: 4, colors: { primary: "#c8102e", secondary: "#ffffff" }, collected: true, progress: 82, story: "A favourite-team page built around watch stamps, pub memories, and knockout hopes.", starPlayer: "Jude Bellingham", matchesWatched: 1, totalMatches: 3, stickerCount: 3, totalStickers: 6, }, { id: "usa", name: "United States", shortName: "USA", flagEmoji: "๐Ÿ‡บ๐Ÿ‡ธ", confederation: "CONCACAF", group: "Group A", fifaRank: 11, colors: { primary: "#3c3b6e", secondary: "#b22234" }, collected: true, progress: 65, story: "Co-host energy, packed stadiums, and a page full of home-crowd moments.", starPlayer: "Christian Pulisic", matchesWatched: 1, totalMatches: 3, stickerCount: 2, totalStickers: 6, }, { id: "mexico", name: "Mexico", shortName: "MEX", flagEmoji: "๐Ÿ‡ฒ๐Ÿ‡ฝ", confederation: "CONCACAF", group: "Group A", fifaRank: 14, colors: { primary: "#006847", secondary: "#ce1126" }, collected: true, progress: 58, story: "Azteca history, roaring crowds, and one of the tournament's iconic host pages.", starPlayer: "Santiago Gimรฉnez", matchesWatched: 0, totalMatches: 3, stickerCount: 2, totalStickers: 6, }, { id: "canada", name: "Canada", shortName: "CAN", flagEmoji: "๐Ÿ‡จ๐Ÿ‡ฆ", confederation: "CONCACAF", group: "Group A", fifaRank: 48, colors: { primary: "#ff0000", secondary: "#ffffff" }, collected: false, progress: 30, story: "A co-host chapter with pace, promise, and a new generation of Canadian memories.", starPlayer: "Alphonso Davies", matchesWatched: 0, totalMatches: 3, stickerCount: 1, totalStickers: 6, }, { id: "argentina", name: "Argentina", shortName: "ARG", flagEmoji: "๐Ÿ‡ฆ๐Ÿ‡ท", confederation: "CONMEBOL", group: "Group C", fifaRank: 1, colors: { primary: "#75aadb", secondary: "#ffffff" }, collected: true, progress: 70, story: "Champions' aura, blue-and-white sticker art, and legacy-driven tournament quests.", starPlayer: "Lionel Messi", matchesWatched: 1, totalMatches: 3, stickerCount: 3, totalStickers: 6, }, { id: "brazil", name: "Brazil", shortName: "BRA", flagEmoji: "๐Ÿ‡ง๐Ÿ‡ท", confederation: "CONMEBOL", group: "Group D", fifaRank: 5, colors: { primary: "#009c3b", secondary: "#ffdf00" }, collected: false, progress: 44, story: "A page for flair, historic kits, and rare attacking-moment stickers.", starPlayer: "Vinรญcius Jรบnior", matchesWatched: 0, totalMatches: 3, stickerCount: 1, totalStickers: 6, }, { id: "france", name: "France", shortName: "FRA", flagEmoji: "๐Ÿ‡ซ๐Ÿ‡ท", confederation: "UEFA", group: "Group D", fifaRank: 2, colors: { primary: "#0055a4", secondary: "#ef4135" }, collected: false, progress: 36, story: "A contender page built around speed, stars, and knockout-stage ambitions.", starPlayer: "Kylian Mbappรฉ", matchesWatched: 0, totalMatches: 3, stickerCount: 1, totalStickers: 6, }, { id: "germany", name: "Germany", shortName: "GER", flagEmoji: "๐Ÿ‡ฉ๐Ÿ‡ช", confederation: "UEFA", group: "Group C", fifaRank: 16, colors: { primary: "#000000", secondary: "#dd0000" }, collected: false, progress: 28, story: "Tournament pedigree, tactical trivia, and classic World Cup memory prompts.", starPlayer: "Jamal Musiala", matchesWatched: 0, totalMatches: 3, stickerCount: 0, totalStickers: 6, }, { id: "morocco", name: "Morocco", shortName: "MAR", flagEmoji: "๐Ÿ‡ฒ๐Ÿ‡ฆ", confederation: "CAF", group: "Group B", fifaRank: 13, colors: { primary: "#c1272d", secondary: "#006233" }, collected: true, progress: 62, story: "Underdog belief, continental pride, and another giant-killing storyline waiting.", starPlayer: "Achraf Hakimi", matchesWatched: 1, totalMatches: 3, stickerCount: 2, totalStickers: 6, }, { id: "japan", name: "Japan", shortName: "JPN", flagEmoji: "๐Ÿ‡ฏ๐Ÿ‡ต", confederation: "AFC", group: "Group B", fifaRank: 18, colors: { primary: "#001e62", secondary: "#bc002d" }, collected: false, progress: 22, story: "Precision, upset potential, and quiz questions about unforgettable group-stage nights.", starPlayer: "Kaoru Mitoma", matchesWatched: 0, totalMatches: 3, stickerCount: 0, totalStickers: 6, }, { id: "nigeria", name: "Nigeria", shortName: "NGA", flagEmoji: "๐Ÿ‡ณ๐Ÿ‡ฌ", confederation: "CAF", group: "Group C", fifaRank: 30, colors: { primary: "#008753", secondary: "#ffffff" }, collected: false, progress: 18, story: "A high-energy page with kit stickers, fan chants, and upset predictions.", starPlayer: "Victor Osimhen", matchesWatched: 0, totalMatches: 3, stickerCount: 0, totalStickers: 6, }, { id: "south-korea", name: "Korea Republic", shortName: "KOR", flagEmoji: "๐Ÿ‡ฐ๐Ÿ‡ท", confederation: "AFC", group: "Group D", fifaRank: 23, colors: { primary: "#c60c30", secondary: "#003478" }, collected: false, progress: 20, story: "Late drama, counter-attacks, and another chapter in a proud World Cup story.", starPlayer: "Son Heung-min", matchesWatched: 0, totalMatches: 3, stickerCount: 0, totalStickers: 6, }, ]; export const stadiums: Stadium[] = [ { id: "metlife", name: "MetLife Stadium", city: "New York/New Jersey", country: "USA", capacity: 82500, icon: "๐Ÿ—ฝ", collected: true, progress: 100, story: "A giant final-stage venue and a marquee passport stamp for any collector.", features: ["Final host energy", "Big-city skyline", "Knockout nights"], matchesHosted: 8, }, { id: "att", name: "AT&T Stadium", city: "Dallas", country: "USA", capacity: 80000, icon: "๐Ÿค ", collected: true, progress: 100, story: "A mega-venue page with huge crowds, indoor drama, and high-value match stamps.", features: ["Retractable roof", "Huge screens", "Semi-final route"], matchesHosted: 9, }, { id: "sofi", name: "SoFi Stadium", city: "Los Angeles", country: "USA", capacity: 70240, icon: "๐ŸŒด", collected: false, progress: 55, story: "A cinematic host-city page made for sticker reveals and celebrity crowd memories.", features: ["Hollywood backdrop", "Modern bowl", "Opening-week buzz"], matchesHosted: 8, }, { id: "azteca", name: "Estadio Azteca", city: "Mexico City", country: "Mexico", capacity: 87523, icon: "๐Ÿฆ…", collected: true, progress: 100, story: "World Cup history lives here: a legendary stamp for any stadium collector.", features: ["Opening match", "Historic venue", "Altitude storylines"], matchesHosted: 5, }, { id: "bc-place", name: "BC Place", city: "Vancouver", country: "Canada", capacity: 54500, icon: "๐Ÿ”๏ธ", collected: false, progress: 42, story: "Mountain views, Canadian host energy, and a scenic passport memory page.", features: ["Downtown venue", "Co-host stamp", "Group-stage page"], matchesHosted: 7, }, { id: "hard-rock", name: "Hard Rock Stadium", city: "Miami", country: "USA", capacity: 65326, icon: "๐ŸŒŠ", collected: false, progress: 34, story: "A sun-soaked page for late kick-offs, fan festivals, and rare moment stickers.", features: ["Tropical nights", "Fan festivals", "Knockout matches"], matchesHosted: 7, }, { id: "lumen", name: "Lumen Field", city: "Seattle", country: "USA", capacity: 68740, icon: "๐ŸŒฒ", collected: false, progress: 25, story: "A loud, green, Pacific Northwest page built around atmosphere challenges.", features: ["Loud crowd", "Waterfront city", "Atmosphere badge"], matchesHosted: 6, }, { id: "mercedes-benz", name: "Mercedes-Benz Stadium", city: "Atlanta", country: "USA", capacity: 71000, icon: "๐Ÿ‘", collected: false, progress: 48, story: "A futuristic venue page with indoor spectacle and knockout-stage promise.", features: ["Halo board", "Indoor drama", "High-scoring hopes"], matchesHosted: 8, }, ]; export const matches: Match[] = [ { id: "match-azteca-opening", stage: "Group", group: "Group A", dateTime: "2026-06-11T19:00:00.000Z", venueId: "azteca", homeTeamId: "mexico", awayTeamId: "canada", homeScore: 2, awayScore: 1, status: "completed", watched: false, collected: true, predictionWindow: false, story: "Opening night at the Azteca sets the tone for the biggest World Cup yet.", reward: "Opening Night stamp", tags: ["opening-match", "host-nations"], }, { id: "match-usa-england", stage: "Group", group: "Group B", dateTime: "2026-06-13T22:00:00.000Z", venueId: "metlife", homeTeamId: "usa", awayTeamId: "england", homeScore: 1, awayScore: 2, status: "completed", watched: true, collected: true, predictionWindow: false, story: "A heavyweight group-stage meeting and a perfect early watch stamp.", reward: "Three Lions away-day stamp", tags: ["favorite-team", "group-stage"], }, { id: "match-argentina-morocco", stage: "Group", group: "Group C", dateTime: "2026-06-15T20:00:00.000Z", venueId: "att", homeTeamId: "argentina", awayTeamId: "morocco", homeScore: 0, awayScore: 0, status: "live", watched: true, collected: true, predictionWindow: true, story: "Champions meet fearless semi-finalists from 2022 in a live passport event.", reward: "Live match streak boost", tags: ["live", "giant-killing-watch"], }, { id: "match-england-japan", stage: "Group", group: "Group B", dateTime: "2026-06-18T18:00:00.000Z", venueId: "sofi", homeTeamId: "england", awayTeamId: "japan", status: "upcoming", watched: false, collected: false, predictionWindow: true, story: "A tactical group-stage test with an upset prediction window still open.", reward: "Tactician quiz token", tags: ["favorite-team", "prediction-open"], }, { id: "match-brazil-france", stage: "Group", group: "Group D", dateTime: "2026-06-20T23:00:00.000Z", venueId: "hard-rock", homeTeamId: "brazil", awayTeamId: "france", status: "upcoming", watched: false, collected: false, predictionWindow: true, story: "A blockbuster group fixture that would become an instant album centerpiece.", reward: "Marquee match sticker", tags: ["blockbuster", "prediction-open"], }, { id: "match-germany-nigeria", stage: "Group", group: "Group C", dateTime: "2026-06-21T19:00:00.000Z", venueId: "mercedes-benz", homeTeamId: "germany", awayTeamId: "nigeria", status: "upcoming", watched: false, collected: false, predictionWindow: true, story: "A classic pedigree-versus-power matchup for giant-killing hunters.", reward: "Underdog watch badge progress", tags: ["giant-killing-watch", "group-stage"], }, { id: "match-canada-usa", stage: "Group", group: "Group A", dateTime: "2026-06-24T01:00:00.000Z", venueId: "bc-place", homeTeamId: "canada", awayTeamId: "usa", status: "upcoming", watched: false, collected: false, predictionWindow: true, story: "A co-host derby designed for social memories and friendly leaderboard battles.", reward: "Co-host derby memory frame", tags: ["derby", "host-nations"], }, { id: "match-korea-brazil", stage: "Round of 32", dateTime: "2026-06-29T21:00:00.000Z", venueId: "lumen", homeTeamId: "south-korea", awayTeamId: "brazil", status: "upcoming", watched: false, collected: false, predictionWindow: false, story: "A mock knockout fixture for testing bracket-path passport rewards.", reward: "Knockout path stamp", tags: ["knockout", "mock-fixture"], }, ]; export const predictions: Prediction[] = [ { id: "pred-giant-killing-morocco", type: "match", title: "Predict a giant killing", description: "Can Morocco shock Argentina and trigger a rare underdog reward?", status: "open", result: "pending", confidence: 64, points: 450, closesAt: "2026-06-15T19:45:00.000Z", featured: true, userPickOptionId: "morocco-win", options: [ { id: "argentina-win", label: "Argentina win", helper: "Safe pick, lower multiplier" }, { id: "draw", label: "Draw", helper: "Balanced outcome with medium reward" }, { id: "morocco-win", label: "Morocco win", helper: "Giant-killing multiplier active" }, ], }, { id: "pred-england-japan", type: "match", title: "England v Japan result", description: "Lock a pick before the next favourite-team fixture kicks off.", status: "open", result: "pending", confidence: 52, points: 220, closesAt: "2026-06-18T17:45:00.000Z", options: [ { id: "england-win", label: "England win", helper: "Favourite-team pick" }, { id: "draw", label: "Draw", helper: "Conservative tournament read" }, { id: "japan-win", label: "Japan win", helper: "Upset pick with bonus XP" }, ], }, { id: "pred-golden-boot", type: "tournament", title: "Golden Boot shortlist", description: "Choose the player you think will finish top scorer.", status: "open", result: "pending", confidence: 40, points: 700, closesAt: "2026-06-26T12:00:00.000Z", options: [ { id: "mbappe", label: "Kylian Mbappรฉ", helper: "Tournament favourite" }, { id: "vinicius", label: "Vinรญcius Jรบnior", helper: "Brazil flair pick" }, { id: "bellingham", label: "Jude Bellingham", helper: "England story pick" }, ], }, { id: "pred-opening-match", type: "match", title: "Opening match result", description: "Archived prediction example for resolved-state UI.", status: "resolved", result: "won", confidence: 72, points: 180, closesAt: "2026-06-11T18:45:00.000Z", userPickOptionId: "mexico-win", options: [ { id: "mexico-win", label: "Mexico win", helper: "Correct pick" }, { id: "draw", label: "Draw", helper: "Missed outcome" }, { id: "canada-win", label: "Canada win", helper: "Missed outcome" }, ], }, { id: "pred-final-winner", type: "tournament", title: "Tournament winner", description: "Long-range call locked until every group is complete.", status: "locked", result: "pending", confidence: 0, points: 1200, closesAt: "2026-07-01T12:00:00.000Z", options: [ { id: "argentina", label: "Argentina", helper: "Defending champion storyline" }, { id: "france", label: "France", helper: "Depth and knockout power" }, { id: "brazil", label: "Brazil", helper: "Sixth-star chase" }, ], }, ]; export const dailyTrivia: TriviaQuestion[] = [ { id: "trivia-azteca-finals", category: "Stadiums", difficulty: "medium", prompt: "Which 2026 host stadium has previously staged two men's World Cup finals?", options: ["MetLife Stadium", "Estadio Azteca", "BC Place", "SoFi Stadium"], answerIndex: 1, explanation: "Estadio Azteca hosted the 1970 and 1986 men's World Cup finals and returns as a historic 2026 venue.", points: 80, }, { id: "trivia-2026-hosts", category: "Tournament format", difficulty: "easy", prompt: "How many countries are co-hosting the FIFA World Cup 2026?", options: ["One", "Two", "Three", "Four"], answerIndex: 2, explanation: "Canada, Mexico, and the United States are co-hosting the tournament.", points: 50, }, { id: "trivia-first-expanded", category: "Tournament format", difficulty: "medium", prompt: "What is notable about the 2026 tournament format?", options: [ "It is the first with 48 teams", "It has no knockout rounds", "It is played in one city", "It has only invited teams", ], answerIndex: 0, explanation: "The 2026 World Cup is the first men's edition planned with 48 teams.", points: 90, }, { id: "trivia-golden-boot", category: "History", difficulty: "hard", prompt: "Which award is given to the tournament's top goalscorer?", options: ["Golden Glove", "Golden Ball", "Golden Boot", "Fair Play Trophy"], answerIndex: 2, explanation: "The Golden Boot recognises the top goalscorer at the tournament.", points: 70, }, { id: "trivia-giant-killing", category: "Fan language", difficulty: "easy", prompt: "In football, what does a 'giant killing' usually mean?", options: [ "A heavy favourite beats a small team", "An underdog defeats a much stronger team", "A match is abandoned", "A goalkeeper scores", ], answerIndex: 1, explanation: "A giant killing is when an underdog defeats a much stronger or more famous opponent.", points: 60, }, ]; export const stickers: Sticker[] = [ { id: "sticker-england-crest", category: "team", title: "England Crest", subtitle: "Three Lions page starter", imageEmoji: "๐Ÿฆ", rarity: "common", setName: "Team Crests", obtained: true, duplicateCount: 1, linkedEntityId: "england", }, { id: "sticker-usa-crest", category: "team", title: "USA Crest", subtitle: "Co-host collection", imageEmoji: "๐Ÿฆ…", rarity: "common", setName: "Team Crests", obtained: true, duplicateCount: 0, linkedEntityId: "usa", }, { id: "sticker-mexico-crest", category: "team", title: "Mexico Crest", subtitle: "Azteca opener energy", imageEmoji: "๐ŸŒต", rarity: "common", setName: "Team Crests", obtained: true, duplicateCount: 0, linkedEntityId: "mexico", }, { id: "sticker-argentina-crest", category: "team", title: "Argentina Crest", subtitle: "Champions' aura", imageEmoji: "โ˜€๏ธ", rarity: "uncommon", setName: "Team Crests", obtained: true, duplicateCount: 0, linkedEntityId: "argentina", }, { id: "sticker-morocco-crest", category: "team", title: "Morocco Crest", subtitle: "Underdog belief", imageEmoji: "โญ", rarity: "uncommon", setName: "Team Crests", obtained: true, duplicateCount: 0, linkedEntityId: "morocco", }, { id: "sticker-brazil-crest", category: "team", title: "Brazil Crest", subtitle: "Samba page chase", imageEmoji: "๐ŸŸก", rarity: "rare", setName: "Team Crests", obtained: false, duplicateCount: 0, linkedEntityId: "brazil", }, { id: "sticker-france-crest", category: "team", title: "France Crest", subtitle: "Les Bleus contender", imageEmoji: "๐Ÿ“", rarity: "rare", setName: "Team Crests", obtained: false, duplicateCount: 0, linkedEntityId: "france", }, { id: "sticker-metlife", category: "stadium", title: "MetLife Night", subtitle: "Final-stage sparkle", imageEmoji: "๐Ÿ—ฝ", rarity: "epic", setName: "Host Stadiums", obtained: true, duplicateCount: 0, linkedEntityId: "metlife", }, { id: "sticker-azteca", category: "stadium", title: "Azteca Legacy", subtitle: "Historic host stamp", imageEmoji: "๐Ÿฆ…", rarity: "legendary", setName: "Host Stadiums", obtained: true, duplicateCount: 0, linkedEntityId: "azteca", }, { id: "sticker-att", category: "stadium", title: "Dallas Mega Venue", subtitle: "Big-screen spectacle", imageEmoji: "๐Ÿค ", rarity: "rare", setName: "Host Stadiums", obtained: true, duplicateCount: 0, linkedEntityId: "att", }, { id: "sticker-sofi", category: "stadium", title: "Los Angeles Lights", subtitle: "Hollywood host page", imageEmoji: "๐ŸŒด", rarity: "rare", setName: "Host Stadiums", obtained: false, duplicateCount: 0, linkedEntityId: "sofi", }, { id: "sticker-bellingham", category: "player", title: "Bellingham Roar", subtitle: "Favourite-team hero", imageEmoji: "๐Ÿ™Œ", rarity: "epic", setName: "Star Players", obtained: true, duplicateCount: 0, linkedEntityId: "england", }, { id: "sticker-mbappe", category: "player", title: "Mbappรฉ Sprint", subtitle: "Golden Boot candidate", imageEmoji: "๐Ÿ’จ", rarity: "epic", setName: "Star Players", obtained: false, duplicateCount: 0, linkedEntityId: "france", }, { id: "sticker-vini", category: "player", title: "Vinรญcius Flair", subtitle: "Brazilian rhythm", imageEmoji: "๐ŸŽฉ", rarity: "epic", setName: "Star Players", obtained: false, duplicateCount: 0, linkedEntityId: "brazil", }, { id: "sticker-messi", category: "player", title: "Messi Memory", subtitle: "Legacy edition", imageEmoji: "๐Ÿ", rarity: "legendary", setName: "Star Players", obtained: false, duplicateCount: 0, linkedEntityId: "argentina", }, { id: "sticker-opening-night", category: "moment", title: "Opening Night", subtitle: "Azteca fireworks", imageEmoji: "๐ŸŽ†", rarity: "rare", setName: "Tournament Moments", obtained: true, duplicateCount: 0, linkedEntityId: "match-azteca-opening", }, { id: "sticker-giant-killing", category: "moment", title: "Giant Killing Alert", subtitle: "Underdog multiplier", imageEmoji: "๐Ÿ‰", rarity: "legendary", setName: "Tournament Moments", obtained: false, duplicateCount: 0, }, { id: "sticker-live-streak", category: "moment", title: "Live Streak", subtitle: "Watched in real time", imageEmoji: "๐Ÿ”ฅ", rarity: "uncommon", setName: "Tournament Moments", obtained: true, duplicateCount: 2, }, { id: "sticker-trivia-brain", category: "mascot", title: "Trivia Brain", subtitle: "Daily quiz mascot", imageEmoji: "๐Ÿง ", rarity: "common", setName: "Passport Mascots", obtained: true, duplicateCount: 0, }, { id: "sticker-passport-stamp", category: "mascot", title: "Passport Stamp", subtitle: "Return every day", imageEmoji: "๐Ÿ“˜", rarity: "common", setName: "Passport Mascots", obtained: true, duplicateCount: 0, }, { id: "sticker-final-ticket", category: "moment", title: "Final Ticket", subtitle: "Road to the final", imageEmoji: "๐ŸŽŸ๏ธ", rarity: "legendary", setName: "Tournament Moments", obtained: false, duplicateCount: 0, }, { id: "sticker-host-cities", category: "stadium", title: "Host City Map", subtitle: "North America route", imageEmoji: "๐Ÿ—บ๏ธ", rarity: "uncommon", setName: "Host Stadiums", obtained: false, duplicateCount: 0, }, { id: "sticker-fan-chant", category: "moment", title: "Fan Chant", subtitle: "Saved from the timeline", imageEmoji: "๐ŸŽถ", rarity: "uncommon", setName: "Tournament Moments", obtained: false, duplicateCount: 0, }, { id: "sticker-clean-sheet", category: "moment", title: "Clean Sheet", subtitle: "Defensive masterclass", imageEmoji: "๐Ÿงค", rarity: "rare", setName: "Tournament Moments", obtained: false, duplicateCount: 0, }, ]; export const achievements: Achievement[] = [ { id: "welcome-aboard", title: "Passport issued", description: "Create your first Fan Passport profile.", icon: "๐Ÿ“˜", category: "journey", progress: 1, total: 1, unlocked: true, claimed: true, reward: "Founder frame", rarity: "common", }, { id: "team-collector", title: "Team collector", description: "Collect every available team page in the prototype album.", icon: "๐Ÿณ๏ธ", category: "collection", progress: 5, total: 12, unlocked: false, reward: "Complete group cover", rarity: "rare", }, { id: "england-loyalist", title: "Three Lions loyalist", description: "Watch all England matches in the journey.", icon: "๐Ÿฆ", category: "journey", progress: 1, total: 3, unlocked: false, reward: "England gold stamp", rarity: "epic", }, { id: "stadium-hopper", title: "Stadium hopper", description: "Collect every host stadium page.", icon: "๐ŸŸ๏ธ", category: "collection", progress: 3, total: 8, unlocked: false, reward: "Host-city map sticker", rarity: "rare", }, { id: "predictor-rookie", title: "Predictor rookie", description: "Submit your first prediction pick.", icon: "๐Ÿ”ฎ", category: "prediction", progress: 1, total: 1, unlocked: true, claimed: false, reward: "Prediction token", rarity: "common", }, { id: "giant-killing-oracle", title: "Giant Killing Oracle", description: "Correctly predict an underdog win.", icon: "๐Ÿ‰", category: "prediction", progress: 0, total: 1, unlocked: false, reward: "Legendary underdog sticker", rarity: "legendary", }, { id: "trivia-streak", title: "Seven-day scholar", description: "Protect a seven-day daily trivia streak.", icon: "๐Ÿง ", category: "trivia", progress: 5, total: 7, unlocked: false, reward: "Trivia crown", rarity: "uncommon", }, { id: "sticker-page", title: "Album architect", description: "Collect every sticker in this prototype set.", icon: "๐Ÿƒ", category: "collection", progress: 11, total: 24, unlocked: false, reward: "Animated page flip", rarity: "epic", }, { id: "memory-maker", title: "Memory maker", description: "Save three memories to your timeline.", icon: "๐Ÿ“ธ", category: "memory", progress: 2, total: 3, unlocked: false, reward: "Timeline cover photo", rarity: "uncommon", }, { id: "group-master", title: "Group master", description: "Complete every group represented in the prototype.", icon: "๐Ÿ—‚๏ธ", category: "collection", progress: 0, total: 4, unlocked: false, reward: "Group-stage completion badge", rarity: "epic", }, { id: "leaderboard-climber", title: "Leaderboard climber", description: "Appear on a global leaderboard.", icon: "๐ŸŒ", category: "social", progress: 1, total: 1, unlocked: true, claimed: false, reward: "Public rank plate", rarity: "common", }, { id: "derby-storyteller", title: "Derby storyteller", description: "Save a social memory from a host-nation derby.", icon: "๐ŸŽ™๏ธ", category: "memory", progress: 0, total: 1, unlocked: false, reward: "Fan chant audio frame", rarity: "rare", }, ]; export const activeChallenges: Challenge[] = [ { id: "challenge-watch-england", title: "Watch all England matches", description: "One match stamped. Two more to go for the Three Lions Loyalist badge.", category: "journey", icon: "๐Ÿฆ", progress: 1, total: 3, reward: "England gold stamp", screen: "matches", featured: true, }, { id: "challenge-giant-killing", title: "Predict a giant killing", description: "Morocco v Argentina is live in the prediction center.", category: "prediction", icon: "๐Ÿ‰", progress: 1, total: 1, reward: "450 prediction points", screen: "predictions", expiresAt: "2026-06-15T19:45:00.000Z", featured: true, }, { id: "challenge-complete-groups", title: "Complete every group", description: "Finish team pages in Groups A-D to unlock the Group Master badge.", category: "collection", icon: "๐Ÿ—‚๏ธ", progress: 0, total: 4, reward: "Group-stage badge", screen: "teams", }, { id: "challenge-stadiums", title: "Collect all stadiums", description: "Three host pages stamped. Five venues still waiting.", category: "collection", icon: "๐ŸŸ๏ธ", progress: 3, total: 8, reward: "Host-city map sticker", screen: "stadiums", }, { id: "challenge-trivia", title: "Answer daily trivia", description: "Protect a five-day streak and reach seven for the scholar badge.", category: "trivia", icon: "๐Ÿง ", progress: 5, total: 7, reward: "Trivia crown", screen: "trivia", featured: true, }, { id: "challenge-sticker-pack", title: "Build your sticker page", description: "Open a pack and chase rare moments before tomorrow's refresh.", category: "sticker", icon: "๐Ÿƒ", progress: 11, total: 24, reward: "Rare pack odds boost", screen: "stickers", }, ]; export const leaderboard: LeaderboardEntry[] = [ { rank: 1, displayName: "Luz del Gol", handle: "@luzgol", country: "Mexico", avatarEmoji: "๐Ÿฆ…", points: 9820, badges: 28, streakDays: 19, movement: 2, }, { rank: 2, displayName: "Maple Ultra", handle: "@mapleultra", country: "Canada", avatarEmoji: "๐Ÿ", points: 9340, badges: 25, streakDays: 17, movement: -1, }, { rank: 3, displayName: "Jogo Bonito", handle: "@jogobonito", country: "Brazil", avatarEmoji: "๐ŸŸก", points: 9215, badges: 24, streakDays: 15, movement: 4, }, { rank: 4, displayName: "Atlas Lioness", handle: "@atlaslioness", country: "Morocco", avatarEmoji: "โญ", points: 8890, badges: 22, streakDays: 14, movement: 1, }, { rank: 5, displayName: "Seoul Counter", handle: "@seoulcounter", country: "Korea Republic", avatarEmoji: "๐Ÿ‡ฐ๐Ÿ‡ท", points: 8540, badges: 21, streakDays: 13, movement: 0, }, { rank: 6, displayName: "Three Lions North", handle: "@lionsnorth", country: "England", avatarEmoji: "๐Ÿฆ", points: 8025, badges: 20, streakDays: 12, movement: 3, }, { rank: 7, displayName: "Passport Founder", handle: "@founderfan", country: "England", avatarEmoji: "๐Ÿฆ", points: 4380, badges: 4, streakDays: 5, movement: 12, isCurrentUser: true, }, { rank: 8, displayName: "Bleu Horizon", handle: "@bleuhorizon", country: "France", avatarEmoji: "๐Ÿ“", points: 4210, badges: 12, streakDays: 8, movement: -2, }, { rank: 9, displayName: "Samurai Stamps", handle: "@samuraistamps", country: "Japan", avatarEmoji: "๐Ÿ—ป", points: 3905, badges: 10, streakDays: 7, movement: 5, }, { rank: 10, displayName: "Naija Noise", handle: "@naijanoise", country: "Nigeria", avatarEmoji: "๐ŸŸข", points: 3710, badges: 9, streakDays: 6, movement: -1, }, ]; export const memories: Memory[] = [ { id: "memory-opening-night", date: "2026-06-11T22:15:00.000Z", type: "match", title: "Opening night fireworks", description: "Watched the first match with the passport open and collected the Azteca stamp.", icon: "๐ŸŽ†", teamIds: ["mexico", "canada"], matchId: "match-azteca-opening", mood: "Electric", }, { id: "memory-england-win", date: "2026-06-13T23:58:00.000Z", type: "match", title: "England away-day stamp", description: "The Three Lions page finally feels alive after the first watch stamp.", icon: "๐Ÿฆ", teamIds: ["england", "usa"], matchId: "match-usa-england", mood: "Relieved", }, { id: "memory-first-pack", date: "2026-06-14T09:30:00.000Z", type: "sticker", title: "First rare stadium sticker", description: "Packed MetLife Night and immediately pinned it to the host-stadium page.", icon: "๐Ÿƒ", teamIds: [], mood: "Lucky", }, { id: "memory-trivia-streak", date: "2026-06-15T08:05:00.000Z", type: "trivia", title: "Five-day trivia streak", description: "The Azteca history question kept the streak going.", icon: "๐Ÿง ", teamIds: [], mood: "Focused", }, ];