import { Link } from 'react-router-dom'; import { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { clsm, isTextColorInverted } from '../utils'; import { PROFILE_COLORS } from '../constants'; import { useCallback } from 'react'; import { useResponsiveDevice } from '../contexts/ResponsiveDevice'; import LivePill from './LivePill'; import UserAvatar from './UserAvatar'; const commonChannelCardClasses = [ '-mb-[1px]', 'aspect-video', 'bg-center', 'bg-cover', 'rounded-t-xl', 'transition-colors' ]; const ChannelCard = ({ avatarSrc, bannerSrc, color, username, variant }) => { const [hasBannerError, setHasBannerError] = useState(false); const [shouldHavePointerEvents, setShouldHavePointerEvents] = useState(false); const { isTouchscreenDevice } = useResponsiveDevice(); const shouldShowBanner = !!(!hasBannerError && bannerSrc); const onError = useCallback(() => { setHasBannerError(true); }, []); useEffect(() => { // Addresses a potential issue on iOS where, after signin, the first card would get the hover state. setShouldHavePointerEvents(true); }, []); return (