/* ===== Home screen — module entry + recent sessions ===== */ const HomeScreen = ({ onNavigate }) => { const modules = [ { id: 'cartonization', icon: 'carton', name: 'Cartonization', tagline: 'SKUs → cartons', inputs: ['SKU list', 'Excel / CSV upload', 'SKU library'], kpi: { label: 'Avg. cube fill', value: '88%' }, accent: '#E8893C', }, { id: 'palletization', icon: 'pallet', name: 'Palletization', tagline: 'Cartons / SKUs → pallets', inputs: ['Carton list', 'Loose SKUs', 'Mixed manifest'], kpi: { label: 'Avg. density gain', value: '+11%' }, accent: '#F0B830', }, { id: 'containerization', icon: 'container', name: 'Containerization', tagline: 'Pallets / cargo → container', inputs: ['Pallet list', 'Mixed manifest', 'Special cargo'], kpi: { label: 'Avg. utilisation', value: '83%' }, accent: '#C13333', featured: true, }, ]; return (
{/* greeting */}
Mojro Load Builder · v2.4

Good afternoon, Priya.

7 plans in progress across 3 facilities. 2 plans waiting on driver assignment.
{/* module cards */}
Start a module · each works independently
{modules.map(m => ( onNavigate(m.id)} /> ))}
{/* full chain promo */}
Run the full chain
Cartonization → Palletization → Containerization in one guided session. Output of each stage cascades to the next.
{/* recent sessions */}

Recent sessions

{window.Mojro.RECENT_SESSIONS.map(r => ( ))}
Name Module Utilisation Weight Status Updated
{r.name}
{r.module}
85?'var(--ok)':r.util>70?'var(--warn)':'var(--bad)' }}/>
{r.util}%
{r.weight} {r.status==='ok' && OK} {r.status==='warn' && {r.violations} warn} {r.status==='bad' && {r.violations} blocking} {r.date}
{/* What's new / footer band */}
What's new
Quota
Optimizations used this month
2,184 / 10,000
); }; const ModuleCard = ({ m, onClick }) => (
{ e.currentTarget.style.boxShadow='var(--sh-md)'; e.currentTarget.style.borderColor='var(--ink-4)'; }} onMouseLeave={e=>{ e.currentTarget.style.boxShadow='var(--sh-sm)'; e.currentTarget.style.borderColor='var(--line)'; }}> {/* corner accent */}

{m.name}

{m.featured && Most used}
{m.tagline}
Accepts
{m.inputs.map(i => {i})}
{m.kpi.label}
{m.kpi.value}
); const NewsRow = ({ tag, text }) => (
{tag} {text}
); window.HomeScreen = HomeScreen;