import React, { useState, useEffect } from "react"; import { ProviderInfo, ModelData, CalendarData } from "../types/heatmap"; import OrganizationButton from "../components/OrganizationButton"; import HeatmapGrid from "../components/HeatmapGrid"; import Navbar from "../components/Navbar"; import { getProviders } from "../utils/ranking"; import { ORGANIZATIONS } from "../constants/organizations"; interface PageProps { calendarData: CalendarData; providers: ProviderInfo[]; } function Page({ calendarData, providers, }: PageProps) { const [isLoading, setIsLoading] = useState(true); useEffect(() => { if (calendarData && Object.keys(calendarData).length > 0) { setIsLoading(false); } }, [calendarData]); return (

Hugging Face Heatmap Hugging Face icon

Open models, datasets, and apps from popular AI labs in the last year.

{providers.map((provider, index) => ( ))}
); } export async function getStaticProps() { try { const { calendarData, providers } = await getProviders(ORGANIZATIONS); return { props: { calendarData, providers, }, revalidate: 3600, // regenerate every hour }; } catch (error) { console.error("Error fetching data:", error); return { props: { calendarData: {}, providers: ORGANIZATIONS, }, revalidate: 60, // retry after 1 minute if there was an error }; } } export default Page;