);
};
/* ── Step XP values ───────────────────────────────────────── */
const STEP_XP = [30, 25, 20, 35, 15];
/* ── Main step definitions ───────────────────────────────── */
const STEPS_CE = [
{
id: 'tipo',
title: 'Que tipo de experiência queres criar?',
sub: 'O Hexis AI analisou o teu perfil e calculou a compatibilidade para cada formato.',
field: 'tipo',
opts: [
{ v: 'Summit', l: 'Summit / Conferência', d: 'Palco principal · Painéis · 100+ participantes' },
{ v: 'Workshop', l: 'Workshop / Formação', d: 'Prático · Certificado · 10–50 participantes' },
{ v: 'Networking', l: 'Networking Privado', d: 'C-Level · Deal flow · 30 convidados' },
{ v: 'Roadshow', l: 'Roadshow B2B', d: 'Multi-cidade · Expansão · Pipeline regional' },
{ v: 'Hackathon', l: 'Hackathon / Demo Day', d: 'Inovação · Startups · Investidores' },
{ v: 'Outro', l: 'Experiência customizada',d: 'Definimos juntos o formato ideal' },
],
},
{
id: 'setor',
title: 'Qual é o setor ou vertical do evento?',
sub: 'O Hexis filtra participantes com base no teu sector de actuação e histórico.',
field: 'setor',
opts: [
{ v: 'FinTech', l: 'FinTech', d: 'Finanças · Pagamentos · Crypto · Banking' },
{ v: 'Energia', l: 'Energia & ESG', d: 'Renováveis · Sustentabilidade · Oil & Gas' },
{ v: 'SaaS B2B', l: 'SaaS B2B', d: 'Software · Plataformas · Cloud' },
{ v: 'AgriTech', l: 'AgriTech', d: 'Agricultura · Alimentação · Rural Tech' },
{ v: 'HealthTech', l: 'HealthTech', d: 'Saúde · Biotech · MedTech' },
{ v: 'Outro', l: 'Outro Setor', d: 'Retail · Media · Telecom · GovTech' },
],
},
{
id: 'escala',
title: 'Qual a escala esperada do evento?',
sub: 'Estimativa de participantes e localização — o Hexis calcula custo operacional.',
field: 'escala',
opts: [
{ v: 'micro', l: 'Micro (< 30)', d: 'Reunião privada · Muito selectivo' },
{ v: 'pequeno', l: 'Pequeno (30–100)',d: 'Workshop · Networking focado' },
{ v: 'medio', l: 'Médio (100–500)', d: 'Conferência regional · Summit' },
{ v: 'grande', l: 'Grande (500+)', d: 'Summit nacional · Feira · Roadshow' },
],
},
{
id: 'objetivo',
title: 'Qual o objetivo principal?',
sub: 'Define os KPIs que o Hexis vai usar para calibrar o algoritmo de matchmaking.',
field: 'objetivo',
multi: true,
opts: [
{ v: 'Pipeline', l: 'Gerar pipeline B2B', d: 'Leads qualificados e MatchScore™' },
{ v: 'Captação', l: 'Captação de investimento', d: 'Conexão com VCs / Angels' },
{ v: 'Parcerias', l: 'Parcerias estratégicas', d: 'Deal flow e integrações' },
{ v: 'Branding', l: 'Branding de marca', d: 'Visibilidade e autoridade' },
{ v: 'Formação', l: 'Formação corporativa', d: 'Upskilling com certificação' },
{ v: 'Lançamento',l: 'Lançar produto', d: 'Go-to-market com audiência certa' },
],
},
];
/* ── MAIN PAGE ─────────────────────────────────────────────── */
const CriarExperienciaPage = ({ onNav }) => {
const auth = window.useAuth ? window.useAuth() : { user: null };
const { user } = auth;
const [step, setStep] = useStateCE(0);
const [data, setData] = useStateCE({ tipo: '', setor: '', escala: '', objetivo: [] });
const [submitted, setSubmitted] = useStateCE(false);
const [name, setName] = useStateCE('');
const [email, setEmail] = useStateCE('');
const [msg, setMsg] = useStateCE('');
const [productCart, setProductCart] = useStateCE([]);
const [profile, setProfile] = useStateCE(null);
const [hexisAnalyzing, setHexisAnalyzing] = useStateCE(false);
/* Sync HexisEngine profile */
useEffectCE(() => {
if (window.HexisEngine) {
setProfile(HexisEngine.getProfile());
return HexisEngine.subscribe(p => setProfile({ ...p }));
}
}, []);
/* Prefill name/email if logged in */
useEffectCE(() => {
if (user) {
if (user.name) setName(user.name);
if (user.email) setEmail(user.email);
}
}, [user]);
const totalSteps = STEPS_CE.length + 1; /* +1 products */
const isProductsStep = step === STEPS_CE.length;
const s = !isProductsStep ? STEPS_CE[step] : null;
const toggle = (arr, val) => arr.includes(val) ? arr.filter(x => x !== val) : [...arr, val];
const sel = (k, v) => setData(d => ({ ...d, [k]: v }));
const canNext = () => {
if (isProductsStep) return true;
if (s.multi) return data[s.field].length > 0;
return !!data[s.field];
};
/* Smart fill — auto-select best option for current step */
const handleSmartFill = (opt) => {
if (!opt || !s) return;
if (s.multi) sel(s.field, data[s.field].includes(opt.v) ? data[s.field] : [...data[s.field], opt.v]);
else sel(s.field, opt.v);
ToastBus.push({ kind: 'gold', icon: 'zap', title: 'Smart Fill · Hexis AI', desc: `"${opt.l}" selecionado com ${Math.round(computeConfidence(s.id, opt.v, profile) * 100)}% de confiança.` });
};
const next = async () => {
if (step < totalSteps - 1) {
/* Award XP for completing a wizard step */
const xp = STEP_XP[step] || 20;
if (window.HexisEngine) HexisEngine.awardXP(xp, `Briefing Passo ${step + 1}`);
/* Simulate Hexis "thinking" on transition */
if (!isProductsStep) {
setHexisAnalyzing(true);
setTimeout(() => setHexisAnalyzing(false), 600);
}
setStep(prev => prev + 1);
return;
}
if (!user && !email.trim()) return;
if (window.HexisEngine) HexisEngine.awardXP(50, 'Briefing Completo');
setSubmitted(true);
if (window.MarcianusAPI) {
MarcianusAPI.track({ action: 'criar_experiencia_submit', category: 'conversion', label: data.tipo });
MarcianusAPI.createEvent({
title: `${data.tipo || 'Experiencia'} ${data.setor || 'Marcianus'}`,
subtitle: `Briefing Hexis AI · ${data.objetivo.join(', ')}`,
sector: data.setor || 'Multi-sector',
venue_name: data.local || 'A definir',
venue_city: data.local || 'Lisboa',
starts_at: new Date(Date.now() + 1000 * 60 * 60 * 24 * 30).toISOString(),
ends_at: new Date(Date.now() + 1000 * 60 * 60 * 24 * 31).toISOString(),
max_attendees: Number((data.escala || '').match(/\d+/)?.[0] || 100),
price_base: productCart.reduce((sum, p) => sum + p.price, 0),
pipeline_target: 1000000,
is_private: true,
});
}
SoundFX.success();
fireConfetti({ x: window.innerWidth / 2, y: window.innerHeight / 2 });
};
/* ── Success screen ─────────────────────────────────────── */
if (submitted) {
const cartTotal = productCart.reduce((sum, p) => sum + p.price, 0);
const matchEst = profile ? Math.round(82 + (profile.misScore || 0.7) * 15) : 89;
return (
🚀
Briefing Recebido · Hexis Calibrado
Experiência em preparação.
O Hexis AI gerou o setup operacional para o teu {data.tipo} em {data.setor}. MatchScore estimado: {matchEst}%. Proposta em 48h.
Tipo{data.tipo}
Setor{data.setor}
Escala{data.escala}
Objetivos{data.objetivo.join(' · ')}
Match Score est.{matchEst}%
{productCart.length > 0 && (
Produtos ({productCart.length})€{cartTotal.toLocaleString('pt-PT')} est.
)}
{profile && (
XP ganho+{STEP_XP.slice(0, step).reduce((a, b) => a + b, 50)} XP
)}
{/* Hexis confirmation note */}
⟡
O Hexis AI analisou {Math.floor(320 + (profile?.tapCount || 10) * 3)} eventos similares e preparou um briefing operacional personalizado. A equipa Marcianus receberá a proposta completa com setup de hardware, matchmaking e analytics.