import { useMemo, useState } from "react"; import { Search, Leaf, Zap, Hotel, Truck, Waves, Banknote, ArrowRight, ArrowLeft, MapPin, CheckCircle2, X, } from "lucide-react"; /* ------------------------------------------------------------------ */ /* Dados de exemplo (substituir depois por chamadas à API Laravel) */ /* ------------------------------------------------------------------ */ const SECTORS = [ { slug: "agronegocio", name: "Agronegócio", icon: Leaf, description: "Produção, agroprocessamento, irrigação e cadeias de valor agrícolas.", }, { slug: "energia", name: "Energia e Mineração", icon: Zap, description: "Energias renováveis, transição energética e mineração responsável.", }, { slug: "turismo", name: "Turismo", icon: Hotel, description: "Hotelaria, turismo costeiro, cultural e ecológico.", }, { slug: "infraestruturas", name: "Infraestruturas", icon: Truck, description: "Logística, transportes, parques industriais e energia.", }, { slug: "economia-azul", name: "Economia Azul", icon: Waves, description: "Pesca, aquacultura, portos e logística marítima.", }, { slug: "mercado-financeiro", name: "Mercado Financeiro", icon: Banknote, description: "Fintech, capital de risco e instrumentos financeiros.", }, ]; const PROVINCES = [ "Maputo Cidade", "Maputo Província", "Gaza", "Inhambane", "Sofala", "Manica", "Tete", "Zambézia", "Nampula", "Cabo Delgado", "Niassa", ]; const MATURITY_LEVELS = [ "Ideia identificada", "Pré-estudo disponível", "Estudo de viabilidade em curso", "Projecto estruturado", "Pronto para investimento", "Em negociação ou implementação", ]; const OPPORTUNITIES = [ { reference: "INV-MZ-AGR-001", title: "Unidade de processamento agrícola em Nampula", sector: "agronegocio", province: "Nampula", maturity: 3, amount: 2500000, financing: "Capital e parceria técnica", impact: "120 empregos directos e substituição de importações.", summary: "Instalação de uma unidade de processamento para agregar valor à produção agrícola local, reduzir perdas pós-colheita e melhorar o acesso a mercados.", featured: true, }, { reference: "INV-MZ-ENE-002", title: "Mini-rede solar para polo produtivo", sector: "energia", province: "Zambézia", maturity: 2, amount: 1200000, financing: "PPP ou financiamento misto", impact: "Acesso a energia para 40 unidades produtivas.", summary: "Solução de energia renovável para reforçar o fornecimento eléctrico a uma zona produtiva com potencial agrícola e comercial.", featured: true, }, { reference: "INV-MZ-TUR-003", title: "Eco-lodge costeiro com integração comunitária", sector: "turismo", province: "Inhambane", maturity: 1, amount: 1800000, financing: "Capital privado ou joint venture", impact: "Emprego local e conservação da faixa costeira.", summary: "Desenvolvimento de uma unidade turística com participação comunitária, focada em sustentabilidade e experiências autênticas.", featured: true, }, { reference: "INV-MZ-INF-004", title: "Centro logístico provincial", sector: "infraestruturas", province: "Sofala", maturity: 3, amount: 8500000, financing: "Concessão ou PPP", impact: "Redução de custos logísticos regionais.", summary: "Infraestrutura de armazenamento e distribuição para apoiar a comercialização de produtos regionais e reduzir perdas na cadeia.", featured: false, }, { reference: "INV-MZ-BLUE-005", title: "Processamento de pescado e cadeia fria", sector: "economia-azul", province: "Zambézia", maturity: 1, amount: 900000, financing: "Capital, crédito ou parceria operacional", impact: "Redução de perdas pós-captura na pesca artesanal.", summary: "Reforço da capacidade de conservação, processamento e distribuição de pescado para pequenos operadores locais.", featured: false, }, { reference: "INV-MZ-FIN-006", title: "Plataforma de crédito para PME agrícolas", sector: "mercado-financeiro", province: "Maputo Cidade", maturity: 2, amount: 3000000, financing: "Fundo de investimento ou parceiro financeiro", impact: "Acesso a financiamento para 300+ pequenas empresas.", summary: "Estrutura de financiamento dedicada a pequenas e médias empresas do sector agrícola com dificuldade de acesso a crédito bancário.", featured: false, }, ]; const money = (amount) => new Intl.NumberFormat("pt-MZ", { style: "currency", currency: "USD", maximumFractionDigits: 0, }).format(amount); const sectorOf = (slug) => SECTORS.find((s) => s.slug === slug); /* ------------------------------------------------------------------ */ /* Componentes */ /* ------------------------------------------------------------------ */ function TopBar({ onNavigate, requestCount }) { return (
{requestCount} pedido{requestCount === 1 ? "" : "s"} recebido {requestCount === 1 ? "" : "s"}
); } function Hero({ query, setQuery, onSearch, onNavigate }) { return (

Portal do Investidor

Oportunidades reais de investimento em Moçambique, organizadas por sector.

Consulte projectos por província e estágio de maturidade, compreenda os requisitos legais e fiscais, e manifeste interesse directamente junto da entidade promotora.

setQuery(e.target.value)} placeholder="Ex.: agronegócio, Nampula, energia..." className="w-full rounded-lg px-3 py-2.5 text-sm text-slate-900 outline-none ring-2 ring-transparent focus:ring-amber-400" />

{OPPORTUNITIES.length}

oportunidades

{SECTORS.length}

sectores

{PROVINCES.length}

províncias
); } function SectorGrid({ onSelectSector }) { return (

Sectores estratégicos

Explore as áreas prioritárias do programa de investimento nacional.

{SECTORS.map((sector) => { const Icon = sector.icon; const count = OPPORTUNITIES.filter( (o) => o.sector === sector.slug ).length; return ( ); })}
); } function OpportunityCard({ opportunity, onView, onInterest }) { const sector = sectorOf(opportunity.sector); return (
{opportunity.featured && ( Destaque )} {sector.name}

{opportunity.reference}

{opportunity.title}

{opportunity.province}

Investimento
{money(opportunity.amount)}
Maturidade
{MATURITY_LEVELS[opportunity.maturity]}
); } function OpportunitiesView({ filters, setFilters, onView, onInterest }) { const results = useMemo(() => { return OPPORTUNITIES.filter((o) => { const matchesQuery = filters.query ? (o.title + o.province + sectorOf(o.sector).name) .toLowerCase() .includes(filters.query.toLowerCase()) : true; const matchesSector = filters.sector ? o.sector === filters.sector : true; const matchesProvince = filters.province ? o.province === filters.province : true; const matchesMaturity = filters.maturity !== "" ? o.maturity === Number(filters.maturity) : true; return matchesQuery && matchesSector && matchesProvince && matchesMaturity; }); }, [filters]); return (

Oportunidades de investimento

{results.length} oportunidade{results.length === 1 ? "" : "s"}{" "} encontrada{results.length === 1 ? "" : "s"}.

setFilters({ ...filters, query: e.target.value })} placeholder="Pesquisar..." className="rounded-lg border border-slate-200 px-3 py-2 text-sm" />
{results.length === 0 ? (
Nenhuma oportunidade corresponde aos filtros seleccionados.
) : (
{results.map((o) => ( ))}
)}
); } function OpportunityDetail({ opportunity, onBack, onInterest }) { const sector = sectorOf(opportunity.sector); return (

{opportunity.reference}

{opportunity.title}

{opportunity.province} · {sector.name}

{opportunity.summary}

Investimento estimado
{money(opportunity.amount)}
Maturidade
{MATURITY_LEVELS[opportunity.maturity]}
Financiamento pretendido
{opportunity.financing}
Impacto esperado
{opportunity.impact}
A informação legal, fiscal e financeira apresentada é orientadora e deve ser confirmada junto das entidades competentes antes da tomada de decisão.
); } function InterestForm({ preselected, onSubmitted }) { const [form, setForm] = useState({ name: "", email: "", phone: "", investorType: "", country: "Moçambique", sectorInterest: preselected ? sectorOf(preselected.sector).name : "", opportunityReference: preselected ? preselected.reference : "", investmentRange: "", message: "", privacyConsent: false, }); const [errors, setErrors] = useState({}); const [result, setResult] = useState(null); function update(field, value) { setForm((prev) => ({ ...prev, [field]: value })); } function validate() { const next = {}; if (form.name.trim().length < 3) next.name = "Indique o nome completo."; if (!/^\S+@\S+\.\S+$/.test(form.email)) next.email = "Indique um email válido."; if (!form.investorType) next.investorType = "Seleccione o tipo de investidor."; if (!form.sectorInterest.trim()) next.sectorInterest = "Indique o sector de interesse."; if (form.message.trim().length < 20) next.message = "A mensagem deve ter pelo menos 20 caracteres."; if (!form.privacyConsent) next.privacyConsent = "É necessário aceitar a política de privacidade."; setErrors(next); return Object.keys(next).length === 0; } function handleSubmit(event) { event.preventDefault(); if (!validate()) return; const reference = `IR-${new Date().getFullYear()}-${String( Math.floor(Math.random() * 900000) + 100000 )}`; setResult({ reference }); onSubmitted?.(); } if (result) { return (

Manifestação de interesse registada

A sua referência é {result.reference}. A equipa do portal irá analisar o pedido e poderá solicitar informação adicional.

); } return (

Manifestar interesse

Preencha os dados abaixo para que a equipa do portal possa analisar o seu interesse e entrar em contacto.

{preselected && (
Oportunidade seleccionada: {preselected.title} ( {preselected.reference})
)}
update("name", e.target.value)} /> update("email", e.target.value)} /> update("phone", e.target.value)} /> update("country", e.target.value)} />