/* Copyright 2026 Marimo. All rights reserved. */
import { LoaderCircle, XIcon } from "lucide-react";
import type { CSSProperties } from "react";
import { TreeChevron } from "@/components/editor/file-tree/tree-actions";
import type { DataType } from "@/core/kernel/messages";
import { cn } from "@/utils/cn";
import {
DATA_TYPE_ICON,
getDataTypeColor,
resolveDataType,
} from "../datasets/icons";
export const RotatingChevron: React.FC<{ isExpanded: boolean }> = ({
isExpanded,
}) => ;
export const DatasourceLabel: React.FC<{
children: React.ReactNode;
className?: string;
style?: CSSProperties;
}> = ({ children, className, style }) => {
return (
{children}
);
};
export const EmptyState: React.FC<{
content: string;
className?: string;
style?: CSSProperties;
}> = ({ content, className, style }) => {
return (
{content}
);
};
export const ErrorState: React.FC<{
error: Error;
style?: CSSProperties;
className?: string;
showIcon?: boolean;
}> = ({ error, style, className, showIcon = true }) => {
return (
{showIcon && }
{error.message}
);
};
export const LoadingState: React.FC<{
message: string;
className?: string;
style?: CSSProperties;
}> = ({ message, className, style }) => {
return (
{message}
);
};
export const ColumnPreviewContainer: React.FC<{
children: React.ReactNode;
className?: string;
}> = ({ children, className }) => {
return (
{children}
);
};
export const ColumnName = ({
columnName,
dataType,
className,
}: {
columnName: React.ReactNode;
dataType: DataType;
className?: string;
}) => {
const resolvedDataType = resolveDataType(dataType);
const Icon = DATA_TYPE_ICON[resolvedDataType];
const color = getDataTypeColor(resolvedDataType);
return (
{columnName}
);
};