import { ArrowRightIcon, PhotoIcon } from '@heroicons/react/24/solid'; import clsx from 'clsx'; import Price from 'components/price'; import { CONDITIONS } from 'lib/constants'; import { Product, ProductVariant } from 'lib/shopify/types'; import Image from 'next/image'; import Link from 'next/link'; const PriceSection = ({ variants }: { variants: ProductVariant[] }) => { const usedVariants = variants.filter((variant) => variant.condition === CONDITIONS.Used); const minUsedVariantPrice = usedVariants.length ? usedVariants.reduce( (min, variant) => Math.min(min, Number(variant.price.amount)), Number(usedVariants[0]?.price.amount) ) : null; const remanVariants = variants.filter( (variant) => variant.condition === CONDITIONS.Remanufactured ); const minRemanufacturedPrice = remanVariants.length ? remanVariants.reduce( (min, variant) => Math.min(min, Number(variant.price.amount)), Number(remanVariants[0]?.price.amount) ) : null; const currencyCode = variants[0]?.price.currencyCode || 'USD'; return (
{typeof minUsedVariantPrice === 'number' && (
{CONDITIONS.Used}
)} {typeof minRemanufacturedPrice === 'number' && (
{CONDITIONS.Remanufactured}
)}
); }; export function GridTileImage({ active, product, href, ...props }: { active?: boolean; product: Product; href: string; } & React.ComponentProps) { const metafieldKeys = ['engineCylinders', 'fuelType'] as Partial[]; const shouldShowDescription = metafieldKeys.some((key) => product[key]); const variantsWithCondition = product.variants.filter((variant) => variant.condition !== null); return (
{props.src ? ( // eslint-disable-next-line jsx-a11y/alt-text -- `alt` is inherited from `props`, which is being enforced with TypeScript ) : (
)}

{product.title}

{shouldShowDescription && (
{product.engineCylinders?.length ? (
Cylinder icon {`${product.engineCylinders[0]} Cylinder`}
) : null} {product.fuelType ? (
Fuel icon {product.fuelType}
) : null}
)}
{variantsWithCondition.length ? ( ) : ( )}
More details
); } export const TileImage = ({ active, ...props }: { active?: boolean; } & React.ComponentProps) => { return (
{props.src ? ( // eslint-disable-next-line jsx-a11y/alt-text -- `alt` is inherited from `props`, which is being enforced with TypeScript ) : (
)}
); };