import React, { ReactNode } from 'react'; import { Handle, Position } from 'reactflow'; interface BaseNodeProps { title: string; children?: ReactNode; selected?: boolean; type?: 'start' | 'end' | 'default' | 'state' | 'agent' | 'condition'; icon?: ReactNode; handles?: { source?: boolean; target?: boolean; }; } export const BaseNode: React.FC = ({ title, children, selected, type = 'default', icon, handles = { source: true, target: true }, }) => { let bgColor = 'bg-white dark:bg-[#2C2C2C]'; let borderColor = 'border-gray-200 dark:border-[#3A3A3A]'; let iconBg = 'bg-gray-100 dark:bg-gray-800'; let iconColor = 'text-gray-600 dark:text-gray-400'; if (selected) { borderColor = 'border-violets-are-blue ring-2 ring-purple-300 dark:ring-violets-are-blue'; } if (type === 'start') { iconBg = 'bg-green-100 dark:bg-green-900/30'; iconColor = 'text-green-600 dark:text-green-400'; } else if (type === 'end') { iconBg = 'bg-red-100 dark:bg-red-900/30'; iconColor = 'text-red-600 dark:text-red-400'; } else if (type === 'state') { iconBg = 'bg-gray-100 dark:bg-gray-800'; iconColor = 'text-gray-600 dark:text-gray-400'; } else if (type === 'condition') { iconBg = 'bg-orange-100 dark:bg-orange-900/30'; iconColor = 'text-orange-600 dark:text-orange-400'; } return (
{handles.target && ( )}
{icon}
{title}
{children && (
{children}
)}
{handles.source && ( )}
); };