import CachedImage from '@app/components/Common/CachedImage'; import type { ForwardRefRenderFunction, HTMLAttributes } from 'react'; import React, { useEffect, useState } from 'react'; interface ImageFaderProps extends HTMLAttributes { backgroundImages: string[]; rotationSpeed?: number; isDarker?: boolean; forceOptimize?: boolean; } const DEFAULT_ROTATION_SPEED = 6000; const ImageFader: ForwardRefRenderFunction = ( { backgroundImages, rotationSpeed = DEFAULT_ROTATION_SPEED, isDarker, forceOptimize, ...props }, ref ) => { const [activeIndex, setIndex] = useState(0); useEffect(() => { const interval = setInterval( () => setIndex((ai) => (ai + 1) % backgroundImages.length), rotationSpeed ); return () => { clearInterval(interval); }; }, [backgroundImages, rotationSpeed]); let gradient = 'linear-gradient(180deg, rgba(45, 55, 72, 0.47) 0%, #1A202E 100%)'; if (isDarker) { gradient = 'linear-gradient(180deg, rgba(17, 24, 39, 0.47) 0%, rgba(17, 24, 39, 1) 100%)'; } let overrides = {}; if (forceOptimize) { overrides = { unoptimized: false, }; } return (
{backgroundImages.map((imageUrl, i) => (
))}
); }; export default React.forwardRef(ImageFader);