PageSourceSearch

https://maestro.pontua.com.br/assets/StatusReportPage-D1rjCZxZ.js

js pontua.com.br collected 2026-10-01 14:16:08 UTC 236,389 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/usePresentationDataCache-DG_vSpPc.js","assets/vendor-react-DIA7vK4g.js","assets/vendor-docs-BA9xu9ak.js","assets/status-report.types-BVGVGEry.js","assets/index-DtUVjOr4.js","assets/vendor-utils-DWHjTIse.js","assets/vendor-supabase-_bOAMmkC.js","assets/index-Ces0zQWQ.css","assets/circle-check-big-CW4zvNj2.js","assets/pen-line-2Xz7x7v7.js","assets/arrow-up-right-DqLUwefS.js","assets/arrow-down-right-Ge3rz7lh.js","assets/git-branch-rmdmm44F.js","assets/AreaChart-7HuCoLhl.js","assets/phone-BgqrZNH1.js","assets/flame-Bip1cwAQ.js","assets/mouse-pointer-BlLXtDY1.js","assets/eye-DZWf3ZF4.js","assets/rotate-cw-CK8uEMQb.js","assets/file-down-_Y3_Tiwj.js","assets/mail-open-DzdfIS4e.js","assets/PieChart-BVaRewFa.js","assets/award-DEp8WKtM.js","assets/database-C197agzS.js"])))=>i.map(i=>d[i]);
2import{r as Tn,u as ns,E as ln,J as ho,_ as dn}from"./vendor-docs-BA9xu9ak.js";import{r as l,c as fo,j as e,L as un}from"./vendor-react-DIA7vK4g.js";import{B as mn}from"./BackofficeNavbar-C6IV_swL.js";import{bc as aa,a6 as go,bF as ia,aO as _t,bP as Ae,bA as hs,bB as fs,bC as En,bD as gs,bE as Xa,W as rs,bm as de,aa as Le,y as xs,s as rt,b2 as wt,ba as J,b9 as Y,ax as Ze,ci as Ie,bz as Ge,c7 as Sa,bk as _s,bl as vs,S as xo,t as zn,bn as bs,dc as vt,bo as ma,a4 as _o,X as Bt,cc as os,bL as Ra,bM as Pa,bN as Da,bO as Aa,bS as at,bp as vo,by as Fn,bb as Ga,bd as bt,bi as Ut,bg as is,at as ot,be as cs,bf as ls,O as bo,aV as it,bq as ys,br as ks,bs as Ss,bt as js,bu as Ns,bv as ws,bw as Ms,bx as In,cd as yo,bT as ko,bU as So,bV as jo,u as No,v as Cs,bQ as Rs,bR as wo,c4 as Mo,c5 as Co,c6 as Ro,e6 as Po,e7 as Do,e8 as Ao,bY as On,bZ as Ln,b_ as Za,b$ as wa,c0 as Vn,c1 as We,R as $a,aX as na,a$ as ds,r as Oa,aW as To,Z as Eo,cg as zo,ad as Fo,az as Io,aY as Oo,aA as pn,d as Lo}from"./index-DtUVjOr4.js";import{G as $n}from"./grip-vertical-BaFhNwsM.js";import{R as Jt,a as La}from"./radio-group-CV0oqF9i.js";import{g as Vo,S as $o}from"./slide-data-config-MqETsltA.js";import{U as us}from"./upload-BCGHAYkc.js";import{D as Ma}from"./database-C197agzS.js";import{C as tt}from"./clock-x8uDBefL.js";import{aH as qo,H as Ba,p as ha,aG as hn,y as fn,x as gn}from"./vendor-utils-DWHjTIse.js";import{u as Ho,P as Go,S as xn,a as Bo}from"./usePresentationDataCache-DG_vSpPc.js";import{t as Uo}from"./index-DBV0ugPJ.js";import{S as Jo,a as Ko,b as St,f as Yo,D as _n,c as ht,g as ft}from"./status-report.types-BVGVGEry.js";import{A as vn}from"./archive-q1simTCW.js";import{C as qn}from"./calendar-n1wfbzNV.js";import{E as Qo}from"./ellipsis-vertical-DQ_LQLxU.js";import{L as et}from"./layout-grid-BUyTsP1s.js";import{G as Hn}from"./git-merge-CYQ0Df4T.js";import{H as Wo}from"./pen-line-2Xz7x7v7.js";import{C as Xo}from"./chart-pie-BJqYG-p7.js";import{C as Zo}from"./chart-line-CL1HJq9d.js";import{S as ei}from"./share-2-DmHagLMy.js";import{C as bn}from"./currency-input-7tk8TEsK.js";import{C as ai,a as ti,b as si}from"./collapsible-3B_X3N32.js";import{P as yn}from"./presentation-B58XjfQC.js";import"./log-out-CMftDkmm.js";import"./vendor-supabase-_bOAMmkC.js";import"./circle-check-big-CW4zvNj2.js";import"./arrow-up-right-DqLUwefS.js";import"./arrow-down-right-Ge3rz7lh.js";import"./git-branch-rmdmm44F.js";import"./AreaChart-7HuCoLhl.js";import"./phone-BgqrZNH1.js";import"./flame-Bip1cwAQ.js";import"./mouse-pointer-BlLXtDY1.js";import"./eye-DZWf3ZF4.js";import"./rotate-cw-CK8uEMQb.js";import"./file-down-_Y3_Tiwj.js";import"./mail-open-DzdfIS4e.js";import"./PieChart-BVaRewFa.js";import"./award-DEp8WKtM.js";import"./index-C-uNlZii.js";const Mt=l.createContext(null);Mt.displayName="PanelGroupContext";const Ve={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},Ps=10,Ca=l.useLayoutEffect,kn=fo.useId,ni=typeof kn=="function"?kn:()=>null;let ri=0;function Ds(a=null){const n=ni(),o=l.useRef(a||n||null);return o.current===null&&(o.current=""+ri++),a??o.current}function Gn({children:a,className:n="",collapsedSize:o,collapsible:h,defaultSize:b,forwardedRef:_,id:f,maxSize:p,minSize:y,onCollapse:C,onExpand:X,onResize:v,order:R,style:u,tagName:I="div",...se}){const q=l.useContext(Mt);if(q===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:L,expandPanel:E,getPanelSize:B,getPanelStyle:g,groupId:V,isPanelCollapsed:K,reevaluatePanelConstraints:A,registerPanel:ye,resizePanel:Re,unregisterPanel:fe}=q,_e=Ds(f),he=l.useRef({callbacks:{onCollapse:C,onExpand:X,onResize:v},constraints:{collapsedSize:o,collapsible:h,defaultSize:b,maxSize:p,minSize:y},id:_e,idIsFromProps:f!==void 0,order:R});l.useRef({didLogMissingDefaultSizeWarning:!1}
2),Ca(()=>{const{callbacks:ee,constraints:ue}=he.current,be={...ue};he.current.id=_e,he.current.idIsFromProps=f!==void 0,he.current.order=R,ee.onCollapse=C,ee.onExpand=X,ee.onResize=v,ue.collapsedSize=o,ue.collapsible=h,ue.defaultSize=b,ue.maxSize=p,ue.minSize=y,(be.collapsedSize!==ue.collapsedSize||be.collapsible!==ue.collapsible||be.maxSize!==ue.maxSize||be.minSize!==ue.minSize)&&A(he.current,be)}),Ca(()=>{const ee=he.current;return ye(ee),()=>{fe(ee)}},[R,_e,ye,fe]),l.useImperativeHandle(_,()=>({collapse:()=>{L(he.current)},expand:ee=>{E(he.current,ee)},getId(){return _e},getSize(){return B(he.current)},isCollapsed(){return K(he.current)},isExpanded(){return!K(he.current)},resize:ee=>{Re(he.current,ee)}}),[L,E,B,K,_e,Re]);const oe=g(he.current,b);return l.createElement(I,{...se,children:a,className:n,id:_e,style:{...oe,...u},[Ve.groupId]:V,[Ve.panel]:"",[Ve.panelCollapsible]:h||void 0,[Ve.panelId]:_e,[Ve.panelSize]:parseFloat(""+oe.flexGrow).toFixed(1)})}const Bn=l.forwardRef((a,n)=>l.createElement(Gn,{...a,forwardedRef:n}));Gn.displayName="Panel";Bn.displayName="forwardRef(Panel)";let ms=null,yt=-1,xa=null;function oi(a,n){if(n){const o=(n&Qn)!==0,h=(n&Wn)!==0,b=(n&Xn)!==0,_=(n&Zn)!==0;if(o)return b?"se-resize":_?"ne-resize":"e-resize";if(h)return b?"sw-resize":_?"nw-resize":"w-resize";if(b)return"s-resize";if(_)return"n-resize"}switch(a){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function ii(){xa!==null&&(document.head.removeChild(xa),ms=null,xa=null,yt=-1)}function Kt(a,n){var o,h;const b=oi(a,n);if(ms!==b){if(ms=b,xa===null&&(xa=document.createElement("style"),document.head.appendChild(xa)),yt>=0){var _;(_=xa.sheet)===null||_===void 0||_.removeRule(yt)}yt=(o=(h=xa.sheet)===null||h===void 0?void 0:h.insertRule(`*{cursor: ${b} !important;}`))!==null&&o!==void 0?o:-1}}
2function Un(a){return a.type==="keydown"}function Jn(a){return a.type.startsWith("pointer")}function Kn(a){return a.type.startsWith("mouse")}function Ct(a){if(Jn(a)){if(a.isPrimary)return{x:a.clientX,y:a.clientY}}else if(Kn(a))return{x:a.clientX,y:a.clientY};return{x:1/0,y:1/0}}function ci(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function li(a,n,o){return a.x<n.x+n.width&&a.x+a.width>n.x&&a.y<n.y+n.height&&a.y+a.height>n.y}function di(a,n){if(a===n)throw new Error("Cannot compare node with itself");const o={a:Nn(a),b:Nn(n)};let h;for(;o.a.at(-1)===o.b.at(-1);)a=o.a.pop(),n=o.b.pop(),h=a;Se(h,"Stacking order can only be calculated for elements with a common ancestor");const b={a:jn(Sn(o.a)),b:jn(Sn(o.b))};if(b.a===b.b){const _=h.childNodes,f={a:o.a.at(-1),b:o.b.at(-1)};let p=_.length;for(;p--;){const y=_[p];if(y===f.a)return 1;if(y===f.b)return-1}}return Math.sign(b.a-b.b)}const ui=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function mi(a){var n;const o=getComputedStyle((n=Yn(a))!==null&&n!==void 0?n:a).display;return o==="flex"||o==="inline-flex"}function pi(a){const n=getComputedStyle(a);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||mi(a))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||ui.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function Sn(a){let n=a.length;for(;n--;){const o=a[n];if(Se(o,"Missing node"),pi(o))return o}return null}function jn(a){return a&&Number(getComputedStyle(a).zIndex)||0}function Nn(a){const n=[];for(;a;)n.push(a),a=Yn(a);return n}function Yn(a){const{parentNode:n}=a;return n&&n instanceof ShadowRoot?n.host:n}const Qn=1,Wn=2,Xn=4,Zn=8,hi=ci()==="coarse";let oa=[],Ua=!1,Na=new Map,Rt=new Map;const st=new Set;function fi(a,n,o,h,b){var _;const{ownerDocument:f}=n,p={direction:o,element:n,hitAreaMargins:h,setResizeHandlerState:b},y=(_=Na.get(f))!==null&&_!==void 0?_:0;return Na.set(f,y+1),st.add(p),jt(),function(){var X;Rt.delete(a),st.delete(p);const v=(X=Na.get(f))!==null&&X!==void 0?X:1;if(Na.set(f,v-1),jt(),v===1&&Na.delete(f),oa.includes(p)){const R=oa.indexOf(p);R>=0&&oa.splice(R,1),Ts(),b("up",!0,null)}}}function gi(a){const{target:n}=a,{x:o,y:h}=Ct(a);Ua=!0,As({target:n,x:o,y:h}),jt(),oa.length>0&&(Nt("down",a),a.preventDefault(),er(n)||a.stopImmediatePropagation())}function Yt(a){const{x:n,y:o}=Ct(a);if(Ua&&a.buttons===0&&(Ua=!1,Nt("up",a)),!Ua){const{target:h}=a;As({target:h,x:n,y:o})}Nt("move",a),Ts(),oa.length>0&&a.preventDefault()}function Qt(a){const{target:n}=a,{x:o,y:h}=Ct(a);Rt.clear(),Ua=!1,oa.length>0&&(a.preventDefault(),er(n)||a.stopImmediatePropagation()),Nt("up",a),As({target:n,x:o,y:h}),Ts(),jt()}function er(a){let n=a;for(;n;){if(n.hasAttribute(Ve.resizeHandle))return!0;n=n.parentElement}return!1}function As({target:a,x:n,y:o}){oa.splice(0);let h=null;(a instanceof HTMLElement||a instanceof SVGElement)&&(h=a),st.forEach(b=>{const{element:_,hitAreaMargins:f}=b,p=_.getBoundingClientRect(),{bottom:y,left:C,right:X,top:v}=p,R=hi?f.coarse:f.fine;if(n>=C-R&&n<=X+R&&o>=v-R&&o<=y+R){if(h!==null&&document.contains(h)&&_!==h&&!_.contains(h)&&!h.contains(_)&&di(h,_)>0){let I=h,se=!1;for(;I&&!I.contains(_);){if(li(I.getBoundingClientRect(),p)){se=!0;break}I=I.parentElement}if(se)return}oa.push(b)}})}function Wt(a,n){Rt.set(a,n)}function Ts(){let a=!1,n=!1;oa.forEach(h=>{const{direction:b}=h;b==="horizontal"?a=!0:n=!0});let o=0;Rt.forEach(h=>{o|=h}),a&&n?Kt("intersection",o):a?Kt("horizontal",o):n?Kt("vertical",o):ii()}let Xt=new AbortController;function jt(){Xt.abort(),Xt=new AbortController;const a={capture:!0,signal:Xt.signal};st.size&&(Ua?(oa.length>0&&Na.forEach((n,o)=>{const{body:h}=o;n>0&&(h.addEventListener("contextmenu",Qt,a),h.addEventListener("pointerleave",Yt,a),h.addEventListener("pointermove",Yt,a))}),window.addEventListener("pointerup",Qt,a),window.addEventListener("pointercancel",Qt,a)):Na.forEac
2h((n,o)=>{const{body:h}=o;n>0&&(h.addEventListener("pointerdown",gi,a),h.addEventListener("pointermove",Yt,a))}))}function Nt(a,n){st.forEach(o=>{const{setResizeHandlerState:h}=o,b=oa.includes(o);h(a,b,n)})}function xi(){const[a,n]=l.useState(0);return l.useCallback(()=>n(o=>o+1),[])}function Se(a,n){if(!a)throw console.error(n),Error(n)}function Ta(a,n,o=Ps){return a.toFixed(o)===n.toFixed(o)?0:a>n?1:-1}function pa(a,n,o=Ps){return Ta(a,n,o)===0}function ea(a,n,o){return Ta(a,n,o)===0}function _i(a,n,o){if(a.length!==n.length)return!1;for(let h=0;h<a.length;h++){const b=a[h],_=n[h];if(!ea(b,_,o))return!1}return!0}function Ha({panelConstraints:a,panelIndex:n,size:o}){const h=a[n];Se(h!=null,`Panel constraints not found for index ${n}`);let{collapsedSize:b=0,collapsible:_,maxSize:f=100,minSize:p=0}=h;if(Ta(o,p)<0)if(_){const y=(b+p)/2;Ta(o,y)<0?o=b:o=p}else o=p;return o=Math.min(f,o),o=parseFloat(o.toFixed(Ps)),o}function Qa({delta:a,initialLayout:n,panelConstraints:o,pivotIndices:h,prevLayout:b,trigger:_}){if(ea(a,0))return n;const f=[...n],[p,y]=h;Se(p!=null,"Invalid first pivot index"),Se(y!=null,"Invalid second pivot index");let C=0;if(_==="keyboard"){{const v=a<0?y:p,R=o[v];Se(R,`Panel constraints not found for index ${v}`);const{collapsedSize:u=0,collapsible:I,minSize:se=0}=R;if(I){const q=n[v];if(Se(q!=null,`Previous layout not found for panel index ${v}`),ea(q,u)){const L=se-q;Ta(L,Math.abs(a))>0&&(a=a<0?0-L:L)}}}{const v=a<0?p:y,R=o[v];Se(R,`No panel constraints found for index ${v}`);const{collapsedSize:u=0,collapsible:I,minSize:se=0}=R;if(I){const q=n[v];if(Se(q!=null,`Previous layout not found for panel index ${v}`),ea(q,se)){const L=q-u;Ta(L,Math.abs(a))>0&&(a=a<0?0-L:L)}}}}{const v=a<0?1:-1;let R=a<0?y:p,u=0;for(;;){const se=n[R];Se(se!=null,`Previous layout not found for panel index ${R}`);const L=Ha({panelConstraints:o,panelIndex:R,size:100})-se;if(u+=L,R+=v,R<0||R>=o.length)break}const I=Math.min(Math.abs(a),Math.abs(u));a=a<0?0-I:I}{let R=a<0?p:y;for(;R>=0&&R<o.length;){const u=Math.abs(a)-Math.abs(C),I=n[R];Se(I!=null,`Previous layout not found for panel index ${R}`);const se=I-u,q=Ha({panelConstraints:o,panelIndex:R,size:se});if(!ea(I,q)&&(C+=I-q,f[R]=q,C.toPrecision(3).localeCompare(Math.abs(a).toPrecision(3),void 0,{numeric:!0})>=0))break;a<0?R--:R++}}if(_i(b,f))return b;{const v=a<0?y:p,R=n[v];Se(R!=null,`Previous layout not found for panel index ${v}`);const u=R+C,I=Ha({panelConstraints:o,panelIndex:v,size:u});if(f[v]=I,!ea(I,u)){let se=u-I,L=a<0?y:p;for(;L>=0&&L<o.length;){const E=f[L];Se(E!=null,`Previous layout not found for panel index ${L}`);const B=E+se,g=Ha({panelConstraints:o,panelIndex:L,size:B});if(ea(E,g)||(se-=g-E,f[L]=g),ea(se,0))break;a>0?L--:L++}}}const X=f.reduce((v,R)=>R+v,0);return ea(X,100)?f:b}function vi({layout:a,panelsArray:n,pivotIndices:o}){let h=0,b=100,_=0,f=0;const p=o[0];Se(p!=null,"No pivot index found"),n.forEach((v,R)=>{const{constraints:u}=v,{maxSize:I=100,minSize:se=0}=u;R===p?(h=se,b=I):(_+=se,f+=I)});const y=Math.min(b,100-_),C=Math.max(h,100-f),X=a[p];return{valueMax:y,valueMin:C,valueNow:X}}function nt(a,n=document){return Array.from(n.querySelectorAll(`[${Ve.resizeHandleId}][data-panel-group-id="${a}"]`))}function ar(a,n,o=document){const b=nt(a,o).findIndex(_=>_.getAttribute(Ve.resizeHandleId)===n);return b??null}function tr(a,n,o){const h=ar(a,n,o);return h!=null?[h,h+1]:[-1,-1]}function sr(a,n=document){var o;if(n instanceof HTMLElement&&(n==null||(o=n.dataset)===null||o===void 0?void 0:o.panelGroupId)==a)return n;
2const h=n.querySelector(`[data-panel-group][data-panel-group-id="${a}"]`);return h||null}function Pt(a,n=document){const o=n.querySelector(`[${Ve.resizeHandleId}="${a}"]`);return o||null}function bi(a,n,o,h=document){var b,_,f,p;const y=Pt(n,h),C=nt(a,h),X=y?C.indexOf(y):-1,v=(b=(_=o[X])===null||_===void 0?void 0:_.id)!==null&&b!==void 0?b:null,R=(f=(p=o[X+1])===null||p===void 0?void 0:p.id)!==null&&f!==void 0?f:null;return[v,R]}function yi({committedValuesRef:a,eagerValuesRef:n,groupId:o,layout:h,panelDataArray:b,panelGroupElement:_,setLayout:f}){l.useRef({didWarnAboutMissingResizeHandle:!1}),Ca(()=>{if(!_)return;const p=nt(o,_);for(let y=0;y<b.length-1;y++){const{valueMax:C,valueMin:X,valueNow:v}=vi({layout:h,panelsArray:b,pivotIndices:[y,y+1]}),R=p[y];if(R!=null){const u=b[y];Se(u,`No panel data found for index "${y}"`),R.setAttribute("aria-controls",u.id),R.setAttribute("aria-valuemax",""+Math.round(C)),R.setAttribute("aria-valuemin",""+Math.round(X)),R.setAttribute("aria-valuenow",v!=null?""+Math.round(v):"")}}return()=>{p.forEach((y,C)=>{y.removeAttribute("aria-controls"),y.removeAttribute("aria-valuemax"),y.removeAttribute("aria-valuemin"),y.removeAttribute("aria-valuenow")})}},[o,h,b,_]),l.useEffect(()=>{if(!_)return;const p=n.current;Se(p,"Eager values not found");const{panelDataArray:y}=p,C=sr(o,_);Se(C!=null,`No group found for id "${o}"`);const X=nt(o,_);Se(X,`No resize handles found for group id "${o}"`);const v=X.map(R=>{const u=R.getAttribute(Ve.resizeHandleId);Se(u,"Resize handle element has no handle id attribute");const[I,se]=bi(o,u,y,_);if(I==null||se==null)return()=>{};const q=L=>{if(!L.defaultPrevented)switch(L.key){case"Enter":{L.preventDefault();const E=y.findIndex(B=>B.id===I);if(E>=0){const B=y[E];Se(B,`No panel data found for index ${E}`);const g=h[E],{collapsedSize:V=0,collapsible:K,minSize:A=0}=B.constraints;if(g!=null&&K){const ye=Qa({delta:ea(g,V)?A-V:V-g,initialLayout:h,panelConstraints:y.map(Re=>Re.constraints),pivotIndices:tr(o,u,_),prevLayout:h,trigger:"keyboard"});h!==ye&&f(ye)}}break}}};return R.addEventListener("keydown",q),()=>{R.removeEventListener("keydown",q)}});return()=>{v.forEach(R=>R())}},[_,a,n,o,h,b,f])}function wn(a,n){if(a.length!==n.length)return!1;for(let o=0;o<a.length;o++)if(a[o]!==n[o])return!1;return!0}function nr(a,n){const o=a==="horizontal",{x:h,y:b}=Ct(n);return o?h:b}function ki(a,n,o,h,b){const _=o==="horizontal",f=Pt(n,b);Se(f,`No resize handle element found for id "${n}"`);const p=f.getAttribute(Ve.groupId);Se(p,"Resize handle element has no group id attribute");let{initialCursorPosition:y}=h;const C=nr(o,a),X=sr(p,b);Se(X,`No group element found for id "${p}"`);const v=X.getBoundingClientRect(),R=_?v.width:v.height;return(C-y)/R*100}function Si(a,n,o,h,b,_){if(Un(a)){const f=o==="horizontal";let p=0;a.shiftKey?p=100:b!=null?p=b:p=10;let y=0;switch(a.key){case"ArrowDown":y=f?0:p;break;case"ArrowLeft":y=f?-p:0;break;case"ArrowRight":y=f?p:0;break;case"ArrowUp":y=f?0:-p;break;case"End":y=100;break;case"Home":y=-100;break}return y}else return h==null?0:ki(a,n,o,h,_)}function ji({panelDataArray:a}){const n=Array(a.length),o=a.map(_=>_.constraints);let h=0,b=100;for(let _=0;_<a.length;_++){const f=o[_];Se(f,`Panel constraints not found for index ${_}`);const{defaultSize:p}=f;p!=null&&(h++,n[_]=p,b-=p)}for(let _=0;_<a.length;_++){const f=o[_];Se(f,`Panel constraints not found for index ${_}`);const{defaultSize:p}=f;if(p!=null)continue;const y=a.length-h,C=b/y;h++,n[_]=C,b-=C}return n}function Va(a,n,o){n.forEach((h,b)=>{const _=a[b];Se(_,`Panel data not found for index ${b}`);const{callbacks:f,constraints:p,id:y}=_,{collapsedSize:C=0,collapsible:X}=p,v=o[y];if(v==null||h!==v){o[y]=h;const{onCollapse:R,onExpand:u,onResize:I}=f;I&&I(h,v),X&&(R||u)&&(u&&(v==null||pa(v,C))&&!pa(h,C)&&u(),R&&(v==null||!pa(v,C))&&pa(h,C)&&R())}})}function gt(a,n){if(a.length!==n.length)return!1;for(let o=0;o<a.length;o++)if(a[o]!=n[o])return!1;return!0}function Ni({defaultSize:a,dragState:n,layout:o,panelData:h,panelIndex:b,precision:_=3}){const f=o[b];let p;return f==null?p=a!=null?a.toPrecision(_):"1":h.length===1?p="1":p=f.toPrecision(_),{flexBasis:0,flexGrow:p,flexShrink:1,overflow:"hidden",pointerEvents:n!==null?"none":void 0}}function wi(a,n=10){let o=null;return(...b)=>{o!==null&&clearTimeout(o),o=setTimeout(()=>{a(...b)},n)}}function Mn(a){try{if(typeof localStorage<"u")a.getItem=n=>localStorage.getItem(n),a.setItem=(n,o)=>{localStorage.setItem(n,o)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),a.getItem=()=>null,a.setItem=()=>{}}}function rr(a){return`react-resizable-panels:${a}`}function or(a){return a.map(n=>{const{constraints:o,id:h,idIsFromProps:b,order:_}=n;return b?h:_?`${_}:${JSON.stringify(o)}`:JSON.stringify(o)}).sort((n,o)=>n.localeCompare(o)).join(",")}function ir(a,n){try{const o=rr(a),h=n.getItem(o);if(h){const b=JSON.parse(h);if(typeof b=="object"&&b!=null)return b}}catch{}return null}function Mi(a,n,o){var h,b;const _=(h=ir(a,o))!==null&&h!==void 0?h:{},f=or(n);return(b=_[f])!==null&&b!==void 0?b:null}function Ci(a,n,o,h,b){var _;const f=rr(a),p=or(n),y=(_=ir(a,b))!==null&&_!==void 0?_:{};y[p]={expandToSizes:Object.fromEntries(o.entries()),layout:h};try{b.setItem(f,JSON.stringify(y))}catch(C){console.error(C)}}function Cn({layout:a,panelConstraints:n}){const o=[...a],h=o.reduce((_,f)=>_+f,0);if(o.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${o.map(_=>`${_}%`).join(", ")}`);
2if(!ea(h,100)&&o.length>0)for(let _=0;_<n.length;_++){const f=o[_];Se(f!=null,`No layout data found for index ${_}`);const p=100/h*f;o[_]=p}let b=0;for(let _=0;_<n.length;_++){const f=o[_];Se(f!=null,`No layout data found for index ${_}`);const p=Ha({panelConstraints:n,panelIndex:_,size:f});f!=p&&(b+=f-p,o[_]=p)}if(!ea(b,0))for(let _=0;_<n.length;_++){const f=o[_];Se(f!=null,`No layout data found for index ${_}`);const p=f+b,y=Ha({panelConstraints:n,panelIndex:_,size:p});if(f!==y&&(b-=y-f,o[_]=y,ea(b,0)))break}return o}const Ri=100,Wa={getItem:a=>(Mn(Wa),Wa.getItem(a)),setItem:(a,n)=>{Mn(Wa),Wa.setItem(a,n)}},Rn={};function cr({autoSaveId:a=null,children:n,className:o="",direction:h,forwardedRef:b,id:_=null,onLayout:f=null,keyboardResizeBy:p=null,storage:y=Wa,style:C,tagName:X="div",...v}){const R=Ds(_),u=l.useRef(null),[I,se]=l.useState(null),[q,L]=l.useState([]),E=xi(),B=l.useRef({}),g=l.useRef(new Map),V=l.useRef(0),K=l.useRef({autoSaveId:a,direction:h,dragState:I,id:R,keyboardResizeBy:p,onLayout:f,storage:y}),A=l.useRef({layout:q,panelDataArray:[],panelDataArrayChanged:!1});l.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),l.useImperativeHandle(b,()=>({getId:()=>K.current.id,getLayout:()=>{const{layout:z}=A.current;return z},setLayout:z=>{const{onLayout:re}=K.current,{layout:Q,panelDataArray:le}=A.current,W=Cn({layout:z,panelConstraints:le.map(ge=>ge.constraints)});wn(Q,W)||(L(W),A.current.layout=W,re&&re(W),Va(le,W,B.current))}}),[]),Ca(()=>{K.current.autoSaveId=a,K.current.direction=h,K.current.dragState=I,K.current.id=R,K.current.onLayout=f,K.current.storage=y}),yi({committedValuesRef:K,eagerValuesRef:A,groupId:R,layout:q,panelDataArray:A.current.panelDataArray,setLayout:L,panelGroupElement:u.current}),l.useEffect(()=>{const{panelDataArray:z}=A.current;if(a){if(q.length===0||q.length!==z.length)return;let re=Rn[a];re==null&&(re=wi(Ci,Ri),Rn[a]=re);const Q=[...z],le=new Map(g.current);re(a,Q,le,q,y)}},[a,q,y]),l.useEffect(()=>{});const ye=l.useCallback(z=>{const{onLayout:re}=K.current,{layout:Q,panelDataArray:le}=A.current;if(z.constraints.collapsible){const W=le.map(Je=>Je.constraints),{collapsedSize:ge=0,panelSize:Ne,pivotIndices:Ee}=ja(le,z,Q);if(Se(Ne!=null,`Panel size not found for panel "${z.id}"`),!pa(Ne,ge)){g.current.set(z.id,Ne);const Qe=qa(le,z)===le.length-1?Ne-ge:ge-Ne,Fe=Qa({delta:Qe,initialLayout:Q,panelConstraints:W,pivotIndices:Ee,prevLayout:Q,trigger:"imperative-api"});gt(Q,Fe)||(L(Fe),A.current.layout=Fe,re&&re(Fe),Va(le,Fe,B.current))}}},[]),Re=l.useCallback((z,re)=>{const{onLayout:Q}=K.current,{layout:le,panelDataArray:W}=A.current;if(z.constraints.collapsible){const ge=W.map(Ke=>Ke.constraints),{collapsedSize:Ne=0,panelSize:Ee=0,minSize:Je=0,pivotIndices:Qe}=ja(W,z,le),Fe=re??Je;if(pa(Ee,Ne)){const Ke=g.current.get(z.id),ca=Ke!=null&&Ke>=Fe?Ke:Fe,ua=qa(W,z)===W.length-1?Ee-ca:ca-Ee,$e=Qa({delta:ua,initialLayout:le,panelConstraints:ge,pivotIndices:Qe,prevLayout:le,trigger:"imperative-api"});gt(le,$e)||(L($e),A.current.layout=$e,Q&&Q($e),Va(W,$e,B.current))}}},[]),fe=l.useCallback(z=>{const{layout:re,panelDataArray:Q}=A.current,{panelSize:le}=ja(Q,z,re);return Se(le!=null,`Panel size not found for panel "${z.id}"`),le},[]),_e=l.useCallback((z,re)=>{const{panelDataArray:Q}=A.current,le=qa(Q,z);return Ni({defaultSize:re,dragState:I,layout:q,panelData:Q,panelIndex:le})},[I,q]),he=l.useCallback(z=>{const{layout:re,panelDataArray:Q}=A.current,{collapsedSize:le=0,collapsible:W,panelSize:ge}=ja(Q,z,re);return Se(ge!=null,`Panel size not found for panel "${z.id}"`),W===!0&&pa(ge,le)},[]),oe=l.useCallback(z=>{const{layout:re,panelDataArray:Q}=A.current,{collapsedSize:le=0,collapsible:W,panelSize:ge}=ja(Q,z,re);return Se(ge!=null,`Panel size not found for panel "${z.id}"`),!W||Ta(ge,le)>0},[]),ee=l.useCallback(z=>{const{panelDataArray:re}=A.current;re.push(z),re.sort((Q,le)=>{const W=Q.order,ge=le.order;return W==null&&ge==null?0:W==null?-1:ge==null?1:W-ge}),A.current.panelDataArrayChanged=!0,E()},[E]);Ca(()=>{if(A.current.panelDataArrayChanged){A.current.panelDataArrayChanged=!1;const{autoSaveId:z,onLayout:re,storage:Q}=K.current,{layout:le,panelDataArray:W}=A.current;let ge=null;if(z){const Ee=Mi(z,W,Q);
2Ee&&(g.current=new Map(Object.entries(Ee.expandToSizes)),ge=Ee.layout)}ge==null&&(ge=ji({panelDataArray:W}));const Ne=Cn({layout:ge,panelConstraints:W.map(Ee=>Ee.constraints)});wn(le,Ne)||(L(Ne),A.current.layout=Ne,re&&re(Ne),Va(W,Ne,B.current))}}),Ca(()=>{const z=A.current;return()=>{z.layout=[]}},[]);const ue=l.useCallback(z=>{let re=!1;const Q=u.current;return Q&&window.getComputedStyle(Q,null).getPropertyValue("direction")==="rtl"&&(re=!0),function(W){W.preventDefault();const ge=u.current;if(!ge)return()=>null;const{direction:Ne,dragState:Ee,id:Je,keyboardResizeBy:Qe,onLayout:Fe}=K.current,{layout:Ke,panelDataArray:ca}=A.current,{initialLayout:da}=Ee??{},ua=tr(Je,z,ge);let $e=Si(W,z,Ne,Ee,Qe,ge);const fa=Ne==="horizontal";fa&&re&&($e=-$e);const Ja=ca.map(_a=>_a.constraints),la=Qa({delta:$e,initialLayout:da??Ke,panelConstraints:Ja,pivotIndices:ua,prevLayout:Ke,trigger:Un(W)?"keyboard":"mouse-or-touch"}),Ea=!gt(Ke,la);(Jn(W)||Kn(W))&&V.current!=$e&&(V.current=$e,!Ea&&$e!==0?fa?Wt(z,$e<0?Qn:Wn):Wt(z,$e<0?Xn:Zn):Wt(z,0)),Ea&&(L(la),A.current.layout=la,Fe&&Fe(la),Va(ca,la,B.current))}},[]),be=l.useCallback((z,re)=>{const{onLayout:Q}=K.current,{layout:le,panelDataArray:W}=A.current,ge=W.map(Ke=>Ke.constraints),{panelSize:Ne,pivotIndices:Ee}=ja(W,z,le);Se(Ne!=null,`Panel size not found for panel "${z.id}"`);const Qe=qa(W,z)===W.length-1?Ne-re:re-Ne,Fe=Qa({delta:Qe,initialLayout:le,panelConstraints:ge,pivotIndices:Ee,prevLayout:le,trigger:"imperative-api"});gt(le,Fe)||(L(Fe),A.current.layout=Fe,Q&&Q(Fe),Va(W,Fe,B.current))},[]),te=l.useCallback((z,re)=>{const{layout:Q,panelDataArray:le}=A.current,{collapsedSize:W=0,collapsible:ge}=re,{collapsedSize:Ne=0,collapsible:Ee,maxSize:Je=100,minSize:Qe=0}=z.constraints,{panelSize:Fe}=ja(le,z,Q);Fe!=null&&(ge&&Ee&&pa(Fe,W)?pa(W,Ne)||be(z,Ne):Fe<Qe?be(z,Qe):Fe>Je&&be(z,Je))},[be]),ne=l.useCallback((z,re)=>{const{direction:Q}=K.current,{layout:le}=A.current;if(!u.current)return;const W=Pt(z,u.current);Se(W,`Drag handle element not found for id "${z}"`);const ge=nr(Q,re);se({dragHandleId:z,dragHandleRect:W.getBoundingClientRect(),initialCursorPosition:ge,initialLayout:le})},[]),pe=l.useCallback(()=>{se(null)},[]),T=l.useCallback(z=>{const{panelDataArray:re}=A.current,Q=qa(re,z);Q>=0&&(re.splice(Q,1),delete B.current[z.id],A.current.panelDataArrayChanged=!0,E())},[E]),G=l.useMemo(()=>({collapsePanel:ye,direction:h,dragState:I,expandPanel:Re,getPanelSize:fe,getPanelStyle:_e,groupId:R,isPanelCollapsed:he,isPanelExpanded:oe,reevaluatePanelConstraints:te,registerPanel:ee,registerResizeHandle:ue,resizePanel:be,startDragging:ne,stopDragging:pe,unregisterPanel:T,panelGroupElement:u.current}),[ye,I,h,Re,fe,_e,R,he,oe,te,ee,ue,be,ne,pe,T]),me={display:"flex",flexDirection:h==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return l.createElement(Mt.Provider,{value:G},l.createElement(X,{...v,children:n,className:o,id:_,ref:u,style:{...me,...C},[Ve.group]:"",[Ve.groupDirection]:h,[Ve.groupId]:R}))}const lr=l.forwardRef((a,n)=>l.createElement(cr,{...a,forwardedRef:n}));cr.displayName="PanelGroup";lr.displayName="forwardRef(PanelGroup)";function qa(a,n){return a.findIndex(o=>o===n||o.id===n.id)}function ja(a,n,o){const h=qa(a,n),_=h===a.length-1?[h-1,h]:[h,h+1],f=o[h];return{...n.constraints,panelSize:f,pivotIndices:_}}function Pi({disabled:a,handleId:n,resizeHandler:o,panelGroupElement:h}){l.useEffect(()=>{if(a||o==null||h==null)return;const b=Pt(n,h);if(b==null)return;const _=f=>{if(!f.defaultPrevented)switch(f.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{f.preventDefault(),o(f);break}case"F6":{f.preventDefault();const p=b.getAttribute(Ve.groupId);Se(p,`No group element found for id "${p}"`);const y=nt(p,h),C=ar(p,n,h);Se(C!==null,`No resize element found for id "${n}"`);const X=f.shiftKey?C>0?C-1:y.length-1:C+1<y.length?C+1:0;y[X].focus();break}}};return b.addEventListener("keydown",_),()=>{b.removeEventListener("keydown",_)}},[h,a,n,o])}function dr({children:a=null,className:n="",disabled:o=!1,hitAreaMargins:h,id:b,onBlur:_,onClick:f,onDragging:p,onFocus:y,onPointerDown:C,onPointerUp:X,style:v={},tabIndex:R=0,tagName:u="div",...I}){var se,q;const L=l.useRef(null),E=l.useRef({onClick:f,onDragging:p,onPointerDown:C,onPointerUp:X});l.useEffect(()=>{E.current.onClick=f,E.current.onDragging=p,E.current.onPointerDown=C,E.current.onPointerUp=X}
2);const B=l.useContext(Mt);if(B===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:g,groupId:V,registerResizeHandle:K,startDragging:A,stopDragging:ye,panelGroupElement:Re}=B,fe=Ds(b),[_e,he]=l.useState("inactive"),[oe,ee]=l.useState(!1),[ue,be]=l.useState(null),te=l.useRef({state:_e});Ca(()=>{te.current.state=_e}),l.useEffect(()=>{if(o)be(null);else{const G=K(fe);be(()=>G)}},[o,fe,K]);const ne=(se=h==null?void 0:h.coarse)!==null&&se!==void 0?se:15,pe=(q=h==null?void 0:h.fine)!==null&&q!==void 0?q:5;l.useEffect(()=>{if(o||ue==null)return;const G=L.current;Se(G,"Element ref not attached");let me=!1;return fi(fe,G,g,{coarse:ne,fine:pe},(re,Q,le)=>{if(!Q){he("inactive");return}switch(re){case"down":{he("drag"),me=!1,Se(le,'Expected event to be defined for "down" action'),A(fe,le);const{onDragging:W,onPointerDown:ge}=E.current;W==null||W(!0),ge==null||ge();break}case"move":{const{state:W}=te.current;me=!0,W!=="drag"&&he("hover"),Se(le,'Expected event to be defined for "move" action'),ue(le);break}case"up":{he("hover"),ye();const{onClick:W,onDragging:ge,onPointerUp:Ne}=E.current;ge==null||ge(!1),Ne==null||Ne(),me||W==null||W();break}}})},[ne,g,o,pe,K,fe,ue,A,ye]),Pi({disabled:o,handleId:fe,resizeHandler:ue,panelGroupElement:Re});const T={touchAction:"none",userSelect:"none"};return l.createElement(u,{...I,children:a,className:n,id:b,onBlur:()=>{ee(!1),_==null||_()},onFocus:()=>{ee(!0),y==null||y()},ref:L,role:"separator",style:{...T,...v},tabIndex:R,[Ve.groupDirection]:g,[Ve.groupId]:V,[Ve.resizeHandle]:"",[Ve.resizeHandleActive]:_e==="drag"?"pointer":oe?"keyboard":void 0,[Ve.resizeHandleEnabled]:!o,[Ve.resizeHandleId]:fe,[Ve.resizeHandleState]:_e})}dr.displayName="PanelResizeHandle";const Di=({className:a,...n})=>e.jsx(lr,{className:aa("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",a),...n}),Pn=Bn,Ai=({withHandle:a,className:n,...o})=>e.jsx(dr,{className:aa("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 [&[data-panel-group-direction=vertical]>div]:rotate-90",n),...o,children:a&&e.jsx("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:e.jsx($n,{className:"h-2.5 w-2.5"})})}),Ti={cover:{title:"Capa",columns:[],expectedFields:[],aiHint:"Slide de capa sem dados — apenas título e logo"},agenda:{title:"Agenda do Dia",columns:[{name:"label",description:"Nome do tópico",example:"Crescimento de Carteira"},{name:"icon",description:"Emoji do tópico",example:"📈"},{name:"highlight",description:"Se é novo (true/false)",example:"false"}],expectedFields:["label","icon"],aiHint:"Lista de tópicos da agenda com ícone e destaque"},mrr_evolution:{title:"Evolução MRR",columns:[{name:"mes",description:"Mês de referência",example:"Fev/25"},{name:"mrr_pontua",description:"MRR Pontua (novo software)",example:"35000"},{name:"mrr_pontua_pr",description:"MRR Pontua PR (software legado)",example:"0"},{name:"mrr_tron_pr",description:"MRR Tron PR (software legado)",example:"145000"},{name:"mrr_total",description:"Total Carteira (soma)",example:"180000"}],expectedFields:["mrr_pontua","mrr_pontua_pr","mrr_tron_pr","mrr_total"],aiHint:"A IA identificará automaticamente as colunas de mês e valores MRR"},mrr_growth:{title:"Crescimento & Clientes",columns:[{name:"mes",description:"Mês de referência",example:"Jan"},{name:"novos_organico",description:"Novos clientes orgânicos",example:"8"},{name:"migracao",description:"Clientes por migração",example:"5"}],expectedFields:["novos_organico","migracao"],aiHint:"A IA identificará as colunas de mês e novos clientes"},nmr_channel_v2:{title:"MRR por Canal — Meta vs Realizado",columns:[{name:"vendas_novas",description:"NMR de vendas novas (realizado)",example:"8591"},{name:"migracao_tron",description:"NMR de migração PR (realizado)",example:"1347"},{name:"vendas_canal",description:"NMR de vendas canal (realizado)",example:"1867"},{name:"meta_vendas_novas",description:"Meta vendas novas",example:"18500"},{name:"meta_migracao",description:"Meta migração",example:"3000"},{name:"meta_vendas_canal",description:"Meta vendas canal",example:"12917"}],expectedFields:["vendas_novas","migracao_tron","vendas_canal"],aiHint:"Realizado sincronizado do HubSpot; Metas são inseridas manualmente"}
2,nmr_channel_v3:{title:"MRR por Canal — Meta vs Realizado (sem Migração)",columns:[{name:"vendas_novas",description:"NMR de vendas novas (realizado)",example:"8591"},{name:"vendas_canal",description:"NMR de vendas canal (realizado)",example:"1867"},{name:"meta_vendas_novas",description:"Meta vendas novas",example:"18500"},{name:"meta_vendas_canal",description:"Meta vendas canal",example:"12917"}],expectedFields:["vendas_novas","vendas_canal"],aiHint:"Realizado sincronizado do HubSpot; Metas são inseridas manualmente. Sem migração."},contracts_by_team:{title:"Contratos por Time",columns:[{name:"mes",description:"Mês de referência",example:"Jan"},{name:"hunters",description:"Contratos fechados por Hunters",example:"28"},{name:"farmers",description:"Contratos fechados por Farmers",example:"12"}],expectedFields:["hunters","farmers"],aiHint:"Dados são sincronizados automaticamente do HubSpot"},ticket_medio:{title:"Ticket Médio",columns:[{name:"mes",description:"Mês de referência",example:"Jan"},{name:"ticket_pontua",description:"Ticket médio Pontua",example:"193"},{name:"ticket_canais",description:"Ticket médio Canais",example:"112"}],expectedFields:["ticket_pontua","ticket_canais"],aiHint:"Dados são sincronizados automaticamente do HubSpot"},migracao_status:{title:"Status Migração",columns:[{name:"base_nome",description:"Nome da base",example:"Tron Total"},{name:"total",description:"Total de clientes",example:"657"},{name:"migrados",description:"Clientes migrados",example:"40"}],expectedFields:["base_nome","total","migrados"],aiHint:"Contratos são sincronizados do HubSpot, bases são manuais"},migracao_status_v2:{title:"Migração V2 — HubSpot Dinâmico",columns:[{name:"base_tron_total",description:"Total de clientes na base Tron",example:"657"},{name:"base_keevo_total",description:"Total de clientes na base Keevo",example:"234"},{name:"potencial_mrr",description:"Potencial MRR mensal (R$)",example:"114000"}],expectedFields:["base_tron_total","base_keevo_total","potencial_mrr"],aiHint:"Migração 100% dinâmica via HubSpot; apenas totais de bases e potencial são manuais"},pipeline_funnel:{title:"Pipeline de Vendas",columns:[{name:"estagio",description:"Estágio do funil",example:"Qualificação"},{name:"deals",description:"Quantidade de deals",example:"142"},{name:"valor",description:"Valor total do estágio",example:"28400"}],expectedFields:["estagio","deals","valor"],aiHint:"Dados são sincronizados automaticamente do HubSpot"},kpis_saas_ltv:{title:"KPIs SaaS LTV",columns:[{name:"mes",description:"Mês de referência",example:"Jul"},{name:"churn_rate",description:"Taxa de churn mensal (%)",example:"4.6"},{name:"ltv",description:"Lifetime Value (R$)",example:"5498"},{name:"cac",description:"Custo de Aquisição (R$)",example:"1303"}],expectedFields:["churn_rate","ltv","cac"],aiHint:"Dados de churn e ticket são do Stripe; CAC é inserido manualmente"},kpis_cac_payback:{title:"KPIs CAC & CAC Payback",columns:[{name:"mes",description:"Mês de referência",example:"Jul"},{name:"despesas_mkt",description:"Despesas de Marketing (R$)",example:"18000"},{name:"despesas_vendas",description:"Despesas de Vendas (R$)",example:"32000"}
2,{name:"novos_clientes",description:"Novos clientes no mês",example:"30"}],expectedFields:["despesas_mkt","despesas_vendas","novos_clientes"],aiHint:"Ticket médio vem do Stripe; despesas e novos clientes são inseridos manualmente"},concentracao_faturamento:{title:"Concentração de Faturamento",columns:[{name:"faixa",description:"Faixa de valor",example:"Até R$ 180"},{name:"percentual",description:"Percentual do MRR (%)",example:"45"}],expectedFields:["faixa","percentual"],aiHint:"Até julho/2026, os dados vêm do Stripe; desde agosto/2026, vêm exclusivamente do Maestro Financeiro"},churn_analise:{title:"Churn — Análise Completa",columns:[{name:"mes",description:"Mês de referência",example:"Dez"},{name:"cancelamentos",description:"Quantidade de cancelamentos",example:"5"},{name:"churn_mrr",description:"MRR perdido (R$)",example:"557"},{name:"motivo",description:"Motivo do cancelamento",example:"Preço"},{name:"tipo",description:"Tipo (controlavel/parcial/inevitavel)",example:"controlavel"}],expectedFields:["cancelamentos","churn_mrr","motivo","tipo"],aiHint:"Cancelamentos vêm do Stripe; motivos são inseridos manualmente"},marketing_aquisicao:{title:"Marketing — Aquisição & Qualidade",columns:[{name:"canal",description:"Nome do canal de aquisição",example:"Orgânico"},{name:"leads",description:"Quantidade de leads",example:"352"},{name:"fit_score_medio",description:"Fit Score médio (0-100)",example:"58"},{name:"temperatura_medio",description:"Temperatura média (0-100)",example:"35"},{name:"budget",description:"Budget investido (R$)",example:"5000"}],expectedFields:["canal","leads","fit_score_medio","temperatura_medio","budget"],aiHint:"Lead Scoring (Fit Score e Temperatura) vem do HubSpot; Budget é manual"},marketing_aquisicao_v2:{title:"Marketing V2 — Funil, Qualidade & Taxa",columns:[],expectedFields:[],aiHint:"Dados sincronizados do HubSpot (mesma base do Marketing Aquisição)."},marketing_qualidade_canal_v2:{title:"Marketing V2 — Qualidade por Canal",columns:[],expectedFields:[],aiHint:"Dados sincronizados do HubSpot (mesma base do Marketing Aquisição)."},cohort_retencao:{title:"Cohort — Retenção Mensal por Safra",columns:[{name:"safra",description:"Mês/ano de aquisição",example:"Jan/25"},{name:"total_inicial",description:"Total de clientes na safra",example:"50"},{name:"m1",description:"Retenção M1 (%)",example:"100"},{name:"m2",description:"Retenção M2 (%)",example:"97"},{name:"m3",description:"Retenção M3 (%)",example:"95"},{name:"m6",description:"Retenção M6 (%)",example:"91"},{name:"m12",description:"Retenção M12 (%)",example:"86"}],expectedFields:["safra","total_inicial","m1","m2","m3","m6","m12"],aiHint:"Dados são calculados a partir das subscriptions do Stripe"},cohort_retencao_m13_m24:{title:"Cohort — Retenção M13 a M24",columns:[{name:"safra",description:"Mês/ano de aquisição",example:"Jan/24"},{name:"total_inicial",description:"Total de clientes na safra",example:"50"},{name:"m13",description:"Retenção M13 (%)",example:"83"},{name:"m18",description:"Retenção M18 (%)",example:"78"},{name:"m24",description:"Retenção M24 (%)",example:"72"}],expectedFields:["safra","total_inicial","m13","m18","m24"],aiHint:"Dados são calculados a partir das subscriptions do Stripe (mesma sincronização do slide M1–M12)"},headcount_produtividade:{title:"Headcount & Produtividade",columns:[{name:"mes",description:"Mês de referência",example:"Set"},{name:"diretoria",description:"Colaboradores Diretoria",example:"2"},{name:"tecnologia",description:"Colaboradores Tecnologia",example:"6"},{name:"comercial",description:"Colaboradores Comercial",example:"3"},{name:"marketing",description:"Colaboradores Marketing",example:"4"},{name:"relacionamento",description:"Colaboradores Relacionamento/CS",example:"9"},{name:"prev_diretoria",description:"Previsto Diretoria (jan/26+)",example:"3"},{name:"prev_tecnologia",description:"Previsto Tecnologia (jan/26+)",example:"8"},{name:"prev_comercial",description:"Previsto Comercial (jan/26+)",example:"8"},{name:"prev_marketing",description:"Previsto Marketing (jan/26+)",example:"4"},{name:"prev_relacionamento",description:"Previsto Relacionamento (jan/26+)",example:"10"}],expectedFields:["diretoria","tecnologia","comercial","marketing","relacionamento"],aiHint:"Headcount por departamento; MRR é puxado automaticamente da Evolução MRR"},budget_vs_realizado:{title:"Financeiro — Budget vs Realizado",columns:[{name:"mes",description:"Mês de referência",example:"jan/25"},{name:"receita_bruta",description:"Receita Bruta Pontua (R$)",example:"26014"}
2,{name:"impostos",description:"Valor dos impostos (R$)",example:"3468"},{name:"despesas",description:"Total de Despesas Geral (R$)",example:"197051"}],expectedFields:["receita_bruta","impostos","despesas"],aiHint:"Receita, Impostos e Despesas são manuais; demais campos são calculados automaticamente"},budget_vs_realizado_v3:{title:"Budget vs Realizado V3 — Layout Adaptativo",columns:[{name:"mes",description:"Mês de referência",example:"jan/25"},{name:"receita_orcada",description:"Receita Orçada (R$)",example:"200000"},{name:"receita_realizada",description:"Receita Realizada (R$)",example:"192000"},{name:"despesa_orcada",description:"Despesa Orçada (R$)",example:"180000"},{name:"despesa_realizada",description:"Despesa Realizada (R$)",example:"175000"},{name:"aporte_keevo",description:"Aporte Keevo (R$)",example:"285000"},{name:"aporte_tron",description:"Aporte Tron (R$)",example:"285000"}],expectedFields:["receita_orcada","receita_realizada","despesa_orcada","despesa_realizada","aporte_keevo","aporte_tron"],aiHint:"Layout adaptativo: compacto (1-4 meses) ou expandido (5-12 meses)"},suporte_indicadores:{title:"Suporte — Tickets por Produto (Mensal)",columns:[{name:"mes",description:"Mês (MM/YYYY)",example:"01/2026"},{name:"ponto_remoto",description:"Tickets Ponto Remoto",example:"189"},{name:"pontua",description:"Tickets Pontua",example:"331"},{name:"ia",description:"Tickets IA",example:"137"}],expectedFields:["mes","ponto_remoto","pontua","ia"],aiHint:"Histórico mensal de tickets por produto (últimos 6 meses). Colunas: mes, ponto_remoto, pontua, ia"},atendimento_comparativo:{title:"Atendimento — Julho x Agosto",columns:[],expectedFields:[],aiHint:"Comparativo executivo de volume, atendimento humano e Horácio."},parceiro_performance:{title:"Parceiro Pontua — Evolução & Performance",columns:[{name:"mes",description:"Mês (Ago, Set, Out...)",example:"Jan"},{name:"indicacoes",description:"Total de indicações",example:"26"},{name:"convertidas",description:"Indicações convertidas",example:"8"}],expectedFields:["indicacoes","convertidas"],aiHint:"Evolução mensal: mês, indicações e convertidas; taxa calculada automaticamente"},consolidado_8kpis:{title:"Consolidado Mensal — 8 KPIs",columns:[{name:"label",description:"Nome do KPI",example:"MRR TOTAL"},{name:"value",description:"Valor formatado",example:"R$ 248.012"},{name:"subtitle",description:"Subtexto/variação",example:"+3,6%"},{name:"accent_color",description:"Cor: success/primary/accent/danger/warning",example:"success"},{name:"trend_direction",description:"up_is_good/down_is_good/neutral",example:"up_is_good"}],expectedFields:["label","value","subtitle","accent_color","trend_direction"],aiHint:"8 KPIs com label, valor e cor; a IA mapeia colunas automaticamente"},desempenho_vendas:{title:"Desempenho em Vendas — HubSpot",columns:[{name:"mes",description:"Mês de referência",example:"jan/26"},{name:"vendas_nmr",description:"Vendas NMR (MRR)",example:"8591.75"},{name:"treinamento",description:"Vendas de treinamento",example:"3830.00"},{name:"contratos",description:"Total de contratos",example:"49"},{name:"ticket_nmr",description:"Ticket médio NMR",example:"175.34"},{name:"ticket_treino",description:"Ticket médio treinamento",example:"348.18"}],expectedFields:["vendas_nmr","treinamento","contratos","ticket_nmr","ticket_treino"],aiHint:"Dados são sincronizados automaticamente do HubSpot (deals closedwon)"},desempenho_vendas_acumulado:{title:"Desempenho em Vendas — Acumulado",columns:[],expectedFields:[],aiHint:"Dados sincronizados do HubSpot agregando os últimos N meses"},nmr_channel_v3_acumulado:{title:"MRR por Canal — Acumulado YTD",columns:[],expectedFields:[],aiHint:"Dados agregados automaticamente dos últimos 4 meses do banco nmr_channel_v2 + nmr_metas"},base_usuarios:{title:"Base de Usuários & Empresas",columns:[{name:"mes",description:"Mês de referência",example:"Fev/26"},{name:"usuarios_total",description:"Total de usuários cadastrados",example:"12167"},{name:"usuarios_ativos",description:"Usuários ativos",example:"11331"},{name:"usuarios_novos",description:"Novos usuários no mês",example:"225"},{name:"usuarios_desativados",description:"Usuários desativados no mês",example:"29"},{name:"empresas_total",description:"Total de empresas cadastradas",example:"590"},{name:"empresas_ativas",description:"Empresas ativas",example:"430"},{name:"empresas_novas",description:"Novas empresas no mês",example:"12"},{name:"empresas_desativadas",description:"Empresas desativadas no mês",example:"2"}],expectedFields:["usuarios_total","usuarios_ativos","usuarios_novos","usuarios_desativados","empresas_total","empresas_ativas"],aiHint:"Dados de usuários e empresas — futuro: Database Pontua via edge function"},lead_scoring:{title:"Lead Scoring (Educativo)",columns:[{name:"tipo",description:"Tipo de pontuação (Fit/Engagement)",example:"Fit"},{name:"criterio",description:"Critério ou sinal",example:"Faixa de Colaboradores"}
2,{name:"pontos",description:"Pontos atribuídos",example:"30"}],expectedFields:["tipo","criterio","pontos"],aiHint:"Slide educativo estático — não requer importação de dados"},unit_economics:{title:"Unit Economics (Educativo)",columns:[{name:"metrica",description:"Nome da métrica (LTV, CAC, etc.)",example:"LTV"},{name:"formula",description:"Fórmula de cálculo",example:"Ticket × LT × 12"},{name:"valor",description:"Valor exemplo",example:"R$ 6.264"}],expectedFields:["metrica","formula","valor"],aiHint:"Slide educativo estático — não requer importação de dados"},resultado_trimestral:{title:"Resultado Trimestral",columns:[],expectedFields:[],aiHint:"Slide de consolidação trimestral — dados editáveis via editor lateral"}};function Ei({onImport:a,slideType:n="mrr_evolution"}){const[o,h]=l.useState(!1),[b,_]=l.useState("upload"),[f,p]=l.useState(null),[y,C]=l.useState([]),[X,v]=l.useState(""),[R,u]=l.useState(null),[I,se]=l.useState(!1),[q,L]=l.useState(""),[E,B]=l.useState(null),g=Ti[n],V=l.useCallback(oe=>{B(null);const ee=new FileReader;ee.onload=ue=>{var be;try{const te=(be=ue.target)==null?void 0:be.result,ne=Tn(te,{type:"binary"});p(ne);const pe=ne.SheetNames.map(T=>{const G=ne.Sheets[T],me=ns.sheet_to_json(G,{header:1}),z=me.slice(0,5);return{name:T,preview:z,rowCount:me.length}});C(pe),pe.length===1&&v(pe[0].name),_("select-sheet")}catch(te){console.error("Error reading file:",te),B("Erro ao ler o arquivo. Verifique se é uma planilha válida.")}},ee.readAsBinaryString(oe)},[]),K=async()=>{if(!(!f||!X)){_("processing"),se(!0),L("Analisando estrutura da planilha...");try{const oe=f.Sheets[X],ee=ns.sheet_to_json(oe,{header:1}),ue=ee[0]||[],be=ee.slice(1,10);L(`Usando IA para mapear colunas para ${g.title}...`);const{data:te,error:ne}=await J.functions.invoke("smart-slide-import",{body:{slideType:n,headers:ue,sampleRows:be,allRows:ee.slice(1),expectedFields:g.expectedFields}});if(ne)throw ne;if(!te.success)throw new Error(te.error||"Falha no processamento");L(te.message||"Dados processados com sucesso!"),u(te.records),_("preview")}catch(oe){console.error("AI processing error:",oe),B(oe instanceof Error?oe.message:"Erro ao processar dados com IA"),_("select-sheet")}finally{se(!1)}}},A=l.useCallback(oe=>{oe.preventDefault(),h(!1);const ee=oe.dataTransfer.files[0];ee&&V(ee)},[V]),ye=l.useCallback(oe=>{var ue;const ee=(ue=oe.target.files)==null?void 0:ue[0];ee&&V(ee),oe.target.value=""},[V]),Re=()=>{if(R){if(n==="mrr_evolution"){const oe=R.map(ee=>({mes:ee.mes,mrrTotal:ee.data.mrr_total||0,mrrPontua:ee.data.mrr_pontua||0,mrrPontuaPR:ee.data.mrr_pontua_pr||0,mrrTronPR:ee.data.mrr_tron_pr||0}));a(oe)}else if(n==="mrr_growth"){const oe=R.map(ee=>({mes:ee.mes,mrrTotal:0,mrrPontua:0,mrrPontuaPR:0,mrrTronPR:0,novosOrganico:ee.data.novos_organico||0,migracao:ee.data.migracao||0}));a(oe)}else a(R);fe(),Y.success("Dados aplicados ao slide!")}},fe=()=>{_("upload"),p(null),C([]),v(""),u(null),se(!1),L(""),B(null)},_e=y.find(oe=>oe.name===X),he=()=>{if(!R)return null;const oe=g.columns;return[...g.expectedFields],e.jsx("div",{className:"max-h-48 overflow-auto rounded-lg border",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{className:"bg-muted/50 sticky top-0",children:e.jsx("tr",{children:oe.slice(0,5).map(ee=>e.jsx("th",{className:"text-left p-2 font-medium",children:ee.description.split("(")[0].trim()},ee.name))})}),e.jsxs("tbody",{children:[R.slice(0,5).map((ee,ue)=>e.jsxs("tr",{className:"border-t",children:[e.jsx("td",{className:"p-2 font-medium",children:ee.mes}),g.expectedFields.slice(0,4).map(be=>{var ne;const te=(ne=ee.data)==null?void 0:ne[be];return e.jsx("td",{className:"p-2 text-right",children:typeof te=="number"?te.toLocaleString("pt-BR"):te??"-"},be)})]},ue)),R.length>5&&e.jsx("tr",{className:"border-t",children:e.jsxs("td",{colSpan:Math.min(5,oe.length),className:"p-2 text-center text-muted-foreground",children:["... e mais ",R.length-5," registros"]})})]})]})})};return e.jsxs("div",{className:"space-y-4",children:[b==="upload"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{onDragOver:oe=>{oe.preventDefault(),h(!0)},onDragLeave:()=>h(!1),onDrop:A,className:aa("border-2 border-dashed rounded-xl p-6 text-center transition-colors cursor-pointer",o?"border-primary bg-primary/5":"border-muted-foreground
2/25 hover:border-muted-foreground/50"),onClick:()=>{var oe;return(oe=document.getElementById("file-input-smart"))==null?void 0:oe.click()},children:[e.jsx("input",{id:"file-input-smart",type:"file",accept:".xlsx,.xls,.csv",onChange:ye,className:"hidden"}),e.jsx(us,{className:"h-8 w-8 mx-auto mb-3 text-muted-foreground"}),e.jsx("p",{className:"text-sm font-medium",children:"Arraste um arquivo ou clique para selecionar"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"CSV ou Excel (.xlsx, .xls)"})]}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-medium text-muted-foreground",children:[e.jsx(go,{className:"h-3.5 w-3.5"}),"Modelo esperado: ",g.title]}),(()=>{const oe=Vo(n);return oe?e.jsxs(ia,{variant:"outline",className:"text-xs gap-1 font-mono",children:[e.jsx(Ma,{className:"h-3 w-3"}),oe.table]}):null})()]}),e.jsx("div",{className:"grid grid-cols-2 gap-1",children:g.columns.map(oe=>e.jsxs("div",{className:"text-xs",children:[e.jsx("span",{className:"font-mono text-primary",children:oe.name}),e.jsxs("span",{className:"text-muted-foreground ml-1",children:["(",oe.example,")"]})]},oe.name))}),e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-1.5 pt-1 border-t border-border/50",children:[e.jsx(_t,{className:"h-3 w-3 text-primary"}),g.aiHint]}),e.jsxs("p",{className:"text-xs text-muted-foreground pt-1",children:["Não tem um arquivo pronto?"," ",e.jsx("a",{href:"/status-report/templates",className:"text-teal-600 hover:underline font-medium",target:"_blank",rel:"noopener noreferrer",children:"Baixe um template"})]})]})]}),b==="select-sheet"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(Ae,{className:"mb-2 block text-sm",children:"Selecione a aba da planilha"}),e.jsxs(hs,{value:X,onValueChange:v,children:[e.jsx(fs,{children:e.jsx(En,{placeholder:"Escolha uma aba..."})}),e.jsx(gs,{children:y.map(oe=>e.jsx(Xa,{value:oe.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(rs,{className:"h-4 w-4"}),e.jsx("span",{children:oe.name}),e.jsxs("span",{className:"text-muted-foreground text-xs",children:["(",oe.rowCount," linhas)"]})]})},oe.name))})]})]}),_e&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{className:"text-xs",children:"Pré-visualização"}),e.jsx("div",{className:"border rounded-lg overflow-x-auto max-h-32",children:e.jsx("table",{className:"w-full text-xs",children:e.jsx("tbody",{children:_e.preview.slice(0,4).map((oe,ee)=>e.jsx("tr",{className:ee===0?"bg-muted font-medium":"",children:oe.slice(0,5).map((ue,be)=>e.jsx("td",{className:"px-2 py-1 border-r last:border-r-0 truncate max-w-[100px]",children:(ue==null?void 0:ue.toString())||""},be))},ee))})})})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(de,{variant:"outline",onClick:fe,size:"sm",children:"Voltar"}),e.jsxs(de,{onClick:K,disabled:!X,size:"sm",className:"flex-1 gap-2",children:[e.jsx(_t,{className:"h-4 w-4"}),"Processar com IA"]})]})]}),b==="processing"&&e.jsxs("div",{className:"py-6 text-center space-y-3",children:[e.jsx(Le,{className:"h-8 w-8 animate-spin mx-auto text-primary"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:q}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Aguarde enquanto analisamos seus dados..."})]})]}),E&&e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-destructive/10 text-destructive rounded-lg",children:[e.jsx(xs,{className:"h-4 w-4 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:E})]}),b==="preview"&&R&&e.jsxs("div",{className:"space-y-4",children:[q&&e.jsxs("div",{className:"flex items-start gap-2 p-2 bg-primary/10 text-primary rounded-lg",children:[e.jsx(_t,{className:"h-3.5 w-3.5 mt-0.5"}),e.jsx("span",{className:"text-xs",children:q})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(rs,{className:"h-4 w-4"}),e.jsxs("span",{children:[R.length," registros encontrados para ",g.title]})]}),he(),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(de,{onClick:Re,className:"flex-1 gap-2",children:[e.jsx(rt,{className:"h-4 w-4"}),"Aplicar Dados"]}),e.jsx(de,{variant:"outline",onClick:fe,children:e.jsx(wt,{className:"h-4 w-4"})})]})]})]})}function zi({config:a,onConfigChange:n,onImportData:o,onReset:h,onGenerateInsight:b,isGeneratingInsight:_=!1,slideType:f="mrr_evolution",lastSyncAt:p,onSyncHubSpot:y,isLoadingNMR:C=!1,onSyncContractsHubSpot:X,isLoadingContracts:v=!1,onSyncTicketMedioHubSpot:R,isLoadingTicketMedio:u=!1,onSyncMigracaoHubSpot:I,isLoadingMigracao:se=!1,onSyncPipelineFunnelHubSpot:q,isLoadingPipelineFunnel:L=!1,onSyncKpisSaaSStripe:E,isLoadingKpisSaaS:B=!1,onSyncCacPaybackStripe:g,isLoadingCacPayback:V=!1,onSyncConcentracaoStripe:K,isLoadingConcentracao:A=!1,onSyncMarketingHubSpot:ye,isLoadingMarketing:Re=!1,onSyncCohortStripe:fe,isLoadingCohort:_e=!1,onSyncDesempenhoHubSpot:he,isLoadingDesempenho:oe=!1,onAddCheckoutManual:ee,onAddCheckoutManualContratos:ue,onAddCheckoutManualNMR:be,onAddCheckoutManualTicketMedio:te,mesReferencia:ne}){const pe=["nmr_channel_v2","nmr_channel_v3_acumulado","contracts_by_team","ticket_medio","migracao_status","pipeline_funnel","kpis_saas_ltv","kpis_cac_payback","concentracao_faturamento","cohort_retencao","cohort_retencao_m13_m24","desempenho_vendas","desempenho_vendas_acumulado"].includes(f);return e.jsxs("div",{className:"h-full flex flex-col p-4 space-y-6 overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h2",{className:"font-semibold text-lg",children:"Editor de Slide"}),e.jsxs(de,{variant:"ghost",size:"sm",onClick:h,className:"gap-1",children:[e.jsx(Ze,{className:"h-3 w-3"}),"Reset"]})]}),pe&&e.jsx("div",{className:"flex items-center gap-2",children:p?e.jsxs(ia,{variant:"outline",className:"text-xs gap-1.5 text-green-600 border-green-200 bg-green-50",children:[e.jsx(tt,{className:"h-3 w-3"}),"Sincronizado: ",qo(new Date(p),{addSuffix:!0,locale:Ba})]}):e.jsxs(ia,{variant:"outline",className:"text-xs gap-1.5 text-amber-600 border-amber-200 bg-amber-50",children:[e.jsx(tt,{className:"h-3 w-3"}),"Sem dados sincronizados"]})}),e.jsx(Ie,{}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Configurações"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"title",children:"Título"}),e.jsx(Ge,{id:"title",value:a.title,onChange:T=>n({title:T.target.value}),placeholder:"Evolução MRR — Últimos 12 Meses"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"subtitle",children:"Subtítulo (opcional)"}),e.jsx(Ge,{id:"subtitle",value:a.subtitle||"",onChange:T=>n({subtitle:T.target.value||void 0}),placeholder:"Descrição adicional..."})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(Ae,{children:"Marcos/Destaques (até 3)"}),[0,1,2].map(T=>{var G;return e.jsx(Ge,{value:((G=a.milestones)==null?void 0:G[T])||"",onChange:me=>{const z=[...a.milestones||[]];for(z[T]=me.target.value;z.length>0&&!z[z.length-1];)z.pop();n({milestones:z,milestone:z[0]||void 0})},placeholder:`Marco ${T+1}`},T)}),e.jsx(de,{variant:"outline",size:"sm",onClick:b,disabled:_,className:"gap-2 w-full",children:_?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Gerando 3 marcos..."]}):e.jsxs(e.Fragment,{children:[e.jsx(_t,{className:"h-4 w-4"}),"Gerar com IA"]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"pageNumber",children:"Número da Página"}),e.jsx(Ge,{id:"pageNumber",value:a.pageNumber,onChange:T=>n({pageNumber:T.target.value}),placeholder:"4/26",className:"w-24"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ae,{htmlFor:"showLegend",children:"Exibir Legenda"}),e.jsx(Sa,{id:"showLegend",checked:a.showLegend,onCheckedChange:T=>n({showLegend:T})})]})]})]}),e.jsx(Ie,{}),f==="nmr_channel_v2"&&e.jsxs(e.Fragment,{children:[y&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização HubSpot"}),e.jsx(de,{variant:"outline",size:"sm",onClick:y,disabled:C,className:"gap-2 w-full",children:C?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca deals fechados do HubSpot e soma o Checkout (BI Stripe) em Vendas Pontua."})]}),e.jsx(Ie,{}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"meta-pontua-migracao",children:"Meta Pontua + Migração PR (R$)"}),e.jsx(Ge,{id:"meta-pontua-migracao",type:"number",min:0,step:"0.01",value:a.metaPontuaMigracaoOverride??33600,onChange:T=>{const G=T.target.value;n({metaPontuaMigracaoOverride:G===""?null:Number(G)})}}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Vendas Canal aparece somente como realizado e não participa do atingimento desta meta."})]}),e.jsx(Ie,{})]}),f==="nmr_channel_v3_acumulado"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Metas (Acumulado YTD)"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sobrescreve a soma das metas mensais. Deixe em branco para usar a soma automática vinda das Metas Mensais."}),[{key:"vendasNovas",label:"Meta Vendas Pontua (R$)"},{key:"migracao",label:"Meta Migração (R$)"}].map(({key:T,label:G})=>{const me=a.metasAcumuladoOverride||{},z=me[T];return e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:`meta-acum-${T}`,children:G}),e.jsx(Ge,{id:`meta-acum-${T}`,type:"number",min:0,step:"0.01",placeholder:"Soma automática",value:z??"",onChange:re=>{const Q=re.target.value,le={...me,[T]:Q===""?null:Number(Q)};n({metasAcumuladoOverride:le})}})]},T)})]}),be&&e.jsxs(e.Fragment,{children:[e.jsx(Ie,{}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Checkout Manual (Acumulado)"}),e.jsx(de,{variant:"outline",size:"sm",onClick:be,className:"gap-2 w-full",children:"+ Checkout Manual"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Valor único somado a Vendas Pontua do acumulado."})]})]}),e.jsx(Ie,{})]}),f==="contracts_by_team"&&X&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização HubSpot"}),e.jsx(de,{variant:"outline",size:"sm",onClick:X,disabled:v,className:"gap-2 w-full",children:v?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar com HubSpot"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca contratos fechados dos últimos 6 meses por equipe (Hunters vs Farmers)."}),ue&&e.jsx(de,{variant:"outline",size:"sm",onClick:ue,className:"gap-2 w-full mt-2",children:"+ Checkout Manual"})]}),e.jsx(Ie,{})]}),f==="ticket_medio"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização HubSpot"}),te&&e.jsx(de,{variant:"outline",size:"sm",onClick:te,className:"gap-2 w-full",children:"+ Checkout Manual"}),R&&e.jsx(de,{variant:"outline",size:"sm",onClick:R,disabled:u,className:"gap-2 w-full",children:u?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar com HubSpot"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Calcula ticket médio por pipeline (Pontua vs Canais) dos últimos 6 meses."})]}),e.jsx(Ie,{})]}),f==="migracao_status"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Tema Visual"}),e.jsxs(Jt,{value:a.theme||"dark",onValueChange:T=>n({theme:T}),className:"flex gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(La,{value:"dark",id:"theme-dark"}),e.jsx(Ae,{htmlFor:"theme-dark",className:"cursor-pointer",children:"Escuro (Navy)"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(La,{value:"light",id:"theme-light"}),e.jsx(Ae,{htmlFor:"theme-light",className:"cursor-pointer",children:"Claro (Branco)"})]})]})]}),e.jsx(Ie,{}),I&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização HubSpot"}),e.jsx(de,{variant:"outline",size:"sm",onClick:I,disabled:se,className:"gap-2 w-full",children:se?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar Migrações HubSpot"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca contratos migrados do pipeline de migração (689028247)."})]}),e.jsx(Ie,{})]})]}),f==="pipeline_funnel"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Tema Visual"}),e.jsxs(Jt,{value:a.theme||"light",onValueChange:T=>n({theme:T}),className:"flex gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(La,{value:"light",id:"funnel-theme-light"}),e.jsx(Ae,{htmlFor:"funnel-theme-light",className:"cursor-pointer",children:"Claro (Branco)"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(La,{value:"dark",id:"funnel-theme-dark"}),e.jsx(Ae,{htmlFor:"funnel-theme-dark",className:"cursor-pointer",children:"Escuro (Navy)"})]})]})]}),e.jsx(Ie,{}),q&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização HubSpot"}),e.jsx(de,{variant:"outline",size:"sm",onClick:q,disabled:L,className:"gap-2 w-full",children:L?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar Funil do HubSpot"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca o snapshot histórico do funil no fechamento do mês de referência do relatório."})]}),e.jsx(Ie,{})]})]}
2),f==="kpis_saas_ltv"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ae,{htmlFor:"show-badge",children:"Mostrar badge NEW"}),e.jsx(Sa,{id:"show-badge",checked:a.showNewBadge??!0,onCheckedChange:T=>n({showNewBadge:T})})]}),e.jsx(Ie,{}),E&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização financeira"}),e.jsx(de,{variant:"outline",size:"sm",onClick:E,disabled:B,className:"gap-2 w-full",children:B?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar faturamento"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca churn rate, ticket médio e calcula LT/LTV automaticamente. CAC deve ser inserido manualmente."})]}),e.jsx(Ie,{})]})]}),f==="kpis_cac_payback"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ae,{htmlFor:"show-badge-cac",children:"Mostrar badge NEW"}),e.jsx(Sa,{id:"show-badge-cac",checked:a.showNewBadge??!0,onCheckedChange:T=>n({showNewBadge:T})})]}),e.jsx(Ie,{}),g&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização financeira"}),e.jsx(de,{variant:"outline",size:"sm",onClick:g,disabled:V,className:"gap-2 w-full",children:V?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar faturamento"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca ticket médio e novos clientes do Stripe. Despesas de Marketing e Vendas devem ser inseridas manualmente."})]}),e.jsx(Ie,{})]})]}),f==="concentracao_faturamento"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ae,{htmlFor:"show-badge-conc",children:"Mostrar badge NEW"}),e.jsx(Sa,{id:"show-badge-conc",checked:a.showNewBadge??!0,onCheckedChange:T=>n({showNewBadge:T})})]}),e.jsx(Ie,{}),K&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização financeira"}),e.jsx(de,{variant:"outline",size:"sm",onClick:K,disabled:A,className:"gap-2 w-full",children:A?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar do Stripe"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Até julho/2026 usa o histórico do Stripe; desde agosto/2026 usa somente as mensalidades recorrentes do Maestro Financeiro."})]}),e.jsx(Ie,{})]})]}),f==="churn_analise"&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ae,{htmlFor:"show-badge-churn",children:"Mostrar badge NEW"}),e.jsx(Sa,{id:"show-badge-churn",checked:a.showNewBadge??!0,onCheckedChange:T=>n({showNewBadge:T})})]})}),(f==="marketing_aquisicao"||f==="marketing_aquisicao_v2"||f==="marketing_qualidade_canal_v2")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ae,{htmlFor:"show-badge-marketing",children:"Mostrar badge NEW"}),e.jsx(Sa,{id:"show-badge-marketing",checked:a.showNewBadge??!0,onCheckedChange:T=>n({showNewBadge:T})})]}),e.jsx(Ie,{}),ye&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização HubSpot"}),e.jsx(de,{variant:"outline",size:"sm",onClick:ye,disabled:Re,className:"gap-2 w-full",children:Re?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar Lead Scoring do HubSpot"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca Fit Score e Temperatura dos leads. Visitantes e Budget são inseridos manualmente."})]}),e.jsx(Ie,{})]})]}),(f==="cohort_retencao"||f==="cohort_retencao_m13_m24")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ae,{htmlFor:"show-badge-cohort",children:"Mostrar badge NEW"}),e.jsx(Sa,{id:"show-badge-cohort",checked:a.showNewBadge??!0,onCheckedChange:T=>n({showNewBadge:T})})]}),e.jsx(Ie,{}),fe&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização Stripe"}),e.jsx(de,{variant:"outline",size:"sm",onClick:fe,disabled:_e,className:"gap-2 w-full",children:_e?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronizar do Stripe"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busca todas as subscriptions e calcula retenção por safra mensal (M1-M12)."})]}),e.jsx(Ie,{})]})]}),(f==="desempenho_vendas"||f==="desempenho_vendas_acumulado")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Tema Visual"}),e.jsxs(Jt,{value:a.theme||"dark",onValueChange:T=>n({theme:T}),className:"flex gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(La,{value:"dark",id:"desempenho-theme-dark"}),e.jsx(Ae,{htmlFor:"desempenho-theme-dark",className:"cursor-pointer",children:"Escuro (Navy)"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(La,{value:"light",id:"desempenho-theme-light"}),e.jsx(Ae,{htmlFor:"desempenho-theme-light",className:"cursor-pointer",children:"Claro (Branco)"})]})]})]}),e.jsx(Ie,{}),he&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Sincronização"}),e.jsx(de,{variant:"outline",size:"sm",onClick:he,disabled:oe,className:"gap-2 w-full",children:oe?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin"}),"Sincronizando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Sincronização"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sincroniza deal
2s do HubSpot (NMR, treinamento, ranking) e totais de Checkout do BI Stripe."}),ee&&e.jsx(de,{variant:"outline",size:"sm",onClick:ee,className:"gap-2 w-full mt-2",children:"+ Checkout Manual"})]}),e.jsx(Ie,{})]}),f==="desempenho_vendas_acumulado"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Metas (Acumulado YTD)"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sobrescreve a soma das metas mensais. Deixe em branco para usar a soma automática vinda das Metas Mensais."}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"meta-nmr-override",children:"Meta NMR (R$)"}),e.jsx(Ge,{id:"meta-nmr-override",type:"number",min:0,step:"0.01",placeholder:"Ex: 35000",value:a.metaNMROverride??"",onChange:T=>{const G=T.target.value;n({metaNMROverride:G===""?null:Number(G)})}})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"meta-treino-override",children:"Meta Treinamento (R$)"}),e.jsx(Ge,{id:"meta-treino-override",type:"number",min:0,step:"0.01",placeholder:"Ex: 12000",value:a.metaTreinamentoOverride??"",onChange:T=>{const G=T.target.value;n({metaTreinamentoOverride:G===""?null:Number(G)})}})]})]}),e.jsx(Ie,{})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-medium text-sm text-muted-foreground uppercase tracking-wide",children:"Importar Dados"}),e.jsx(Ei,{onImport:o,slideType:f})]})]})}const Zt={agenda:"Agenda do Dia",lead_scoring:"Lead Scoring",unit_economics:"Unit Economics",consolidado_8kpis:"Consolidado 8 KPIs",mrr_evolution:"Evolução MRR",mrr_growth:"Crescimento MRR",nmr_channel_v2:"MRR por Canal",nmr_channel_v3:"MRR por Canal (sem Migração)",nmr_channel_v3_acumulado:"MRR por Canal — Acumulado YTD",contracts_by_team:"Contratos por Time",ticket_medio:"Ticket Médio",migracao_status:"Migração Status",migracao_status_v2:"Migração V2",pipeline_funnel:"Pipeline de Vendas",kpis_saas_ltv:"KPIs SaaS LTV",kpis_cac_payback:"KPIs SaaS CAC",concentracao_faturamento:"Concentração",churn_analise:"Churn Análise",marketing_aquisicao:"Marketing",cohort_retencao:"Cohort Retenção M1–M12",cohort_retencao_m13_m24:"Cohort Retenção M13–M24",headcount_produtividade:"Headcount",budget_vs_realizado:"Budget vs Realizado",budget_vs_realizado_v2:"Budget V2",budget_vs_realizado_v3:"Budget V3",suporte_indicadores:"Suporte",atendimento_comparativo:"Atendimento Jul x Ago",parceiro_performance:"Parceiro Pontua",base_usuarios:"Base de Usuários",desempenho_vendas:"Desempenho Vendas",desempenho_vendas_acumulado:"Desempenho Vendas Acumulado"};function Fi({getSlideElement:a,slides:n,currentSlideIndex:o,onNavigateToSli
2de:h,reportTitle:b="status-report",currentTheme:_="dark"}){const[f,p]=l.useState(!1),[y,C]=l.useState(null),[X,v]=l.useState(!1),[R,u]=l.useState(new Set),[I,se]=l.useState("pdf"),q=l.useRef(null),L=()=>_==="dark"?Jo.navy:Ko.background,E=async te=>Uo(te,{width:1920,height:1080,quality:1,backgroundColor:L(),pixelRatio:1,style:{transform:"scale(1)",transformOrigin:"top left"}}),B=()=>new Promise(te=>{requestAnimationFrame(()=>{setTimeout(te,500)})}),g=(te,ne,pe)=>{var me;const T=ha(new Date,"yyyy-MM-dd"),G=b.toLowerCase().replace(/[^a-z0-9]+/g,"-");if(ne==="current"&&pe!==void 0){const z=((me=n[pe])==null?void 0:me.slide_type)||"slide",Q=(Zt[z]||z).toLowerCase().replace(/[^a-z0-9]+/g,"-");return`${G}-${String(pe+1).padStart(2,"0")}-${Q}-${T}`}return`${G}-${T}`},V=async()=>{const te=a();if(!te){Y.error("Erro ao exportar: slide não encontrado");return}p(!0);try{const ne=await E(te),pe=document.createElement("a");pe.download=`${g("png","current",o)}.png`,pe.href=ne,pe.click(),Y.success("Slide exportado como PNG")}catch(ne){console.error("Export error:",ne),Y.error("Erro ao exportar slide")}finally{p(!1)}},K=async()=>{const te=a();if(!te){Y.error("Erro ao exportar: slide não encontrado");return}p(!0);try{const ne=await E(te),pe=new ln({orientation:"landscape",unit:"px",format:[1920,1080],hotfixes:["px_scaling"]});pe.addImage(ne,"PNG",0,0,1920,1080),pe.save(`${g("pdf","current",o)}.pdf`),Y.success("Slide exportado como PDF")}catch(ne){console.error("Export error:",ne),Y.error("Erro ao exportar slide")}finally{p(!1)}},A=async te=>{const ne=[],pe=[];q.current=new AbortController;for(let T=0;T<te.length;T++){if(q.current.signal.aborted)throw new Error("Export cancelled");const G=te[T],me=n[G],z=Zt[me.slide_type]||me.slide_type;C({current:T+1,total:te.length,currentSlideTitle:z}),await h(G),await B();const re=a();if(!re)throw new Error(`Slide ${G+1} não encontrado`);const Q=await E(re);ne.push(Q),pe.push(`${String(G+1).padStart(2,"0")}-${z.toLowerCase().replace(/[^a-z0-9]+/g,"-")}`)}return{images:ne,names:pe}},ye=async te=>{p(!0),C({current:0,total:te.length,currentSlideTitle:""});try{const{images:ne,names:pe}=await A(te),T=new ho;ne.forEach((z,re)=>{const Q=z.split(",")[1];T.file(`${pe[re]}.png`,Q,{base64:!0})});const G=await T.generateAsync({type:"blob"}),me=document.createElement("a");me.href=URL.createObjectURL(G),me.download=`${g("png","all")}.zip`,me.click(),URL.revokeObjectURL(me.href),Y.success(`${ne.length} slides exportados como ZIP`)}catch(ne){ne.message==="Export cancelled"?Y.info("Exportação cancelada"):(console.error("Export error:",ne),Y.error("Erro ao exportar slides"))}finally{p(!1),C(null),q.current=null}},Re=async te=>{p(!0),C({current:0,total:te.length,currentSlideTitle:""});try{const{images:ne}=await A(te),pe=new ln({orientation:"landscape",unit:"px",format:[1920,1080],hotfixes:["px_scaling"]});ne.forEach((T,G)=>{G>0&&pe.addPage([1920,1080],"landscape"),pe.addImage(T,"PNG",0,0,1920,1080)}),pe.save(`${g("pdf","all")}.pdf`),Y.success(`${ne.length} slides exportados como PDF`)}catch(ne){ne.message==="Export cancelled"?Y.info("Exportação cancelada"):(console.error("Export error:",ne),Y.error("Erro ao exportar slides"))}finally{p(!1),C(null),q.current=null}},fe=te=>{const ne=n.map((pe,T)=>T);te==="pdf"?Re(ne):ye(ne)},_e=te=>{se(te),u(new Set),v(!0)},he=()=>{u(new Set(n.map((te,ne)=>ne)))},oe=()=>{u(new Set)},ee=te=>{const ne=new Set(R);ne.has(te)?ne.delete(te):ne.add(te),u(ne)},ue=()=>{if(R.size===0){Y.error("Selecione ao menos um slide");return}v(!1);const te=Array.from(R).sort((ne,pe)=>ne-pe);I==="pdf"?Re(te):ye(te)},be=()=>{var te;(te=q.current)==null||te.abort()};return e.jsxs(e.Fragment,{children:[e.jsxs(_s,{children:[e.jsx(vs,{asChild:!0,children:e.jsxs(de,{variant:"outline",size:"sm",disabled:f,className:"gap-2",children:[f?e.jsx(Le,{className:"h-4 w-4 animate-spin"}):e.jsx(xo,{className:"h-4 w-4"}),"Exportar",e.jsx(zn,{className:"h-3 w-3"})]})}),e.jsxs(bs,{align:"end",className:"w-56",children:[e.jsx(vt,{children:"Slide Atual"}),e.jsxs(ma,{onClick:V,disabled:f,children:[e.jsx(_o,{className:"mr-2 h-4 w-4"}),"PNG (1920×1080)"]}),e.jsxs(ma,{onClick:K,disabled:f,children:[e.jsx(Bt,{className:"mr-2 h-4 w-4"}),"PDF (1 página)"]}),e.jsx(os,{}),e.jsxs(vt,{children:["Todos os Slides (",n.length,")"]}),e.jsxs(ma,{onClick:()=>fe("png"),disabled:f,children:[e.jsx(vn,{className:"mr-2 h-4 w-4"}
2),"ZIP com PNGs"]}),e.jsxs(ma,{onClick:()=>fe("pdf"),disabled:f,children:[e.jsx(Bt,{className:"mr-2 h-4 w-4"}),"PDF Multipáginas"]}),e.jsx(os,{}),e.jsx(vt,{children:"Seleção Personalizada"}),e.jsxs(ma,{onClick:()=>_e("png"),disabled:f,children:[e.jsx(vn,{className:"mr-2 h-4 w-4"}),"Selecionar → ZIP"]}),e.jsxs(ma,{onClick:()=>_e("pdf"),disabled:f,children:[e.jsx(Bt,{className:"mr-2 h-4 w-4"}),"Selecionar → PDF"]})]})]}),e.jsx(Ra,{open:f&&y!==null,onOpenChange:()=>{},children:e.jsxs(Pa,{className:"sm:max-w-md",onPointerDownOutside:te=>te.preventDefault(),children:[e.jsxs(Da,{children:[e.jsx(Aa,{children:"Exportando Apresentação"}),e.jsxs(at,{children:["Processando slide ",y==null?void 0:y.current," de ",y==null?void 0:y.total]})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsx(vo,{value:y?y.current/y.total*100:0,className:"h-2"}),e.jsx("p",{className:"text-sm text-muted-foreground text-center",children:y==null?void 0:y.currentSlideTitle}),e.jsx("div",{className:"flex justify-center",children:e.jsxs(de,{variant:"outline",size:"sm",onClick:be,children:[e.jsx(wt,{className:"mr-2 h-4 w-4"}),"Cancelar"]})})]})]})}),e.jsx(Ra,{open:X,onOpenChange:v,children:e.jsxs(Pa,{className:"sm:max-w-lg max-h-[80vh] flex flex-col",children:[e.jsxs(Da,{children:[e.jsx(Aa,{children:"Selecionar Slides para Exportar"}),e.jsxs(at,{children:["Escolha os slides que deseja incluir na exportação",I==="pdf"?" (PDF multipáginas)":" (ZIP com PNGs)"]})]}),e.jsxs("div",{className:"flex gap-2 py-2",children:[e.jsx(de,{variant:"outline",size:"sm",onClick:he,children:"Selecionar Todos"}),e.jsx(de,{variant:"outline",size:"sm",onClick:oe,children:"Limpar Seleção"})]}),e.jsx("div",{className:"flex-1 overflow-y-auto border rounded-lg p-2 space-y-1",children:n.map((te,ne)=>e.jsxs("label",{className:"flex items-center gap-3 p-2 rounded-lg hover:bg-muted cursor-pointer",children:[e.jsx(Fn,{checked:R.has(ne),onCheckedChange:()=>ee(ne)}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground w-6",children:String(ne+1).padStart(2,"0")}),e.jsx("span",{className:"text-sm flex-1",children:Zt[te.slide_type]||te.title||te.slide_type})]},te.id))}),e.jsxs("div",{className:"flex justify-between items-center pt-4 border-t",children:[e.jsxs("span",{className:"text-sm text-muted-foreground",children:[R.size," slides selecionados"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(de,{variant:"outline",onClick:()=>v(!1),children:"Cancelar"}),e.jsxs(de,{onClick:ue,disabled:R.size===0,children:["Exportar ",I==="pdf"?"PDF":"ZIP"]})]})]})]})})]})}function Ii({onCreateNew:a,onSelectReport:n,loadingReportId:o}){const[h,b]=l.useState([]),[_,f]=l.useState(!0),[p,y]=l.useState(null),C=async()=>{try{const{data:u,error:I}=await J.from("status_reports").select("*").order("month_reference",{ascending:!1});if(I)throw I;b(u||[])}catch(u){console.error("Error fetching reports:",u),Y.error("Erro ao carregar relatórios")}finally{f(!1)}};l.useEffect(()=>{C()},[]);const X=async()=>{if(p)try{const{error:u}=await J.from("status_reports").delete().eq("id",p);if(u)throw u;b(h.filter(I=>I.id!==p)),Y.success("Relatório excluído")}catch(u){console.error("Error deleting report:",u),Y.error("Erro ao excluir relatório")}finally{y(null)}},v=async u=>{try{const{data:I,error:se}=await J.from("status_reports").insert({title:`${u.title} (cópia)`,description:u.description,month_reference:ha(new Date,"yyyy-MM")}).select().single();if(se)throw se;const{data:q,error:L}=await J.from("status_report_slides").select("*").eq("report_id",u.id);if(L)throw L;for(const E of q||[]){const{data:B,error:g}=await J.from("status_report_slides").insert({report_id:I.id,slide_type:E.slide_type,title:E.title,subtitle:E.subtitle,milestone:E.milestone,show_legend:E.show_legend,sort_order:E.sort_order,config:E.config}).select().single();if(g)throw g}Y.success("Relatório duplicado"),C()}catch(I){console.error("Error duplicating report:",I),Y.error("Erro ao duplicar relatório")}},R=u=>{try{const I=hn(`${u}-01`);return ha(I,"MMMM 'de' yyyy",{locale:Ba})}catch{return u}};return _?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:[1,2,3].map(u=>e.jsxs(Ga,{className:"animate-pulse",children:[e.jsxs(bt,{children:[e.jsx(Ut,{className:"h-5 w-3/4"}),e.jsx(Ut,{className:"h-4 w-1/2"})]}),e.jsx(is,{children:e.jsx(Ut,{className:"h-4 w-full"})})]},u))}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:[e.jsx(Ga,{className:"border-dashed cursor-pointer hover:border-primary/50 hover:bg-accent/50 transition-all",onClick:a,children:e.jsxs(bt,{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto mb-4 p-4 rounded-full bg-primary/10",children:e.jsx(ot,{className:"h-8 w-8 text-primary"})}),e.jsx(cs,{className:"text-lg",children:"Criar Novo"}),e.jsx(ls,{children:"Iniciar um novo Status Report"})]})}),h.map(u=>e.jsxs(Ga,{className:aa("cursor-pointer hover:border-primary/50 hover:shadow-md transition-all group relative",o===u.id&&"pointer-events-none"),children:[o===u.id&&e.jsx("div",{className:"absolute inset-0 bg-background/80 backdrop-blur-sm rounded-2xl flex items-center justify-center z-10",children:e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx(Le,{className:"h-6 w-6 animate-spin text-primary"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Carregando..."})]})}),e.jsx(bt,{className:"pb-2",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",onClick:()=>n(u.id),children:[e.jsx(cs,{className:"text-base line-clamp-1 group-hover:text-primary transition-colors",children:u.title}),e.jsxs(ls,{className:"flex items-center gap-1 mt-1",children:[e.jsx(qn,{
2className:"h-3 w-3"}),R(u.month_reference)]})]}),e.jsxs(_s,{children:[e.jsx(vs,{asChild:!0,children:e.jsx(de,{variant:"ghost",size:"icon",className:"h-8 w-8",children:e.jsx(Qo,{className:"h-4 w-4"})})}),e.jsxs(bs,{align:"end",children:[e.jsxs(ma,{onClick:()=>v(u),children:[e.jsx(bo,{className:"h-4 w-4 mr-2"}),"Duplicar"]}),e.jsxs(ma,{onClick:()=>y(u.id),className:"text-destructive",children:[e.jsx(it,{className:"h-4 w-4 mr-2"}),"Excluir"]})]})]})]})}),e.jsxs(is,{onClick:()=>n(u.id),children:[u.description&&e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:u.description}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-2",children:["Atualizado ",ha(hn(u.updated_at),"dd/MM 'às' HH:mm")]})]})]},u.id))]}),e.jsx(ys,{open:!!p,onOpenChange:()=>y(null),children:e.jsxs(ks,{children:[e.jsxs(Ss,{children:[e.jsx(js,{children:"Excluir relatório?"}),e.jsx(Ns,{children:"Esta ação não pode ser desfeita. Todos os slides e dados serão perdidos."})]}),e.jsxs(ws,{children:[e.jsx(Ms,{children:"Cancelar"}),e.jsx(In,{onClick:X,className:"bg-destructive text-destructive-foreground",children:"Excluir"})]})]})})]})}function Oi({open:a,onOpenChange:n,onCreated:o,previousReports:h}){const[b,_]=l.useState("Status Report"),[f,p]=l.useState(""),[y,C]=l.useState(new Date),[X,v]=l.useState("databank"),[R,u]=l.useState(!1),[I,se]=l.useState(0);l.useEffect(()=>{a&&(async()=>{const{count:E}=await J.from("slide_data_bank").select("*",{count:"exact",head:!0}).eq("slide_type","mrr_evolution");se(E||0)})()},[a]);const q=async()=>{u(!0);try{const L=ha(y,"yyyy-MM"),{data:E,error:B}=await J.from("status_reports").insert({title:b,description:f||null,month_reference:L}).select().single();if(B)throw B;const{data:g,error:V}=await J.from("status_report_slides").insert({report_id:E.id,slide_type:"mrr_evolution",title:"Evolução MRR — Últimos 12 Meses",show_legend:!0,sort_order:0}).select().single();if(V)throw V;let K;if(X==="databank"){const{data:A}=await J.from("slide_data_bank").select("*").eq("slide_type","mrr_evolution").order("mes_referencia",{ascending:!0});A!=null&&A.length&&(K=A.map((ye,Re)=>{var fe,_e,he,oe;return{slide_id:g.id,mes:ye.mes,mrr_total:Number((fe=ye.data)==null?void 0:fe.mrr_total)||0,mrr_pontua:Number((_e=ye.data)==null?void 0:_e.mrr_pontua)||0,mrr_pontua_pr:Number((he=ye.data)==null?void 0:he.mrr_pontua_pr)||0,mrr_tron:Number((oe=ye.data)==null?void 0:oe.mrr_tron)||0,sort_order:Re}}))}else X==="sample"?K=St.map((A,ye)=>({slide_id:g.id,mes:A.mes,mrr_total:A.mrrTotal,mrr_pontua:A.mrrPontua,mrr_pontua_pr:A.mrrPontuaPR,mrr_tron:A.mrrTronPR,sort_order:ye})):K=St.map((A,ye)=>({slide_id:g.id,mes:A.mes,mrr_total:A.mrrTotal,mrr_pontua:A.mrrPontua,mrr_pontua_pr:A.mrrPontuaPR,mrr_tron:A.mrrTronPR,sort_order:ye}));Y.success("Relatório criado com sucesso!"),o(E.id),n(!1),_("Status Report"),p(""),C(new Date),v("databank")}catch(L){console.error("Error creating report:",L),Y.error("Erro ao criar relatório")}finally{u(!1)}};return e.jsx(Ra,{open:a,onOpenChange:n,children:e.jsxs(Pa,{className:"sm:max-w-[500px]",children:[e.jsxs(Da,{children:[e.jsx(Aa,{children:"Criar Novo Status Report"}),e.jsx(at,{children:"Configure o novo relatório mensal. Os dados serão populados do banco global de MRR."})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"title",children:"Título"}),e.jsx(Ge,{id:"title",value:b,onChange:L=>_(L.target.value),placeholder:"Status Report"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{htmlFor:"description",children:"Descrição (opcional)"}),e.jsx(yo,{id:"description",value:f,onChange:L=>p(L.target.value),placeholder:"Descrição do relatório...",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{children:"Mês de Referência"}),e.jsxs(ko,{children:[e.jsx(So,{asChild:!0,children:e.jsxs(de,{variant:"outline",className:aa("w-full justify-start text-left font-normal",!y&&"text-muted-foreground"),children:[e.jsx(qn,{
2className:"mr-2 h-4 w-4"}),y?ha(y,"MMMM 'de' yyyy",{locale:Ba}):e.jsx("span",{children:"Selecione o mês"})]})}),e.jsx(jo,{className:"w-auto p-4",align:"start",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(de,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>C(fn(y,y.getFullYear()-1)),children:e.jsx(No,{className:"h-4 w-4"})}),e.jsx("span",{className:"text-sm font-medium",children:y.getFullYear()}),e.jsx(de,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>C(fn(y,y.getFullYear()+1)),children:e.jsx(Cs,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"grid grid-cols-3 gap-2",children:Array.from({length:12},(L,E)=>{const B=gn(new Date(y.getFullYear(),0,1),E),g=y.getMonth()===E;return e.jsx(de,{variant:g?"default":"ghost",size:"sm",className:aa("h-9 text-xs capitalize",g&&"bg-primary text-primary-foreground"),onClick:()=>{C(gn(y,E))},children:ha(B,"MMM",{locale:Ba})},E)})})]})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ae,{children:"Fonte de Dados"}),e.jsxs(hs,{value:X,onValueChange:v,children:[e.jsx(fs,{children:e.jsx(En,{placeholder:"Selecione a fonte de dados"})}),e.jsxs(gs,{children:[e.jsx(Xa,{value:"databank",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ma,{className:"h-4 w-4"}),e.jsx("span",{children:"Banco de Dados MRR"}),I>0&&e.jsxs(ia,{variant:"secondary",className:"ml-1",children:[I," meses"]})]})}),e.jsx(Xa,{value:"sample",children:"Dados de exemplo"}),h.length>0&&e.jsx(e.Fragment,{children:h.map(L=>e.jsxs(Xa,{value:L.id,children:[L.title," (",ha(new Date(L.month_reference+"-01"),"MMM/yy",{locale:Ba}),")"]},L.id))})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:X==="databank"?"📊 Usa o banco global de MRR configurado em Configurações → MRR":X==="sample"?"📝 Usa dados fictícios de exemplo":"📋 Copia os dad
2os do relatório selecionado"})]})]}),e.jsxs(Rs,{children:[e.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"Cancelar"}),e.jsx(de,{onClick:q,disabled:R||!b,children:R?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"h-4 w-4 animate-spin mr-2"}),"Criando..."]}):"Criar Relatório"})]})]})})}function ur({data:a,onSave:n,delay:o=1500,enabled:h=!0}){const[b,_]=l.useState("idle"),f=wo(a,o),p=l.useRef(!0),y=l.useRef(""),C=l.useRef(n),X=l.useRef(0);l.useEffect(()=>{C.current=n},[n]);const v=l.useCallback(async(I,se,q)=>{if(X.current===se){_("saving");try{if(await C.current(I),X.current!==se)return;y.current=q,_("saved"),setTimeout(()=>_("idle"),2e3)}catch(L){if(X.current!==se)return;console.error("Auto-save error:",L),_("error")}}},[]);l.useEffect(()=>{if(p.current){p.current=!1,y.current=JSON.stringify(a);return}if(!h)return;const I=JSON.stringify(f);if(I===y.current)return;const se=X.current;v(f,se,I)},[f,h,v,a]),l.useEffect(()=>{if(p.current||b==="saving"||b==="saved")return;JSON.stringify(a)!==y.current&&_("pending")},[a,b]);const R=l.useCallback(()=>{X.current+=1,_("idle"),y.current=JSON.stringify(a),p.current=!0},[a]),u=l.useCallback(async I=>{if(!h)return;const se=I??a,q=JSON.stringify(se);if(q===y.current)return;p.current=!1;const L=X.current;await v(se,L,q)},[a,h,v]);return{status:b,resetStatus:R,triggerSave:u}}const Li={idle:null,pending:{icon:tt,label:"Alterações pendentes",className:"bg-amber-50 text-amber-600 border-amber-200 dark:bg-amber-950/50 dark:text-amber-400 dark:border-amber-800"},saving:{icon:Le,label:"Salvando...",className:"bg-blue-50 text-blue-600 border-blue-200 dark:bg-blue-950/50 dark:text-blue-400 dark:border-blue-800",iconClassName:"animate-spin"},saved:{icon:rt,label:"Salvo",className:"bg-green-50 text-green-600 border-green-200 dark:bg-green-950/50 dark:text-green-400 dark:border-green-800"},error:{icon:xs,label:"Erro ao salvar",className:"bg-red-50 text-red-600 border-red-200 dark:bg-red-950/50 dark:text-red-400 dark:border-red-800"}};function mr({status:a,className:n}){const o=Li[a];if(!o)return null;const h=o.icon;return e.jsxs(ia,{variant:"outline",className:aa("text-xs gap-1.5 transition-all duration-300",o.className,n),children:[e.jsx(h,{className:aa("h-3 w-3",o.iconClassName)}),o.label]})}const ps={mrr_evolution:{title:"Evolução MRR",description:"Edite os valores de MRR para o gráfico de evolução",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"mrrPontua",label:"MRR Pontua",type:"currency"},{key:"mrrPontuaPR",label:"MRR Pontua PR",type:"currency"},{key:"mrrTronPR",label:"MRR Tron PR",type:"currency"},{key:"mrrTotal",label:"MRR Total",type:"currency",computed:!0}]},mrr_growth:{title:"Crescimento MRR & Clientes",description:"Edite os dados de novos clientes e migração",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"novos_organico",label:"Novos Orgânico",type:"number"},{key:"migracao",label:"Migração",type:"number"}]},nmr_channel_v2:{title:"MRR por Canal",description:"Valores de New MRR com metas e detalhamento por canal",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"vendasNovas",label:"Vendas Novas",type:"currency"},{key:"migracaoTron",label:"Migração PR",type:"currency"},{key:"vendasCanal",label:"Vendas Canal",type:"currency"},{key:"total",label:"Total NMR",type:"currency",computed:!0}]},nmr_channel_v3:{title:"MRR por Canal (sem Migração)",description:"Valores de New MRR sem Migração PR, com metas e detalhamento por canal",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"vendasNovas",label:"Vendas Novas",type:"currency"},{key:"vendasCanal",label:"Vendas Canal",type:"currency"},{key:"total",label:"Total NMR",type:"currency",computed:!0}]},contracts_by_team:{title:"Contratos por Time",description:"Quantidade de contratos por equipe de vendas",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"hunters",label:"Hunters",type:"number"},{key:"farmers",label:"Farmers",type:"number"},{key:"total",label:"Total",type:"number",computed:!0}]},ticket_medio:{title:"Ticket Médio",description:"Valores de ticket médio por canal",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"ticketPontua",label:"Ticket Pontua",type:"currency"},{key:"ticketCanais",label:"Ticket Canais",type:"currency"},{key:"ticketGeral",label:"Ticket Geral",type:"currency"}]},churn_analise:{title:"Churn Análise",description:"Cancelamentos e taxas de churn mensais",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"cancelamentosPontua",label:"Cancel. Pontua",type:"number"},{key:"cancelamentosPR",label:"Cancel. PR",type:"number"},{key:"churnRate",label:"Churn %",type:"percent"},{key:"churnMRR",label:"Churn MRR",type:"currency"},{key:"baseInicio",label:"Base Início",type:"number"},{key:"mrrTotal",label:"MRR Total",type:"currency"}]},kpis_saas_ltv:{title:"KPIs SaaS LTV",description:"Métricas de Lifetime Value e Churn",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"churnRate",label:"Churn %",type:"percent"},{key:"ticketMedio",label:"Ticket Médio",type:"currency"},{key:"cac",label:"CAC",type:"currency"},{key:"lt",label:"Lifetime (anos)",type:"number",computed:!0},{key:"ltv",label:"LTV",type:"currency",computed:!0},{key:"ltvCac",label:"LTV/CAC",type:"number",computed:!0}]},kpis_cac_payback:{title:"CAC & Payback",description:"Custo de aquisição e tempo de retorno",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"despesasMarketing",label:"Marketing",type:"currency"},{key:"despesasVendas",label:"Vendas",type:"currency"},{key:"novosClientes",label:"Novos Clientes",type:"number"},{key:"ticketMedio",label:"Ticket Médio",type:"currency"},{key:"cac",label:"CAC",type:"currency",computed:!0},{key:"cacPayback",label:"Payback (m)",type:"number",computed:!0}]}
2,headcount_produtividade:{title:"Headcount & Produtividade",description:"Quantidade de colaboradores por departamento (5 áreas)",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"diretoria",label:"Diretoria",type:"number"},{key:"tecnologia",label:"Tecnologia",type:"number"},{key:"comercial",label:"Comercial",type:"number"},{key:"marketing",label:"Marketing",type:"number"},{key:"relacionamento",label:"Relacionamento",type:"number"},{key:"mrr",label:"MRR (auto)",type:"currency",computed:!0},{key:"prev_diretoria",label:"Prev. Diretoria",type:"number"},{key:"prev_tecnologia",label:"Prev. Tecnologia",type:"number"},{key:"prev_comercial",label:"Prev. Comercial",type:"number"},{key:"prev_marketing",label:"Prev. Marketing",type:"number"},{key:"prev_relacionamento",label:"Prev. Relacionamento",type:"number"}]},parceiro_performance:{title:"Parceiro Pontua — Performance",description:"Indicações e conversões de parceiros",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"indicacoes",label:"Indicações",type:"number"},{key:"convertidas",label:"Convertidas",type:"number"},{key:"mrrGerado",label:"MRR Gerado",type:"currency"}]},marketing_aquisicao:{title:"Marketing Aquisição",description:"Funil de aquisição, Fit Score e métricas de conversão",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"visitantes",label:"Visitantes",type:"number"},{key:"leads",label:"Leads",type:"number"},{key:"oportunidades",label:"Oportunidades",type:"number"},{key:"vendas",label:"Vendas",type:"number"},{key:"receita",label:"Receita",type:"currency"},{key:"fitScoreMedio",label:"Fit Score",type:"number"},{key:"temperatura",label:"Temperatura",type:"number"},{key:"leadsQualificados",label:"Leads Qualif.",type:"number"},{key:"budgetGoogleAds",label:"Budget Google",type:"currency"},{key:"budgetMetaAds",label:"Budget Meta",type:"currency"},{key:"budgetTikTokAds",label:"Budget TikTok",type:"currency"},{key:"budgetOutros",label:"Budget Outros",type:"currency"},{key:"budgetGoogleAdsOrcado",label:"Orçado Google",type:"currency"},{key:"budgetMetaAdsOrcado",label:"Orçado Meta",type:"currency"},{key:"budgetTikTokAdsOrcado",label:"Orçado TikTok",type:"currency"},{key:"budgetOutrosOrcado",label:"Orçado Outros",type:"currency"},{key:"taxaConversaoPipeline",label:"Taxa Conv. Pipeline %",type:"number"},{key:"budgetTotal",label:"Budget Total",type:"currency",computed:!0},{key:"budgetOrcadoTotal",label:"Orçado Total",type:"currency",computed:!0},{key:"cplQualificado",label:"CPL Qualif.",type:"currency",computed:!0}]},migracao_status_v2:{title:"Migração V2 — Bases",description:"Configuração das bases totais e potencial MRR (dados globais, não mensais)",table:"slide_data_bank",hasEditor:!0,isGlobal:!0,fields:[{key:"baseTronTotal",label:"Base Tron - Total",type:"number"},{key:"baseKeevoTotal",label:"Base Keevo - Total",type:"number"},{key:"potencialMRR",label:"Potencial MRR",type:"currency"}]},budget_vs_realizado_v3:{title:"Budget V3 — Layout Adaptativo",description:"Comparativo orçado vs realizado com layout responsivo",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"receitaOrcada",label:"Receita Orçada",type:"currency"},{key:"receitaRealizada",label:"Receita Realizada",type:"currency"},{key:"despesaOrcada",label:"Despesa Orçada",type:"currency"},{key:"despesaRealizada",label:"Despesa Realizada",type:"currency"},{key:"aporteKeevo",label:"Aporte Keevo",type:"currency"},{key:"aporteTron",label:"Aporte Tron",type:"currency"},{key:"aportePlanejadoKeevo",label:"Aporte Plan. Keevo",type:"currency"},{key:"aportePlanejadoTron",label:"Aporte Plan. Tron",type:"currency"}]},resultado_trimestral:{title:"Resultado Trimestral",description:"Dados consolidados do trimestre (editáveis por mês)",table:"slide_data_bank",hasEditor:!0,fields:[{key:"mes",label:"Mês",type:"text",width:"w-20"},{key:"vendasNMR",label:"Vendas NMR",type:"currency"},{key:"treinamento",label:"Treinamento",type:"currency"},{key:"contratos",label:"Contratos",type:"number"},{key:"origemHunter",label:"Hunter",type:"currency"},{key:"origemCanais",label:"Canais",type:"currency"},{key:"origemMigracao",label:"Migração",type:"currency"},{key:"origemCheckout",label:"Checkout",type:"currency"},{key:"planejadoHunter",label:"Plan. Hunter",type:"currency"},{key:"planejadoCanais",label:"Plan. Canais",type:"currency"},{key:"planejadoMigracao",label:"Plan. Migração",type:"currency"}]}};function Vi({slideType:a,data:n,onSave:o,isSaving:h}){const[b,_]=l.useState(n),f=l.useRef(n),p=ps[a],y=l.useCallback(async g=>{if(!p)return;const V=p.isGlobal?g:g.filter(K=>K.mes&&String(K.mes).trim()!=="");await o(V)},[o,p]),{status:C,resetStatus:X,triggerSave:v}=ur({data:b,onSave:y,delay:2e3,enabled:!!(p!=null&&p.hasEditor)});l.useEffect(()=>{f.current=b},[b]);const R=l.useCallback(async()=>{await v(f.current)},[v]);if(l.useEffect(()=>{_(n),X()},[n,a]),!(p!=null&&p.hasEditor))return null;const u=(g,V,K)=>{const A=[...b],ye=p.fields.find(Re=>Re.key===V);if((ye==null?void 0:ye.type)==="text")A[g]={...A[g],[V]:K};else{const Re=parseFloat(K.replace(/[^\d,.-]/g,"").replace(",","."))||0;if(A[g]={...A[g],[V]:Re},a==="mrr_evolution"||a==="mrr_growth")(V==="mrrPontua"||V==="mrrPontuaPR"||V==="mrrTronPR")&&(A[g].mrrTotal=(A[g].mrrPontua||0)+(A[g].mrrPontuaPR||0)+(A[g].mrrTronPR||0));else if(a==="nmr_channel_v2")(V==="vendasNovas"||V==="migracaoTron"||V==="vendasCanal")&&(A[g].total=(A[g].vendasNovas||0)+(A[g].migracaoTron||0)+(A[g].vendasCanal||0));else if(a==="nmr_channel_v3")(V==="vendasNovas"||V==="vendasCanal")&&(A[g].total=(A[g].vendasNovas||0)+(A[g].vendasCanal||0));else if(a==="contracts_by_team")(V==="hunters"||V==="farmers")&&(A[g].total=(A[g].hunters||0)+(A[g].farmers||0));else if(a==="kpis_cac_payback"){if(V==="despesasMarketing"||V==="despesasVendas"||V==="novosClientes"||V==="ticketMedio"){const fe=(A[g].despesasMarketing||0)+(A[g].despesasVendas||0),_e=A[g].novosClientes||1,he=A[g].ticketMedio||1,oe=fe/_e;A[g].cac=parseFloat(oe.toFixed(2));const ee=oe/he;A[g].cacPayback=parseFloat(ee.toFixed(1))}}else if(a==="kpis_saas_ltv"){if(V==="churnRate"||V==="ticketMedio"||V==="cac"){const fe=A[g].churnRate||0,_e=A[g].ticketMedio||0,he=A[g].cac||1,oe=fe>0?1/(fe/100)/12:0,ee=_e*oe*12,ue=he>0?ee/he:0;A[g].lt=parseFloat(oe.toFixed(2)),A[g].ltv=Math.round(ee),A[g].ltvCac=parseFloat(ue.toFixed(2))}}
2else if(a==="headcount_produtividade"){const fe=["diretoria","tecnologia","comercial","marketing","relacionamento"];fe.includes(V)&&(A[g].total=fe.reduce((_e,he)=>_e+(A[g][he]||0),0))}else if(a==="marketing_aquisicao"){const fe=["budgetGoogleAds","budgetMetaAds","budgetTikTokAds","budgetOutros"],_e=["budgetGoogleAdsOrcado","budgetMetaAdsOrcado","budgetTikTokAdsOrcado","budgetOutrosOrcado"];if(fe.includes(V)||_e.includes(V)||V==="leadsQualificados"){const he=(A[g].budgetGoogleAds||0)+(A[g].budgetMetaAds||0)+(A[g].budgetTikTokAds||0)+(A[g].budgetOutros||0);A[g].budgetTotal=he;const oe=(A[g].budgetGoogleAdsOrcado||0)+(A[g].budgetMetaAdsOrcado||0)+(A[g].budgetTikTokAdsOrcado||0)+(A[g].budgetOutrosOrcado||0);A[g].budgetOrcadoTotal=oe;const ee=A[g].leadsQualificados||1;A[g].cplQualificado=parseFloat((he/ee).toFixed(2))}}}_(A)},I=()=>{const g=b[b.length-1];let V={};if(!p.isGlobal){let K="";if(g!=null&&g.mes){const A=g.mes.split("/");if(A.length===2){const ye=["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],Re=ye.findIndex(fe=>fe.toLowerCase()===A[0].toLowerCase());if(Re>=0){let fe=(Re+1)%12,_e=parseInt(A[1],10);fe===0&&_e++,K=`${ye[fe]}/${String(_e).slice(-2)}`}}}V.mes=K}p.fields.forEach(K=>{K.type!=="text"&&g?V[K.key]=g[K.key]||0:K.type!=="text"&&(V[K.key]=0)}),_([...b,V])},se=g=>{const V=b.filter((K,A)=>A!==g);_(V)},q=g=>{var A;const V=(A=g.target.files)==null?void 0:A[0];if(!V)return;const K=new FileReader;K.onload=ye=>{var Re;try{const fe=(Re=ye.target)==null?void 0:Re.result,_e=Tn(fe,{type:"binary"}),he=_e.SheetNames[0],oe=_e.Sheets[he],ue=ns.sheet_to_json(oe).map(te=>{const ne={};return p.fields.forEach(pe=>{const T=[pe.key,pe.label,pe.key.toLowerCase(),pe.label.toLowerCase(),pe.key.replace(/([A-Z])/g,"_$1").toLowerCase()];for(const G of T)if(te[G]!==void 0){ne[pe.key]=pe.type==="text"?String(te[G]):parseFloat(String(te[G]).replace(/[^\d,.-]/g,"").replace(",","."))||0;break}ne[pe.key]===void 0&&(ne[pe.key]=pe.type==="text"?"":0)}),ne}),be=[...b];ue.forEach(te=>{const ne=be.findIndex(pe=>{var T,G;return((T=pe.mes)==null?void 0:T.toLowerCase())===((G=te.mes)==null?void 0:G.toLowerCase())});ne>=0?be[ne]=te:be.push(te)}),_(be),Y.success(`${ue.length} registros importados/atualizados`)}catch(fe){console.error("Error parsing file:",fe),Y.error("Erro ao processar arquivo")}},K.readAsBinaryString(V),g.target.value=""},L=(g,V)=>{if(g==null)return"-";switch(V){case"currency":return Yo(g);case"percent":return`${(g||0).toFixed(1)}%`;case"number":return typeof g=="number"?g.toLocaleString("pt-BR"):g;default:return g}},E=p.fields.filter(g=>!g.computed),B=p.fields.filter(g=>g.computed);return e.jsxs(Mo,{onOpenChange:g=>{g||R()},children:[e.jsx(Co,{asChild:!0,children:e.jsxs(de,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(us,{className:"h-4 w-4"}),"Editar Dados"]})}),e.jsxs(Ro,{side:"right",className:"w-[700px] sm:max-w-[700px]",children:[e.jsxs(Po,{children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Do,{children:p.title}),e.jsx(mr,{status:C})]}),e.jsxs(Ao,{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{children:p.description}),e.jsxs(ia,{variant:"outline",className:"text-xs gap-1 font-mono",children:[e.jsx(Ma,{className:"h-3 w-3"}),p.table]})]})]}),e.jsxs("div",{className:"mt-6 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(Ae,{htmlFor:`file-upload-${a}`,className:"cursor-pointer inline-flex items-center gap-2 px-4 py-2 rounded-lg border border-dashed hover:bg-accent transition-colors",children:[e.jsx(us,{className:"h-4 w-4"}),"Importar CSV/XLSX"]}),e.jsx("input",{id:`file-upload-${a}`,type:"file",accept:".csv,.xlsx,.xls",onChange:q,className:"hidden"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Atualiza meses existentes e adiciona novos"})]}),e.jsx("div",{className:"border rounded-lg max-h-[400px] overflow-auto",children:e.jsxs(On,{children:[e.jsx(Ln,{children:e.jsxs(Za,{children:[E.map(g=>e.jsx(wa,{className:g.width,children:g.label},g.key)),B.map(g=>e.jsx(wa,{className:"text-muted-foreground",children:g.label},g.key)),e.jsx(wa,{className:"w-[50px]"})]})}),e.jsx(Vn,{children:b.map((g,V)=>e.jsxs(Za,{children:[E.map(K=>e.jsx(We,{children:e.jsx(Ge,{type:K.type==="text"?"text":"number",value:g[K.key]??(K.type==="text"?"":0),onChange:A=>u(V,K.key,A.target.value),onBlur:()=>{R()},placeholder:K.type==="text"?"Jan/26":"0",className:`h-8 ${K.width||"w-24"}`})},K.key)),B.map(K=>e.jsx(We,{className:"text-muted-foreground font-medium",children:L(g[K.key],K.type)},K.key)),e.jsx(We,{children:e.jsx(de,{variant:"ghost",size:"icon",onClick:()=>se(V),className:"h-8 w-8 text-muted-foreground hover:text-destructive",children:e.jsx(it,{className:"h-4 w-4"})})})]},V))})]})}),(!p.isGlobal||b.length===0)&&e.jsxs(de,{variant:"outline",size:"sm",onClick:I,className:"gap-2",children:[e.jsx(ot,{className:"h-4 w-4"}),"Adicionar Linha"]}),!p.isGlobal&&e.jsx("p",{className:"text-xs text-muted-foreground pt-2 border-t",children:"Linhas sem mês preenchido são ignoradas no salvamento automático."})]})]})]})}const $i={cover:{type:"cover",label:"Capa",icon:et,isNew:!0},agenda:{type:"agenda",label:"Agenda do Dia",icon:et,isNew:!0},mrr_evolution:{type:"mrr_evolution",label:"Evolução MRR",icon:Zo},mrr_growth:{type:"mrr_growth",label:"Crescimento & Clientes",icon:Oa},concentracao_faturamento:{type:"concentracao_faturamento",label:"Concentração V2 (Jul x Ago)",icon:Xo,isNew:!0},budget_vs_realizado:{type:"budget_vs_realizado",label:"Budget vs Realizado",icon:$a},budget_vs_realizado_v3:{type:"budget_vs_realizado_v3",label:"Budget V3 (Adaptativo)",icon:$a},nmr_channel_v2:{type:"nmr_channel_v2",label:"MRR por Canal",icon:na},nmr_channel_v3:{type:"nmr_channel_v3",label:"MRR por Canal (sem Migração)",icon:na},nmr_channel_v3_acumulado:{type:"nmr_channel_v3_acumulado",label:"MRR por Canal — Acumulado YTD",icon:na,isNew:!0},desempenho_vendas:{type:"desempenho_vendas",label:"Desempenho Vendas",icon:na,isNew:!0},desempenho_vendas_acumulado:{type:"desempenho_vendas_acumulado",label:"Desempenho Vendas — Acumulado 5M",icon:na,isNew:!0},contracts_by_team:{type:"contracts_by_team",label:"Contratos por Time",icon:Oa},ticket_medio:{type:"ticket_medio",label:"Ticket Médio",icon:$a},pipeline_funnel:{type:"pipeline_funnel",label:"Pipeline Funil",icon:Eo},consolidado_8kpis:{type:"consolidado_8kpis",label:"Consolidado 8 KPIs",icon:et},kpis_saas_ltv:{type:"kpis_saas_ltv",label:"KPIs SaaS LTV",icon:na},kpis_cac_payback:{type:"kpis_cac_payback",label:"CAC & Payback",icon:$a},unit_economics:{type:"unit_economics",label:"Unit Economics",icon:$a,isNew:!0},churn_analise:{type:"churn_analise",label:"Churn",icon:To},cohort_retencao:{type:"cohort_retencao",label:"Cohort Retenção M1–M12",icon:Oa},cohort_retencao_m13_m24:{type:"cohort_retencao_m13_m24",label:"Cohort Retenção M13–M24",icon:Oa,isNew:!0},migracao_status_v2:{type:"migracao_status_v2",label:"Migração Status",icon:Hn}
2,headcount_produtividade:{type:"headcount_produtividade",label:"Headcount",icon:na},suporte_indicadores:{type:"suporte_indicadores",label:"Suporte",icon:Oa},atendimento_comparativo:{type:"atendimento_comparativo",label:"Atendimento — Jul x Ago",icon:Wo,isNew:!0},marketing_aquisicao:{type:"marketing_aquisicao",label:"Marketing Aquisição",icon:na},marketing_aquisicao_v2:{type:"marketing_aquisicao_v2",label:"Marketing V2 — Funil & Qualidade",icon:na,isNew:!0},marketing_qualidade_canal_v2:{type:"marketing_qualidade_canal_v2",label:"Marketing V2 — Qualidade por Canal",icon:na,isNew:!0},parceiro_performance:{type:"parceiro_performance",label:"Parceiro Pontua",icon:ds},base_usuarios:{type:"base_usuarios",label:"Base de Usuários",icon:ds,isNew:!0},lead_scoring:{type:"lead_scoring",label:"Lead Scoring",icon:na,isNew:!0},resultado_trimestral:{type:"resultado_trimestral",label:"Resultado Trimestral",icon:Oa,isNew:!0}},qi=[{label:"Abertura",icon:et,types:["cover","agenda"]},{label:"Financeiro",icon:$a,types:["mrr_evolution","mrr_growth","concentracao_faturamento","budget_vs_realizado_v3"]},{label:"Comercial",icon:na,types:["desempenho_vendas","desempenho_vendas_acumulado","nmr_channel_v2","nmr_channel_v3","nmr_channel_v3_acumulado","contracts_by_team","ticket_medio","pipeline_funnel","resultado_trimestral"]},{label:"KPIs SaaS",icon:et,types:["consolidado_8kpis","kpis_saas_ltv","kpis_cac_payback","unit_economics","churn_analise","cohort_retencao","cohort_retencao_m13_m24"]},{label:"Operacional",icon:Hn,types:["migracao_status_v2","headcount_produtividade","suporte_indicadores","atendimento_comparativo","base_usuarios"]},{label:"Marketing & Parcerias",icon:ds,types:["marketing_aquisicao","marketing_aquisicao_v2","marketing_qualidade_canal_v2","parceiro_performance","lead_scoring"]}],es=[{value:"pending",label:"Pendente",icon:tt,color:"text-muted-foreground"},{value:"needs_revision",label:"Revisar",icon:xs,color:"text-amber-500"},{value:"reviewed",label:"Revisado",icon:rt,color:"text-emerald-500"}];function Hi({slides:a,currentSlideIndex:n,onSelectSlide:o,onReorderSlides:h,onAddSlide:b,onDeleteSlide:_,onUpdateReviewStatus:f}){const[p,y]=l.useState(null),[C,X]=l.useState(null),v=q=>{y(q)},R=(q,L)=>{q.preventDefault(),X(L)},u=()=>{if(p!==null&&C!==null&&p!==C){const q=[...a],[L]=q.splice(p,1);q.splice(C,0,L);const E=q.map((B,g)=>({...B,sort_order:g}));h(E)}y(null),X(null)},I=q=>{switch(q){case"mrr_evolution":return"MRR";case"cover":return"Capa";case"mrr_growth":return"Growth";case"nmr_channel":return"NMR";case"nmr_channel_v2":return"NMR V2";case"contracts_by_team":return"Contracts";case"ticket_medio":return"Ticket";case"migracao_status":return"Migração";case"pipeline_funnel":return"Funil";case"kpis_saas_ltv":return"LTV";case"kpis_cac_payback":return"CAC";case"concentracao_faturamento":return"Conc.";case"churn_analise":return"Churn";case"marketing_aquisicao":return"Mkt";case"cohort_retencao":return"Cohort";case"cohort_retencao_m13_m24":return"Cohort 13-24";case"headcount_produtividade":return"HC";case"budget_vs_realizado":return"Budget";case"budget_vs_realizado_v3":return"Budget V3";case"suporte_indicadores":return"Suporte";case"atendimento_comparativo":return"Atendimento";case"parceiro_performance":return"Parceiro";case"resultado_trimestral":return"Trimestre";case"custom":return"Custom";default:return q}},se=q=>{switch(q){case"mrr_evolution":return"bg-blue-100 text-blue-700";case"cover":return"bg-slate-100 text-slate-700";case"mrr_growth":return"bg-purple-100 text-purple-700";case"nmr_channel":return"bg-teal-100 text-teal-700";case"nmr_channel_v2":return"bg-emerald-100 text-emerald-700";case"contracts_by_team":return"bg-amber-100 text-amber-700";case"ticket_medio":return"bg-green-100 text-green-700";case"migracao_status":return"bg-cyan-100 text-cyan-700";case"pipeline_funnel":return"bg-indigo-100 text-indigo-700";case"kpis_saas_ltv":return"bg-rose-100 text-rose-700";case"kpis_cac_payback":return"bg-orange-100 text-orange-700";case"concentracao_faturamento":return"bg-violet-100 text-violet-700";case"churn_analise":return"bg-red-100 text-red-700";case"marketing_aquisicao":return"bg-pink-100 text-pink-700";case"cohort_retencao":return"bg-slate-100 text-slate-700";case"cohort_retencao_m13_m24":return"bg-slate-100 text-slate-700";
2case"headcount_produtividade":return"bg-fuchsia-100 text-fuchsia-700";case"budget_vs_realizado":return"bg-lime-100 text-lime-700";case"budget_vs_realizado_v3":return"bg-violet-100 text-violet-700";case"suporte_indicadores":return"bg-rose-100 text-rose-700";case"atendimento_comparativo":return"bg-cyan-100 text-cyan-700";case"parceiro_performance":return"bg-purple-100 text-purple-700";case"resultado_trimestral":return"bg-emerald-100 text-emerald-700";default:return"bg-muted text-muted-foreground"}};return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"Slides"}),e.jsxs(_s,{children:[e.jsx(vs,{asChild:!0,children:e.jsxs(de,{variant:"ghost",size:"sm",className:"h-7 gap-1",children:[e.jsx(ot,{className:"h-3 w-3"}),"Novo"]})}),e.jsx(bs,{align:"end",className:"min-w-[20rem] w-auto max-w-[24rem] max-h-96 overflow-y-auto bg-popover",children:qi.map((q,L)=>{const E=q.types.filter(B=>a.some(g=>g.slide_type===B));return e.jsxs("div",{children:[L>0&&e.jsx(os,{}),e.jsxs(vt,{className:"flex items-center gap-2 text-xs font-semibold text-muted-foreground py-1.5",children:[e.jsx(q.icon,{className:"h-3.5 w-3.5"}),q.label,E.length>0&&e.jsxs("span",{className:"ml-auto text-[10px] text-muted-foreground",children:[E.length," adicionado",E.length>1?"s":""]})]}),q.types.map(B=>{const g=$i[B];if(!g)return null;const V=g.icon,K=a.some(A=>A.slide_type===B);return e.jsxs(ma,{onClick:()=>b(g.type),className:"flex items-center gap-2 pl-6 py-1.5 cursor-pointer text-sm",children:[K?e.jsx(rt,{className:"h-4 w-4 text-emerald-500 shrink-0"}):e.jsx(V,{className:"h-4 w-4 text-muted-foreground shrink-0"}),e.jsx("span",{className:aa("whitespace-normal leading-tight flex-1",K&&"text-muted-foreground"),children:g.label}),g.isNew&&e.jsx(ia,{className:"ml-auto text-[10px] px-1.5 py-0 bg-emerald-100 text-emerald-700 border-0",children:"Novo"}),K&&!g.isNew&&e.jsx("span",{className:"ml-auto text-[10px] text-emerald-600",children:"✓"})]},B)})]},q.label)})})]})]}),e.jsx("div",{className:"space-y-1",children:a.map((q,L)=>{const E=q.review_status||"pending",B=es.find(V=>V.value===E)||es[0],g=B.icon;return e.jsxs(Ga,{draggable:!0,onDragStart:()=>v(L),onDragOver:V=>R(V,L),onDragEnd:u,onClick:()=>o(L),className:aa("group flex items-center gap-2 p-2 cursor-pointer transition-all",n===L?"border-primary bg-primary/5":"hover:bg-accent hover:text-accent-foreground",p===L&&"opacity-50",C===L&&p!==L&&"border-primary border-dashed"),children:[e.jsx($n,{className:"h-4 w-4 text-muted-foreground cursor-grab active:cursor-grabbing shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:aa("text-xs font-medium px-1.5 py-0.5 rounded",se(q.slide_type)),children:I(q.slide_type)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["#",L+1]})]}),e.jsx("p",{className:"text-sm truncate mt-0.5",children:q.title})]}),f&&e.jsxs(hs,{value:E,onValueChange:V=>{f(q.id,V)},children:[e.jsx(fs,{className:"h-6 w-6 p-0 border-0 bg-transparent focus:ring-0 shrink-0",onClick:V=>V.stopPropagation(),children:e.jsx(g,{className:aa("h-4 w-4",B.color)})}),e.jsx(gs,{align:"end",className:"w-32 bg-popover",children:es.map(V=>e.jsx(Xa,{value:V.value,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(V.icon,{className:aa("h-3.5 w-3.5",V.color)}),e.jsx("span",{children:V.label})]})},V.value))})]}),e.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 hover:text-destructive shrink-0",onClick:V=>{V.stopPropagation(),_(q.id)},children:e.jsx(it,{className:"h-3 w-3"})})]},q.id)})})]})}function Gi({reportId:a,reportTitle:n}){const[o,h]=l.useState(!1),[b,_]=l.useState(""),[f,p]=l.useState(!1),[y,C]=l.useState(!1),[X,v]=l.useState([]),[R,u]=l.useState(null),I=async()=>{C(!0);try{const{data:E,error:B}=await J.from("status_report_shares").select("id, shared_with_email, accessed_at, access_count, is_active, created_at").eq("report_id",a).eq("is_active",!0).order("created_at",{ascending:!1});if(B)throw B;v(E||[])}catch(E){console.error("Error loading shares:",E)}finally{C(!1)}};l.useEffect(()=>{o&&I()},[o,a]);const se=async()=>{var B;const E=b.trim().toLowerCase();if(!E||!E.includes("@")){Y.error("Insira um e-mail válido");return}p(!0);try{const{data:g,error:V}=await J.functions.invoke("share-status-report",{body:{report_id:a,emails:[E]}});if(V)throw V;const K=(B=g==null?void 0:g.results)==null?void 0:B[0];K!=null&&K.success?(Y.success(`Compartilhado com ${E}`),_(""),I()):Y.error((K==null?void 0:K.error)||"Erro ao compartilhar")}catch(g){Y.error(g.message||"Erro ao compartilhar")}finally{p(!1)}},q=async(E,B)=>{var g;u(E);try{const{data:V,error:K}=await J.functions.invoke("share-status-report",{body:{report_id:a,emails:[B],resend:!0}});if(K)throw K;const A=(g=V==null?void 0:V.results)==null?void 0:g[0];A!=null&&A.success?Y.success(`E-mail reenviado para ${B}`):Y.error((A==null?void 0:A.error)||"Erro ao reenviar")}catch(V){Y.error(V.message||"Erro ao reenviar")}finally{u(null)}},L=async(E,B)=>{try{const{error:g}=await J.from("status_report_shares").update({is_active:!1}).eq("id",E);if(g)throw g;Y.success(`Acesso de ${B} revogado`),I()}catch{Y.error("Erro ao revogar acesso")}};return e.jsxs(Ra,{open:o,onOpenChange:h,children:[e.jsx(zo,{asChild:!0,children:e.jsxs(de,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(ei,{className:"h-4 w-4"}),"Compartilhar"]})}),e.jsxs(Pa,{className:"sm:max-w-md",children:[e.jsxs(Da,{children:[e.jsx(Aa,{children:"Compartilhar Status Report"}),e.jsx(at,{children:"Envie um link de acesso por e-mail para visualização da apresentação."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ge,{type:"email",placeholder:"[email protected]",value:b,onChange:E=>_(E.target.value),onKeyDown:E=>
2E.key==="Enter"&&se(),disabled:f}),e.jsxs(de,{onClick:se,disabled:f||!b.trim(),size:"sm",className:"shrink-0",children:[f?e.jsx(Le,{className:"h-4 w-4 animate-spin"}):e.jsx(Fo,{className:"h-4 w-4"}),"Enviar"]})]}),y?e.jsx("div",{className:"flex justify-center py-4",children:e.jsx(Le,{className:"h-5 w-5 animate-spin text-muted-foreground"})}):X.length>0?e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:"Compartilhados:"}),e.jsx("div",{className:"max-h-48 overflow-y-auto space-y-2",children:X.map(E=>e.jsxs("div",{className:"flex items-center justify-between gap-2 rounded-lg border p-2 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{className:"truncate",children:E.shared_with_email}),E.accessed_at?e.jsxs(ia,{variant:"secondary",className:"shrink-0 gap-1 text-xs",children:[e.jsx(rt,{className:"h-3 w-3"}),"Acessado"]}):e.jsxs(ia,{variant:"outline",className:"shrink-0 gap-1 text-xs",children:[e.jsx(tt,{className:"h-3 w-3"}),"Pendente"]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",disabled:R===E.id,onClick:()=>q(E.id,E.shared_with_email),title:"Reenviar e-mail",children:R===E.id?e.jsx(Le,{className:"h-3 w-3 animate-spin"}):e.jsx(Io,{className:"h-3 w-3"})}),e.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>L(E.id,E.shared_with_email),title:"Revogar acesso",children:e.jsx(wt,{className:"h-3 w-3"})})]})]},E.id))})]}):e.jsx("p",{className:"text-sm text-muted-foreground text-center py-2",children:"Nenhum compartilhamento ativo."})]})]})]})}function Bi({syncs:a}){return a.length===0?null:e.jsxs("div",{className:"mt-3 flex items-center gap-2 px-3 py-2 bg-primary/10 border border-primary/20 rounded-lg",children:[e.jsx(Le,{className:"h-4 w-4 animate-spin text-primary flex-shrink-0"}),e.jsxs("div",{className:"text-sm flex-1 min-w-0",children:[e.jsx("span",{className:"font-medium text-primary",children:"Sincronizando:"}),e.jsx("span",{className:"text-primary/80 ml-1 truncate",children:a.map(n=>n.label).join(" • ")})]}),a.length>1&&e.jsx("span",{className:"flex-shrink-0 inline-flex items-center justify-center h-5 w-5 rounded-full bg-primary/20 text-xs font-medium text-primary",children:a.length})]})}function Ui({open:a,onOpenChange:n,fieldsToOverwrite:o,slideLabel:h,onConfirm:b,onCancel:_}){const[f,p]=l.useState(new Set);l.useEffect(()=>{a&&p(new Set)},[a,o]);const y=u=>typeof u=="number"?u>=1e3?new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL",maximumFractionDigits:0}).format(u):new Intl.NumberFormat("pt-BR").format(u):String(u),C=u=>{p(I=>{const se=new Set(I);return se.has(u)?se.delete(u):se.add(u),se})},X=()=>{b(Array.from(f))},v=()=>{const u=o.map(I=>I.field);b(u)},R=f.size>0;return f.size,o.length,e.jsx(ys,{open:a,onOpenChange:n,children:e.jsxs(ks,{className:"max-w-md",children:[e.jsxs(Ss,{children:[e.jsxs(js,{className:"flex items-center gap-2",children:[e.jsx(Oo,{className:"h-5 w-5 text-amber-500"}),"Sobrescrever dados editados?"]}),e.jsxs(Ns,{children:["A sincronização do ",e.jsx("strong",{children:h})," pode substituir valores que você editou manualmente. Selecione quais campos deseja sobrescrever:"]})]}),e.jsx("div",{className:"space-y-1 my-4 bg-muted/50 rounded-lg p-3",children:o.map(u=>{const I=f.has(u.field);return e.jsxs("div",{className:`flex items-center gap-3 text-sm py-2 px-2 rounded-md cursor-pointer transition-colors ${I?"bg-destructive/10":"hover:bg-muted"}`,onClick:()=>C(u.field),children:[e.jsx(Fn,{checked:I,onCheckedChange:()=>C(u.field),className:"data-[state=checked]:bg-destructive data-[state=checked]:border-destructive"}),e.jsx("span",{className:`flex-1 ${I?"text-foreground":"text-muted-foreground"}`,children:u.label}),e.jsxs("span",{className:"font-mono text-xs",children:[e.jsx("span",{className:I?"text-destructive line-through":"text-muted-foreground",children:y(u.currentValue)}),I&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground mx-1",children:"→"}),e.jsx("span",{className:"text-primary font-medium",children:y(u.newValue)})]})]})]},u.field)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:R?`${f.size} campo(s) marcado(s) para sobrescrever. Campos desmarcados serão preservados.`:'Nenhum campo selecionado. Clique em "Manter Dados Manuais" para sincronizar sem sobrescrever.'}),e.jsxs(ws,{className:"flex-col sm:flex-row gap-2",children:[e.jsx(Ms,{onClick:_,children:"Cancelar"}),e.jsx(de,{variant:R?"outline":"default",onClick:X,children:R?`Sobrescrever ${f.size} Selecionado(s)`:"Manter Dados Manuais"}),e.jsx(de,{variant:"destructive",onClick:v,children:"Sobrescrever Todos"})]})]})})}const xt=()=>({nome:"",deals:0,mrr:0,treinamento:0});function as({open:a,onOpenChange:n,initialData:o,onSave:h,mode:b="full",title:_}){const[f,p]=l.useState([xt()]);l.useEffect(()=>{a&&p(o&&o.length>0?[...o]:[xt()])},[a,o]);const y=(E,B,g)=>{p(V=>V.map((K,A)=>A===E?{...K,[B]:g}:K))},C=()=>p(E=>[...E,xt()]),X=E=>{p(B=>B.length<=1?[xt()]:B.filter((g,V)=>V!==E))},v=b==="deals-only",R=()=>{const E=f.filter(B=>B.nome.trim()?b==="ticket"?B.deals>0&&B.mrr>0:v?B.deals>0:B.deals>0||B.mrr>0||B.treinamento>0:!1);h(E),n(!1)},u=f.reduce((E,B)=>E+B.mrr,0),I=f.reduce((E,B)=>E+B.deals,0),se=f.reduce((E,B)=>E+B.treinamento,0),q=v?"grid-cols-[1fr_120px_36px]":b==="ticket"?"grid-cols-[1fr_80px_140px_36px]":"grid-cols-[1fr_80px_120px_120px_36px]",L=E=>new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL"}).format(E);return e.jsx(Ra,{open:a,onOpenChange:n,children:e.jsxs(Pa,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Da,{children:e.jsx(Aa,{children:_??(v?"Checkout Manual — Contratos por Consultor":b==="ticket"?"Checkout Manual — Ticket Médio":"Checkout Manual — Dados por Consultor")})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:`grid ${q} gap-2 text-xs font-medium text-muted-foreground uppercase`,children:[e.jsx("span",{children:"Consultor"}),!v&&e.jsx("span",{children:"Deals"}),v?e.jsx("span",{children:"Contratos"}):e.jsx("span",{children:"MRR"}),!v&&b!=="ticket"&&e.jsx("span",{children:"Treinamento"}),e.jsx("span",{})]}),f.map((E,B)=>e.jsxs("div",{className:`grid ${q} gap-2 items-center`,children:[e.jsx(Ge,{value:E.nome,onChange:g=>y(B,"nome",g.target.value),placeholder:"Nome do consultor",className:"h-9 text-sm"}),!v&&e.jsx(Ge,{type:"number",min:0,value:E.deals||"",onChange:g=>y(B,"deals",parseInt(g.target.value)||0),placeholder:"0",className:"h-9 text-sm"}),v?e.jsx(Ge,{type:"number",min:0,value:E.deals||"",onChange:g=>y(B,"deals",parseInt(g.target.value)||0),placeholder:"0",className:"h-9 text-sm"}):e.jsx(bn,{value:E.mrr,onChange:g=>y(B,"mrr",g),className:"h-9 text-sm",placeholder:"R$ 0,00"}),!v&&b!=="ticket"&&e.jsx(bn,{value:E.treinamento,onChange:g=>y(B,"treinamento",g),className:"h-9 text-sm",placeholder:"R$ 0,00"}),e.jsx(de,{variant:"ghost",size:"icon",className:"h-9 w-9",onClick:()=>X(B),children:e.jsx(it,{className:"h-4 w-4 text-destructive"})})]},B)),e.jsxs(de,{variant:"outline",size:"sm",onClick:C,className:"gap-1 w-full",children:[e.jsx(ot,{className:"h-3.5 w-3.5"})," Adicionar Consultor"]}),e.jsxs("div",{className:`border-t pt-3 grid ${q} gap-2 text-sm font-semibold`,children:[e.jsx("span",{children:"Total"}),!v&&e.jsx("span",{children:I}),v?e.jsx("span",{children:I}):e.jsx("span",{children:L(u)}),!v&&b!=="ticket"&&e.jsx("span",{children:L(se)}),e.jsx("span",{})]})]}),e.jsxs(Rs,{children:[e.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"Cancelar"}),e.jsx(de,{onClick:R,children:"Salvar e Mesclar"})]})]})})}function Dn({open:a,onOpenChange:n,initialValue:o=0,onSave:h,title:b="Checkout Manual",description:_="Esse valor será somado a Vendas Pontua no mês de referência.",helperText:f="O valor é redefinido após cada sincronização com HubSpot."}){const[p,y]=l.useState(""),[C,X]=l.useState(!1);l.useEffect(()=>{a&&y(o>0?String(o).replace(".",","):"")},[a,o]);const R=(I=>{if(!I)return 0;const se=I.replace(/\./g,"").replace(",",".").replace(/[^0-9.]/g,""),q=parseFloat(se);return isNaN(q)||q<0?0:q})(p),u=async()=>{X(!0);try{await h(R),n(!1)}finally{X(!1)}};return e.jsx(Ra,{open:a,onOpenChange:n,children:e.jsxs(Pa,{className:"sm:max-w-md",children:[e.jsxs(Da,{children:[e.jsx(Aa,{children:b}),e.jsx(at,{children:_})]}),e.jsxs("div",{className:"space-y-2 py-2",children:[e.jsx(Ae,{htmlFor:"checkout-valor",children:"Valor do Checkout (R$)"}),e.jsx(Ge,{id:"checkout-valor",inputMode:"decimal",placeholder:"0,00",value:p,onChange:I=>y(I.target.value),autoFocus:!0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:f}),R>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Será somado: ",e.jsxs("strong",{children:["R$ ",R.toLocaleStr
2ing("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2})]})]})]}),e.jsxs(Rs,{children:[e.jsx(de,{variant:"outline",onClick:()=>n(!1),disabled:C,children:"Cancelar"}),e.jsx(de,{onClick:u,disabled:C,children:C?"Salvando...":"Salvar"})]})]})})}function Ji(){const[a,n]=l.useState(!1),o=l.useCallback(async(_,f)=>{try{const{data:p,error:y}=await J.from("slide_data_bank").select("*").eq("slide_type",_).eq("mes_referencia",f).maybeSingle();return y?(console.error("Error fetching from slide_data_bank:",y),{data:null,lastSyncAt:null}):p?{data:p.data,lastSyncAt:p.last_sync_at}:{data:null,lastSyncAt:null}}catch(p){return console.error("Error in fetchSlideDataFromBank:",p),{data:null,lastSyncAt:null}}},[]),h=l.useCallback(async _=>{try{n(!0);const{data:f,error:p}=await J.from("slide_data_bank").select("*").eq("slide_type",_).order("mes_referencia",{ascending:!0});return p?(console.error("Error fetching all slide data:",p),[]):f||[]}catch(f){return console.error("Error in fetchAllSlideDataByType:",f),[]}finally{n(!1)}},[]),b=l.useCallback(async(_,f,p,y)=>{try{const{error:C}=await J.from("slide_data_bank").upsert({mes:f,mes_referencia:p,slide_type:_,data:y,last_sync_at:new Date().toISOString()},{onConflict:"mes,slide_type"});return C?(console.error("Error saving to slide_data_bank:",C),!1):!0}catch(C){return console.error("Error in saveToSlideDataBank:",C),!1}},[]);return{isLoading:a,fetchSlideDataFromBank:o,fetchAllSlideDataByType:h,saveToSlideDataBank:b}}function Ki(){const a=l.useRef(new Map),[n,o]=l.useState([]),h=l.useCallback(({id:f,label:p,source:y,slideType:C,promise:X})=>{if(a.current.has(f)){console.warn(`[useSyncManager] Sync ${f} já está em andamento`);return}const v=Y.loading(`Sincronizando ${p}...`,{description:`Buscando dados do ${y}`}),R={id:f,label:p,source:y,slideType:C,toastId:v,startedAt:new Date};a.current.set(f,R),o(Array.from(a.current.values())),X.then(()=>{Y.success(`${p} sincronizado`,{id:v,description:"Dados salvos com sucesso"})}).catch(u=>{const I=u instanceof Error?u.message:"Erro desconhecido";Y.error(`Erro: ${p}`,{id:v,description:I})}).finally(()=>{a.current.delete(f),o(Array.from(a.current.values()))})},[]),b=l.useCallback(f=>Array.from(a.current.values()).some(p=>p.slideType===f),[]),_=l.useCallback(()=>a.current.size>0,[]);return{activeSyncs:n,startSync:h,isSyncing:b,isAnySyncing:_}}const Yi="2026-07";function Qi(a,n){const[o,h]=a.split("-").map(Number),b=[];for(let _=n-1;_>=0;_--){const f=new Date(o,h-1-_,1);b.push(`${f.getFullYear()}-${String(f.getMonth()+1).padStart(2,"0")}`)}return b}function Wi(a){return a.filter(n=>n>=Yi)}function Xi(a){if(a.length<2)return"estavel";const n=a[a.length-1]-a[0];return n>1?"alta":n<-1?"queda":"estavel"}function Zi(a,n,o){const h=new Map(o.map(u=>[u.mesReferencia,u])),b=n.map((u,I)=>{const se=a.historico[I],q=h.get(u);return q?{mes:q.mes,mesReferencia:u,fonte:q.fonte,faixas:q.faixas,totalMRR:q.totalMRR,totalClientes:q.totalClientes}:{...se??{mes:u,faixas:[],totalMRR:0,totalClientes:0},mesReferencia:u,fonte:"stripe"}}),f=a.faixas.map(u=>{const I=b.map(se=>{var q;return((q=se.faixas.find(L=>L.faixa===u.faixa))==null?void 0:q.percentual)||0});return{faixa:u.faixa,percentuais:I,tendencia:Xi(I)}}),p=b[b.length-1],y=h.get(n[n.length-1]),C=y?{...a.concentracaoTop,topN:y.concentracaoTop.topN,percentualMRR:y.concentracaoTop.percentualMRR,clientes:y.concentracaoTop.clientes}:a.concentracaoTop,X=C.percentualMRR,v=X<20?"Saudável":X<30?"Atenção":"Risco",R=y?{...a.insights,concentracao:`${v}: Top ${C.topN} clientes = ${X.toFixed(0)}% do MRR`}:a.insights;return{...a,historico:b,tendencias:f,mesesLabels:b.map(u=>u.mes),mesAtual:p,concentracaoTop:C,insights:R,fonteAtual:y?y.fonte:"stripe"}}const ec={jan:"01",fev:"02",mar:"03",abr:"04",mai:"05",jun:"06",jul:"07",ago:"08",set:"09",out:"10",nov:"11",dez:"12"};function ac(a){const o=a.trim().toLowerCase().match(/^([a-záéíóúâêô]+)\/?(\d{2,4})$/);if(!o)return null;const[,h,b]=o,_=ec[h.substring(0,3)];return _?`${b.length===2?`20${b}`:b}-${_}`:null}function tc(a){return a.syncSource?a.fields.some(n=>n.key!=="mes"&&!n.computed):!0}const sc=a=>Number(a.mrr_tron_pr??a.mrr_tron??0)||0,ts=a=>(Number(a.mrr_pontua)||0)+(Number(a.mrr_pontua_pr)||0)+sc(a),An=(a,n)=>{if(a==null||a==="")return"-";switch(n){case"currency":return new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL",minimumFractionDigits:0}).format(Number(a));case"percent":return`${Number(a).toFixed(1)}%`;
2case"number":return typeof a=="number"?a.toLocaleString("pt-BR"):a;default:return String(a)}};function nc(){const[a,n]=l.useState([]),[o,h]=l.useState(!0),[b,_]=l.useState(null),[f,p]=l.useState({}),[y,C]=l.useState(null),[X,v]=l.useState({}),[R,u]=l.useState(null),I=l.useRef(null),[se,q]=l.useState(null),[L,E]=l.useState({}),[B,g]=l.useState(!1),V=async()=>{h(!0);try{const{data:T,error:G}=await J.from("slide_data_bank").select("*").order("mes_referencia",{ascending:!1});if(G)throw G;n(T||[]),v({}),C(null)}catch(T){console.error("Error fetching data:",T),Y.error("Erro ao carregar dados")}finally{h(!1)}};l.useEffect(()=>{V()},[]),l.useEffect(()=>{y&&I.current&&(I.current.focus(),I.current.select())},[y]);const K=async()=>{if(b)try{const{error:T}=await J.from("slide_data_bank").delete().eq("id",b.id);if(T)throw T;Y.success("Registro excluído"),_(null),V()}catch(T){console.error("Error deleting:",T),Y.error("Erro ao excluir")}},A=(T,G,me,z)=>{const re=z==="text"?me:me===""?null:Number(me);v(Q=>({...Q,[T]:{...Q[T]||{},[G]:re}}))},ye=()=>{C(null)},Re=T=>{T.key==="Enter"&&C(null),T.key==="Escape"&&(y&&v(G=>{const me={...G};return me[y.rowId]&&(delete me[y.rowId][y.fieldKey],Object.keys(me[y.rowId]).length===0&&delete me[y.rowId]),me}),C(null))},fe=async T=>{const G=X[T.id];if(G){u(T.id);try{const me={...T.data,...G};T.slide_type==="mrr_evolution"&&(me.mrr_total=ts(me));const{error:z}=await J.from("slide_data_bank").update({data:me,updated_at:new Date().toISOString()}).eq("id",T.id);if(z)throw z;Y.success("Dados salvos"),v(re=>{const Q={...re};return delete Q[T.id],Q}
2),V()}catch(me){console.error("Error saving:",me),Y.error("Erro ao salvar")}finally{u(null)}}},_e=T=>{q(T),E({mes:""}),p(G=>({...G,[T]:!0}))},he=()=>{q(null),E({})},oe=(T,G,me)=>{const z=me==="text"?G:G===""?null:Number(G);E(re=>({...re,[T]:z}))},ee=async(T,G)=>{var re;const me=(L.mes||"").trim();if(!me){Y.error("Informe o mês (ex: Jun/25)");return}const z=ac(me);if(!z){Y.error("Formato de mês inválido. Use ex: Jun/25, Mar/2025");return}g(!0);try{const Q={};G.fields.filter(W=>W.key!=="mes"&&!W.computed).forEach(W=>{L[W.key]!==void 0&&L[W.key]!==null&&(Q[W.key]=L[W.key])}),T==="mrr_evolution"&&(Q.mrr_total=ts(Q));const{error:le}=await J.from("slide_data_bank").insert({mes:me,mes_referencia:z,slide_type:T,data:Q,last_sync_at:null});if(le)throw le;Y.success(`Mês ${me} adicionado`),he(),V()}catch(Q){console.error("Error adding row:",Q),(re=Q==null?void 0:Q.message)!=null&&re.includes("duplicate")||(Q==null?void 0:Q.code)==="23505"?Y.error("Já existe um registro para este mês neste slide"):Y.error("Erro ao adicionar registro")}finally{g(!1)}},ue=T=>{p(G=>({...G,[T]:!G[T]}))},be=a.reduce((T,G)=>(T[G.slide_type]||(T[G.slide_type]=[]),T[G.slide_type].push(G),T),{}),te=Object.entries($o),ne=(T,G,me,z)=>{var ge;const re=(y==null?void 0:y.rowId)===T&&(y==null?void 0:y.fieldKey)===G,Q=(ge=X[T])==null?void 0:ge[G],le=Q!==void 0?Q:me;if(z.computed)return e.jsx(We,{className:"text-muted-foreground text-xs italic",children:An(le,z.type)},G);if(re)return e.jsx(We,{className:"p-1",children:e.jsx(Ge,{ref:I,type:z.type==="text"?"text":"number",step:z.type==="percent"?"0.1":z.type==="currency"?"0.01":"1",defaultValue:le??"",onChange:Ne=>A(T,G,Ne.target.value,z.type),onBlur:ye,onKeyDown:Re,className:"h-7 text-xs rounded-lg"})},G);const W=Q!==void 0;return e.jsx(We,{className:`cursor-pointer hover:bg-accent/50 transition-colors text-xs ${W?"bg-amber-50 dark:bg-amber-900/20 font-medium":""}`,onClick:()=>C({rowId:T,fieldKey:G}),children:An(le,z.type)},G)},pe=(T,G,me)=>se!==T?null:e.jsxs(Za,{className:"bg-primary/5 border-b-2 border-primary/20",children:[e.jsx(We,{className:"p-1",children:e.jsx(Ge,{placeholder:"Jun/25",value:L.mes||"",onChange:z=>oe("mes",z.target.value,"text"),className:"h-7 text-xs rounded-lg w-20",autoFocus:!0})}),G.map(z=>z.computed?e.jsx(We,{className:"text-xs text-muted-foreground italic",children:"—"},z.key):e.jsx(We,{className:"p-1",children:e.jsx(Ge,{type:z.type==="text"?"text":"number",step:z.type==="percent"?"0.1":z.type==="currency"?"0.01":"1",placeholder:z.label,value:L[z.key]??"",onChange:re=>oe(z.key,re.target.value,z.type),className:"h-7 text-xs rounded-lg"})},z.key)),e.jsx(We,{}),e.jsxs(We,{className:"flex items-center gap-1",children:[e.jsx(de,{variant:"ghost",size:"icon",className:"h-7 w-7 text-primary",disabled:B,onClick:()=>ee(T,me),children:B?e.jsx(Le,{className:"h-3 w-3 animate-spin"}):e.jsx(pn,{className:"h-3 w-3"})}),e.jsx(de,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground",onClick:he,children:e.jsx(wt,{className:"h-3 w-3"})})]})]});return e.jsxs(Ga,{children:[e.jsx(bt,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(cs,{className:"flex items-center gap-2",children:[e.jsx(Ma,{className:"h-5 w-5"}),"Banco de Dados por Slide"]}),e.jsx(ls,{children:"Dados sincronizados e manuais organizados por tipo de slide. Clique em um valor para editar."})]}),e.jsxs(de,{variant:"outline",onClick:V,className:"gap-2",children:[e.jsx(Ze,{className:"h-4 w-4"}),"Atualizar"]})]})}),e.jsxs(is,{children:[o?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(Le,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):e.jsxs("div",{className:"space-y-3",children:[te.map(([T,G])=>{const me=be[T]||[],z=me.length,re=f[T],Q=G.fields.filter(W=>W.key!=="mes"),le=tc(G);return e.jsx(ai,{open:re,onOpenChange:()=>ue(T),children:e.jsxs(Ga,{className:"border",children:[e.jsx(ti,{asChild:!0,children:e.jsxs("div",{className:"flex items-center justify-between p-3 cursor-pointer hover:bg-accent/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[re?e.jsx(zn,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Cs,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"text-base",children:G.icon}),e.jsx(ia,{className:G.color,children:G.label}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[z," registro",z!==1?"s":""]}),G.syncSource&&e.jsx(ia,{variant:"outline",className:"text-[10px]",children:G.syncSource})]}),le&&e.jsxs(de,{variant:"outline",size:"sm",className:"h-7 text-xs gap-1",onClick:W=>{W.stopPropagation(),_e(T)},children:[e.jsx(ot,{className:"h-3 w-3"}),"Novo Mês"]})]})}),e.jsx(si,{children:e.jsx("div",{className:"border-t",children:z===0&&se!==T?e.jsxs("div",{className:"p-4 text-center text-muted-foreground text-sm",children:["Nenhum dado."," ",le?e.jsx(de,{variant:"link",className:"text-sm p-0 h-auto",onClick:()=>_e(T),children:"Adicionar primeiro mês"}):"Use o editor de slides para sincronizar."]}):e.jsxs(On,{children:[e.jsx(Ln,{children:e.jsxs(Za,{children:[e.jsx(wa,{className:"w-[80px] text-xs",children:"Mês"}),Q.map(W=>e.jsx(wa,{className:"text-xs",children:W.label},W.key)),e.jsx(wa,{className:"w-[100px] text-xs",children:"Sync"}),e.jsx(wa,{className:"w-[80px] text-xs",children:"Ações"})]})}),e.jsxs(Vn,{children:[pe(T,Q,G),me.map(W=>{const ge=!!X[W.id],Ne={...W.data,...X[W.id]||{}};return W.slide_type==="mrr_evolution"&&(Ne.mrr_total=ts(Ne)),e.jsxs(Za,{children:[e.jsx(We,{className:"font-medium text-xs",children:W.mes}),Q.map(Ee=>ne(W.id,Ee.key,Ne[Ee.key],Ee)),e.jsx(We,{className:"text-[10px] text-muted-foreground",children:W.last_sync_at?ha(new Date(W.last_sync_at),"dd/MM/yy HH:mm",{locale:Ba}):"-"}),e.jsxs(We,{className:"flex items-center gap-1",children:[ge&&e.jsx(de,{variant:"ghost",size:"icon",className:"h-7 w-7 text-primary",disabled:R===W.id,onClick:()=>fe(W),children:R===W.id?e.jsx(Le,{className:"h-3 w-3 animate-spin"}):e.jsx(pn,{className:"h-3 w-3"})}),e.jsx(de,{variant:"ghost",size:"icon",onClick:()=>_({id:W.id}),className:"h-7 w-7 text-destructive",children:e.jsx(it,{className:"h-3 w-3"})})]})]},W.id)})]})]})})})]})},T)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'Clique em qualquer valor para editar inline. Campos calculados (itálico) não são editáveis. Use "+ Novo Mês" para adicionar registros manuais.'})]}),e.jsx(ys,{open:!!b,onOpenChange:()=>_(null),children:e.jsxs(ks,{children:[e.jsxs(Ss,{children:[e.jsx(js,{children:"Excluir registro?"}),e.jsx(Ns,{children:"Esta ação não pode ser desfeita. O registro 
2será permanentemente removido."})]}),e.jsxs(ws,{children:[e.jsx(Ms,{children:"Cancelar"}),e.jsx(In,{onClick:K,className:"bg-destructive text-destructive-foreground",children:"Excluir"})]})]})})]})]})}const kt=a=>Number((a==null?void 0:a.mrr_tron_pr)??(a==null?void 0:a.mrr_tron)??0)||0,ss=a=>{const n=(Number(a==null?void 0:a.mrr_pontua)||0)+(Number(a==null?void 0:a.mrr_pontua_pr)||0)+kt(a);return n>0?n:Number(a==null?void 0:a.mrr_total)||0};function Yc(){var cn;const a=l.useRef(null),[n,o]=l.useState("list"),[h,b]=l.useState(!1),[_,f]=l.useState(!1),[p,y]=l.useState(null),[C,X]=l.useState(null),[v,R]=l.useState([]),[u,I]=l.useState(0),[se,q]=l.useState([]),[L,E]=l.useState(St),[B,g]=l.useState([]),[V,K]=l.useState(_n),[A,ye]=l.useState([]),[Re,fe]=l.useState(!1),[_e,he]=l.useState(!1),[oe,ee]=l.useState(!1),[ue,be]=l.useState(null),[te,ne]=l.useState(null),[pe,T]=l.useState(null),[G,me]=l.useState(null),[z,re]=l.useState(null),[Q,le]=l.useState(null),[W,ge]=l.useState(null),[Ne,Ee]=l.useState(null),[Je,Qe]=l.useState(null),[Fe,Ke]=l.useState(null),[ca,da]=l.useState(null),[ua,$e]=l.useState(null),[fa,Ja]=l.useState(null),[la,Ea]=l.useState(null),[_a,pr]=l.useState(null),[ga,va]=l.useState(null),[Es,Dt]=l.useState(null),[zs,At]=l.useState(null),[Fs,Is]=l.useState(null),[Os,hr]=l.useState(null),[Ka,Tt]=l.useState(null),[ra,ba]=l.useState(null),[Et,ct]=l.useState(null),[ta,lt]=l.useState(null),[fr,gr]=l.useState(""),[xr,Ls]=l.useState(!1),[_r,Vs]=l.useState(!1),[vr,$s]=l.useState(!1),[br,qs]=l.useState(!1),[yr,Hs]=l.useState(!1),[za,Gs]=l.useState(null),[Bs,Us]=l.useState(null),[kr,we]=l.useState(null),[zt,Js]=l.useState(!1),{fetchSlideDataFromBank:Ye,fetchAllSlideDataByType:dt,saveToSlideDataBank:Be}=Ji(),{activeSyncs:Sr,startSync:sa,isSyncing:Oe}=Ki(),Ft=Ho(),[jr,Ks]=l.useState(!1),[Ys,Qs]=l.useState(!1),[ya,ut]=l.useState([]),[Nr,mt]=l.useState(!1),[wr,It]=l.useState([]),[Ws,Ot]=l.useState(null),[Mr,Lt]=l.useState(""),[rc,Vt]=l.useState(""),Te=()=>{if(!(C!=null&&C.month_reference)){const i=new Date,P=i.getFullYear(),M=i.getMonth()+1;return{mes:`${["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"][M-1]}/${String(P).slice(-2)}`,mesReferencia:`${P}-${String(M).padStart(2,"0")}`}}const[t,d]=C.month_reference.split("-").map(Number);return{mes:`${["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"][d-1]}/${String(t).slice(-2)}`,mesReferencia:C.month_reference}},$t=l.useCallback(async t=>(await dt("marketing_aquisicao")).filter(s=>{var i;return((i=s.data)==null?void 0:i.taxaConversaoPipeline)!=null&&s.mes_referencia<=t}).sort((s,i)=>s.mes_referencia.localeCompare(i.mes_referencia)).slice(-3).map(s=>({mes:s.mes,taxa:Number(s.data.taxaConversaoPipeline)||0})),[dt]),Cr=(t,d)=>{if(Oe("nmr_channel_v2"))return;const s=(async()=>{var ae,c;const{data:i,error:P}=await J.functions.invoke("fetch-nmr-hubspot",{body:{year:t,month:d}});if(P)throw P;if(!(i!=null&&i.success))throw new Error((i==null?void 0:i.error)||"Erro ao buscar dados");const M=`${t}-${String(d).padStart(2,"0")}`;let k=0;try{const{data:r}=await J.functions.invoke("stripe-checkout-report",{body:{action:"report"}}),D=(((ae=r==null?void 0:r.result)==null?void 0:ae.byMonth)||[]).find(j=>j.month===M);k=D?(D.totalAmount||0)/100:0}catch(r){console.warn("Falha ao sincronizar Checkout do BI para NMR:",r)}const x=(i.data.vendasNovas||0)+k,S={...i.data,vendasNovas:x,checkoutManualVendasPontua:k};console.log("[fetchNMRData] HubSpot vendasNovas:",i.data.vendasNovas,"| Checkout BI:",k,"| Final:",x),be(S),ne(r=>({vendasNovas:x,migracaoTron:i.data.migracaoTron||0,vendasCanal:i.data.vendasCanal||0,detalhesCanal:i.data.detalhesCanal||{},checkoutManualVendasPontua:k,metas:(r==null?void 0:r.metas)??null})),we(new Date().toISOString());const{mes:H,mesReferencia:w}=Te(),m=((c=v[u])==null?void 0:c.slide_type)==="nmr_channel_v2"?"nmr_channel_v2":"nmr_channel";if(await Be(m,H,w,{vendasNovas:x,migracaoTron:i.data.migracaoTron,vendasCanal:i.data.vendasCanal,detalhesCanal:i.data.detalhesCanal||{},checkoutManualVendasPontua:k,total:x+i.data.migracaoTron+i.data.vendasCanal}),v[u]){const r=v[u];await J.from("status_report_slides").update({config:{...r.config,nmrData:S,lastSyncAt:new Date().toISOString()}}).eq("id",r.id),R(N=>N.map(D=>D.id===r.id?{...D,config:{...D.config,nmrData:S,lastSyncAt:new Date().toISOString()}}:D))}return{...i,data:S}})();sa({id:`nmr-${Date.now()}`,label:"MRR por Canal",source:"HubSpot",slideType:"nmr_channel_v2",promise:s})},Rr=t=>{if(Oe("contracts_by_team"))return;const d=(async()=>{var S,H;const{data:s,error:i}=await J.functions.invoke("fetch-contracts-by-team",{body:{months:6,endDate:t}});if(i)throw i;if(!(s!=null&&s.success))throw new Error((s==null?void 0:s.error)||"Erro ao buscar dados");try{const{data:w}=await J.functions.invoke("stripe-checkout-report",{body:{action:"report"}}),U=((S=w==null?void 0:w.result)==null?void 0:S.byMonth)||[],m=new Map(U.map(O=>[O.month,O.totalSessions||0])),ae=t?new Date(t+"-01"):new Date,c=s.data,r=c.length,N=`${ae.getFullYear()}
2-${String(ae.getMonth()+1).padStart(2,"0")}`,D=(O,$)=>{if(O!=null&&O.mesReferencia)return O.mesReferencia;const xe=r-1-$,Z=new Date(ae);return Z.setMonth(Z.getMonth()-xe),`${Z.getFullYear()}-${String(Z.getMonth()+1).padStart(2,"0")}`};c.forEach((O,$)=>{const xe=m.get(D(O,$))||0,Z={...O.canaisDeVenda||{}};xe>0?Z.Checkout=xe:delete Z.Checkout,O.canaisDeVenda=Z});const j=c.find((O,$)=>D(O,$)===N)||c[r-1];if(j){const O=Object.values(j.canaisDeVenda||{}).reduce((Z,ie)=>Z+(Number(ie)||0),0),$=(j.hunters||0)+(j.farmers||0)+O,xe={};for(const[Z,ie]of Object.entries(j.canaisDeVenda||{}))xe[Z]=$>0?Math.round(ie/$*100):0;s.summary={...s.summary,hunters:j.hunters,farmers:j.farmers,total:$,huntersPercent:$>0?Math.round(j.hunters/$*100):0,farmersPercent:$>0?Math.round(j.farmers/$*100):0,canaisDeVenda:j.canaisDeVenda||{},canaisPercent:xe,totalCanais:O}}}catch(w){console.warn("Falha ao sincronizar Checkout do BI para Contratos:",w),Y.warning("Não foi possível atualizar o canal Checkout — os números do Checkout podem estar desatualizados.")}const{mes:P,mesReferencia:M}=Te(),{data:k}=await J.from("slide_data_bank").select("data").eq("slide_type","desempenho_vendas").eq("mes_referencia",M).maybeSingle(),x=Number((H=k==null?void 0:k.data)==null?void 0:H.contratosNovos)||0;if(x>0&&Array.isArray(s.data)&&s.data.length>0){const w=s.data.find(ae=>ae.mesReferencia===M)||s.data[s.data.length-1];let U=0;for(const ae of Object.values(w.canaisDeVenda||{}))U+=Number(ae)||0;const m=Math.max(0,x-(Number(w.farmers)||0)-U);w.hunters=m,s.summary={...s.summary,hunters:m,farmers:Number(w.farmers)||0,total:x,totalCanais:U,huntersPercent:Math.round(m/x*100),farmersPercent:Math.round((Number(w.farmers)||0)/x*100),canaisDeVenda:w.canaisDeVenda||{},canaisPercent:Object.fromEntries(Object.entries(w.canaisDeVenda||{}).map(([ae,c])=>[ae,Math.round((Number(c)||0)/x*100)]))}}if(T(s.data),me(s.summary),await Be("contracts_by_team",P,M,{hunters:s.summary.hunters,farmers:s.summary.farmers,total:s.summary.total,huntersPercent:s.summary.huntersPercent,farmersPercent:s.summary.farmersPercent,canaisDeVenda:s.summary.canaisDeVenda||{},canaisPercent:s.summary.canaisPercent||{},totalCanais:s.summary.totalCanais||0}),we(new Date().toISOString()),v[u]){const w=v[u];await J.from("status_report_slides").update({config:{...w.config,contractsData:s.data,contractsSummary:s.summary,lastSyncAt:new Date().toISOString()}}).eq("id",w.id),R(U=>U.map(m=>m.id===w.id?{...m,config:{...m.config,contractsData:s.data,contractsSummary:s.summary,lastSyncAt:new Date().toISOString()}}:m))}return s})();sa({id:`contracts-${Date.now()}`,label:"Contratos por Time",source:"HubSpot",slideType:"contracts_by_team",promise:d})},qt=(t=[])=>({deals:t.reduce((d,s)=>d+(s.deals||0),0),mrr:t.reduce((d,s)=>d+(s.mrr||0),0)}),Pr=t=>{var d;return{mes:((d=t.mesDestaque)==null?void 0:d.slice(0,3))||Te().mes.split("/")[0],ticketPontua:t.ticketPontua||0,ticketCanais:t.ticketCanais||0,ticketGeral:t.ticketGeral||0,qtdPontua:t.qtdPontua||0,qtdCanais:t.qtdCanais||0,qtdGeral:t.qtdGeral??(t.qtdPontua||0)+(t.qtdCanais||0),totalMRRPontua:(t.ticketPontua||0)*(t.qtdPontua||0),totalMRRCanais:(t.ticketCanais||0)*(t.qtdCanais||0),totalMRRGeral:(t.ticketGeral||0)*(t.qtdGeral??(t.qtdPontua||0)+(t.qtdCanais||0))}},Dr=async(t,d,s)=>{const{data:i}=await J.from("slide_data_bank").select("data").eq("slide_type","desempenho_vendas").eq("mes_referencia",s).maybeSingle(),P=i==null?void 0:i.data,M=Array.isArray(P==null?void 0:P.porPipeline)?P.porPipeline:[];if(!P||M.length===0)return{data:t,summary:d};const k=M.find(D=>D.source==="vendas_novas"),x=M.filter(D=>D.source!=="vendas_novas"),S=Number(k==null?void 0:k.deals)||0,H=Number(k==null?void 0:k.mrr)||0,w=x.reduce((D,j)=>D+(Number(j.deals)||0),0),U=x.reduce((D,j)=>D+(Number(j.mrr)||0),0),m=S+w,ae=H+U,c=t.length-1;if(c<0||m===0)return{data:t,summary:d};const r={...t[c],qtdPontua:S,qtdCanais:w,qtdGeral:m,totalMRRPontua:H,totalMRRCanais:U,totalMRRGeral:ae,ticketPontua:S>0?Math.round(H/S):0,ticketCanais:w>0?Math.round(U/w):0,ticketGeral:Math.round(ae/m)};return{data:t.map((D,j)=>j===c?r:D),summary:{...d,ticketPontua:r.ticketPontua,ticketCanais:r.ticketCanais,ticketGeral:r.ticketGeral,qtdPontua:S,qtdCanais:w,qtdGeral:m}}},Ar=(t,d)=>({mes:d,ticketPontua:Number(t.ticketPontua)||0,ticketCanais:Number(t.ticketCanais)||0,ticketGeral:Number(t.ticketGeral)||0,totalMRRPontua:Number(t.totalMRRPontua)||0,totalMRRCanais:Number(t.totalMRRCanais)||0,totalMRRGeral:Number(t.totalMRRGeral)||0,qtdPontua:Number(t.qtdPontua)||0,qtdCanais:Number(t.qtdCanais)||0,qtdGeral:Number(t.qtdGeral)||(Number(t.qtdPontua)||0)+(Number(t.qtdCanais)||0)}),Xs=(t,d,s,i=[])=>{const P=qt(i),M=qt(s),k=t.map(ie=>({...ie})),x=k.length-1;if(x<0)return{data:k,summary:{...d,checkoutManualEntries:s}};const S=k[x],H=S.qtdPontua??d.qtdPontua??0,w=S.totalMRRPontua&&S.totalMRRPontua>0?S.totalMRRPontua:(S.ticketPontua||0)*H,U=Math.max(0,(S.qtdCanais??d.qtdCanais??0)-P.deal
2s),m=S.totalMRRCanais&&S.totalMRRCanais>0?S.totalMRRCanais:(S.ticketCanais||0)*(S.qtdCanais??d.qtdCanais??0),ae=Math.max(0,m-P.mrr),c=U+M.deals,r=ae+M.mrr,N=w+r,D=H+c;k[x]={...S,qtdPontua:H,qtdCanais:c,qtdGeral:D,totalMRRPontua:w,totalMRRCanais:r,totalMRRGeral:N,ticketCanais:c>0?Math.round(r/c):0,ticketGeral:D>0?Math.round(N/D):0};const j=k[x],O=k.length>1?k[k.length-2]:null,$=O!=null&&O.ticketGeral?(j.ticketGeral-O.ticketGeral)/O.ticketGeral*100:0,xe=O!=null&&O.ticketGeral?`${$>=0?"+":""}${$.toFixed(0)}%`:"—",Z=O?$>10?`Ticket médio cresceu ${xe} vs mês anterior`:$<-10?`Atenção: Ticket médio caiu ${Math.abs($).toFixed(0)}% vs mês anterior`:`Ticket médio estável em R$ ${j.ticketGeral}`:`Ticket médio geral de R$ ${j.ticketGeral}`;return{data:k,summary:{...d,ticketGeral:j.ticketGeral,ticketPontua:j.ticketPontua,ticketCanais:j.ticketCanais,qtdPontua:j.qtdPontua||0,qtdCanais:j.qtdCanais||0,qtdGeral:j.qtdGeral??(j.qtdPontua||0)+(j.qtdCanais||0),variacaoMoM:$,variacaoTexto:xe,insight:Z,checkoutManualEntries:s}}},Tr=t=>{if(Oe("ticket_medio"))return;const d=(async()=>{var H,w,U,m,ae;const{data:s,error:i}=await J.functions.invoke("fetch-ticket-medio",{body:{months:6,endDate:t}});if(i)throw i;if(!(s!=null&&s.success))throw new Error((s==null?void 0:s.error)||"Erro ao buscar dados");const P=(Q==null?void 0:Q.checkoutManualEntries)||[],M=P.length>0?Xs(s.data,s.summary,P,[]):{data:s.data,summary:s.summary},{mes:k,mesReferencia:x}=Te(),S=await Dr(M.data,M.summary,x);if(re(S.data),le(S.summary),await Be("ticket_medio",k,x,{ticketPontua:S.summary.ticketPontua,ticketCanais:S.summary.ticketCanais,ticketGeral:S.summary.ticketGeral,qtdPontua:S.summary.qtdPontua,qtdCanais:S.summary.qtdCanais,qtdGeral:S.summary.qtdGeral??S.summary.qtdPontua+S.summary.qtdCanais,totalMRRPontua:((H=S.data[S.data.length-1])==null?void 0:H.totalMRRPontua)||0,totalMRRCanais:((w=S.data[S.data.length-1])==null?void 0:w.totalMRRCanais)||0,totalMRRGeral:((U=S.data[S.data.length-1])==null?void 0:U.totalMRRGeral)??(((m=S.data[S.data.length-1])==null?void 0:m.totalMRRPontua)||0)+(((ae=S.data[S.data.length-1])==null?void 0:ae.totalMRRCanais)||0),variacaoMoM:S.summary.variacaoMoM,variacaoTexto:S.summary.variacaoTexto,mesDestaque:S.summary.mesDestaque,insight:S.summary.insight,checkoutManualEntries:P}),we(new Date().toISOString()),v[u]){const c=v[u];await J.from("status_report_slides").update({config:{...c.config,ticketMedioData:S.data,ticketMedioSummary:S.summary,lastSyncAt:new Date().toISOString()}}).eq("id",c.id),R(r=>r.map(N=>N.id===c.id?{...N,config:{...N.config,ticketMedioData:S.data,ticketMedioSummary:S.summary,lastSyncAt:new Date().toISOString()}}:N))}return s})();sa({id:`ticket-${Date.now()}`,label:"Ticket Médio",source:"HubSpot",slideType:"ticket_medio",promise:d})},Er=(t=2025)=>{if(Oe("migracao_status"))return;const d=(async()=>{const{data:s,error:i}=await J.functions.invoke("fetch-migracao-status",{body:{ano:t}});if(i)throw i;if(!(s!=null&&s.success))throw new Error((s==null?void 0:s.error)||"Erro ao buscar dados");ge(s.data);const{mes:P,mesReferencia:M}=Te();if(await Be("migracao_status",P,M,{totalMigrados:s.data.totalMigrados,mrrMigrado:s.data.mrrMigrado,deltaMRR:s.data.deltaMRR}),we(new Date().toISOString()),v[u]){const k=v[u];await J.from("status_report_slides").update({config:{...k.config,migracaoData:s.data,lastSyncAt:new Date().toISOString()}}).eq("id",k.id),R(x=>x.map(S=>S.id===k.id?{...S,config:{...S.config,migracaoData:s.data,lastSyncAt:new Date().toISOString()}}:S))}return s})();sa({id:`migracao-${Date.now()}`,label:"Migração Status",source:"HubSpot",slideType:"migracao_status",promise:d})},zr=()=>{if(!(C!=null&&C.month_reference))return new Date;const[t,d]=C.month_reference.split("-").map(Number),s=new Date(Date.UTC(t,d,0,23,59,59,999));return console.log("[getMonthEndDate] month_reference:",C.month_reference,"-> lastDay:",s.toISOString()),s},Fr=t=>{if(Oe("pipeline_funnel"))return;const d=(async()=>{var w;const{mesReferencia:s,mes:i}=Te(),P=zr(),{data:M,error:k}=await J.functions.invoke("fetch-pipeline-funnel",{body:{dataReferencia:P.toISOString(),origem:t}});if(k)throw k;if(!(M!=null&&M.success))throw new Error((M==null?void 0:M.error)||"Erro ao buscar dados");const x=M.data,S={fechados:{deals:x.fechados.deals,mrr:x.fechados.mrr,breakdown:{hunters:x.fechados.breakdown.hunters,huntersPercent:x.fechados.breakdown.huntersPercent,farmers:x.fechados.breakdown.farmers,farmersPercent:x.fechados.breakdown.farmersPercent,outros:x.fechados.breakdown.outros,outrosPercent:x.fechados.breakdown.outrosPercent}},perdidos:{deals:x.perdidos.deals},totalOportunidades:x.totalOportunidades,taxaConversao:x.taxaConversao,ticketMedio:x.ticketMedio,pipelineAtivo:((w=x.pipelineAtivo)==null?void 0:w.map((U,m)=>({id:U.id,label:U.nome,deals:U.deals,valor:0,cor:U.nome==="Stand by"?"dark":m<3?"light":"primary",widthPercent:100-m*12}
2)))||[],dataReferencia:x.dataReferencia,lastSyncAt:x.lastSyncAt};da(S);const H={closedWon:x.fechados.deals,closedLost:x.perdidos.deals,totalOportunidades:x.totalOportunidades,mrrFechado:x.fechados.mrr,ticketMedio:x.ticketMedio,conversao:x.taxaConversao,hunters:{deals:x.fechados.breakdown.hunters,percent:x.fechados.breakdown.huntersPercent},farmers:{deals:x.fechados.breakdown.farmers,percent:x.fechados.breakdown.farmersPercent},outros:{deals:x.fechados.breakdown.outros,percent:x.fechados.breakdown.outrosPercent,ownerIds:x.fechados.breakdown.outrosOwnerIds||[]},pipelineAtivo:{total:x.pipelineAtivoTotal||0,estagios:x.pipelineAtivo||[],taxasConversao:x.taxasConversao||[]},funnel:x.funnel,standby:x.standby,mesReferencia:s,lastSyncAt:x.lastSyncAt,valorUnicoTotal:x.valorUnicoTotal||0,valorUnicoDeals:x.valorUnicoDeals||0,ticketTreinamento:x.ticketTreinamento||0,valorTotalVendido:x.valorTotalVendido||0,arrAnual:x.arrAnual||0,mesAnterior:x.mesAnterior||null,variacoes:x.variacoes||null};if(await Be("pipeline_funnel",i,s,{...H,fechados:S.fechados,perdidos:S.perdidos,taxaConversao:S.taxaConversao}),we(new Date().toISOString()),v[u]){const U=v[u];await J.from("status_report_slides").update({config:{...U.config,pipelineFunnelData:S,pipelineVendasData:H,lastSyncAt:new Date().toISOString()}}).eq("id",U.id),R(m=>m.map(ae=>ae.id===U.id?{...ae,config:{...ae.config,pipelineFunnelData:S,pipelineVendasData:H,lastSyncAt:new Date().toISOString()}}:ae))}return M})();sa({id:`pipeline-${Date.now()}`,label:"Pipeline de Vendas (Snapshot)",source:"HubSpot",slideType:"pipeline_funnel",promise:d})},Zs=t=>{const d={Jan:"01",Fev:"02",Mar:"03",Abr:"04",Mai:"05",Jun:"06",Jul:"07",Ago:"08",Set:"09",Out:"10",Nov:"11",Dez:"12"},s=new Date,i=s.getMonth()+1;return`${parseInt(d[t]||"01")>i?s.getFullYear()-1:s.getFullYear()}-${d[t]||"01"}`},Ir=(t={})=>{if(Oe("kpis_saas_ltv"))return;const d=(async()=>{const{mesReferencia:s}=Te(),{data:i,error:P}=await J.functions.invoke("fetch-kpis-saas-stripe",{body:{meses:6,cacPorMes:t,mesReferencia:s}});if(P)throw P;if(!(i!=null&&i.success))throw new Error((i==null?void 0:i.error)||"Erro ao buscar dados");$e(i.data),we(new Date().toISOString());for(const M of i.data.historico){const k=Zs(M.mes),x=k.split("-")[0],S=`${M.mes}/${x.slice(-2)}`,{data:H}=await Ye("kpis_saas_ltv",k),w=(H==null?void 0:H.cac)||M.cac||0,U=w>0?M.ltv/w:M.ltvCac;await Be("kpis_saas_ltv",S,k,{churnRate:M.churnRate,lt:M.lt,ticketMedio:M.ticketMedio,ltv:M.ltv,cac:w,ltvCac:U,mrrTotal:M.mrrTotal||0,assinaturasAtivas:M.assinaturasAtivas||0}),M.mes!==S&&await J.from("slide_data_bank").delete().eq("slide_type","kpis_saas_ltv").eq("mes",M.mes)}if(await Ya("kpis_saas_ltv"),v[u]){const M=v[u];await J.from("status_report_slides").update({config:{...M.config,kpisSaaSData:i.data,lastSyncAt:new Date().toISOString()}}).eq("id",M.id),R(k=>k.map(x=>x.id===M.id?{...x,config:{...x.config,kpisSaaSData:i.data,lastSyncAt:new Date().toISOString()}}:x))}return i})();sa({id:`kpis-saas-${Date.now()}`,label:"KPIs SaaS LTV",source:"Stripe",slideType:"kpis_saas_ltv",promise:d})},Or=async(t={},d=[])=>{if(Oe("kpis_cac_payback"))return;const s=(async()=>{const{data:i}=await J.from("slide_data_bank").select("mes, data").eq("slide_type","kpis_saas_ltv").order("mes_referencia",{ascending:!0}),P={};i==null||i.forEach(S=>{var w,U;const H=((w=S.mes)==null?void 0:w.split("/")[0])||S.mes||"";P[H]=((U=S.data)==null?void 0:U.ticketMedio)||0}),console.log("[CAC Payback] Ticket Médio from LTV:",P);const{mesReferencia:M}=Te(),{data:k,error:x}=await J.functions.invoke("fetch-cac-payback-stripe",{body:{meses:6,despesasPorMes:t,ticketMedioPorMes:P,mesReferencia:M}});if(x)throw x;if(!(k!=null&&k.success))throw new Error((k==null?void 0:k.error)||"Erro ao buscar dados");Ja(k.data),we(new Date().toISOString());for(const S of k.data.historico){const H=Zs(S.mes),w=H.split("-")[0],U=`${S.mes}/${w.slice(-2)}`,{data:m}=await Ye("kpis_cac_payback",H),ae=["despesasMarketing","despesasVendas"],c={};ae.forEach(r=>{d.includes(r)&&(m==null?void 0:m[r])!==void 0?c[r]=m[r]:c[r]=(m==null?void 0:m[r])||S[r]||0}),await Be("kpis_cac_payback",U,H,{...c,novosClientes:S.novosClientes,ticketMedio:S.ticketMedio,cac:S.
2cac,cacPayback:S.cacPayback}),S.mes!==U&&await J.from("slide_data_bank").delete().eq("slide_type","kpis_cac_payback").eq("mes",S.mes)}if(await Ya("kpis_cac_payback"),v[u]){const S=v[u];await J.from("status_report_slides").update({config:{...S.config,cacPaybackData:k.data,lastSyncAt:new Date().toISOString()}}).eq("id",S.id),R(H=>H.map(w=>w.id===S.id?{...w,config:{...w.config,cacPaybackData:k.data,lastSyncAt:new Date().toISOString()}}:w))}return k})();sa({id:`cac-payback-${Date.now()}`,label:"CAC Payback",source:"Stripe",slideType:"kpis_cac_payback",promise:s})},Lr=(t=4)=>{if(Oe("concentracao_faturamento"))return;const{mesReferencia:d}=Te(),s=Qi(d,t),i=Wi(s),P=(async()=>{var w,U,m,ae,c,r;const{data:M,error:k}=await J.functions.invoke("fetch-concentracao-stripe",{body:{meses:t,mesReferencia:d}});if(k)throw k;if(!(M!=null&&M.success))throw new Error((M==null?void 0:M.error)||"Erro ao buscar dados");let x=M.data;if(i.length>0){const{data:N,error:D}=await J.functions.invoke("fetch-concentracao-financeiro",{body:{mesesReferencia:i,topN:((w=M.data.concentracaoTop)==null?void 0:w.topN)||3,faixasCustom:M.data.faixas,incluirStripe:!1}});if(D||!(N!=null&&N.success))throw new Error((N==null?void 0:N.error)||(D==null?void 0:D.message)||"Erro ao buscar dados do Maestro Financeiro");x=Zi(M.data,s,((U=N.data)==null?void 0:U.meses)||[])}Ea(x),we(new Date().toISOString());const{mes:S,mesReferencia:H}=Te();if(await Be("concentracao_faturamento",S,H,{topNPercentual:((m=x.concentracaoTop)==null?void 0:m.percentualMRR)||0,totalClientes:((ae=x.mesAtual)==null?void 0:ae.totalClientes)||0,totalMRR:((c=x.mesAtual)==null?void 0:c.totalMRR)||0,topN:((r=x.concentracaoTop)==null?void 0:r.topN)||3}),v[u]){const N=v[u];await J.from("status_report_slides").update({config:{...N.config,concentracaoData:x,lastSyncAt:new Date().toISOString()}}).eq("id",N.id),R(D=>D.map(j=>j.id===N.id?{...j,config:{...j.config,concentracaoData:x,lastSyncAt:new Date().toISOString()}}:j))}return M})();sa({id:`concentracao-${Date.now()}`,label:"Concentração Faturamento",source:i.length>0?"Maestro Financeiro":"Stripe",slideType:"concentracao_faturamento",promise:P})},Vr=(t=[])=>{if(Oe("marketing_aquisicao"))return;const{mes:d,mesReferencia:s}=Te(),[i,P]=s.split("-").map(Number),M=(async()=>{var ae;const{data:k,error:x}=await J.functions.invoke("fetch-marketing-hubspot",{body:{year:i,month:P}});if(x)throw x;if(!(k!=null&&k.success))throw new Error((k==null?void 0:k.error)||"Erro ao buscar dados");const S={funil:k.data.funil,conversoes:k.data.conversoes,metricas:k.data.metricas,canais:k.data.canais,cplQualificado:0,mesReferencia:d,totalVendas:k.data.totalVendas||0,totalReceita:k.data.totalReceita||0,conversaoGeral:k.data.conversaoGeral||0,leadsBrutos:k.data.leadsBrutos||0,vendasBrutas:k.data.vendasBrutas||0,excluidosImport:k.data.excluidosImport||0,excluidosPosVenda:k.data.excluidosPosVenda||0,lastSyncAt:new Date().toISOString()};let H=0;try{const{data:c}=await J.functions.invoke("desempenho-vendas",{body:{year:i,month:P}});H=(((ae=c==null?void 0:c.data)==null?void 0:ae.porPipeline)||[]).filter(N=>N.source==="vendas_novas").reduce((N,D)=>N+(D.deals||0),0),S.vendasPontua=H}catch(c){console.warn("[marketing] Failed to fetch vendasPontua",c)}try{const c=await dt("marketing_aquisicao"),r=k.data.metricas.fitScoreMedio||0,N=c.filter(j=>{var O;return((O=j.data)==null?void 0:O.fitScoreMedio)>0&&j.mes_referencia>="2026-01"&&j.mes_referencia<s}).map(j=>({mes:j.mes,mesReferencia:j.mes_referencia,fitScore:j.data.fitScoreMedio}));r>0&&N.push({mes:d,mesReferencia:s,fitScore:r}),N.length>0&&(S.fitScoreHistorico=N.sort((j,O)=>j.mesReferencia.localeCompare(O.mesReferencia)).map(({mes:j,fitScore:O})=>({mes:j,fitScore:O})));const D=await $t(s);D.length>0&&(S.taxaConversaoPipeline=D)}catch(c){console.warn("[marketing_aquisicao] Failed to rebuild fitScoreHistorico/taxaConversaoPipeline after HubSpot sync",c)}va(S);const{data:w}=await Ye("marketing_aquisicao",s),U=["visitantes","budgetGoogleAds","budgetMetaAds","budgetOutros","budgetTikTokAds","budgetGoogleAdsOrcado","budgetMetaAdsOrcado","budgetOutrosOrcado","budgetTikTokAdsOrcado"],m={};if(U.forEach(c=>{t.includes(c)&&(w==null?void 0:w[c])!==void 0?m[c]=w[c]:m[c]=(w==null?void 0:w[c])||0}),await Be("marketing_aquisicao",d,s,{leads:k.data.funil.leads,oportunidades:k.data.funil.oportunidades,fitScoreMedio:k.data.metricas.fitScoreMedio,temperaturaMedio:k.data.metricas.temperaturaMedio,percentualQualificados:k.data.metricas.percentualQualificados,canais:k.data.canais,distribuicaoFit:k.data.metricas.distribuicaoFit,totalVendas:k.data.totalVendas||0,totalReceita:k.data.totalReceita||0,conversaoGeral:k.data.conversaoGeral||0,vendasPontua:H,conversoes:k.data.conversoes||{visitanteToLead:0,leadToOpp:0},...m}),we(new Date().toISOString()),v[u]){const c=v[u];await J.from("status_report_slides").update({config:{...c.config,marketingData:S,lastSyncAt:new Date().toISOString()}}).eq("id",c.id),R(r=>r.map(N=>N.id===c.id?{...N,config:{...N.config,marketingData:S,lastSyncAt:new Date().toISOString()}}:N))}return k})();sa({id:`marketing-${Date.now()}`,label:"Marketing Aquisição",source:"HubSpot",slideType:"marketing_aquisicao",promise:M})},$r=()=>{if(Oe("cohort_retencao"))return;const t=(async()=>{const{data:d,error:s}
2=await J.functions.invoke("sync-cohort-stripe");if(s)throw s;if(!(d!=null&&d.success))throw new Error((d==null?void 0:d.error)||"Erro ao sincronizar cohort do Stripe");console.log("[Cohort] Sincronização completada:",d.message);const{mesReferencia:i}=Te(),[P,M]=i.split("-").map(Number);return await en(P,M),we(new Date().toISOString()),d})();sa({id:`cohort-${Date.now()}`,label:"Cohort Retenção",source:"Stripe",slideType:"cohort_retencao",promise:t})},en=async(t,d)=>{var s,i;try{const{mesReferencia:P}=Te(),[M,k]=P.split("-").map(Number),x=t||M,S=d||k;console.log("[Cohort] Loading data for reference:",x,S);const{data:H,error:w}=await J.from("cohort_safras").select("*").or(`ano.lt.${x},and(ano.eq.${x},mes.lte.${S})`).order("ano",{ascending:!1}).order("mes",{ascending:!1}).limit(12);if(w){console.error("[Cohort] Error loading from cohort_safras:",w);return}if(!H||H.length===0){console.log("[Cohort] No data in cohort_safras table"),Tt(null);return}const{data:U}=await J.from("cohort_config").select("*").limit(1).single(),m=(U==null?void 0:U.meta_m6)||85,ae=(U==null?void 0:U.meta_m12)||80,c=H.map(F=>({safra:F.safra_label,totalInicial:F.total_inicial||0,retencao:[F.m1,F.m2,F.m3,F.m4,F.m5,F.m6,F.m7,F.m8,F.m9,F.m10,F.m11,F.m12,F.m13,F.m14,F.m15,F.m16,F.m17,F.m18,F.m19,F.m20,F.m21,F.m22,F.m23,F.m24].filter(ve=>ve!==null)})),r=H.filter(F=>F.m6!==null).map(F=>F.m6),N=H.filter(F=>F.m12!==null).map(F=>F.m12),D=H.filter(F=>F.m18!==null).map(F=>F.m18),j=H.filter(F=>F.m24!==null).map(F=>F.m24),O=r.length>0?r.reduce((F,ve)=>F+ve,0)/r.length:0,$=N.length>0?N.reduce((F,ve)=>F+ve,0)/N.length:0,xe=D.length>0?D.reduce((F,ve)=>F+ve,0)/D.length:0,Z=j.length>0?j.reduce((F,ve)=>F+ve,0)/j.length:0,ie=H.filter(F=>F.m2!==null);let ce={safra:((s=c[0])==null?void 0:s.safra)||"N/A",retencaoM2:0},ke={safra:((i=c[0])==null?void 0:i.safra)||"N/A",retencaoM2:100};ie.forEach(F=>{F.m2>ce.retencaoM2&&(ce={safra:F.safra_label,retencaoM2:F.m2}),F.m2<ke.retencaoM2&&(ke={safra:F.safra_label,retencaoM2:F.m2})});const je=H.reduce((F,ve)=>{const Ue=ve.sincronizado_em;return Ue&&(!F||Ue>F)?Ue:F},null),Me=`${["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"][S-1]}/${String(x).slice(-2)}`,Pe={cohorts:c,mediaM6:O,mediaM12:$,mediaM18:xe,mediaM24:Z,melhorSafra:ce,piorSafra:ke,mesReferencia:Me,metaM6:m,metaM12:ae,lastSyncAt:je,insight:`Retenção M6: ${O.toFixed(0)}% média | Retenção M12: ${$.toFixed(0)}% média | Melhor: ${ce.safra} | Atenção: ${ke.safra}`};Tt(Pe),we(je),console.log("[Cohort] Loaded",c.length,"safras from cohort_safras table for",Me)}catch(P){console.error("[Cohort] Error in loadCohortDataFromBank:",P)}},qr=()=>{if(Oe("desempenho_vendas"))return;const{mesReferencia:t}=Te(),[d,s]=t.split("-"),i=parseInt(d,10),P=parseInt(s,10),M=(async()=>{var U,m;const{data:k,error:x}=await J.functions.invoke("desempenho-vendas",{body:{year:i,month:P}});if(x)throw x;if(!(k!=null&&k.success)||!(k!=null&&k.data))throw new Error("Erro ao buscar dados de desempenho");const S=k.data;ba(S),we(S.updatedAt||new Date().toISOString());const{mes:H,mesReferencia:w}=Te();await Be("desempenho_vendas",H,w,S);try{const{data:ae}=await J.functions.invoke("stripe-checkout-report",{body:{action:"report"}}),c=((U=ae==null?void 0:ae.result)==null?void 0:U.byMonth)||[];if(c.length>0){const r=new Map(c.map($=>[$.month,($.totalAmount||0)/100])),N=new Map(c.map($=>[$.month,$.totalSessions||0])),{data:D}=await J.from("slide_data_bank").select("id, mes_referencia, data").eq("slide_type","desempenho_vendas");for(const $ of D||[]){if(!r.has($.mes_referencia))continue;const xe=r.get($.mes_referencia)||0;Number(((m=$.data)==null?void 0:m.checkoutValor)||0)!==xe&&await J.from("slide_data_bank").update({data:{...$.data,checkoutValor:xe},updated_at:new Date().toISOString()}).eq("id",$.id)}const j=r.get(w)||0,O=N.get(w)||0;j>0&&(S.porPipeline=[...S.porPipeline||[],{pipeline:"Checkout",source:"checkout",deals:O,mrr:Math.round(j*100)/100,treinamento:0}],S.vendasNMR=Math.round(((S.vendasNMR||0)+j)*100)/100,S.contratosNovos=(S.contratosNovos||0)+O),Array.isArray(S.monthlyYoY)&&S.anoAtual&&S.anoAnterior&&(S.monthlyYoY=S.monthlyYoY.map($=>{const xe=String($.mes).padStart(2,"0"),Z=`${S.anoAtual}-${xe}`,ie=`${S.anoAnterior}-${xe}`,ce=r.get(Z)||0,ke=r.get(ie)||0;return{...$,mrrAtual:Math.round((($.mrrAtual||0)+ce)*100)/100,mrrAnterior:Math.round((($.mrrAnterior||0)+ke)*100)/100}}))}ba({...S}),await Be("desempenho_vendas",H,w,S)}catch(ae){console.warn("Falha ao sincronizar Checkout do BI:",ae)}if(v[u]){const ae=v[u];await J.from("status_report_slides").update({config:{...ae.config,desempenhoVendasData:S,lastSyncAt:new Date().toISOString()}}).eq("id",ae.id),R(c=>c.map(r=>r.id===ae.id?{...r,config:{...r.config,desempenhoVendasData:S,lastSyncAt:new Date().toISOString()}}:r))}return S})();sa({id:`desempenho-${Date.now()}
2`,label:"Desempenho Vendas",source:"HubSpot",slideType:"desempenho_vendas",promise:M})},Hr=(t=5)=>{if(Oe("desempenho_vendas_acumulado"))return;const{mesReferencia:d}=Te(),[s,i]=d.split("-"),P=parseInt(s,10),M=parseInt(i,10),k=(async()=>{const{data:x,error:S}=await J.functions.invoke("desempenho-vendas",{body:{year:P,month:M,monthsBack:t}});if(S)throw S;if(!(x!=null&&x.success)||!(x!=null&&x.data))throw new Error("Erro ao buscar dados acumulados");const H=x.data;ct(H),we(H.updatedAt||new Date().toISOString());const{mes:w,mesReferencia:U}=Te();if(await Be("desempenho_vendas_acumulado",w,U,H),v[u]){const m=v[u];await J.from("status_report_slides").update({config:{...m.config,desempenhoVendasData:H,monthsBack:t,lastSyncAt:new Date().toISOString()}}).eq("id",m.id),R(ae=>ae.map(c=>c.id===m.id?{...c,config:{...c.config,desempenhoVendasData:H,monthsBack:t,lastSyncAt:new Date().toISOString()}}:c))}return H})();sa({id:`desempenho-acum-${Date.now()}`,label:`Desempenho Vendas (${t}m)`,source:"HubSpot",slideType:"desempenho_vendas_acumulado",promise:k})},Gr=async t=>{if(!ra){Y.error("Sincronize os dados do HubSpot primeiro");return}const d={...ra},s=(d.porPipeline||[]).filter(w=>w.source!=="checkout"),i=t.reduce((w,U)=>w+U.deals,0),P=t.reduce((w,U)=>w+U.mrr,0),M=t.reduce((w,U)=>w+U.treinamento,0);(i>0||P>0)&&s.push({pipeline:"Checkout",source:"checkout",deals:i,mrr:P,treinamento:M}),d.porPipeline=s;const k=(d.consultores||[]).filter(w=>w.ownerId!=="checkout_manual");for(const w of t){const U=k.find(m=>m.nome.toLowerCase()===w.nome.toLowerCase());U?(U.deals+=w.deals,U.mrr+=w.mrr,U.treinamento+=w.treinamento,U.totalVendido=U.mrr+U.treinamento):k.push({nome:w.nome,ownerId:"checkout_manual",team:"Hunter",deals:w.deals,mrr:w.mrr,treinamento:w.treinamento,totalVendido:w.mrr+w.treinamento})}k.sort((w,U)=>U.mrr-w.mrr),d.consultores=k,d.vendasNMR=s.reduce((w,U)=>w+U.mrr,0),d.vendasTreinamento=s.reduce((w,U)=>w+U.treinamento,0),d.contratosNovos=s.reduce((w,U)=>w+U.deals,0),d.ticketMedioNMR=d.contratosNovos>0?d.vendasNMR/d.contratosNovos:0;const x=k.filter(w=>w.treinamento>0).length;d.ticketMedioTreinamento=x>0?d.vendasTreinamento/x:0,d.checkoutManualData=t,d.updatedAt=new Date().toISOString(),ba(d),we(d.updatedAt);const{mes:S,mesReferencia:H}=Te();await Be("desempenho_vendas",S,H,d),Y.success(`Checkout manual adicionado: ${t.length} consultor(es)`)},Br=async t=>{if(!ue||!te){Y.error("Sincronize os dados do HubSpot primeiro");return}const d=ue.checkoutManualVendasPontua||0,i=(ue.vendasNovas||0)-d+t,P={...ue,vendasNovas:i,checkoutManualVendasPontua:t};be(P),ne({...te,vendasNovas:i,checkoutManualVendasPontua:t});const{mes:M,mesReferencia:k}=Te();await Be("nmr_channel_v2",M,k,{vendasNovas:i,migracaoTron:ue.migracaoTron,vendasCanal:ue.vendasCanal,detalhesCanal:ue.detalhesCanal||{},checkoutManualVendasPontua:t,total:i+(ue.migracaoTron||0)+(ue.vendasCanal||0)});const x=v[u];x&&(await J.from("status_report_slides").update({config:{...x.config,nmrData:P}}).eq("id",x.id),R(S=>S.map(H=>H.id===x.id?{...H,config:{...H.config,nmrData:P}}:H))),Y.success(t>0?`Checkout R$ ${t.toLocaleString("pt-BR",{minimumFractionDigits:2})} somado em Vendas Pontua`:"Ajuste de checkout removido")},Ur=async t=>{if(!ta){Y.error("Carregue os dados do acumulado primeiro");return}const d=Number(ta.checkoutManualAcumulado)||0,i=(ta.vendasNovas||0)-d+t,P={...ta,vendasNovas:i,checkoutManualAcumulado:t};lt(P);const M=v[u];if(M){const k={...M.config,checkoutManualAcumulado:t};await J.from("status_report_slides").update({config:k}).eq("id",M.id),R(x=>x.map(S=>S.id===M.id?{...S,config:k}:S))}Y.success(t>0?`Checkout R$ ${t.toLocaleString("pt-BR",{minimumFractionDigits:2})} somado em Vendas Pontua (Acumulado)`:"Ajuste de checkout removido do acumulado")},Jr=async t=>{if(!pe||!G){Y.error("Sincronize os dados do HubSpot primeiro");return}const d="Checkout",s=t.reduce((r,N)=>r+(N.deals||0),0),i=pe.map(r=>({...r,canaisDeVenda:{...r.canaisDeVenda||{}}})),P=i.length>0?i.length-1:-1;if(P>=0){const r=i[P],N={...r.canaisDeVenda||{}};s>0?N[d]=s:delete N[d],i[P]={...r,canaisDeVenda:N}}const M={...G.canaisDeVenda||{}};s>0?M[d]=s:delete M[d];const k=Object.values(M).reduce((r,N)=>r+(N||0),0),x=G.hunters||0,S=G.farmers||0,H=x+S+k,w=r=>H>0?Math.round(r/H*100):0,U={};
2Object.entries(M).forEach(([r,N])=>{U[r]=w(N)});const m={...G,hunters:x,farmers:S,total:H,huntersPercent:w(x),farmersPercent:w(S),canaisDeVenda:M,canaisPercent:U,totalCanais:k,checkoutManualEntries:t};T(i),me(m);const{mes:ae,mesReferencia:c}=Te();if(await Be("contracts_by_team",ae,c,{hunters:x,farmers:S,total:H,huntersPercent:m.huntersPercent,farmersPercent:m.farmersPercent,canaisDeVenda:M,canaisPercent:U,totalCanais:k,checkoutManualEntries:t}),v[u]){const r=v[u];await J.from("status_report_slides").update({config:{...r.config,contractsData:i,contractsSummary:m,lastSyncAt:new Date().toISOString()}}).eq("id",r.id),R(N=>N.map(D=>D.id===r.id?{...D,config:{...D.config,contractsData:i,contractsSummary:m,lastSyncAt:new Date().toISOString()}}:D))}we(new Date().toISOString()),Y.success(s>0?`Checkout: +${s} contrato(s) no mês de destaque`:"Canal Checkout removido do mês de destaque")},Kr=async t=>{var x,S,H,w,U;if(!Q){Y.error("Sincronize os dados de Ticket Médio primeiro");return}const d=Q.checkoutManualEntries||[],s=z!=null&&z.length?z:[Pr(Q)],i=Xs(s,Q,t,d);re(i.data),le(i.summary);const{mes:P,mesReferencia:M}=Te();if(await Be("ticket_medio",P,M,{ticketPontua:i.summary.ticketPontua,ticketCanais:i.summary.ticketCanais,ticketGeral:i.summary.ticketGeral,qtdPontua:i.summary.qtdPontua,qtdCanais:i.summary.qtdCanais,qtdGeral:i.summary.qtdGeral??i.summary.qtdPontua+i.summary.qtdCanais,totalMRRPontua:((x=i.data[i.data.length-1])==null?void 0:x.totalMRRPontua)||0,totalMRRCanais:((S=i.data[i.data.length-1])==null?void 0:S.totalMRRCanais)||0,totalMRRGeral:((H=i.data[i.data.length-1])==null?void 0:H.totalMRRGeral)??(((w=i.data[i.data.length-1])==null?void 0:w.totalMRRPontua)||0)+(((U=i.data[i.data.length-1])==null?void 0:U.totalMRRCanais)||0),variacaoMoM:i.summary.variacaoMoM,variacaoTexto:i.summary.variacaoTexto,mesDestaque:i.summary.mesDestaque,insight:i.summary.insight,checkoutManualEntries:t}),v[u]){const m=v[u];await J.from("status_report_slides").update({config:{...m.config,ticketMedioData:i.data,ticketMedioSummary:i.summary,lastSyncAt:new Date().toISOString()}}).eq("id",m.id),R(ae=>ae.map(c=>c.id===m.id?{...c,config:{...c.config,ticketMedioData:i.data,ticketMedioSummary:i.summary,lastSyncAt:new Date().toISOString()}}:c))}we(new Date().toISOString());const k=qt(t);Y.success(k.deals>0?`Checkout: +${k.deals} deal(s) e R$ ${k.mrr.toLocaleString("pt-BR",{minimumFractionDigits:2})} no Ticket Médio`:"Checkout removido do Ticket Médio")},Yr={visitantes:"Visitantes",budgetGoogleAds:"Budget Google Ads",budgetMetaAds:"Budget Meta Ads",budgetOutros:"Budget Outros",budgetTikTokAds:"Budget TikTok Ads",despesasMarketing:"Despesas Marketing",despesasVendas:"Despesas Vendas",novosClientes:"Novos Clientes"},an=async(t,d,s,i)=>{const{mesReferencia:P}=Te(),{data:M}=await Ye(t,P);if(!M){i([]);return}const k=[];s.forEach(x=>{const S=M[x];S&&S!==0&&k.push({field:x,label:Yr[x]||x,currentValue:S,newValue:0})}),k.length>0?(It(k),Ot(()=>x=>{const S=s.filter(H=>!x.includes(H));i(S)}),Lt(d),Vt(t),mt(!0)):i([])},Qr=t=>{mt(!1),Ws&&Ws(t),Ot(null),It([]),Lt(""),Vt("")},Wr=()=>{mt(!1),Ot(null),It([]),Lt(""),Vt("")},tn=async()=>{const{data:t}=await J.from("status_reports").select("*").order("month_reference",{ascending:!1});q(t||[])};l.useEffect(()=>{tn()},[]);const sn=async t=>{fe(!0);try{const{data:d,error:s}=await J.from("status_reports").select("*").eq("id",t).single();if(s)throw s;X(d);const{data:i,error:P}=await J.from("status_report_slides").select("*").eq("report_id",t).order("sort_order");if(P)throw P;const M=(i||[]).map(k=>({...k,review_status:k.review_status||"pending"}));R(M),M!=null&&M.length&&(I(0),await ka(M[0],0,d)),o("editor")}catch(d){console.error("Error loading report:",d),Y.error("Erro ao carregar relatório")}finally{fe(!1)}},De=((cn=v[u])==null?void 0:cn.slide_type)||"mrr_evolution",ka=async(t,d,s)=>{var i,P,M,k,x;Js(!0);try{const S=d??u,H=s??C,w=H==null?void 0:H.month_reference;be(null),ne(null),T(null),me(null),re(null),le(null),ge(null),Ee(null),Qe(null),Ke(null),da(null),Ea(null),va(null),Tt(null),At(null),ba(null),ct(null),we(null),ut([]);let U=[];if(w){const{data:c,error:r}=await J.from("slide_data_bank").select("*").eq("slide_type","mrr_evolution").lte("mes_referencia",w).order("mes_referencia",{ascending:!1}).limit(12);!r&&c&&c.length>0&&(U=c.reverse().map(N=>{var D,j;return{mes:(()=>{const[O,$]=N.mes_referencia.split("-");return`${["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"][parseInt($,10)-1]} de ${O.slice(-2)}`})(),mrrTotal:ss(N.data),mrrPontua:Number((D=N.data)==null?void 0:D.mrr_pontua)||0,mrrPontuaPR:Number((j=N.data)==null?void 0:j.mrr_pontua_pr)||0,mrrTronPR:kt(N.data)}}),console.log(`[mrr_evolution] Loaded ${U.length} records from slide_data_bank`))}E(U),K({title:t.title,subtitle:t.subtitle||void 0,milestone:t.milestone||void 0,milestones:((i=t.config)==null?void 0:i.milestones)||void 0,theme:((P=t.config)==null?void 0:P.theme)||"dark",pageNumber:`${S+1}/${v.length}`,showLegend:t.show_legend,showNewBadge:((M=t.config)==null?void 0:M.showNewBadge)??t.slide_type==="mrr_growth",ano:((k=H==null?void 0:H.month_reference)==null?void 0:k.split("-")[0])||new Date().getFullYear().toString(),mesReferencia:(H==null?void 0:H.month_reference)||void 0});
2const m=t.config,ae=async(c,r,N,D)=>{if(w){const{data:j,lastSyncAt:O}=await Ye(c,w);if(j){const $=N(j);if($)return D($),we(O),console.log(`[${c}] Loaded from slide_data_bank for ${w}`),!0}}return m!=null&&m[r]?(D(m[r]),we((m==null?void 0:m.lastSyncAt)||null),console.log(`[${t.slide_type}] Loaded from slide config`),!0):!1};if(t.slide_type==="nmr_channel_v3_acumulado"&&w)try{const[c,r]=w.split("-"),N=parseInt(c,10),D=parseInt(r,10),j=[],O=[],$=["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"];for(let Me=1;Me<=D;Me++)j.push(`${N}-${String(Me).padStart(2,"0")}`),O.push(`${$[Me-1]}/${String(N).slice(-2)}`);let xe=0,Z=0,ie=0;const ce={};let ke=!1;for(const Me of j){const{data:Pe}=await Ye("nmr_channel_v2",Me);if(Pe){ke=!0,xe+=Number(Pe.vendasNovas)||0,Z+=Number(Pe.vendasCanal)||0,ie+=Number(Pe.migracaoTron)||0;const F=Pe.detalhesCanal||{};Object.entries(F).forEach(([ve,Ue])=>{ce[ve]=(ce[ve]||0)+(Number(Ue)||0)})}}const je={metaVendasNovas:0,metaMigracao:0,metaVendasCanal:0,metasPorCanalDeVenda:{}},{data:ze}=await J.from("nmr_metas").select("*").in("mes_referencia",j);if(ze&&ze.forEach(Me=>{const Pe=Number(Me.meta_valor)||0;Me.tipo==="consolidado"?(Me.canal==="vendas_novas"&&(je.metaVendasNovas+=Pe),Me.canal==="migracao"&&(je.metaMigracao+=Pe),Me.canal==="vendas_canal"&&(je.metaVendasCanal+=Pe)):Me.tipo==="canal_de_venda"&&(je.metasPorCanalDeVenda[Me.canal]=(je.metasPorCanalDeVenda[Me.canal]||0)+Pe)}),ke||ze&&ze.length>0){const Me=t.config||{},Pe=Number(Me.checkoutManualAcumulado)||0;lt({vendasNovas:xe+Pe,migracaoTron:ie,vendasCanal:Z,detalhesCanal:ce,metas:je,checkoutManualAcumulado:Pe})}else lt(null);gr(`${O[0]} → ${O[O.length-1]}`),console.log(`[nmr_channel_v3_acumulado] Aggregated YTD (${j.length} months):`,j)}catch(c){console.error("[nmr_channel_v3_acumulado] Aggregation error:",c),lt(null)}if(t.slide_type==="nmr_channel_v2"||t.slide_type==="nmr_channel_v3"){let c=null,r=!1;if(w){const{data:N,lastSyncAt:D}=await Ye("nmr_channel_v2",w);N&&(N.vendasNovas||N.migracaoTron||N.vendasCanal)&&(c={vendasNovas:N.vendasNovas||0,migracaoTron:N.migracaoTron||0,vendasCanal:N.vendasCanal||0,detalhesCanal:N.detalhesCanal||{}},be(c),we(D),r=!0,console.log("[nmr_channel_v2] Loaded from slide_data_bank for",w))}if(!r&&w){const{data:N,lastSyncAt:D}=await Ye("nmr_channel",w);N&&(N.vendasNovas||N.migracaoTron||N.vendasCanal)&&(c={vendasNovas:N.vendasNovas||0,migracaoTron:N.migracaoTron||0,vendasCanal:N.vendasCanal||0,detalhesCanal:N.detalhesCanal||{}},be(c),we(D),r=!0,console.log("[nmr_channel_v2] Fallback: Loaded from nmr_channel for",w))}if(!r&&(m!=null&&m.nmrData)&&(c=m.nmrData,be(c),we((m==null?void 0:m.lastSyncAt)||null),console.log("[nmr_channel_v2] Loaded from slide config")),w)try{const{data:N,error:D}=await J.from("nmr_metas").select("*").eq("mes_referencia",w);if(!D&&N&&N.length>0){const j={metaVendasNovas:0,metaMigracao:0,metaVendasCanal:0,metasPorC
2analDeVenda:{}};N.forEach($=>{$.tipo==="consolidado"?($.canal==="vendas_novas"&&(j.metaVendasNovas=$.meta_valor||0),$.canal==="migracao"&&(j.metaMigracao=$.meta_valor||0),$.canal==="vendas_canal"&&(j.metaVendasCanal=$.meta_valor||0)):$.tipo==="canal_de_venda"&&(j.metasPorCanalDeVenda[$.canal]=$.meta_valor||0)});const O={vendasNovas:(c==null?void 0:c.vendasNovas)||0,migracaoTron:(c==null?void 0:c.migracaoTron)||0,vendasCanal:(c==null?void 0:c.vendasCanal)||0,detalhesCanal:(c==null?void 0:c.detalhesCanal)||{},checkoutManualVendasPontua:(c==null?void 0:c.checkoutManualVendasPontua)||0,metas:j};ne(O)}else ne({vendasNovas:(c==null?void 0:c.vendasNovas)||0,migracaoTron:(c==null?void 0:c.migracaoTron)||0,vendasCanal:(c==null?void 0:c.vendasCanal)||0,detalhesCanal:(c==null?void 0:c.detalhesCanal)||{},checkoutManualVendasPontua:(c==null?void 0:c.checkoutManualVendasPontua)||0,metas:null})}catch(N){console.error("Error loading NMR metas:",N)}}if(t.slide_type==="contracts_by_team"&&(!await ae("contracts_by_team","contractsSummary",r=>({mesDestaque:r.mesDestaque||"",hunters:r.hunters||0,farmers:r.farmers||0,total:r.total||0,huntersPercent:r.huntersPercent||0,farmersPercent:r.farmersPercent||0,insight:r.insight||"",canaisDeVenda:r.canaisDeVenda||{},canaisPercent:r.canaisPercent||{},totalCanais:r.totalCanais||0}),me)&&(m!=null&&m.contractsSummary)&&me(m.contractsSummary),m!=null&&m.contractsData&&T(m.contractsData)),t.slide_type==="ticket_medio"){let c=!1;if(w){const{data:r,error:N}=await J.from("slide_data_bank").select("*").eq("slide_type","ticket_medio").lte("mes_referencia",w).order("mes_referencia",{ascending:!1}).limit(6);if(!N&&r&&r.length>0){const j=[...r].reverse().map(ce=>Ar(ce.data||{},ce.mes)),O=r.find(ce=>ce.mes_referencia===w)||r[0],$=O.data||{},xe=Number($.qtdPontua)||0,Z=Number($.qtdCanais)||0,ie=Number($.qtdGeral)||xe+Z;re(j),le({mesDestaque:$.mesDestaque||O.mes||"",ticketPontua:Number($.ticketPontua)||0,ticketCanais:Number($.ticketCanais)||0,ticketGeral:Number($.ticketGeral)||0,qtdPontua:xe,qtdCanais:Z,qtdGeral:ie,variacaoMoM:Number($.variacaoMoM)||0,variacaoTexto:$.variacaoTexto||"",insight:$.insight||"",checkoutManualEntries:$.checkoutManualEntries||[]}),we(O.last_sync_at||null),c=!0,console.log(`[ticket_medio] Loaded ${j.length} rows from slide_data_bank for ${w}`)}}!c&&(m!=null&&m.ticketMedioSummary)&&le(m.ticketMedioSummary),!c&&(m!=null&&m.ticketMedioData)&&re(m.ticketMedioData)}if(t.slide_type==="migracao_status"&&(!await ae("migracao_status","migracaoData",r=>({totalMigrados:r.totalMigrados||0,mrrMigrado:r.mrrMigrado||0,deltaMRR:r.deltaMRR||0,contracts:r.contracts||[],bases:r.bases||[]}),ge)&&(m!=null&&m.migracaoData)&&ge(m.migracaoData),m!=null&&m.migracaoManualData&&Ee(m.migracaoManualData)),t.slide_type==="migracao_status_v2"&&w){const{data:c,lastSyncAt:r}=await Ye("migracao_status_v2","global");c&&(Ke({baseTronTotal:c.baseTronTotal??657,baseKeevoTotal:c.baseKeevoTotal??234,potencialMRR:c.potencialMRR??114e3}),console.log("[migracao_status_v2] Loaded manual data from slide_data_bank for",w));try{const{data:N,error:D}=await J.functions.invoke("fetch-migracao-status-v2",{body:{mes:w}});!D&&N&&(Qe(N),we(N.lastSyncAt||r||null),console.log("[migracao_status_v2] Loaded HubSpot data for",w,"- Total:",(x=N.total)==null?void 0:x.migrados))}catch(N){console.error("[migracao_status_v2] Error fetching HubSpot data:",N),m!=null&&m.migracaoV2Data&&Qe(m.migracaoV2Data)}}if(t.slide_type==="pipeline_funnel"&&!await ae("pipeline_funnel","pipelineFunnelData",r=>{var N,D,j,O;return{fechados:{deals:((N=r.fechados)==null?void 0:N.deals)||0,mrr:((D=r.fechados)==null?void 0:D.mrr)||0,breakdown:((j=r.fechados)==null?void 0:j.breakdown)||{hunters:0,huntersPercent:0,farmers:0,farmersPercent:0,outros:0,outrosPercent:0}},perdidos:{deals:((O=r.perdidos)==null?void 0:O.deals)||0},totalOportunidades:r.totalOportunidades||0,taxaConversao:r.taxaConversao||0,ticketMedio:r.ticketMedio||0,pipelineAtivo:r.pipelineAtivo||[]}},da)&&m!=null&&m.pipelineFunnelData&&da(m.pipelineFunnelData),t.slide_type==="concentracao_faturamento"){if(w){const{data:c,lastSyncAt:r}=await Ye("concentracao_faturamento",w);c&&(we(r),console.log("[concentracao_faturamento] Loaded summary from slide_data_bank for",w))}m!=null&&m.concentracaoData&&Ea(m.concentracaoData)}
2if(t.slide_type==="kpis_saas_ltv"){let c=J.from("slide_data_bank").select("*").eq("slide_type","kpis_saas_ltv");w&&(c=c.lte("mes_referencia",w));const{data:r,error:N}=await c.order("mes_referencia",{ascending:!0});if(!N&&r&&r.length>0){const D=Z=>{const ie=(Z==null?void 0:Z.split("/"))||[],ce=ie[0]||Z||"",ke=ie[1]||"",ze=["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"].indexOf(ce);return(ke?parseInt(ke)<50?2e3+parseInt(ke):1900+parseInt(ke):new Date().getFullYear())*100+ze},j=[...r].sort((Z,ie)=>Z.mes_referencia&&ie.mes_referencia?Z.mes_referencia.localeCompare(ie.mes_referencia):D(Z.mes)-D(ie.mes)),O=j.map(Z=>{var ie,ce,ke,je,ze,Me,Pe,F,ve;return{mes:((ie=Z.mes)==null?void 0:ie.split("/")[0])||Z.mes||"",churnRate:((ce=Z.data)==null?void 0:ce.churnRate)||0,lt:((ke=Z.data)==null?void 0:ke.lt)||0,ticketMedio:((je=Z.data)==null?void 0:je.ticketMedio)||0,ltv:((ze=Z.data)==null?void 0:ze.ltv)||0,cac:((Me=Z.data)==null?void 0:Me.cac)||0,ltvCac:((Pe=Z.data)==null?void 0:Pe.ltvCac)||0,mrrTotal:((F=Z.data)==null?void 0:F.mrrTotal)||0,assinaturasAtivas:((ve=Z.data)==null?void 0:ve.assinaturasAtivas)||0}}),$=O[O.length-1];$e({historico:O,atual:{...$,mes:$.mes}});const xe=j.reduce((Z,ie)=>{const ce=ie.last_sync_at;return ce&&(!Z||ce>Z)?ce:Z},null);we(xe),console.log("[kpis_saas_ltv] Loaded",O.length,"months from slide_data_bank")}else m!=null&&m.kpisSaaSData&&($e(m.kpisSaaSData),we((m==null?void 0:m.lastSyncAt)||null),console.log("[kpis_saas_ltv] Loaded from slide config (fallback)"))}
2if(t.slide_type==="kpis_cac_payback"){let c=J.from("slide_data_bank").select("*").eq("slide_type","kpis_cac_payback");w&&(c=c.lte("mes_referencia",w));const{data:r,error:N}=await c.order("mes_referencia",{ascending:!0});if(!N&&r&&r.length>0){const D=ie=>{const ce=(ie==null?void 0:ie.split("/"))||[],ke=ce[0]||ie||"",je=ce[1]||"",Me=["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"].indexOf(ke);return(je?parseInt(je)<50?2e3+parseInt(je):1900+parseInt(je):new Date().getFullYear())*100+Me},j=[...r].sort((ie,ce)=>ie.mes_referencia&&ce.mes_referencia?ie.mes_referencia.localeCompare(ce.mes_referencia):D(ie.mes)-D(ce.mes)),O=j.map(ie=>{var ce,ke,je,ze,Me,Pe,F;return{mes:((ce=ie.mes)==null?void 0:ce.split("/")[0])||ie.mes||"",despesasMarketing:((ke=ie.data)==null?void 0:ke.despesasMarketing)||0,despesasVendas:((je=ie.data)==null?void 0:je.despesasVendas)||0,novosClientes:((ze=ie.data)==null?void 0:ze.novosClientes)||0,ticketMedio:((Me=ie.data)==null?void 0:Me.ticketMedio)||0,cac:((Pe=ie.data)==null?void 0:Pe.cac)||0,cacPayback:((F=ie.data)==null?void 0:F.cacPayback)||0}}),$=O[O.length-1],xe=ie=>{if(ie.length<2)return{percentual:0,direcao:"estavel"};const ce=ie[0].cac,ke=ie[ie.length-1].cac;if(ce===0)return{percentual:0,direcao:"estavel"};const je=(ke-ce)/ce*100;let ze="estavel";return je<-5?ze="queda":je>5&&(ze="alta"),{percentual:parseFloat(je.toFixed(1)),direcao:ze}};Ja({historico:O,atual:{mes:$.mes,ticketMedio:$.ticketMedio,cac:$.cac,cacPayback:$.cacPayback,assinaturasAtivas:0,mrrTotal:0,tendenciaCAC:xe(O)}});const Z=j.reduce((ie,ce)=>{const ke=ce.last_sync_at;return ke&&(!ie||ke>ie)?ke:ie},null);we(Z),console.log("[kpis_cac_payback] Loaded",O.length,"months from slide_data_bank")}else m!=null&&m.cacPaybackData&&(Ja(m.cacPaybackData),we((m==null?void 0:m.lastSyncAt)||null),console.log("[kpis_cac_payback] Loaded from slide config (fallback)"))}if(t.slide_type==="marketing_aquisicao"||t.slide_type==="marketing_aquisicao_v2"||t.slide_type==="marketing_qualidade_canal_v2"){let c=!1;if(w){const{data:r,lastSyncAt:N}=await Ye("marketing_aquisicao",w);if(r){const D=r.budgetGoogleAds||0,j=r.budgetMetaAds||0,O=r.budgetOutros||0,$=r.budgetTikTokAds||0,xe=D+j+O+$,Z=r.budgetGoogleAdsOrcado||0,ie=r.budgetMetaAdsOrcado||0,ce=r.budgetOutrosOrcado||0,ke=r.budgetTikTokAdsOrcado||0,je=r.canais||[],Me=je.filter(Ce=>Ce.canal!=="Google Ads"&&Ce.canal!=="Google"&&Ce.canal!=="Meta Ads"&&Ce.canal!=="Meta"&&Ce.canal!=="Facebook"&&Ce.canal!=="TikTok Ads"&&Ce.canal!=="TikTok").reduce((Ce,qe)=>Ce+(qe.leads||0),0),Pe=je.map(Ce=>{let qe=0;Ce.canal==="Google Ads"||Ce.canal==="Google"?qe=D:Ce.canal==="Meta Ads"||Ce.canal==="Meta"||Ce.canal==="Facebook"?qe=j:Ce.canal==="TikTok Ads"||Ce.canal==="TikTok"?qe=$:qe=Me>0?Ce.leads/Me*O:0;const He=Ce.leads>0?qe/Ce.leads:0;return{...Ce,budget:qe,cpl:He}}),F=(Ce,qe,He,Xe)=>Xe<=0||Ce.some(po=>qe.includes(po.canal))?Ce:[...Ce,{canal:He,leads:0,fitScoreMedio:0,temperaturaMedio:0,percentualQualificados:0,budget:Xe,cpl:0,vendas:0,receita:0,conversaoPercent:0}];let ve=Pe;ve=F(ve,["Google Ads","Google"],"Google Ads",D),ve=F(ve,["Meta Ads","Meta","Facebook"],"Meta Ads",j),ve=F(ve,["TikTok Ads","TikTok"],"TikTok Ads",$);const Ue=(r.leads||0)*((r.percentualQualificados||0)/100),Gt=Ue>0?xe/Ue:0,Fa={funil:{visitantes:r.visitantes||0,leads:r.leads||0,oportunidades:r.oportunidades||0},metricas:{totalLeads:r.leads||0,fitScoreMedio:r.fitScoreMedio||0,temperaturaMedio:r.temperaturaMedio||0,distribuicaoFit:r.distribuicaoFit||{icpPerfeito:0,bomFit:0,fitRegular:0,foraIcp:0,desqualificado:0},percentualQualificados:r.percentualQualificados||0},canais:ve,cplQualificado:Gt,mesReferencia:Te().mes||"",lastSyncAt:N||void 0,totalVendas:r.totalVendas||0,totalReceita:r.totalReceita||0,conversaoGeral:r.conversaoGeral||0,vendasPontua:r.vendasPontua||0,conversoes:r.conversoes||{visitanteToLead:0,leadToOpp:0},inputsManuais:{visitantes:r.visitantes||0,budgetGoogleAds:D,budgetMetaAds:j,budgetOutros:O,budgetTikTokAds:$,budgetGoogleAdsOrcado:Z,budgetMetaAdsOrcado:ie,budgetOutrosOrcado:ce,budgetTikTokAdsOrcado:ke}};try{const Ce=await dt("marketing_aquisicao");if(Ce.length>0){Fa.fitScoreHistorico=Ce.filter(He=>{var Xe;return((Xe=He.data)==null?void 0:Xe.fitScoreMedio)>0&&He.mes_referencia>="2026-01"&&He.mes_referencia<=(w||"")}).sort((He,Xe)=>He.mes_referencia.localeCompare(Xe.mes_referencia)).map(He=>({mes:He.mes,fitScore:He.data.fitScoreMedio}));const qe=await $t(w||"");qe.length>0&&(Fa.taxaConversaoPipeline=qe)}}catch(Ce){console.warn("[marketing_aquisicao] Failed to fetch fitScoreHistorico/taxaConversaoPipeline",Ce)}
2va(Fa),we(N),g([{mes:Te().mes,visitantes:r.visitantes||0,budgetGoogleAds:D,budgetMetaAds:j,budgetOutros:O,budgetTikTokAds:$,budgetGoogleAdsOrcado:Z,budgetMetaAdsOrcado:ie,budgetOutrosOrcado:ce,budgetTikTokAdsOrcado:ke,leads:r.leads||0,oportunidades:r.oportunidades||0}]),c=!0,console.log("[marketing_aquisicao] Loaded from slide_data_bank for",w,"with budgets:",xe)}}!c&&(m!=null&&m.marketingData)&&(va(m.marketingData),we((m==null?void 0:m.lastSyncAt)||null),console.log("[marketing_aquisicao] Fallback to slide config (no bank data found)"))}if(t.slide_type==="mrr_growth"){await Xr();const{data:c,error:r}=await J.from("slide_data_bank").select("mes, data, mes_referencia").eq("slide_type","mrr_evolution").order("mes_referencia",{ascending:!0});if(!r&&(c!=null&&c.length)){const N=c.map(D=>{var j,O;return{mes:D.mes,mrrTotal:ss(D.data),mrrPontua:Number((j=D.data)==null?void 0:j.mrr_pontua)||0,mrrPontuaPR:Number((O=D.data)==null?void 0:O.mrr_pontua_pr)||0,mrrTronPR:kt(D.data)}});E(N),console.log("[mrr_growth] MRR data loaded from slide_data_bank for MoM calculation:",N.length,"records")}else console.warn("[mrr_growth] No MRR data found in slide_data_bank for MoM calculation")}else if(t.slide_type==="cohort_retencao"||t.slide_type==="cohort_retencao_m13_m24"){const{mesReferencia:c}=Te(),[r,N]=c.split("-").map(Number);await en(r,N)}else if(t.slide_type==="desempenho_vendas"){let c=!1;if(w){const{data:r,lastSyncAt:N}=await Ye("desempenho_vendas",w);r&&(ba(r),we(N),c=!0,console.log("[desempenho_vendas] Loaded from slide_data_bank"))}!c&&(m!=null&&m.desempenhoVendasData)&&(ba(m.desempenhoVendasData),we((m==null?void 0:m.lastSyncAt)||null),console.log("[desempenho_vendas] Loaded from slide config (fallback)"))}else if(t.slide_type==="desempenho_vendas_acumulado"){let c=!1;if(w){const{data:r,lastSyncAt:N}=await Ye("desempenho_vendas_acumulado",w);r&&(ct(r),we(N),c=!0,console.log("[desempenho_vendas_acumulado] Loaded from slide_data_bank"))}!c&&(m!=null&&m.desempenhoVendasData)&&(ct(m.desempenhoVendasData),we((m==null?void 0:m.lastSyncAt)||null),console.log("[desempenho_vendas_acumulado] Loaded from slide config (fallback)"))}else if(t.slide_type==="base_usuarios")m!=null&&m.baseUsuariosData&&(Gs(m.baseUsuariosData),we((m==null?void 0:m.lastSyncAt)||null),console.log("[base_usuarios] Loaded from slide config"));else if(t.slide_type==="churn_analise"){if(w){const{data:c,lastSyncAt:r}=await Ye("churn_analise",w);c&&(pr({historico:c.historico||[],motivos:c.motivos||[],kpis:c.kpis||{},clientesCancelados:c.clientesCancelados||[],mesReferencia:c.mesReferencia||w,destaque:c.destaque,tendencia:c.tendencia,insight:c.insight}),we(r),console.log("[churn_analise] Loaded from slide_data_bank for",w))}}else if(t.slide_type==="consolidado_8kpis")await Zr(),console.log("[consolidado_8kpis] Loaded aggregated data from related slides");else if(t.slide_type==="resultado_trimestral"){await Ya("resultado_trimestral");const{data:c}=await J.from("slide_data_bank").select("*").eq("slide_type","resultado_trimestral").order("mes_referencia",{ascending:!0});if(c&&c.length>0){const{DEFAULT_Q1_DATA:r}=await dn(async()=>{const{DEFAULT_Q1_DATA:D}=await import("./usePresentationDataCache-DG_vSpPc.js").then(j=>j.R);return{DEFAULT_Q1_DATA:D}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])),N={...r};c.forEach((D,j)=>{const O=D.data||{};j<N.meses.length&&(N.meses[j]={...N.meses[j],...O}),j<N.planejado.length&&(N.planejado[j]={...N.planejado[j],hunter:O.planejadoHunter??N.planejado[j].hunter,canais:O.planejadoCanais??N.planejado[j].canais,migracao:O.planejadoMigracao??N.planejado[j].migracao})}),Us(N)}else{const{DEFAULT_Q1_DATA:r}=await dn(async()=>{const{DEFAULT_Q1_DATA:j}=await import("./usePresentationDataCache-DG_vSpPc.js").then(O=>O.R);return{DEFAULT_Q1_DATA:j}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]));Us(r);const N=["2026-01","2026-02","2026-03"],D=["Jan/26","Fev/26","Mar/26"];for(let j=0;j<r.meses.length;j++){const O=r.meses[j],$=r.planejado[j];await Be("resultado_trimestral",D[j],N[j],{vendasNMR:O.vendasNMR,treinamento:O.treinamento,contratos:O.contratos,origemHunter:O.origemHunter,origemCanais:O.origemCanais,origemMigracao:O.origemMigracao,origemCheckout:O.origemCheckout,planejadoHunter:$.hunter,planejadoCanais:$.canais,planejadoMigracao:$.migracao})}await Ya("resultado_trimestral")}console.log("[resultado_trimestral] Loaded")}else if(t.slide_type!=="mrr_evolution"){if(await Ya(t.slide_type),t.slide_type==="headcount_produtivida
2de"){const{data:c}=await J.from("slide_data_bank").select("*").eq("slide_type","headcount_produtividade").order("mes_referencia",{ascending:!0});if(c&&c.length>0){const{data:r}=await J.from("slide_data_bank").select("mes, data, mes_referencia").eq("slide_type","mrr_evolution").order("mes_referencia",{ascending:!0}),N={};r==null||r.forEach(j=>{var O,$;N[j.mes]=Number((O=j.data)==null?void 0:O.mrr_total)||0,j.mes_referencia&&(N[j.mes_referencia]=Number(($=j.data)==null?void 0:$.mrr_total)||0)});const D=c.map(j=>{var $;const O=(($=j.data)==null?void 0:$.mrr)||N[j.mes]||N[j.mes_referencia]||0;return{mes:j.mes||"",...j.data,mrr:O}});nn(D)}}if(t.slide_type==="budget_vs_realizado_v3"){const{data:c}=await J.from("slide_data_bank").select("*").in("slide_type",["budget_vs_realizado","budget_vs_realizado_v3"]).order("mes_referencia",{ascending:!0});if(c&&c.length>0){const r=new Map;c.forEach(j=>{const O=j.mes_referencia,$=r.get(O);(!$||new Date(j.updated_at)>new Date($.updated_at))&&r.set(O,j)});const D=Array.from(r.values()).sort((j,O)=>j.mes_referencia.localeCompare(O.mes_referencia)).map(j=>({mes:j.mes||"",...j.data}));eo(D)}}if(t.slide_type==="suporte_indicadores"){const{data:c}=await J.from("slide_data_bank").select("*").eq("slide_type","suporte_indicadores").order("mes_referencia",{ascending:!0});if(c&&c.length>0){const r=c.map(N=>({mes:N.mes||"",mes_referencia:N.mes_referencia||"",...N.data}));rn(r)}}if(t.slide_type==="atendimento_comparativo"){const{data:c}=await J.from("slide_data_bank").select("data").eq("slide_type","atendimento_comparativo").eq("mes_referencia","2026-08").maybeSingle(),r=c==null?void 0:c.data;hr(r!=null&&r.anterior&&(r!=null&&r.atual)&&(r!=null&&r.metas)?r:null)}}else g(U)}finally{Js(!1)}},Xr=async()=>{try{const{data:t,error:d}=await J.from("slide_data_bank").select("*").eq("slide_type","mrr_growth").order("mes_referencia",{ascending:!0});if(d){console.error("Error fetching clientesData:",d);return}if(t&&t.length>0){const s=t.map(P=>{var M,k,x;return{mes:((M=P.mes)==null?void 0:M.split("/")[0])||P.mes||"",novosOrganico:((k=P.data)==null?void 0:k.novos_organico)||0,migracao:((x=P.data)==null?void 0:x.migracao)||0}});ut(s);const i=t.map(P=>{var M,k;return{mes:P.mes||"",novos_organico:((M=P.data)==null?void 0:M.novos_organico)||0,migracao:((k=P.data)==null?void 0:k.migracao)||0}});g(i)}else ut([]),g([])}catch(t){console.error("Error in fetchClientesData:",t)}},Zr=l.useCallback(async()=>{if(!ra){const t=v.find(d=>d.slide_type==="desempenho_vendas");if(t){const d=t.config;d!=null&&d.desempenhoVendasData&&(ba(d.desempenhoVendasData),console.log("[consolidado_8kpis] Loaded desempenhoVendasData from slide config"))}}if(!za){const t=v.find(d=>d.slide_type==="base_usuarios");if(t){const d=t.config;d!=null&&d.baseUsuariosData&&(Gs(d.baseUsuariosData),console.log("[consolidado_8kpis] Loaded baseUsuariosData from slide config"))}}},[v,ra,za]),Ya=async t=>{try{const d=t==="budget_vs_realizado_v3"?["budget_vs_realizado","budget_vs_realizado_v3"]:[t],{data:s,error:i}=await J.from("slide_data_bank").select("*").in("slide_type",d).order("mes_referencia",{ascending:!0});if(i){console.error(`Error fetching editor data for ${t}:`,i);return}if(console.log(`[loadEditorDataForSlide] ${t}: fetched ${(s==null?void 0:s.length)||0} rows`,s==null?void 0:s.map(P=>({mes:P.mes,slide_type:P.slide_type,data_keys:Object.keys(P.data||{})}))),s&&s.length>0){const P=new Map;s.forEach(x=>{const S=x.mes_referencia,H=P.get(S);(!H||new Date(x.updated_at)>new Date(H.updated_at))&&P.set(S,x)});const k=Array.from(P.values()).sort((x,S)=>x.mes_referencia.localeCompare(S.mes_referencia)).map(x=>({mes:x.mes||"",...x.data}));g(k)}else g([]),t==="headcount_produtividade"&&Dt(null)}catch(d){console.error("Error in loadEditorDataForSlide:",d)}},nn=l.useCallback(t=>{if(t.length===0){Dt(null);return}const d=t.map(r=>{const N=Number(r.diretoria)||0,D=Number(r.tecnologia)||0,j=Number(r.comercial)||0,O=Number(r.marketing)||0,$=Number(r.relacionamento)||0,xe=N+D+j+O+$,Z=Number(r.mrr)||0,ie=xe>0?Math.round(Z/xe):0,ce=(r.mes||"").split("/"),ke=ce[0]||r.mes||"",je=ce[1]||"",ze=je?je.length===2?`20${je}`:je:new Date().getFullYear().toString(),Pe={jan:"01",fev:"02",mar:"03",abr:"04",mai:"05",jun:"06",jul:"07",ago:"08",set:"09",out:"10",nov:"11",dez:"12"}[ke.toLowerCase()]||"01",F=`${ze}-${Pe}`,ve={mes:ke,mesCompleto:F,departamentos:{diretoria:N,tecnologia:D,comercial:j,marketing:O,relacionamento:$},total:xe,mrr:Z,receitaPorHC:ie},Ue=r.prev_diretoria||r.prev_tecnologia||r.prev_comercial||r.prev_marketing||r.prev_relacionamento,Gt=r.diretoria_proj||r.tecnologia_proj||r.comercial_proj||r.marketing_proj||r.relacionamento_proj,Fa=r.previsto&&typeof r.previsto=="object";if(Ue||Gt||Fa){let Ce=0,qe=0,He=0,Xe=0,Ia=0;Fa?(Ce=Number(r.previsto.diretoria)||0,qe=Number(r.previsto.tecnologia)||0,He=Number(r.previsto.comercial)||0,Xe=Number(r.previsto.marketing)||0,Ia=Number(r.previsto.relacionamento)||0):Ue?(Ce=Number(r.prev_diretoria)||0,qe=Number(r.prev_tecnologia)||0,He=Number(r.prev_comercial)||0,Xe=Number(r.prev_marketing)||0,Ia=Number(r.prev_relacionamento)||0):(Ce=Number(r.diretoria_proj)||0,qe=Number(r.tecnologia_proj)||0,He=Number(r.comercial_proj)||0,Xe=Number(r.marketing_proj)||0,Ia=Number(r.relacionamento_proj)||0),ve.previsto={diretoria:Ce,tecnologia:qe,comercial:He,marketing:Xe,relacionamento:Ia,total:Ce+qe+He+Xe+Ia}}return ve}),s=d[0],i=d[d.length-1],P=s.total>0?(i.total-s.total)/s.total*100:0,M=["diretoria","tecnologia","comercial","marketing","relacionamento"],k={diretoria:"Diretoria",tecnologia:"Tecnologia",comercial:"Comercial",marketing:"Marketing",relacionamento:"Relacionamento"};let x=0,S="Tecnologia";M.forEach(r=>{const N=s.departamentos[r],D=i.departamentos[r];if(N>0){const j=(D-N)/N*100;j>x&&(x=j,S=k[r])}});const H=d.length>0?Math.round(d.reduce((r,N)=>r+N.receitaPorHC,0)/d.length):0,w=s.mesCompleto.split("-")[0],U=i.mesCompleto.split("-")[0],m=w===U?w:`${w}/${U}`;let ae;i.previsto&&(ae={mes:`${i.mes}/${U.slice(-2)}`,previsto:i.previsto.total,executado:i.total,diferenca:i.total-i.previsto.total});const c={dados:d,resumo:{crescimentoHC:Math.round(P),hcInicial:s.total,hcFinal:i.total,receitaHCMedia:H,areaMaisCresceu:{nome:S,crescimento:Math.round(x)},deltaPrevistoExecutado:ae},anoReferencia:m,insight:`Crescimento HC: +${Math.round(P)}% (${s.total}→${i.total}
2) │ Receita/HC média: R$ ${H.toLocaleString("pt-BR")} │ Área que mais cresceu: ${S} (+${Math.round(x)}%)`};Dt(c)},[]),rn=l.useCallback(t=>{if(t.length===0){Is(null);return}const d=[...t].sort((r,N)=>{const D=r.mes_referencia||"",j=N.mes_referencia||"";return D.localeCompare(j)}),s=d[d.length-1],i=d.length>=2?d[d.length-2]:null,P=Number(s.tickets)||0,M=i&&Number(i.tickets)||0,k=M>0?Math.round((P-M)/M*100*10)/10:0,x=(Number(s.tma)||0)*60,S=Number(s.tpr)||0,H=s.mes||s.mes_referencia||"",w=H.split("/")[0]||H,U=H.includes("/")?`20${H.split("/")[1]}`:new Date().getFullYear().toString(),m=70*60,ae=Number(s.csatGeral)||0,c={pontua:{csatGeral:Number(s.csatPontua)||ae||0,tma:x,tpr:S,tickets:P,ticketsVariacao:k},finAI:{csat:Number(s.csatIA)||0,conversas:Number(s.conversasIA)||0,resolucoes:Number(s.resolucoesIA)||0,deflectionRate:Number(s.deflectionRate)||0},pontoRemoto:{csatGeral:Number(s.csatPontoRemoto)||0,tickets:Number(s.ticketsPontoRemoto)||0},csatGeralOverride:ae>0?ae:void 0,metas:{csatGeral:90,tma:m,tpr:300,deflection:60},mesReferencia:w,anoReferencia:U,ticketsMensal:d.map(r=>{const N=Number(r.ticketsPontua)||0,D=Number(r.ticketsPontoRemoto)||0,j=Number(r.ticketsIA)||0,O=Number(r.tickets)||0,$=N>0||D>0||j>0;return{mes:r.mes||r.mes_referencia||"",pontua:$?N:O,pontoRemoto:D,ia:j}}),insight:`CSAT Geral ${Number(s.csatGeral)||0}% │ Tickets: ${P} (${k>=0?"+":""}${k}% vs mês ant.)`};Is(c)},[]),eo=l.useCallback(t=>{if(t.length===0){At(null);return}const s=[...t].sort((D,j)=>{const O=$=>{const[xe,Z]=($||"").split("/"),ce={jan:1,fev:2,mar:3,abr:4,mai:5,jun:6,jul:7,ago:8,set:9,out:10,nov:11,dez:12}[xe==null?void 0:xe.toLowerCase()]||1;return(Z?parseInt(Z)<50?2e3+parseInt(Z):1900+parseInt(Z):2026)*100+ce};return O(D.mes)-O(j.mes)}).map(D=>{const j=(D.mes||"").split("/"),O=j[0]||"",$=j[1]||"26",xe=$.length===2?2e3+parseInt($):parseInt($),ie={jan:1,fev:2,mar:3,abr:4,mai:5,jun:6,jul:7,ago:8,set:9,out:10,nov:11,dez:12}[O.toLowerCase()]||1,ce=Number(D.receitaOrcada)||0,ke=Number(D.receitaRealizada)||0,je=Number(D.despesaOrcada)||0,ze=Number(D.despesaRealizada)||0,Me=Number(D.aporteKeevo)||0,Pe=Number(D.aporteTron)||0,F=Number(D.aportePlanejadoKeevo)||0,ve=Number(D.aportePlanejadoTron)||0;return{ano:xe,mes:ie,mesNome:(D.mes||"").toLowerCase(),receitaOrcada:ce,receitaRealizada:ke,despesaOrcada:je,despesaRealizada:ze,aporteKeevo:Me,aporteTron:Pe,aportePlanejadoKeevo:F,aportePlanejadoTron:ve,gapReceita:ke-ce,gapDespesa:je-ze}}),i=s.reduce((D,j)=>D+j.receitaOrcada,0),P=s.reduce((D,j)=>D+j.receitaRealizada,0),M=s.reduce((D,j)=>D+j.despesaOrcada,0),k=s.reduce((D,j)=>D+j.despesaRealizada,0),x=s.reduce((D,j)=>D+j.aporteKeevo,0),S=s.reduce((D,j)=>D+j.aporteTron,0),H=s.reduce((D,j)=>D+(j.aportePlanejadoKeevo||0),0),w=s.reduce((D,j)=>D+(j.aportePlanejadoTron||0),0),U=P-i,m=M-k,ae=i>0?U/i*100:0,c=M>0?m/M*100:0,r=s.length>0?String(s[0].ano):"2026",N={periodo:r,totalReceitaOrcada:i,totalReceitaRealizada:P,gapReceitaTotal:U,gapReceitaPercent:parseFloat(ae.toFixed(1)),totalDespesaOrcada:M,totalDespesaRealizada:k,gapDespesaTotal:m,gapDespesaPercent:parseFloat(c.toFixed(1)),totalAporteKeevo:x,totalAporteTron:S,totalAportes:x+S,totalAportePlanejadoKeevo:H,totalAportePlanejadoTron:w,totalAportesPlanejado:H+w};At({dados:s,resumo:N,anoReferencia:r,insight:`Receita ${ae>=0?"+":""}${ae.toFixed(1)}% vs orçado │ Economia de ${c.toFixed(1)}% nas despesas`})},[]);l.useEffect(()=>{if(L.length>0){const t=L[L.length-1],d=L.length>1?L[L.length-2]:null,s=d?ht(t.mrrPontua,d.mrrPontua):0,i=d?ht(t.mrrPontuaPR,d.mrrPontuaPR):0,P=d?ht(t.mrrTronPR,d.mrrTronPR):0,M=d?ht(t.mrrTotal,d.mrrTotal):0,k=t.mrrTotal*12,x=[{id:"mrr-pontua",label:"MRR PONTUA",value:t.mrrPontua,variation:s,variationType:ft(s),suffix:"MoM",formatAsCurrency:!0},{id:"mrr-pontua-pr",label:"MRR PONTUA PR",value:t.mrrPontuaPR,variation:i,variationType:ft(i),suffix:"MoM",formatAsCurrency:!0},{id:"mrr-tron-pr",label:"MRR TRON PR",value:t.mrrTronPR,variation:P,variationType:ft(P),suffix:"MoM",formatAsCurrency:!0},{id:"mrr-total",label:"TOTAL CARTEIRA",value:t.mrrTotal,variation:M,variationType:ft(M),suffix:"MoM",formatAsCurrency:!0},{id:"arr-projetado",label:"ARR PROJETADO",value:k,formatAsCurrency:!0}];ye(x)}},[L]),l.useEffect(()=>{const t=v[u];if((t==null?void 0:t.slide_type)!=="kpis_saas_ltv"||B.length===0)return;const d=P=>{const M=(P==null?void 0:P.split("/"))||[],k=M[0]||P||"",x=M[1]||"",H=["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"].indexOf(k);return(x?parseInt(x)<50?2e3+parseInt(x):1900+parseInt(x):new Date().getFullYear())*100+H},i=[...B].sort((P,M)=>P.mes_referencia&&M.mes_referencia?P.mes_referencia.localeCompare(M.mes_referencia):d(P.mes)-d(M.mes)).map(P=>{var M;return{mes:((M=P.mes)==null?void 0:M.split("/")[0])||P.mes||"",churnRate:P.churnRate||0,lt:P.lt||0,ticketMedio:P.ticketMedio||0,ltv:P.ltv||0,cac:P.cac||
20,ltvCac:P.ltvCac||0,mrrTotal:P.mrrTotal||0,assinaturasAtivas:P.assinaturasAtivas||0}});if(i.length>0){const P=i[i.length-1];$e(M=>({...M,historico:i,atual:{...P}})),console.log("[kpis_saas_ltv] Synced editorData to chart:",i.length,"months")}},[B,v,u]),l.useEffect(()=>{zt||K(t=>({...t,pageNumber:`${u+1}/${v.length||1}`}))},[v.length,zt]);const ao=async t=>{if(v[u]){he(!0);try{const s=v[u].slide_type,i=s==="marketing_aquisicao_v2"||s==="marketing_qualidade_canal_v2"?"marketing_aquisicao":s;if(i==="mrr_evolution"){const P=["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"];for(const k of t){const x=(k.mes||"").toLowerCase().split("/");let S="";if(x.length===2){const H=P.indexOf(x[0].substring(0,3)),w=x[1].length===2?`20${x[1]}`:x[1];H!==-1&&(S=`${w}-${String(H+1).padStart(2,"0")}`)}S&&await J.from("slide_data_bank").upsert({mes:k.mes,mes_referencia:S,slide_type:"mrr_evolution",data:{mrr_total:k.mrrTotal||0,mrr_pontua:k.mrrPontua||0,mrr_pontua_pr:k.mrrPontuaPR||0,mrr_tron_pr:k.mrrTronPR||0},last_sync_at:new Date().toISOString()},{onConflict:"mes,slide_type"})}const M=t.map(k=>({mes:k.mes,mrrTotal:k.mrrTotal||0,mrrPontua:k.mrrPontua||0,mrrPontuaPR:k.mrrPontuaPR||0,mrrTronPR:k.mrrTronPR||0}));E(M),g(t)}else{const P=ps[i],M=(P==null?void 0:P.isGlobal)??!1,k=t.map(m=>{const{mes:ae,...c}=m;if(M)return{mes:"global",mes_referencia:"global",slide_type:i,data:c,last_sync_at:new Date().toISOString()};let r="";if(ae){const N=ae.split("/");if(N.length===2){const j={jan:"01",fev:"02",mar:"03",abr:"04",mai:"05",jun:"06",jul:"07",ago:"08",set:"09",out:"10",nov:"11",dez:"12"}[N[0].toLowerCase()]||"01";r=`${N[1].length===2?`20${N[1]}`:N[1]}-${j}`}}return{mes:ae,mes_referencia:r,slide_type:i,data:c,last_sync_at:new Date().toISOString()}}),{data:x}=await J.from("slide_data_bank").select("mes").eq("slide_type",i),S=new Set((x||[]).map(m=>m.mes)),H=new Set(t.map(m=>m.mes)),w=[...S].filter(m=>!H.has(m));w.length>0&&await J.from("slide_data_bank").delete().eq("slide_type",i).in("mes",w);const{error:U}=await J.from("slide_data_bank").upsert(k,{onConflict:"mes,slide_type"});if(U)throw console.error("Error upserting to slide_data_bank:",U),U;if(g(t),i==="mrr_growth"){const m=t.map(ae=>{var c;return{mes:((c=ae.mes)==null?void 0:c.split("/")[0])||ae.mes||"",novosOrganico:ae.novos_organico||0,migracao:ae.migracao||0}});ut(m)}if(i==="marketing_aquisicao"){const{mes:m,mesReferencia:ae}=Te(),c=t.find(r=>String(r.mes||"").trim().toLowerCase()===m.toLowerCase())??t[t.length-1]??t[0];if(c){const r=c.visitantes||0,N=c.budgetGoogleAds||0,D=c.budgetMetaAds||0,j=c.budgetOutros||0,O=c.budgetTikTokAds||0,$=N+D+j+O;let xe=(ga==null?void 0:ga.canais)||[],Z=ga==null?void 0:ga.metricas;if(xe.length===0){const{mesReferencia:ie}=Te(),{data:ce}=await Ye("marketing_aquisicao",ie);xe=(ce==null?void 0:ce.canais)||[],!Z&&ce&&(Z={totalLeads:ce.leads||0,fitScoreMedio:ce.fitScoreMedio||0,temperaturaMedio:ce.temperaturaMedio||0,distribuicaoFit:ce.distribuicaoFit||{icpPerfeito:0,bomFit:0,fitRegular:0,foraIcp:0,desqualificado:0},percentualQualificados:ce.percentualQualificados||0})}if(xe.length>0){const ce=xe.filter(F=>F.canal!=="Google Ads"&&F.canal!=="Google"&&F.canal!=="Meta Ads"&&F.canal!=="Meta"&&F.canal!=="Facebook"&&F.canal!=="TikTok Ads"&&F.canal!=="TikTok").reduce((F,ve)=>F+ve.leads,0),ke=xe.map(F=>{let ve=0;F.canal==="Google Ads"||F.canal==="Google"?ve=N:F.canal==="Meta Ads"||F.canal==="Meta"||F.canal==="Facebook"?ve=D:F.canal==="TikTok Ads"||F.canal==="TikTok"?ve=O:ve=ce>0?F.leads/ce*j:0;const Ue=F.leads>0?ve/F.leads:0;return{...F,budget:ve,cpl:Ue}}),je=Z||{totalLeads:0,percentualQualificados:0},ze=je.totalLeads*(je.percentualQualificados/100),Me=ze>0?$/ze:0,Pe={icpPerfeito:0,bomFit:0,fitRegular:0,foraIcp:0,desqualificado:0};va(F=>{var ve,Ue;return{funil:{visitantes:r,leads:((ve=F==null?void 0:F.funil)==null?void 0:ve.leads)||(Z==null?void 0:Z.totalLeads)||0,oportunidades:((Ue=F==null?void 0:F.funil)==null?void 0:Ue.oportunidades)||0},metricas:(F==null?void 0:F.metricas)||{totalLeads:(Z==null?void 0:Z.totalLeads)||0,fitScoreMedio:(Z==null?void 0:Z.fitScoreMedio)||0,temperaturaMedio:(Z==null?void 0:Z.temperaturaMedio)||0,distribuicaoFit:(Z==null?void 0:Z.distribuicaoFit)||Pe,percentualQualificados:(Z==null?void 0:Z.percentualQualificados)||0},canais:ke,cplQualificado:Me,mesReferencia:ae,fitScoreHistorico:F==null?void 0:F.fitScoreHistorico,taxaConversaoPipeline:F==null?void 0:F.taxaConversaoPipeline,input
2sManuais:{visitantes:r,budgetGoogleAds:N,budgetMetaAds:D,budgetOutros:j,budgetTikTokAds:O,budgetGoogleAdsOrcado:c.budgetGoogleAdsOrcado||0,budgetMetaAdsOrcado:c.budgetMetaAdsOrcado||0,budgetOutrosOrcado:c.budgetOutrosOrcado||0,budgetTikTokAdsOrcado:c.budgetTikTokAdsOrcado||0}}});try{const F=await $t(ae||"");F.length>0&&va(ve=>ve&&{...ve,taxaConversaoPipeline:F})}catch(F){console.warn("[marketing_aquisicao] Failed to rebuild taxaConversaoPipeline after editor save",F)}}else va(ie=>ie?{...ie,funil:{...ie.funil,visitantes:r},fitScoreHistorico:ie.fitScoreHistorico,taxaConversaoPipeline:ie.taxaConversaoPipeline,inputsManuais:{visitantes:r,budgetGoogleAds:N,budgetMetaAds:D,budgetOutros:j,budgetTikTokAds:O,budgetGoogleAdsOrcado:c.budgetGoogleAdsOrcado||0,budgetMetaAdsOrcado:c.budgetMetaAdsOrcado||0,budgetOutrosOrcado:c.budgetOutrosOrcado||0,budgetTikTokAdsOrcado:c.budgetTikTokAdsOrcado||0}}:null)}}if(i==="migracao_status_v2"&&t.length>0){const m=t[0];Ke({baseTronTotal:m.baseTronTotal??0,baseKeevoTotal:m.baseKeevoTotal??0,potencialMRR:m.potencialMRR??0})}if(i==="headcount_produtividade"){const{data:m}=await J.from("slide_data_bank").select("mes, data").eq("slide_type","mrr_evolution").order("mes_referencia",{ascending:!0}),ae={};m==null||m.forEach(r=>{var N;ae[r.mes]=Number((N=r.data)==null?void 0:N.mrr_total)||0});const c=t.map(r=>({...r,mrr:r.mrr||ae[r.mes]||0}));nn(c)}if(i==="suporte_indicadores"){const{data:m}=await J.from("slide_data_bank").select("*").eq("slide_type","suporte_indicadores").order("mes_referencia",{ascending:!0});if(m&&m.length>0){const ae=m.map(c=>({mes:c.mes||"",mes_referencia:c.mes_referencia||"",...c.data}));rn(ae)}}}Y.success("Dados salvos")}catch(d){console.error("Error saving editor data:",d),Y.error("Erro ao salvar dados")}finally{he(!1)}}},to=t=>{K(d=>({...d,...t}))},on=l.useRef("");l.useEffect(()=>{var t;on.current=((t=v[u])==null?void 0:t.id)||""},[u,v]);const pt=l.useCallback(async(t,d)=>{var M;const s=d||on.current;if(!s)return;const i=v.find(k=>k.id===s);if(!i)return;const{error:P}=await J.from("status_report_slides").update({title:t.title,subtitle:t.subtitle||null,milestone:((M=t.milestones)==null?void 0:M[0])||t.milestone||null,show_legend:t.showLegend,config:{...i.config||{},milestones:t.milestones||[],showNewBadge:t.showNewBadge,ano:t.ano,theme:t.theme,metaNMROverride:t.metaNMROverride,metaTreinamentoOverride:t.metaTreinamentoOverride,metaPontuaMigracaoOverride:t.metaPontuaMigracaoOverride}}).eq("id",s);if(P)throw P;R(k=>k.map(x=>x.id===s?{...x,title:t.title,subtitle:t.subtitle||null,config:{...x.config||{},milestones:t.milestones||[],showNewBadge:t.showNewBadge,ano:t.ano,theme:t.theme,metaNMROverride:t.metaNMROverride,metaTreinamentoOverride:t.metaTreinamentoOverride,metaPontuaMigracaoOverride:t.metaPontuaMigracaoOverride}}:x))},[v]),{status:so,resetStatus:Ht}=ur({data:V,onSave:pt,delay:1500,enabled:!!v[u]&&n==="editor"});l.useEffect(()=>{Ht()},[u,Ht]);const no=async()=>{ee(!0);try{const t={slideType:De};switch(De){case"concentracao_faturamento":if(!la){Y.error("Sincronize os dados de faturamento primeiro"),ee(!1);return}t.concentracaoData=la;break;case"nmr_channel_v2":case"nmr_channel_v3":if(!ue){Y.error("Sincronize os dados do HubSpot primeiro"),ee(!1);return}t.nmrData=ue;break;case"churn_analise":if(!_a){Y.error("Importe os dados de Churn primeiro"),ee(!1);return}t.churnData=_a;break;case"kpis_cac_payback":if(!fa){Y.error("Sincronize os dados de CAC primeiro"),ee(!1);return}t.cacPaybackData=fa;break;case"ticket_medio":if(!z||!Q){Y.error("Sincronize os dados de Ticket Médio primeiro"),ee(!1);return}t.ticketMedioData={data:z,summary:Q};break;case"contracts_by_team":if(!pe||!G){Y.error("Sincronize os dados de Contratos primeiro"),ee(!1);return}t.contractsData={data:pe,summary:G};break;case"mrr_growth":if(ya.length===0&&L.length===0){Y.error("Nenhum dado de clientes disponível"),ee(!1);return}t.mrrGrowthData={clientesData:ya,mrrData:L};break;case"migracao_status":if(!W&&!Ne){Y.error("Sincronize os dados de Migração primeiro"),ee(!1);return}t.migracaoData={hubspot:W,manual:Ne};break;case"migracao_status_v2":if(!Je){Y.error("Sincronize os dados de Migração V2 do HubSpot primeiro"),ee(!1);return}t.migracaoV2Data={data:Je,manualData:Fe};break;case"pipeline_funnel":if(!ca){Y.error("Sincronize os dados do Pipeline primeiro"),ee(!1);return}t.pipelineData=ca;break;case"kpis_saas_ltv":if(!ua){Y.error("Sincronize os dados de KPIs primeiro"),ee(!1);return}t.kpisSaaSData=ua;break;case"cohort_retencao":case"cohort_retencao_m13_m24":if(!Ka||Ka.cohorts.length===0){Y.error("Sincronize os dados do Cohort do Stripe primeiro"),ee(!1);return}t.editorData=Ka.cohorts.map(i=>({safra:i.safra,totalInicial:i.totalInicial,m1:i.retencao[0]??null,m2:i.retencao[1]??null,m3:i.retencao[2]??null,m4:i.retencao[3]??null,m5:i.retencao[4]??null,m6:i.retencao[5]??null,m7:i.retencao[6]??null,m8:i.retencao[7]??null,m9:i.retencao[8]??null,m10:i.retencao[9]??null,m11:i.retencao[10]??null,m12:i.retencao[11]??null}));break;
2case"desempenho_vendas":if(!ra){Y.error("Sincronize os dados do HubSpot primeiro"),ee(!1);return}t.desempenhoVendasData=ra;break;case"desempenho_vendas_acumulado":if(!Et){Y.error("Sincronize os dados do HubSpot primeiro"),ee(!1);return}t.desempenhoVendasData=Et;break;case"base_usuarios":if(!za){Y.error("Sincronize os dados do Stripe primeiro"),ee(!1);return}t.baseUsuariosData=za;break;case"marketing_aquisicao":case"headcount_produtividade":case"suporte_indicadores":case"budget_vs_realizado":case"budget_vs_realizado_v3":case"parceiro_performance":if(B.length===0){Y.error("Adicione dados no editor primeiro"),ee(!1);return}t.editorData=B;break;case"consolidado_8kpis":t.consolidadoData={mrrData:L,kpis:A,churnData:_a,kpisSaaSData:ua,cacPaybackData:fa,clientesData:ya};break;default:if(L.length===0){Y.error("Nenhum dado disponível para gerar insight"),ee(!1);return}t.data=L,t.kpis=A}const{data:d,error:s}=await J.functions.invoke("generate-slide-insight",{body:t});if(s)throw s;if(d!=null&&d.error)throw new Error(d.error);if(d!=null&&d.insights&&Array.isArray(d.insights)&&d.insights.length>0){const i={...V,milestones:d.insights,milestone:d.insights[0]};K(i),await pt(i),Y.success(`${d.insights.length} marcos gerados com sucesso!`)}else if(d!=null&&d.insight){const i={...V,milestone:d.insight,milestones:[d.insight]};K(i),await pt(i),Y.success("Insight gerado com sucesso!")}}catch(t){console.error("Error generating insight:",t),Y.error("Erro ao gerar insight. Tente novamente.")}finally{ee(!1)}},ro=async()=>{if(!(C!=null&&C.month_reference)||!v[u]){Y.error("Nenhum relatório selecionado");return}he(!0);try{const{data:t,error:d}=await J.from("slide_data_bank").select("*").eq("slide_type","mrr_evolution").lte("mes_referencia",C.month_reference).order("mes_referencia",{ascending:!1}).limit(12);if(d)throw d;let s;t&&t.length>0?s=t.reverse().map(i=>{var P,M;return{mes:(()=>{const[k,x]=i.mes_referencia.split("-");return`${["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"][parseInt(x,10)-1]} de ${k.slice(-2)}`})(),mrrTotal:ss(i.data),mrrPontua:Number((P=i.data)==null?void 0:P.mrr_pontua)||0,mrrPontuaPR:Number((M=i.data)==null?void 0:M.mrr_pontua_pr)||0,mrrTronPR:kt(i.data)}}):s=St,E(s),K(i=>({...i,..._n,pageNumber:i.pageNumber,ano:i.ano,mesReferencia:i.mesReferencia})),Y.success("Dados resetados e salvos com sucesso")}catch(t){console.error("Error resetting data:",t),Y.error("Erro ao resetar dados")}finally{he(!1)}},oo=async t=>{R(t);try{const d=t.map(P=>J.from("status_report_slides").update({sort_order:P.sort_order}).eq("id",P.id)),i=(await Promise.all(d)).filter(P=>P.error);i.length>0&&(console.error("Errors reordering slides:",i.map(P=>P.error)),Y.error("Erro ao salvar ordenação dos slides"))}catch(d){console.error("Error reordering slides:",d),Y.error("Erro ao reordenar slides")}},io=async(t="mrr_evolution")=>{var d;if(p)try{const s={cover:"Status Report",mrr_evolution:"Evolução MRR — Últimos 12 Meses",mrr_growth:"Crescimento MRR & Clientes",nmr_channel_v2:"MRR por Canal — Meta vs Realizado",nmr_channel_v3:"MRR por Canal — Meta vs Realizado (sem Migração)",nmr_channel_v3_acumulado:"MRR por Canal — Meta vs Realizado — Acumulado YTD",contracts_by_team:"Recorrência de Contratos — Por Time",ticket_medio:"Ticket Médio e Expansão de Receita",migracao_status:"Projeto Migração Tron/Keevo — Status",migracao_status_v2:"Migração V2 — Status Dinâmico HubSpot",pipeline_funnel:"Pipeline de Vendas — Funil Ativo",kpis_saas_ltv:"KPIs SaaS — Lifetime & Lifetime Value",kpis_cac_payback:"KPIs SaaS — CAC & CAC Payback",concentracao_faturamento:"Concentração de Faturamento",churn_analise:"Churn — Análise Completa",marketing_aquisicao:"Marketing — Aquisição & Qualidade",marketing_aquisicao_v2:"Marketing V2 — Funil, Qualidade & Taxa",marketing_qualidade_canal_v2:"Marketing V2 — Qualidade por Canal",cohort_retencao:"Cohort — Retenção Mensal por Safra",cohort_retencao_m13_m24:"Cohort — Retenção M13 a M24",headcount_produtividade:"Headcount & Produtividade",budget_vs_realizado:"Financeiro — Budget vs Realizado",budget_vs_realizado_v3:"Budget V3 — Layout Adaptativo",suporte_indicadores:"Suporte — Indicadores de Atendimento",atendimento_comparativo:"Atendimento — Julho x Agosto",parceiro_performance:"Programa Parceiro Pontua — Performance & Evolução",consolidado_8kpis:"Consolidado Mensal — 8 KPIs",de
2sempenho_vendas:"Desempenho em Vendas — Performance Mensal",desempenho_vendas_acumulado:"Desempenho em Vendas — Acumulado (Últimos 5 Meses)",base_usuarios:"Base de Usuários & Empresas — Evolução",agenda:"Agenda do Dia — Status Report",lead_scoring:"Lead Scoring — Qualificação de Leads",unit_economics:"Unit Economics — LTV & LTV/CAC",resultado_trimestral:"Resultado do Trimestre — Vendas"},P=((d=v.find(H=>H.slide_type===t))==null?void 0:d.title)||s[t]||"Novo Slide",{data:M,error:k}=await J.from("status_report_slides").insert({report_id:p,slide_type:t,title:P,show_legend:!0,sort_order:v.length}).select().single();if(k)throw k;const x={...M,review_status:M.review_status||"pending"};R([...v,x]);const S=v.length;I(S),await ka(x,S),Y.success("Slide adicionado")}catch(s){console.error("Error adding slide:",s),Y.error("Erro ao adicionar slide")}},co=async t=>{if(v.length<=1){Y.error("Não é possível excluir o último slide");return}try{const{error:d}=await J.from("status_report_slides").delete().eq("id",t);if(d)throw d;const s=v.filter(P=>P.id!==t);R(s),u>=s.length&&I(s.length-1);const i=Math.min(u,s.length-1);s[i]&&await ka(s[i],i),Y.success("Slide excluído")}catch(d){console.error("Error deleting slide:",d),Y.error("Erro ao excluir slide")}},lo=async(t,d)=>{try{const{error:s}=await J.from("status_report_slides").update({review_status:d}).eq("id",t);if(s)throw s;R(v.map(i=>i.id===t?{...i,review_status:d}:i))}catch(s){console.error("Error updating review status:",s),Y.error("Erro ao atualizar status")}},uo=async t=>{var s;if(t===u)return;const d=(s=v[u])==null?void 0:s.id;if(Ht(),d)try{await pt(V,d)}catch(i){console.error("Error saving config before slide switch:",i)}v[t]&&await ka(v[t],t),I(t)},mo=()=>{o("list"),y(null),X(null),R([]),I(0),tn()};return n==="list"?e.jsxs("div",{className:"min-h-screen bg-background flex flex-col",children:[e.jsx(mn,{}),e.jsxs("header",{className:"border-b bg-card px-6 py-4",children:[e.jsxs("nav",{className:"flex items-center text-sm text-muted-foreground mb-2",children:[e.jsx("a",{href:"/",className:"hover:text-foreground transition-colors",children:"Dashboard"}),e.jsx(Cs,{className:"h-4 w-4 mx-1"}),e.jsx("span",{className:"text-foreground font-medium",children:"Status Report"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-xl bg-gradient-to-br from-[#0A1E3F]/20 to-[#0A1E3F]/5",children:e.jsx(yn,{className:"h-6 w-6 text-[#0A1E3F]"})}),"Status Report Generator"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(de,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(un,{to:"/status-report/templates",children:[e.jsx(rs,{className:"h-4 w-4"}),"Templates"]})}),e.jsx(de,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(un,{to:"/system-settings?tab=slides",children:[e.jsx(Ma,{className:"h-4 w-4"}),"Banco de Dados"]})})]})]})]}),e.jsx("main",{className:"flex-1 p-6",children:e.jsx(Ii,{onCreateNew:()=>b(!0),onSelectReport:t=>{y(t),sn(t)},loadingReportId:Re?p:null})}),e.jsx(Oi,{open:h,onOpenChange:b,onCreated:t=>{y(t),sn(t)},previousReports:se})]}):e.jsxs("div",{className:"min-h-screen bg-background flex flex-col",children:[e.jsx(mn,{}),e.jsx(Go,{isFullscreen:_,onClose:()=>{f(!1),Ft.clearCache(),v[u]&&ka(v[u],u)},currentSlide:u,totalSlides:v.length,slideTypes:v.map(t=>t.slide_type),reportId:p||"",reportTitle:C==null?void 0:C.title,onPreviousSlide:()=>{u>0&&I(u-1)},onNextSlide:()=>{u<v.length-1&&I(u+1)},slides:v.map((t,d)=>{const s=Ft.getSlideData(t.id);return e.jsx(xn,{data:(s==null?void 0:s.mrrData)||L,kpis:A,config:(s==null?void 0:s.config)||(d===u?V:t.config||V),slideType:t.slide_type,isLoading:!1,presentationMode:!0,clientesData:(s==null?void 0:s.clientesData)||(ya.length>0?ya:void 0),nmrData:(s==null?void 0:s.nmrData)||ue||void 0,nmrV2Data:(s==null?void 0:s.nmrV2Data)||te||void 0,contractsData:(s==null?void 0:s.contractsData)||pe||void 0,contractsSummary:(s==null?void 0:s.contractsSummary)||G||void 0,ticketMedioData:(s==null?void 0:s.ticketMedioData)||z||void 0,ticketMedioSummary:(s==null?void 0:s.ticketMedioSummary)||Q||void 0,migracaoData:(s==null?void 0:s.migracaoData)||W||void 0,migracaoManualData:(s==null?void 0:s.migracaoManualData)||Ne||void 0,migracaoV2Data:(s==null?void 0:s.migracaoV2Data)||Je||void 0,migracaoV2ManualData:(s==null?void 0:s.migracaoV2ManualData)||Fe||void 0,pipelineFunnelData:(s==null?void 0:s.pi
2pelineFunnelData)||ca||void 0,kpisSaaSData:(s==null?void 0:s.kpisSaaSData)||ua||void 0,cacPaybackData:(s==null?void 0:s.cacPaybackData)||fa||void 0,concentracaoData:(s==null?void 0:s.concentracaoData)||la||void 0,churnData:(s==null?void 0:s.churnData)||_a||void 0,marketingData:(s==null?void 0:s.marketingData)||ga||void 0,headcountData:(s==null?void 0:s.headcountData)||Es||void 0,cohortData:(s==null?void 0:s.cohortData)||Ka||void 0,budgetData:(s==null?void 0:s.budgetData)||zs||void 0,suporteData:(s==null?void 0:s.suporteData)||Fs||void 0,atendimentoComparativoData:(s==null?void 0:s.atendimentoComparativoData)||Os||void 0,desempenhoVendasData:(s==null?void 0:s.desempenhoVendasData)||ra||void 0,baseUsuariosData:(s==null?void 0:s.baseUsuariosData)||za||void 0,resultadoTrimestralData:Bs||void 0},`presentation-slide-${t.id}`)})}),e.jsx("header",{className:"border-b bg-card px-6 py-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(de,{variant:"ghost",size:"sm",onClick:mo,className:"gap-1",children:[e.jsx(Lo,{className:"h-4 w-4"}),"Voltar"]}),e.jsx(Ie,{orientation:"vertical",className:"h-6"}),e.jsx("span",{className:"font-medium",children:C==null?void 0:C.title}),e.jsx(mr,{status:so})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(de,{variant:"outline",size:"sm",onClick:()=>Qs(!0),className:"gap-1.5",children:[e.jsx(Ma,{className:"h-4 w-4"}),"Banco de Dados"]}),(()=>{var d;const t=De==="marketing_aquisicao_v2"||De==="marketing_qualidade_canal_v2"?"marketing_aquisicao":De;return(d=ps[t])!=null&&d.hasEditor?e.jsx(Vi,{slideType:t,data:t==="mrr_evolution"?L:B,onSave:ao,isSaving:_e},`data-editor-${u}-${t}`):null})(),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(yn,{className:"h-4 w-4"}),e.jsx("span",{children:"1920 × 1080px"})]}),e.jsx(Bo,{isLoading:jr,onClick:async()=>{Ks(!0);try{const{mesReferencia:t}=Te();await Ft.preloadAll(v,t),f(!0)}catch(t){console.error("Error preloading presentation data:",t),Y.error("Erro ao preparar apresentação")}finally{Ks(!1)}}}),p&&e.jsx(Gi,{reportId:p,reportTitle:C==null?void 0:C.title}),e.jsx(Fi,{getSlideElement:()=>{var t;return((t=a.current)==null?void 0:t.getSlideElement())||null}
2,slides:v,currentSlideIndex:u,onNavigateToSlide:async t=>{I(t),v[t]&&await ka(v[t],t)},reportTitle:C==null?void 0:C.title,currentTheme:V.theme})]})]})}),e.jsx("main",{className:"flex-1 p-4",children:e.jsxs(Di,{direction:"horizontal",className:"h-[calc(100vh-140px)] rounded-xl border bg-card",children:[e.jsx(Pn,{defaultSize:30,minSize:25,maxSize:40,children:e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"p-4 border-b",children:[e.jsx(Hi,{slides:v,currentSlideIndex:u,onSelectSlide:uo,onReorderSlides:oo,onAddSlide:io,onDeleteSlide:co,onUpdateReviewStatus:lo}),e.jsx(Bi,{syncs:Sr})]}),e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsx(zi,{acumuladoCanais:De==="nmr_channel_v3_acumulado"&&(ta!=null&&ta.detalhesCanal)?Object.keys(ta.detalhesCanal):[],config:V,onConfigChange:to,onImportData:E,onReset:ro,onGenerateInsight:no,isGeneratingInsight:oe,slideType:De,lastSyncAt:kr,onSyncHubSpot:(De==="nmr_channel_v2"||De==="nmr_channel_v3")&&(C!=null&&C.month_reference)?()=>{const[t,d]=C.month_reference.split("-");Cr(parseInt(t),parseInt(d))}:void 0,isLoadingNMR:Oe("nmr_channel_v2"),onSyncContractsHubSpot:De==="contracts_by_team"&&(C!=null&&C.month_reference)?()=>Rr(C.month_reference):void 0,isLoadingContracts:Oe("contracts_by_team"),onSyncTicketMedioHubSpot:De==="ticket_medio"&&(C!=null&&C.month_reference)?()=>Tr(C.month_reference):void 0,isLoadingTicketMedio:Oe("ticket_medio"),onSyncMigracaoHubSpot:De==="migracao_status"?()=>{var d;const t=(d=C==null?void 0:C.month_reference)==null?void 0:d.split("-")[0];Er(t?parseInt(t):2025)}:void 0,isLoadingMigracao:Oe("migracao_status"),onSyncPipelineFunnelHubSpot:De==="pipeline_funnel"?()=>Fr():void 0,isLoadingPipelineFunnel:Oe("pipeline_funnel"),onSyncKpisSaaSStripe:De==="kpis_saas_ltv"?()=>Ir():void 0,isLoadingKpisSaaS:Oe("kpis_saas_ltv"),onSyncCacPaybackStripe:De==="kpis_cac_payback"?()=>an("kpis_cac_payback","CAC Payback",["despesasMarketing","despesasVendas"],t=>Or({},t)):void 0,isLoadingCacPayback:Oe("kpis_cac_payback"),onSyncConcentracaoStripe:De==="concentracao_faturamento"?()=>Lr():void 0,isLoadingConcentracao:Oe("concentracao_faturamento"),onSyncMarketingHubSpot:De==="marketing_aquisicao"||De==="marketing_aquisicao_v2"||De==="marketing_qualidade_canal_v2"?()=>an("marketing_aquisicao","Marketing Aquisição",["visitantes","budgetGoogleAds","budgetMetaAds","budgetOutros"],t=>Vr(t)):void 0,isLoadingMarketing:Oe("marketing_aquisicao"),onSyncCohortStripe:De==="cohort_retencao"||De==="cohort_retencao_m13_m24"?()=>$r():void 0,isLoadingCohort:Oe("cohort_retencao"),onSyncDesempenhoHubSpot:De==="desempenho_vendas"?()=>qr():De==="desempenho_vendas_acumulado"?()=>Hr(4):void 0,isLoadingDesempenho:Oe("desempenho_vendas")||Oe("desempenho_vendas_acumulado"),onAddCheckoutManual:De==="desempenho_vendas"?()=>Ls(!0):void 0,onAddCheckoutManualContratos:De==="contracts_by_team"?()=>Vs(!0):void 0,onAddCheckoutManualNMR:De==="nmr_channel_v2"?()=>$s(!0):De==="nmr_channel_v3_acumulado"?()=>qs(!0):void 0,onAddCheckoutManualTicketMedio:De==="ticket_medio"?()=>Hs(!0):void 0,mesReferencia:(C==null?void 0:C.month_reference)||""})})]})}),e.jsx(Ai,{withHandle:!0}),e.jsx(Pn,{defaultSize:70,children:e.jsx("div",{className:"h-full p-4",children:e.jsx(xn,{ref:a,data:L,kpis:A,config:V,slideType:De,isLoading:zt,clientesData:ya.length>0?ya:void 0,nmrData:ue||void 0,nmrV2Data:te||void 0,contractsData:pe||void 0,contractsSummary:G||void 0,ticketMedioData:z||void 0,ticketMedioSummary:Q||void 0,migracaoData:W||void 0,migracaoManualData:Ne||void 0,migracaoV2Data:Je||void 0,migracaoV2ManualData:Fe||void 0,pipelineFunnelData:ca||void 0,kpisSaaSData:ua||void 0,cacPaybackData:fa||void 0,concentracaoData:la||void 0,churnData:_a||void 0,marketingData:ga||void 0,headcountData:Es||void 0,cohortData:Ka||void 0,budgetData:zs||void 0,suporteData:Fs||void 0,atendimentoComparativoData:Os||void 0,desempenhoVendasData:ra||void 0,desempenhoVendasAcumuladoData:Et||void 0,nmrV3AcumuladoData:ta,nmrV3AcumuladoLabel:fr,baseUsuariosData:za||void 0,resultadoTrimestralData:Bs||void 0})})})]})}),e.jsx(Ra,{open:Ys,onOpenChange:async t=>{Qs(t),!t&&v[u]&&await ka(v[u],u)},children:e.jsxs(Pa,{className:"max-w-5xl max-h-[85vh] overflow-y-auto",children:[e.jsx(Da,{children:e.jsxs(Aa,{className:"flex items-center gap-2",children:[e.jsx(Ma,{className:"h-5 w-5"}),"Banco de Dados por Slide"]})}),Ys&&e.jsx(nc,{})]})}),e.jsx(Ui,{open:Nr,onOpenChange:mt,fieldsToOverwrite:wr,slideLabel:Mr,onConfirm:Qr,onCancel:Wr}),e.jsx(as,{open:xr,onOpenChange:Ls,initialData:ra==null?void 0:ra.checkoutManualData,onSave:Gr}),e.jsx(as,{open:_r,onOpenChange:Vs,mode:"deals-only",initialData:G==null?void 0:G.checkoutManualEntries,onSave:Jr}),e.jsx(Dn,{open:vr,onOpenChange:$s,initialValue:(ue==null?void 0:ue.checkoutManualVendasPontua)||0,onSave:Br}),e.jsx(Dn,{open:br,onOpenChange:qs,initialValue:(ta==null?void 0:ta.checkoutManualA
2cumulado)||0,onSave:Ur}),e.jsx(as,{open:yr,onOpenChange:Hs,mode:"ticket",initialData:Q==null?void 0:Q.checkoutManualEntries,onSave:Kr})]})}export{Yc 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.