67 lines · 2.3 KB · TypeScript
RawDownload
import { GitPullRequestIcon } from "lucide-react";import type { ElementType } from "react";import type { SourceControlProviderInfo, SourceControlProviderKind } from "@t3tools/contracts";export {  DEFAULT_CHANGE_REQUEST_TERMINOLOGY,  getChangeRequestTerminology,  resolveChangeRequestPresentation,  type ChangeRequestPresentation,  type ChangeRequestTerminology,} from "@t3tools/shared/sourceControl";import {  getChangeRequestTerminology,  resolveChangeRequestPresentation,  type ChangeRequestTerminology,} from "@t3tools/shared/sourceControl";import { AzureDevOpsIcon, BitbucketIcon, GitHubIcon, GitLabIcon } from "./components/Icons"; export interface SourceControlPresentation {  readonly providerName: string;  readonly terminology: ChangeRequestTerminology;  readonly Icon: ElementType<{ className?: string }>;} export function getSourceControlPresentation(  provider: SourceControlProviderInfo | null | undefined,): SourceControlPresentation {  const presentation = resolveChangeRequestPresentation(provider);  switch (presentation.icon) {    case "github":      return {        providerName: provider?.name || presentation.providerName,        terminology: getChangeRequestTerminology(provider),        Icon: GitHubIcon,      };    case "gitlab":      return {        providerName: provider?.name || presentation.providerName,        terminology: getChangeRequestTerminology(provider),        Icon: GitLabIcon,      };    case "azure-devops":      return {        providerName: provider?.name || presentation.providerName,        terminology: getChangeRequestTerminology(provider),        Icon: AzureDevOpsIcon,      };    case "bitbucket":      return {        providerName: provider?.name || presentation.providerName,        terminology: getChangeRequestTerminology(provider),        Icon: BitbucketIcon,      };    case "change-request":      return {        providerName: provider?.name || presentation.providerName,        terminology: getChangeRequestTerminology(provider),        Icon: GitPullRequestIcon,      };  }} /** For surfaces that know only the host kind, such as a change request row or filter. */export function getSourceControlPresentationForKind(  kind: SourceControlProviderKind,): SourceControlPresentation {  return getSourceControlPresentation({ kind, name: "", baseUrl: "" });}