1import{a as Fe}from"./rolldown-runtime-DS2seoW7.js";import{a as I,c as Ke,d as Z,f as V,i as U,l as Qe,n as J,o as ee,p as $,r as Ie,s as H,t as Ve,u as Ue,y as $e}from"./vendor-charts-BLlC71g6.js";import{d as Be}from"./vendor-markdown-BnDz3YsI.js";import{n as N}from"./vendor-query-BSXLthyd.js";import{t as Q}from"./button-BYAM3dpJ.js";import{t as Pe}from"./createLucideIcon-CTJyoloH.js";import{t as We}from"./arrow-down-Cip7yMtY.js";import{t as ze}from"./arrow-up-down-CbUd4CXq.js";import{t as He}from"./arrow-up-Dee7xdW6.js";import{t as Ge}from"./award-nJYZvXUl.js";import{r as me}from"./logo-Bf61d8dq.js";import{t as Xe}from"./AdminLayout-ysxYvXS3.js";import{t as Ye}from"./circle-help-Dxg4oap0.js";import{t as Ze}from"./dollar-sign-DGOAdQZO.js";import{t as Je}from"./eye-Jn3WNgMI.js";import{t as es}from"./graduation-cap-CZ5KNhsJ.js";import{t as ss}from"./handshake-CKoeshLZ.js";import{t as re}from"./info-BB_duDX1.js";import{t as ue}from"./map-pin-Bp6M_MHV.js";import{t as ne}from"./message-square-CFynoRa3.js";import{n as as}from"./EmailBodyEditor-CGAcrQPn.js";import{t as ts}from"./percent-BJJW1mlD.js";import{t as rs}from"./send-o3gx670p.js";import{t as xe}from"./scroll-area-CKOEXinl.js";import{t as oe}from"./target-I3MpSTw5.js";import{t as ns}from"./trending-down-BZw9oW7h.js";import{t as os}from"./trending-up-BoVSi3JK.js";import{t as ls}from"./triangle-alert-B59X7Li3.js";import{t as is}from"./users-ORkHi4eV.js";import{t as le}from"./zap-CZUInCg9.js";import{t as ie}from"./utils-Da1pCdmc.js";import{t as _}from"./client-G18cNx3L.js";import{A as pe,I as cs,M as A,N as ds,O as he,h as fe,j as je,k as ge,m as P}from"./index-C3yrWq7m.js";import{a as T,i as L,n as q,t as M}from"./card-CgHkyPTd.js";import{a as se,i as v,n as ae,o as E,r as y,t as te}from"./table-Cbv1opTl.js";import{t as W}from"./badge-TysjFtoF.js";import{t as F}from"./skeleton-xuEmN63V.js";import{a as ms,n as us,o as xs,s as ps,t as hs}from"./dialog-Dh9ZL44J.js";import{t as fs}from"./progress-LdPwFTfQ.js";import{a as _e,i as ve,n as ye,r as Y,t as Ne}from"./select-5da7RMI5.js";import{t as js}from"./pt-BR-BSS59O1r.js";import{t as be}from"./format-DMeFPG23.js";import{t as gs}from"./parseISO-sQ1BUUrp.js";import{t as _s}from"./useAdminCheck-CVicxlRQ.js";import{t as z}from"./UserDetailsDialog-Yt_-rs_q.js";import{t as G}from"./switch-DgZFHfog.js";import{a as ke,i as we,n as Se,t as Ce}from"./sheet-CquqLWUQ.js";
1import{i as qe,o as Me,r as Te,s as Le,t as De}from"./drawer-CCU0QEhG.js";var vs=Pe("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]),h=Fe($e(),1);function ys(r=1,i=12,o=90,l){const c=N({queryKey:["okr-summary",r],queryFn:async()=>{const{data:u,error:j}=await _.rpc("get_okr_summary",{p_months:r});if(j)throw j;return u}}),m=N({queryKey:["okr-funnel"],queryFn:async()=>{const{data:u,error:j}=await _.rpc("get_funnel_stages");if(j)throw j;return u||[]}}),p=N({queryKey:["okr-trend",i],queryFn:async()=>{const{data:u,error:j}=await _.rpc("get_weekly_trend",{p_weeks:i});if(j)throw j;return u||[]}}),t=N({queryKey:["okr-utm",o],queryFn:async()=>{const{data:u,error:j}=await _.rpc("get_utm_performance",{p_days:o});if(j)throw j;return u||[]}}),n=N({queryKey:["okr-targets"],queryFn:async()=>{const{data:u,error:j}=await _.from("okr_targets").select("*");if(j)throw j;return u||[]}}),s=l||void 0,a=N({queryKey:["okr-course-funnel",s],queryFn:async()=>{const u={};s&&(u.p_course_id=s);const{data:j,error:w}=await _.rpc("get_course_funnel",u);if(w)throw w;return j||[]}}),x=N({queryKey:["okr-lesson-ranking",s],queryFn:async()=>{const u={};s&&(u.p_course_id=s);const{data:j,error:w}=await _.rpc("get_lesson_ranking",u);if(w)throw w;return j||[]}});return{summary:c.data,funnel:m.data,trend:p.data,utm:t.data,targets:n.data,courseFunnel:a.data,lessonRanking:x.data,isLoading:c.isLoading||m.isLoading||p.isLoading||t.isLoading,refetch:()=>{c.refetch(),m.refetch(),p.refetch(),t.refetch(),n.refetch(),a.refetch(),x.refetch()}}}function Oe(r=30,i=8){const o=N({queryKey:["whatsapp-okr-optin",r],queryFn:async()=>{const{data:n,error:s}=await _.rpc("get_whatsapp_optin_rate",{p_days:r});if(s)throw s;return n}}),l=N({queryKey:["whatsapp-okr-impact",r],queryFn:async()=>{const{data:n,error:s}=await _.rpc("get_whatsapp_course_impact",{p_days:r});if(s)throw s;return n}}),c=N({queryKey:["whatsapp-okr-optout",r],queryFn:async()=>{const{data:n,error:s}=await _.rpc("get_whatsapp_optout_rate",{p_days:r});if(s)throw s;return n}}),m=N({queryKey:["whatsapp-okr-trend",i],queryFn:async()=>{const{data:n,error:s}=await _.rpc("get_whatsapp_weekly_trend",{p_weeks:i});if(s)throw s;return n||[]}}),p=N({queryKey:["whatsapp-okr-volume",r],queryFn:async()=>{const n=new Date;n.setDate(n.getDate()-r);const{count:s,error:a}=await _.from("whatsapp_messages_log").select("*",{count:"exact",head:!0}).gte("created_at",n.toISOString());if(a)throw a;return s||0}}),t=o.isLoading||l.isLoading||c.isLoading||m.isLoading||p.isLoading;return{optin:o.data,impact:l.data,optout:c.data,trend:m.data,volume:p.data,isLoading:t}}var e=Be(),Ns={Cadastros:"Novos usuários que criaram conta na plataforma no perÃodo","Visitantes únicos":"Quantidade de pessoas diferentes que acessaram o site no mês",MQLs:"Marketing Qualified Lead: lead que demonstrou interesse real (ex: visitou páginas-chave, baixou material)",SQLs:"Sales Qualified Lead: lead pronto para contato comercial, com alta pontuação de engajamento",Deals:"Oportunidades de negócio abertas no CRM (Pipedrive)",MatrÃculas:"Usuários que se matricularam em cursos da plataforma","Taxa MQLâSQL":"Percentual de leads qualificados pelo marketing que avançam para qualificação comercial",Receita:"Valor total faturado no perÃodo em Reais (R$)",UTM:"Parâmetros de rastreamento em URLs para identificar a origem das campanhas de marketing",OKR:"Objectives and Key Results: metodologia de definição e acompanhamento de metas",CPL:"Custo Por Lead: quanto se gasta em média para adquirir cada lead"};function Re({term:r,className:i}){const o=Ns[r];return o?(0,e.jsx)(pe,{delayDuration:200,children:(0,e.jsxs)(he,{children:[(0,e.jsx)(je,{asChild:!0,children:(0,e.jsx)(Ye,{className:`inline h-3.5 w-3.5 text-muted-foreground cursor-help ${i??""}`})}),(0,e.jsx)(ge,{side:"top",className:"max-w-[260px] text-xs",children:o})]})}):null}function ce(r,i){return i==="currency"?`R$ ${r.toLocaleString("pt-BR",{minimumFractionDigits:2})}`:i==="percent"?`${r}
1%`:r.toLocaleString("pt-BR")}function b({label:r,value:i,previousValue:o,target:l,format:c="number",icon:m,tooltip:p,onClick:t}){const n=o!==void 0&&o>0?Math.round((i-o)/o*100):void 0,s=l?Math.min(Math.round(i/l*100),100):void 0;return(0,e.jsxs)(M,{className:ie(t&&"cursor-pointer transition-colors hover:bg-accent/50"),onClick:t,children:[(0,e.jsxs)(L,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[(0,e.jsxs)(T,{className:"text-sm font-medium flex items-center gap-1",children:[r,p&&(0,e.jsx)(Re,{term:p})]}),(0,e.jsx)(m,{className:"h-4 w-4 text-muted-foreground"})]}),(0,e.jsxs)(q,{children:[(0,e.jsx)("div",{className:"text-2xl font-bold",children:ce(i,c)}),(0,e.jsx)("div",{className:"mt-1 flex items-center gap-2",children:n!==void 0&&(0,e.jsxs)("span",{className:ie("flex items-center text-xs font-medium",n>0?"text-green-600":n<0?"text-red-600":"text-muted-foreground"),children:[n>0?(0,e.jsx)(He,{className:"mr-0.5 h-3 w-3"}):n<0?(0,e.jsx)(We,{className:"mr-0.5 h-3 w-3"}):(0,e.jsx)(as,{className:"mr-0.5 h-3 w-3"}),Math.abs(n),"% vs anterior"]})}),l!==void 0&&s!==void 0&&(0,e.jsxs)("div",{className:"mt-2",children:[(0,e.jsxs)("div",{className:"mb-1 flex justify-between text-xs text-muted-foreground",children:[(0,e.jsxs)("span",{children:["Meta: ",ce(l,c)]}),(0,e.jsxs)("span",{children:[s,"%"]})]}),(0,e.jsx)(fs,{value:s,className:"h-1.5"})]})]})]})}function B({title:r,description:i,icon:o}){return(0,e.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,e.jsx)("div",{className:"mb-4 text-muted-foreground",children:o||(0,e.jsx)(cs,{className:"h-10 w-10"})}),(0,e.jsx)("h3",{className:"text-lg font-semibold",children:r}),(0,e.jsx)("p",{className:"mt-1 max-w-md text-sm text-muted-foreground",children:i})]})}var bs={cold:"Frio (0â24)",warm:"Morno (25â54)",hot:"Quente (55â79)",opportunity:"Oportunidade (80+)"};function ks({stage:r,open:i,onOpenChange:o}){const[l,c]=(0,h.useState)(null),[m,p]=(0,h.useState)(!1),{data:t,isLoading:n}=N({queryKey:["funnel-stage-leads",r],enabled:!!r&&i,queryFn:async()=>{const{data:s,error:a}=await _.rpc("get_funnel_leads",{p_stage:r});if(a)throw a;return s||[]}});return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(Ce,{open:i,onOpenChange:o,children:(0,e.jsxs)(Se,{className:"w-[400px] sm:w-[540px] overflow-hidden",children:[(0,e.jsx)(we,{children:(0,e.jsxs)(ke,{children:["Leads â ",bs[r||""]||r]})}),(0,e.jsx)(xe,{className:"h-[calc(100vh-8rem)] mt-4",children:(0,e.jsx)("div",{className:"space-y-3 pr-3",children:n?Array.from({length:5}).map((s,a)=>(0,e.jsx)(F,{className:"h-20"},a)):!t||t.length===0?(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:"Nenhum lead neste estágio."}):t.map(s=>{const a=s.display_name||s.full_name||s.email||"Sem nome",x=s.company_name,u=[s.city,s.state].filter(Boolean).join(", ");return(0,e.jsxs)("div",{className:"flex items-start justify-between rounded-lg border p-3 cursor-pointer hover:bg-accent/50 transition-colors",onClick:()=>{c(s.user_id),p(!0)},children:[(0,e.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,e.jsx)("p",{className:"truncate font-medium text-sm",children:a}),x&&(0,e.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:x}),u&&(0,e.jsxs)("p",{className:"truncate text-xs text-muted-foreground flex items-center gap-1",children:[(0,e.jsx)(ue,{className:"h-3 w-3 shrink-0"}),u]}),s.email&&(0,e.jsxs)("p",{className:"truncate text-xs text-muted-foreground flex items-center gap-1",children:[(0,e.jsx)(me,{className:"h-3 w-3 shrink-0"}),s.email]}),s.last_event&&(0,e.jsxs)("p",{className:"truncate text-xs text-muted-foreground",children:["Ãltimo: ",s.last_event]}
1)]}),(0,e.jsxs)(W,{variant:"secondary",className:"ml-2 shrink-0",children:[s.score," pts",s.score_acumulado!=null&&s.score_acumulado!==s.score&&(0,e.jsxs)("span",{className:"ml-1 opacity-60",children:["(Σ ",s.score_acumulado,")"]})]})]},s.user_id)})})})]})}),(0,e.jsx)(z,{userId:l,open:m,onOpenChange:p,showEnrollmentActions:!0})]})}var ws={cold:"hsl(210, 70%, 55%)",warm:"hsl(142, 60%, 45%)",hot:"hsl(38, 90%, 50%)",opportunity:"hsl(0, 70%, 50%)"},Ss={cold:"Frio (0â24)",warm:"Morno (25â54)",hot:"Quente (55â79)",opportunity:"Oportunidade (80+)"};function Cs({data:r}){const[i,o]=(0,h.useState)(null),[l,c]=(0,h.useState)(!1);if(!r||r.length===0)return(0,e.jsxs)(M,{children:[(0,e.jsx)(L,{children:(0,e.jsx)(T,{children:"Funil de Conversão"})}),(0,e.jsx)(q,{children:(0,e.jsx)(B,{title:"Sem dados de funil",description:"Nenhum lead pontuado ainda. Verifique se o scoring está ativo e se há usuários autenticados navegando."})})]});const m=r.map((t,n)=>{const s=n>0?r[n-1].total:void 0,a=s&&s>0?Math.round(t.total/s*100):void 0;return{name:Ss[t.stage]||t.stage,stage:t.stage,total:t.total,score_medio:t.score_medio,novos_7d:t.novos_7d,convRate:a}}),p=t=>{t?.stage&&(o(t.stage),c(!0))};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(M,{children:[(0,e.jsx)(L,{children:(0,e.jsx)(T,{children:"Funil de Conversão"})}),(0,e.jsxs)(q,{children:[(0,e.jsx)($,{width:"100%",height:250,children:(0,e.jsxs)(J,{data:m,layout:"vertical",margin:{left:120,right:30},children:[(0,e.jsx)(I,{type:"number"}),(0,e.jsx)(U,{type:"category",dataKey:"name",width:110,tick:{fontSize:12}}),(0,e.jsx)(V,{content:({active:t,payload:n})=>{if(!t||!n?.length)return null;const s=n[0].payload;return(0,e.jsxs)("div",{className:"rounded-lg border bg-background p-3 shadow-sm",children:[(0,e.jsx)("p",{className:"font-semibold",children:s.name}),(0,e.jsxs)("p",{className:"text-sm",children:["Total: ",s.total]}),(0,e.jsxs)("p",{className:"text-sm",children:["Score médio: ",s.score_medio]}),(0,e.jsxs)("p",{className:"text-sm",children:["Novos 7d: ",s.novos_7d]}),s.convRate!==void 0&&(0,e.jsxs)("p",{className:"text-sm text-muted-foreground",children:["Conv. do anterior: ",s.convRate,"%"]}),(0,e.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:"Clique para ver leads"})]})}}),(0,e.jsx)(ee,{dataKey:"total",radius:[0,4,4,0],className:"cursor-pointer",onClick:p,children:m.map(t=>(0,e.jsx)(Z,{fill:ws[t.stage]||"hsl(var(--primary))"},t.stage))})]})}),(0,e.jsx)("div",{className:"mt-2 flex flex-wrap gap-4 text-xs text-muted-foreground",children:m.map(t=>(0,e.jsxs)("span",{className:"cursor-pointer hover:text-foreground transition-colors",onClick:()=>{o(t.stage),c(!0)},children:[t.name,": ",(0,e.jsx)("strong",{children:t.total}),t.convRate!==void 0&&` (${t.convRate}% conv.)`]},t.stage))})]})]}),(0,e.jsx)(ks,{stage:i,open:l,onOpenChange:c})]})}var de=[{key:"cadastros",label:"Cadastros",color:"hsl(210, 70%, 55%)"},{key:"mqls",label:"MQLs",color:"hsl(142, 60%, 45%)"},{key:"sqls",label:"SQLs",color:"hsl(38, 90%, 50%)"},{key:"deals",label:"Deals",color:"hsl(0, 70%, 50%)"}];function qs({data:r,onWeeksChange:i,weeks:o}){const[l,c]=(0,h.useState)({cadastros:!0,mqls:!0,sqls:!0,deals:!0});if(!r||r.length===0)return(0,e.jsxs)(M,{children:[(0,e.jsx)(L,{children:(0,e.jsx)(T,{children:"Tendência Semanal"})}),(0,e.jsx)(q,{children:(0,e.jsx)(B,{title:"Sem dados de tendência",description:"Dados insuficientes para gerar tendência. Aguarde mais semanas de atividade."})})]});const m=r.map(t=>({...t,label:be(gs(t.semana),"'S'w MMM",{locale:js})})),p=t=>c(n=>({...n,[t]:!n[t]}));return(0,e.jsxs)(M,{children:[(0,e.jsxs)(L,{className:"flex flex-row items-center justify-between",children:[(0,e.jsx)(T,{children:"Tendência Semanal"}),(0,e.jsx)("div",{className:"flex gap-1",children:[4,8,12].map(t=>(0,e.jsxs)(Q,{size:"sm",variant:o===t?"default":"outline",onClick:()=>i(t),children:[t,"s"]},t))})]}),(0,e.jsxs)(q,{children:[(0,e.jsx)("div",{className:"mb-3 flex flex-wrap gap-3",children:de.map(t=>(0,e.jsxs)("button",{onClick:()=>p(t.key),className:"flex items-center gap-1.5 text-xs transition-opacity",style:{opacity:l[t.key]?1:.4},children:[(0,e.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full",style:{backgroundColor:t.color}}),t.label]},t.key))}),(0,e.jsx)($,{width:"100%",height:300,children:(0,e.jsxs)(Ie,{data:m,children:[(0,e.jsx)(I,{dataKey:"label",tick:{fontSize:11}}),(0,e.jsx)(U,{allowDecimals:!1}),(0,e.jsx)(V,{}),de.map(t=>l[t.key]?(0,e.jsx)(Ke,{type:"monotone",dataKey:t.key,stroke:t.color,strokeWidth:2,dot:{r:3},name:t.label},t.key):null)]})})]})]})}function Ms({data:r}){const[i,o]=(0,h.useState)("mqls"),[l,c]=(0,h.useState)("desc"),[m,p]=(0,h.useState)(new Map),[t,n]=(0,h.useState)(null),[s,a]=(0,h.useState)(""),x=new Date().toISOString().slice(0,7)+"-01";(0,h.useEffect)(()=>{_.from("campaign_budgets").select("utm_campaign, utm_source, budget_brl").eq("month_ref",x).then(({data:d})=>{if(d){const f=new Map;d.forEach(g=>f.set(g.utm_campaign,g.budget_brl)),p(f)}})},[x]);const u=!r||r.length===0||r.length===1&&r[0].utm_campaign==="(sem campanha)";if(!r||r.length===0)return(0,e.jsxs)(M,{children:[(0,e.jsx)(L,{children:(0,e.jsx)(T,{children:"Performance por Campanha (UTM)"})}),(0,e.jsx)(q,{children:(0,e.jsx)(B,{title:"Sem dados de campanhas",description:"Nenhuma visita com parâmetros UTM foi registrada nos últimos 90 dias. Adicione ?utm_source=...&utm_campaign=... nas URLs das suas campanhas de mÃdia."})})]});const j=d=>{i===d?c(f=>f==="asc"?"desc":"asc"):(o(d),c("desc"))},w=[...r].sort((d,f)=>{const g=(d[i]??0)-(f[i]??0);return l==="asc"?g:-g}),O=async d=>{const f=parseFloat(s);if(isNaN(f)||f<0){A.error("Valor inválido");return}const{error:g}=await _.from("campaign_budgets").upsert({utm_campaign:d,month_ref:x,budget_brl:f,utm_source:""},{onConflict:"utm_campaign,month_ref"});g?A.error("Erro ao salvar orçamento"):(p(D=>new Map(D).set(d,f)),A.success("Orçamento salvo")),n(null)},K=(d,f)=>{const g=m.get(d);return!g||g===0?null:f===0?"â":`R$ ${(g/f).toFixed(2)}`},k=({label:d,k:f})=>(0,e.jsxs)(Q,{variant:"ghost",size:"sm",className:"-ml-3 h-8 text-xs",onClick:()=>j(f),children:[d," ",(0,e.jsx)(ze,{className:"ml-1 h-3 w-3"})]});return(0,e.jsxs)(M,{children:[(0,e.jsxs)(L,{children:[(0,e.jsx)(T,{children:"Performance por Campanha (UTM)"}),u&&(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:"â ï¸ Todo o tráfego é direto. Adicione parâmetros UTM nas suas campanhas para ver dados aqui."})]}),(0,e.jsx)(q,{className:"overflow-x-auto",children:(0,e.jsxs)(te,{children:[(0,e.jsx)(se,{children:(0,e.jsxs)(E,{children:[(0,e.jsx)(v,{children:"Campanha"}),(0,e.jsx)(v,{children:"Fonte/MÃdia"}),(0,e.jsx)(v,{children:(0,e.jsx)(k,{label:"Visitantes",k:"visitantes"})}),(0,e.jsx)(v,{children:(0,e.jsx)(k,{label:"Leads",k:"leads_gerados"})}),(0,e.jsx)(v,{children:(0,e.jsx)(k,{label:"MQLs",k:"mqls"})}),(0,e.jsx)(v,{children:(0,e.jsx)(k,{label:"SQLs",k:"sqls"})}),(0,e.jsx)(v,{children:(0,e.jsx)(k,{label:"Deals",k:"deals"})}),(0,e.jsx)(v,{children:(0,e.jsx)(k,{label:"VâMQL %",k:"taxa_visita_mql"})}),(0,e.jsx)(v,{className:"text-xs",children:"Orçamento (R$)"}),(0,e.jsx)(v,{className:"text-xs",children:"CPL (R$)"})]})}),(0,e.jsx)(ae,{children:w.map((d,f)=>{const g=t===d.utm_campaign,D=m.get(d.utm_campaign);return(0,e.jsxs)(E,{children:[(0,e.jsx)(y,{className:"font-medium",children:d.utm_campaign}),(0,e.jsxs)(y,{className:"text-muted-foreground",children:[d.utm_source," / ",d.utm_medium]}),(0,e.jsx)(y,{children:d.visitantes}),(0,e.jsx)(y,{children:d.leads_gerados}),(0,e.jsx)(y,{children:d.mqls}),(0,e.jsx)(y,{children:d.sqls}),(0,e.jsx)(y,{children:d.deals}),(0,e.jsxs)(y,{children:[d.taxa_visita_mql,"%"]}),(0,e.jsx)(y,{children:g?(0,e.jsx)(fe,{type:"number",className:"h-7 w-24 text-xs",value:s,onChange:S=>a(S.target.value),onBlur:()=>O(d.utm_campaign),onKeyDown:S=>{S.key==="Enter"&&O(d.utm_campaign),S.key==="Escape"&&n(null)},autoFocus:!0}):(0,e.jsx)("span",{className:"cursor-pointer text-xs hover:text-primary",onClick:()=>{n(d.utm_campaign),a(D?.toString()||"")}
1,children:D!=null?`R$ ${D.toLocaleString("pt-BR")}`:"â"})}),(0,e.jsx)(y,{className:"text-xs font-medium",children:K(d.utm_campaign,d.leads_gerados)||"â"})]},f)})})]})})]})}var Ts={mqls_mes:"MQLs",cadastros_mes:"Cadastros",matriculas_mes:"MatrÃculas",sqls_mes:"SQLs",deals_mes:"Deals"},Ls={mqls_mes:"Verificar campanhas de mÃdia e scoring",cadastros_mes:"Verificar fontes de tráfego e landing pages",matriculas_mes:"Revisar funil de cursos e cupons",sqls_mes:"Revisar qualificação de leads",deals_mes:"Verificar integração Pipedrive"};function Ds({summary:r,targets:i,whatsapp:o}){const[l,c]=(0,h.useState)(new Set),m=new Date,p=new Date(m.getFullYear(),m.getMonth()+1,0).getDate(),t=m.getDate()/p,n=[];r&&i&&i.length>0&&i.forEach(a=>{const x=r[a.metric_key];if(x===void 0)return;const u=Math.round(a.target_value*t);x<u*.7&&n.push({kr:Ts[a.metric_key]||a.metric_key,atual:x,esperado:u,meta:a.target_value,acao:Ls[a.metric_key]||"Verificar métricas"})}),o?.optin&&o.optin.total_enrollments>=10&&o.optin.rate<40&&n.push({kr:"WA Opt-in",atual:o.optin.rate,esperado:40,meta:100,acao:"Taxa de opt-in WhatsApp abaixo de 40%. Revisar diálogos de consentimento no cadastro e matrÃcula."}),o?.optout&&o.optout.total_consents>=10&&o.optout.rate>3&&n.push({kr:"WA Opt-out",atual:o.optout.rate,esperado:3,meta:0,acao:"Taxa de opt-out WhatsApp acima de 3%. Revisar frequência e relevância das mensagens."}),o?.impact&&o.impact.impact_pp<5&&o.optin&&o.optin.with_optin>5&&n.push({kr:"WA Impacto",atual:o.impact.impact_pp,esperado:5,meta:20,acao:"Impacto WhatsApp na conclusão abaixo de 5pp. Revisar templates e sequências de curso."});const s=n.filter(a=>!l.has(a.kr));return s.length===0?null:(0,e.jsx)("div",{className:"space-y-2",children:s.map(a=>(0,e.jsxs)("div",{className:"flex items-start gap-3 rounded-lg border border-amber-300 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-950/30",children:[(0,e.jsx)(ls,{className:"mt-0.5 h-5 w-5 shrink-0 text-amber-600"}),(0,e.jsxs)("div",{className:"flex-1 text-sm",children:[(0,e.jsxs)("p",{className:"font-semibold text-amber-800 dark:text-amber-300",children:[a.kr,": ",a.atual," de ",a.meta," (esperado ~",a.esperado," para hoje)"]}),(0,e.jsx)("p",{className:"text-amber-700 dark:text-amber-400",children:a.acao})]}),(0,e.jsx)("button",{onClick:()=>c(x=>new Set(x).add(a.kr)),className:"text-amber-500 hover:text-amber-700",children:(0,e.jsx)(ds,{className:"h-4 w-4"})})]},a.kr))})}var Os={matriculado:"Matriculados",em_progresso:"Em Progresso",concluido:"ConcluÃdos",certificado:"Certificados"};function Rs({stage:r,open:i,onOpenChange:o,courseId:l}){const[c,m]=(0,h.useState)(null),[p,t]=(0,h.useState)(!1),{data:n,isLoading:s}=N({queryKey:["course-funnel-users",r,l],queryFn:async()=>{const a={p_stage:r};l&&(a.p_course_id=l);const{data:x,error:u}=await _.rpc("get_course_funnel_users",a);if(u)throw u;return x||[]},enabled:i&&!!r});return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(De,{open:i,onOpenChange:o,children:(0,e.jsxs)(Te,{className:"max-h-[85vh]",children:[(0,e.jsxs)(Me,{children:[(0,e.jsx)(Le,{children:Os[r||""]||r}),(0,e.jsx)(qe,{children:n?`${n.length} registros (máx. 200)`:"Carregando..."})]}),(0,e.jsx)("div",{className:"overflow-auto px-4 pb-6",children:s?(0,e.jsx)("div",{className:"space-y-2",children:Array.from({length:5}).map((a,x)=>(0,e.jsx)(F,{className:"h-10 w-full"},x))}):(0,e.jsxs)(te,{children:[(0,e.jsx)(se,{children:(0,e.jsxs)(E,{children:[(0,e.jsx)(v,{children:"Nome"}),(0,e.jsx)(v,{children:"Empresa"}),(0,e.jsx)(v,{children:"Curso"}),(0,e.jsx)(v,{className:"text-right",children:"Progresso"}),(0,e.jsx)(v,{children:"MatrÃcula"})]})}),(0,e.jsx)(ae,{children:n?.map(a=>(0,e.jsxs)(E,{className:"cursor-pointer hover:bg-accent/50 transition-colors",onClick:()=>
1{m(a.user_id),t(!0)},children:[(0,e.jsxs)(y,{children:[(0,e.jsx)("div",{className:"font-medium",children:a.display_name||a.full_name||"â"}),(0,e.jsx)("div",{className:"text-xs text-muted-foreground",children:a.email})]}),(0,e.jsx)(y,{children:a.company_name||"â"}),(0,e.jsx)(y,{className:"max-w-[200px] truncate",children:a.course_title}),(0,e.jsxs)(y,{className:"text-right",children:[a.progress_percentage,"%"]}),(0,e.jsx)(y,{className:"text-xs",children:new Date(a.enrolled_at).toLocaleDateString("pt-BR")})]},`${a.user_id}-${a.course_title}`))})]})})]})}),(0,e.jsx)(z,{userId:c,open:p,onOpenChange:t,showEnrollmentActions:!0})]})}var As={matriculado:"hsl(210, 70%, 55%)",em_progresso:"hsl(38, 90%, 50%)",concluido:"hsl(142, 60%, 45%)",certificado:"hsl(270, 60%, 55%)"};function Es({data:r,courses:i,selectedCourseId:o,onCourseChange:l}){const[c,m]=(0,h.useState)(null),[p,t]=(0,h.useState)(!1),n=(r||[]).map((a,x)=>{const u=x>0?r[x-1].total:void 0,j=u&&u>0?Math.round(a.total/u*100):void 0;return{...a,convRate:j}}),s=a=>{a?.stage&&(m(a.stage),t(!0))};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(M,{children:[(0,e.jsxs)(L,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[(0,e.jsx)(T,{children:"Funil de Capacitação"}),(0,e.jsxs)(Ne,{value:o||"all",onValueChange:a=>l(a==="all"?null:a),children:[(0,e.jsx)(ve,{className:"w-[220px]",children:(0,e.jsx)(_e,{placeholder:"Todos os cursos"})}),(0,e.jsxs)(ye,{children:[(0,e.jsx)(Y,{value:"all",children:"Todos os cursos"}),i.map(a=>(0,e.jsx)(Y,{value:a.id,children:a.title},a.id))]})]})]}),(0,e.jsx)(q,{children:!r||r.length===0?(0,e.jsx)(B,{title:"Sem dados de capacitação",description:"Nenhuma matrÃcula encontrada ainda."}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)($,{width:"100%",height:220,children:(0,e.jsxs)(J,{data:n,layout:"vertical",margin:{left:120,right:30},children:[(0,e.jsx)(I,{type:"number"}),(0,e.jsx)(U,{type:"category",dataKey:"label",width:110,tick:{fontSize:12}}),(0,e.jsx)(V,{content:({active:a,payload:x})=>{if(!a||!x?.length)return null;const u=x[0].payload;return(0,e.jsxs)("div",{className:"rounded-lg border bg-background p-3 shadow-sm",children:[(0,e.jsx)("p",{className:"font-semibold",children:u.label}),(0,e.jsxs)("p",{className:"text-sm",children:["Total: ",u.total]}),(0,e.jsxs)("p",{className:"text-sm",children:["Novos 7d: ",u.novos_7d]}),(0,e.jsxs)("p",{className:"text-sm",children:["Novos 30d: ",u.novos_30d]}),u.convRate!==void 0&&(0,e.jsxs)("p",{className:"text-sm text-muted-foreground",children:["Conv. do anterior: ",u.convRate,"%"]}),(0,e.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:"Clique para ver usuários"})]})}}),(0,e.jsx)(ee,{dataKey:"total",radius:[0,4,4,0],className:"cursor-pointer",onClick:s,children:n.map(a=>(0,e.jsx)(Z,{fill:As[a.stage]||"hsl(var(--primary))"},a.stage))})]})}),(0,e.jsx)("div",{className:"mt-2 flex flex-wrap gap-4 text-xs text-muted-foreground",children:n.map(a=>(0,e.jsxs)("span",{className:"cursor-pointer hover:text-foreground transition-colors",onClick:()=>{m(a.stage),t(!0)},children:[a.label,": ",(0,e.jsx)("strong",{children:a.total}),a.convRate!==void 0&&` (${a.convRate}% conv.)`]},a.stage))})]})})]}),(0,e.jsx)(Rs,{stage:c,open:p,onOpenChange:t,courseId:o})]})}function Fs(r){const i=[{r:14,g:14,b:112},{r:0,g:160,b:198},{r:91,g:192,b:190}],o=r*(i.length-1),l=Math.min(Math.floor(o),i.length-2),c=o-l;return`rgb(${Math.round(i[l].r+(i[l+1].r-i[l].r)*c)}, ${Math.round(i[l].g+(i[l+1].g-i[l].g)*c)}, ${Math.round(i[l].b+(i[l+1].b-i[l].b)*c)})`}function Ks({data:r,courseTitle:i}){if(!r||r.length===0)return(0,e.jsxs)(M,{children:[(0,e.jsx)(L,{children:(0,e.jsx)(T,{children:"Top Aulas Realizadas"})}),(0,e.jsx)(q,{children:(0,e.jsx)(B,{title:"Sem dados de aulas",description:"Nenhuma aula concluÃda ainda."})})]});const o=r.map((l,c)=>({...l,shortTitle:l.lesson_title.length>40?l.lesson_title.slice(0,37)+"â¦":l.lesson_title,rank:c+1,fill:Fs(r.length>1?c/(r.length-1):0)}));return(0,e.jsxs)(M,{children:[(0,e.jsx)(L,{children:(0,e.jsxs)(T,{children:["Top Aulas Realizadas",i&&(0,e.jsxs)("span",{className:"text-sm font-normal text-muted-foreground ml-2",children:["â ",i]})]})}),(0,e.jsx)(q,{children:(0,e.jsx)($,{width:"100%",height:Math.max(280,o.length*38),children:(0,e.jsxs)(J,{data:o,layout:"vertical",margin:{left:220,right:50},children:[(0,e.jsx)(I,{type:"number"}),(0,e.jsx)(U,{type:"category",dataKey:"shortTitle",width:210,tick:{fontSize:13}}),(0,e.jsx)(V,{content:({active:l,payload:c})=>{if(!l||!c?.length)return null;const m=c[0].payload;return(0,e.jsxs)("div",{className:"rounded-lg border bg-background p-3 shadow-sm",children:[(0,e.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,e.jsxs)(W,{className:"text-xs px-1.5 py-0",style:{backgroundColor:m.fill,color:"#fff",borderColor:"transparent"},children:["#",m.rank]}),(0,e.jsx)("p",{className:"font-semibold",children:m.lesson_title})]}),(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:m.course_title}),(0,e.jsxs)("p",{className:"text-sm mt-1",children:["Conclusões: ",m.total_completions]}),(0,e.jsxs)("p",{className:"text-sm",children:["Usuários únicos: ",m.unique_users]})]})}}),(0,e.jsxs)(ee,{dataKey:"total_completions",radius:[0,4,4,0],children:[o.map((l,c)=>(0,e.jsx)(Z,{fill:l.fill},c)),(0,e.jsx)(Ue,{dataKey:"total_completions",position:"right",style:{fontSize:12,fill:"hsl(var(--foreground))"}})]})]})})})]})}function Qs({data:r}){const[i,o]=(0,h.useState)(!0),[l,c]=(0,h.useState)(!0),[m,p]=(0,h.useState)(!0);if(!r.length)return null;const t=r.map(n=>({...n,label:new Date(n.semana).toLocaleDateString("pt-BR",{day:"2-digit",month:"short"})}));return(0,e.jsxs)(M,{children:[(0,e.jsx)(L,{className:"pb-2",children:(0,e.jsxs)("div",{className:"flex items-center justify-between",children:[(0,e.jsx)(T,{className:"text-base",children:"Tendência Semanal â WhatsApp"}),(0,e.jsxs)("div",{className:"flex items-center gap-4",children:[(0,e.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,e.jsx)(G,{checked:i,onCheckedChange:o,id:"wa-optins",className:"scale-75"}),(0,e.jsx)(P,{htmlFor:"wa-optins",className:"text-xs cursor-pointer",children:"Opt-ins"})]}),(0,e.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,e.jsx)(G,{checked:l,onCheckedChange:c,id:"wa-optouts",className:"scale-75"}),(0,e.jsx)(P,{htmlFor:"wa-optouts",className:"text-xs cursor-pointer",children:"Opt-outs"})]}),(0,e.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,e.jsx)(G,{checked:m,onCheckedChange:p,id:"wa-enviadas",className:"scale-75"}),(0,e.jsx)(P,{htmlFor:"wa-enviadas",className:"text-xs cursor-pointer",children:"Enviadas"})]})]})]})}),(0,e.jsx)(q,{children:(0,e.jsx)($,{width:"100%",height:260,children:(0,e.jsxs)(Ve,{data:t,children:[(0,e.jsx)(Qe,{strokeDasharray:"3 3",className:"stroke-muted"}),(0,e.jsx)(I,{dataKey:"label",tick:{fontSize:11}}),(0,e.jsx)(U,{tick:{fontSize:11},allowDecimals:!1}),(0,e.jsx)(V,{}),i&&(0,e.jsx)(H,{type:"monotone",dataKey:"optins",name:"Opt-ins",stroke:"#22c55e",fill:"#22c55e",fillOpacity:.15,strokeWidth:2}),l&&(0,e.jsx)(H,{type:"monotone",dataKey:"optouts",name:"Opt-outs",stroke:"#ef4444",fill:"#ef4444",fillOpacity:.15,strokeWidth:2}),m&&(0,e.jsx)(H,{type:"monotone",dataKey:"enviadas",name:"Enviadas",stroke:"#3b82f6",fill:"#3b82f6",fillOpacity:.15,strokeWidth:2})]})})})]})}var Is=[{value:"7",label:"Ãltimos 7 dias"},{value:"30",label:"Ãltimos 30 dias"},{value:"90",label:"Ãltimos 90 dias"}];function Vs(){const[r,i]=(0,h.useState)(30),{optin:o,impact:l,optout:c,volume:m,trend:p,isLoading:t}
1=Oe(r),n=(o?.total_enrollments??0)>0||(m??0)>0;return(0,e.jsxs)("div",{className:"space-y-4",children:[(0,e.jsxs)("div",{className:"flex items-center justify-between",children:[(0,e.jsxs)("div",{children:[(0,e.jsxs)("h2",{className:"text-xl font-semibold flex items-center gap-2",children:[(0,e.jsx)(ne,{className:"h-5 w-5 text-green-600"}),"WhatsApp Business â Saúde do canal"]}),(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:"Métricas de engajamento e impacto do canal WhatsApp"})]}),(0,e.jsxs)(Ne,{value:String(r),onValueChange:s=>i(Number(s)),children:[(0,e.jsx)(ve,{className:"w-[180px]",children:(0,e.jsx)(_e,{})}),(0,e.jsx)(ye,{children:Is.map(s=>(0,e.jsx)(Y,{value:s.value,children:s.label},s.value))})]})]}),t?(0,e.jsx)("div",{className:"grid gap-4 md:grid-cols-4",children:Array.from({length:4}).map((s,a)=>(0,e.jsx)(F,{className:"h-32"},a))}):n?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"grid gap-4 md:grid-cols-4",children:[(0,e.jsx)(b,{label:"Taxa de Opt-in",value:o?.rate??0,format:"percent",icon:ne,tooltip:"Taxa de Opt-in"}),(0,e.jsx)(b,{label:"Impacto na Conclusão",value:l?.impact_pp??0,format:"percent",icon:os,tooltip:"Impacto WhatsApp"}),(0,e.jsxs)("div",{className:"relative",children:[(0,e.jsx)(b,{label:"Taxa de Opt-out",value:c?.rate??0,format:"percent",icon:ns,tooltip:"Taxa de Opt-out"}),c?.by_channel&&c.by_channel.length>0&&(0,e.jsx)(pe,{children:(0,e.jsxs)(he,{children:[(0,e.jsx)(je,{asChild:!0,children:(0,e.jsx)("button",{className:"absolute top-3 right-10 text-muted-foreground hover:text-foreground",children:(0,e.jsx)(re,{className:"h-3.5 w-3.5"})})}),(0,e.jsxs)(ge,{children:[(0,e.jsx)("p",{className:"font-medium mb-1",children:"Breakdown por canal:"}),c.by_channel.map(s=>(0,e.jsxs)("p",{className:"text-xs",children:[s.canal==="parar_keyword"?"Palavra PARAR":s.canal==="profile"?"Perfil":s.canal==="admin"?"Admin":s.canal,": ",s.total]},s.canal))]})]})})]}),(0,e.jsx)(b,{label:"Volume de Envios",value:m??0,icon:rs,tooltip:"Volume de Envios"})]}),(0,e.jsx)(Qs,{data:p||[]})]}):(0,e.jsx)(M,{children:(0,e.jsxs)(q,{className:"flex items-center gap-3 py-8",children:[(0,e.jsx)(re,{className:"h-5 w-5 text-muted-foreground shrink-0"}),(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"font-medium",children:"Aguardando dados"}),(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:"As métricas aparecerão quando houver consentimentos de WhatsApp e envios registrados. Configure templates e sequências na aba WhatsApp para começar."})]})]})})]})}function Us({open:r,onOpenChange:i,selectedCourseId:o}){const[l,c]=(0,h.useState)(null),[m,p]=(0,h.useState)(null),{data:t,isLoading:n}=N({queryKey:["no-certificate-users",o],enabled:r,queryFn:async()=>{let s=_.from("course_enrollments").select(` 2 user_id, 3 completed_at, 4 course_id, 5 courses!inner(title), 6 course_certificates(id) 7 `).eq("progress_percentage",100);o&&(s=s.eq("course_id",o));const{data:a,error:x}=await s;if(x)throw x;const u=(a||[]).filter(d=>!d.course_certificates||d.course_certificates.length===0);if(u.length===0)return[];const j=[...new Set(u.map(d=>
7d.user_id))],{data:w,error:O}=await _.from("profiles").select("id, full_name, display_name, company_name, exclude_from_analytics").in("id",j);if(O)throw O;const K=new Map((w||[]).map(d=>[d.id,d])),k=[];for(const d of u){const f=K.get(d.user_id);!f||f.exclude_from_analytics||k.push({user_id:d.user_id,full_name:f.display_name||f.full_name||"â",email:d.user_id,company_name:f.company_name,course_title:d.courses?.title||"â",completed_at:d.completed_at})}if(k.length>0)try{const{data:d}=await _.auth.getSession(),f=d?.session?.access_token;if(f){const g=await _.functions.invoke("get-admin-users",{headers:{Authorization:`Bearer ${f}`}});if(g.data?.users){const D=new Map(g.data.users.map(S=>[S.id,S.email]));for(const S of k)S.email=D.get(S.user_id)||"â"}}}catch{for(const d of k)d.email="â"}return k}});return(0,e.jsx)(De,{open:r,onOpenChange:i,children:(0,e.jsxs)(Te,{className:"max-h-[85vh]",children:[(0,e.jsxs)(Me,{children:[(0,e.jsx)(Le,{children:"Alunos sem Certificado"}),(0,e.jsx)(qe,{children:"Usuários que concluÃram 100% do curso mas não solicitaram certificado"})]}),(0,e.jsx)("div",{className:"overflow-auto px-4 pb-6",children:n?(0,e.jsx)("div",{className:"space-y-2",children:Array.from({length:5}).map((s,a)=>(0,e.jsx)(F,{className:"h-10 w-full"},a))}):!t||t.length===0?(0,e.jsx)("p",{className:"py-8 text-center text-muted-foreground",children:"Todos os alunos que concluÃram o curso já solicitaram certificado ð"}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(W,{variant:"secondary",className:"mb-3",children:[t.length," aluno",t.length!==1?"s":""]}),(0,e.jsxs)(te,{children:[(0,e.jsx)(se,{children:(0,e.jsxs)(E,{children:[(0,e.jsx)(v,{children:"Nome"}),(0,e.jsx)(v,{children:"E-mail"}),(0,e.jsx)(v,{children:"Empresa"}),(0,e.jsx)(v,{children:"Curso"}),(0,e.jsx)(v,{children:"Conclusão"})]})}),(0,e.jsx)(ae,{children:t.map(s=>(0,e.jsxs)(E,{className:"cursor-pointer hover:bg-muted/50",onClick:()=>{c(s.user_id),p(s.email!=="â"?s.email:null)},children:[(0,e.jsx)(y,{className:"font-medium",children:s.full_name}),(0,e.jsx)(y,{className:"text-sm",children:s.email}),(0,e.jsx)(y,{className:"text-sm",children:s.company_name||"â"}),(0,e.jsx)(y,{className:"text-sm",children:s.course_title}),(0,e.jsx)(y,{className:"text-sm",children:s.completed_at?be(new Date(s.completed_at),"dd/MM/yyyy"):"â"})]},`${s.user_id}-${s.course_title}`))})]})]})}),l&&(0,e.jsx)(z,{userId:l,userEmail:m,open:!!l,onOpenChange:s=>{s||(c(null),p(null))},showEnrollmentActions:!0})]})})}var $s={cadastros_mes:"Cadastros no mês",visitantes_unicos_mes:"Visitantes únicos",mqls_mes:"MQLs no mês",sqls_mes:"SQLs no mês",deals_mes:"Deals Pipedrive",matriculas_mes:"MatrÃculas no mês",total_mqls_base:"Total MQLs na base",total_sqls_base:"Total SQLs na base"};function Bs({metric:r,open:i,onOpenChange:o}){const[l,c]=(0,h.useState)(null),[m,p]=(0,h.useState)(!1),{data:t,isLoading:n}=N({queryKey:["okr-card-users",r],enabled:!!r&&i,queryFn:async()=>{const{data:s,error:a}=await _.rpc("get_okr_card_users",{p_metric:r});if(a)throw a;return s||[]}});return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(Ce,{open:i,onOpenChange:o,children:(0,e.jsxs)(Se,{className:"w-[400px] sm:w-[540px] overflow-hidden",children:[(0,e.jsx)(we,{children:(0,e.jsx)(ke,{children:$s[r||""]||r})}),(0,e.jsx)(xe,{className:"h-[calc(100vh-8rem)] mt-4",children:(0,e.jsx)("div",{className:"space-y-3 pr-3",children:n?Array.from({length:5}).map((s,a)=>(0,e.jsx)(F,{className:"h-20"},a)):!t||t.length===0?(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:"Nenhum usuário encontrado para esta métrica."}):t.map(s=>{const a=s.display_name||s.full_name||s.email||"Sem nome",x=[s.city,s.state].filter(Boolean).join(", ");return(0,e.jsxs)("div",{className:"flex items-start justify-between rounded-lg border p-3 cursor-pointer hover:bg-accent/50 transition-colors",onClick:()=>{c(s.user_id),p(!0)},children:[(0,e.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,e.jsx)("p",{className:"truncate font-medium text-sm",children:a}),s.company_name&&(0,e.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:s.company_name}),x&&(0,e.jsxs)("p",{className:"truncate text-xs text-muted-foreground flex items-center gap-1",children:[(0,e.jsx)(ue,{className:"h-3 w-3 shrink-0"}),x]}),s.email&&(0,e.jsxs)("p",{className:"truncate text-xs text-muted-foreground flex items-center gap-1",children:[(0,e.jsx)(me,{className:"h-3 w-3 shrink-0"}),s.email]})]}),s.extra_info&&(0,e.jsx)(W,{variant:"secondary",className:"ml-2 shrink-0",children:s.extra_info})]}
7,s.user_id)})})})]})}),(0,e.jsx)(z,{userId:l,open:m,onOpenChange:p,showEnrollmentActions:!0})]})}var X=[{key:"cadastros_mes",label:"Cadastros/mês",tooltipTerm:"Cadastros"},{key:"visitantes_unicos_mes",label:"Visitantes únicos/mês",tooltipTerm:"Visitantes únicos"},{key:"mqls_mes",label:"MQLs/mês",tooltipTerm:"MQLs"},{key:"sqls_mes",label:"SQLs/mês",tooltipTerm:"SQLs"},{key:"deals_mes",label:"Deals/mês",tooltipTerm:"Deals"},{key:"matriculas_mes",label:"MatrÃculas/mês",tooltipTerm:"MatrÃculas"},{key:"taxa_conversao_mql_sql",label:"Taxa MQLâSQL (%)",tooltipTerm:"Taxa MQLâSQL"},{key:"receita_mes_brl",label:"Receita/mês (R$)",tooltipTerm:"Receita"}];function Ps({targets:r,onSaved:i}){const[o,l]=(0,h.useState)(!1),[c,m]=(0,h.useState)(!1),[p,t]=(0,h.useState)({});(0,h.useEffect)(()=>{if(o&&r){const s={};for(const a of X){const x=r.find(u=>u.metric_key===a.key);s[a.key]=x?String(x.target_value):""}t(s)}},[o,r]);const n=async()=>{const s=X.filter(x=>p[x.key]&&Number(p[x.key])>0).map(x=>({metric_key:x.key,target_value:Number(p[x.key]),period:"monthly"}));if(s.length===0){A.error("Preencha ao menos uma meta.");return}m(!0);const{error:a}=await _.from("okr_targets").upsert(s,{onConflict:"metric_key"});if(m(!1),a){A.error("Erro ao salvar metas: "+a.message);return}A.success("Metas salvas com sucesso!"),i(),l(!1)};return(0,e.jsxs)(hs,{open:o,onOpenChange:l,children:[(0,e.jsx)(ps,{asChild:!0,children:(0,e.jsxs)(Q,{variant:"outline",size:"sm",children:[(0,e.jsx)(vs,{className:"mr-2 h-4 w-4"}),"Definir Metas"]})}),(0,e.jsxs)(us,{className:"sm:max-w-md",children:[(0,e.jsx)(ms,{children:(0,e.jsx)(xs,{children:"Metas Mensais (OKR Targets)"})}),(0,e.jsx)("div",{className:"grid gap-3 py-2",children:X.map(s=>(0,e.jsxs)("div",{className:"grid grid-cols-[1fr_120px] items-center gap-3",children:[(0,e.jsxs)(P,{htmlFor:s.key,className:"text-sm flex items-center gap-1",children:[s.label,(0,e.jsx)(Re,{term:s.tooltipTerm})]}),(0,e.jsx)(fe,{id:s.key,type:"number",min:0,step:s.key==="taxa_conversao_mql_sql"?"0.1":"1",placeholder:"â",value:p[s.key]??"",onChange:a=>t(x=>({...x,[s.key]:a.target.value}))})]},s.key))}),(0,e.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,e.jsx)(Q,{variant:"ghost",onClick:()=>l(!1),children:"Cancelar"}),(0,e.jsx)(Q,{onClick:n,disabled:c,children:c?"Salvando...":"Salvar Metas"})]})]})]})}function Ia(){const{isLoading:r}=_s(),[i,o]=(0,h.useState)(12),[l,c]=(0,h.useState)(null),[m,p]=(0,h.useState)(!1),[t,n]=(0,h.useState)(null),{summary:s,funnel:a,trend:x,utm:u,targets:j,courseFunnel:w,lessonRanking:O,isLoading:K,refetch:k}=ys(1,i,90,l),d=Oe(30),{data:f}=N({queryKey:["courses-list-for-okr"],queryFn:async()=>{const{data:C,error:R}=await _.from("courses").select("id, title").eq("is_published",!0).order("title");if(R)throw R;return C||[]}});if(r)return(0,e.jsx)("div",{className:"flex min-h-screen items-center justify-center",children:(0,e.jsx)("div",{className:"text-lg",children:"Carregando..."})});const g=C=>j?.find(R=>R.metric_key===C)?.target_value,D=w?.find(C=>C.stage==="concluido")?.total||0,S=w?.find(C=>C.stage==="certificado")?.total||0,Ae=D>0?Math.round(S/D*100):0,Ee=l?f?.find(C=>C.id===l)?.title:null;return(0,e.jsx)(Xe,{children:(0,e.jsxs)("div",{className:"space-y-6",children:[(0,e.jsxs)("div",{className:"flex items-center justify-between",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-3xl font-bold",children:"OKRs & Analytics"}),(0,e.jsx)("p",{className:"text-muted-foreground",children:"Métricas de negócio e funil de conversão em tempo real"})]}),(0,e.jsx)(Ps,{targets:j,onSaved:k})]}),(0,e.jsx)(Ds,{summary:s,targets:j,whatsapp:{optin:d.optin,optout:d.optout,impact:d.impact}}),K?(0,e.jsx)("div",{className:"grid gap-4 md:grid-cols-4",children:Array.from({length:9}).map((C,R)=>(0,e.jsx)(F,{className:"h-32"},R))}):s?(0,e.jsxs)("div",{className:"grid gap-4 md:grid-cols-4 lg:grid-cols-5",children:[(0,e.jsx)(b,{label:"Cadastros no mês",value:s.cadastros_mes,previousValue:s.cadastros_prev,target:g("cadastros_mes"),icon:is,tooltip:"Cadastros",onClick:()=>n("cadastros_mes")}),(0,e.jsx)(b,{label:"Visitantes únicos no mês",value:s.visitantes_unicos_mes,previousValue:s.visitantes_prev,target:g("visitantes_unicos_mes"),icon:Je,tooltip:"Visitantes únicos",onClick:()=>n("visitantes_unicos_mes")}),(0,e.jsx)(b,{label:"MQLs no mês",value:s.mqls_mes,previousValue:s.mqls_prev,target:g("mqls_mes"),icon:oe,tooltip:"MQLs",onClick:()=>n("mqls_mes")}),(0,e.jsx)(b,{label:"SQLs no mês",value:s.sqls_mes,previousValue:s.sqls_prev,target:g("sqls_mes"),icon:le,tooltip:"SQLs",onClick:()=>n("sqls_mes")}),(0,e.jsx)(b,{label:"Deals Pipedrive",value:s.deals_mes,previousValue:s.deals_prev,target:g("deals_mes"),icon:ss,tooltip:"Deals",onClick:()=>n("deals_mes")}),(0,e.jsx)(b,{label:"MatrÃculas",value:s.matriculas_mes,previousValue:s.matriculas_prev,target:g("matriculas_mes"),icon:es,tooltip:"MatrÃculas",onClick:()=>n("matriculas_mes")}),(0,e.jsx)(b,{label:"Taxa MQLâSQL",value:s.taxa_conversao_mql_sql,previousValue:s.taxa_prev,target:g("taxa_conversao_mql_sql"),format:"percent",icon:ts,tooltip:"Taxa MQLâSQL"}),(0,e.jsx)(b,{label:"Receita do mês",value:s.receita_mes_brl,previousValue:s.receita_prev,target:g("receita_mes_brl"),format:"currency",icon:Ze,tooltip:"Receita"}),(0,e.jsx)(b,{label:"Taxa Certificação",value:Ae,target:g("taxa_certificacao"),format:"percent",icon:Ge,tooltip:"Taxa de Certificação",onClick:()=>p(!0)}),(0,e.jsx)(b,{label:"Total MQLs na base",value:s.total_mqls_base,target:g("total_mqls_base"),icon:oe,tooltip:"MQLs",onClick:()=>n("total_mqls_base")}),(0,e.jsx)(b,{label:"Total SQLs na base",value:s.total_sqls_base,target:g("total_sqls_base"),icon:le,tooltip:"SQLs",onClick:()=>n("total_sqls_base")})]}):null,(0,e.jsx)(Cs,{data:a||[]}),(0,e.jsx)(Es,{data:w||[],courses:f||[],selectedCourseId:l,onCourseChange:c}
7),(0,e.jsx)(Ks,{data:O||[],courseTitle:Ee}),(0,e.jsx)(Vs,{}),(0,e.jsx)(qs,{data:x||[],weeks:i,onWeeksChange:o}),(0,e.jsx)(Ms,{data:u||[]}),(0,e.jsx)(Us,{open:m,onOpenChange:p,selectedCourseId:l}),(0,e.jsx)(Bs,{metric:t,open:!!t,onOpenChange:C=>{C||n(null)}})]})})}export{Ia as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.