// ============================================================ // Noble Design Asia — Middle: Materials, Services, Portfolio // ============================================================ // ------------- MATERIALS & FURNITURE ------------- function Materials() { const items = [ { t: "High-Grade Teak", b: "Premium Indonesian teak, sourced directly from certified plantations and finished by hand.", img: "https://images.unsplash.com/photo-1595428774223-ef52624120d2?w=900&q=85", alt: "Stacked premium teak planks" }, { t: "Craftsmanship", b: "Hand-finished joinery and stonework — a tolerance for detail only years on the tools can produce.", img: "https://images.unsplash.com/photo-1556910096-6f5e72db6803?w=900&q=85", alt: "Craftsman working" }, { t: "Long-Term Value", b: "Quality materials age beautifully. Our approach ensures your investment appreciates over time.", img: "https://images.unsplash.com/photo-1615529182904-14819c35db37?w=900&q=85", alt: "Built-in teak shelving" }, ]; return ( 02 — Craft Materials & Furniture Honest materials, considered details, and furniture built to last a lifetime — not a trend cycle. {items.map((m, i) => ( 0{i + 1} {m.t} {m.b} ))} ); } // ------------- DESIGN SERVICES ------------- function Services() { const list = [ { t: "Interior Design Concept", Icon: IconPencil, color: "bg-sg-light", fg: "text-green" }, { t: "Turn-Key Renovation & Fit-Out", Icon: IconHammer, color: "bg-so-light", fg: "text-so-dark" }, { t: "Custom Furniture Sourcing", Icon: IconChair, color: "bg-sy-light", fg: "text-sy-dark" }, { t: "Office Layout & Planning", Icon: IconLayout, color: "bg-sb-light", fg: "text-sb-dark" }, { t: "Material Procurement", Icon: IconTruck, color: "bg-sr-light", fg: "text-sr-dark" }, { t: "Final Styling & Handover", Icon: IconSparkle, color: "bg-gold-100", fg: "text-gold-600" }, ]; return ( 03 — Services Design Services Overview Take what you need — or hand us the whole project. {list.map((s, i) => ( 0{i + 1} {s.t} ))} ); } // ------------- PORTFOLIO ------------- const PROJECTS = [ { id: 1, t: "Eksekutif Menteng", loc: "Jakarta", type: "Private Residence", img: "https://images.unsplash.com/photo-1600210492486-724fe5c67fb0?w=1600&q=85" }, { id: 2, t: "Monte Verde", loc: "Jakarta", type: "Penthouse", img: "https://images.unsplash.com/photo-1616486338812-3dadae4b4ace?w=1200&q=85" }, { id: 3, t: "Kempinski Private", loc: "Jakarta", type: "Turn-Key", img: "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=1200&q=85" }, { id: 4, t: "Sudirman Sky", loc: "Jakarta", type: "Turn-Key", img: "https://images.unsplash.com/photo-1600566753376-12c8ab7fb75b?w=1200&q=85" }, { id: 5, t: "Cipete Family Home", loc: "Jakarta", type: "Fit-Out", img: "https://images.unsplash.com/photo-1615529182904-14819c35db37?w=1200&q=85" }, { id: 6, t: "Ubud Hillside Villa", loc: "Bali", type: "Villa", img: "https://images.unsplash.com/photo-1618219740975-d40978bb7378?w=1200&q=85" }, ]; function Portfolio() { const [offset, setOffset] = React.useState(0); const maxOffset = Math.max(0, PROJECTS.length - 3); const prev = () => setOffset(o => Math.max(0, o - 1)); const next = () => setOffset(o => Math.min(maxOffset, o + 1)); const visible = PROJECTS.slice(offset, offset + 3); const [hero, ...smalls] = visible; return ( 04 — Our Portfolio Featured Design Projects = maxOffset} aria-label="Next projects" className="w-11 h-11 rounded-none border border-purple/20 text-purple flex items-center justify-center transition disabled:opacity-30 disabled:cursor-not-allowed hover:border-green hover:text-green shadow-none"> {smalls.map(p => )} ); } function ProjectCard({ p, big }) { return ( {p.loc} {big ? ( {p.type} {p.t} ) : ( {p.t} )} ); } Object.assign(window, { Materials, Services, Portfolio, ProjectCard, PROJECTS });
Honest materials, considered details, and furniture built to last a lifetime — not a trend cycle.
{m.b}
Take what you need — or hand us the whole project.