"use client"; import { getProductColors } from "@/components/products/utils/colorUtils"; import { Button } from "@/components/ui/Button"; import { ProductCard } from "@/components/ui/ProductCard"; import { cn } from "@/lib/utils"; import useEmblaCarousel from "embla-carousel-react"; import { Product } from "lib/shopify/types"; import { useCallback, useEffect, useState } from "react"; import { FiChevronLeft, FiChevronRight } from "react-icons/fi"; interface ProductSliderProps { products: Product[]; } /** * A product slider component that displays products in a horizontal scrollable slider. * Uses the Embla Carousel library for the sliding functionality. */ export function ProductSlider({ products }: ProductSliderProps) { const [emblaRef, emblaApi] = useEmblaCarousel({ align: "start", containScroll: false, loop: false, }); const [prevBtnEnabled, setPrevBtnEnabled] = useState(false); const [nextBtnEnabled, setNextBtnEnabled] = useState(false); const scrollPrev = useCallback(() => { if (emblaApi) emblaApi.scrollPrev(); }, [emblaApi]); const scrollNext = useCallback(() => { if (emblaApi) emblaApi.scrollNext(); }, [emblaApi]); const onSelect = useCallback(() => { if (!emblaApi) return; setPrevBtnEnabled(emblaApi.canScrollPrev()); setNextBtnEnabled(emblaApi.canScrollNext()); }, [emblaApi]); useEffect(() => { if (!emblaApi) return; onSelect(); emblaApi.on("select", onSelect); emblaApi.on("reInit", onSelect); }, [emblaApi, onSelect]); return (