/* Products index + Category detail */ function ProductsPage({ navigate, onQuote }) { const { CATEGORIES } = window.MOBICO_DATA; const [filter, setFilter] = useState("all"); const filtered = filter==="all" ? CATEGORIES : CATEGORIES.filter(c=>{ if(filter==="furniture") return c.group==="Office furniture"; if(filter==="interior") return c.group==="Interior systems"; return true; }); return (
{[ ["all", "All · 15"], ["furniture", "Office furniture · 10"], ["interior", "Interior systems · 5"], ].map(([k,l])=>( ))}
SHOWING {filtered.length} OF {CATEGORIES.length}
{filtered.map((c, i)=>( navigate({page:"category", id:c.id})} /> ))}
navigate({page:"showroom"})} />
); } function ProductCard({ c, idx, onClick }) { return (
{c.alt}e.currentTarget.style.transform="scale(1.05)"} onMouseLeave={(e)=>e.currentTarget.style.transform="scale(1)"} />
{String(idx).padStart(2,"0")}
{c.group.toUpperCase()}
{c.count}
); } // ────────────────────────────────────────────────────────────────────────── // Category detail page function CategoryPage({ id, navigate, onQuote }) { const { CATEGORIES, CATEGORY_DETAIL, MEDIA } = window.MOBICO_DATA; const c = CATEGORIES.find(x=>x.id===id); const d = CATEGORY_DETAIL[id]; if(!c || !d) return
Category not found.
; const [activeImg, setActiveImg] = useState(0); const allIds = CATEGORIES.map(x=>x.id); const curIdx = allIds.indexOf(id); const prev = CATEGORIES[(curIdx - 1 + allIds.length) % allIds.length]; const next = CATEGORIES[(curIdx + 1) % allIds.length]; return (
navigate({page:"home"})} style={{cursor:"pointer"}}>MOBICO · navigate({page:"products"})} style={{cursor:"pointer"}}>PRODUCTS · {c.group.toUpperCase()}
{String(curIdx+1).padStart(2,"0")} / 15 {c.group.toUpperCase()}

{/* Gallery + specs */}
{d.title}
{String(activeImg+1).padStart(2,"0")} / {String(d.images.length).padStart(2,"0")}
{d.images.map((img, i)=>( ))}
SPECIFICATION

At a glance

{d.specs.map(([k,v], i)=>( ))}
{k}
FOR THIS RANGE
Request a specification with finishes, sizes & CAD blocks.
Specs are indicative. Final specification per project & finish schedule.
{/* Cross-link nav */}
navigate({page:"category", id: prev.id})} style={{cursor:"pointer", display:"flex", gap:18, alignItems:"center"}}> ← PREV
{prev.group.toUpperCase()}
navigate({page:"products"})} className="btn ghost">All categories navigate({page:"category", id: next.id})} style={{cursor:"pointer", display:"flex", gap:18, alignItems:"center"}}>
{next.group.toUpperCase()}
); } window.ProductsPage = ProductsPage; window.CategoryPage = CategoryPage;