import { useParams } from 'common' import { ChevronRight, FileCode, X } from 'lucide-react' import Link from 'next/link' import { PropsWithChildren, ReactNode } from 'react' import { Badge, Button, cn, Collapsible, CollapsibleContent, CollapsibleTrigger, WarningIcon, } from 'ui' import { Admonition } from 'ui-patterns/admonition' import { CodeBlock, type CodeBlockLang } from 'ui-patterns/CodeBlock' import { ConnectionParameters } from './ConnectionParameters' import { useSupavisorConfigurationQuery } from '@/data/database/supavisor-configuration-query' import { IS_PLATFORM } from '@/lib/constants' import { useDatabaseSelectorStateSnapshot } from '@/state/database-selector' interface ConnectionPanelProps { type?: 'direct' | 'transaction' | 'session' badge?: string title: string description: string contentFooter?: ReactNode connectionString: string ipv4Status: { type: 'error' | 'success' title: string description?: string | ReactNode links?: { text: string; url: string }[] } notice?: string[] parameters?: Array<{ key: string value: string description?: string }> contentType?: 'input' | 'code' lang?: CodeBlockLang fileTitle?: string onCopyCallback: () => void } const IPv4StatusIcon = ({ className, active }: { className?: string; active: boolean }) => { return (
{description}
{contentFooter}{text}
))}Session pooler connections are IPv4 proxied for free.
Use Direct Connection if connecting via an IPv6 network.
A few major platforms are IPv4-only and may not work with a Direct Connection:
If you wish to use a Direct Connection with these, please purchase{' '} IPv4 support .
You may also use the{' '} Session Pooler or{' '} Transaction Pooler if you are on a IPv4 network.