import { faArrowRight, faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { integrationSlugNameMapping } from "public/data/frequentConstants"; import { DeleteActionModal, EmptyState, FormControl, FormLabel, IconButton, Select, SelectItem, Skeleton, Tooltip } from "@app/components/v2"; import { usePopUp } from "@app/hooks"; import { TIntegration } from "@app/hooks/api/types"; type Props = { environments: Array<{ name: string; slug: string }>; integrations?: TIntegration[]; isLoading?: boolean; onIntegrationDelete: (integration: TIntegration, cb: () => void) => void; }; export const IntegrationsSection = ({ integrations = [], environments = [], isLoading, onIntegrationDelete }: Props) => { const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([ "deleteConfirmation" ] as const); return (

Current Integrations

Manage integrations with third-party services.

{isLoading && (
)} {!isLoading && !integrations.length && (
)} {!isLoading && (
{integrations?.map((integration) => (
{integration.secretPath}
{integrationSlugNameMapping[integration.integration]}
{integration.integration === "hashicorp-vault" ? `${integration.app} - path: ${integration.path}` : integration.app}
{(integration.integration === "vercel" || integration.integration === "netlify" || integration.integration === "railway" || integration.integration === "gitlab") && (
{integration.targetEnvironment}
)}
handlePopUpOpen("deleteConfirmation", integration)} ariaLabel="delete" colorSchema="danger" variant="star" >
))}
)} handlePopUpToggle("deleteConfirmation", isOpen)} deleteKey={(popUp?.deleteConfirmation?.data as TIntegration)?.app || ""} onDeleteApproved={async () => onIntegrationDelete(popUp?.deleteConfirmation.data as TIntegration, () => handlePopUpClose("deleteConfirmation") ) } />
); };