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' && (
)}
{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 ? (
{`${product.engineCylinders[0]} Cylinder`}
) : null}
{product.fuelType ? (
{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
) : (
)}
);
};