'use client'; import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline'; import { GridTileImage } from 'components/grid/tile'; import { createUrl } from 'lib/utils'; import Image from 'next/image'; import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import { useOptimistic, useTransition } from 'react'; export function Gallery({ images }: { images: { src: string; altText: string }[] }) { const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); const imageSearchParam = searchParams.get('image'); const imageIndex = imageSearchParam ? parseInt(imageSearchParam) : 0; const [optimisticIndex, setOptimisticIndex] = useOptimistic(imageIndex); // eslint-disable-next-line no-unused-vars const [pending, startTransition] = useTransition(); const buttonClassName = 'h-full px-6 transition-all ease-in-out hover:scale-110 hover:text-black dark:hover:text-white flex items-center justify-center'; function updateIndex(newIndex: number) { setOptimisticIndex(newIndex); const newSearchParams = new URLSearchParams(searchParams.toString()); newSearchParams.set('image', newIndex.toString()); router.replace(createUrl(pathname, newSearchParams), { scroll: false }); } return ( <>