PageSourceSearch

https://www.seorankplus.com/assets/AutomationsOverview-DHrutUD8.js

js seorankplus.com collected 2026-10-02 00:35:13 UTC 14,849 bytes, 11 lines download raw bytes

1import{c as Q,u as se,r as x,j as e,b1 as B,C as u,a as j,b as f,d as S,B as y,e as h,i as c,t as o,ct as m,cl as O,b9 as ae,aW as te,aX as M,L as D,v as re,ab as ne,m as le,V as ie,J as A}from"./index-BOi4GZy8.js";import{A as w,a as C}from"./alert-DgoHVgjN.js";import{A as V,a as G,b as U,c as $,d as K,e as q,f as F,g as H,h as z}from"./alert-dialog-Nz9W-KN4.js";import{b as de,p as ce,r as oe}from"./automationsService-bDEda42S.js";import{C as me,S as ue,M as he}from"./types-CDtxdkS-.js";import{C as J}from"./circle-pause-BmkO49AQ.js";import{I as W}from"./info-BjEpPClt.js";import{S as xe}from"./send-Du81UX8q.js";import{C as ge}from"./circle-x-CzOqvpWP.js";import{M as pe}from"./message-square-DtleMHbJ.js";import{T as je}from"./triangle-alert-CDhLrbjB.js";import"./edgeError-DSnFxpXo.js";/**
2 * @license lucide-react v0.462.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 fe=Q("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]);/**
7 * @license lucide-react v0.462.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const ke=Q("ClipboardCheck",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"m9 14 2 2 4-4",key:"df797q"}]]);function be(){const{user:a}=se(),[i,t]=x.useState(null),[r,g]=x.useState(!0),[p,k]=x.useState(null),b=x.useCallback(async()=>{if(a){k(null);try{t(await de())}catch(d){k(d.message||"Kunde inte läsa automationerna.")}finally{g(!1)}}},[a]);return x.useEffect(()=>{if(!a){g(!1);return}g(!0),b()},[a,b]),{data:i,loading:r,error:p,refresh:b}}const ve=a=>{if(!a)return"—";const i=Date.now()-new Date(a).getTime(),t=Math.round(i/6e4);if(t<1)return"nyss";if(t<60)return`för ${t} min sedan`;const r=Math.round(t/60);return r<24?`för ${r} tim sedan`:`för ${Math.round(r/24)} dagar sedan`},Ne=a=>a?new Date(a).toLocaleString("sv-SE",{dateStyle:"short",timeStyle:"short"}):"—",l=({icon:a,label:i,value:t,tone:r})=>e.jsx(u,{children:e.jsx(h,{className:"pt-5 pb-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-2xl font-semibold tabular-nums",children:t}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:i})]}),e.jsx(a,{className:r==="bad"?"h-4 w-4 text-destructive shrink-0":r==="warn"?"h-4 w-4 text-amber-600 shrink-0":"h-4 w-4 text-muted-foreground shrink-0","aria-hidden":"true"})]})})}),X={succeeded:"bg-emerald-600 hover:bg-emerald-600",failed:"bg-destructive hover:bg-destructive"},ye=[{title:"Skapa svar som utkast",body:"AI läser tråden och lägger ett färdigt svar i din Gmail.",safe:"Skickas aldrig automatiskt"},{title:"Mottagningsbekräftelse",body:'Ett kort "vi har tagit emot din förfrågan" direkt när mejlet kommer.',safe:"Inget AI-innehåll"},{title:"Offertförfrågan",body:"Identifierar tjänst, ort och datum och ställer följdfrågorna som saknas.",safe:"Hittar aldrig på pris"},{title:"Bokningsförfrågan",body:"Plockar ut datum och tid och markerar det som är osäkert.",safe:"Lovar aldrig en tid"},{title:"Supportärende",body:"Sammanfattar problemet och föreslår svar ur din kunskapsbas.",safe:"Osäkra fall går till granskning"},{title:"Reklamation",body:"Prioriteras och sammanfattas åt dig.",safe:"Alltid manuell granskning"},{title:"Uppföljning utan svar",body:"Påminner kunden efter valt antal dagar — men bara om de inte hunnit svara.",safe:"Max antal uppföljningar"},{title:"SMS efter skickat svar",body:"Ett kort SMS när mejlsvaret faktiskt har lämnat inkorgen.",safe:"Kräver samtycke"}],Re=()=>{const{data:a,loading:i,error:t,refresh:r}=be(),[g,p]=x.useState(!1),[k,b]=x.useState("skip");if(i)return e.jsxs("div",{className:"space-y-4",children:[e.jsx(B,{className:"h-28 w-full"}),e.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:Array.from({length:8}).map((s,ee)=>e.jsx(B,{className:"h-24 w-full"},ee))})]});if(t)return e.jsx(w,{variant:"destructive",children:e.jsx(C,{children:t})});if(!a)return null;const{settings:d,connections:E,automations:v,counts:n,runtime:L,recentRuns:I,nextScheduled:T}=a,N=(d==null?void 0:d.automations_paused)===!0,_=E.length>0,P=v.filter(s=>s.status==="error"),R=E.filter(s=>!["connected","syncing"].includes(s.status)),Y=async()=>{p(!0);try{const{paused:s}=await ce("Pausad från översikten");A.success(s>0?`${s} automationer pausade.`:"Allt är pausat."),await r()}catch(s){A.error(s.message)}finally{p(!1)}},Z=async()=>{p(!0);try{const{resumed:s}=await oe(k);A.success(`${s} automationer återupptagna.`),await r()}catch(s){A.error(s.message)}finally{p(!1)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(u,{children:[e.jsx(j,{className:"pb-3",children:e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(f,{children:"Automations"}),e.jsx(S,{className:"max-w-2xl",children:"Läser inkommande kundmejl, låter AI:n föreslå svar, och skickar först när dina villkor är uppfyllda. Ingenting skickas automatiskt förrän du slår på det."})]}),e.jsx(y,{variant:N?"outline":"default",className:N?"text-amber-600 border-amber-600/40":void 0,children:N?"Pausad":"Aktiv"})]})}),e.jsxs(h,{className:"flex flex-wrap gap-2",children:[e.jsx(c,{asChild:!0,children:e.jsxs(o,{to:m("workflows"),children:[e.jsx(O,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),"Skapa automation"]})}),e.jsx(c,{variant:"outline",asChild:!0,children:e.jsxs(o,{to:m("connections"),children:[e.jsx(ae,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),"Anslut Gmail"]})}),N?e.jsxs(V,{children:[e.jsx(G,{asChild:!0,children:e.jsxs(c,{variant:"outline",disabled:g,children:[e.jsx(fe,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),"Återuppta"]})}),e.jsxs(U,{children:[e.jsxs($,{children:[e.jsx(K,{children:"Återuppta automationerna"}),e.jsx(q,{children:"Välj vad som ska hända med det som hann köa medan allt var pausat."})]}),e.jsxs(te,{value:k,onValueChange:s=>b(s),className:"space-y-2",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(M,{value:"skip",id:"rm-skip",className:"mt-1"}),e.jsxs(D,{htmlFor:"rm-skip",className:"font-normal",children:["Hoppa över det som missades",e.jsx("span",{className:"block text-xs text-muted-foreground",children:"Rekommenderat. Bara nya händelser behandlas."})]})]}),e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(M,{value:"queue_for_approval",id:"rm-queue",className:"mt-1"}),e.jsxs(D,{htmlFor:"rm-queue",className:"font-normal",children:["Lägg missade i godkännandekön",e.jsx("span",{className:"block text-xs text-muted-foreground",children:"Du får läsa varje svar innan det går ut."})]})]}),e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(M,{value:"future_only",id:"rm-future",className:"mt-1"}),e.jsx(D,{htmlFor:"rm-future",className:"font-normal",children:"Kör bara framtida händelser"})]})]}),e.jsxs(F,{children:[e.jsx(H,{children:"Avbryt"}),e.jsx(z,{onClick:()=>void Z(),children:"Återuppta"})]})]})]}):e.jsxs(V,{children:[e.jsx(G,{asChild:!0,children:e.jsxs(c,{variant:"outline",disabled:g,children:[e.jsx(J,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),"Pausa alla automationer"]}
11)}),e.jsxs(U,{children:[e.jsxs($,{children:[e.jsx(K,{children:"Pausa alla automationer?"}),e.jsx(q,{children:"Inget mejl och inget SMS skickas medan pausen gäller. Köade jobb avbryts — de skickas alltså inte i efterhand när du återupptar."})]}),e.jsxs(F,{children:[e.jsx(H,{children:"Avbryt"}),e.jsx(z,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>void Y(),children:"Pausa allt"})]})]})]})]})]}),N&&e.jsxs(w,{className:"border-amber-600/40",children:[e.jsx(J,{className:"h-4 w-4 text-amber-600","aria-hidden":"true"}),e.jsxs(C,{children:[e.jsx("span",{className:"font-medium",children:"Allt är pausat."})," ",d.paused_reason?`Orsak: ${d.paused_reason}. `:"","Inga svar och inga SMS skickas förrän du återupptar."]})]}),!L.configured&&e.jsxs(w,{children:[e.jsx(W,{className:"h-4 w-4","aria-hidden":"true"}),e.jsxs(C,{children:[e.jsx("span",{className:"font-medium",children:"Bakgrundskörning är inte konfigurerad på den här servern än."})," ","Automationer går att skapa, spara och schemalägga, men ingenting körs förrän en administratör aktiverat körningen. Schemaläggning, städning och förnyade Gmail-bevakningar sköts av databasen och fungerar redan."]})]}),L.configured&&!L.enabled&&e.jsxs(w,{children:[e.jsx(W,{className:"h-4 w-4","aria-hidden":"true"}),e.jsx(C,{children:"Bakgrundskörningen är konfigurerad men avstängd. Inget behandlas just nu."})]}),_?e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsx(l,{icon:O,label:"Aktiva automationer",value:String(n.activeAutomations)}),e.jsx(l,{icon:ne,label:"Utkast senaste 30 dagarna",value:n.draftsLast30d.toLocaleString("sv-SE")}),e.jsx(l,{icon:xe,label:"Automatiskt skickade svar",value:n.autoSentLast30d.toLocaleString("sv-SE")}),e.jsx(l,{icon:ke,label:"Väntar på godkännande",value:String(n.pendingApprovals),tone:n.pendingApprovals>0?"warn":void 0}),e.jsx(l,{icon:ge,label:"Misslyckade körningar",value:String(n.failedRuns),tone:n.failedRuns>0?"bad":void 0}),e.jsx(l,{icon:pe,label:"SMS skickade",value:n.smsSent.toLocaleString("sv-SE")}),e.jsx(l,{icon:le,label:"Uppskattad sparad tid",value:`${Math.round(n.minutesSaved/60)} tim`}),e.jsx(l,{icon:ie,label:"AI-anrop denna månad",value:n.aiCalls.toLocaleString("sv-SE")})]}):e.jsxs(u,{children:[e.jsxs(j,{children:[e.jsx(f,{className:"text-base",children:"Kom igång på tre steg"}),e.jsx(S,{children:"Automations behöver läsa din inkorg innan den kan göra något alls."})]}),e.jsxs(h,{className:"space-y-4",children:[[{n:1,t:"Anslut ditt Gmail-konto",d:"Du väljer själv om vi bara får läsa, får skapa utkast, eller får skicka."},{n:2,t:"Välj vad som ska hända",d:"Till exempel: när ett nytt kundmejl kommer, skapa ett svar som utkast."},{n:3,t:"Läs igenom och aktivera",d:"Automatiskt utskick är avstängt tills du uttryckligen slår på det."}].map(s=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-primary/10 text-sm font-medium text-primary",children:s.n}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-medium",children:s.t}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s.d})]})]},s.n)),e.jsx(c,{asChild:!0,children:e.jsxs(o,{to:m("connections"),children:["Anslut Gmail",e.jsx(re,{className:"h-4 w-4 ml-2","aria-hidden":"true"})]})})]})]}),_&&e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"Sparad tid är en uppskattning: 3 minuter per utkast och 5 per skickat svar."}),(P.length>0||R.length>0)&&e.jsxs(u,{className:"border-amber-600/40",children:[e.jsx(j,{className:"pb-3",children:e.jsxs(f,{className:"text-base flex items-center gap-2",children:[e.jsx(je,{className:"h-4 w-4 text-amber-600","aria-hidden":"true"}),"Behöver åtgärdas"]})}),e.jsxs(h,{className:"space-y-2",children:[R.map(s=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 text-sm border-b pb-2 last:border-0",children:[e.jsx("span",{className:"truncate",children:s.email_address}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",className:"text-amber-600 border-amber-600/40",children:me[s.status]??s.status}),e.jsx(c,{size:"sm",variant:"outline",asChild:!0,children:e.jsx(o,{to:m("connections"),children:"Åtgärda"})})]})]},s.id)),P.map(s=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 text-sm border-b pb-2 last:border-0",children:[e.jsx("span",{className:"truncate",children:s.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",className:"text-amber-600 border-amber-600/40",children:ue[s.status]??s.status}),e.jsx(c,{size:"sm",variant:"outline",asChild:!0,children:e.jsx(o,{to:m("workflows"),children:"Öppna"})})]})]},s.id))]})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs(u,{children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(f,{className:"text-base",children:"Senaste aktiviteten"}),e.jsx(S,{children:e.jsx(o,{to:m("activity"),className:"underline underline-offset-2",children:"Se hela loggen"})})]}),e.jsx(h,{children:I.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Inget har körts än."}):e.jsx("ul",{className:"space-y-2",children:I.slice(0,8).map(s=>e.jsxs("li",{className:"flex items-center justify-between gap-3 text-sm border-b pb-2 last:border-0",children:[e.jsx("span",{className:"truncate",children:s.ai_intent||s.condition_summary||"Körning"}),e.jsxs("span",{className:"flex shrink-0 items-center gap-2",children:[e.jsx(y,{variant:X[s.status]?"default":"outline",className:X[s.status],children:s.status}),e.jsx("span",{className:"text-xs text-muted-foreground tabular-nums",children:ve(s.started_at)})]})]},s.id))})})]}),e.jsxs(u,{children:[e.jsx(j,{className:"pb-3",children:e.jsx(f,{className:"text-base",children:"Nästa planerade körningar"})}),e.jsx(h,{children:T.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Inga schemalagda automationer."}):e.jsx("ul",{className:"space-y-2",children:T.map(s=>e.jsxs("li",{className:"flex items-center justify-between gap-3 text-sm border-b pb-2 last:border-0",children:[e.jsx("span",{className:"truncate",children:s.name}),e.jsx("span",{className:"text-xs text-muted-foreground tabular-nums shrink-0",children:Ne(s.nextRunAt)})]},s.automationId))})})]})]}),e.jsxs(u,{children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(f,{className:"text-base",children:"Rekommenderade startmallar"}),e.jsx(S,{children:"Vanliga upplägg. Varje kort öppnar byggaren — inget skapas förrän du sparat."})]}),e.jsx(h,{className:"grid gap-3 sm:grid-cols-2",children:ye.map(s=>e.jsxs(o,{to:m("workflows"),className:"rounded-lg border p-3 hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[e.jsx("p",{className:"text-sm font-medium",children:s.title}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:s.body}),e.jsx(y,{variant:"outline",className:"mt-2 text-xs",children:s.safe})]},s.title))})]}),v.length>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[v.length," automation",v.length===1?"":"er"," totalt ·"," ",v.filter(s=>s.mode==="send").length," med"," ",he.send.toLowerCase()]})]})};export{Re as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.