Template
- Header: search button opening a command-palette dialog with debounced product suggestions, a term chip, and View All - Command: shadcn-shaped primitives built on the project's own Dialog so no cmdk/radix dependency is introduced - /search: results grid with item count, sort (relevance, price asc/desc), and cursor-based load more - Filters: driven by the API's productFilters facets — colour swatches, labelled lists with counts, and a price range — round-tripped through each facet's raw input string so no filter shape is hardcoded Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016jWbNNJLksC1QG8z8845FX
34 lines
803 B
TypeScript
34 lines
803 B
TypeScript
import { Suspense } from 'react';
|
|
import Header from '@/components/shopify/header';
|
|
import Footer from '@/components/shopify/footer';
|
|
import SearchResults from '@/components/shopify/search-results';
|
|
|
|
export const metadata = {
|
|
title: 'Search — Shop',
|
|
};
|
|
|
|
export default function Page() {
|
|
return (
|
|
<>
|
|
<Header
|
|
storeName="Shop"
|
|
logoUrl=""
|
|
links={[
|
|
{ label: 'Products', url: '/' },
|
|
{ label: 'Collections', url: '/collections' },
|
|
]}
|
|
/>
|
|
|
|
{/* useSearchParams needs a Suspense boundary to prerender this route. */}
|
|
<Suspense fallback={<div className="py-10" />}>
|
|
<SearchResults />
|
|
</Suspense>
|
|
|
|
<Footer
|
|
storeName="Shop"
|
|
copyright="© 2026 Shop. All rights reserved."
|
|
/>
|
|
</>
|
|
);
|
|
}
|