/* global React */ const { useState, useEffect, useRef } = React; // ============ MACHINE SVG — stylized stainless-steel pharma packaging machine ============ function MachineRender({ rotation = 0, exploded = false, showHotspots = false, mode = "showcase" }) { // EFF-PACK 100 — tube filling line. Stylized side view, slight perspective. const tilt = rotation; // -30..30 return (
{/* shadow plate */} {/* === BASE FRAME === */} {/* legs */} {/* base panel */} {/* === MAIN HOUSING === */} {/* main body */} {/* top edge highlight */} {/* viewing window (glass) */} {/* glass reflection lines */} {/* internal mechanism — visible through glass */} {/* tube carriers conveyor */} {/* tubes */} {[0,1,2,3,4,5,6,7,8].map(i => ( ))} {/* filling head */} {/* Right side — control panel / HMI */} {/* HMI screen content */} {/* control buttons */} {/* Left side — tube elevator */} {/* elevator slats */} {[0,1,2,3,4,5,6].map(i => ( ))} {/* === TOP HOUSING (hopper / feed) === */} {/* hopper */} {/* hopper detail */} {/* nitrogen pipe */} {/* === LABELS / branding strip === */} MARK MAKER · EFF-PACK 100 {/* tiny brand mark */} MM {/* Hotspots */} {showHotspots && ( <> )}
); } function Hotspot({ top, left, label, tip }) { const [open, setOpen] = useState(false); return (
setOpen(true)} onMouseLeave={() => setOpen(false)} >
{open && (
{label}
{tip}
)}
); } // ============ MACHINE LINE — for "complete line" hero ============ function ProductionLineSVG() { return ( {[0,1,2,3].map(i => ( {["GRANULATOR","DRYER","COATER","EFF-PACK"][i]} ))} {/* connectors */} {[0,1,2].map(i => ( ))} {/* shadow */} ); } // ============ TUBE ICON for stacking cards ============ function TubeIcon({ color = "#1D6FE8" }) { return ( {/* tablets visible */} {[0,1,2,3].map(i => ( ))} EFFERVESCENT ); } // ============ Logo ============ function Logo({ light = false }) { const c = light ? "white" : "#0B1117"; return (
Mark Maker Pharma Engineering
); } // Make available globally for other Babel scripts Object.assign(window, { MachineRender, Hotspot, ProductionLineSVG, TubeIcon, Logo });