import { Clock, Tag, Trophy } from "lucide-react"; import Link from "next/link"; import { Badge } from "@/components/ui/badge"; import { tr } from "@/i18n/tr"; import { cn } from "@/lib/utils"; import { formatDate, formatMoney } from "@/shared/format"; import { formatUnitPrice, type RankedOffer } from "@/shared/prices"; import type { StoreOffer } from "../service"; const t = tr.productPrices; export const ymdLabel = (ymd: string) => formatDate(`${ymd}T12:00:00+03:00`); /** Mağaza renk işareti (kimlik; metin her zaman yanında). */ export function StoreDot({ slot, className }: { slot: number; className?: string }) { return ( ); } /** Teklif rozetleri: en uygun, kampanya, kampanya bitti, eski fiyat. */ function OfferBadges({ offer }: { offer: RankedOffer }) { const p = offer.price; return ( {offer.cheapest ? ( {t.cheapest} ) : null} {p.isPromo && !offer.promoEnded ? ( {t.promo} {p.promoUntil ? ` · ${t.promoUntil(ymdLabel(p.promoUntil))}` : ""} ) : null} {offer.fellBack ? {t.fellBack} : null} {offer.promoEnded ? {t.promoEnded} : null} {offer.stale ? ( {t.stale(offer.ageDays)} ) : null} ); } /** * Birim fiyata göre sıralı teklifler. `showProduct`: ürün tipi karşılaştırmasında marka/paket * ve ürün sayfası bağlantısı. */ export function OffersList({ offers, typeUnit, showProduct = false, }: { offers: RankedOffer[]; typeUnit: string; showProduct?: boolean; }) { return (
    {offers.map((o) => (
  1. {o.rank ?? "–"}
    {showProduct ? (

    {o.productLabel} {" "} {o.packageLabel}

    ) : null}

    {o.store.label} · {ymdLabel(o.price.date)}

    {o.unitPriceMinor === null ? ( {t.noConversion} ) : ( formatUnitPrice(o.unitPriceMinor, typeUnit) )}

    {formatMoney(o.price.priceMinor)} {o.diffPct ? ` · ${t.diff(o.diffPct)}` : ""}

  2. ))}
); }