// Primus IQ — Applications Screen
const APPS = [
{ id: 'prima', name: 'PRIMA', blurb: 'Deep market & literature research engine — searches projects, library, and the firm knowledge graph.', accent: '#7A1C1C' },
{ id: 'talent', name: 'Talent Mapper', blurb: 'Find people across the organisation, explore their project history, access CVs, and build RFP-ready profiles for any engagement.', accent: '#876200' },
{ id: 'carbon', name: 'CarbonIQ', blurb: 'Digital MRV platform measuring forest disturbance, land-use transitions, Above-Ground Biomass (AGB), and Soil Organic Carbon (SOC) using advanced geospatial analytics — enabling transparent, scalable carbon project verification.', accent: '#2E6F40' },
];
// CarbonIQ blurb is long — tooltip shown on the ⓘ button instead of truncating the card.
const LONG_BLURB = {
carbon: 'CarbonIQ is a Digital Monitoring, Reporting, and Verification (DMRV) platform that measures and tracks forest disturbance, land-use transitions, Above-Ground Biomass (AGB), and Soil Organic Carbon (SOC) using advanced geospatial analytics. It streamlines carbon project monitoring and verification, enabling transparent, scalable, and data-driven climate impact assessment.',
};
const AppCard = ({ app, maintenance, setRoute }) => {
const [tip, setTip] = React.useState(false);
return (
{ if (!maintenance) setRoute(`app-${app.id}`); }} style={{
padding: 22, borderRadius: 16, position: 'relative',
background: 'var(--bg-card)', border: '1px solid var(--line)',
cursor: maintenance ? 'default' : 'pointer', transition: 'all 0.18s',
opacity: maintenance ? 0.6 : 1,
display: 'flex', flexDirection: 'column', gap: 16,
}}
onMouseEnter={e => { if (maintenance) return; e.currentTarget.style.boxShadow = '0 10px 24px rgba(60,30,20,0.08)'; e.currentTarget.style.borderColor = app.accent + '30'; e.currentTarget.style.transform = 'translateY(-2px)'; }}
onMouseLeave={e => { if (maintenance) return; e.currentTarget.style.boxShadow = 'none'; e.currentTarget.style.borderColor = 'var(--line)'; e.currentTarget.style.transform = 'translateY(0)'; }}
>
{app.name}
{LONG_BLURB[app.id] && (
e.stopPropagation()}>
{tip && (
{LONG_BLURB[app.id]}
)}
)}
{app.blurb}
);
};
const ScreenApplications = ({ setRoute, maintenance = false }) => (
Applications
{maintenance
? 'Applications are coming soon.'
: "Domain engines that chat with your projects, the library, and the firm's knowledge graph."}
);
const AppIcon = ({ id, color }) => (
);
const ScreenAppDetail = ({ appId, setRoute }) => {
const app = APPS.find(a => a.id === appId) || APPS[0];
return (
/
{app.name}
Recent {app.name} chats
{[
{ t: 'GCC fintech IPO scan · 2021–2026', when: '2h ago' },
{ t: 'Renewables capex benchmarking', when: '1d ago' },
{ t: 'TCFD gap analysis · portfolio co.', when: '4d ago' },
].map((c, i, arr) => (
e.currentTarget.style.background = 'var(--bg-soft)'}
onMouseLeave={e => e.currentTarget.style.background = 'transparent'}
>
{c.t}
{c.when}
))}
);
};
Object.assign(window, {
APPS,
ScreenApplications,
AppIcon,
ScreenAppDetail,
});