// ProductCard — used by Chemicals and Commodities pages. (function () { const { useState } = React; const { Reveal } = window.GR; function ProductCard({ p, i = 0, onQuote, kind = 'chemical' }) { const isCommodity = kind === 'commodity'; const [tilt, setTilt] = useState({ x: 0, y: 0 }); const onMove = (e) => { const r = e.currentTarget.getBoundingClientRect(); const dx = (e.clientX - r.left) / r.width - 0.5; const dy = (e.clientY - r.top) / r.height - 0.5; setTilt({ x: -dy * 2.2, y: dx * 2.2 }); }; return (
setTilt({ x: 0, y: 0 })} onMouseEnter={(e) => { e.currentTarget.style.boxShadow = '0 22px 50px -22px rgba(30,27,75,0.32)'; e.currentTarget.style.borderColor = 'var(--color-green)'; }} onMouseOut={(e) => { e.currentTarget.style.boxShadow = 'none'; e.currentTarget.style.borderColor = 'rgba(30,27,75,0.12)'; }} style={{ background: '#fff', border: '1px solid rgba(30,27,75,0.12)', padding: 28, height: '100%', display: 'flex', flexDirection: 'column', gap: 12, transform: `perspective(1000px) rotateX(${tilt.x}deg) rotateY(${tilt.y}deg)`, transition: 'transform 0.18s ease-out, box-shadow 0.32s var(--ease-out), border-color 0.32s var(--ease-out)', }} >
{isCommodity ? 'Commodity' : 'Industrial Chemical'} {p.category}

{p.name}

{p.desc}

{p.grades && (
Grades {p.grades}
)} {p.packaging && (
Packaging {p.packaging}
)}
Applications
{p.apps.map((a) => ( {a} ))}
); } window.GR = Object.assign(window.GR || {}, { ProductCard }); })();