cgeorgiaw's picture
cgeorgiaw HF Staff
avi_tag_selector (#1)
cd201c7 verified
raw
history blame
1.43 kB
import React, { useState } from "react";
import { ProviderInfo, CalendarData } from "../types/heatmap";
import OrganizationCard from "./OrganizationCard";
import ProviderHeatmapSkeleton from "./ProviderHeatmapSkeleton";
import ViewToggle from "./ViewToggle";
type ViewMode = 'daily' | 'weekly';
interface HeatmapGridProps {
sortedProviders: ProviderInfo[];
calendarData: CalendarData;
isLoading: boolean;
}
const HeatmapGrid: React.FC<HeatmapGridProps> = ({ sortedProviders, calendarData, isLoading }) => {
const [viewMode, setViewMode] = useState<ViewMode>('weekly');
if (isLoading) {
return (
<div className="flex flex-col gap-8 max-w-4xl mx-auto mb-16">
{Array.from({ length: 3 }).map((_, idx) => (
<ProviderHeatmapSkeleton key={idx} />
))}
</div>
);
}
return (
<div className="flex flex-col gap-8 max-w-4xl mx-auto mb-16">
{/* View Toggle */}
<div className="flex justify-center">
<ViewToggle
viewMode={viewMode}
onToggle={setViewMode}
/>
</div>
{/* Heatmap Cards */}
{sortedProviders.map((provider, index) => (
<OrganizationCard
key={provider.fullName || provider.authors[0]}
provider={provider}
calendarData={calendarData}
rank={index + 1}
viewMode={viewMode}
/>
))}
</div>
);
};
export default HeatmapGrid;