// Primus IQ — Shared UI components and styles const Field = ({ label, hint, children }) => (
{hint && {hint}}
{children}
); const fieldInput = { width: '100%', height: 40, padding: '0 14px', borderRadius: 10, border: '1px solid var(--line-2)', background: 'white', fontSize: 14, fontFamily: 'inherit', color: 'var(--ink)', }; const PRACTICES = [ 'Public Policy Realization', 'Sector Potential Realization', 'Impact Realization', 'Economic Potential Realization', 'Data & Digital Strategy', 'Transaction Realization', ]; const extColors = { pdf: '#B23A48', xlsx: '#2E6F40', pptx: '#C76A23', docx: '#2A5A9E', png: '#7A4FB3', jpg: '#7A4FB3', mp4: '#1F4A6B', txt: '#666666', }; const CONF_LABELS = { public: 'Public', internal: 'Internal', client: 'Confidential', strict: 'Restricted Visibility', }; const ModalShell = ({ onClose, width = 520, title, subtitle, children, padded = true, headerBorder = true }) => (
e.stopPropagation()} style={{ width, maxHeight: '90%', overflow: 'auto', background: 'var(--bg-card)', borderRadius: 16, boxShadow: '0 30px 80px rgba(26,22,20,0.25), 0 0 0 1px var(--line)', animation: 'rise 0.22s ease-out', display: 'flex', flexDirection: 'column', }}>

{title}

{subtitle &&
{subtitle}
}
{padded ? children : children}
); const contentArea = { flex: 1, height: '100%', background: 'var(--bg)', position: 'relative', overflow: 'auto', }; const fileMenuItemStyle = { width: '100%', padding: '9px 14px', background: 'transparent', border: 'none', cursor: 'pointer', textAlign: 'left', fontSize: 13, fontFamily: 'inherit', color: 'var(--ink)', display: 'flex', alignItems: 'center', gap: 8, transition: 'background 0.12s', }; const FileBadge = ({ ext, size = 'sm' }) => { const dims = size === 'lg' ? { w: 48, h: 56, fs: 11 } : { w: 32, h: 38, fs: 9 }; return (
{(ext || 'doc').toUpperCase()}
); }; Object.assign(window, { Field, fieldInput, ModalShell, contentArea, PRACTICES, extColors, FileBadge, CONF_LABELS, fileMenuItemStyle, });