'use client'; import React, { useState } from 'react'; import { useRouter } from 'next/navigation'; import { DriversTemplate } from '@/templates/DriversTemplate'; import { DriverLeaderboardViewModel } from '@/lib/view-models/DriverLeaderboardViewModel'; import type { DriversLeaderboardDTO } from '@/lib/types/generated/DriversLeaderboardDTO'; import type { DriverLeaderboardItemDTO } from '@/lib/types/generated/DriverLeaderboardItemDTO'; interface DriversPageClientProps { pageDto: DriversLeaderboardDTO | null; error?: string; empty?: { title: string; description: string; }; } /** * DriversPageClient * * Client component that: * 1. Handles state (search, filter, sort) * 2. Calls ViewModel to get computed display data * 3. Transforms ViewModel to Template-compatible format * 4. Passes data to Template */ export function DriversPageClient({ pageDto, error, empty }: DriversPageClientProps) { const router = useRouter(); // Client state const [searchQuery, setSearchQuery] = useState(''); // Event handlers const onSearchChange = (query: string) => setSearchQuery(query); const onDriverClick = (id: string) => router.push(`/drivers/${id}`); const onBackToLeaderboards = () => router.push('/leaderboards'); // Handle error/empty states if (error) { return (
Please try again later
{empty.description}