import { createFileRoute } from "@tanstack/react-router"; import { GlobalItemCard } from "../components/GlobalItemCard"; import { PublicSetupCard } from "../components/PublicSetupCard"; import { useDiscoveryCategories, useDiscoveryItems, useDiscoverySetups, } from "../hooks/useDiscovery"; export const Route = createFileRoute("/")({ component: LandingPage, }); function LandingPage() { return (
); } function PopularSetupsSection() { const { data, isLoading } = useDiscoverySetups(6); const setups = data?.items ?? []; if (!isLoading && setups.length === 0) return null; return (

Popular Setups

{isLoading ? ( ) : (
{setups.map((setup) => ( ))}
)}
); } function RecentItemsSection() { const { data, isLoading } = useDiscoveryItems(8); const items = data?.items ?? []; if (!isLoading && items.length === 0) return null; return (

Recently Added

{isLoading ? ( ) : (
{items.map((item) => ( ))}
)}
); } function TrendingCategoriesSection() { const { data, isLoading } = useDiscoveryCategories(12); const categories = data ?? []; if (!isLoading && categories.length === 0) return null; return (

Trending Categories

{isLoading ? (
{Array.from({ length: 8 }, (_, i) => `cat-skeleton-${i}`).map( (key) => (
), )}
) : (
{categories.map((cat) => ( {cat.name} {cat.itemCount} ))}
)}
); } function SectionSkeleton({ count, aspect }: { count: number; aspect: string }) { return (
{Array.from({ length: count }, (_, i) => `skeleton-${i}`).map((key) => (
{aspect !== "none" && (
)}
))}
); }