+ );
+}
diff --git a/app/search/layout.tsx b/app/search/layout.tsx
index cf7498f70..a3ebd12a5 100644
--- a/app/search/layout.tsx
+++ b/app/search/layout.tsx
@@ -1,10 +1,11 @@
import Footer from 'components/layout/footer';
+import { Suspense } from 'react';
export default function SearchLayout({ children }: { children: React.ReactNode }) {
return (
<>
-
- {children}
+
+ {children}
>
diff --git a/components/carousel.tsx b/components/carousel.tsx
deleted file mode 100644
index f5b6e079d..000000000
--- a/components/carousel.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import { getCollectionProducts } from 'lib/shopify';
-import Link from 'next/link';
-import { GridTileImage } from './grid/tile';
-
-export async function Carousel() {
- // Collections that start with `hidden-*` are hidden from the search page.
- const { products } = await getCollectionProducts({ collection: 'hidden-homepage-carousel' });
-
- if (!products?.length) return null;
-
- // Purposefully duplicating products to make the carousel loop and not run out of products on wide screens.
- const carouselProducts = [...products, ...products, ...products];
-
- return (
-
);
};
diff --git a/components/grid/three-items.tsx b/components/grid/three-items.tsx
index 2fef1fa81..bfdd46f72 100644
--- a/components/grid/three-items.tsx
+++ b/components/grid/three-items.tsx
@@ -1,7 +1,6 @@
import { GridTileImage } from 'components/grid/tile';
import { getCollectionProducts } from 'lib/shopify';
import type { Product } from 'lib/shopify/types';
-import Link from 'next/link';
function ThreeItemGridItem({
item,
@@ -16,22 +15,21 @@ function ThreeItemGridItem({
-
-
-
+
);
}
diff --git a/components/grid/tile.tsx b/components/grid/tile.tsx
index d55e3f1e0..08d5ff34e 100644
--- a/components/grid/tile.tsx
+++ b/components/grid/tile.tsx
@@ -1,11 +1,14 @@
-import { PhotoIcon } from '@heroicons/react/24/outline';
+import { ArrowRightIcon, PhotoIcon } from '@heroicons/react/24/solid';
import clsx from 'clsx';
+import Price from 'components/price';
import Image from 'next/image';
-import Label from '../label';
+import Link from 'next/link';
export function GridTileImage({
active,
label,
+ href,
+ place = 'grid',
...props
}: {
active?: boolean;
@@ -14,33 +17,84 @@ export function GridTileImage({
amount: string;
currencyCode: string;
};
+ place?: 'grid' | 'gallery';
+ href: string;
} & React.ComponentProps) {
return (
-
-
- {props.src ? (
- // eslint-disable-next-line jsx-a11y/alt-text -- `alt` is inherited from `props`, which is being enforced with TypeScript
-
- ) : (
+
+
+
-
+ {props.src ? (
+ // eslint-disable-next-line jsx-a11y/alt-text -- `alt` is inherited from `props`, which is being enforced with TypeScript
+
+ ) : (
+
+ {props.src ? (
+ // eslint-disable-next-line jsx-a11y/alt-text -- `alt` is inherited from `props`, which is being enforced with TypeScript
+
+ ) : (
+