1import{j as e,r as c}from"./index-BGIyKXzP.js";import{a7 as Mn,g,f as p,K as ne,M as te,N as re,O as ie,Q as q,a as Ds,Y as Ms,u as Ba,s as B,v as P,o as F,cl as Ke,t as N,i as G,X as be,_ as ds,$ as cs,a0 as us,a1 as ms,a2 as xs,cD as Qa,aJ as Ha,I as z,a3 as Es,aQ as He,aR as Ye,aS as Je,aT as Xe,aU as Ze,aV as es,aW as ss,aX as as,bG as Ya,cv as Ja,ck as Qe,cs as _e,b6 as Ts,b as Rn,G as Fn,k as Pn,H as qn,bi as On,cE as Js,cF as Fs,cq as ls,L as Xs,a5 as Zs,r as Gn,cp as Pe,A as Ln,cG as _n,ab as Un,V as zn,bR as ea,W as Xa,cH as Pa,aK as $n,bH as Vn,cf as Wn}from"./index-BANeb5Xq.js";import{S as de}from"./separator-DjC4YKUC.js";import{C as _s}from"./checkbox-B6ATRKFI.js";import{S as Be}from"./switch-O4VKikdG.js";import{T as qa,a as Ps}from"./toggle-group-6ZxTpiAy.js";import{T as Ue,a as ze,b as $,c as w,d as $e,e as y}from"./table-lfPQebfi.js";import{C as Oa,b as Ga,a as La}from"./collapsible-stDhbyCu.js";import{u as Kn}from"./useCopyToClipboard-DQ87T9LU.js";import{f as Us}from"./funnels.api-CY66irkn.js";import{P as fs}from"./plus-aU1FCYkA.js";import{T as hs}from"./trash-2-D3FklAoN.js";import{T as Za}from"./target-f93MnPZ8.js";import{S as xa}from"./send-BY99leUo.js";import{H as ha}from"./history-5EZLTB0V.js";import{P as ks}from"./pencil-Bv9Wy9pn.js";import{R as Bn}from"./rotate-ccw-BBOn6Mo0.js";import{C as en}from"./calendar-days-Bm8CLFfG.js";import{F as Qn}from"./file-text-BHXwzntS.js";import{C as qs}from"./copy-Bpya4Lo9.js";import{E as Hn}from"./external-link-D7qZduv2.js";import{S as Yn}from"./smartphone-CiVmt8gS.js";import{K as ia}from"./key-pI5vSSQ9.js";import{S as Jn}from"./search-DArym9XO.js";/** 2 * @license lucide-react v0.562.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const Xn=[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]],oa=Mn("plug",Xn),Zn=()=>({currentStageIds:[],tagIds:[],tagMode:"any",passedStageIds:[],passedStageMode:"any"});function sa(t,i){return t.includes(i)?t.filter(h=>h!==i):[...t,i]}function sn({groups:t,stages:i,tags:h,onChange:C}){const f=(S,x)=>{C(t.map((E,V)=>V===S?{...E,...x}:E))};return e.jsxs("section",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Condições avançadas"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Dentro de cada grupo as condições usam E. Entre os grupos, a regra usa OU."})]}),e.jsxs(g,{type:"button",variant:"outline",size:"sm",onClick:()=>C([...t,Zn()]),disabled:t.length>=10,children:[e.jsx(fs,{className:"mr-2 h-4 w-4"}),"Adicionar grupo OU"]})]}),t.map((S,x)=>e.jsxs("div",{className:"space-y-4 rounded-md border border-border p-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("span",{className:"text-xs font-semibold uppercase text-muted-foreground",children:x===0?"Quando":"Ou quando"}),e.jsx(g,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>C(t.filter((E,V)=>V!==x)),"aria-label":`Remover grupo ${x+1}`,children:e.jsx(hs,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Está atualmente em qualquer destas etapas"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:i.map(E=>e.jsx(g,{type:"button",size:"sm",variant:S.currentStageIds.includes(E.id)?"default":"outline",onClick:()=>f(x,{currentStageIds:sa(S.currentStageIds,E.id)}),children:E.name},E.id))})]}),e.jsxs("div",{className:"grid gap-3 lg:grid-cols-[180px_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Condição de tags"}),e.jsxs(ne,{value:S.tagMode,onValueChange:E=>f(x,{tagMode:E}),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsxs(ie,{children:[e.jsx(q,{value:"any",children:"Tem qualquer tag"}),e.jsx(q,{value:"all",children:"Tem todas as tags"}),e.jsx(q,{value:"none",children:"Não tem as tags"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Tags"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:h.map(E=>e.jsx(g,{type:"button",size:"sm",variant:S.tagIds.includes(E.id)?"default":"outline",onClick:()=>f(x,{tagIds:sa(S.tagIds,E.id)}),children:E.name},E.id))})]})]}),e.jsxs("div",{className:"grid gap-3 lg:grid-cols-[180px_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Histórico de etapas"}),e.jsxs(ne,{value:S.passedStageMode,onValueChange:E=>f(x,{passedStageMode:E}),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsxs(ie,{children:[e.jsx(q,{value:"any",children:"Passou por qualquer"}),e.jsx(q,{value:"all",children:"Passou por todas"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Etapas do histórico"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:i.map(E=>e.jsx(g,{type:"button",size:"sm",variant:S.passedStageIds.includes(E.id)?"default":"outline",onClick:()=>f(x,{passedStageIds:sa(S.passedStageIds,E.id)}),children:E.name},E.id))})]})]})]},x))]})}const Os="__any_funnel__",aa="__any_stage__";
6function na(t){return t?new Date(t).toLocaleString("pt-BR"):"-"}function et(t){if(!t)return[];try{const i=JSON.parse(t),h=[];i.events_received!==void 0&&h.push(`Eventos recebidos: ${String(i.events_received)}`),Array.isArray(i.messages)&&h.push(i.messages.length?`Mensagens: ${i.messages.join(", ")}`:"Mensagens: nenhuma"),typeof i.fbtrace_id=="string"&&i.fbtrace_id&&h.push(`fbtrace_id: ${i.fbtrace_id}`);const C=i.error;if(C&&typeof C=="object"){const f=C,S=typeof f.message=="string"?f.message:null,x=f.code!==void 0?`code ${String(f.code)}`:null;h.push(["Erro Meta:",S,x].filter(Boolean).join(" "))}return h.length?h:[t]}catch{return[t]}}function st(t){return t.errorMessage?t.errorMessage:t.status==="FAILED"&&t.responseBody?t.responseBody:null}function _a(t){switch(t){case"SUCCESS":return{label:"Sucesso",variant:"default"};case"FAILED":return{label:"Falhou",variant:"destructive"};case"RETRYING":return{label:"Tentando novamente",variant:"secondary"};case"PENDING":return{label:"Pendente",variant:"secondary"};default:return{label:"Sem envio",variant:"outline"}}}function As(t){var i,h;return{name:"",isActive:!0,pixelId:"",accessToken:"",testEventCode:"",internalTriggerType:((i=t==null?void 0:t.triggers[0])==null?void 0:i.type)??"DEAL_STAGE_ENTERED",funnelId:null,stageId:null,listFilterMode:"any",listFilterIds:[],conditionGroups:[],metaEventName:(t==null?void 0:t.metaEventNamePresets[0])??"Lead",sendValueMode:((h=t==null?void 0:t.sendValueModes[0])==null?void 0:h.value)??"NONE",dedupeWindowMinutes:"60"}}function at(t){var i,h;return{name:t.name,isActive:t.isActive,pixelId:t.pixelId,accessToken:"",testEventCode:"",internalTriggerType:t.internalTriggerType,funnelId:t.triggerConfig.funnelId??null,stageId:t.triggerConfig.stageId??null,listFilterMode:((i=t.triggerConfig.listFilter)==null?void 0:i.mode)??"any",listFilterIds:((h=t.triggerConfig.listFilter)==null?void 0:h.listIds)??[],conditionGroups:t.triggerConfig.conditionGroups??[],metaEventName:t.metaEventName,sendValueMode:t.sendValueMode,dedupeWindowMinutes:String(t.dedupeWindowMinutes)}}function nt({companyKey:t,isLoadingPermissions:i,canManageIntegrations:h}){const{toast:C}=Ds(),f=Ms(),[S,x]=Ba(),[E,V]=c.useState(!1),[j,W]=c.useState(null),[he,D]=c.useState(null),[A,T]=c.useState(null),[K,oe]=c.useState(!1),[o,b]=c.useState(As()),[m,le]=c.useState({}),Ie=S.get("listId"),X=!!t&&h,{data:M,isLoading:ge,error:pe}=B({queryKey:["meta-conversions-catalog",t],queryFn:async()=>{const a=await Ke.getCatalog();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:ce,isLoading:Ce,error:we}=B({queryKey:["meta-conversions-rules",t],queryFn:async()=>{const a=await Ke.listRules();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:ve,error:Ee}=B({queryKey:["meta-conversions-funnels",t],queryFn:async()=>{const a=await Us.list();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:Q,error:ue}=B({queryKey:["meta-conversions-stages",t],queryFn:async()=>{const a=await Us.getAllStages();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:U,error:Oe}=B({queryKey:["meta-conversions-contact-lists",t],queryFn:async()=>{const a=await Ya.listLists();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:me,error:fe}=B({queryKey:["meta-conversions-contact-tags",t],queryFn:async()=>{const a=await Ja.listTags();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:H,isLoading:je,error:Ne}=B({queryKey:["meta-conversions-deliveries",t,A==null?void 0:A.id],queryFn:async()=>{if(!A)throw new Error("Selecione uma regra");const a=await Ke.listDeliveries(A.id,{limit:20});if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:!!A});c.useEffect(()=>{!M||j||E||b(As(M))},[M,j,E]);const xe=c.useMemo(()=>{const a=new Map;
6return((M==null?void 0:M.triggers)??[]).forEach(s=>a.set(s.type,s)),a},[M]),Te=c.useMemo(()=>{const a=new Map;return(ve??[]).forEach(s=>a.set(s.id,s)),a},[ve]),ke=c.useMemo(()=>{const a=new Map;return(Q??[]).forEach(s=>a.set(s.id,s)),a},[Q]),I=xe.get(o.internalTriggerType),ee=c.useMemo(()=>Q?o.funnelId?Q.filter(a=>a.funnelId===o.funnelId):Q:[],[o.funnelId,Q]);c.useEffect(()=>{if(!o.stageId)return;ee.some(s=>s.id===o.stageId)||b(s=>({...s,stageId:null}))},[o.stageId,ee]);const De=P({mutationFn:async a=>{if(a.mode==="create"){const r=await Ke.createRule({...a.data,accessToken:a.data.accessToken||""});if(!r.success||!r.data)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return r.data}const s=await Ke.updateRule(a.ruleId||"",a.data);if(!s.success||!s.data)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s.data},onSuccess:(a,s)=>{f.invalidateQueries({queryKey:["meta-conversions-rules",t]}),s.ruleId&&f.invalidateQueries({queryKey:["meta-conversions-deliveries",t,s.ruleId]}),V(!1),W(null),oe(!1),b(As(M)),C({title:s.mode==="create"?"Regra Meta criada":"Regra Meta atualizada"})},onError:a=>{C({variant:"destructive",title:j?"Não foi possÃvel salvar a regra de conversão":"Não foi possÃvel criar a regra de conversão",description:F(a)})}}),Se=P({mutationFn:async({ruleId:a,isActive:s})=>{const r=await Ke.updateRule(a,{isActive:s});if(!r.success||!r.data)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return r.data},onSuccess:()=>{f.invalidateQueries({queryKey:["meta-conversions-rules",t]})},onError:a=>{C({variant:"destructive",title:"Não foi possÃvel ativar ou pausar a regra",description:F(a)})}}),v=P({mutationFn:async a=>{const s=await Ke.removeRule(a);if(!s.success)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s},onSuccess:(a,s)=>{f.invalidateQueries({queryKey:["meta-conversions-rules",t]}),f.removeQueries({queryKey:["meta-conversions-deliveries",t,s]}),D(null),(A==null?void 0:A.id)===s&&T(null),C({title:"Regra Meta removida"})},onError:a=>{C({variant:"destructive",title:"Não foi possÃvel excluir a regra",description:F(a)})}}),k=P({mutationFn:async a=>{const s=await Ke.testRule(a);if(!s.success||!s.data)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s.data},onSuccess:(a,s)=>{if(f.invalidateQueries({queryKey:["meta-conversions-rules",t]}),f.invalidateQueries({queryKey:["meta-conversions-deliveries",t,s]}),a.queued){C({title:"Teste Meta enfileirado"});return}C({variant:"destructive",title:"Teste não entrou na fila",description:"O evento foi registrado, mas a fila não estava disponÃvel."})},onError:a=>{C({variant:"destructive",title:"Não foi possÃvel testar a regra",description:F(a)})}}),qe=P({mutationFn:async({ruleId:a,deliveryId:s})=>{const r=await Ke.retryDelivery(a,s);if(!r.success||!r.data)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return r.data},onSuccess:(a,s)=>{f.invalidateQueries({queryKey:["meta-conversions-rules",t]}),f.invalidateQueries({queryKey:["meta-conversions-deliveries",t,s.ruleId]}),C({title:"Evento reenfileirado"})},onError:a=>{C({variant:"destructive",title:"Não foi possÃvel reenviar o evento",description:F(a)})}}),Re=a=>{W(null),oe(!1),le({}),b({...As(M),...a}),V(!0)};c.useEffect(()=>{if(!Ie||!(U!=null&&U.length)||E)return;const a=U.find(r=>r.id===Ie);if(!a)return;Re({name:`Enviar Meta para ${a.name}`,listFilterIds:[a.id],listFilterMode:"any",metaEventName:"Lead"});const s=new URLSearchParams(S);s.delete("listId"),x(s,{replace:!0})},[M,U,E,Ie,S,x]);const ye=a=>{W(a),oe(!1),le({}),b(at(a)),V(!0)},Ge=a=>{V(a),a||(W(null),oe(!1),le({}),b(As(M)))},Ve=a=>{b(s=>({...s,listFilterIds:s.listFilterIds.includes(a)?s.listFilterIds.filter(r=>r!==a):[...s.listFilterIds,a]}))},O=a=>{le(s=>{if(!s[a])return s;const r={...s};return delete r[a],r})},ns=()=>{const a=o.name.trim(),s=o.pixelId.trim(),r=o.accessToken.trim(),u=o.metaEventName.trim(),d=Number.parseInt(o.dedupeWindowMinutes,10),L={};if(a||(L.name="Informe o nome da regra"),s||(L.pixelId="Informe o pixel ID"),!j&&!r&&(L.accessToken="Informe o access token"),u||(L.metaEventName="Informe o nome do evento Meta"),I||(L.trigger="Selecione um trigger válido"),I!=null&&I.config.funnelRequired&&!o.funnelId&&(L.funnelId="Selecione o funil para este trigger"),I!=null&&I.config.stageRequired&&!o.stageId&&(L.stageId="Selecione a etapa para este trigger"),(!Number.isFinite(d)||d<1||d>1440)&&(L.dedupeWindowMinutes="A janela de deduplicação deve estar entre 1 e 1440 minutos"),le(L),Object.keys(L).length>0){C({variant:"destructive",title:"Corrija os campos destacados"});return}const Y={name:a,isActive:o.isActive,pixelId:s,internalTriggerType:o.internalTriggerType,triggerConfig:{funnelId:o.funnelId,stageId:o.stageId,listFilter:o.listFilterIds.length>0?{mode:o.listFilterMode,listIds:o.listFilterIds}:null,conditionGroups:o.conditionGroups},metaEventName:u,sendValueMode:o.sendValueMode,dedupeWindowMinutes:d,...r?{accessToken:r}:{},...j?K?{testEventCode:null}:o.testEventCode.trim()?{testEventCode:o.testEventCode.trim()}:{}:{testEventCode:o.testEventCode.trim()||null}};De.mutate({mode:j?"update":"create",ruleId:j==null?void 0:j.id,data:Y})},Le=we instanceof Error?we.message:pe instanceof Error?pe.message:Ee instanceof Error?Ee.message:ue instanceof Error?ue.message:Oe instanceof Error?Oe.message:fe instanceof Error?fe.message:null;return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Za,{className:"h-4 w-4"}),"Meta Conversions API"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Cadastre regras por evento comercial do funil para enviar conversões assÃncronas ao pixel da Meta."})]}),e.jsxs(g,{size:"sm",onClick:Re,disabled:!h||ge,children:[e.jsx(fs,{className:"mr-2 h-4 w-4"}),"Nova regra Meta"]})]}),e.jsx("div",{children:i?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):h?Ce||ge?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):Le?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:Le}):e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Regra"}),e.jsx(w,{children:"Trigger"}),e.jsx(w,{children:"Evento Meta"}),e.jsx(w,{children:"Status"}),e.jsx(w,{children:"Ãltima entrega"}),e.jsx(w,{className:"text-right",children:"Ações"})]})}),e.jsx($e,{children:ce&&ce.length>0?ce.map(a=>{var L,Y,se,ae,Me,Fe,Z;const s=xe.get(a.internalTriggerType),r=_a(a.lastDeliveryStatus),u=a.triggerConfig.funnelId?((L=Te.get(a.triggerConfig.funnelId))==null?void 0:L.name)??"Funil remov
6ido":"Qualquer funil",d=a.triggerConfig.stageId?((Y=ke.get(a.triggerConfig.stageId))==null?void 0:Y.name)??"Etapa removida":"Qualquer etapa";return e.jsxs($,{children:[e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"font-medium",children:a.name}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Pixel ",a.pixelId," ⢠",((se=a._count)==null?void 0:se.deliveries)??0," eventos registrados"]})]})}),e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"space-y-1 text-sm",children:[e.jsx("div",{children:(s==null?void 0:s.label)??a.internalTriggerType}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[u," ⢠",d]}),(((ae=a.triggerConfig.conditionGroups)==null?void 0:ae.length)??0)>0?e.jsxs("div",{className:"text-xs font-medium text-primary",children:[(Me=a.triggerConfig.conditionGroups)==null?void 0:Me.length," grupo(s) de condições E/OU"]}):null]})}),e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"space-y-1 text-sm",children:[e.jsx("div",{className:"font-medium",children:a.metaEventName}),e.jsx("div",{className:"text-xs text-muted-foreground",children:a.sendValueMode==="AUTO_DEAL_VALUE"?"Usa valor do deal":"Sem value/currency"})]})}),e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Be,{checked:a.isActive,onCheckedChange:ts=>Se.mutate({ruleId:a.id,isActive:ts}),disabled:Se.isPending}),e.jsx("span",{className:"text-sm",children:a.isActive?"Ativa":"Pausada"})]}),e.jsx(be,{variant:r.variant,children:r.label})]})}),e.jsxs(y,{className:"align-top text-xs text-muted-foreground",children:[e.jsx("div",{children:na(((Fe=a.lastDelivery)==null?void 0:Fe.deliveredAt)??a.lastDeliveryAt)}),(Z=a.lastDelivery)!=null&&Z.errorMessage?e.jsx("div",{className:"mt-1 max-w-[220px] truncate text-destructive",children:a.lastDelivery.errorMessage}):null]}),e.jsx(y,{className:"text-right align-top",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Enviar teste da regra ${a.name}`,onClick:()=>k.mutate(a.id),disabled:k.isPending,title:"Enviar teste",children:e.jsx(xa,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Abrir histórico da regra ${a.name}`,onClick:()=>T(a),title:"Ver histórico",children:e.jsx(ha,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Editar a regra ${a.name}`,onClick:()=>ye(a),title:"Editar regra",children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Remover a regra ${a.name}`,className:"text-destructive hover:text-destructive hover:bg-destructive/10",onClick:()=>D(a),title:"Remover regra",children:e.jsx(hs,{className:"h-4 w-4"})})]})})]},a.id)}):e.jsx($,{children:e.jsx(y,{colSpan:6,className:"py-8 text-center text-muted-foreground",children:"Nenhuma regra Meta configurada."})})})]}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Você não tem permissão para gerenciar integrações. Solicite acesso a um administrador."})})]}),e.jsx(ds,{open:E,onOpenChange:Ge,children:e.jsxs(cs,{showCloseButton:!1,className:"!flex !h-[calc(100dvh-1rem)] !max-h-[calc(100dvh-1rem)] !w-[calc(100vw-2rem)] !max-w-5xl !flex-col !gap-0 !overflow-hidden !p-0",children:[e.jsxs(us,{className:"shrink-0 border-b px-5 py-5 pr-14 text-left sm:px-6",children:[e.jsx(ms,{children:j?"Editar regra Meta":"Nova regra Meta"}),e.jsx(xs,{children:"Configure qual trigger comercial deve gerar um evento na Meta e com qual payload."})]}),e.jsxs(Qa,{className:"absolute right-4 top-4 flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",children:[e.jsx(Ha,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Fechar"})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-x-hidden overflow-y-auto overscroll-contain px-5 py-5 sm:px-6",children:e.jsxs("div",{className:"space-y-5",children:[e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Credenciais"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"meta-rule-name",children:"Nome da regra"}),e.jsx(z,{id:"meta-rule-name",placeholder:"Ex: Lead quente - etapa proposta",value:o.name,"aria-invalid":m.name?!0:void 0,className:m.name?"border-destructive":void 0,onChange:a=>{O("name"),b(s=>({...s,name:a.target.value}))}}),m.name?e.jsx("p",{className:"text-xs text-destructive",children:m.name}):null]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"meta-rule-pixel",children:"Pixel ID"}),e.jsx(z,{id:"meta-rule-pixel",placeholder:"123456789012345",value:o.pixelId,"aria-invalid":m.pixelId?!0:void 0,className:m.pixelId?"border-destructive":void 0,onChange:a=>{O("pixelId"),b(s=>({...s,pixelId:a.target.value}))}}),m.pixelId?e.jsx("p",{className:"text-xs text-destructive",children:m.pixelId}):null]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"meta-rule-test-code",children:"Test event code (opcional)"}),e.jsx(z,{id:"meta-rule-test-code",type:"password",placeholder:j!=null&&j.testEventCodeConfigured?"Mantido. Digite apenas se quiser trocar.":"TEST12345",value:o.testEventCode,disabled:K,onChange:a=>b(s=>({...s,testEventCode:a.target.value}))})]})]}),j!=null&&j.testEventCodeConfigured?e.jsxs("div",{className:"flex flex-col gap-2 text-xs text-muted-foreground sm:flex-row sm:items-center sm:justify-between",children:[e.jsx("span",{children:K?"O código atual será removido ao salvar.":"Existe um código de teste salvo nesta regra."}),e.jsx(g,{type:"button",variant:"ghost",size:"sm",className:"self-start sm:self-auto",onClick:()=>oe(a=>!a),children:K?"Manter código atual":"Remover código atual"})]}):null,e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"meta-rule-token",children:"Access token"}),e.jsx(z,{id:"meta-rule-token",type:"password",placeholder:j!=null&&j.accessTokenConfigured?"Preenchido. Digite apenas se quiser trocar.":"EAAB...",value:o.accessToken,"aria-invalid":m.accessToken?!0:void 0,className:m.accessToken?"border-destructive":void 0,onChange:a=>{O("accessToken"),b(s=>({...s,accessToken:a.target.value}))}}),m.accessToken?e.jsx("p",{className:"text-xs text-destructive",children:m.accessToken}):null]})]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Gatilho interno"})}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[1.2fr_1fr_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Evento interno observado"}),e.jsxs(ne,{value:o.internalTriggerType,onValueChange:a=>{O("trigger"),O("funnelId"),O("stageId"),b(s=>({...s,internalTriggerType:a,funnelId:null,stageId:null}))},children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione o trigger"})}),e.jsx(ie,{children:((M==null?void 0:M.triggers)??[]).map(a=>e.jsx(q,{value:a.type,children:a.label},a.type))})]}),m.trigger?e.jsx("p",{className:"text-xs text-destructive",children:m.trigger}
6):null,I?e.jsx("p",{className:"text-xs text-muted-foreground",children:I.description}):null]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Funil"}),e.jsxs(ne,{value:I!=null&&I.config.funnelRequired?o.funnelId??void 0:o.funnelId??Os,onValueChange:a=>{O("funnelId"),O("stageId"),b(s=>({...s,funnelId:a===Os?null:a,stageId:a===Os?s.stageId:null}))},children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione o funil"})}),e.jsxs(ie,{children:[I!=null&&I.config.funnelRequired?null:e.jsx(q,{value:Os,children:"Qualquer funil"}),(ve??[]).map(a=>e.jsx(q,{value:a.id,children:a.name},a.id))]})]}),m.funnelId?e.jsx("p",{className:"text-xs text-destructive",children:m.funnelId}):null]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Etapa"}),e.jsxs(ne,{value:I!=null&&I.config.stageRequired?o.stageId??void 0:o.stageId??aa,onValueChange:a=>{O("stageId"),b(s=>({...s,stageId:a===aa?null:a}))},children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione a etapa"})}),e.jsxs(ie,{children:[I!=null&&I.config.stageRequired?null:e.jsx(q,{value:aa,children:"Qualquer etapa"}),ee.map(a=>e.jsx(q,{value:a.id,children:a.name},a.id))]})]}),m.stageId?e.jsx("p",{className:"text-xs text-destructive",children:m.stageId}):null]})]})]}),e.jsx(de,{}),e.jsx(sn,{groups:o.conditionGroups,stages:Q??[],tags:me??[],onChange:a=>b(s=>({...s,conditionGroups:a}))}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Filtro por Listas"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Opcional. Use Listas inteligentes para enviar o evento Meta somente para contatos que entram em um segmento operacional."})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[220px_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Regra do filtro"}),e.jsxs(ne,{value:o.listFilterMode,onValueChange:a=>b(s=>({...s,listFilterMode:a})),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsxs(ie,{children:[e.jsx(q,{value:"any",children:"Está em qualquer lista"}),e.jsx(q,{value:"all",children:"Está em todas as listas"}),e.jsx(q,{value:"none",children:"Não está nestas listas"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Listas usadas como filtro"}),(U??[]).length>0?e.jsx("div",{className:"flex flex-wrap gap-2",children:(U??[]).map(a=>{const s=o.listFilterIds.includes(a.id);return e.jsx(g,{type:"button",size:"sm",variant:s?"default":"outline",onClick:()=>Ve(a.id),children:a.name},a.id)})}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"Nenhuma lista criada ainda. Crie listas em /lists para usar como filtro de envio."})]})]})]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Evento e payload"})}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[1.2fr_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Nome do evento Meta"}),e.jsx(z,{placeholder:"Lead",value:o.metaEventName,"aria-invalid":m.metaEventName?!0:void 0,className:m.metaEventName?"border-destructive":void 0,onChange:a=>{O("metaEventName"),b(s=>({...s,metaEventName:a.target.value}))}}),m.metaEventName?e.jsx("p",{className:"text-xs text-destructive",children:m.metaEventName}):null,e.jsx("div",{className:"flex flex-wrap gap-2",children:((M==null?void 0:M.metaEventNamePresets)??[]).map(a=>e.jsx(g,{type:"button",variant:"outline",size:"sm",onClick:()=>{O("metaEventName"),b(s=>({...s,metaEventName:a}))},children:a},a))})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-1",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Modo de valor"}),e.jsxs(ne,{value:o.sendValueMode,onValueChange:a=>b(s=>({...s,sendValueMode:a})),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsx(ie,{children:((M==null?void 0:M.sendValueModes)??[]).map(a=>e.jsx(q,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"meta-rule-dedupe",children:"Janela de dedupe (min)"}),e.jsx(z,{id:"meta-rule-dedupe",type:"number",min:1,max:1440,value:o.dedupeWindowMinutes,"aria-invalid":m.dedupeWindowMinutes?!0:void 0,className:m.dedupeWindowMinutes?"border-destructive":void 0,onChange:a=>{O("dedupeWindowMinutes"),b(s=>({...s,dedupeWindowMinutes:a.target.value}))}}),m.dedupeWindowMinutes?e.jsx("p",{className:"text-xs text-destructive",children:m.dedupeWindowMinutes}):null]})]})]})]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Operação"})}
6),e.jsxs("div",{className:"flex flex-col gap-4 rounded-lg border bg-background px-4 py-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(p,{className:"text-sm",children:"Regra ativa"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Quando ligada, envia eventos para a Meta em segundo plano. O funil continua funcionando mesmo se a Meta falhar."})]}),e.jsx(Be,{checked:o.isActive,onCheckedChange:a=>b(s=>({...s,isActive:a}))})]})]})]})}),e.jsx(Es,{className:"shrink-0 border-t px-5 py-4 sm:px-6",children:e.jsxs(g,{type:"button",onClick:ns,disabled:De.isPending,children:[De.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),j?"Salvar regra":"Criar regra"]})})]})}),e.jsx(ds,{open:!!A,onOpenChange:a=>!a&&T(null),children:e.jsxs(cs,{className:"max-w-4xl",children:[e.jsxs(us,{children:[e.jsx(ms,{children:"Eventos registrados da regra"}),e.jsx(xs,{children:A?`${A.name} ⢠${A.metaEventName}`:"Histórico recente de eventos"})]}),je?e.jsx("div",{className:"flex justify-center py-10",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):Ne?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:F(Ne)}):e.jsx("div",{className:"max-h-[min(60dvh,480px)] overflow-auto overscroll-contain",children:e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Criado em"}),e.jsx(w,{children:"Status"}),e.jsx(w,{children:"Trigger"}),e.jsx(w,{children:"Resposta Meta"}),e.jsx(w,{children:"Erro real"}),e.jsx(w,{className:"text-right",children:"Ações"})]})}),e.jsx($e,{children:H!=null&&H.items.length?H.items.map(a=>{const s=_a(a.status),r=et(a.responseBody),u=st(a);return e.jsxs($,{children:[e.jsxs(y,{className:"align-top text-xs text-muted-foreground",children:[e.jsx("div",{children:na(a.createdAt)}),e.jsxs("div",{children:["Tentativas: ",a.attemptCount]})]}),e.jsx(y,{className:"align-top",children:e.jsx(be,{variant:s.variant,children:s.label})}),e.jsxs(y,{className:"align-top text-sm",children:[e.jsx("div",{children:a.internalTriggerType}),e.jsx("div",{className:"text-xs text-muted-foreground",children:a.metaEventName})]}),e.jsxs(y,{className:"align-top text-xs text-muted-foreground",children:[e.jsxs("div",{children:["HTTP ",a.responseStatus??"-"]}),e.jsx("div",{children:na(a.deliveredAt??a.lastAttemptAt)}),r.length?e.jsx("div",{className:"mt-2 max-w-[280px] space-y-1 rounded-md bg-muted/50 p-2 font-mono text-[11px] leading-relaxed text-foreground",children:r.map(d=>e.jsx("div",{className:"break-words",children:d},d))}):null]}),e.jsx(y,{className:"max-w-[280px] align-top",children:u?e.jsx("div",{className:"max-h-24 overflow-auto whitespace-pre-wrap break-words text-xs text-destructive",children:u}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"-"})}),e.jsx(y,{className:"align-top text-right",children:a.status==="FAILED"?e.jsxs(g,{size:"sm",variant:"outline",onClick:()=>qe.mutate({ruleId:a.ruleId,deliveryId:a.id}),disabled:qe.isPending,children:[e.jsx(Bn,{className:"mr-2 h-3.5 w-3.5"}),"Reenfileirar"]}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"-"})})]},a.id)}):e.jsx($,{children:e.jsx(y,{colSpan:6,className:"py-8 text-center text-muted-foreground",children:"Nenhum evento registrado para esta regra."})})})]})})]})}),e.jsx(He,{open:!!he,onOpenChange:a=>!a&&D(null),children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Remover regra Meta?"}),e.jsx(Ze,{children:"Esta ação removerá a regra e o histórico de eventos registrados associado."})]}),e.jsxs(es,{children:[e.jsx(ss,{children:"Cancelar"}),e.jsx(as,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{he&&v.mutate(he.id)},children:"Remover"})]})]})})]})}const Gs="__any_funnel__",ta="__any_stage__";function ra(t){return t?new Date(t).toLocaleString("pt-BR"):"-"}function tt(t){if(!t)return[];try{const i=JSON.parse(t),h=[];i.jobId!==void 0&&h.push(`Job ID: ${String(i.jobId)}`),Array.isArray(i.results)&&h.push(`Resultados: ${i.results.length}`);const C=i.partialFailureError;if(C&&typeof C=="object"){const S=C,x=typeof S.message=="string"?S.message:null,E=S.code!==void 0?`code ${String(S.code)}`:null;
6h.push(["Falha parcial Google Ads:",x,E].filter(Boolean).join(" "))}const f=i.error;if(f&&typeof f=="object"){const S=f,x=typeof S.message=="string"?S.message:null,E=S.code!==void 0?`code ${String(S.code)}`:null;h.push(["Erro Google Ads:",x,E].filter(Boolean).join(" "))}return h.length?h:[t]}catch{return[t]}}function rt(t){return t.errorMessage?t.errorMessage:t.status==="FAILED"&&t.responseBody?t.responseBody:null}function Ua(t){switch(t){case"SUCCESS":return{label:"Sucesso",variant:"default"};case"FAILED":return{label:"Falhou",variant:"destructive"};case"RETRYING":return{label:"Retry",variant:"secondary"};case"PENDING":return{label:"Pendente",variant:"secondary"};default:return{label:"Sem envio",variant:"outline"}}}function Is(t){var i,h,C;return{name:"",isActive:!0,customerId:"",loginCustomerId:"",developerToken:"",clientId:"",clientSecret:"",refreshToken:"",internalTriggerType:((i=t==null?void 0:t.triggers[0])==null?void 0:i.type)??"DEAL_STAGE_ENTERED",funnelId:null,stageId:null,listFilterMode:"any",listFilterIds:[],conditionGroups:[],conversionActionResource:"",conversionActionName:"",sendValueMode:((h=t==null?void 0:t.sendValueModes[0])==null?void 0:h.value)??"NONE",currencyCode:"BRL",adUserDataConsent:((C=t==null?void 0:t.consentStatuses[0])==null?void 0:C.value)??"UNSPECIFIED",debugEnabled:!1,validateOnly:!1,dedupeWindowMinutes:"60"}}function it(t){var i,h;return{name:t.name,isActive:t.isActive,customerId:t.customerId,loginCustomerId:t.loginCustomerId??"",developerToken:"",clientId:"",clientSecret:"",refreshToken:"",internalTriggerType:t.internalTriggerType,funnelId:t.triggerConfig.funnelId??null,stageId:t.triggerConfig.stageId??null,listFilterMode:((i=t.triggerConfig.listFilter)==null?void 0:i.mode)??"any",listFilterIds:((h=t.triggerConfig.listFilter)==null?void 0:h.listIds)??[],conditionGroups:t.triggerConfig.conditionGroups??[],conversionActionResource:t.conversionActionResource,conversionActionName:t.conversionActionName??"",sendValueMode:t.sendValueMode,currencyCode:t.currencyCode,adUserDataConsent:t.adUserDataConsent,debugEnabled:t.debugEnabled,validateOnly:t.validateOnly,dedupeWindowMinutes:String(t.dedupeWindowMinutes)}}function ot({companyKey:t,isLoadingPermissions:i,canManageIntegrations:h}){const{toast:C}=Ds(),f=Ms(),[S,x]=Ba(),[E,V]=c.useState(!1),[j,W]=c.useState(null),[he,D]=c.useState(null),[A,T]=c.useState(null),[K,oe]=c.useState(!1),[o,b]=c.useState(Is()),[m,le]=c.useState({}),Ie=S.get("listId"),X=!!t&&h,{data:M,isLoading:ge,error:pe}=B({queryKey:["google-ads-conversions-catalog",t],queryFn:async()=>{const a=await Qe.getCatalog();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:ce,isLoading:Ce,error:we}=B({queryKey:["google-ads-conversions-rules",t],queryFn:async()=>{const a=await Qe.listRules();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:ve,error:Ee}=B({queryKey:["google-ads-conversions-funnels",t],queryFn:async()=>{const a=await Us.list();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:Q,error:ue}=B({queryKey:["google-ads-conversions-stages",t],queryFn:async()=>{const a=await Us.getAllStages();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:U,error:Oe}=B({queryKey:["google-ads-conversions-contact-lists",t],queryFn:async()=>{const a=await Ya.listLists();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:me,error:fe}=B({queryKey:["google-ads-conversions-contact-tags",t],queryFn:async()=>{const a=await Ja.listTags();if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:X}),{data:H,isLoading:je,error:Ne}=B({queryKey:["google-ads-conversions-deliveries",t,A==null?void 0:A.id],queryFn:async()=>
6{if(!A)throw new Error("Selecione uma regra");const a=await Qe.listDeliveries(A.id,{limit:20});if(!a.success||!a.data)throw N(a,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return a.data},enabled:!!A});c.useEffect(()=>{!M||j||E||b(Is(M))},[M,j,E]);const xe=c.useMemo(()=>{const a=new Map;return((M==null?void 0:M.triggers)??[]).forEach(s=>a.set(s.type,s)),a},[M]),Te=c.useMemo(()=>{const a=new Map;return(ve??[]).forEach(s=>a.set(s.id,s)),a},[ve]),ke=c.useMemo(()=>{const a=new Map;return(Q??[]).forEach(s=>a.set(s.id,s)),a},[Q]),I=xe.get(o.internalTriggerType),ee=c.useMemo(()=>{const a=ce??[];return{total:a.length,active:a.filter(s=>s.isActive).length,successful:a.filter(s=>s.lastDeliveryStatus==="SUCCESS").length,listFiltered:a.filter(s=>{var r,u;return(((u=(r=s.triggerConfig.listFilter)==null?void 0:r.listIds)==null?void 0:u.length)??0)>0}).length}},[ce]),De=c.useMemo(()=>Q?o.funnelId?Q.filter(a=>a.funnelId===o.funnelId):Q:[],[o.funnelId,Q]);c.useEffect(()=>{if(!o.stageId)return;De.some(s=>s.id===o.stageId)||b(s=>({...s,stageId:null}))},[o.stageId,De]);const Se=P({mutationFn:async a=>{if(a.mode==="create"){const r=await Qe.createRule({...a.data,developerToken:a.data.developerToken||"",clientId:a.data.clientId||"",clientSecret:a.data.clientSecret||"",refreshToken:a.data.refreshToken||""});if(!r.success||!r.data)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return r.data}const s=await Qe.updateRule(a.ruleId||"",a.data);if(!s.success||!s.data)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s.data},onSuccess:(a,s)=>{f.invalidateQueries({queryKey:["google-ads-conversions-rules",t]}),s.ruleId&&f.invalidateQueries({queryKey:["google-ads-conversions-deliveries",t,s.ruleId]}),V(!1),W(null),oe(!1),b(Is(M)),C({title:s.mode==="create"?"Regra Google Ads criada":"Regra Google Ads atualizada"})},onError:a=>{C({variant:"destructive",title:j?"Não foi possÃvel salvar a regra de conversão":"Não foi possÃvel criar a regra de conversão",description:F(a)})}}),v=P({mutationFn:async({ruleId:a,isActive:s})=>{const r=await Qe.updateRule(a,{isActive:s});if(!r.success||!r.data)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return r.data},onSuccess:()=>{f.invalidateQueries({queryKey:["google-ads-conversions-rules",t]})},onError:a=>{C({variant:"destructive",title:"Não foi possÃvel ativar ou pausar a regra",description:F(a)})}}),k=P({mutationFn:async a=>{const s=await Qe.removeRule(a);if(!s.success)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s},onSuccess:(a,s)=>{f.invalidateQueries({queryKey:["google-ads-conversions-rules",t]}),f.removeQueries({queryKey:["google-ads-conversions-deliveries",t,s]}),D(null),(A==null?void 0:A.id)===s&&T(null),C({title:"Regra Google Ads removida"})},onError:a=>{C({variant:"destructive",title:"Não foi possÃvel excluir a regra",description:F(a)})}}),qe=P({mutationFn:async a=>{const s=await Qe.testRule(a);if(!s.success||!s.data)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s.data},onSuccess:(a,s)=>{if(f.invalidateQueries({queryKey:["google-ads-conversions-rules",t]}),f.invalidateQueries({queryKey:["google-ads-conversions-deliveries",t,s]}),a.queued){C({title:"Teste Google Ads enfileirado"});return}C({variant:"destructive",title:"Teste não entrou na fila",description:"O delivery foi registrado, mas a fila não estava disponÃvel."})},onError:a=>{C({variant:"destructive",title:"Não foi possÃvel testar a regra",description:F(a)})}}),Re=a=>{W(null),oe(!1),le({}),b({...Is(M),...a}),V(!0)};c.useEffect(()=>{if(!Ie||!(U!=null&&U.length)||E)return;const a=U.find(r=>r.id===Ie);if(!a)return;Re({name:`Enviar Google Ads para ${a.name}`,listFilterIds:[a.id],listFilterMode:"any"});const s=new URLSearchParams(S);s.delete("listId"),x(s,{replace:!0})},[M,U,E,Ie,S,x]);const ye=a=>{W(a),oe(!1),le({}),b(it(a)),V(!0)},Ge=a=>{V(a),a||(W(null),oe(!1),le({}),b(Is(M)))},Ve=a=>{b(s=>({...s,listFilterIds:s.listFilterIds.includes(a)?s.listFilterIds.filter(r=>r!==a):[...s.listFilterIds,a]}))},O=a=>{le(s=>{if(!s[a])return s;const r={...s};return delete r[a],r})},ns=()=>
6{const a=o.name.trim(),s=o.customerId.trim(),r=o.loginCustomerId.trim(),u=o.developerToken.trim(),d=o.clientId.trim(),L=o.clientSecret.trim(),Y=o.refreshToken.trim(),se=o.conversionActionResource.trim(),ae=o.conversionActionName.trim(),Me=o.currencyCode.trim().toUpperCase(),Fe=Number.parseInt(o.dedupeWindowMinutes,10),Z={};if(a||(Z.name="Informe o nome da regra"),s||(Z.customerId="Informe o Customer ID"),!j&&!u&&(Z.developerToken="Informe o Developer Token"),!j&&(!d||!L||!Y)&&(Z.oauth="Informe Client ID, Client Secret e Refresh Token"),se||(Z.conversionActionResource="Informe o Conversion Action Resource"),/^[A-Z]{3}$/.test(Me)||(Z.currencyCode="Informe um currency code válido com 3 letras"),I||(Z.trigger="Selecione um trigger válido"),I!=null&&I.config.funnelRequired&&!o.funnelId&&(Z.funnelId="Selecione o funil para este trigger"),I!=null&&I.config.stageRequired&&!o.stageId&&(Z.stageId="Selecione a etapa para este trigger"),(!Number.isFinite(Fe)||Fe<1||Fe>1440)&&(Z.dedupeWindowMinutes="A janela de deduplicação deve estar entre 1 e 1440 minutos"),le(Z),Object.keys(Z).length>0){C({variant:"destructive",title:"Corrija os campos destacados"});return}const ts={name:a,isActive:o.isActive,customerId:s,internalTriggerType:o.internalTriggerType,triggerConfig:{funnelId:o.funnelId,stageId:o.stageId,listFilter:o.listFilterIds.length>0?{mode:o.listFilterMode,listIds:o.listFilterIds}:null,conditionGroups:o.conditionGroups},conversionActionResource:se,conversionActionName:ae||null,sendValueMode:o.sendValueMode,currencyCode:Me,adUserDataConsent:o.adUserDataConsent,debugEnabled:o.debugEnabled,validateOnly:o.validateOnly,dedupeWindowMinutes:Fe,...u?{developerToken:u}:{},...d?{clientId:d}:{},...L?{clientSecret:L}:{},...Y?{refreshToken:Y}:{},...j?K?{loginCustomerId:null}:r?{loginCustomerId:r}:{}:{loginCustomerId:r||null}};Se.mutate({mode:j?"update":"create",ruleId:j==null?void 0:j.id,data:ts})},Le=we instanceof Error?we.message:pe instanceof Error?pe.message:Ee instanceof Error?Ee.message:ue instanceof Error?ue.message:Oe instanceof Error?Oe.message:fe instanceof Error?fe.message:null;return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Za,{className:"h-4 w-4"}),"Google Ads Conversions"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Cadastre regras por evento comercial do funil para enviar conversões server-side ao Google Ads."})]}),e.jsxs(g,{size:"sm",onClick:Re,disabled:!h||ge,children:[e.jsx(fs,{className:"mr-2 h-4 w-4"}),"Nova regra Google Ads"]})]}),e.jsx("div",{children:i?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):h?Ce||ge?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):Le?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:Le}):e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid gap-3 md:grid-cols-2 xl:grid-cols-4",children:[["Regras criadas",ee.total,"Total configurado nesta empresa"],["Regras ativas",ee.active,"Prontas para enviar conversões"],["Ãltimo status com sucesso",ee.successful,"Regras com última entrega concluÃda"],["Usando listas",ee.listFiltered,"Segmentadas por listas inteligentes"]].map(([a,s,r])=>e.jsxs("div",{children:[e.jsx("p",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:a}),e.jsx("p",{className:"mt-1 text-2xl font-semibold tabular-nums",children:s}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:r})]},a))}),e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Regra"}),e.jsx(w,{children:"Trigger"}),e.jsx(w,{children:"Conversão Google"}),e.jsx(w,{children:"Status"}),e.jsx(w,{children:"Ãltima entrega"}),e.jsx(w,{className:"text-right",children:"Ações"})]})}),e.jsx($e,{children:ce&&ce.length>0?ce.map(a=>{var L,Y,se,ae,Me,Fe,Z;const s=xe.get(a.internalTriggerType),r=Ua(a.lastDeliveryStatus),u=a.triggerConfig.funnelId?((L=Te.get(a.triggerConfig.funnelId))==null?void 0:L.name)??"Funil remov
6ido":"Qualquer funil",d=a.triggerConfig.stageId?((Y=ke.get(a.triggerConfig.stageId))==null?void 0:Y.name)??"Etapa removida":"Qualquer etapa";return e.jsxs($,{children:[e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"font-medium",children:a.name}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Customer ",a.customerId," ⢠",((se=a._count)==null?void 0:se.deliveries)??0," envio(s)"]})]})}),e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"space-y-1 text-sm",children:[e.jsx("div",{children:(s==null?void 0:s.label)??a.internalTriggerType}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[u," ⢠",d]}),(((ae=a.triggerConfig.conditionGroups)==null?void 0:ae.length)??0)>0?e.jsxs("div",{className:"text-xs font-medium text-primary",children:[(Me=a.triggerConfig.conditionGroups)==null?void 0:Me.length," grupo(s) de condições E/OU"]}):null]})}),e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"space-y-1 text-sm",children:[e.jsx("div",{className:"font-medium",children:a.conversionActionName||"Sem nome amigável"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:a.conversionActionResource}),e.jsx("div",{className:"text-xs text-muted-foreground",children:a.sendValueMode==="AUTO_DEAL_VALUE"?`Usa o valor do negócio (${a.currencyCode})`:"Envia sem valor de conversão"})]})}),e.jsx(y,{className:"align-top",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Be,{checked:a.isActive,onCheckedChange:ts=>v.mutate({ruleId:a.id,isActive:ts}),disabled:v.isPending}),e.jsx("span",{className:"text-sm",children:a.isActive?"Ativa":"Pausada"})]}),e.jsx(be,{variant:r.variant,children:r.label})]})}),e.jsxs(y,{className:"align-top text-xs text-muted-foreground",children:[e.jsx("div",{children:ra(((Fe=a.lastDelivery)==null?void 0:Fe.deliveredAt)??a.lastDeliveryAt)}),(Z=a.lastDelivery)!=null&&Z.errorMessage?e.jsx("div",{className:"mt-1 max-w-[220px] truncate text-destructive",children:a.lastDelivery.errorMessage}):null]}),e.jsx(y,{className:"text-right align-top",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Enviar teste da regra ${a.name}`,onClick:()=>qe.mutate(a.id),disabled:qe.isPending,title:"Enviar teste",children:e.jsx(xa,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Abrir histórico da regra ${a.name}`,onClick:()=>T(a),title:"Ver histórico",children:e.jsx(ha,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Editar a regra ${a.name}`,onClick:()=>ye(a),title:"Editar regra",children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Remover a regra ${a.name}`,className:"text-destructive hover:text-destructive hover:bg-destructive/10",onClick:()=>D(a),title:"Remover regra",children:e.jsx(hs,{className:"h-4 w-4"})})]})})]},a.id)}):e.jsx($,{children:e.jsx(y,{colSpan:6,className:"py-8 text-center",children:e.jsxs("div",{className:"space-y-1 text-sm text-muted-foreground",children:[e.jsx("p",{className:"font-medium text-foreground",children:"Nenhuma regra Google Ads configurada."}),e.jsx("p",{children:"Crie uma regra para enviar conversões server-side a partir do funil, com suporte a listas e dedupe."})]})})})})]})]}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Você não tem permissão para gerenciar integrações. Solicite acesso a um administrador."})})]}),e.jsx(ds,{open:E,onOpenChange:Ge,children:e.jsxs(cs,{showCloseButton:!1,className:"!flex !h-[calc(100dvh-1rem)] !max-h-[calc(100dvh-1rem)] !w-[calc(100vw-2rem)] !max-w-5xl !flex-col !gap-0 !overflow-hidden !p-0",children:[e.jsxs(us,{className:"shrink-0 border-b px-5 py-5 pr-14 text-left sm:px-6",children:[e.jsx(ms,{children:j?"Editar regra Google Ads":"Nova regra Google Ads"}),e.jsx(xs,{children:"Configure qual trigger comercial deve gerar um upload de conversão para o Google Ads."})]}),e.jsxs(Qa,{className:"absolute right-4 top-4 flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",children:[e.jsx(Ha,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Fechar"})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-x-hidden overflow-y-auto overscroll-contain px-5 py-5 sm:px-6",children:e.jsxs("div",{className:"space-y-5",children:[e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Credenciais Google Ads"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-name",children:"Nome da regra"}),e.jsx(z,{id:"google-rule-name",placeholder:"Ex: Lead quente - etapa proposta",value:o.name,"aria-invalid":m.name?!0:void 0,className:m.name?"border-destructive":void 0,onChange:a=>{O("name"),b(s=>({...s,name:a.target.value}))}}),m.name?e.jsx("p",{className:"text-xs text-destructive",children:m.name}):null]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-customer-id",children:"Customer ID"}),e.jsx(z,{id:"google-rule-customer-id",placeholder:"123-456-7890",value:o.customerId,"aria-invalid":m.customerId?!0:void 0,className:m.customerId?"border-destructive":void 0,onChange:a=>{O("customerId"),b(s=>({...s,customerId:a.target.value}))}}),m.customerId?e.jsx("p",{className:"text-xs text-destructive",children:m.customerId}):null]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-login-customer-id",children:"Login Customer ID (opcional)"}),e.jsx(z,{id:"google-rule-login-customer-id",type:"password",placeholder:j!=null&&j.loginCustomerId?"Mantido. Digite apenas se quiser trocar.":"555-555-5555",value:o.loginCustomerId,disabled:K,onChange:a=>b(s=>({...s,loginCustomerId:a.target.value}))})]})]}),j!=null&&j.loginCustomerId?e.jsxs("div",{className:"flex flex-col gap-2 text-xs text-muted-foreground sm:flex-row sm:items-center sm:justify-between",children:[e.jsx("span",{children:K?"O login customer atual será removido ao salvar.":"Existe um login customer salvo nesta regra."}),e.jsx(g,{type:"button",variant:"ghost",size:"sm",className:"self-start sm:self-auto",onClick:()=>oe(a=>!a),children:K?"Manter valor atual":"Remover valor atual"})]}):null,e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-developer-token",children:"Developer Token"}),e.jsx(z,{id:"google-rule-developer-token",type:"password",placeholder:j!=null&&j.developerTokenConfigured?"Preenchido. Digite apenas se quiser trocar.":"developer-token",value:o.developerToken,"aria-invalid":m.developerToken?!0:void 0,className:m.developerToken?"border-destructive":void 0,onChange:a=>{O("developerToken"),b(s=>({...s,developerToken:a.target.value}))}}),m.developerToken?e.jsx("p",{className:"text-xs text-destructive",children:m.developerToken}):null]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-client-id",children:"OAuth Client ID"}),e.jsx(z,{id:"google-rule-client-id",placeholder:j!=null&&j.clientIdConfigured?"Preenchido. Digite apenas se quiser trocar.":"client-id.apps.googleusercontent.com",value:o.clientId,"aria-invalid":m.oauth&&!o.clientId.trim()?!0:void 0,className:m.oauth&&!o.clientId.trim()?"border-destructive":void 0,onChange:a=>{O("oauth"),b(s=>({...s,clientId:a.target.value}))}})]})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-client-secret",children:"OAuth Client Secret"}),e.jsx(z,{id:"google-rule-client-secret",type:"password",placeholder:j!=null&&j.clientSecretConfigured?"Preenchido. Digite apenas se quiser trocar.":"client-secret",value:o.clientSecret,"aria-invalid":m.oauth&&!o.clientSecret.trim()?!0:void 0,className:m.oauth&&!o.clientSecret.trim()?"border-destructive":void 0,onChange:a=>{O("oauth"),b(s=>({...s,clientSecret:a.target.value}))}})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-refresh-token",children:"Refresh Token"}),e.jsx(z,{id:"google-rule-refresh-token",type:"password",placeholder:j!=null&&j.refreshTokenConfigured?"Preenchido. Digite apenas se quiser trocar.":"refresh-token",value:o.refreshToken,"aria-invalid":m.oauth&&!o.refreshToken.trim()?!0:void 0,className:m.oauth&&!o.refreshToken.trim()?"border-destructive":void 0,onChange:a=>{O("oauth"),b(s=>({...s,refreshToken:a.target.value}))}})]})]}),m.oauth?e.jsx("p",{className:"text-xs text-destructive",children:m.oauth}):null]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Destino no Google Ads"})}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-conversion-action",children:"Conversion Action Resource"}),e.jsx(z,{id:"google-rule-conversion-action",placeholder:"customers/1234567890/conversionActions/987654321",value:o.conversionActionResource,"aria-invalid":m.conversionActionResource?!0:void 0,className:m.conversionActionResource?"border-destructive":void 0,onChange:a=>{O("conversionActionResource"),b(s=>({...s,conversionActionResource:a.target.value}))}}),m.conversionActionResource?e.jsx("p",{className:"text-xs text-destructive",children:m.conversionActionResource}):null,e.jsx("p",{className:"text-xs text-muted-foreground",children:"Use o resource completo da conversão para evitar erro entre contas e ações parecidas."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-conversion-name",children:"Nome amigável (opcional)"}),e.jsx(z,{id:"google-rule-conversion-name",placeholder:"Lead Qualificado",value:o.conversionActionName,onChange:a=>b(s=>({...s,conversionActionName:a.target.value}))})]})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Consentimento"}),e.jsxs(ne,{value:o.adUserDataConsent,onValueChange:a=>b(s=>({...s,adUserDataConsent:a})),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsx(ie,{children:((M==null?void 0:M.consentStatuses)??[]).map(a=>e.jsx(q,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-currency",children:"Moeda"}),e.jsx(z,{id:"google-rule-currency",placeholder:"BRL",value:o.currencyCode,"aria-invalid":m.currencyCode?!0:void 0,className:m.currencyCode?"border-destructive":void 0,onChange:a=>{O("currencyCode"),b(s=>({...s,currencyCode:a.target.value.toUpperCase()}))}}),m.currencyCode?e.jsx("p",{className:"text-xs text-destructive",children:m.currencyCode}):null]}),e.jsx("div",{className:"flex items-end",children:e.jsxs("div",{className:"flex w-full items-center justify-between rounded-lg border bg-background px-3 py-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(p,{className:"text-sm",children:"Modo debug"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Mostra respostas mais detalhadas do Google para diagnóstico."})]}),e.jsx(Be,{checked:o.debugEnabled,onCheckedChange:a=>b(s=>({...s,debugEnabled:a}))})]})}),e.jsx("div",{className:"flex items-end",children:e.jsxs("div",{className:"flex w-full items-center justify-between rounded-lg border bg-background px-3 py-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(p,{className:"text-sm",children:"Validar sem enviar"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Só valida o payload, sem efetivar."})]}
6),e.jsx(Be,{checked:o.validateOnly,onCheckedChange:a=>b(s=>({...s,validateOnly:a}))})]})})]})]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Gatilho interno"})}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[1.2fr_1fr_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Evento interno observado"}),e.jsxs(ne,{value:o.internalTriggerType,onValueChange:a=>{O("trigger"),O("funnelId"),O("stageId"),b(s=>({...s,internalTriggerType:a,funnelId:null,stageId:null}))},children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione o trigger"})}),e.jsx(ie,{children:((M==null?void 0:M.triggers)??[]).map(a=>e.jsx(q,{value:a.type,children:a.label},a.type))})]}),m.trigger?e.jsx("p",{className:"text-xs text-destructive",children:m.trigger}):null,I?e.jsx("p",{className:"text-xs text-muted-foreground",children:I.description}):null]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Funil"}),e.jsxs(ne,{value:I!=null&&I.config.funnelRequired?o.funnelId??void 0:o.funnelId??Gs,onValueChange:a=>{O("funnelId"),O("stageId"),b(s=>({...s,funnelId:a===Gs?null:a,stageId:a===Gs?s.stageId:null}))},children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione o funil"})}),e.jsxs(ie,{children:[I!=null&&I.config.funnelRequired?null:e.jsx(q,{value:Gs,children:"Qualquer funil"}),(ve??[]).map(a=>e.jsx(q,{value:a.id,children:a.name},a.id))]})]}),m.funnelId?e.jsx("p",{className:"text-xs text-destructive",children:m.funnelId}):null]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Etapa"}),e.jsxs(ne,{value:I!=null&&I.config.stageRequired?o.stageId??void 0:o.stageId??ta,onValueChange:a=>{O("stageId"),b(s=>({...s,stageId:a===ta?null:a}))},children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione a etapa"})}),e.jsxs(ie,{children:[I!=null&&I.config.stageRequired?null:e.jsx(q,{value:ta,children:"Qualquer etapa"}),De.map(a=>e.jsx(q,{value:a.id,children:a.name},a.id))]})]}),m.stageId?e.jsx("p",{className:"text-xs text-destructive",children:m.stageId}):null]})]})]}),e.jsx(de,{}),e.jsx(sn,{groups:o.conditionGroups,stages:Q??[],tags:me??[],onChange:a=>b(s=>({...s,conditionGroups:a}))}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Filtro por Listas"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Opcional. Use Listas inteligentes para enviar a conversão somente para contatos que entram em um segmento operacional."})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[220px_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Regra do filtro"}),e.jsxs(ne,{value:o.listFilterMode,onValueChange:a=>b(s=>({...s,listFilterMode:a})),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsxs(ie,{children:[e.jsx(q,{value:"any",children:"Está em qualquer lista"}),e.jsx(q,{value:"all",children:"Está em todas as listas"}),e.jsx(q,{value:"none",children:"Não está nestas listas"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Listas usadas como filtro"}),(U??[]).length>0?e.jsx("div",{className:"flex flex-wrap gap-2",children:(U??[]).map(a=>{const s=o.listFilterIds.includes(a.id);return e.jsx(g,{type:"button",size:"sm",variant:s?"default":"outline",onClick:()=>Ve(a.id),children:a.name},a.id)})}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"Nenhuma lista criada ainda. Crie listas em /lists para usar como filtro de envio."})]})]})]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Payload do upload"})}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[1.2fr_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Resumo do identificador"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["O backend vai priorizar ",e.jsx("span",{className:"font-medium text-foreground",children:"gclid"}),", depois ",e.jsx("span",{className:"font-medium text-foreground",children:"gbraid/wbraid"}),", e cai para ",e.jsx("span",{className:"font-medium text-foreground",children:"email/telefone com hash"})," quando não houver click ID."]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-1",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Modo de valor"}),e.jsxs(ne,{value:o.sendValueMode,onValueChange:a=>b(s=>({...s,sendValueMode:a})),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsx(ie,{children:((M==null?void 0:M.sendValueModes)??[]).map(a=>e.jsx(q,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-rule-dedupe",children:"Janela de dedupe (min)"}),e.jsx(z,{id:"google-rule-dedupe",type:"number",min:1,max:1440,value:o.dedupeWindowMinutes,"aria-invalid":m.dedupeWindowMinutes?!0:void 0,className:m.dedupeWindowMinutes?"border-destructive":void 0,onChange:a=>{O("dedupeWindowMinutes"),b(s=>({...s,dedupeWindowMinutes:a.target.value}))}}),m.dedupeWindowMinutes?e.jsx("p",{className:"text-xs text-destructive",children:m.dedupeWindowMinutes}):null]})]})]})]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{children:e.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Operação"})}
6),e.jsxs("div",{className:"flex flex-col gap-4 rounded-lg border bg-background px-4 py-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(p,{className:"text-sm",children:"Regra ativa"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Quando ligada, envia eventos para o Google Ads em segundo plano. O funil continua funcionando mesmo se o upload falhar."})]}),e.jsx(Be,{checked:o.isActive,onCheckedChange:a=>b(s=>({...s,isActive:a}))})]})]})]})}),e.jsx(Es,{className:"shrink-0 border-t px-5 py-4 sm:px-6",children:e.jsxs(g,{type:"button",onClick:ns,disabled:Se.isPending,children:[Se.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),j?"Salvar regra":"Criar regra"]})})]})}),e.jsx(ds,{open:!!A,onOpenChange:a=>!a&&T(null),children:e.jsxs(cs,{className:"max-w-4xl",children:[e.jsxs(us,{children:[e.jsx(ms,{children:"Deliveries da regra"}),e.jsx(xs,{children:A?`${A.name} ⢠${A.conversionActionName||A.conversionActionResource}`:"Histórico recente de envios"})]}),je?e.jsx("div",{className:"flex justify-center py-10",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):Ne?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:F(Ne)}):e.jsx("div",{className:"max-h-[min(60dvh,480px)] overflow-auto overscroll-contain",children:e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Criado em"}),e.jsx(w,{children:"Status"}),e.jsx(w,{children:"Trigger"}),e.jsx(w,{children:"Resposta Google Ads"}),e.jsx(w,{children:"Erro real"})]})}),e.jsx($e,{children:H!=null&&H.items.length?H.items.map(a=>{const s=Ua(a.status),r=tt(a.responseBody),u=rt(a);return e.jsxs($,{children:[e.jsxs(y,{className:"align-top text-xs text-muted-foreground",children:[e.jsx("div",{children:ra(a.createdAt)}),e.jsxs("div",{children:["Attempts: ",a.attemptCount]})]}),e.jsx(y,{className:"align-top",children:e.jsx(be,{variant:s.variant,children:s.label})}),e.jsxs(y,{className:"align-top text-sm",children:[e.jsx("div",{children:a.internalTriggerType}),e.jsx("div",{className:"text-xs text-muted-foreground",children:a.conversionActionResource})]}),e.jsxs(y,{className:"align-top text-xs text-muted-foreground",children:[e.jsxs("div",{children:["HTTP ",a.responseStatus??"-"]}),e.jsx("div",{children:ra(a.deliveredAt??a.lastAttemptAt)}),r.length?e.jsx("div",{className:"mt-2 max-w-[280px] space-y-1 rounded-md bg-muted/50 p-2 font-mono text-[11px] leading-relaxed text-foreground",children:r.map(d=>e.jsx("div",{className:"break-words",children:d},d))}):null]}),e.jsx(y,{className:"max-w-[280px] align-top",children:u?e.jsx("div",{className:"max-h-24 overflow-auto whitespace-pre-wrap break-words text-xs text-destructive",children:u}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"-"})})]},a.id)}):e.jsx($,{children:e.jsx(y,{colSpan:5,className:"py-8 text-center text-muted-foreground",children:"Nenhum delivery encontrado para esta regra."})})})]})})]})}),e.jsx(He,{open:!!he,onOpenChange:a=>{!a&&!k.isPending&&D(null)},children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Remover regra Google Ads?"}),e.jsx(Ze,{children:"Esta ação removerá a regra e o histórico de deliveries associado."})]}),e.jsxs(es,{children:[e.jsx(ss,{disabled:k.isPending,children:"Cancelar"}),e.jsx(as,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:k.isPending,onClick:a=>{!he||k.isPending||(a.preventDefault(),k.mutate(he.id))},children:k.isPending?"Removendo...":"Remover"})]})]})})]})}const lt={CONNECTED:{label:"Conectada",variant:"primary"},REAUTH_REQUIRED:{label:"Reautorizar",variant:"warning"},DISCONNECTED:{label:"Desconectada",variant:"outline"}},Ls="Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.";function dt({canManage:t}){var D,A;const{toast:i}=Ds(),h=Ms(),C=c.useRef(!1),f=B({queryKey:["socios-hub-calendar-connection"],queryFn:async()=>{const T=await _e.getSociosHubCalendarConnection();if(!T.success||!T.data)throw N(T,Ls);return T.data},enabled:t}),S=((D=f.data)==null?void 0:D.active)??!0,x=((A=f.data)==null?void 0:A.connection)??null,E=(x==null?void 0:x.status)??"DISCONNECTED",V=lt[E],j=P({mutationFn:async()=>{var K;
6const T=await _e.connectSociosHubCalendar();if(!T.success||!((K=T.data)!=null&&K.url))throw N(T,Ls);return T.data},onSuccess:T=>{window.location.assign(T.url)},onError:T=>{i({variant:"destructive",title:"Não foi possÃvel conectar",description:F(T)})}}),W=P({mutationFn:async()=>{const T=await _e.syncSociosHubCalendar();if(!T.success||!T.data)throw N(T,Ls);return T.data},onSuccess:T=>{i({title:"Agenda sincronizada",description:`${T.created} novo(s), ${T.updated} atualizado(s), ${T.skipped} ignorado(s).`}),h.invalidateQueries({queryKey:["socios-hub-calendar-connection"]}),h.invalidateQueries({queryKey:["calendar-feed"]})},onError:T=>{i({variant:"destructive",title:"Não foi possÃvel sincronizar a agenda",description:F(T)})}}),he=P({mutationFn:async()=>{const T=await _e.disconnectSociosHubCalendar();if(!T.success)throw N(T,Ls);return T.data},onSuccess:()=>{i({title:"Agenda desconectada"}),h.invalidateQueries({queryKey:["socios-hub-calendar-connection"]})},onError:T=>{i({variant:"destructive",title:"Não foi possÃvel desconectar",description:F(T)})}});return c.useEffect(()=>{if(new URLSearchParams(window.location.search).get("sociosCalendar")!=="return"||C.current||!x||x.status!=="CONNECTED")return;C.current=!0;const K=new URL(window.location.href);K.searchParams.delete("sociosCalendar"),window.history.replaceState({},"",K.toString()),W.mutate()},[x,W.mutate]),e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(en,{className:"h-4 w-4"}),"Google Agenda via Sócios AI"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Esta instalação usa as conexões da Sócios AI. Conecte a agenda pelo hub e os compromissos aparecem aqui automaticamente."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(be,{variant:V.variant,children:V.label}),e.jsx(g,{variant:"outline",size:"icon","aria-label":"Atualizar status da agenda",onClick:()=>f.refetch(),disabled:!t||f.isFetching,title:"Atualizar status",children:e.jsx(Ts,{className:`h-4 w-4 ${f.isFetching?"animate-spin":""}`})})]})]}),S?t?f.isLoading?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):f.isError?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:F(f.error)}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2 text-sm md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Conta conectada:"})," ",e.jsx("span",{className:"font-medium",children:(x==null?void 0:x.accountEmail)||"-"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Ãltima sincronização:"})," ",e.jsx("span",{className:"font-medium",children:x!=null&&x.lastSyncAt?new Date(x.lastSyncAt).toLocaleString("pt-BR"):"-"})]})]}),x!=null&&x.lastError?e.jsx("div",{className:"rounded-lg border border-warning/30 bg-warning/5 p-3 text-sm text-warning",children:x.lastError}):null,e.jsx("div",{className:"flex flex-wrap gap-2",children:E==="CONNECTED"?e.jsxs(e.Fragment,{children:[e.jsxs(g,{variant:"outline",onClick:()=>W.mutate(),disabled:W.isPending,className:"gap-2",children:[W.isPending?e.jsx(G,{className:"h-4 w-4 animate-spin"}):e.jsx(Ts,{className:"h-4 w-4"}),"Sincronizar agora"]}),e.jsx(g,{variant:"ghost",onClick:()=>he.mutate(),disabled:he.isPending,children:"Desconectar"})]}):e.jsxs(g,{onClick:()=>j.mutate(),disabled:j.isPending,children:[j.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),E==="REAUTH_REQUIRED"?"Reautorizar Google Agenda":"Conectar Google Agenda"]})})]}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Você não tem permissão para gerenciar a integração de agenda."}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Esta instalação não usa as conexões da Sócios AI para agenda."})]})}
6function la(t){return t?new Date(t).toLocaleString("pt-BR"):"-"}function za(t){if(!t)return"-";const[i,h,C]=t.split("-").map(Number);return!i||!h||!C?t:new Date(i,h-1,C).toLocaleDateString("pt-BR",{weekday:"long",day:"2-digit",month:"2-digit",year:"numeric"})}function da(t){return t?new Date(t).toLocaleString("pt-BR",{weekday:"long",day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}):"-"}function ct(){const t=new Date;return t.getHours()*60+t.getMinutes()}function $a(t,i){if(t.length!==i.length)return!1;const h=new Set(t);return i.every(C=>h.has(C))}function ut(t){return t==="CONNECTED"?{label:"Conectado",variant:"default"}:t==="REAUTH_REQUIRED"?{label:"Reautorização necessária",variant:"destructive"}:{label:"Desconectado",variant:"secondary"}}function mt(){return Vn()}function ca(t){const i=Number.isFinite(t)?t:540;return`${String(Math.floor(i/60)).padStart(2,"0")}:${String(i%60).padStart(2,"0")}`}function xt(t){const[i,h]=t.split(":").map(Number);return Math.min(1439,Math.max(0,(i||0)*60+(h||0)))}const ht=[{value:"0",label:"Hoje"},{value:"1",label:"Amanhã"},{value:"2",label:"Depois de amanhã"},{value:"7",label:"Daqui a 7 dias"},{value:"custom",label:"Personalizado"}],ua=[{value:"MARK_UNCONFIRMED",label:"Só marcar como não confirmado",description:"O botão Cancelar apenas registra que o paciente não confirmou a consulta."},{value:"UNSCHEDULE",label:"Desmarcar o agendamento",description:"O botão Cancelar chama o desmarcaAgendaWhatsapp e libera a vaga na agenda."}],ma=[{value:"ALL_DAYS",label:"Todos os dias",description:"Roda também aos sábados e domingos."},{value:"WEEKDAYS_ONLY",label:"Só dias de semana",description:"Não roda no fim de semana; as agendas de sábado, domingo e segunda entram na sexta."}];function Va(t){return["0","1","2","7"].includes(String(t))?String(t):"custom"}function gt(t){return t===0?"Hoje":t===1?"Amanhã":t===2?"Depois de amanhã":`Daqui a ${t} dias`}function ga(t){return t===0?"consultas de hoje":t===1?"consultas de amanhã":t===2?"consultas de depois de amanhã":`consultas daqui a ${t} dias`}function Wa(t){return ua.find(i=>i.value===t)??ua[0]}function Ka(t){return ma.find(i=>i.value===t)??ma[0]}function pt(t){return t.professionalFilterMode==="INCLUDE"?`Somente ${t.professionalNames.join(", ")}`:t.professionalFilterMode==="EXCLUDE"?`Exceto ${t.professionalNames.join(", ")}`:"Todos"}function an(t){return t==="WEEKDAYS_ONLY"?"Dias de semana":"Todos os dias"}function nn(t){var i;return(i=t==null?void 0:t.targetDates)!=null&&i.length?t.targetDates:t!=null&&t.targetDate?[t.targetDate]:[]}function tn(t){const i=nn(t);if(i.length===0)return"-";if(i.length===1)return za(i[0]);const h=i.map(za);return`${h.slice(0,-1).join(", ")} e ${h[h.length-1]}`}function vt(t){return`${an(t.sendDaysMode)} às ${ca(t.runTimeMinutes)}, enviar confirmações para ${ga(t.targetOffsetDays)}.`}function ft(t,i){const h=(i==null?void 0:i.nextRunAt)??t.nextRunAt;return h&&nn(i).length>0?`Será enviado em ${da(h)} para consultas de ${tn(i)}.`:h?`Será enviado em ${da(h)} para ${ga(t.targetOffsetDays)}.`:vt(t)}function jt(t,i){const h=(i==null?void 0:i.nextRunAt)??t.nextRunAt;if(!h)return!1;const C=new Date(h),f=new Date;return C.toDateString()!==f.toDateString()&&ct()>=t.runTimeMinutes}function Nt(t){return`${an(t.sendDaysMode)} às ${t.runTime||"09:00"}, buscar ${ga(t.targetOffsetDays)} em relação ao dia do envio.`}function yt(t){switch(t){case"READY":return{label:"Pronto",variant:"default"};case"MISSING_PHONE":return{label:"Sem telefone",variant:"destructive"};case"UNIT_UNMAPPED":return{label:"Unidade sem número",variant:"secondary"};case"DETAIL_INVALID":return{label:"Detalhe inválido",variant:"destructive"};case"OFFICIAL_TEMPLATE_PENDING":return{label:"Template pendente",variant:"secondary"};case"OUT_OF_SCOPE":return{label:"Fora da regra",variant:"secondary"};default:return{label:"Erro",variant:"destructive"}}}function bt({companyKey:t,canManageIntegrations:i,isLoadingPermissions:h,onBack:C}){const{toast:f}=Ds(),S=Ms(),[x,E]=c.useState("units"),[V,j]=c.useState(""),[W,he]=c.useState(""),[D,A]=c.useState({name:"Confirmação amanhã",isActive:!0,cancelAction:"MARK_UNCONFIRMED",sendDaysMode:"ALL_DAYS",runTime:"09:00",targetOffsetDays:1,timezone:"America/Sao_Paulo",templateId:"",unitNames:[],professionalFilterMode:"ALL",professionalNames:[]}
6),[T,K]=c.useState(null),[oe,o]=c.useState(null),[b,m]=c.useState([]),[le,Ie]=c.useState("7"),[X,M]=c.useState([]),[ge,pe]=c.useState({}),[ce,Ce]=c.useState(!1),[we,ve]=c.useState(new Set),[Ee,Q]=c.useState(new Set),ue=c.useRef(new Set),U=B({queryKey:["admed-overview",t],queryFn:async()=>{const s=await Pe.getOverview();if(!s.success||!s.data)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s.data},enabled:!!t&&i}),Oe=B({queryKey:["whatsapp-instances",t,"admed"],queryFn:async()=>{const s=await Wn.listInstances();if(!s.success||!s.data)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s.data.filter(r=>["UAZAPI","OFFICIAL"].includes(r.provider)&&r.isConnected)},enabled:!!t&&i});c.useEffect(()=>{var r,u,d,L,Y,se;(r=U.data)!=null&&r.setting&&j(U.data.setting.codigoCliente);const s=((d=(u=U.data)==null?void 0:u.templates.find(ae=>ae.isDefault))==null?void 0:d.id)||((Y=(L=U.data)==null?void 0:L.templates[0])==null?void 0:Y.id)||"";s&&!D.templateId&&A(ae=>({...ae,templateId:s})),(se=U.data)!=null&&se.templates&&m(U.data.templates)},[U.data]);const me=()=>S.invalidateQueries({queryKey:["admed-overview",t]}),fe=P({mutationFn:async s=>{const r=await Pe.testConnection({codigoCliente:V,apiKey:W||null});if(!r.success)throw N(r,"Teste Admed falhou");const u=await Pe.saveSettings({codigoCliente:V,apiKey:W||null,isActive:s});if(!u.success)throw N(u,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return r.data},onSuccess:s=>{he(""),ue.current.clear(),pe({}),me(),f({title:"Admed ativado",description:`Teste concluÃdo para ${(s==null?void 0:s.checkedDate)??"a próxima data"}.`})},onError:s=>f({title:"Não foi possÃvel salvar a integração Admed",description:F(s),variant:"destructive"})}),H=P({mutationFn:async()=>{const s=await Pe.saveSettings({codigoCliente:V,isActive:!1});if(!s.success)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.")},onSuccess:()=>{me(),f({title:"Admed desativado"})}}),je=P({mutationFn:async s=>{const r=await Pe.previewRule(s);if(!r.success||!r.data)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return r.data},onSuccess:s=>{pe(r=>({...r,[s.ruleId]:s})),me()},onError:s=>f({title:"Não foi possÃvel pré-visualizar a regra",description:F(s),variant:"destructive"})});function Ne(s){ue.current.add(s),je.mutate(s)}function xe(s=(r=>(r=U.data)==null?void 0:r.rules)()??[]){s.filter(u=>u.isActive).forEach(u=>Ne(u.id))}const Te=P({mutationFn:async s=>{const r=await Pe.updateUnitMappings(s);if(!r.success)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.")},onSuccess:()=>{me(),xe(),f({title:"Unidades salvas"})}}),ke=P({mutationFn:async()=>{const s=await Pe.discoverUnitMappings(Number(le));if(!s.success||!s.data)throw N(s,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return s.data},onSuccess:s=>{M(s.professionals),me(),xe(),f({title:"Busca concluÃda",description:`${s.unitsDiscovered} unidade(s) e ${s.professionalsDiscovered} profissional(is) encontrados em ${s.appointmentsChecked} agenda(s).`})},onError:s=>f({title:"Não foi possÃvel buscar as unidades",description:F(s),variant:"destructive"})}),I=P({mutationFn:async s=>{const r={name:(s==null?void 0:s.name)??D.name,isActive:(s==null?void 0:s.isActive)??D.isActive,cancelAction:(s==null?void 0:s.cancelAction)??D.cancelAction,sendDaysMode:(s==null?void 0:s.sendDaysMode)??D.sendDaysMode,runTimeMinutes:(s==null?void 0:s.runTimeMinutes)??xt(D.runTime),targetOffsetDays:(s==null?void 0:s.targetOffsetDays)??D.targetOffsetDays,timezone:(s==null?void 0:s.timezone)??D.timezone,templateId:((s==null?void 0:s.templateId)??D.templateId)||null,unitNames:(s==null?void 0:s.unitNames)??D.unitNames,professionalFilterMode:(s==null?void 0:s.professionalFilterMode)??D.professionalFilterMode,professionalNames:(s==null?void 0:s.professionalNames)??D.professionalNames},u=(s==null?void 0:s.id)??T,d=u?await Pe.updateRule(u,r):await Pe.createRule(r);if(!d.success)throw N(d,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");if(!d.data)throw new Error("Regra Admed não retornada");return d.data},onSuccess:s=>{me(),K(null),Ce(!1),ue.current.delete(s.id),Ne(s.id),f({title:"Regra salva"})},onError:s=>f({title:"Não foi possÃvel salvar a regra",description:F(s),variant:"destructive"})}),ee=P({mutationFn:async s=>{const r=await Pe.deleteRule(s);if(!r.success)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.")},onSuccess:(s,r)=>{o(null),ue.current.delete(r),pe(u=>{const d={...u};return delete d[r],d}),me(),f({title:"Regra removida"})}}),De=P({mutationFn:async s=>{const r=await Pe.updateTemplates(s);if(!r.success)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.")},onSuccess:()=>{me(),f({title:"Mensagens salvas"})}}),Se=P({mutationFn:async s=>{const r=await Pe.submitOfficialTemplate(s);if(!r.success)throw N(r,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.")},onSuccess:()=>{me(),f({title:"Template enviado para aprovação"})},onError:s=>f({title:"Não foi possÃvel enviar o modelo para aprovação",description:F(s),variant:"destructive"})}),v=U.data,k=v==null?void 0:v.setting,qe=Oe.data??[],Re=qe.filter(s=>
6s.provider==="OFFICIAL"),ye=(k==null?void 0:k.isActive)??!1,Ge=c.useMemo(()=>{const s=new Map,r=[...X,...((v==null?void 0:v.rules)??[]).flatMap(u=>u.professionalNames),...((v==null?void 0:v.history)??[]).map(u=>u.professionalName||"")];for(const u of r){const d=u.trim().replace(/\s+/g," "),L=d.normalize("NFD").replace(new RegExp("\\p{Diacritic}","gu"),"").toLocaleLowerCase("pt-BR");L&&!s.has(L)&&s.set(L,d)}return Array.from(s.values()).sort((u,d)=>u.localeCompare(d,"pt-BR"))},[X,v==null?void 0:v.history,v==null?void 0:v.rules]);c.useEffect(()=>{if(!(!ye||!(k!=null&&k.hasApiKey)))for(const s of(v==null?void 0:v.rules)??[])s.isActive&&(ge[s.id]||ue.current.has(s.id)||(ue.current.add(s.id),je.mutate(s.id)))},[ye,v==null?void 0:v.rules,ge,je,k==null?void 0:k.hasApiKey]);const Ve=s=>s.displayName||s.instanceName||s.phoneNumber||s.id,O=s=>{ve(r=>{const u=new Set(r);return u.has(s)?u.delete(s):u.add(s),u})},ns=s=>{Q(r=>{const u=new Set(r);return u.has(s)?u.delete(s):u.add(s),u})},Le=()=>{var r,u;const s=((r=v==null?void 0:v.templates.find(d=>d.isDefault))==null?void 0:r.id)||((u=v==null?void 0:v.templates[0])==null?void 0:u.id)||"";K(null),Ce(!1),A({name:"Confirmação amanhã",isActive:!0,cancelAction:"MARK_UNCONFIRMED",sendDaysMode:"ALL_DAYS",runTime:"09:00",targetOffsetDays:1,timezone:"America/Sao_Paulo",templateId:s,unitNames:[],professionalFilterMode:"ALL",professionalNames:[]})},a=s=>{K(s.id),Ce(!0),A({name:s.name,isActive:s.isActive,cancelAction:s.cancelAction,sendDaysMode:s.sendDaysMode,runTime:ca(s.runTimeMinutes),targetOffsetDays:s.targetOffsetDays,timezone:s.timezone,templateId:s.templateId||"",unitNames:s.unitNames,professionalFilterMode:s.professionalFilterMode,professionalNames:s.professionalNames})};return e.jsxs("section",{className:"space-y-6",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[C&&e.jsx(g,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:C,"aria-label":"Voltar para integrações externas",children:e.jsx(Ln,{className:"h-4 w-4"})}),e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(oa,{className:"h-4 w-4"}),"Admed"]}),e.jsx(be,{variant:ye?"default":"secondary",children:ye?"Ativo":"Inativo"}),(k==null?void 0:k.lastError)&&e.jsx(be,{variant:"destructive",children:"Atenção"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Confirma consultas por WhatsApp e registra o retorno automaticamente na Admed, com opção de só marcar como não confirmado ou desmarcar a agenda."}),(k==null?void 0:k.lastTestMessage)&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Ãltimo teste: ",k.lastTestMessage]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:ye?"Integração ativa":"Integração inativa"}),e.jsx(Be,{checked:ye,disabled:!i||h||fe.isPending||H.isPending||!ye&&(!V||!W&&!(k!=null&&k.hasApiKey)),onCheckedChange:s=>{if(s){fe.mutate(!0);return}H.mutate()}})]})]}),e.jsxs("div",{className:"rounded-lg border p-4",children:[e.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[e.jsx(ia,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("h4",{className:"text-sm font-medium",children:"Credenciais"})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-[1fr_1.4fr_auto]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Código do cliente"}),e.jsx(z,{value:V,onChange:s=>j(s.target.value),placeholder:"demo"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"API key"}),e.jsx(z,{value:W,onChange:s=>he(s.target.value),placeholder:k!=null&&k.hasApiKey?"Mantém a chave atual se vazio":"Token Admed",type:"password"})]}),e.jsx("div",{className:"flex items-end",children:e.jsxs(g,{onClick:()=>fe.mutate(!0),disabled:!V||!W&&!(k!=null&&k.hasApiKey)||fe.isPending,children:[fe.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Testar e salvar"]})})]}),(k==null?void 0:k.lastError)&&e.jsx("div",{className:"mt-3 rounded-md border border-destructive/20 bg-destructive/5 px-3 py-2 text-sm text-destructive",children:k.lastError})]}),ye?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex flex-wrap gap-2 border-b pb-2",children:[["units",_n,"Unidades"],["rules",Un,"Regras e próximos envios"],["messages",zn,"Mensagens"],["history",ha,"Histórico"]].map(([s,r,u])=>e.jsxs(g,{type:"button",variant:x===s?"default":"ghost",size:"sm",onClick:()=>E(s),children:[e.jsx(r,{className:"mr-2 h-4 w-4"}),String(u)]},String(s)))}),U.isLoading?e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):x==="units"?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3 sm:flex-row sm:items-end sm:justify-between",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-[220px_1fr]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Buscar unidades em agendas"}),e.jsxs(ne,{value:le,onValueChange:Ie,children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsxs(ie,{children:[e.jsx(q,{value:"0",children:"Somente hoje"}),e.jsx(q,{value:"1",children:"Hoje e amanhã"}),e.jsx(q,{value:"7",children:"Próximos 7 dias"}),e.jsx(q,{value:"15",children:"Próximos 15 dias"}),e.jsx(q,{value:"30",children:"Próximos 30 dias"})]})]})]}),e.jsx("p",{className:"self-end text-sm text-muted-foreground",children:"As prévias das regras também atualizam esta lista automaticamente."})]}),e.jsxs(g,{type:"button",variant:"outline",onClick:()=>ke.mutate(),disabled:!(k!=null&&k.hasApiKey)||ke.isPending,children:[ke.isPending?e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(Jn,{className:"mr-2 h-4 w-4"}),"Buscar unidades e profissionais"]})]}),e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Unidade Admed"}),e.jsx(w,{children:"Número WhatsApp"}),e.jsx(w,{children:"Status"})]})}),e.jsx($e,{children:((v==null?void 0:v.unitMappings)??[]).length===0?e.jsx($,{children:e.jsx(y,{colSpan:3,className:"py-8 text-center text-muted-foreground",children:((v==null?void 0:v.rules)??[]).length===0?"Crie uma regra para carregar as agendas e descobrir unidades.":"Nenhuma unidade encontrada n
6as prévias atuais."})}):v==null?void 0:v.unitMappings.map(s=>e.jsxs($,{children:[e.jsx(y,{className:"font-medium",children:s.unitName}),e.jsx(y,{children:e.jsxs(ne,{value:s.instanceId??"none",onValueChange:r=>Te.mutate([{unitName:s.unitName,instanceId:r==="none"?null:r,isActive:s.isActive}]),children:[e.jsx(te,{className:"max-w-sm",children:e.jsx(re,{placeholder:"Selecione"})}),e.jsxs(ie,{children:[e.jsx(q,{value:"none",children:"Sem vÃnculo"}),qe.map(r=>e.jsxs(q,{value:r.id,children:[Ve(r)," · ",r.provider]},r.id))]})]})}),e.jsx(y,{children:e.jsx(be,{variant:s.instanceId?"default":"secondary",children:s.instanceId?"Vinculada":"Pendente"})})]},s.id))})]}),Re.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Templates da API Oficial"}),Re.map(s=>{const r=v==null?void 0:v.officialTemplateBindings.find(u=>u.instanceId===s.id);return e.jsxs("div",{className:"flex flex-col gap-2 rounded-md border p-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium",children:Ve(s)}),e.jsx("div",{className:"text-xs text-muted-foreground",children:(r==null?void 0:r.templateName)||"Template ainda não enviado"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(be,{variant:(r==null?void 0:r.status)==="APPROVED"?"default":(r==null?void 0:r.status)==="REJECTED"?"destructive":"secondary",children:(r==null?void 0:r.status)??"PENDING"}),e.jsxs(g,{size:"sm",variant:"outline",disabled:Se.isPending,onClick:()=>Se.mutate(s.id),children:[Se.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),Se.isPending?"Enviando...":"Enviar template"]})]})]},s.id)})]})]}):x==="rules"?e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/30 p-3 text-sm text-muted-foreground",children:"A prévia usa o próximo horário real de envio. âAmanhãâ significa o dia seguinte ao envio automático, não o dia seguinte à configuração."}),e.jsx(Oa,{open:ce,onOpenChange:Ce,children:e.jsxs("div",{className:"rounded-lg border",children:[e.jsx(Ga,{asChild:!0,children:e.jsxs(g,{type:"button",variant:"ghost",className:"flex h-auto w-full justify-between gap-3 p-3 text-left",children:[e.jsxs("span",{children:[e.jsx("span",{className:"block text-sm font-medium",children:T?"Editar regra":"Nova regra"}),e.jsx("span",{className:"block text-xs font-normal text-muted-foreground",children:Nt(D)})]}),e.jsx(ea,{className:Xa("h-4 w-4 shrink-0 transition-transform",ce&&"rotate-180")})]})}),e.jsx(La,{scrollIntoView:!1,children:e.jsxs("div",{className:"grid gap-3 border-t p-3 sm:grid-cols-2 lg:grid-cols-5",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 sm:col-span-2 lg:col-span-5",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"âAgendas a confirmarâ é sempre calculado em relação ao dia em que o envio automático vai rodar."}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:D.isActive?"Regra ativa":"Regra inativa"}),e.jsx(Be,{checked:D.isActive,onCheckedChange:s=>A(r=>({...r,isActive:s}))})]}),T&&e.jsx(g,{type:"button",variant:"ghost",size:"sm",onClick:Le,children:"Cancelar edição"})]})]}),e.jsxs("div",{className:"space-y-2 lg:col-span-2",children:[e.jsx(p,{children:"Nome"}),e.jsx(z,{value:D.name,onChange:s=>A(r=>({...r,name:s.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Horário de envio"}),e.jsx(z,{type:"time",value:D.runTime,onChange:s=>A(r=>({...r,runTime:s.target.value}))})]}),e.jsxs("div",{className:"space-y-2 lg:col-span-2",children:[e.jsx(p,{children:"Dias de disparo"}),e.jsx(qa,{type:"single",value:D.sendDaysMode,onValueChange:s=>{s&&A(r=>({...r,sendDaysMode:s}))},className:"grid grid-cols-1 items-stretch gap-2 sm:grid-cols-2",children:ma.map(s=>e.jsx(Ps,{value:s.value,variant:"outline",className:"h-auto min-h-12 justify-start whitespace-normal px-3 py-2 text-left data-[state=on]:border-primary data-[state=on]:bg-primary/10","aria-label":s.label,children:s.label},s.value))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:Ka(D.sendDaysMode).description})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Agendas a confirmar"}),e.jsxs(ne,{value:Va(D.targetOffsetDays),onValueChange:s=>A(r=>({...r,targetOffsetDays:s==="custom"?r.targetOffsetDays:Number(s)})),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsx(ie,{children:ht.map(s=>e.jsx(q,{value:s.value,children:s.label},s.value))})]}),Va(D.targetOffsetDays)==="custom"&&e.jsx(z,{type:"number",min:0,max:60,value:D.targetOffsetDays,onChange:s=>A(r=>({...r,targetOffsetDays:Number(s.target.value)}))})]}),e.jsxs("div",{className:"space-y-2 lg:col-span-2",children:[e.jsx(p,{children:"Ação do botão Cancelar"}),e.jsxs(ne,{value:D.cancelAction,onValueChange:s=>A(r=>({...r,cancelAction:s})),children:[e.jsx(te,{children:e.jsx(re,{})}),e.jsx(ie,{children:ua.map(s=>e.jsx(q,{value:s.value,children:s.label},s.value))})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:Wa(D.cancelAction).description})]}),e.jsxs("div",{className:"space-y-2 lg:col-span-2",children:[e.jsx(p,{children:"Mensagem"}),e.jsxs(ne,{value:D.templateId,onValueChange:s=>A(r=>({...r,templateId:s}
6)),children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione"})}),e.jsx(ie,{children:((v==null?void 0:v.templates)??[]).map(s=>e.jsx(q,{value:s.id,children:s.name},s.id))})]})]}),((v==null?void 0:v.unitMappings)??[]).length>0&&e.jsxs("div",{className:"space-y-2 lg:col-span-5",children:[e.jsx(p,{children:"Unidades"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:((v==null?void 0:v.unitMappings)??[]).map(s=>e.jsxs("label",{className:"flex min-h-9 items-center gap-2 rounded-md border px-3 py-2 text-sm",children:[e.jsx(_s,{checked:D.unitNames.includes(s.unitName),onCheckedChange:r=>A(u=>({...u,unitNames:r===!0?Array.from(new Set([...u.unitNames,s.unitName])):u.unitNames.filter(d=>d!==s.unitName)}))}),s.unitName]},s.id))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Nenhuma unidade selecionada aplica a regra para todas."})]}),e.jsxs("div",{className:"space-y-2 lg:col-span-5",children:[e.jsx(p,{children:"Profissionais"}),e.jsxs(qa,{type:"single",value:D.professionalFilterMode,onValueChange:s=>{s&&A(r=>({...r,professionalFilterMode:s,...s==="ALL"?{professionalNames:[]}:{}}))},className:"grid grid-cols-1 items-stretch gap-2 sm:grid-cols-3",children:[e.jsx(Ps,{value:"ALL",variant:"outline",className:"h-10",children:"Todos"}),e.jsx(Ps,{value:"INCLUDE",variant:"outline",className:"h-10",children:"Somente selecionados"}),e.jsx(Ps,{value:"EXCLUDE",variant:"outline",className:"h-10",children:"Todos, exceto selecionados"})]}),D.professionalFilterMode!=="ALL"&&(Ge.length>0?e.jsx("div",{className:"flex max-h-44 flex-wrap gap-2 overflow-y-auto rounded-md border p-2",children:Ge.map(s=>e.jsxs("label",{className:"flex min-h-9 items-center gap-2 rounded-md border px-3 py-2 text-sm",children:[e.jsx(_s,{checked:D.professionalNames.includes(s),onCheckedChange:r=>A(u=>({...u,professionalNames:r===!0?Array.from(new Set([...u.professionalNames,s])):u.professionalNames.filter(d=>d!==s)}))}),s]},s))}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"Busque as agendas para carregar os profissionais disponÃveis."})),e.jsx("p",{className:"text-xs text-muted-foreground",children:"A seleção usa o nome retornado pela agenda Admed e aceita múltiplos profissionais."})]}),e.jsx("div",{className:"flex items-end lg:col-span-5",children:e.jsxs(g,{onClick:()=>I.mutate(void 0),disabled:I.isPending||D.professionalFilterMode!=="ALL"&&D.professionalNames.length===0,children:[T?e.jsx(ks,{className:"mr-2 h-4 w-4"}):e.jsx(fs,{className:"mr-2 h-4 w-4"}),T?"Salvar regra":"Criar regra"]})})]})})]})}),((v==null?void 0:v.rules)??[]).length===0?e.jsx("div",{className:"rounded-lg border p-6 text-center text-sm text-muted-foreground",children:"Nenhuma regra criada."}):e.jsx("div",{className:"space-y-3",children:((v==null?void 0:v.rules)??[]).map(s=>{const r=ge[s.id],u=Wa(s.cancelAction);return e.jsxs("div",{className:"space-y-3 rounded-lg border p-3",children:[e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:s.name}),s.lastError&&e.jsx(be,{variant:"destructive",children:"Atenção"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:ft(s,r)}),jt(s,r)&&e.jsx("p",{className:"text-xs text-warning",children:"Como o horário de envio de hoje já passou, o próximo envio será no próximo dia programado."})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border px-3 py-1.5",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:s.isActive?"Ativa":"Inativa"}),e.jsx(Be,{checked:s.isActive,disabled:I.isPending,"aria-label":s.isActive?"Desativar regra":"Ativar regra",onCheckedChange:d=>I.mutate({...s,isActive:d})})]}),e.jsxs(g,{size:"sm",variant:"outline",onClick:()=>Ne(s.id),disabled:!(k!=null&&k.hasApiKey)||je.isPending,children:[je.isPending?e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(Ts,{className:"mr-2 h-4 w-4"}),"Atualizar prévia"]}),e.jsx(g,{size:"icon",variant:"ghost","aria-label":"Editar regra",onClick:()=>a(s),children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsx(g,{size:"icon",variant:"ghost","aria-label":"Remover regra",className:"text-destructive hover:text-destructive",onClick:()=>
6o(s.id),children:e.jsx(hs,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"grid gap-2 text-sm md:grid-cols-7",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Horário de envio:"})," ",e.jsx("span",{className:"font-medium",children:ca(s.runTimeMinutes)})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Dias de disparo:"})," ",e.jsx("span",{className:"font-medium",children:Ka(s.sendDaysMode).label})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Agendas a confirmar:"})," ",e.jsxs("span",{className:"font-medium",children:[gt(s.targetOffsetDays)," em relação ao envio"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Próximo envio:"})," ",e.jsx("span",{className:"font-medium",children:da((r==null?void 0:r.nextRunAt)??s.nextRunAt)})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Unidades:"})," ",e.jsx("span",{className:"font-medium",children:s.unitNames.length?s.unitNames.join(", "):"Todas"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Profissionais:"})," ",e.jsx("span",{className:"font-medium",children:pt(s)})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Ao cancelar:"})," ",e.jsx("span",{className:"font-medium",children:u.label})]})]}),e.jsx(Oa,{open:we.has(s.id),onOpenChange:()=>O(s.id),children:e.jsxs("div",{className:"rounded-md bg-muted/40 p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h5",{className:"text-sm font-medium",children:"Próximos envios"}),r?e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[e.jsxs(be,{variant:r.summary.ready>0?"default":"secondary",children:[r.summary.ready," prontos"]}),e.jsxs(be,{variant:r.summary.blocked>0?"destructive":"secondary",children:[r.summary.blocked," bloqueados"]}),e.jsxs("span",{className:"text-muted-foreground",children:[r.summary.total," consulta(s) em ",t
6n(r)," · prévia atualizada em ",la(r.generatedAt)]})]}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"A prévia será carregada automaticamente quando a regra estiver ativa."})]}),e.jsx(Ga,{asChild:!0,children:e.jsxs(g,{type:"button",variant:"outline",size:"sm",disabled:!r||r.items.length===0,children:[we.has(s.id)?e.jsx(ea,{className:"mr-2 h-4 w-4"}):e.jsx(Pa,{className:"mr-2 h-4 w-4"}),we.has(s.id)?"Ocultar pacientes":"Ver pacientes"]})})]}),e.jsx(La,{scrollIntoView:!1,children:e.jsx("div",{className:"mt-3 max-h-[520px] overflow-auto overscroll-contain rounded-md border bg-background",children:r!=null&&r.items.length?e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Paciente"}),e.jsx(w,{children:"Horário"}),e.jsx(w,{children:"Unidade"}),e.jsx(w,{children:"Status"}),e.jsx(w,{children:"Motivo"})]})}),e.jsx($e,{children:r.items.map((d,L)=>{const Y=yt(d.status),se=`${s.id}-${d.appointmentId??"sem-id"}-${L}`,ae=Ee.has(se);return e.jsxs(c.Fragment,{children:[e.jsxs($,{className:"cursor-pointer",onClick:()=>ns(se),children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[ae?e.jsx(ea,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Pa,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:d.patientName})]})}),e.jsx(y,{children:d.appointmentTime}),e.jsx(y,{children:d.unitName??"-"}),e.jsx(y,{children:e.jsx(be,{variant:Y.variant,children:Y.label})}),e.jsx(y,{className:"max-w-xs truncate text-muted-foreground",children:d.reason??d.instanceLabel??"-"})]}),ae&&e.jsx($,{children:e.jsx(y,{colSpan:5,className:"bg-muted/30",children:e.jsxs("div",{className:"grid gap-3 text-sm sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Telefone:"})," ",d.patientPhone||"-"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Procedimento:"})," ",d.procedureName||"-"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Profissional:"})," ",d.professionalName||"-"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Convênio:"})," ",d.convenio||"-"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Unidade:"})," ",d.unitName||"-"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Data/hora:"})," ",d.appointmentDate," ",d.appointmentTime]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"ID agenda:"})," ",d.appointmentId??"-"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"WhatsApp:"})," ",d.instanceLabel||"-"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Provider:"})," ",d.provider||"-"]}),e.jsxs("div",{className:"sm:col-span-2 lg:col-span-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Status:"})," ",Y.label,d.reason?` · ${d.reason}`:""]})]})})},`${se}-details`)]},se)})})]}):e.jsx("p",{className:"p-3 text-sm text-muted-foreground",children:"Nenhuma consulta encontrada para esta regra."})})})]})})]},s.id)})})]}):x==="messages"?e.jsxs("div",{className:"space-y-3",children:[b.map(s=>e.jsxs("div",{className:"space-y-2 rounded-lg border p-3",children:[e.jsxs("div",{className:"grid gap-2 sm:grid-cols-[1fr_160px]",children:[e.jsx(z,{value:s.name,onChange:r=>m(u=>u.map(d=>d.id===s.id?{...d,name:r.target.value}:d))}),e.jsx(z,{value:s.footerText??"",placeholder:"Rodapé",onChange:r=>m(u=>u.map(d=>d.id===s.id?{...d,footerText:r.target.value}:d))})]}),e.jsx($n,{value:s.bodyText,rows:4,onChange:r=>m(u=>u.map(d=>d.id===s.id?{...d,bodyText:r.target.value}:d))})]},s.id)),e.jsxs(g,{variant:"outline",disabled:De.isPending,onClick:()=>De.mutate(b),children:[De.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Salvar mensagens"]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Variáveis: ","{paciente}",", ","{procedimento}",", ","{profissional}",", ","{data}",", ","{hora}",", ","{unidade}",", ","{convenio}"]})]}):e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Paciente"}),e.jsx(w,{children:"Agenda"}),e.jsx(w,{children:"Unidade"}),e.jsx(w,{children:"Status"}),e.jsx(w,{children:"Erro"})]})}),e.jsx($e,{children:((v==null?void 0:v.history)??[]).map(s=>e.jsxs($,{children:[e.jsx(y,{children:s.patientName}),e.jsxs(y,{children:[s.appointmentDate," ",s.appointmentTime]}),e.jsx(y,{children:s.unitName??"-"}),e.jsx(y,{children:e.jsxs(be,{variant:s.status==="FAILED"||s.status==="SKIPPED"?"destructive":s.status==="RESPONDED"?"default":"secondary",children:[s.status,s.responseValue?` ${s.responseValue}`:""]})}),e.jsx(y,{className:"max-w-xs truncate text-muted-foreground",children:s.error??"-"})]},s.id))})]})]}):e.jsx("div",{className:"rounded-lg border border-dashed p-4 text-sm text-muted-foreground",children:"Ative a Admed com código do cliente e API key para configurar unidades, regras, mensagens e histórico."}),e.jsx(He,{open:!!oe,onOpenChange:s=>{!s&&!ee.isPending&&o(null)},children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Remover regra?"}),e.jsx(Ze,{children:"Esta ação não pode ser desfeita. Os envios automáticos desta regra serão interrompidos."})]}),e.jsxs(es,{children:[e.jsx(ss,{disabled:ee.isPending,children:"Cancelar"}),e.jsx(as,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:ee.isPending,onClick:s=>{!oe||ee.isPending||(s.preventDefault(),ee.mutate(oe))},children:ee.isPending?"Removendo...":"Remover"})]})]})})]})}function Ct(){var Sa,Aa,Ia,Ea,Ta,ka,Da,Ma,Ra,Fa;const{user:t}=Rn(),{toast:i}=Ds(),h=Fn(),C=Pn(),f=Kn(),S=Ms(),x=qn(t),[E,V]=c.useState(""),[j,W]=c.useState(null),[he,D]=c.useState(!1),[A,T]=c.useState(null),[K,oe]=c.useState(""),[o,b]=c.useState(null),[m,le]=c.useState(null),[Ie,X]=c.useState(null),[M,ge]=c.useState(!1),[pe,ce]=c.useState(""),[Ce,we]=c.useState(""),[ve,Ee]=c.useState([]),[Q,ue]=c.useState(null),[U,Oe]=c.useState(null),[me,fe]=c.useState(null),[H,je]=c.useState(""),[Ne,xe]=c.useState([]),[Te,ke]=c.useState([]),[I,ee]=c.useState(!1),[De,Se]=c.useState(!1),[v,k]=c.useState(""),[qe,Re]=c.useState(""),[ye,Ge]=c.useState(""),Ve=c.useRef(null),O=c.useRef(null),[ns,Le]=c.useState(null),{data:a,isLoading:s}=On({enabled:!!x}
6),r=((Aa=(Sa=a==null?void 0:a.permissions)==null?void 0:Sa.settings)==null?void 0:Aa.canManageIntegrations)??!1,u=((Ia=t==null?void 0:t.roles)==null?void 0:Ia.some(n=>n.toUpperCase()==="SUPER_ADMIN"))??!1,d=((Ea=t==null?void 0:t.companyFeatures)==null?void 0:Ea.api_access)===!0,L=((Ta=t==null?void 0:t.companyFeatures)==null?void 0:Ta.calendarGoogleIntegrationEnabled)===!0,Y=((Da=(ka=a==null?void 0:a.permissions)==null?void 0:ka.modules)==null?void 0:Da.calendar)??!1,se=((Ra=(Ma=a==null?void 0:a.permissions)==null?void 0:Ma.calendar)==null?void 0:Ra.canManageGoogleIntegration)??!1,ae=L&&Y&&se,Me=B({queryKey:["socios-hub-calendar-connection"],queryFn:async()=>{const n=await _e.getSociosHubCalendarConnection();if(!n.success||!n.data)throw N(n,"Não foi possÃvel carregar a integração de agenda.");return n.data},enabled:!!x&&ae}),Fe=((Fa=Me.data)==null?void 0:Fa.active)===!0,Z=Me.isError&&Me.data===void 0,ts=!Me.isLoading&&!s,pa=mt(),va=`${pa}/api`,rn=pa,{data:R,isLoading:fa,isFetching:ja,error:Na,refetch:on}=B({queryKey:["google-calendar-connection",x],queryFn:async()=>{const n=await _e.getGoogleConnection();if(!n.success||!n.data)throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},enabled:!!x&&ae,retry:1});c.useEffect(()=>{var J,Ae,We;if(!R){je(""),xe([]),ke([]);return}const n=R.writeCalendarId??((J=R.calendars.find(os=>os.selectedForWrite))==null?void 0:J.id)??((Ae=R.calendars[0])==null?void 0:Ae.id)??"",l=Array.from(new Set([...R.busyCalendarIds,...n?[n]:[]])),_=Array.from(new Set((We=R.bookingCalendarIds)!=null&&We.length?R.bookingCalendarIds:n?[n]:[]));je(n),xe(l),ke(_)},[R]),c.useEffect(()=>{const n=new URLSearchParams(h.search),l=n.get("googleCalendar");if(!l)return;const _=n.get("googleCalendarError"),J=n.get("googleCalendarPrompt");i(l==="connected"?{title:"Google Calendar conectado",description:J==="select_calendar"?"Escolha o calendário de escrita e os calendários de indisponibilidade, depois salve.":"Conexão concluÃda com sucesso."}:{variant:"destructive",title:"Não foi possÃvel conectar o Google Calendar",description:_||"O Google não concluiu a autorização. Clique em conectar de novo e aceite as permissões solicitadas."}),n.delete("googleCalendar"),n.delete("googleCalendarError"),n.delete("googleCalendarPrompt");const Ae=n.toString();C({pathname:h.pathname,search:Ae?`?${Ae}`:""},{replace:!0})},[h.pathname,h.search,C,i]),c.useEffect(()=>{const l=new URLSearchParams(h.search).get("section");if(!l)return;const J={"meta-conversions":Ve,"google-ads-conversions":O}[l];let Ae=0,We=null,os=!1;const Ys=()=>{if(os)return;const Ss=J==null?void 0:J.current;if(!Ss){Ae+=1,Ae<10&&(We=window.setTimeout(Ys,120));return}Ss.scrollIntoView({behavior:window.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth",block:"start"}),Le(l),Ae+=1,Ae<6&&(We=window.setTimeout(Ys,180))};Ys();const Dn=window.setTimeout(()=>{Le(Ss=>Ss===l?null:Ss)},2200);return()=>{os=!0,We!==null&&window.clearTimeout(We),window.clearTimeout(Dn)}},[h.search]);const ln=c.useMemo(()=>{var os;if(!R||R.status!=="CONNECTED")return!1;const n=R.writeCalendarId??"",l=Array.from(new Set([...R.busyCalendarIds,...n?[n]:[]])),_=Array.from(new Set((os=R.bookingCalendarIds)!=null&&os.length?R.bookingCalendarIds:n?[n]:[])),J=H,Ae=Array.from(new Set([...Ne,...J?[J]:[]])),We=Array.from(new Set(Te));return n!==J||!$a(l,Ae)||!$a(_,We)},[R,H,Ne,Te]),{data:rs}=B({queryKey:["webhooks-catalog",x],queryFn:async()=>{const n=await ls.listEvents();if(!n.success)throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},enabled:!!x&&r&&d}),dn=c.useMemo(()=>(rs==null?void 0:rs.categories.flatMap(n=>n.events))??[],[rs]),{data:zs,isLoading:cn,error:un}=B({queryKey:["api-keys",x],queryFn:async()=>{const n=await Js.list();if(!n.success)throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},enabled:!!x&&r&&d}),{data:$s,isLoading:mn,error:xn}=B({queryKey:["webhooks-endpoints",x],queryFn:async()=>{const n=await ls.list();if(!n.success)throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},enabled:!!x&&r&&d}),Vs=P({mutationFn:async n=>{const l=await Js.generate(n);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:n=>{n&&n.key&&W(n.key),V(""),S.invalidateQueries({queryKey:["api-keys",x]}),i({title:"Chave gerada com sucesso!"})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel gerar a chave de API",description:l})}}),js=P({mutationFn:async n=>{const l=await Js.revoke(n);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:()=>{T(null),i({title:"Chave revogada!"}),S.invalidateQueries({queryKey:["api-keys",x]})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel revogar a chave de API",description:l})}}),{data:gs,isLoading:hn}=B({queryKey:["super-admin-api-keys"],queryFn:async()=>{const n=await Fs.list();if(!n.success)throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},enabled:u}),Ws=P({mutationFn:async n=>{const l=await Fs.generate(n);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:n=>{b((n==null?void 0:n.key)??null),oe(""),S.invalidateQueries({queryKey:["super-admin-api-keys"]}),i({title:"Token Super Admin gerado com sucesso!"})},onError:n=>{i({variant:"destructive",title:"Não foi possÃvel gerar a chave de API",description:F(n)})}}),Ns=P({mutationFn:async n=>{const l=await Fs.revoke(n);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:()=>{le(null),i({title:"Token Super Admin revogado!"}),S.invalidateQueries({queryKey:["super-admin-api-keys"]})},onError:n=>{i({variant:"destructive",title:"Não foi possÃvel revogar a chave de API",description:F(n)})}}),ys=P({mutationFn:async n=>{const l=gs==null?void 0:gs.find(J=>J.id===n),_=await Fs.rotate(n,(l==null?void 0:l.name)||"Super Admin API");if(!_.success)throw N(_,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return _.data},onSuccess:n=>{X(null),b((n==null?void 0:n.key)??null),S.invalidateQueries({queryKey:["super-admin-api-keys"]}),i({title:"Token Super Admin rotacionado!"})},onError:n=>{i({variant:"destructive",title:"Não foi possÃvel renovar a chave de API",description:F(n)})}}),Ks=P({mutationFn:async()=>{const n=await ls.create({name:pe,url:Ce,subscribedEvents:ve,isActive:!0});if(!n.success)throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},onSuccess:n=>
6{ue((n==null?void 0:n.secret)??null),ce(""),we(""),Ee([]),S.invalidateQueries({queryKey:["webhooks-endpoints",x]}),i({title:"Webhook criado com sucesso!"})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel criar o webhook",description:l})}}),ps=P({mutationFn:async n=>{const l=await ls.update(n.endpointId,n.payload);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:()=>{S.invalidateQueries({queryKey:["webhooks-endpoints",x]})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel salvar o webhook",description:l})}}),bs=P({mutationFn:async n=>{const l=await ls.remove(n);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:()=>{fe(null),i({title:"Webhook removido com sucesso!"}),S.invalidateQueries({queryKey:["webhooks-endpoints",x]})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel excluir o webhook",description:l})}}),ya=P({mutationFn:async n=>{const l=await ls.test(n);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:()=>{i({title:"Evento de teste enfileirado!"}),S.invalidateQueries({queryKey:["webhooks-endpoints",x]})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel testar o webhook",description:l})}}),ba=P({mutationFn:async n=>{const l=await ls.regenerateSecret(n);if(!l.success)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:n=>{n!=null&&n.secret&&(ue(n.secret),f(n.secret)),i({title:"Secret regenerado e copiado!"}),S.invalidateQueries({queryKey:["webhooks-endpoints",x]})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel gerar um novo segredo do webhook",description:l})}}),vs=P({mutationFn:async()=>{var l;const n=await _e.startGoogleOAuth();if(!n.success||!((l=n.data)!=null&&l.authUrl))throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},onSuccess:n=>{window.location.assign(n.authUrl)},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel iniciar a conexão com o Google",description:l})}}),Bs=P({mutationFn:async n=>{const l=await _e.updateGoogleConnection(n);if(!l.success||!l.data)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:n=>{S.setQueryData(["google-calendar-connection",x],n),S.invalidateQueries({queryKey:["google-calendar-connection",x]}),i({title:"Configuração do Google Calendar salva"})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel salvar a conexão com o Google",description:l})}}),is=P({mutationFn:async()=>{const n=await _e.disconnectGoogleConnection();if(!n.success)throw N(n,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return n.data},onSuccess:()=>{ee(!1),S.setQueryData(["google-calendar-connection",x],{status:"DISCONNECTED",accountEmail:null,googleUserId:null,writeCalendarId:null,busyCalendarIds:[],bookingCalendarIds:[],calendars:[],lastSyncAt:null,lastError:null,pendingSyncCount:0}),je(""),xe([]),ke([]),S.invalidateQueries({queryKey:["google-calendar-connection",x]}),i({title:"Google Calendar desconectado"})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel desconectar o Google",description:l})}}),Qs=P({mutationFn:async n=>{const l=await _e.createGoogleCalendar(n);if(!l.success||!l.data)throw N(l,"Não foi possÃvel concluir. Tente de novo. Se continuar, avise o suporte.");return l.data},onSuccess:n=>{var l;S.setQueryData(["google-calendar-connection",x],n),S.invalidateQueries({queryKey:["google-calendar-connection",x]}),je(n.writeCalendarId??""),xe(Array.from(new Set([...n.busyCalendarIds??[],...n.writeCalendarId?[n.writeCalendarId]:[]]))),ke(Array.from(new Set((l=n.bookingCalendarIds)!=null&&l.length?n.bookingCalendarIds:n.writeCalendarId?[n.writeCalendarId]:[]))),k(""),Re(""),Ge(""),Se(!1),i({title:"Nova agenda criada e selecionada"})},onError:n=>{const l=F(n);i({variant:"destructive",title:"Não foi possÃvel criar o calendário",description:l})}}),gn=()=>{E.trim()&&Vs.mutate(E.trim())},Hs=()=>{ce(""),we(""),Ee([]),ue(null),Oe(null)},pn=()=>{Hs(),ge(!0)},vn=n=>{Oe(n),ue(null),ce(n.name),we(n.url),Ee(n.subscribedEvents),ge(!0)},fn=()=>
6{if(!(!pe.trim()||!Ce.trim()||ve.length===0)){if(!U){Ks.mutate();return}ps.mutate({endpointId:U.id,payload:{name:pe,url:Ce,subscribedEvents:ve}},{onSuccess:()=>{Hs(),ge(!1),i({title:"Webhook atualizado com sucesso!"})}})}},jn=n=>{Ee(l=>l.includes(n)?l.filter(_=>_!==n):[...l,n])},Nn=n=>{ps.mutate({endpointId:n.id,payload:{isActive:!n.isActive}})},yn=n=>{je(n),xe(l=>l.includes(n)?l:[...l,n])},bn=(n,l)=>{xe(_=>l?_.includes(n)?_:[..._,n]:_.filter(J=>J!==n))},Cn=(n,l)=>{ke(_=>l?_.includes(n)?_:[..._,n]:_.filter(J=>J!==n)),l&&xe(_=>_.includes(n)?_:[..._,n])},wn=()=>{if(!H)return;const n=Array.from(new Set([...Ne,H,...Te])),l=Array.from(new Set(Te));Bs.mutate({writeCalendarId:H,busyCalendarIds:n,bookingCalendarIds:l})},Sn=()=>{const n=v.trim();n&&Qs.mutate({summary:n,description:qe.trim()||void 0,timeZone:ye.trim()||void 0})},Cs=(R==null?void 0:R.status)??"DISCONNECTED",Ca=ut(Cs),ws=(R==null?void 0:R.calendars)??[],Rs=Cs!=="DISCONNECTED",An=Rs&&(R==null?void 0:R.accountEmail)||"-",In=Rs&&(R==null?void 0:R.googleUserId)||"-",En=Rs?la(R==null?void 0:R.lastSyncAt):"-",Tn=Rs?(R==null?void 0:R.pendingSyncCount)??0:0,kn=Cs==="CONNECTED"&&H.length>0&&Ne.length>0&&Te.length>0&&ln,wa=n=>Xa("scroll-mt-24 rounded-2xl transition-shadow",ns===n&&"ring-2 ring-primary/35 ring-offset-2 ring-offset-background");return e.jsxs("div",{className:"space-y-10",children:[e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Qn,{className:"h-4 w-4"}),"API e Documentação"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Use o endpoint abaixo e consulte a documentação pública da API para testar integrações."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Endpoint da API"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("code",{className:"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold flex-1",children:va}),e.jsx(g,{variant:"outline",size:"icon","aria-label":"Copiar endpoint da API",onClick:()=>f(va),children:e.jsx(qs,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"space-y-3 pt-1",children:[e.jsx(p,{children:"Documentação da API pública"}),e.jsxs(g,{variant:"outline",onClick:()=>window.open(`${rn}/docs`,"_blank"),children:[e.jsx(Hn,{className:"h-4 w-4 mr-2"}),"Abrir Documentação"]})]})]})]}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Yn,{className:"h-4 w-4"}),"WhatsApp"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Gerencie conexões e instâncias do WhatsApp. Credenciais de providers são gerenciadas no admin global."})]}),e.jsx(g,{asChild:!0,children:e.jsx(Xs,{to:"/whatsapp",children:"Gerenciar conexões"})})]}),e.jsx(de,{}),Z?e.jsx("section",{className:"space-y-4",children:e.jsx("div",{className:"text-sm text-muted-foreground",children:"Não foi possÃvel carregar a integração de agenda. Recarregue a página e tente novamente."})}):ts?Fe?e.jsx(dt,{canManage:ae}):e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(en,{className:"h-4 w-4"}),"Google Calendar"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Conecte sua conta para sincronizar eventos confirmados e bloquear horários já ocupados."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(be,{variant:Ca.variant,children:Ca.label}),e.jsx(g,{variant:"outline",size:"icon","aria-label":"Atualizar status do Google Calendar",onClick:()=>on(),disabled:!ae||fa||ja,title:"Atualizar status",children:e.jsx(Ts,{className:`h-4 w-4 ${ja?"animate-spin":""}`})})]})]}),e.jsx("div",{className:"space-y-4",children:s?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):L?Y?se?fa?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):Na?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:F(Na)}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2 text-sm md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Conta conectada:"})," ",e.jsx("span",{className:"font-medium",children:An})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Google User ID:"})," ",e.jsx("span",{className:"font-mono text-xs",children:In})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Ãltima sincronização:"})," ",e.jsx("span",{className:"font-medium",children:En})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Pendências de sync:"}
6)," ",e.jsx("span",{className:"font-medium",children:Tn})]})]}),(R==null?void 0:R.lastError)&&e.jsxs("div",{className:"rounded-md border border-warning/20 bg-warning/5 p-3 text-sm text-warning",children:["Ãltimo erro: ",R.lastError]}),Cs==="CONNECTED"?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 xl:grid-cols-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Calendário de escrita"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Escolha uma agenda existente ou crie uma nova agenda agora."}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[e.jsx("div",{className:"w-full sm:flex-1",children:e.jsxs(ne,{value:H,onValueChange:yn,children:[e.jsx(te,{children:e.jsx(re,{placeholder:"Selecione um calendário"})}),e.jsx(ie,{children:ws.map(n=>e.jsxs(q,{value:n.id,children:[n.summary,n.primary?" (principal)":""]},n.id))})]})}),e.jsxs(ds,{open:De,onOpenChange:n=>{Se(n),n||(k(""),Re(""),Ge(""))},children:[e.jsx(Zs,{asChild:!0,children:e.jsx(g,{type:"button",variant:"outline",children:"Criar agenda"})}),e.jsxs(cs,{children:[e.jsxs(us,{children:[e.jsx(ms,{children:"Criar nova agenda no Google"}),e.jsx(xs,{children:"Informe o nome da agenda. Após criar, ela já ficará selecionada para sincronização."})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-calendar-summary",children:"Nome da agenda"}),e.jsx(z,{id:"google-calendar-summary",placeholder:`Ex: ${Gn.name} - Comercial`,value:v,onChange:n=>k(n.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-calendar-description",children:"Descrição (opcional)"}),e.jsx(z,{id:"google-calendar-description",placeholder:"Ex: Agenda de reuniões comerciais",value:qe,onChange:n=>Re(n.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"google-calendar-timezone",children:"Timezone (opcional)"}),e.jsx(z,{id:"google-calendar-timezone",placeholder:"Ex: America/Sao_Paulo",value:ye,onChange:n=>Ge(n.target.value)})]})]}),e.jsx(Es,{children:e.jsxs(g,{type:"button",onClick:Sn,disabled:!v.trim()||Qs.isPending,children:[Qs.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Criar agenda"]})})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Calendários para indisponibilidade (busy)"}),e.jsx("div",{className:"max-h-56 space-y-2 overflow-auto overscroll-contain rounded-md border p-3",children:ws.length?ws.map(n=>{const l=Ne.includes(n.id),_=H===n.id,J=Te.includes(n.id);return e.jsxs("label",{className:"flex items-start gap-2 text-sm",children:[e.jsx(_s,{checked:l,onCheckedChange:Ae=>bn(n.id,Ae===!0),disabled:_||J}),e.jsxs("span",{className:"flex flex-col",children:[e.jsxs("span",{className:"font-medium",children:[n.summary,n.primary?" (principal)":""]}),_&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"O calendário de escrita sempre permanece marcado."}),!_&&J&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"Agendas disponibilizadas para IA também permanecem mar
6cadas como busy."})]})]},n.id)}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nenhum calendário encontrado na conta conectada."})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{children:"Agendas reais para IA e links"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"As agendas marcadas aqui passam a aparecer para a IA e nos links públicos, substituindo os tipos internos."}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["O nome público e o slug compartilhado dessas agendas são ajustados em Agenda ",">"," Tipos de evento."]}),e.jsx("div",{className:"max-h-56 space-y-2 overflow-auto overscroll-contain rounded-md border p-3",children:ws.length?ws.map(n=>{const l=Te.includes(n.id);return e.jsxs("label",{className:"flex items-start gap-2 text-sm",children:[e.jsx(_s,{checked:l,onCheckedChange:_=>Cn(n.id,_===!0)}),e.jsxs("span",{className:"flex flex-col",children:[e.jsxs("span",{className:"font-medium",children:[n.summary,n.primary?" (principal)":""]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Se marcada, essa agenda vira uma agenda real do sistema para IA, disponibilidade e link público."})]})]},`${n.id}-booking`)}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nenhum calendário encontrado na conta conectada."})})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(g,{onClick:wn,disabled:!kn||Bs.isPending,children:[Bs.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Salvar configuração"]}),e.jsxs(g,{variant:"outline",onClick:()=>vs.mutate(),disabled:vs.isPending,children:[vs.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Reconectar conta"]}),e.jsxs(g,{variant:"destructive",onClick:()=>ee(!0),disabled:is.isPending,children:[is.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Desconectar"]})]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Clique em conectar para autorizar sua conta Google e iniciar a sincronização."}),e.jsxs(g,{onClick:()=>vs.mutate(),disabled:vs.isPending,children:[vs.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),Cs==="REAUTH_REQUIRED"?"Reautorizar Google Calendar":"Conectar Google Calendar"]})]})]}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Você não tem permissão para gerenciar a integração Google Calendar."}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Seu perfil não possui acesso ao módulo Agenda."}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Integração Google Calendar não está habilitada para esta empresa."})})]}):e.jsx("section",{className:"space-y-4",children:e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})})}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(oa,{className:"h-4 w-4"}),"Webhooks operacionais"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Cadastre endpoints para receber eventos de contatos, funil, mensagens e automações."})]}),e.jsxs(ds,{open:M,onOpenChange:n=>{ge(n),n||Hs()},children:[e.jsx(Zs,{asChild:!0,children:e.jsxs(g,{size:"sm",disabled:!r||!d,onClick:pn,children:[e.jsx(fs,{className:"mr-2 h-4 w-4"}),"Novo Webhook"]})}),e.jsxs(cs,{className:"flex max-h-[calc(100dvh-2rem)] max-w-2xl flex-col gap-0 overflow-hidden p-0",children:[e.jsxs(us,{className:"shrink-0 border-b border-border px-4 py-4 sm:px-6",children:[e.jsx(ms,{children:U?"Editar webhook":"Criar webhook"}),e.jsx(xs,{children:"Selecione os eventos operacionais que deseja receber e informe a URL de entrega."})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-5 sm:px-6",children:Q?e.jsxs("div",{className:"space-y-3 rounded-lg border border-primary/20 bg-primary/5 p-4",children:[e.jsx(p,{className:"text-xs text-muted-foreground",children:"Secret do webhook (exibido uma única vez)"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"flex-1 rounded border bg-background p-2 text-xs font-mono break-all",children:Q}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":"Copiar secret do webhook",onClick:()=>f(Q),children:e.jsx(qs,{className:"h-4 w-4"})})]})]}):e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"webhook-name",children:"Nome"}),e.jsx(z,{id:"webhook-name",placeholder:"Ex: CRM interno",value:pe,onCh
6ange:n=>ce(n.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"webhook-url",children:"URL"}),e.jsx(z,{id:"webhook-url",placeholder:"https://seu-sistema.com/webhooks/falamais",value:Ce,onChange:n=>we(n.target.value)})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(p,{children:"Eventos"}),e.jsx(g,{type:"button",variant:"ghost",size:"sm",onClick:()=>Ee(dn),children:"Selecionar todos"})]}),e.jsx("div",{className:"max-h-72 space-y-4 overflow-auto rounded-md border p-3",children:rs==null?void 0:rs.categories.map(n=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium",children:n.label}),e.jsx("div",{className:"grid gap-2 sm:grid-cols-2",children:n.events.map(l=>e.jsxs("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsx("input",{type:"checkbox",checked:ve.includes(l),onChange:()=>jn(l)}),e.jsx("span",{className:"font-mono",children:l})]},l))})]},n.id))})]})]})}),e.jsx(Es,{className:"shrink-0 flex-col-reverse gap-2 border-t border-border px-4 py-4 sm:flex-row sm:px-6",children:Q?e.jsx(g,{onClick:()=>ge(!1),children:"Concluir"}):e.jsxs(g,{onClick:fn,disabled:Ks.isPending||ps.isPending||!pe.trim()||!Ce.trim()||ve.length===0,children:[(Ks.isPending||ps.isPending)&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),U?"Salvar alterações":"Criar Webhook"]})})]})]})]}),e.jsx("div",{children:s?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):d?r?mn?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):xn?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:"Não foi possÃvel carregar webhooks. Tente novamente mais tarde."}):e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Nome"}),e.jsx(w,{children:"URL"}),e.jsx(w,{children:"Eventos"}),e.jsx(w,{children:"Status"}),e.jsx(w,{children:"Ultima entrega"}),e.jsx(w,{className:"text-right",children:"Ações"})]})}),e.jsx($e,{children:$s&&$s.length>0?$s.map(n=>e.jsxs($,{children:[e.jsx(y,{className:"font-medium",children:n.name}),e.jsx(y,{className:"max-w-[300px] truncate font-mono text-xs",children:n.url}),e.jsx(y,{className:"text-xs text-muted-foreground",children:n.subscribedEvents.length}),e.jsx(y,{children:e.jsx(g,{variant:n.isActive?"default":"outline",size:"sm",onClick:()=>Nn(n),disabled:ps.isPending,children:n.isActive?"Ativo":"Pausado"})}),e.jsx(y,{className:"text-xs text-muted-foreground",children:la(n.lastDeliveryAt)}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Enviar teste para o webhook ${n.name}`,onClick:()=>ya.mutate(n.id),title:"Enviar teste",disabled:ya.isPending,children:e.jsx(xa,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Editar o webhook ${n.name}`,onClick:()=>vn(n),title:"Editar webhook",disabled:ps.isPending,children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"sm",onClick:()=>ba.mutate(n.id),disabled:ba.isPending,children:"Secret"}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Excluir o webhook ${n.name}`,className:"text-destructive hover:text-destructive hover:bg-destructive/10",onClick:()=>fe(n),children:e.jsx(hs,{className:"h-4 w-4"})})]})})]},n.id)):e.jsx($,{children:e.jsx(y,{colSpan:6,className:"text-center py-8 text-muted-foreground",children:"Nenhum webhook configurado."})})})]}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Você não tem permissão para gerenciar integrações. Solicite acesso a um administrador."}):e.jsxs("div",{className:"text-sm text-muted-foreground",children:["Acesso a API e Webhooks está disponÃvel a partir do plano Expansão.",e.jsx(Xs,{to:"/settings",className:"ml-1 underline underline-offset-4",children:"Ver pagamentos"}),"."]})})]}),e.jsx(de,{}),e.jsx("div",{id:"meta-conversions",ref:Ve,className:wa("meta-conversions"),children:e.jsx(nt,{companyKey:x,isLoadingPermissions:s,canManageIntegrations:r})}),e.jsx(de,{}),e.jsx("div",{id:"google-ads-conversions",ref:O,className:wa("google-ads-conversions"),children:e.jsx(ot,{companyKey:x,isLoadingPermissions:s,canManageIntegrations:r})}),e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(oa,{className:"h-4 w-4"}),"Chaves de API"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Use estas chaves para autenticar requisições externas à nossa API."})]}),e.jsxs(ds,{open:he,onOpenChange:n=>{D(n),n||W(null)},children:[e.jsx(Zs,{asChild:!0,children:e.jsxs(g,{size:"sm",disabled:!r||!d,children:[e.jsx(fs,{className:"mr-2 h-4 w-4"}),"Gerar Nova Chave"]})}),e.jsxs(cs,{children:[e.jsxs(us,{children:[e.jsx(ms,{children:"Gerar chave de API"}),e.jsx(xs,{children:"Crie uma nova chave para acessar a API. O token será exibido apenas uma vez."})]}),j?e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-3 rounded-lg border border-primary/20 bg-primary/5 p-4",children:[e.jsx(p,{className:"text-xs text-muted-foreground mb-2 block",children:"Seu token de acesso (copie agora)"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"flex-1 p-2 bg-background rounded border text-sm font-mono break-all text-primary",children:j}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":"Copiar token de acesso",onClick:()=>f(j),children:e.jsx(qs,{className:"h-4 w-4"})})]}),e.jsx("p",{className:"text-xs text-warning mt-2 flex items-center",children:"Atenção: guarde este token. Ele não será exibido novamente."})]})}):e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"key-name",children:"Nome da Chave"}),e.jsx(z,{id:"key-name",placeholder:"Ex: Integração ERP",value:E,onChange:n=>V(n.target.value)})]})}),e.jsx(Es,{children:j?e.jsx(g,{onClick:()=>D(!1),children:"Concluir"}):e.jsxs(g,{onClick:gn,disabled:Vs.isPending||!E.trim(),children:[Vs.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Gerar"]})})]})]})]}),e.jsx("div",{children:s?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):d?r?cn?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):un?e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-4 text-sm text-destructive",children:"Não foi possÃvel carregar as chaves. Tente novamente mais tarde."}):e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Nome"}),e.jsx(w,{children:"Prefixo"}),e.jsx(w,{children:"Criado em"}),e.jsx(w,{children:"Ãltimo uso"}),e.jsx(w,{className:"text-right",children:"Ações"})]})}),e.jsx($e,{children:zs&&zs.length>0?zs.map(n=>e.jsxs($,{children:[e.jsxs(y,{className:"font-medium flex items-center gap-2",children:[e.jsx(ia,{className:"h-4 w-4 text-muted-foreground"}),n.name]}),e.jsx(y,{className:"font-mono text-xs",children:n.prefix}),e.jsx(y,{children:new Date(n.createdAt).toLocaleDateString("pt-BR")}),e.jsx(y,{children:n.lastUsedAt?new Date(n.lastUsedAt).toLocaleDateString("pt-BR"):"-"}),e.jsx(y,{className:"text-right",children:e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Revogar a chave ${n.name}`,className:"text-destructive hover:text-destructive hover:bg-destructive/10",onClick:()=>T(n.id),children:e.jsx(hs,{className:"h-4 w-4"})})})]},n.id)):e.jsx($,{children:e.jsx(y,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"Nenhuma chave de API ativa."})})})]}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Você não tem permissão para gerenciar chaves de API. Solicite acesso a um administrador."}):e.jsxs("div",{className:"text-sm text-muted-foreground",children:["Acesso a API e Webhooks está disponÃvel a partir do plano Expansão.",e.jsx(Xs,{to:"/settings",className:"ml-1 underline underline-offset-4",children:"Ver pagamentos"}),"."]})})]}),u&&e.jsxs(e.Fragment,{children:[e.jsx(de,{}),e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("h3",{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(ia,{className:"h-4 w-4"}),"API Super Admin"]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Token global da instalação para consumir as rotas ",e.jsx("code",{children:"/v1/super-admin"}),". O segredo é exibido somente uma vez."]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(z,{className:"w-48",placeholder:"Nome do token",value:K,onChange:n=>oe(n.target.value),"aria-label":"Nome do token Super Admin"}),e.jsxs(g,{size:"sm",onClick:()=>Ws.mutate(K.trim()),disabled:Ws.isPending||!K.trim(),children:[Ws.isPending&&e.jsx(G,{className:"mr-2 h-4 w-4 animate-spin"}),"Gerar token"]})]})]}),o&&e.jsxs("div",{className:"space-y-3 rounded-lg border border-primary/20 bg-primary/5 p-4",children:[e.jsx(p,{className:"text-xs text-muted-foreground",children:"Token gerado â copie agora"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"flex-1 rounded border bg-background p-2 text-sm font-mono break-all text-primary",children:o}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":"Copiar token Super Admin",onClick:()=>f(o),children:e.jsx(qs,{className:"h-4 w-4"})})]}),e.jsx("p",{className:"text-xs text-warning",children:"Este token não será exibido novamente."})]}),hn?e.jsx("div",{className:"flex justify-center p-4",children:e.jsx(G,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):e.jsxs(Ue,{children:[e.jsx(ze,{children:e.jsxs($,{children:[e.jsx(w,{children:"Nome"}),e.jsx(w,{children:"Prefixo"}),e.jsx(w,{children:"Criado em"}),e.jsx(w,{children:"Ãltimo uso"}),e.jsx(w,{className:"text-right",children:"Ações"})]})}),e.jsx($e,{children:gs&&gs.length>0?gs.map(n=>e.jsxs($,{children:[e.jsx(y,{className:"font-medium",children:n.name}),e.jsx(y,{className:"font-mono text-xs",children:n.prefix}),e.jsx(y,{children:new Date(n.createdAt).toLocaleDateString("pt-BR")}),e.jsx(y,{children:n.lastUsedAt?new Date(n.lastUsedAt).toLocaleDateString("pt-BR"):"-"}),e.jsxs(y,{className:"text-right space-x-1",children:[e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Rotacionar o token ${n.name}`,onClick:()=>X(n.id),children:e.jsx(Ts,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon","aria-label":`Revogar o token ${n.name}`,className:"text-destructive hover:text-destructive hover:bg-destructive/10",onClick:()=>le(n.id),children:e.jsx(hs,{className:"h-4 w-4"})})]})]},n.id)):e.jsx($,{children:e.jsx(y,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"Nenhum token Super Admin ativo."})})})]})]})]}),e.jsx(He,{open:I,onOpenChange:n=>{!n&&!is.isPending&&ee(!1)},children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Desconectar Google Calendar?"}),e.jsx(Ze,{children:"A conexão OAuth será removida para este usuário nesta empresa. A sincronização de novos eventos será interrompida."})]}),e.jsxs(es,{children:[e.jsx(ss,{disabled:is.isPending,children:"Cancelar"}),e.jsx(as,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:is.isPending,onClick:n=>{n.preventDefault(),is.mutate()},children:is.isPending?"Desconectando...":"Desconectar"})]})]})}),e.jsx(He,{open:!!A,onOpenChange:n=>{!n&&!js.isPending&&T(null)},children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Revogar chave de API?"}),e.jsx(Ze,{children:"Esta ação não pode ser desfeita. A chave será permanentemente revogada e não poderá mais ser usada para autenticação."})]}),e.jsxs(es,{children:[e.jsx(ss,{disabled:js.isPending,children:"Cancelar"}),e.jsx(as,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:js.isPending,onClick:n=>{n.preventDefault(),A&&js.mutate(A)},children:js.isPending?"Revogando...":"Revogar"})]})]})}),e.jsx(He,{open:!!me,onOpenChange:n=>{!n&&!bs.isPending&&fe(null)},children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Remover webhook?"}),e.jsx(Ze,{children:"Esta ação removerá o endpoint e o histórico de entregas vinculado."})]}),e.jsxs(es,{children:[e.jsx(ss,{disabled:bs.isPending,children:"Cancelar"}),e.jsx(as,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:bs.isPending,onClick:n=>{n.preventDefault(),me&&bs.mutate(me.id)},children:bs.isPending?"Removendo...":"Remover"})]})]})}),e.jsx(He,{open:!!m,onOpenChange:n=>{!n&&!Ns.isPending&&le(null)},children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Revogar token Super Admin?"}),e.jsx(Ze,{children:"As próximas chamadas com este token serão rejeitadas."})]}),e.jsxs(es,{children:[e.jsx(ss,{disabled:Ns.isPending,children:"Cancelar"}),e.jsx(as,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:Ns.isPending,onClick:n=>{n.preventDefault(),m&&Ns.mutate(m)},children:Ns.isPending?"Revogando...":"Revogar"})]})]})}),e.jsx(He,{open:!!Ie,onOpenChange:n=>{!n&&!ys.isPending&&X(null)},children:e.jsxs(Ye,{children:[e.jsxs(Je,{children:[e.jsx(Xe,{children:"Rotacionar token Super Admin?"}),e.jsx(Ze,{children:"O token atual será revogado e um novo segredo será exibido uma única vez."})]}),e.jsxs(es,{children:[e.jsx(ss,{disabled:ys.isPending,children:"Cancelar"}),e.jsx(as,{disabled:ys.isPending,onClick:n=>{n.preventDefault(),Ie&&ys.mutate(Ie)},children:ys.isPending?"Rotacionando...":"Rotacionar"})]})]})})]})}const Qt=Object.freeze(Object.defineProperty({__proto__:null,AdmedExternalIntegrationSection:bt,IntegrationsTab:Ct},Symbol.toStringTag,{value:"Module"}));
6export{bt as A,Qt as I,oa as P};
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.