"use client" import { AnimatePresence, motion } from "motion/react" import { useState, useEffect } from "react" import Link from "next/link" import Image from "next/image" import { Gamepad2Icon, SearchIcon, TrendingUpIcon, GaugeIcon, ClockIcon, } from "lucide-react" import { useRouter } from "next/navigation" import { PlayabilityBadge } from "@/components/playability-badge" import { cn } from "@/lib/utils" interface GameCard { id: string title: string capsule_image: string | null header_image: string | null playability_status?: string | null activity_score?: number benchmark_count?: number comment_count?: number upvote_count?: number avg_fps?: number report_count?: number release_date?: string | null created_at?: string | null } interface SectionData { recentBenchmarks: GameCard[] trending: GameCard[] mostTested: GameCard[] onSale: SaleGameCard[] } interface SaleGameCard extends GameCard { price_current?: number price_initial?: number price_currency?: string steam_review_score?: number best_fps?: number } function SkeletonSections() { return ( <> {[1, 2, 3].map((i) => (
{formatStat( ( game as unknown as Record< string, unknown > )[statKey], )}
{game.steam_review_score}% positive
)}Prices may vary. Data refreshes weekly.