function OportunidadesScreen({ go }) {
  const { PageHeader, Card, Input, Button, Table, Badge, Toast } = window.VRticeDesignSystem_d763eb;
  const [rows,setRows]=React.useState([]),[q,setQ]=React.useState(''),[toast,setToast]=React.useState(''),[loading,setLoading]=React.useState(true);
  const load=React.useCallback(async()=>{setLoading(true);const cfg=window.VX_SUPABASE||{};const c=cfg.url&&cfg.anonKey?window.supabase?.createClient?.(cfg.url,cfg.anonKey):null;if(!c){setLoading(false);setToast('Banco não configurado neste ambiente.');return;}const {data,error}=await c.from('licitacoes').select('id,id_contratacao_pncp,id_compra,objeto,uf,valor_estimado,valor_homologado,status,data,empresa:empresas(razao_social)').order('created_at',{ascending:false}).limit(100);if(error)setToast('Não foi possível carregar as licitações: '+(error.message||error));else setRows(data||[]);setLoading(false);},[]);
  React.useEffect(()=>{load()},[load]);
  const filtered=rows.filter(r=>!q||Object.values(r).join(' ').toLowerCase().includes(q.toLowerCase()));
  const activate=async r=>{const x=await window.VxOpportunityRuntime.ensureOpportunity(r.id);if(x.error){setToast(x.error);return;}setToast('Oportunidade criada no contexto operacional.');setTimeout(()=>go('score',{id:x.data.id}),500)};
  const money=v=>v==null?'—':'R$ '+Number(v).toLocaleString('pt-BR',{minimumFractionDigits:0});
  return <BlockGrid.Auto id="oportunidades"><PageHeader eyebrow="Oportunidades" title="Intelligence → Oportunidade" description="Transforme uma contratação pública em uma oportunidade operacional e envie-a para Match e Go/No-Go." actions={<Button variant="secondary" onClick={load}>Atualizar</Button>}/><Card variant="flat" padding={20}><Input placeholder="Buscar por PNCP, objeto, empresa ou UF" value={q} onChange={e=>setQ(e.target.value)}/></Card><Card variant="flat" padding={0} gap={0} style={{overflow:'hidden'}}><VxTable id="oportunidades" minWidth={1050} columns={[{key:'id_contratacao_pncp',label:'PNCP',width:'250px',mono:true},{key:'objeto',label:'Objeto',width:'minmax(300px,1fr)',strong:true},{key:'uf',label:'UF',width:'70px',mono:true},{key:'valor',label:'Valor',width:'130px',render:r=><span style={{fontFamily:'var(--font-mono)'}}>{money(r.valor_homologado??r.valor_estimado)}</span>},{key:'status',label:'Status',width:'140px',render:r=><Badge tone={r.status==='HOMOLOGADO'?'success':'neutral'}>{r.status||'—'}</Badge>},{key:'acao',label:'Pipeline',width:'150px',render:r=><Button size="sm" onClick={e=>{e.stopPropagation();activate(r)}}>Avaliar</Button>}]} rows={filtered}/></Card>{loading&&<span style={{color:'var(--text-muted)',fontSize:13}}>Carregando inteligência PNCP…</span>}{toast&&<Toast>{toast}</Toast>}</BlockGrid.Auto>;
}
window.OportunidadesScreen=OportunidadesScreen;