'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"; import Link from "next/link"; import { getBrowsePath } from "../../browse/hooks/useBrowseNavigation"; import { useMemo } from "react"; import { useDomain } from "@/hooks/useDomain"; interface RepositoryCarouselProps { repos: RepositoryQuery[]; } export const RepositoryCarousel = ({ repos, }: RepositoryCarouselProps) => { return ( {repos.map((repo, index) => ( ))} ) }; interface RepositoryBadgeProps { repo: RepositoryQuery; } const RepositoryBadge = ({ repo }: RepositoryBadgeProps) => { const domain = useDomain(); const { repoIcon, displayName, repoLink } = useMemo(() => { const info = getCodeHostInfoForRepo({ codeHostType: repo.codeHostType, name: repo.repoName, displayName: repo.repoDisplayName, webUrl: repo.webUrl, }); const link = getBrowsePath({ repoName: repo.repoName, path: "", pathType: "tree", domain, }) if (info) { return { repoIcon: {info.codeHostName}, displayName: info.displayName, repoLink: link, } } return { repoIcon: , displayName: repo.repoName, repoLink: undefined, } }, [repo.codeHostType, repo.repoName, repo.repoDisplayName, repo.webUrl, domain]); return ( {repoIcon} {displayName} ) }