import React, { useState } from 'react'; import { Activity } from 'lucide-react'; import { IOPoint } from '../types'; import { PanelHeader } from './common/PanelHeader'; import { TechButton } from './common/TechButton'; interface IOPanelProps { ioPoints: IOPoint[]; onToggle: (id: number, type: 'input' | 'output') => void; } export const IOPanel: React.FC = ({ ioPoints, onToggle }) => { const [tab, setTab] = useState<'in' | 'out'>('in'); const points = ioPoints.filter(p => p.type === (tab === 'in' ? 'input' : 'output')); return (
setTab('in')} className="flex-1">Inputs setTab('out')} className="flex-1" variant="blue">Outputs
{points.map(p => (
onToggle(p.id, p.type)} className={` aspect-square flex flex-col items-center justify-center p-1 cursor-pointer transition-all border clip-tech ${p.state ? (p.type === 'output' ? 'bg-neon-green/10 border-neon-green text-neon-green shadow-[0_0_10px_rgba(10,255,0,0.3)]' : 'bg-neon-yellow/10 border-neon-yellow text-neon-yellow shadow-[0_0_10px_rgba(255,230,0,0.3)]') : 'bg-slate-900/50 border-slate-700 text-slate-600 hover:border-slate-500'} `} >
{p.type === 'input' ? 'I' : 'Q'}{p.id.toString().padStart(2, '0')} {p.name.replace(/(Sensor|Door|Lamp)/g, '')}
))}
); };