import React from 'react'; import { Trash2, PlusCircle, Power } from 'lucide-react'; import { IOLogicRule, LogicCondition, LogicAction } from '../types'; interface LadderEditorProps { logicRules: IOLogicRule[]; inputNames: string[]; outputNames: string[]; currentInputs: boolean[]; currentOutputs: boolean[]; onAddRule: (rule: IOLogicRule) => void; onDeleteRule: (id: string) => void; onUpdateRule: (id: string, updates: Partial) => void; } export const LadderEditor: React.FC = ({ logicRules, inputNames, outputNames, currentInputs, currentOutputs, onAddRule, onDeleteRule, onUpdateRule }) => { return (
{/* Background Grid Pattern */}
{/* Toolbar */}

Main Controller (Ladder Logic)

{/* Programming Workspace */}
{/* Left Bus Bar (Hot) */}
{/* Right Bus Bar (Neutral) */}
{logicRules.map((rule, index) => { const inputActive = currentInputs[rule.inputPort]; const outputActive = currentOutputs[rule.outputPort]; return (
{/* Rung Number */}
{(index + 1).toString().padStart(3, '0')}
{/* Delete Button */} {/* The Rung Wire */}
{/* Energized segments */} {inputActive &&
} {outputActive &&
} {/* Contact (Input) */}
{inputNames[rule.inputPort] || `Input ${rule.inputPort}`}
{/* Terminal Brackets */}
{/* Selector Area */}
{/* Coil (Output) */}
{outputNames[rule.outputPort] || `Output ${rule.outputPort}`}
{/* Coil Brackets (Parens style) */}
); })} {/* End of Program */}
End of Program
); };