64 lines
1.9 KiB
TypeScript

import { StarIcon } from '@heroicons/react/24/outline';
import { getCollection, getMetaobjectsByIds } from 'lib/shopify';
import { Collection, Metaobject } from 'lib/shopify/types';
import Link from 'next/link';
const { STORE_PREFIX } = process.env;
const validStores = ['car-part-planet', 'reman-engine', 'engine-locator'];
const LinkBlock = async ({ collectionId, title }: { collectionId?: string; title?: string }) => {
if (!collectionId || !title) return null;
const collection = await getCollection({ id: collectionId });
if (!collection) return null;
return (
<Link href={collection.path}>
<div className="rounded border border-primary px-2 py-1 text-sm">{title}</div>
</Link>
);
};
const EngineSizes = async ({ collection }: { collection: Collection }) => {
if (!collection.plpType || !validStores.includes(STORE_PREFIX!)) {
return null;
}
let engineSizes = [] as Metaobject[];
if (collection.plpType === 'Product Type' && collection.engineSizeLinks) {
engineSizes = await getMetaobjectsByIds(collection.engineSizeLinks);
}
if (!engineSizes.length) {
return null;
}
return (
<div>
<h3 className="mb-3 text-3xl font-semibold text-content-strong lg:text-4xl">
Browse Engines By Engine Sizes
</h3>
<div className="h-auto max-h-[700px] w-full overflow-auto rounded px-10 py-6 shadow">
<p className="flex items-center gap-2">
<StarIcon className="size-4" />
<span className="font-medium text-blue-800">Popular Engine Sizes</span>
</p>
<div className="mt-6 grid grid-cols-2 gap-x-12 gap-y-5 md:grid-cols-3 md:gap-y-8 lg:grid-cols-4 xl:grid-cols-5">
{engineSizes.map((engineSize) => (
<LinkBlock
collectionId={engineSize.collection_link}
title={engineSize.engine_size}
key={engineSize.id}
/>
))}
</div>
</div>
</div>
);
};
export default EngineSizes;