"use client"; import Link from "next/link"; import { ArrowRight, Ticket } from "lucide-react"; import type { TicketTier } from "@/content/tickets"; import { site } from "@/content/site"; import { TicketInclusionsPopover } from "@/components/tickets/TicketInclusionsPopover"; import { ScrollReveal } from "@/components/motion/ScrollReveal"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; type Props = { tier: TicketTier; index: number; featured?: boolean; /** Lighter layout for /payment tier picker */ compact?: boolean; }; /** One-line summary for the card face (not the popover) */ function ticketTagline(tier: TicketTier): string { return tier.features[0] ?? tier.description; } export function TicketCard({ tier, index, featured, compact }: Props) { const price = tier.priceLabel ?? (tier.priceUsd === 0 ? "Free" : `$${tier.priceUsd}`); const serial = `GRV-${tier.id.slice(0, 3).toUpperCase()}-${1000 + index}`; const schedule = tier.scheduleLabel ?? site.dates.label; return (
{featured && ( Popular )}
{/* Stub — price & date only */}
Admit one

{price}

{schedule}

{/* Main — name, one line, details popover, CTA */}

{tier.name}

{ticketTagline(tier)}

); }