// sections2.jsx — bottom-half sections // ========================================================= // DATA OWNERSHIP // ========================================================= const DataOwnership = () => { const bars = [38, 52, 44, 68, 57, 79, 63, 85, 72, 91, 81, 97]; const customers = [ { init: 'SR', name: 'Sari Rahayu', city: 'Jakarta', orders: 4, total: 'Rp 2,4 jt', badge: 'Loyal', col: '#5B9BFF' }, { init: 'BP', name: 'Budi Pratama', city: 'Bandung', orders: 2, total: 'Rp 980 rb', badge: '', col: '#1FB58F' }, { init: 'RP', name: 'Rina Putri', city: 'Surabaya', orders: 7, total: 'Rp 5,1 jt', badge: 'Top', col: '#FFC83A' }, ]; const theyHide = [ 'Nama & kontak customer', 'Riwayat pembelian customer', 'Sumber traffic toko kamu', 'Siapa yang repeat order', 'Analitik performa produk', 'Export data mentah', ]; const weShow = [ { label: 'Nama & no. HP semua customer', note: 'Follow up kapan saja' }, { label: 'Riwayat belanja per customer', note: 'Siapa pembeli setia kamu' }, { label: 'Laporan penjualan harian', note: 'Revenue & tren tiap hari' }, { label: 'Traffic & sumber pengunjung', note: 'Dari mana mereka datang' }, { label: 'Performa tiap produk', note: 'Views, klik, konversi' }, { label: 'Export ke CSV / Excel', note: 'Data mentah, 100% milikmu' }, ]; const cats = [ { Icon: IconUsers, label: 'Data Pelanggan', stat: '100%', note: 'Nama, HP, riwayat beli', col: '#5B9BFF' }, { Icon: IconChart, label: 'Data Penjualan', stat: 'Harian', note: 'Revenue & tren real-time', col: '#1FB58F' }, { Icon: IconBox, label: 'Data Produk', stat: 'Per-item', note: 'Views, klik, konversi', col: '#FFC83A' }, { Icon: IconSparkles, label: 'Aktivitas Toko', stat: 'Live', note: 'Visitor, sesi, sumber', col: '#6B4CE6' }, ]; return (
{/* Ambient glows */}
{/* ── Eyebrow + headline ── */}
Data Ownership

Platform lain menyembunyikan
datamu. Kami tunjukkan
semuanya.

Di marketplace besar, data customermu dikuasai platform — kamu tidak tahu siapa yang beli, darimana mereka datang, atau berapa kali mereka kembali. Di Market101, semua itu transparan dan sepenuhnya jadi milikmu.

{/* ── Main 2-col: dashboard + comparison ── */}
{/* Left: dashboard mockup */}
{/* Topbar */}
Dashboard · Kopi Senja
Live
{/* Revenue + bar chart */}
Pendapatan bulan ini
Rp 24.380.000
+31% vs bulan lalu 312 pesanan
{/* Bars */}
{bars.map((h, i) => (
))}
1 Mei15 MeiHari ini
{/* Mini stats row */}
{[ { v: '1.240', l: 'Pengunjung' }, { v: '8,4%', l: 'Konversi' }, { v: '312', l: 'Pesanan' }, ].map((s, i) => (
{s.v}
{s.l}
))}
{/* Customer list */}
Customer Terbaru
{customers.map((c, i) => (
{c.init}
{c.name} {c.badge ? ( {c.badge} ) : null}
{c.city} · {c.orders}x beli
{c.total}
))}
{/* Right: comparison cards */}
{/* They hide */}
Marketplace besar
Data seller tidak dibagikan
{theyHide.map((item, i) => (
{item}
))}
{/* We show */}
Market101
Transparan & 100% milik kamu
{weShow.map((item, i) => (
{item.label}
{item.note}
))}
{/* ── Bottom: 4 data category cards ── */}
{cats.map((cat, i) => (
{cat.stat}
{cat.label}
{cat.note}
))}
); }; // ========================================================= // HOW IT WORKS — sticky scroll-through // ========================================================= const HowItWorks = () => { const [active, setActive] = React.useState(0); const ref = React.useRef(null); React.useEffect(() => { const onScroll = () => { if (!ref.current) return; const rect = ref.current.getBoundingClientRect(); const viewH = window.innerHeight; // Active step based on how much of the section has scrolled into view const total = rect.height - viewH; const scrolled = Math.max(0, -rect.top); const pct = total > 0 ? Math.min(1, scrolled / total) : 0; const step = Math.min(2, Math.floor(pct * 3)); setActive(step); }; onScroll(); window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, []); const steps = [ { eyebrow: 'Langkah 01', title: 'Daftar &\nbuat toko.', desc: 'Daftar gratis dalam 30 detik. Pilih nama toko, pilih template, dan kustomisasi sesuai brand kamu. Tanpa coding, tanpa setup ribet.', visual: 'setup', }, { eyebrow: 'Langkah 02', title: 'Upload\nproduk.', desc: 'Tambahkan produk lengkap dengan foto, video, harga, stok, dan varian. Import massal dari CSV atau langsung satu per satu — bebas kamu pilih.', visual: 'product', }, { eyebrow: 'Langkah 03', title: 'Terima\npesanan.', desc: 'Pembeli belanja lewat link toko kamu. Kamu kelola pesanan, cetak resi otomatis dari kurir favorit, dan dapatkan pembayaran langsung ke rekening.', visual: 'order', }, ]; return (
{/* Left — sticky title + steps */}
Cara kerjanya

