import { useTRPC } from '@/integrations/trpc/react'; import { DiscordIntegrationForm } from '@/components/integrations/forms/discord-integration'; import { SlackIntegrationForm } from '@/components/integrations/forms/slack-integration'; import { WebhookIntegrationForm } from '@/components/integrations/forms/webhook-integration'; import { IntegrationCardContent } from '@/components/integrations/integration-card'; import { INTEGRATIONS } from '@/components/integrations/integrations'; import { SheetContent } from '@/components/ui/sheet'; import { useAppParams } from '@/hooks/use-app-params'; import type { IIntegrationConfig } from '@openpanel/validation'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useNavigate } from '@tanstack/react-router'; import { useQueryState } from 'nuqs'; import { toast } from 'sonner'; import { popModal } from '.'; import { ModalHeader } from './Modal/Container'; interface Props { id?: string; type: IIntegrationConfig['type']; } export default function AddIntegration(props: Props) { const { organizationId } = useAppParams(); const trpc = useTRPC(); const query = useQuery( trpc.integration.get.queryOptions( { id: props.id ?? '', }, { enabled: !!props.id, }, ), ); const integration = INTEGRATIONS.find((i) => i.type === props.type); const renderCard = () => { if (!integration) { return null; } return (