import { PaginationWithPageNumbers } from 'components/Pagination' import { MAX_GAMES_PER_PAGE } from 'constants.ts' import { useGames } from 'hooks' import { useRef, useState } from 'react' import { GameCard } from '../components/GameCard' import '../styles/pagination.css' import '../styles/search.css' import '../styles/styles.css' import { createSearchParams, useNavigate } from 'react-router-dom' import { appRoutes } from 'routes' export const GamesPage = () => { const navigate = useNavigate() const searchTermRef = useRef(null) const games = useGames() const [currentPage, setCurrentPage] = useState(1) // Pagination logic const totalGames = games.length const totalPages = Math.ceil(totalGames / MAX_GAMES_PER_PAGE) const startIndex = (currentPage - 1) * MAX_GAMES_PER_PAGE const endIndex = startIndex + MAX_GAMES_PER_PAGE const currentGames = games.slice(startIndex, endIndex) const handlePageChange = (page: number) => { if (page >= 1 && page <= totalPages) { setCurrentPage(page) } } const handleSearch = () => { const value = searchTermRef.current?.value || '' // Access the input value from the ref if (value !== '') { const searchParams = createSearchParams({ searchTerm: value, searching: 'Games' }) navigate({ pathname: appRoutes.search, search: `?${searchParams}` }) } } // Handle "Enter" key press inside the input const handleKeyDown = (event: React.KeyboardEvent) => { if (event.key === 'Enter') { handleSearch() } } return (

Games

{currentGames.map((game) => ( ))}
) }