import { useParams } from 'common' import { useState } from 'react' import { toast } from 'sonner' import { Button, cn, Dialog, DialogContent, DialogFooter, DialogHeader, DialogSection, DialogSectionSeparator, DialogTitle, DialogTrigger, } from 'ui' import { Admonition } from 'ui-patterns' import { DestinationType } from './DestinationPanel/DestinationPanel.types' import { DocsButton } from '@/components/ui/DocsButton' import { UpgradePlanButton } from '@/components/ui/UpgradePlanButton' import { useCreateTenantSourceMutation } from '@/data/replication/create-tenant-source-mutation' import { DOCS_URL } from '@/lib/constants' const EnableReplicationModal = () => { const { ref: projectRef } = useParams() const [open, setOpen] = useState(false) const { mutate: createTenantSource, isPending: creatingTenantSource } = useCreateTenantSourceMutation({ onSuccess: () => { toast.success('External replication has been successfully enabled!') setOpen(false) }, onError: (error) => { toast.error(`Failed to enable external replication: ${error.message}`) }, }) const onEnableReplication = async () => { if (!projectRef) return console.error('Project ref is required') createTenantSource({ projectRef }) } return ( Enable external replication

This feature is in active development and may change as we gather feedback. Availability and behavior can evolve while in Alpha.

Pricing has not been finalized yet. You can enable replication now; we'll announce pricing later and notify you before any charges apply.

) } export const EnableReplicationCallout = ({ type, className, hasAccess, }: { type?: DestinationType | null className?: string hasAccess: boolean }) => { return (

Replicate data to external destinations in real time

{hasAccess ? 'Enable external replication' : 'Upgrade to the Pro plan'} to start replicating your database changes to {type ?? 'data warehouses and analytics platforms'}

{hasAccess ? ( ) : ( )}
) }