import type { Category } from '../../domain/types'; import { ROUTE_COLORS, TWIN_LAYOUT } from './itemMotion'; import RollCageMesh from './RollCageMesh'; interface Props { activeCategory?: Category; activeRoute?: Category; } function ZoneBox({ position, size, color, active, }: { position: [number, number, number]; size: [number, number, number]; color: string; active: boolean; }) { return ( {/* Highlight ring for active zone */} {active && ( )} ); } /** Roll-cage for C/D zones — shared instanced mesh (exterior 1200×800×800 incl. wheels), open top */ function RollCage({ position, size, color, active, }: { position: [number, number, number]; size: [number, number, number]; color: string; active: boolean; }) { return ( {/* Floor highlight for active cage */} {active && ( )} ); } export default function SortingZones3D({ activeCategory, activeRoute }: Props) { const active = activeRoute ?? activeCategory; const cage = TWIN_LAYOUT.rollCageSize; const beltY = TWIN_LAYOUT.beltY; return ( {/* Zone A feed — pad under belt (aligned to shared belt height) */} {/* Zone B main sorter — green, straight */} {/* Roll-cage C 1200×800×800 mm — orange, ground-origin shared mesh */} {/* Roll-cage D 1200×800×800 mm — purple, ground-origin shared mesh */} ); }