// mockups.jsx — phone mockups, store cards, decorative SVG bits // Phone shell that wraps content as if it's an iOS device const Phone = ({ children, width = 280, accent = '#ED1B3C', shadow = true, style = {} }) => { const height = Math.round(width * 2.05); return (
{/* Notch */}
{children}
); }; // Store mockup — content for the hero phone const HeroStorePhone = ({ accent = '#ED1B3C' }) => (
{/* Status bar */}
9:41
{/* Store header */}
K
Kopi Senja
market101.id/kopisenja
{/* Banner */}
Promo Bulan Ini
Single Origin
15% OFF
{/* Categories */}
{['Semua','Arabika','Robusta','Manual','Susu'].map((c,i) => ( {c} ))}
{/* Products */}
{[ { name: 'Gayo Aceh', price: '85.000', color: '#3B2517', tag: 'Best' }, { name: 'Toraja Sapan', price: '92.000', color: '#5A3A22' }, { name: 'Kintamani', price: '78.000', color: '#7C4B27' }, { name: 'Bali Pupuan', price: '88.000', color: '#4A2D17' }, ].map((p, i) => (
{p.tag && {p.tag}}
250g
{p.name}
Rp{p.price}
))}
{/* Bottom nav */}
{['◧','▢','♡','◉'].map((s, i) => (
{s}
))}
); // Dashboard mockup — sellers' admin const HeroDashboardCard = () => (
Penjualan Hari Ini
+24,8%
Rp 4.182.500
vs. Rp 3.348.000 kemarin
{/* Mini chart */}
{[['Pesanan','38'],['Pengunjung','412'],['Konversi','9,2%']].map(([k,v]) => (
{k}
{v}
))}
); // Floating order notification const OrderToast = () => (
🛒
Pesanan baru — Rp 247.000
Rina S. · Surabaya · 2 item
); // Domain pill const DomainPill = () => (
market101.id/ kopisenja Live
); // Template card — mini phone preview const TemplateCard = ({ name, tag, palette, productColors }) => (
{tag}
{name}
{name[0]}
{/* Mini hero */}
New Collection
Spring
Drop '26
{/* Product grid */}
{productColors.map((c, i) => (
))}
); Object.assign(window, { Phone, HeroStorePhone, HeroDashboardCard, OrderToast, DomainPill, TemplateCard });