import { memo, ReactNode } from 'react'; import { Handle, Position, NodeProps } from 'reactflow'; import { BaseNodeData } from '../../../lib/canvas/schema'; interface BaseNodeProps extends NodeProps { icon: ReactNode; color: string; children?: ReactNode; inputs?: number; outputs?: number; } function BaseNodeComponent({ data, selected, icon, color, children, inputs = 1, outputs = 1, }: BaseNodeProps) { return (
{/* Input handles */} {inputs > 0 && ( )} {/* Header */}
{icon} {data.label} {!data.configured && ( ! )}
{/* Content */} {children &&
{children}
} {/* Errors */} {data.errors?.length ? (
{data.errors[0]}
) : null} {/* Output handles */} {outputs > 0 && ( )}
); } export const BaseNode = memo(BaseNodeComponent);