/* ===== Palletization module ===== */
const PalletizationScreen = ({ onNavigate }) => {
const [pallet, setPallet] = React.useState(window.Mojro.PALLETS[0]);
const [pattern, setPattern] = React.useState('pinwheel');
const cartons = [
{ id:'c1', sku:'BX-LRG-01', desc:'Apparel · large', qty:14, L:600, W:400, H:400, weight:22, color:'#E8893C' },
{ id:'c2', sku:'BX-MED-04', desc:'Electronics · medium', qty:22, L:500, W:360, H:280, weight:14, color:'#2E5FA8' },
{ id:'c3', sku:'BX-SML-02', desc:'Books · small', qty: 8, L:300, W:240, H:180, weight:6, color:'#1F8A5B' },
];
const PATTERNS = [
{ id:'block', name:'Block', gain:0, diag:'block' },
{ id:'pinwheel', name:'Pinwheel', gain:12, diag:'pinwheel' },
{ id:'turned', name:'Turned', gain:6, diag:'turned' },
{ id:'mixed', name:'Mixed', gain:9, diag:'mixed' },
];
return (
{/* Header */}
Palletization
Pallet build · {pallet.name}
{cartons.length} carton SKUs · 44 pcs
All stack rules satisfied
{/* LEFT — inputs */}
Pallet spec
{window.Mojro.PALLETS.map(p => (
))}
Stacking pattern
{PATTERNS.map(p => (
setPattern(p.id)} style={{
border:'1px solid '+(p.id===pattern?'var(--mojro-red)':'var(--line)'),
borderRadius:6, padding:'8px',
background: p.id===pattern ? 'rgba(193,51,51,0.04)' : '#fff', cursor:'pointer',
}}>
{p.name}
0?'var(--ok)':'var(--ink-3)' }}>
{p.gain>0 ? '+'+p.gain+'%' : 'baseline'}
))}
Cartons / SKUs in build
{cartons.map(c => (
{c.sku}
{c.desc} · {c.L}×{c.W}×{c.H}mm
×{c.qty}
))}
{/* CENTER — pallet view */}
{['3d','top','side'].map(v => {v.toUpperCase()})}
Layer · 3 of 5
1.32m / 1.80m max
{/* RIGHT — pallet summary + loading guide preview */}
Layer-by-layer build
{[
{ layer:1, item:'BX-LRG-01 × 4 + BX-MED-04 × 2', h:'0.40m', tone:'ok' },
{ layer:2, item:'BX-LRG-01 × 4 + BX-MED-04 × 2', h:'0.40m', tone:'ok' },
{ layer:3, item:'BX-LRG-01 × 4 + BX-MED-04 × 4', h:'0.28m', tone:'ok' },
{ layer:4, item:'BX-MED-04 × 8', h:'0.28m', tone:'ok' },
{ layer:5, item:'BX-SML-02 × 8', h:'0.18m', tone:'warn' },
].map(l => (
L{l.layer}
{l.item}
{l.h}
))}
);
};
const SectionTitle = ({ children }) => (
{children}
);
const Field = ({ label, value }) => (
{label}
{value}
);
const FormGrid = ({ children }) => (
{children}
);
window.PalletizationScreen = PalletizationScreen;