'use client' import { useCallback, useEffect, useState } from 'react' import { rides } from '@/lib/api/index' import type { RideResponse } from '@/types/api' import { Skeleton } from '@/components/ui/skeleton' import { Badge } from '@/components/ui/badge' export function ActiveRidesWidget() { const [data, setData] = useState([]) const [total, setTotal] = useState(0) const [loading, setLoading] = useState(true) const fetchData = useCallback(async () => { setLoading(true) try { const res = await rides.list({ status: 'Active', pageSize: 5, page: 1 }) setData(res.items ?? []) setTotal(res.total ?? 0) } catch { // silent — widget shows empty state } finally { setLoading(false) } }, []) useEffect(() => { fetchData() }, [fetchData]) if (loading) { return (
) } return (
{total} active ride{total !== 1 ? 's' : ''}
{data.length === 0 ? (

No active rides right now

) : ( data.map(ride => (
{ride.driverFullName} {ride.routeName} · {ride.vehicleNumberPlate}
{ride.rideType}
)) )}
) }