/* ============================================================ Mockups Mobile — 7 telas completas, interativas ============================================================ */ /* ---------- Phone shell ---------- */ function Phone({ children, darkStatus }) { return (
{children}
); } function StatusBar({ dark }) { return (
9:41
); } function BottomNav({ active = "home" }) { const items = [ { id: "home", label: "Início", icon: "house" }, { id: "search", label: "Buscar", icon: "magnifying-glass" }, { id: "shops", label: "Empresas", icon: "storefront" }, { id: "eco", label: "Ecossistema", icon: "users-three" }, { id: "me", label: "Perfil", icon: "user" }, ]; return (
{items.map(it => ( ))}
); } /* ---------- 1. HOME ---------- */ function PhoneHome() { return (
Olá, Marina
iGod
{/* Search */}
Buscar no marketplace cristão…
{/* Categories horizontal */}
{CATEGORIES.map(c => (
{c.name}
))}
{/* Hero */}
Esta semana
Empresas verificadas, perto de você.
{/* Destaques */}
Produtos em destaque
Ver todos
{SAMPLE_PRODUCTS.slice(0,4).map(p => )}
{/* Empresas verificadas */}
Empresas verificadas
Ver todos
{COMPANIES.map((c, i) => (
{c.initial}
{c.name} {c.verified && }
{c.cat}
{c.city}
))}
); } /* ---------- 2. LISTAGEM ---------- */ function PhoneListing() { const [active, setActive] = useState("Alimentos"); return (
Alimentos e bebidas
248 produtos
{/* Filters chips */}
{["Filtros", ...CATEGORIES.slice(0, 6).map(c=>c.name)].map((n, i) => ( setActive(n)}> {i === 0 && } {n} {i === 0 && 2} ))}
{/* Order */}
42 resultados em São Paulo, SP
{/* Grid */}
{[...SAMPLE_PRODUCTS, ...SAMPLE_PRODUCTS].slice(0, 6).map((p, i) => )}
); } /* ---------- 3. PRODUTO ---------- */ function PhoneProduct() { return (
P
Alimentos Novo
Pão de fermentação natural artesanal 500g
R$ 18,90 R$ 24,90
CP
Casa do Pão
Padaria · São Paulo, SP
Sobre este produto

Pão artesanal de fermentação natural, feito todas as manhãs com farinha orgânica brasileira. Casca crocante, miolo alveolado e sabor profundo. Embalado em papel kraft sem plástico.

Você também vai gostar
{SAMPLE_PRODUCTS.slice(1, 3).map(p => )}
{/* CTA fixa fora do scroll, acima da bottom-nav */}
); } /* ---------- 4. PERFIL DE EMPRESA ---------- */ function PhoneCompany() { const [tab, setTab] = useState("produtos"); return (
CP
Casa do Pão
Padaria artesanal São Paulo, SP
4.9
★ Avaliação
2,3 mil
Vendas
2018
Desde
{[["produtos","Produtos"],["sobre","Sobre"],["contato","Contato"]].map(([id, label]) => ( ))}
{tab === "produtos" && (
{[...SAMPLE_PRODUCTS, ...SAMPLE_PRODUCTS.slice(0,2)].map((p, i) => )}
)} {tab === "sobre" && (

A Casa do Pão é uma padaria familiar fundada em 2018 por João e Marina, em São Paulo. Nasceu do sonho de oferecer pão de verdade — sem aditivos, com fermentação natural e ingredientes orgânicos. Toda manhã, antes do sol, a massa começa.

Compromissos
  • Farinha 100% orgânica brasileira
  • Sem conservantes ou açúcar refinado
  • 10% do lucro destinado ao Lar Esperança
)} {tab === "contato" && (
(11) 98765-4321
Atendimento 8h–18h
R. das Oliveiras, 245 · Vila Madalena
São Paulo, SP · 05435-000
)}
); } /* ---------- 5. CARRINHO ---------- */ function PhoneCart() { const [items, setItems] = useState([ { ...SAMPLE_PRODUCTS[0], qty: 2 }, { ...SAMPLE_PRODUCTS[2], qty: 1 }, { ...SAMPLE_PRODUCTS[3], qty: 1 }, ]); const setQty = (id, delta) => setItems(items.map(it => it.id === id ? {...it, qty: Math.max(1, it.qty + delta)} : it)); const subtotal = items.reduce((s, it) => s + Number(it.price[1]) * it.qty, 0); return (
Sua sacola
Você está a R$ 52,30 do frete grátis
{items.map(it => (
{it.letter}
{it.name}
{it.company}
R$ {it.price[1]} ,{it.price[2]}
{it.qty}
))}
Subtotal · {items.length} itensR$ {subtotal.toFixed(2).replace(".", ",")}
FreteA calcular
Desconto iGod−R$ 12,00
TotalR$ {(subtotal - 12).toFixed(2).replace(".", ",")}
); } /* ---------- 6. CHECKOUT ---------- */ function PhoneCheckout() { const [step, setStep] = useState(2); const [pay, setPay] = useState("pix"); return (
Finalizar compra
{/* Progress */}
{[1,2,3].map(s => (
{s < step ? : s}
{s < 3 &&
}
))}
Endereço Pagamento Revisão
Entrega em
Casa · Marina Souza
R. das Acácias, 184 · Pinheiros · São Paulo, SP
Forma de pagamento
{[ { id: "pix", icon: "ph-fill ph-currency-circle-dollar", iconColor: "var(--success-500)", iconBg: "var(--success-50)", name: "Pix", sub: "5% de desconto · aprovação imediata" }, { id: "card", icon: "ph-fill ph-credit-card", iconColor: "var(--plum-700)", iconBg: "var(--plum-100)", name: "Cartão de crédito", sub: "Até 3x sem juros · •••• 4521" }, { id: "whatsapp", icon: "ph-fill ph-whatsapp-logo", iconColor: "var(--ember-600)", iconBg: "var(--ember-50)", name: "Combinar com a empresa", sub: "Boleto, transferência ou outros" }, ].map(opt => (
setPay(opt.id)} style={{background: pay === opt.id ? "var(--sand-100)" : "transparent"}}>
{opt.name}
{opt.sub}
{pay === opt.id && }
))}
Total da compraR$ 56,80
Desconto Pix (5%)−R$ 2,84
Você pagaR$ 53,96
Ao continuar você concorda com os Termos da iGod.
); } /* ---------- 7. PERFIL DO USUÁRIO ---------- */ function PhoneProfile() { return (
Perfil
MS
Marina Souza
marina@igreja.com.br
Membro iGod desde 2024
12
Pedidos
28
Favoritos
R$ 87
Doados em causas
Minha conta
{[ { icon: "shopping-bag", iconType: "ember", name: "Meus pedidos", sub: "3 em andamento" }, { icon: "heart", iconType: "ember", name: "Favoritos", sub: "28 produtos salvos" }, { icon: "map-pin", iconType: "neutral", name: "Endereços", sub: "2 endereços" }, { icon: "credit-card", iconType: "neutral", name: "Métodos de pagamento", sub: "Pix · Mastercard •••• 4521" }, ].map((m, i) => (
{m.name}
{m.sub}
))}
Ecossistema iGod
{[ { icon: "storefront", iconType: "plum", name: "Tornar-se empresa parceira", sub: "Vender no marketplace" }, { icon: "hand-heart", iconType: "plum", name: "Doar para causas", sub: "12 causas verificadas" }, { icon: "users-three", iconType: "plum", name: "Mentoria e comunidade", sub: "Em breve" }, ].map((m, i) => (
{m.name}
{m.sub}
))}
); } /* ---------- MOCKUPS SECTION ---------- */ function MockupsSection() { const screens = [ { num: "01", name: "Home", comp: PhoneHome }, { num: "02", name: "Listagem de produtos", comp: PhoneListing }, { num: "03", name: "Página de produto", comp: PhoneProduct }, { num: "04", name: "Perfil de empresa", comp: PhoneCompany }, { num: "05", name: "Carrinho", comp: PhoneCart }, { num: "06", name: "Checkout", comp: PhoneCheckout }, { num: "07", name: "Perfil do usuário", comp: PhoneProfile }, ]; const [focus, setFocus] = useState(null); const Focus = focus ? screens[focus].comp : null; return ( <>
{screens.map((s, i) => { const Comp = s.comp; return (
{s.num}
setFocus(i)} style={{cursor:"zoom-in", transform:"scale(.7)", transformOrigin: "top center", margin:"-114px -56px -180px"}}>
{s.name}
); })}
{focus !== null && (
setFocus(null)}>
e.stopPropagation()} style={{display:"flex", flexDirection:"column", alignItems:"center", gap: 16}}>
{screens[focus].num} {screens[focus].name}
)} ); } Object.assign(window, { Phone, BottomNav, PhoneHome, PhoneListing, PhoneProduct, PhoneCompany, PhoneCart, PhoneCheckout, PhoneProfile, MockupsSection });