"use client"; import { useState, useEffect } from "react"; import ContentThumbnailTemplate from "./ContentThumbnailTemplate"; export default function RelatedArticles({ relatedPosts, currentPostSlug }) { // Filter out the current post from related posts const filteredPosts = relatedPosts.filter( (post) => post.slug !== currentPostSlug ); const [currentIndex, setCurrentIndex] = useState(0); const [progress, setProgress] = useState(0); // Auto-advance every 3 seconds useEffect(() => { if (filteredPosts.length <= 1) return; const interval = setInterval(() => { setProgress(0); setCurrentIndex((prev) => (prev + 1) % filteredPosts.length); }, 3000); return () => clearInterval(interval); }, [filteredPosts.length]); // Progress animation useEffect(() => { if (filteredPosts.length <= 1) return; const progressInterval = setInterval(() => { setProgress((prev) => { if (prev >= 100) { return 0; } return prev + 1; }); }, 30); // 30ms intervals for smooth animation return () => clearInterval(progressInterval); }, [currentIndex, filteredPosts.length]); if (filteredPosts.length === 0) { return null; } return (

Related Articles

{/* Horizontal Articles Row - All Visible with Centering */}
{filteredPosts.map((relatedPost, index) => (
))}
{/* Three separate progress bars below the carousel */}
{filteredPosts.map((relatedPost, index) => (
))}
); }