import { Link as LinkIcon } from 'lucide-react'; import Image from 'next/image'; import { useRouter } from 'next/navigation'; import React, { useRef, useState } from 'react'; import { ImagePlaceholder } from '@/components/ImagePlaceholder'; interface DemoCardProps { id: string; title: string; poster: string; rate?: string; } function PlayCircleSolid({ className = '', fillColor = 'none', }: { className?: string; fillColor?: string; }) { return ( ); } const DemoCard = ({ id, title, poster, rate }: DemoCardProps) => { const [hover, setHover] = useState(false); const [isLoaded, setIsLoaded] = useState(false); const router = useRouter(); const imgRef = useRef(null); const handleClick = () => { router.push( `/play?title=${encodeURIComponent(title.trim())}&douban_id=${id}` ); }; return ( {/* 海报图片区域 */} {/* 图片占位符 - 骨架屏效果 */} {/* 图片组件 */} setIsLoaded(true)} referrerPolicy='no-referrer' priority={false} /> {/* 评分徽章 - 暗色模式优化 */} {rate && ( {rate} )} {/* 悬浮层 - 搜索按钮 */} setHover(true)} onMouseLeave={() => setHover(false)} className={`transition-all duration-300 cubic-bezier(0.4, 0, 0.2, 1) ${ hover ? 'scale-110 rotate-12' : 'scale-90' }`} > {/* 外部链接按钮 - 暗色模式优化 */} e.stopPropagation()} className='absolute top-2 left-2 scale-90 group-hover:scale-100 opacity-0 group-hover:opacity-100 transition-all duration-300 cubic-bezier(0.4, 0, 0.2, 1)' > {/* 信息层 - 暗色模式优化 */} {title} ); }; export default DemoCard;