import { useState } from "react"; import { useTranslate } from "ra-core"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ds/ui/card"; import { Button } from "@/components/ds/ui/button"; import { Alert, AlertDescription } from "@/components/ds/ui/alert"; import { Database, CheckCircle, XCircle, Settings, Trash2 } from "lucide-react"; import { getSupabaseConfig, clearSupabaseConfig, getConfigSource, } from "@/lib/supabase-config"; import { SetupWizard } from "../setup/SetupWizard"; import { isDemoMode } from "@/lib/demo-utils"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ds/ui/tooltip"; export function DatabaseSettings() { const [showWizard, setShowWizard] = useState(false); const config = getSupabaseConfig(); const source = getConfigSource(); const translate = useTranslate(); const handleClearConfig = () => { if (confirm(translate("crm.settings.database.confirm_clear"))) { clearSupabaseConfig(); window.location.reload(); } }; return ( <>
{translate("crm.settings.database.title")}
{translate("crm.settings.database.description")}
{config ? ( <> {/* Connection Status */}

{translate("crm.settings.database.connected")}

{config.url}

{config.configuredAt && (

{translate("crm.settings.database.configured_on", { date: new Date( config.configuredAt, ).toLocaleDateString(), })}

)}
{/* Configuration Source Info */} {source === "env" && ( {translate("crm.settings.database.env_hint")} )} {/* Actions */}
{isDemoMode() && (

Changing configuration is disabled in demo mode

)}
{source === "ui" && ( {isDemoMode() && (

Clearing configuration is disabled in demo mode

)}
)}
{/* Anon Key Display (masked) */}
{config.anonKey.substring(0, 20)}... {config.anonKey.substring(config.anonKey.length - 10)}
) : ( <>

{translate("crm.settings.database.not_connected")}

{translate("crm.settings.database.no_config")}

{translate("crm.settings.database.setup_hint")}{" "} supabase.com )}
setShowWizard(false)} canClose={true} /> ); } function Label({ children, className, }: { children: React.ReactNode; className?: string; }) { return ; }