'use client'; import { Carousel, CarouselContent, CarouselItem, } from "@/components/ui/carousel"; import Autoscroll from "embla-carousel-auto-scroll"; import { getCodeHostInfoForRepo } from "@/lib/utils"; import Image from "next/image"; import { FileIcon } from "@radix-ui/react-icons"; import clsx from "clsx"; import { RepositoryQuery } from "@/lib/types"; interface RepositoryCarouselProps { repos: RepositoryQuery[]; } export const RepositoryCarousel = ({ repos, }: RepositoryCarouselProps) => { return ( {repos.map((repo, index) => ( ))} ) }; interface RepositoryBadgeProps { repo: RepositoryQuery; } const RepositoryBadge = ({ repo }: RepositoryBadgeProps) => { const { repoIcon, displayName, repoLink } = (() => { const info = getCodeHostInfoForRepo({ codeHostType: repo.codeHostType, name: repo.repoName, displayName: repo.repoDisplayName, webUrl: repo.webUrl, }); if (info) { return { repoIcon: {info.codeHostName}, displayName: info.displayName, repoLink: info.repoLink, } } return { repoIcon: , displayName: repo.repoName, repoLink: undefined, } })(); return (
{ if (repoLink !== undefined) { window.open(repoLink, "_blank"); } }} className={clsx("flex flex-row items-center gap-2 border rounded-md p-2 text-clip", { "cursor-pointer": repoLink !== undefined, })} > {repoIcon} {displayName}
) }