// chamapro-mobile.jsx — Mobile screens (each rendered inside an IOSDevice) // ───────────────────────────────────────────────────────────── // 1) ONBOARDING — first-run welcome with 3 paginated cards // ───────────────────────────────────────────────────────────── function MobileOnboarding() { const [step, setStep] = React.useState(0); const slides = [ { title: 'Diga o que precisa.', sub: 'Descreva seu serviço em 30 segundos. Foto, áudio ou texto.', kind: 'home', }, { title: 'Os pros chamam você.', sub: 'Em minutos, profissionais verificados enviam orçamentos.', kind: 'wrench', }, { title: 'Escolha com calma.', sub: 'Compare preço, avaliações e portfólio. Pague protegido.', kind: 'shield', }, ]; const s = slides[step]; return (
{/* Hero illustration */}
{step === 0 ? '✍️' : step === 1 ? '🔥' : '🤝'}
{/* Floating sparkles */}

{s.title}

{s.sub}

{/* Pagination + actions */}
{slides.map((_, i) => (
))}
Já tem conta? Entrar
); } // ───────────────────────────────────────────────────────────── // 2) HOME — discovery feed // ───────────────────────────────────────────────────────────── const CATS = [ { id: 'all', label: 'Tudo', emoji: '✨' }, { id: 'reform', label: 'Reformas', emoji: '🔨' }, { id: 'clean', label: 'Limpeza', emoji: '🧹' }, { id: 'elec', label: 'Elétrica', emoji: '⚡' }, { id: 'plumb', label: 'Hidráulica', emoji: '🔧' }, { id: 'paint', label: 'Pintura', emoji: '🎨' }, { id: 'ac', label: 'Ar-cond.', emoji: '❄️' }, { id: 'move', label: 'Mudança', emoji: '📦' }, ]; function MobileHome() { const [cat, setCat] = React.useState('all'); return (
{/* Top header */}
Olá, Marina 👋
{Icon.pin(13)} Pinheiros, São Paulo
{/* Search */}
{Icon.search(18)} Buscar serviços, profissionais... {Icon.mic(16)}
{/* Categories */}
{CATS.map(c => ( ))}
{/* Hero CTA card */}
🔥
{Icon.lightning(13)} RESPOSTA EM MINUTOS
Precisa de um
profissional?
Descreva o serviço — em média 7 lances chegam em 24h.
{/* Section: Active requests */}
Meus pedidos ativos
Ver todos
{/* Section: Top pros */}
Pros em alta na sua região
{[ { name: 'Carlos Souza', cat: 'Eletricista', rating: 4.9, jobs: 312 }, { name: 'Ana Beatriz', cat: 'Pintora', rating: 5.0, jobs: 184 }, { name: 'Roberto Lima', cat: 'Encanador', rating: 4.8, jobs: 247 }, ].map((p, i) => )}
{/* Section: How it works */}
Como o ChamaPro funciona
{[ { n: '1', icon: '✍️', title: 'Você descreve', sub: 'Texto, áudio ou foto. Sem complicação.' }, { n: '2', icon: '🔥', title: 'Os pros chamam', sub: 'Em média 7 propostas em 24h.' }, { n: '3', icon: '✅', title: 'Você escolhe', sub: 'Compare e pague com proteção.' }, ].map((s, i) => (
0 ? '1px solid var(--cp-border)' : 'none', }}>
{s.icon}
{s.title}
{s.sub}
0{s.n}
))}
); } function ActiveRequestCard({ title, status, when, bidCount, ongoing, kind }) { return (
{ongoing ? ● {status} : status}
{title}
{Icon.clock(11)} {when} {!ongoing && 💬 {bidCount} propostas }
); } function ProCard({ name, cat, rating, jobs }) { return (
Online
{name}
{cat}
{Icon.star(13)} {rating} · {jobs} jobs
); } // ───────────────────────────────────────────────────────────── // 3) CRIAR PEDIDO — multi-step form // ───────────────────────────────────────────────────────────── function MobileNewRequest() { const [step, setStep] = React.useState(2); // show step 3 of 4 for richness const cat = CATS.find(c => c.id === 'paint'); return (
{/* Header */}
Novo pedido
{[0, 1, 2, 3].map(i => (
))}
Categoria Detalhes Quando Revisar
Quando você precisa?
Profissionais avaliam disponibilidade. Quanto mais flexível, melhores os preços.
{/* Urgency picker */}
{[ { id: 'urgent', emoji: '🔥', label: 'Urgente', sub: 'Hoje ou amanhã', flag: '+R$' }, { id: 'week', emoji: '📅', label: 'Esta semana', sub: 'Nos próximos 7 dias', selected: true }, { id: 'flex', emoji: '🌿', label: 'Sem pressa', sub: 'Aceito sugestões', flag: 'melhor preço' }, ].map(opt => (
{opt.emoji}
{opt.label}
{opt.sub}
{opt.flag && ( {opt.flag} )} {opt.selected && (
{Icon.check(13)}
)}
))}
Janela preferida
Manhã
Tarde
Fim de semana
{/* Smart suggestion */}
{Icon.sparkle(16)}
Dica do ChamaPro: pintores em Pinheiros têm ~30% menos demanda em terças e quartas. Aceitar essas datas pode reduzir o orçamento em até 15%.
); } // ───────────────────────────────────────────────────────────── // 4) PROPOSTAS — comparação de orçamentos recebidos // ───────────────────────────────────────────────────────────── function MobileProposals() { const proposals = [ { name: 'Carlos Souza', cat: 'Pintor Profissional', rating: 4.9, jobs: 312, verified: true, price: 1180, days: 2, msg: 'Olá! Posso fazer o serviço com tinta premium incluída. Garantia de 1 ano.', highlight: 'best', }, { name: 'Ana Beatriz Lopes', cat: 'Pintura & acabamento', rating: 5.0, jobs: 184, verified: true, price: 1450, days: 3, msg: 'Faço com massa corrida, lixamento e 2 demãos. Posso visitar antes para orçar.', }, { name: 'Roberto Lima', cat: 'Reformas em geral', rating: 4.6, jobs: 89, verified: false, price: 950, days: 4, msg: 'Trabalho com qualidade e preço justo. Posso começar amanhã.', }, ]; return (
Propostas recebidas
Pintar sala e quarto
{Icon.pin(11)} Pinheiros {Icon.clock(11)} esta semana ● ao vivo
{/* Sort tabs */}
{['Recomendados', 'Menor preço', 'Melhor avaliados', 'Mais rápidos'].map((t, i) => ( ))}
{/* Quick stats */}
Lances
7
Faixa
R$ 950–1.450
{proposals.map((p, i) => )}
); } function ProposalCard({ name, cat, rating, jobs, verified, price, days, msg, highlight }) { return (
{highlight === 'best' && (
{Icon.flame(10, 'white')} MELHOR ESCOLHA
)}
{name} {verified && }
{cat}
{Icon.star(12)} {rating} · {jobs} jobs
Total
R$ {price.toLocaleString('pt-BR')}
{days} dias
"{msg}"
); } // ───────────────────────────────────────────────────────────── // 5) PERFIL DO PRO // ───────────────────────────────────────────────────────────── function MobileProProfile() { return (
{/* Cover with gradient */}
{/* Profile head */}
Carlos Souza
Pintor profissional · Pinheiros
{/* Stats grid */}
{[ { v: '4.9', l: 'Avaliação', sup: {Icon.star(12)} }, { v: '312', l: 'Trabalhos' }, { v: '7 anos', l: 'Na plataforma' }, ].map((s, i) => (
{s.v}{s.sup}
{s.l}
))}
{/* Badges */}
🔥 Top 5% em Pinheiros Doc. verificada ⚡ Responde em 8 min
{/* About */}
Sobre
Trabalho com pintura residencial e comercial há 12 anos. Atendo toda Zona Oeste com tinta premium incluída. Garantia escrita em todos os serviços.
{/* Portfolio */}
Portfólio (24) Ver tudo
{['paint', 'home', 'kitchen', 'bath', 'paint', 'home'].map((k, i) => ( ))}
{/* Recent reviews */}
Avaliações
Helena P. 2 sem.
Trabalho impecável. Pontual, organizado e ainda fez ajustes finos sem cobrar a mais. Recomendo!
{/* Sticky CTA */}
Proposta de Carlos
R$ 1.180 · 2 dias
); } // ───────────────────────────────────────────────────────────── // 6) CHAT // ───────────────────────────────────────────────────────────── function MobileChat() { return (
{/* Header */}
Carlos Souza
Online · responde em 8 min
{/* Job summary banner */}
Pintar sala e quarto
Proposta R$ 1.180 · em análise
Detalhes
{/* Date sep */}
Hoje
{/* Auto suggestion */}
{Icon.shield(12)} Pagamento sai apenas após você aprovar o serviço
{/* Composer */}
Mensagem... {Icon.camera(16)}{Icon.mic(16)}
{/* Home indicator covered by IOSDevice */}
); } function ChatBubble({ side, text, image, time }) { const me = side === 'me'; return (
{image && } {text &&
{text}
}
{time}
); } // ───────────────────────────────────────────────────────────── // 7) ACOMPANHAMENTO + AVALIAÇÃO // ───────────────────────────────────────────────────────────── function MobileTracking() { return (
Acompanhamento
{/* Live status hero */}
EM ANDAMENTO
Carlos está a caminho
Chegada estimada: 14h28 · 12 min
{/* Mini map mock */}
📍 Você
🚗 Carlos
{/* Job details */}
Carlos Souza
{Icon.star(11)} 4.9 · 312 jobs
{/* Timeline */}
Linha do tempo
{[ { state: 'done', title: 'Pedido publicado', sub: 'Hoje, 09:42', icon: '📝' }, { state: 'done', title: '7 propostas recebidas', sub: 'Hoje, 11:20', icon: '🔥' }, { state: 'done', title: 'Carlos contratado', sub: 'Hoje, 13:05', icon: '🤝' }, { state: 'live', title: 'A caminho', sub: 'Agora · ETA 14:28', icon: '🚗' }, { state: 'next', title: 'Início do serviço', sub: 'Aguardando', icon: '🎨' }, { state: 'next', title: 'Conclusão e avaliação', sub: 'Aguardando', icon: '✅' }, ].map((t, i, arr) => (
{/* Vertical line */} {i < arr.length - 1 && (
)}
{t.state === 'live' ? : null} {t.state === 'done' ? Icon.check(16) : t.icon}
{t.title}
{t.sub}
))}
{/* Payment protection */}
{Icon.shield(20)}
Pagamento protegido
R$ 1.180 retidos · liberados após sua aprovação
); } // ───────────────────────────────────────────────────────────── // 8) AVALIAÇÃO PÓS-SERVIÇO // ───────────────────────────────────────────────────────────── function MobileReview() { const [rating, setRating] = React.useState(5); const tags = ['Pontual', 'Comunicativo', 'Caprichoso', 'Limpo', 'Profissional', 'Bom preço', 'Recomendo']; const [picked, setPicked] = React.useState(['Pontual', 'Caprichoso', 'Recomendo']); const togglePick = (t) => { setPicked(p => p.includes(t) ? p.filter(x => x !== t) : [...p, t]); }; return (
Avaliação
{/* Pro card */}
Como foi com
Carlos Souza
Pintura · concluído hoje, 17:42
{/* Rating */}
{[1, 2, 3, 4, 5].map(n => ( ))}
{rating === 5 ? 'Excelente!' : rating === 4 ? 'Muito bom' : rating === 3 ? 'Ok' : rating === 2 ? 'Não foi bem' : 'Péssimo'}
{/* Tags */}
O que mais te marcou?
{tags.map(t => ( ))}
{/* Comment */}
Conte como foi (opcional)
Trabalho impecável! Carlos foi pontual, organizado e ainda fez ajustes finos sem cobrar a mais. Já agendei para pintar a área externa.
Adicionar à lista de favoritos
); } // ───────────────────────────────────────────────────────────── // 9) TAB BAR (shared) // ───────────────────────────────────────────────────────────── function MobileTabBar({ active = 'home' }) { const tabs = [ { id: 'home', label: 'Início', icon: Icon.home }, { id: 'list', label: 'Pedidos', icon: Icon.list }, { id: 'new', label: '', icon: null, big: true }, { id: 'chat', label: 'Mensagens', icon: Icon.chat }, { id: 'me', label: 'Eu', icon: Icon.user }, ]; return (
{tabs.map(t => t.big ? ( ) : (
{t.icon(20)} {t.label}
))}
); } Object.assign(window, { MobileOnboarding, MobileHome, MobileNewRequest, MobileProposals, MobileProProfile, MobileChat, MobileTracking, MobileReview, MobileTabBar, });