/* Copyright 2026 Marimo. All rights reserved. */ import * as React from "react"; import { AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import { Badge } from "@/components/ui/badge"; import { cn } from "@/utils/cn"; import { SparklesIcon } from "lucide-react"; import { Tooltip } from "@/components/ui/tooltip"; import type { DataSourceDiscoveryGroup } from "@/core/datasets/data-source-discovery"; /** * Styled AccordionItem for sidebar panels. * Applies border-b by default; set `lastItem` to remove it on the final item. */ const PanelAccordionItem = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef & { lastItem?: boolean; } >(({ className, lastItem, ...props }, ref) => ( )); PanelAccordionItem.displayName = "PanelAccordionItem"; /** * Styled AccordionTrigger for sidebar panels. * Applies compact uppercase styling and wraps children in a flex container * with gap for icon + label layout. */ const PanelAccordionTrigger = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( {children} )); PanelAccordionTrigger.displayName = "PanelAccordionTrigger"; /** * Styled AccordionContent for sidebar panels. * Removes default wrapper padding. */ const PanelAccordionContent = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef >(({ wrapperClassName, ...props }, ref) => ( )); PanelAccordionContent.displayName = "PanelAccordionContent"; /** * Styled Badge for sidebar panels. */ const PanelBadge = ({ className, ...props }: React.ComponentPropsWithoutRef) => ( ); PanelBadge.displayName = "PanelBadge"; const DiscoveredSourcesBadge = ({ count, type, }: { count: number; type: DataSourceDiscoveryGroup; }) => { if (count === 0) { return null; } let noun: string; if (type === "database") { noun = count === 1 ? "database" : "databases"; } else { noun = count === 1 ? "remote storage" : "remote storages"; } const content = `${count} ${noun} detected in your environment, ready to quick-add`; return ( {count} ); }; export { PanelAccordionItem, PanelAccordionTrigger, PanelAccordionContent, PanelBadge, DiscoveredSourcesBadge, };