({
src,
poster,
title,
repoUrl,
commits,
}: {
src: string;
poster: string;
title: string;
repoUrl: string;
commits: string;
})
| 1 | const VideoItem = ({ |
| 2 | src, |
| 3 | poster, |
| 4 | title, |
| 5 | repoUrl, |
| 6 | commits, |
| 7 | }: { |
| 8 | src: string; |
| 9 | poster: string; |
| 10 | title: string; |
| 11 | repoUrl: string; |
| 12 | commits: string; |
| 13 | }) => ( |
| 14 | <div className="flex flex-col"> |
| 15 | <div className="rounded-xl border-[1.5px] border-white/10 bg-black overflow-hidden aspect-[16/10]"> |
| 16 | <video |
| 17 | className="w-full h-full object-cover" |
| 18 | controls |
| 19 | muted |
| 20 | playsInline |
| 21 | preload="metadata" |
| 22 | poster={poster} |
| 23 | > |
| 24 | <source src={src} type="video/mp4" /> |
| 25 | Your browser does not support the video tag. |
| 26 | </video> |
| 27 | </div> |
| 28 | <div className="mt-3 flex justify-between items-center"> |
| 29 | <a |
| 30 | href={repoUrl} |
| 31 | target="_blank" |
| 32 | rel="noopener noreferrer" |
| 33 | className="font-medium text-transparent bg-clip-text bg-gradient-to-t from-blue-400 to-blue-600 hover:from-blue-300 hover:to-blue-500 transition-all duration-300" |
| 34 | > |
| 35 | {title} |
| 36 | </a> |
| 37 | <span className="text-sm text-gray-400">{commits} commits</span> |
| 38 | </div> |
| 39 | </div> |
| 40 | ); |
| 41 | |
| 42 | const videos = [ |
| 43 | { |
nothing calls this directly
no outgoing calls
no test coverage detected