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" && (
)}
))}
);
}