Files
commerce/components/product/gallery.tsx
Samantha Kellow 08b3b820e4 Squashed commit of the following:
commit b10e930476d8bbe82f679f3ae8ed44cea733898f
Merge: a2c34aa 8531476
Author: Sammii <sammii.h@icloud.com>
Date:   Wed Apr 24 20:05:09 2024 +0100

    Merge pull request #1 from Sammii-HK/feat/restyle-store

    Feat/restyle store

commit 85314765721447f5612cb59b7e668653606e7b7b
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 20:03:12 2024 +0100

    responsive design app page carousel

commit d5563a7355c2581c29ebf3f11799e1047c0c29dd
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 19:57:47 2024 +0100

    updating mobile carousel tile size

commit 9976d0d427ea92dab510bface5da9a4e89feabee
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 19:30:07 2024 +0100

    updating combox import

commit f6a365df82
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 19:16:08 2024 +0100

    styling label price

commit cf89e3b064
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 19:08:16 2024 +0100

    styling accordians and drop downs

commit 49f3776ba8
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 18:53:14 2024 +0100

    updating search and carousel styling

commit 7666a25f91
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 18:37:29 2024 +0100

    styling product description

commit b8280101ad
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 18:18:11 2024 +0100

    removing `-full` from all rounded elements

commit 77480edd79
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 18:15:27 2024 +0100

    styling cart component

commit 3ec0c4d567
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 18:06:53 2024 +0100

    updating styling

commit efcab21893
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 18:06:43 2024 +0100

    updating carousel for correct types

commit b14934af84
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:57:31 2024 +0100

    styling tile

commit 0c72e76bad
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:56:50 2024 +0100

    styling label

commit ca24a30543
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:54:54 2024 +0100

    update main app layout for dark view

commit 57c1c4cac9
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:52:53 2024 +0100

    commenting out weight li on description content

commit d2f0ac2041
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:52:02 2024 +0100

    updating carousel to new style

commit 545717006d
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:50:55 2024 +0100

    updating getAllLiveProducts to handle no param

commit 0bf97ecdf6
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:50:39 2024 +0100

    styling and adjusting footer & navbar

commit 18200b4e84
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:50:00 2024 +0100

    updating cart to bag

commit 82c30cdda8
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:48:32 2024 +0100

    SKUs page file check

commit e88a45b9d5
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:47:30 2024 +0100

    updatibng Prose import path

commit 5e81519f98
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Wed Apr 24 17:45:58 2024 +0100

    updating app page metadata

commit 9c9a5c035b
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Tue Apr 23 21:25:05 2024 +0100

    making borders muted

commit 8a40e08e41
Author: Samantha Kellow <sammii.h@icloud.com>
Date:   Tue Apr 23 20:37:35 2024 +0100

    moving ui components to own folder 🧹
2024-04-25 14:58:44 +01:00

85 lines
3.0 KiB
TypeScript

'use client';
import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline';
import { GridTileImage } from 'components/grid/tile';
import Image from 'next/image';
import { useState } from 'react';
export function Gallery({ images }: { images: { src: string; altText: string }[] }) {
const [currentImageIndex, setCurrentImageIndex] = useState(0);
function handleNavigate(direction: 'next' | 'previous') {
if (direction === 'next') {
setCurrentImageIndex(currentImageIndex + 1 < images.length ? currentImageIndex + 1 : 0);
} else {
setCurrentImageIndex(currentImageIndex === 0 ? images.length - 1 : currentImageIndex - 1);
}
}
const buttonClassName =
'h-full px-6 transition-all ease-in-out hover:scale-110 hover:text-black dark:hover:text-white';
return (
<div className="lg:mr-8 h-full w-full justify-center">
<div className="relative mb-2 lg:mb-12 aspect-square overflow-hidden flex lg:w-full lg:h-auto">
{images[currentImageIndex] && (
<Image
className="relative w-full h-full object-cover"
height={500}
width={500}
alt={images[currentImageIndex]?.altText as string}
src={images[currentImageIndex]?.src as string}
priority={true}
/>
)}
{images.length > 1 ? (
<div className="bottom-2 z-50 flex w-full justify-center absolute">
<div className="mx-auto flex h-8 items-center rounded border border-neutral-500 bg-neutral-500/30 text-neutral-200 backdrop-blur dark:border-black dark:bg-neutral-900/80">
<button
aria-label="Previous product image"
onClick={() => handleNavigate('previous')}
className={buttonClassName}
>
<ArrowLeftIcon className="h-5" />
</button>
<div className="mx-1 h-6 w-px bg-neutral-600"></div>
<button
aria-label="Next product image"
onClick={() => handleNavigate('next')}
className={buttonClassName}
>
<ArrowRightIcon className="h-5" />
</button>
</div>
</div>
) : null}
</div>
{images.length > 1 ? (
<div className="flex items-center justify-center gap-2 overflow-auto py-1 md:pl-0">
{images.map((image, index) => {
const isActive = index === currentImageIndex;
return (
<button
aria-label="Enlarge product image"
key={image.src}
className="h-20 w-20"
onClick={() => setCurrentImageIndex(index)}
>
<GridTileImage
alt={image.altText}
src={image.src}
width={50}
height={50}
active={isActive}
/>
</button>
);
})}
</div>
) : null}
</div>
);
}