"use client"; import { motion } from "framer-motion"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { useEffect, useState } from "react"; import { Tweet } from "react-tweet"; const TWEET_IDS = [ "1907728148294447538", "1907831059275735353", "1907723601731530820", "1907817662215757853", "1904228496144269699", "1904241046898556970", "1904144343125860404", "1904215768272654825", "1904233896851521980", "1907841646513005038", "1904301540422070671", "1904338606409531710", "1904318186750652606", "1908568583799484519", "1904179661086556412", "1908558365128876311", "1907772878139072851", "1906149740095705265", "1906001923456790710", "1906570888897777847", ]; export default function Testimonials() { const [startIndex, setStartIndex] = useState(0); const [tweetsPerPage, setTweetsPerPage] = useState(3); useEffect(() => { const handleResize = () => { if (window.innerWidth >= 1280) { setTweetsPerPage(6); } else if (window.innerWidth >= 768) { setTweetsPerPage(4); } else if (window.innerWidth >= 640) { setTweetsPerPage(2); } else { setTweetsPerPage(1); } }; handleResize(); window.addEventListener("resize", handleResize); return () => window.removeEventListener("resize", handleResize); }, []); const getVisibleTweets = () => { const visible = []; for (let i = 0; i < tweetsPerPage; i++) { const index = (startIndex + i) % TWEET_IDS.length; visible.push(index); } return visible; }; const handleNext = () => { setStartIndex((prev) => (prev + tweetsPerPage) % TWEET_IDS.length); }; const handlePrev = () => { setStartIndex((prev) => { const newIndex = prev - tweetsPerPage; return newIndex < 0 ? TWEET_IDS.length + newIndex : newIndex; }); }; const visibleTweets = getVisibleTweets(); const totalPages = Math.ceil(TWEET_IDS.length / tweetsPerPage); const currentPage = Math.floor(startIndex / tweetsPerPage) + 1; return (

Developer Feedback

what devs are saying about Better-T-Stack
Developer Feedback Terminal
{visibleTweets.map((tweetIndex) => ( ))}
Page {currentPage} of {totalPages}
{Array.from({ length: totalPages }).map((_, i) => { const isActive = i === currentPage - 1; return (
); }