// 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 */}
✨
⭐
{/* 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}
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 (
{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.flag && (
{opt.flag}
)}
{opt.selected && (
{Icon.check(13)}
)}
))}
Janela preferida
{/* 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 */}
{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) => (
))}
{/* 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 */}
{/* 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}
))}
{/* 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 (
{/* 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.
);
}
// ─────────────────────────────────────────────────────────────
// 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,
});