import { Star, MapPin, Clock, BadgeCheck } from "lucide-react"; import { cn, formatRating, PRICE_TIER_LABELS } from "@/lib/utils"; import type { CafeDiscoverDto } from "@/lib/types"; interface Props { cafe: CafeDiscoverDto; locale: string; href: string; } export function CafeCard({ cafe, locale, href }: Props) { const isFa = locale === "fa"; const name = isFa ? cafe.name : (cafe.name); const priceTier = cafe.discoverProfile?.priceTier ?? null; const themes = cafe.discoverProfile?.themes ?? []; const priceLabel = priceTier ? (PRICE_TIER_LABELS[priceTier]?.[isFa ? "fa" : "en"] ?? priceTier) : null; return ( {/* Cover image */}
{cafe.coverImageUrl ? ( {name} ) : (
{name.charAt(0)}
)} {/* Open/Closed badge */}
{cafe.isOpenNow ? (isFa ? "باز" : "Open") : (isFa ? "بسته" : "Closed")}
{/* Logo overlay */} {cafe.logoUrl && (
)}
{/* Content */}

{name} {cafe.isVerified && ( )}

{/* City */} {cafe.city && (

{cafe.city}

)} {/* Tags */} {themes.length > 0 && (
{themes.slice(0, 3).map((tag) => ( {tag} ))}
)} {/* Footer row */}
{/* Rating */}
{formatRating(cafe.averageRating)} {cafe.reviewCount > 0 && ( ({cafe.reviewCount}) )}
{/* Price tier */} {priceLabel && ( {priceLabel} )}
); }