ifixkart-storefront/components/ProductCardMeta.tsx

47 lines
1.1 KiB
TypeScript

'use client';
type StockSource = {
totalStock?: number | null;
stock_count?: number | null;
variants?: { available_stock?: number | null }[] | null;
};
export function resolveStockQty(source: StockSource): number | null {
if (typeof source.totalStock === 'number') return source.totalStock;
if (typeof source.stock_count === 'number') return source.stock_count;
const stocks = (source.variants || [])
.map((v) => v.available_stock)
.filter((n): n is number => typeof n === 'number');
if (!stocks.length) return null;
return stocks.reduce((sum, n) => sum + n, 0);
}
export function ProductCardMeta({
sku,
discount,
brand,
className = '',
}: {
stock?: number | null;
sku?: string | null;
discount?: number | null;
brand?: string | null;
className?: string;
}) {
const extra =
discount && discount > 0
? `${discount}% off`
: sku
? String(sku)
: brand && brand !== 'iFixKart'
? String(brand)
: '';
if (!extra) return null;
return (
<p className={`text-[11px] leading-snug mb-1.5 text-gray-400 ${className}`}>
{extra}
</p>
);
}