import { useState, useEffect, useRef } from ‘react’;
import { ArrowRight, ArrowUpRight, Plus, Minus, Menu, X, MapPin, ChevronRight, ChevronDown, Globe, Zap, Shield, Wrench, Activity, Layers, Cpu, Battery, Sun, Building2, Factory } from ‘lucide-react’;
// ============ DESIGN TOKENS ============
const BRAND = ‘#1E55C8’; // Canadian Solar blue, slightly tuned for dark UI
const BRAND_DEEP = ‘#0A2F7A’;
// ============ HELPERS ============
const useReveal = () => {
const ref = useRef(null);
const [shown, setShown] = useState(false);
useEffect(() => {
if (!ref.current) return;
const o = new IntersectionObserver(([e]) => {
if (e.isIntersecting) { setShown(true); o.disconnect(); }
}, { threshold: 0.15 });
o.observe(ref.current);
return () => o.disconnect();
}, []);
return [ref, shown];
};
const Reveal = ({ children, delay = 0, className = ” }) => {
const [ref, shown] = useReveal();
return (
);
};
const Counter = ({ to, suffix = ”, prefix = ”, duration = 1800 }) => {
const ref = useRef(null);
const [val, setVal] = useState(0);
const [started, setStarted] = useState(false);
useEffect(() => {
if (!ref.current) return;
const o = new IntersectionObserver(([e]) => {
if (e.isIntersecting && !started) {
setStarted(true);
const start = performance.now();
const tick = (now) => {
const p = Math.min((now – start) / duration, 1);
const eased = 1 – Math.pow(1 – p, 3);
setVal(to * eased);
if (p < 1) requestAnimationFrame(tick); else setVal(to); }; requestAnimationFrame(tick); } }, { threshold: 0.4 }); o.observe(ref.current); return () => o.disconnect();
}, [to, duration, started]);
const display = Number.isInteger(to) ? Math.round(val).toLocaleString() : val.toFixed(1);
return {prefix}{display}{suffix};
};
// ============ ICON BESS ARRAY ILLUSTRATION ============
// Renders a perspective-style array of BESS containers
const BessArray = ({ tone = ‘light’, rows = 4, cols = 6 }) => {
return (
{/* horizon line */}
{/* container rows in fake perspective */}
{Array.from({ length: rows }).map((_, r) => {
const y = 250 + r * 50;
const scale = 0.55 + r * 0.18;
const w = 130 * scale;
const h = 38 * scale;
const gap = 10 * scale;
const totalW = cols * (w + gap) – gap;
const startX = (1200 – totalW) / 2 – r * 10;
return Array.from({ length: cols + r }).map((_, c) => {
const x = startX + c * (w + gap) – r * 30;
if (x < -w || x > 1200) return null;
return (
{/* roof */}
{/* body */}
{/* door panels */}
{/* led strip */}
);
});
})}
);
};
// Single container hero render
const SoloContainer = ({ glow = true }) => (
{glow && }
{/* shadow */}
{/* container body */}
{/* top */}
{/* front face */}
{/* side face (right) */}
{/* door panels */}
{Array.from({ length: 8 }).map((_, i) => (
))}
{/* horizontal seams */}
{/* LED accent */}
{/* corner castings */}
{/* logo placeholder */}
);
// ============ NAV ============
const Nav = ({ setPage, currentPage }) => {
const [scrolled, setScrolled] = useState(false);
const [open, setOpen] = useState(false);
const [submenu, setSubmenu] = useState(null);
useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 20);
window.addEventListener(‘scroll’, onScroll);
return () => window.removeEventListener(‘scroll’, onScroll);
}, []);
const items = [
{ label: ‘Products’, sub: [‘SolBank 3.0’, ‘FlexBank’, ‘eBESS’, ‘MV Skid’, ‘EQ-S’], page: ‘product’ },
{ label: ‘Solutions’, sub: [‘Utility-Scale’, ‘Solar + Storage’, ‘C&I’], page: null },
{ label: ‘Projects’, sub: [‘All Projects’, ‘Featured Case’, ‘By Region’], page: ‘project’ },
{ label: ‘Services’, sub: [‘Design’, ‘Build’, ‘Commission’, ‘Operate’], page: null },
{ label: ‘Company’, sub: [‘About’, ‘ESG’, ‘Insights’, ‘Contact’], page: null },
];
return (
CSE Storage
{open && (
))}
)}
);
};
// ============ HOME PAGE ============
const HomePage = ({ setPage }) => {
return (
Storage
for the
Power Grid.
{/* TRUST STRIP */}
{ v: 12, suf: ‘ GWh’, label: ‘Total Deployed’ },
{ v: 500, suf: ‘+’, label: ‘Projects Delivered’ },
{ v: 30, suf: ‘+’, label: ‘Countries’ },
{ v: 2001, suf: ”, label: ‘Founded’, noFmt: true },
].map((s, i) => (
))}
{/* PRODUCT LINEUP */}
A complete portfolio.
Engineered as one.
{ name: ‘SolBank 3.0’, tag: ‘DC Block’, spec: ‘5.0 MWh / 20ft’, desc: ‘Integrated DC battery enclosure with industry-leading energy density.’, flagship: true },
{ name: ‘FlexBank’, tag: ‘AC Block’, spec: ‘7.7 MWh / Outdoor’, desc: ‘Fully integrated AC system with PCS, transformer and cooling.’ },
{ name: ‘eBESS’, tag: ‘Modular’, spec: ‘4.4 MWh / Containerized’, desc: ‘Proven workhorse for utility deployments worldwide.’ },
].map((p, i) => (
{p.flagship && (
)}
{p.name}
{p.desc}
))}
{/* SOLUTIONS / APPLICATIONS */}
Built for every
grid scenario.
{ icon: Zap, title: ‘Utility-Scale’, sub: ‘Frequency regulation, capacity firming, T&D deferral’, spec: ‘100 MW – 2 GWh+’ },
{ icon: Sun, title: ‘Solar + Storage’, sub: ‘Co-located hybrid plants with shared interconnection’, spec: ‘DC / AC coupled’ },
{ icon: Building2, title: ‘Commercial & Industrial’, sub: ‘Peak shaving, demand charge management, backup power’, spec: ‘1 – 50 MWh’ },
].map((s, i) => (
{s.title}
{s.sub}
))}
{/* FEATURED PROJECT */}
Papago
Storage Facility.
{ v: ‘200 MW’, l: ‘Power’ },
{ v: ‘800 MWh’, l: ‘Capacity’ },
{ v: ‘Arizona, USA’, l: ‘Location’ },
{ v: ‘In operation’, l: ‘Status’ },
].map((s) => (
))}
{/* MANUFACTURING & SUPPLY CHAIN */}
Vertically
integrated.
From cell to system.
Backed by Canadian Solar’s two decades of vertical integration — from in-house cell manufacturing through system integration to long-term lifecycle support.
{ v: ’50 GWh’, l: ‘Annual cell capacity’ },
{ v: ’20 GWh’, l: ‘Annual BESS capacity’ },
{ v: ‘6’, l: ‘Manufacturing sites’ },
{ v: ’15K+’, l: ‘Global team’ },
].map((s, i) => (
))}
{/* LIFECYCLE SERVICES */}
25 years
of accountability.
{ n: ’01’, t: ‘Design’, d: ‘Site engineering, system sizing, grid studies’, icon: Layers },
{ n: ’02’, t: ‘Build’, d: ‘EPC delivery with proven supply chain’, icon: Factory },
{ n: ’03’, t: ‘Commission’, d: ‘Full integration testing and grid handover’, icon: Activity },
{ n: ’04’, t: ‘Operate’, d: ’25-year O&M with 24/7 monitoring’, icon: Wrench },
].map((s, i) => (
{s.d}
))}
{/* LEAD CAPTURE / CTA */}
Talk to
an engineer.
Discuss your project requirements with our system experts.
);
};
// ============ PRODUCT PAGE (SolBank) ============
const ProductPage = ({ setPage }) => {
const [openSpec, setOpenSpec] = useState(‘battery’);
return (
SolBank
3.0
{/* KEY SPECS */}
{ v: ‘5.0’, suf: ‘ MWh’, l: ‘Energy capacity’ },
{ v: ’20’, suf: ‘ ft’, l: ‘Form factor’ },
{ v: ‘314’, suf: ‘ Ah’, l: ‘Cell capacity’ },
{ v: ’15’, suf: ‘+ yr’, l: ‘Design life’ },
].map((s, i) => (
))}
{/* HEADLINE STORY */}
The most energy-dense
DC block on the market.
{/* FEATURE SECTIONS – alternating */}
{ tag: ’01 / Energy’, title: ‘Higher density, smaller footprint.’, body: ‘Industry-leading 5.0 MWh in a standard 20ft enclosure cuts site footprint by up to 35% versus previous generations.’, stat: ‘5.0 MWh’, sl: ‘in a 20ft block’ },
{ tag: ’02 / Safety’, title: ‘Multi-layer safety architecture.’, body: ‘Cell-level fusing, pack-level monitoring, and proprietary thermal runaway containment validated to UL 9540A.’, stat: ‘UL 9540A’, sl: ‘compliance’ },
{ tag: ’03 / Lifetime’, title: ‘Built for 25-year operation.’, body: ‘LFP chemistry, advanced thermal management and conservative duty cycle deliver predictable degradation across the full warranty.’, stat: ‘8,000’, sl: ‘cycle warranty’ },
].map((f, idx) => (
{f.title}
{f.body}
))}
{/* TECHNICAL SPECS – expandable */}
Technical detail.
{ id: ‘battery’, t: ‘Battery System’, rows: [
[‘Chemistry’, ‘LFP (Lithium Iron Phosphate)’],
[‘Cell capacity’, ‘314 Ah’],
[‘Nominal energy’, ‘5.016 MWh’],
[‘Nominal voltage’, ‘1,500 V DC’],
[‘Cycle life @ 80% DoD’, ‘8,000 cycles’],
]},
{ id: ‘thermal’, t: ‘Thermal Management’, rows: [
[‘Cooling type’, ‘Liquid cooling’],
[‘Operating temp.’, ‘−30°C to 50°C’],
[‘Humidity’, ‘0–95% RH non-condensing’],
]},
{ id: ‘safety’, t: ‘Safety & Certification’, rows: [
[‘Standards’, ‘UL 9540, UL 9540A, IEC 62619’],
[‘Fire suppression’, ‘Aerosol + Active venting’],
[‘Cell-level monitoring’, ‘Yes’],
]},
{ id: ‘mech’, t: ‘Mechanical’, rows: [
[‘Enclosure’, ‘IP55 / 20ft ISO’],
[‘Weight’, ‘~38 t’],
[‘Dimensions’, ‘6,058 × 2,438 × 2,896 mm’],
]},
].map((g) => (
{r[1]}
))}
))}
{/* APPLICATIONS */}
Engineered for
utility deployment.
{ i: Zap, t: ‘Frequency Regulation’, d: ‘Fast-response active power control for grid services’ },
{ i: Shield, t: ‘Capacity Firming’, d: ‘Smoothing renewable output for guaranteed delivery’ },
{ i: Cpu, t: ‘T&D Deferral’, d: ‘Postpone grid investment via targeted dispatch’ },
].map((a, i) => (
{a.d}
))}
{/* CTA */}
Specify SolBank
for your next project.
);
};
// ============ PROJECT PAGE ============
const ProjectPage = ({ setPage }) => {
return (
2024
Utility-Scale
Papago
Storage Facility.
{/* PROJECT STATS */}
{ v: 200, suf: ‘ MW’, l: ‘Power rating’ },
{ v: 800, suf: ‘ MWh’, l: ‘Storage capacity’ },
{ v: 160, suf: ”, l: ‘SolBank 3.0 units’ },
{ v: 25, suf: ‘ yr’, l: ‘O&M contract’ },
].map((s, i) => (
))}
{/* PROJECT BODY */}
Stabilizing the
Arizona grid.
Papago Storage Facility is a 200 MW / 800 MWh standalone battery storage system providing four-hour discharge to the Arizona Public Service grid. Commissioned in 2024, it was designed and delivered by CSE Storage on a turnkey EPC basis.
The facility shifts midday solar generation to evening peak and delivers spinning reserve services across the broader WECC interconnection. It is one of the largest single-site BESS installations operating in the U.S. Southwest.
Site engineering, supply, installation, commissioning, and 25-year O&M are delivered under a single CSE Storage contract — minimizing interface risk for the offtaker.
{/* COMPONENTS USED */}
Engineered as
a single system.
{ t: ‘SolBank 3.0’, s: ‘160 units · 5.0 MWh’, d: ‘DC blocks with liquid cooling and integrated BMS’ },
{ t: ‘MV Skid’, s: ’40 stations · 5 MW’, d: ‘Power conversion + medium-voltage transformer skids’ },
{ t: ‘EQ-S Controller’, s: ‘Single SCADA layer’, d: ‘Plant-level control, dispatch and grid services’ },
].map((c, i) => (
{c.t}
{c.d}
))}
{/* PERFORMANCE HIGHLIGHTS */}
Operating outcomes.
{ v: ‘99.7%’, l: ‘System availability’ },
{ v: ‘<2 min’, l: ‘Response time’ }, { v: ‘0’, l: ‘Safety incidents’ }, ].map((m, i) => (
))}
{/* RELATED / CTA */}
See more
CSE Storage projects.
);
};
// ============ FOOTER ============
const Footer = ({ setPage }) => {
const cols = [
{ t: ‘Products’, items: [‘SolBank 3.0’, ‘FlexBank’, ‘eBESS’, ‘MV Skid’, ‘EQ-S’] },
{ t: ‘Solutions’, items: [‘Utility-Scale’, ‘Solar + Storage’, ‘Commercial & Industrial’] },
{ t: ‘Company’, items: [‘About’, ‘ESG & Responsibility’, ‘Heritage’, ‘Careers’] },
{ t: ‘Resources’, items: [‘Insights’, ‘Press’, ‘Events’, ‘Datasheets’] },
];
return (
);
};
// ============ APP ============
export default function App() {
const [page, setPage] = useState(‘home’);
useEffect(() => { window.scrollTo({ top: 0, behavior: ‘instant’ }); }, [page]);
return (
{page === ‘home’ && }
{page === ‘product’ && }
{page === ‘project’ && }
);
}