Dari nol ke
toko aktif
dalam 3 langkah.

Tidak butuh tim developer, tidak butuh hosting. Cukup ide dan produk — sisanya biar Market101 yang urus.

{/* Step indicators */}
{steps.map((s, i) => (
{String(i + 1).padStart(2, '0')}
{s.title.replace('\n', ' ')}
{s.desc}
))}
{/* Right — visual that swaps */}
{steps.map((s, i) => (
i ? 'translateY(-40px) scale(0.95)' : 'translateY(40px) scale(0.95)'), transition: 'opacity .5s ease, transform .5s cubic-bezier(.2,.7,.2,1)', pointerEvents: active === i ? 'auto' : 'none', }}>
))}
); }; const HiwVisual = ({ variant }) => { if (variant === 'setup') { return (
Buat toko baru
Atur tampilan toko kamu
{/* Form rows */}
Nama toko
Kopi Senja
URL toko
market101.id/kopisenja Tersedia
Pilih template
{[ { bg: '#FAF7F1', accent: '#ED1B3C', active: true }, { bg: '#0E0E10', accent: '#FFC83A' }, { bg: '#E8F2FF', accent: '#5B9BFF' }, { bg: '#E8F8F2', accent: '#1FB58F' }, ].map((t, i) => (
{t.active &&
}
))}
); } if (variant === 'product') { return (
Produk
42 produk · 38 aktif
{[ { n: 'Gayo Aceh 250g', p: '85.000', stock: 24, bg: '#3B2517' }, { n: 'Toraja Sapan 250g', p: '92.000', stock: 18, bg: '#5A3A22' }, { n: 'Kintamani 250g', p: '78.000', stock: 31, bg: '#7C4B27' }, { n: 'Single Cup', p: '35.000', stock: 12, bg: '#2A1B12' }, ].map((p, i) => (
● Aktif
{p.n}
Rp {p.p} Stok {p.stock}
))}
); } // order return (
Pesanan masuk
3 pesanan baru
{[ { n: 'Rina Setiawati', loc: 'Surabaya', item: 'Gayo Aceh × 2', total: '170.000', status: 'Bayar', col: 'var(--sun)' }, { n: 'Bagas P.', loc: 'Jakarta', item: 'Toraja + Kintamani', total: '170.000', status: 'Siap kirim', col: 'var(--sky)' }, { n: 'Dewi Arifin', loc: 'Bandung', item: 'Single Cup × 4', total: '140.000', status: 'Dikirim', col: 'var(--mint)' }, ].map((o, i) => (
{o.n[0]}
{o.n} · {o.loc}
{o.item}
Rp {o.total}
{o.status}
))}
Total hari ini
Rp 4.182.500
); }; // ========================================================= // TEMPLATES // ========================================================= const Templates = () => { const cardsRef = React.useRef([]); const handleMouseMove = (e, i) => { const el = cardsRef.current[i]; if (!el) return; const r = el.getBoundingClientRect(); const x = (e.clientX - r.left) / r.width - 0.5; const y = (e.clientY - r.top) / r.height - 0.5; el.style.transform = `perspective(1000px) rotateY(${x * 8}deg) rotateX(${-y * 8}deg) translateY(-6px)`; }; const handleMouseLeave = (i) => { const el = cardsRef.current[i]; if (!el) return; el.style.transform = 'perspective(1000px) rotateY(0) rotateX(0) translateY(0)'; }; const templates = [ { name: 'Minimal', tag: 'Editorial · Putih', palette: { bg: '#FAF7F1', fg: '#0E0E10', line: 'rgba(14,14,16,0.1)', accent: '#ED1B3C', heroBg: '#0E0E10', heroText: '#FAF7F1' }, productColors: ['#E5D9C6','#D4C4A8','#BFA987','#A88F6F','#8B7355','#6E5A40'] }, { name: 'Bold', tag: 'Energi · Gelap', palette: { bg: '#0E0E10', fg: '#F2EFE9', line: 'rgba(255,255,255,0.08)', accent: '#FFC83A', heroBg: '#FFC83A', heroText: '#0E0E10' }, productColors: ['#FFC83A','#ED1B3C','#5B9BFF','#1FB58F','#6B4CE6','#FF7A45'] }, { name: 'Premium', tag: 'Luxury · Krem', palette: { bg: '#F0E8DA', fg: '#2A1F18', line: 'rgba(42,31,24,0.12)', accent: '#2A1F18', heroBg: '#2A1F18', heroText: '#F0E8DA' }, productColors: ['#C9B89A','#A89478','#876F50','#5C4630','#3D2F22','#2A1F18'] }, { name: 'Pasar', tag: 'Warung · Cerah', palette: { bg: '#E8F8F2', fg: '#0A3D2F', line: 'rgba(10,61,47,0.12)', accent: '#1FB58F', heroBg: '#1FB58F', heroText: '#FFFFFF' }, productColors: ['#FFC83A','#FF7A45','#1FB58F','#5B9BFF','#ED1B3C','#0A3D2F'] }, ]; return (
Template

Empat template.
Satu untuk tiap mood toko.

Lihat semua
{templates.map((t, i) => (
cardsRef.current[i] = el} onMouseMove={e => handleMouseMove(e, i)} onMouseLeave={() => handleMouseLeave(i)} style={{ transition: 'transform .35s cubic-bezier(.2,.7,.2,1)' }} >
))}
); }; Object.assign(window, { DataOwnership, HowItWorks, HiwVisual, Templates });