Newer
Older
images: Array<DataImage>
isLogo: boolean
delay?: number
const { images, isLogo, delay, fullSize } = props
const updateIndex = (newIndex: number) => {
if (newIndex < 0) {
newIndex = nbr_image - 1
} else if (newIndex >= nbr_image) {
newIndex = 0
}
useEffect(() => {
const interval = setInterval(() => {
if (delay != 0) {
updateIndex(index + 1)
}
}, delay)
return () => {
if (interval) {
clearInterval(interval)
}
}
})
<div
className={`block relative ${
isLogo
? "flex items-center w-1/2 box-content float-none"
: "flex items-center"
}`}
>
<div className="btn-carousel">
<button
onClick={() => updateIndex(index - 1)}
className={`bg-neutral rounded-3xl ${
isLogo ? "w-5" : "w-10 absolute z-10 left-2"
} h-10 text-base-100`}
>
❮
</button>
</div>
className={`inline-block align-middle carousel ${
isLogo ? "w-1/2 ml-2 mr-2" : "w-full"
} truncate`}
>
<div
className={`whitespace-nowrap ${
isLogo ? (fullSize ? "w-full" : "w-4/12") : "w-full"
} `}
style={{
transform: isLogo
? nbr_image > 2
? fullSize
? `translateX(-${index * 100}%)`
: `translateX(-${index * 60}%)`
: `translateX(0)`
: `translateX(-${index * 100}%)`,
transition: "transform 0.3s",
}}
>
{images.map((item: any, key: any) => {
return (
<div
className={`carousel-item relative w-full inline-block ${
isLogo
? fullSize
? "mr-0"
: "mr-5"
: "mr-0"
}`}
<div
className={`flex justify-center items-center ${
fullSize ? "w-full" : "w-full h-28"
} `}
>
<Image
image={item.src}
className="w-full border border-gray-600"
<Image
image={item.src}
className="w-full"
/>
)}
</div>
)
})}
</div>
</div>
<button
onClick={() => updateIndex(index + 1)}
className={`bg-neutral rounded-3xl ${
} h-10 text-base-100`}
>
❯
</button>
</div>