/* Copyright 2026 Marimo. All rights reserved. */ import { ChevronDownIcon, ChevronRightIcon } from "lucide-react"; import { useState } from "react"; import { useLocale } from "react-aria"; import { AddDataframeChart, renderChart, renderPreviewError, renderStats, } from "@/components/datasources/column-preview"; import { ColumnName, ColumnPreviewContainer, EmptyState, ErrorState, LoadingState, } from "@/components/datasources/components"; import { ErrorBoundary } from "@/components/editor/boundary/ErrorBoundary"; import { CopyClipboardIcon } from "@/components/icons/copy-icon"; import { Button } from "@/components/ui/button"; import { Command, CommandEmpty, CommandInput, CommandItem, CommandList, } from "@/components/ui/command"; import { Tooltip } from "@/components/ui/tooltip"; import type { DataType } from "@/core/kernel/messages"; import { useAsyncData } from "@/hooks/useAsyncData"; import type { PreviewColumn } from "@/plugins/impl/DataTablePlugin"; import { useTheme } from "@/theme/useTheme"; import { NAMELESS_COLUMN_PREFIX } from "../columns"; import { prettifyRowColumnCount } from "../pagination"; import { type FieldTypesWithExternalType, INDEX_COLUMN_NAME, SELECT_COLUMN_ID, } from "../types"; interface ColumnExplorerPanelProps { previewColumn: PreviewColumn; fieldTypes: FieldTypesWithExternalType | undefined | null; totalRows: number | "too_many"; totalColumns: number; tableId: string; } export const ColumnExplorerPanel = ({ previewColumn, fieldTypes, totalRows, totalColumns, tableId, }: ColumnExplorerPanelProps) => { const [searchValue, setSearchValue] = useState(""); const { locale } = useLocale(); const columns = fieldTypes?.filter(([columnName]) => { if ( columnName === SELECT_COLUMN_ID || columnName === INDEX_COLUMN_NAME || columnName.startsWith(NAMELESS_COLUMN_PREFIX) ) { return false; } return true; }); const filteredColumns = columns?.filter(([columnName]) => { return columnName.toLowerCase().includes(searchValue.toLowerCase()); }); return (