Expone ProductVariant.inventoryQuantity (ya calculado desde variant.inventory_quantity en Medusa, hoy colapsado al booleano available) y lo usa para mostrar "Quedan N" cuando el stock real es bajo (<=5), tanto en la tarjeta de producto como en la ficha. null indica inventario no gestionado (backorder / manage_inventory=false), donde nunca se muestra un numero. ADR 0005 seccion 3 (patron eBay). Catalogo mock actualizado (data/products.json) con inventoryQuantity=null en todas las variantes para seguir tipando contra Product[] via `satisfies`.
21 lines
695 B
TypeScript
21 lines
695 B
TypeScript
import { clsx, type ClassValue } from "clsx";
|
|
import { twMerge } from "tailwind-merge";
|
|
|
|
export function cn(...inputs: ClassValue[]): string {
|
|
return twMerge(clsx(inputs));
|
|
}
|
|
|
|
export function formatMoney(value: number | null, currency = "COP"): string {
|
|
if (value === null) return "Consultar precio";
|
|
return new Intl.NumberFormat("es-CO", {
|
|
style: "currency",
|
|
currency,
|
|
maximumFractionDigits: 0,
|
|
}).format(value);
|
|
}
|
|
|
|
// Umbral desde el cual mostramos "Quedan N" en vez de solo "Disponible".
|
|
// inventoryQuantity=null significa inventario no gestionado (backorder /
|
|
// manage_inventory=false en Medusa) -- ahi nunca mostramos el mensaje.
|
|
export const LOW_STOCK_THRESHOLD = 5;
|