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

External replication streams database changes to destinations outside your Supabase project. The feature is in active development and may change as we gather feedback.

Pricing is not finalized. You can enable external 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 ? ( ) : ( )}
) }