// fnb-solutions-cream.jsx // Cream variant of the "Solutions for this sector" section. // 5 rows · Paper Cream surface · sits between a Wise Blue section (above) // and a Paper White section (below). // ============================================================ // FnbSolutionsCream — 5-row interactive solutions table on cream. // 01 Energy Audits · 02 LED · 03 Solar PV · 04 Battery · 05 Electrical Infra // ============================================================ const FnbSolutionsCream = () => { const rows = [ { idx: '01', icon: 'clipboard-list', name: 'Energy Audits', zone: 'Whole facility', tag: "Identify what's driving consumption.", why: 'Facility energy audits establish where electricity is being consumed, what systems drive demand charges, and which upgrades create the strongest operational and financial impact.', href: '/solutions/energy-audits/' }, { idx: '02', icon: 'lightbulb', name: 'LED Lighting', zone: 'Production · cold',tag: 'Reduce baseline demand.', why: 'LED retrofits reduce lighting load immediately while improving illumination levels in production, warehousing, and refrigerated environments.', href: '/solutions/led-lighting/' }, { idx: '03', icon: 'sun', name: 'Solar PV', zone: 'Rooftop', tag: 'Offset daytime production demand.', why: 'Large rooftops and continuous daytime operation make many food facilities strong candidates for rooftop solar generation.', href: '/solutions/commercial-solar/' }, { idx: '04', icon: 'battery-charging', name: 'Battery Storage', zone: 'Mechanical pad', tag: 'Manage refrigeration-driven demand peaks.', why: 'Battery storage helps reduce demand charges by supplementing refrigeration and processing loads during peak utility intervals.', href: '/solutions/battery-storage/' }, // GI Link Audit (Fix 4): Electrical Infrastructure has no dedicated service page; // routes to /about/contact/ for tailored scoping (consistent with fnb-v2.jsx). { idx: '05', icon: 'plug-zap', name: 'Electrical Infrastructure', zone: 'Service · distribution', tag: 'Build around future capacity.', why: 'Service upgrades, distribution planning, and electrical coordination ensure the facility can support future expansion, storage, and electrification.', href: '/about/contact/' }, ]; const [active, setActive] = React.useState(0); return (
{/* Hairline ticks at the top — visual handshake with the dark blue section above */}
); }; // ============================================================ // FnbFacilitySchematicCream — schematic redrawn for cream surface. // 5 zones now: 01 Audit ring · 02 LED · 03 Solar · 04 BESS · 05 Electrical room // ============================================================ const FnbFacilitySchematicCream = ({ activeIndex }) => { const W = 540; const H = 360; // On soft-green surface: amber stays for highlight, all other strokes/text become white-on-green. const amber = 'rgba(233,199,134,1)'; /* --gi-amber-soft for legibility on dark */ const amberFill= 'rgba(233,199,134,0.18)'; const ink = 'rgba(255,255,255,0.55)'; const inkDim = 'rgba(255,255,255,0.32)'; const inkFaint = 'rgba(255,255,255,0.18)'; const inkText = 'rgba(255,255,255,0.62)'; const zones = [ // 01 Energy Audits — whole facility ring { id: 0, label: '01', cx: 270, cy: 200, hl: }, // 02 LED Lighting — production floor ceiling band { id: 1, label: '02', cx: 250, cy: 134, hl: }, // 03 Solar PV — rooftop { id: 2, label: '03', cx: 270, cy: 96, hl: }, // 04 Battery — BESS pad { id: 3, label: '04', cx: 502, cy: 244, hl: }, // 05 Electrical Infrastructure — service entrance / switchgear { id: 4, label: '05', cx: 110, cy: 246, hl: }, ]; return (
{/* Ground line + horizon */} {/* Building outline */} {/* COLD STORAGE BLOCK — permanent feature */} COLD STORAGE {[350, 370, 390, 410, 430].map(x => ( ))} {/* Roof solar panels — Solar PV zone (03) Drawn as thin side-profile cross-sections sitting on small standoff legs above the pitched roof. Each panel is a thin rectangle (the panel's edge as seen from the side), tilted parallel to the roof slope, with two short legs to the deck. */} {(() => { const panelLen = 26; // panel length seen edge-on const panelThick = 2; // panel thickness (very thin) const legH = 5; // standoff height above roof const slope = 40 / 190; // rise/run from eave to peak const angleDeg = Math.atan(slope) * 180 / Math.PI; const positions = []; for (let i = 0; i < 5; i++) { const cx = 110 + i * 30; const roofY = 118 - (cx - 80) * slope; positions.push({ cx, roofY, angle: -angleDeg, key: `L${i}` }); } for (let i = 0; i < 5; i++) { const cx = 310 + i * 30; const roofY = 78 + (cx - 270) * slope; positions.push({ cx, roofY, angle: angleDeg, key: `R${i}` }); } const panelStroke = activeIndex === 2 ? amber : ink; const panelFill = activeIndex === 2 ? amber : ink; const legStroke = activeIndex === 2 ? amber : inkDim; return positions.map(({ cx, roofY, angle, key }) => { const x0 = cx - panelLen / 2; const x1 = cx + panelLen / 2; const yPanelTop = roofY - legH - panelThick; const yLegTop = roofY - legH; const legInset = 4; return ( {/* Two standoff legs */} {/* Panel — thin side-profile bar */} ); }); })()} {/* Ceiling LEDs — LED zone (02) */} {[120, 168, 216, 264, 312].map(x => ( {activeIndex === 1 && ( )} ))} {/* Production floor — packaging line indicators */} {[170, 220, 270, 320].map(x => ( ))} {/* Outdoor BESS pad — Battery zone (04) */} {[0,1,2,3,4].map(i => ( ))} {[0,1,2,3,4].map(i => ( ))} BESS {/* Electrical service room — Electrical Infrastructure (05) */} {/* service entrance box on left exterior */} {/* meter rectangles */} {/* switchgear breakers row */} {[0,1,2,3].map(i => ( ))} {/* mast / utility pole connection (drop from above the line) */} SERVICE {/* Whole-facility audit ring — Energy Audits (01) */} {zones[activeIndex].hl} {zones.map((z, i) => { const isActive = i === activeIndex; return ( {z.label} ); })}
); }; Object.assign(window, { FnbSolutionsCream, FnbFacilitySchematicCream });