"use client"; import HeaderLockup from "../../type/HeaderLockup"; import Card from "../../cards/Card"; import type { CardStackViewProps } from "./CardStack.types"; export function CardStackView({ cards, selectedIds, onCardSelect, expanded, onToggleExpand, hasMore, toggleLabel, showLessLabel, title, description, layout, headerLockupSize, className, }: CardStackViewProps) { const lockupSize = headerLockupSize ?? "L"; const isSelected = (id: string) => selectedIds.includes(id); // Compact: recommended only (up to 5). Expanded: all cards. const compactCards = cards.filter((c) => c.recommended ?? false).slice(0, 5); // Single stack: always one column; expand reveals more in same stack (scrollable) if (layout === "singleStack") { const displayedCards = expanded ? cards : compactCards; return (
{title || description ? (
) : null}
{displayedCards.map((item) => ( onCardSelect(item.id)} /> ))}
{hasMore ? ( ) : null}
); } return (
{title || description ? (
) : null} {expanded ? (
{cards.map((item) => ( onCardSelect(item.id)} /> ))}
) : ( <> {/* Compact under 640: single column, up to 5 recommended cards */}
{compactCards.map((item) => ( onCardSelect(item.id)} /> ))}
{/* Compact 640+: 6-col grid so each card spans 2; second row centered (cols 2–3 and 4–5) */}
{compactCards.map((item, index) => { const colClass = index <= 2 ? "md:col-span-2" : index === 3 && compactCards.length === 4 ? "md:col-start-3 md:col-span-2" : index === 3 ? "md:col-start-2 md:col-span-2" : "md:col-start-4 md:col-span-2"; return (
onCardSelect(item.id)} />
); })}
)} {hasMore ? ( ) : null}
); }