import React, { useState } from 'react' interface PartnerLogo { id: string label: React.ReactNode } interface PartnerTickerProps { ariaLabel: string logos: PartnerLogo[] } export const PARTNER_TICKER_ITEM_WIDTH_PX = 260 export const PARTNER_TICKER_SPEED_PX_PER_SECOND = 48 export const PARTNER_TICKER_MIN_DURATION_SECONDS = 24 export function partnerTickerDurationSeconds(logoCount: number) { if (logoCount <= 0) return 0 const loopDistance = logoCount * PARTNER_TICKER_ITEM_WIDTH_PX return Math.max( PARTNER_TICKER_MIN_DURATION_SECONDS, loopDistance / PARTNER_TICKER_SPEED_PX_PER_SECOND, ) } export function PartnerTicker({ ariaLabel, logos }: PartnerTickerProps) { const [hasFocusWithin, setHasFocusWithin] = useState(false) const [isHovered, setIsHovered] = useState(false) if (logos.length === 0) return null const durationSeconds = partnerTickerDurationSeconds(logos.length) const isPaused = hasFocusWithin || isHovered const renderLogoCopy = (copy: number) => (