From e2ba02476179e27889eaede1a1ad923898299b32 Mon Sep 17 00:00:00 2001 From: Chloe Date: Tue, 28 May 2024 19:50:10 +0700 Subject: [PATCH] feat: support dynamic hero section Signed-off-by: Chloe --- app/page.tsx | 4 +- components/filters/hompage-filters.tsx | 15 +++++ components/hero.tsx | 78 +++++++++++++------------- 3 files changed, 57 insertions(+), 40 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index f4eae1d41..820e1eb80 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -22,7 +22,9 @@ export async function generateMetadata(): Promise { export default async function HomePage() { return ( <> - + + +
diff --git a/components/filters/hompage-filters.tsx b/components/filters/hompage-filters.tsx index 3b89c564b..a3c4656ef 100644 --- a/components/filters/hompage-filters.tsx +++ b/components/filters/hompage-filters.tsx @@ -26,4 +26,19 @@ const HomePageFilters = async () => { ); }; +export const HomePageFiltersPlaceholder = () => { + return ( + <> +

+ Find Your Car Part +

+
+
+
+
+
+ + ); +}; + export default HomePageFilters; diff --git a/components/hero.tsx b/components/hero.tsx index ccd0a9bb3..b62aee2ba 100644 --- a/components/hero.tsx +++ b/components/hero.tsx @@ -1,33 +1,16 @@ -import { - ArrowPathRoundedSquareIcon, - CurrencyDollarIcon, - StarIcon, - TruckIcon -} from '@heroicons/react/24/outline'; +import { getMetaobjects } from 'lib/shopify'; import Image from 'next/image'; import { Suspense } from 'react'; -import HomePageFilters from './filters/hompage-filters'; +import HomePageFilters, { HomePageFiltersPlaceholder } from './filters/hompage-filters'; +import DynamicHeroIcon from './hero-icon'; +import ImageDisplay from './page/image-display'; -const offers = [ - { - name: 'Flat Rate Shipping (Commercial Address)', - icon: TruckIcon - }, - { - name: 'Up to 5 Years Unlimited Miles Warranty', - icon: ArrowPathRoundedSquareIcon - }, - { - name: 'Excellent Customer Support', - icon: StarIcon - }, - { - name: 'No Core Charge for 30 Days', - icon: CurrencyDollarIcon - } -]; +const Hero = async () => { + const [offers, heroImage] = await Promise.all([ + getMetaobjects('usp_item'), + getMetaobjects('hero') + ]); -const Hero = () => { return (