// Primus IQ — minimalist sidebar (collapsible) const PIcon = ({ name, size = 18, color = 'currentColor' }) => { const s = { stroke: color, fill: 'none', strokeWidth: 1.6, strokeLinecap: 'round', strokeLinejoin: 'round' }; const w = size, h = size; switch (name) { case 'plus': return ; case 'chat': return ; case 'folder': return ; case 'book': return ; case 'search': return ; case 'apps': return ; case 'chev': return ; case 'star': return ; case 'settings': return ; case 'panel-left': return ; default: return null; } }; const PrimusMark = ({ size = 32 }) => ( P ); const STARRED_CHATS = [ { id: 's1', title: 'Firm-wide GTM strategy 2026', when: '3d' }, { id: 's2', title: 'KSA giga-project tracker', when: '1w' }, ]; const RECENT_CHATS = [ { id: 'c1', title: 'GCC fintech IPO scan · 2021–2026', when: '2h' }, { id: 'c2', title: 'TCFD gap analysis · portfolio co.', when: '1d' }, { id: 'c3', title: 'Renewables capex benchmarking', when: '2d' }, { id: 'c4', title: 'Acme reorg · operating model', when: '4d' }, { id: 'c5', title: 'Public Policy whitepaper outline', when: '1w' }, ]; // ────────────────────────────────────────────────────────────────────────────── // Item row // ────────────────────────────────────────────────────────────────────────────── const NavItem = ({ icon, label, active, onClick, collapsed }) => { const inner = ( ); return inner; }; const sidebarSectionLabel = { fontSize: 10.5, fontWeight: 700, color: 'var(--mute)', letterSpacing: '0.08em', textTransform: 'uppercase', padding: '0 12px 8px', marginTop: 22, }; const SidebarChatRow = ({ c, starred }) => ( ); // ────────────────────────────────────────────────────────────────────────────── // Sidebar // ────────────────────────────────────────────────────────────────────────────── const PrimusSidebar = ({ active, setRoute, collapsed, setCollapsed, currentUser, onLogout }) => { const [settingsOpen, setSettingsOpen] = React.useState(false); const displayName = currentUser?.full_name || 'You'; const initials = displayName.split(' ').filter(Boolean).map(w => w[0].toUpperCase()).slice(0, 2).join(''); const designation = currentUser?.designation ? currentUser.designation.split(' ').map(w => w[0].toUpperCase() + w.slice(1)).join(' ') : 'Primus Partners'; const w = collapsed ? 68 : 264; return ( ); }; const settingItemStyle = { width: '100%', padding: '9px 14px', background: 'transparent', border: 'none', cursor: 'pointer', textAlign: 'left', fontSize: 12, fontFamily: 'inherit', color: 'var(--ink)', transition: 'background 0.12s', display: 'block', }; Object.assign(window, { PrimusSidebar, PIcon, NavItem, PrimusMark, SidebarChatRow, RECENT_CHATS, STARRED_CHATS, settingItemStyle });