// src/components/SenateLayout.tsx import React from 'react'; // Las interfaces son las mismas que para el otro layout interface SeatFillData { color: string; isEnJuego: boolean; } interface SenateLayoutProps { seatData: SeatFillData[]; size?: number; } export const SenateLayout: React.FC = ({ seatData, size = 400, }) => { const uniqueColors = [...new Set(seatData.map(d => d.color).filter(Boolean))]; // Plantilla estática de los 46 asientos del Senado, ordenados para el llenado por columnas. const seatElements = [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]; const renderedElements = seatElements.map((child, index) => { if (index >= seatData.length) { return React.cloneElement(child, { fill: '#E0E0E0', stroke: '#ffffff', strokeWidth: 1.5, }); } const seat = seatData[index]; const patternId = `stripes-${seat.color.replace('#', '')}`; return React.cloneElement(child, { fill: seat.isEnJuego ? `url(#${patternId})` : seat.color, stroke: '#ffffff', strokeWidth: 1.5, }); }); return ( {uniqueColors.map(color => { const patternId = `stripes-${color.replace('#', '')}`; return ( ); })} {renderedElements} ); };