/* Copyright 2026 Marimo. All rights reserved. */
import { useState } from "react";
import {
Dialog,
DialogContent,
DialogDescription,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
import { ExternalLink } from "@/components/ui/links";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { AddDatabaseForm } from "./database/add-database-form";
import { AddStorageForm } from "./storage/add-storage-form";
type ConnectionTab = "databases" | "storage";
export const AddConnectionDialog: React.FC<{
children: React.ReactNode;
defaultTab?: ConnectionTab;
}> = ({ children, defaultTab = "databases" }) => {
const [open, setOpen] = useState(false);
return (
);
};
export const AddConnectionDialogContent: React.FC<{
defaultTab?: ConnectionTab;
onClose: () => void;
}> = ({ defaultTab = "databases", onClose }) => {
const [activeTab, setActiveTab] = useState(defaultTab);
const tabHeader = (
Databases & Catalogs
Remote Storages
);
const codeSnippetHint =
activeTab === "databases" ? (
<>
Don't see your database or connection method? A{" "}
code snippet
{" "}
is all you need.
>
) : (
<>
Don't see your storage or connection method? A{" "}
code snippet
{" "}
is all you need.
>
);
return (
Add Connection
Connect to a{" "}
database, data catalog
{" "}
or{" "}
remote storage
{" "}
directly from your notebook.
{codeSnippetHint}
setActiveTab(v as ConnectionTab)}
>
);
};