PageSourceSearch

https://www.seorankplus.com/assets/ReceptionistOverview-CYwfQyTI.js

js seorankplus.com collected 2026-10-02 00:34:46 UTC 25,341 bytes, 3 lines download raw bytes

1import{r as h,j as e,C,a as I,b as A,V as $,d as _,e as z,L as B,I as D,a7 as w,i as N,a0 as E,J as S,B as b,t as F,cq as L,cG as M,G as H,be as Y,b1 as P,cH as Q,v as X,cF as Z,a_ as ee,aS as se,cI as ae,a5 as te,cJ as re}from"./index-BOi4GZy8.js";import{A as T,a as V}from"./alert-DgoHVgjN.js";import{s as ne,a as ie,b as J,r as le,u as de,S as G}from"./useReceptionistConfig-844O5u_y.js";import{D as ce}from"./voice-lab--NX34gOc.js";import{S as oe,a as me,b as he,c as ge,d as pe}from"./select-JSPdEN3s.js";import{l as ue}from"./locale-CL8DdCS7.js";import{I as K}from"./info-BjEpPClt.js";import{T as xe}from"./textarea-T_vDpkyb.js";import{W as q}from"./wand-sparkles-cc_7MY8x.js";import{V as fe}from"./volume-2-DO8d75Zt.js";import"./edgeError-DSnFxpXo.js";const x=r=>`Hej och välkommen till ${r}! Du pratar med vår digitala receptionist. Hur kan jag hjälpa dig?`,f=r=>`Welcome to ${r}! You are speaking with our digital receptionist. How can I help you today?`,j=["customer_name","phone","service"],W=[{id:"trades",label:"Hantverk & bygg",services:[{name:"Offertförfrågan",description:"Kunden beskriver ett arbete och vill ha pris.",localized:{en:{name:"Quote request"}}},{name:"Pågående arbete",description:"Fråga om ett arbete som redan är igång.",localized:{en:{name:"Ongoing job"}}},{name:"Akut ärende",description:"Vattenläcka, elfel eller annat som inte kan vänta.",localized:{en:{name:"Emergency"}}}],collectFields:[...j,"city","description"],greetings:{sv:x,en:f},restrictions:"Lova aldrig pris, starttid eller att någon kommer ut samma dag. Akuta ärenden tas emot och flaggas som brådskande."},{id:"moving",label:"Flytt & städ",services:[{name:"Flytthjälp",description:"Bohagsflytt för privatperson eller företag.",localized:{en:{name:"Moving service"}}},{name:"Flyttstädning",description:"Städning vid utflytt.",localized:{en:{name:"Move-out cleaning"}}},{name:"Dödsbo",description:"Tömning och hantering av dödsbo.",localized:{en:{name:"Estate clearance"}}}],collectFields:[...j,"city","preferred_time"],greetings:{sv:x,en:f},restrictions:"Lova aldrig ett fast pris — flytt prissätts efter volym och avstånd. Ta emot uppgifterna och säg att en kollega återkommer med offert."},{id:"beauty",label:"Frisör & skönhet",services:[{name:"Boka tid",description:"Kunden vill boka en behandling.",localized:{en:{name:"Book appointment"}}},{name:"Omboka eller avboka",description:"Ändring av befintlig bokning.",localized:{en:{name:"Reschedule or cancel"}}},{name:"Prisfråga",description:"Frågor om behandlingar och priser.",localized:{en:{name:"Price question"}}}],collectFields:[...j,"preferred_time"],greetings:{sv:x,en:f},restrictions:"Bekräfta aldrig en tid som bokad — ta emot önskemålet och säg att salongen bekräftar. Nämn bara priser som finns i prislistan."},{id:"clinic",label:"Klinik & tandvård",services:[{name:"Boka besök",description:"Nybesök eller återbesök.",localized:{en:{name:"Book a visit"}}},{name:"Avbokning",description:"Avboka eller flytta ett besök.",localized:{en:{name:"Cancellation"}}},{name:"Akut besvär",description:"Värk eller besvär som behöver snabb tid.",localized:{en:{name:"Acute issue"}}}],collectFields:[...j,"preferred_time"],greetings:{sv:x,en:f},restrictions:"Ge aldrig medicinska råd, ställ aldrig diagnos och notera aldrig hälsouppgifter — ta bara emot kontaktuppgifter och önskemål om tid. Akuta besvär flaggas som brådskande."},{id:"restaurant",label:"Restaurang & café",services:[{name:"Bordsbokning",description:"Boka bord.",localized:{en:{name:"Table reservation"}}},{name:"Catering",description:"Förfrågan om catering eller större sällskap.",localized:{en:{name:"Catering"}}},{name:"Öppettider & meny",description:"Frågor om öppettider, meny och allergier.",localized:{en:{name:"Hours & menu"}}}],collectFields:[...j,"preferred_time"],greetings:{sv:x,en:f},restrictions:"Bekräfta aldrig ett bord som bokat — ta emot önskemålet och säg att restaurangen bekräftar. Gissa aldrig om allergener."},{id:"auto",label:"Bilverkstad",services:[{name:"Boka service",description:"Service, besiktningsåtgärd eller reparation.",localized:{en:{name:"Book service"}}},{name:"Felsökning",description:"Bilen låter konstigt eller varnar.",localized:{en:{name:"Diagnostics"}}},{name:"Däckbyte",description:"Skifte eller förvaring av däck.",localized:{en:{name:"Tyre change"}}}],collectFields:[...j,"description"],greetings:{sv:x,en:f},restrictions:"Lova aldrig pris eller att bilen blir klar en viss dag. Ta emot registreringsnummer i meddelandefältet om kunden erbjuder det."},{id:"law_finance",label:"Juridik & ekonomi",services:[{name:"Ny klient",description:"Förfrågan om att bli klient.",localized:{en:{name:"New client"}}},{name:"Pågående ärende",description:"Fråga i ett befintligt ärende.",localized:{en:{name:"Existing case"}}}],collectFields:[...j,"email","description"],greetings:{sv:x,en:f},restrictions:"Ge aldrig juridisk eller ekonomisk rådgivning. Diskutera aldrig ett befintligt ärendes innehåll — ta bara emot kontaktuppgifter och be en ansvarig återkomma."},{id:"realestate",label:"Fastighet & mäklare",services:[{name:"Värdering",description:"Kunden vill ha sin bostad värderad.",localized:{en:{name:"Valuation"}}},{name:"Visning",description:"Frågor om en annonserad bostad eller visning.",localized:{en:{name:"Viewing"}}},{name:"Felanmälan",description:"Hyresgäst anmäler fel.",localized:{en:{name:"Fault report"}}}],collectFields:[...j,"city","description"],greetings:{sv:x,en:f},restrictions:"Ange aldrig utgångspris eller bud som inte finns i din information. Felanmälningar tas emot och flaggas — lova aldrig åtgärdstid."},{id:"it",label:"IT & byrå",services:[{name:"Ny kund",description:"Förfrågan om projekt eller samarbete.",localized:{en:{name:"New client"}}},{name:"Support",description:"Befintlig kund behöver hjälp.",localized:{en:{name:"Support"}}}],collectFields:[...j,"email","description"],greetings:{sv:x,en:f},restrictions:"Lova aldrig leveranstid eller pris. Supportärenden tas emot med beskrivning — försök aldrig felsöka i samtalet."},{id:"other",label:"Annat",services:[{name:"Allmän förfrågan",description:"Kunden beskriver sitt ärende med egna ord.",localized:{en:{name:"General inquiry"}}}],collectFields:[...j,"email","description"],greetings:{sv:x,en:f},restrictions:null}],je=r=>W.find(s=>
1s.id===r)??null,ve=(r,s,l)=>{const d=je(r),o=s.trim().slice(0,120);if(!d||!o)return null;const u=l.toLowerCase().split(/[-_]/)[0],c=d.greetings[u];return{config:{business_name:o,industry:d.label,services_json:d.services.map(m=>({name:m.name,description:m.description,enabled:!0,localized:m.localized??{}})),collect_fields:[...d.collectFields],restrictions:d.restrictions},greeting:c?c(o):null,greetingMissing:!c}},be=["This list was read off the business website automatically. Nobody has checked it.","You may say that the business appears to offer these, phrased as something you would like to confirm.","You must NOT state any price, duration, opening hour, guarantee or availability from this list, even if it appears below.","If a caller asks for one of those, say you will have a colleague confirm it, and take their contact details.","Never present anything in this section as settled fact."],ke=({defaultProfile:r,onDone:s})=>{const[l,d]=h.useState(""),[o,u]=h.useState(""),[c,m]=h.useState(!1),g=(r==null?void 0:r.locale)??"sv-SE",t=h.useMemo(()=>l.trim()&&o?ve(o,l,g):null,[l,o,g]),n=async()=>{if(t){m(!0);try{await ne(t.config),t.greeting&&r&&await ie(r.id,{greeting:t.greeting}),await s(),S.success("Grunduppsättningen är ifylld. Allt går att ändra under Inställningar.")}catch(i){S.error(i.message||"Kunde inte spara förslaget.")}finally{m(!1)}}};return e.jsxs(C,{className:"border-primary/30",children:[e.jsxs(I,{className:"pb-3",children:[e.jsxs(A,{className:"text-base flex items-center gap-2",children:[e.jsx($,{className:"h-5 w-5 text-primary","aria-hidden":"true"}),"Snabbstart"]}),e.jsx(_,{children:"Företagsnamn och bransch räcker — tjänster, hälsningsfras och kunduppgifter fylls i med ett genomtänkt förslag som du sedan ändrar fritt."})]}),e.jsxs(z,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(B,{htmlFor:"qs-name",children:"Företagsnamn"}),e.jsx(D,{id:"qs-name",value:l,maxLength:120,placeholder:"t.ex. Nordvent AB",onChange:i=>d(i.target.value)})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(B,{htmlFor:"qs-industry",children:"Bransch"}),e.jsxs(oe,{value:o,onValueChange:u,children:[e.jsx(me,{id:"qs-industry",children:e.jsx(he,{placeholder:"Välj bransch"})}),e.jsx(ge,{children:W.map(i=>e.jsx(pe,{value:i.id,children:i.label},i.id))})]})]})]}),t&&e.jsxs("div",{className:"rounded-md border bg-muted/40 p-3 space-y-2 text-sm",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Det här fylls i — läs igenom innan du sparar:"}),e.jsxs("ul",{className:"space-y-1",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx(w,{className:"h-4 w-4 mt-0.5 shrink-0 text-emerald-600","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsxs("strong",{children:[t.config.services_json.length," tjänster:"]})," ",t.config.services_json.map(i=>i.name).join(", ")]})]}),t.greeting?e.jsxs("li",{className:"flex gap-2",children:[e.jsx(w,{className:"h-4 w-4 mt-0.5 shrink-0 text-emerald-600","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Hälsning:"})," ”",t.greeting,"”"]})]}):e.jsxs("li",{className:"flex gap-2",children:[e.jsx(K,{className:"h-4 w-4 mt-0.5 shrink-0 text-amber-600","aria-hidden":"true"}),e.jsxs("span",{children:["Ingen färdigskriven hälsning finns på"," ",ue(g)," — det steget återstår efteråt. En hälsning på fel språk vore sämre än ingen alls."]})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx(w,{className:"h-4 w-4 mt-0.5 shrink-0 text-emerald-600","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Uppgifter som samlas in:"})," ",t.config.collect_fields.join(", ")]})]}),t.config.restrictions&&e.jsxs("li",{className:"flex gap-2",children:[e.jsx(w,{className:"h-4 w-4 mt-0.5 shrink-0 text-emerald-600","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Skyddsregler för branschen:"})," ",t.config.restrictions]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(N,{onClick:()=>void n(),disabled:!t||c,children:[c?e.jsx(E,{className:"h-4 w-4 mr-2 animate-spin","aria-hidden":"true"}):e.jsx($,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),"Fyll i förslaget"]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Skriver bara vanliga inställningar — inget låses."})]})]})]})},Ne=({defaultBusinessName:r,defaultDescription:s,hasExistingContent:l,onDone:d})=>{const[o,u]=h.useState(r),[c,m]=h.useState(s),[g,t]=h.useState(!1),[n,i]=h.useState(null),k=async()=>
1{if(!(l&&!window.confirm("AI-uppsättningen skriver om tjänster, hälsning, vanliga frågor och kunskapsbas. Din nuvarande uppsättning finns kvar som en version under Versionshistorik. Fortsätt?"))){t(!0),i(null);try{const p=await J({businessName:o,description:c});i(p),await d(),S.success(`Klart — version ${p.publishedVersion} är publicerad.`)}catch(p){S.error(p.message||"AI-uppsättningen misslyckades.")}finally{t(!1)}}},v=o.trim().length>1&&c.trim().length>=30;return e.jsxs(C,{className:"border-primary/40",children:[e.jsxs(I,{className:"pb-3",children:[e.jsxs(A,{className:"text-base flex items-center gap-2",children:[e.jsx(q,{className:"h-5 w-5 text-primary","aria-hidden":"true"}),"Perfekt uppsättning med AI"]}),e.jsx(_,{children:"Beskriv verksamheten med egna ord — AI:n skriver tjänster, hälsning, vanliga frågor och kunskapsbas på receptionistens språk, väljer röst och publicerar. Ett klick, sedan är den redo att ringas."})]}),e.jsxs(z,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-[240px_1fr]",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(B,{htmlFor:"ps-name",children:"Företagsnamn"}),e.jsx(D,{id:"ps-name",value:o,maxLength:120,onChange:p=>u(p.target.value)})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(B,{htmlFor:"ps-desc",children:"Beskriv verksamheten"}),e.jsx(xe,{id:"ps-desc",rows:3,value:c,maxLength:4e3,placeholder:"t.ex. Vi är en flyttfirma i Göteborg. Bohagsflytt, flyttstädning och dödsbon. Mest privatpersoner, offert efter besiktning, RUT-avdrag…",onChange:p=>m(p.target.value)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Ju mer du berättar, desto träffsäkrare blir frågorna och svaren. Priser och öppettider hittas inte på — det AI:n inte vet lämnas åt en kollega."})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs(N,{onClick:()=>void k(),disabled:!v||g,children:[g?e.jsx(E,{className:"h-4 w-4 mr-2 animate-spin","aria-hidden":"true"}):e.jsx(q,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),g?"Skapar och publicerar…":"Skapa perfekt uppsättning"]}),!v&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"Fyll i namnet och minst ett par meningar om verksamheten."})]}),n&&e.jsxs("div",{className:"rounded-md border bg-muted/40 p-3 space-y-2.5 text-sm",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(b,{children:["Version ",n.publishedVersion," publicerad"]}),e.jsx(b,{variant:"secondary",children:n.locale})]}),e.jsxs("ul",{className:"space-y-1",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx(w,{className:"h-4 w-4 mt-0.5 shrink-0 text-emerald-600","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsxs("strong",{children:[n.applied.services.length," tjänster:"]})," ",n.applied.services.join(", ")]})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx(w,{className:"h-4 w-4 mt-0.5 shrink-0 text-emerald-600","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Hälsning:"})," ”",n.applied.greeting,"”"]})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx(w,{className:"h-4 w-4 mt-0.5 shrink-0 text-emerald-600","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsxs("strong",{children:[n.applied.faqCount," vanliga frågor"]}),n.applied.knowledgeSections.length>0&&e.jsxs(e.Fragment,{children:[" · kunskapsbas: ",n.applied.knowledgeSections.join(", ")]})," ","· ton: ",n.applied.tone||"—"]})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx(fe,{className:"h-4 w-4 mt-0.5 shrink-0 text-muted-foreground","aria-hidden":"true"}),e.jsxs("span",{children:[e.jsx("strong",{children:"Röst:"})," ",n.voice.voiceLabel,n.voice.accent==="english_coloured"&&e.jsx(b,{variant:"outline",className:"ml-1.5 text-xs text-amber-600 border-amber-600/40",children:"engelskfärgad accent"}),n.voice.accent==="provider_verified"&&e.jsx(b,{variant:"outline",className:"ml-1.5 text-xs text-emerald-600 border-emerald-600/40",children:"språket verifierat av leverantören"}),n.voice.note&&e.jsx("span",{className:"block text-xs text-muted-foreground",children:n.voice.note})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 pt-1",children:[e.jsx(N,{size:"sm",asChild:!0,children:e.jsxs(F,{to:L("test"),children:[e.jsx(M,{className:"h-4 w-4 mr-1.5","aria-hidden":"true"}),"Ring och hör resultatet"]})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Allt är vanliga inställningar — finjustera fritt under Inställningar."})]})]}),!n&&l&&e.jsx(T,{children:e.jsx(V,{className:"text-xs",children:"Du har redan en uppsättning. Kör du AI-uppsättningen ersätts innehållet — men den nuvarande versionen finns kvar under Versionshistorik och kan återställas."})})]})]})},O=r=>{try{return new URL(r).hostname.replace(/^www\./,"")}catch{return null}},ye=({onApplied:r})=>
1{const[s,l]=h.useState(""),[d,o]=h.useState("native"),[u,c]=h.useState(!1),[m,g]=h.useState(!1),[t,n]=h.useState(null),[i,k]=h.useState(""),v=async()=>{const a=s.trim();if(!a)return;const U=/^https?:\/\//i.test(a)?a:`https://${a}`;c(!0),n(null);try{const R=await le(U,d);n(R),!i&&R.title&&k(R.title.split(/[|–—-]/)[0].trim().slice(0,120))}catch(R){S.error(R.message)}finally{c(!1)}},p=async()=>{if(!(!t||!i.trim())){g(!0);try{const a=await J({businessName:i.trim(),description:t.text.slice(0,4e3),websiteUrl:t.finalUrl,sourceRef:O(t.finalUrl)});S.success(`Utkast skapat från ${O(t.finalUrl)}. Gå igenom och bekräfta uppgifterna — priser och tider sägs inte i samtal förrän du gjort det.`),r==null||r()}catch(a){S.error(a.message)}finally{g(!1)}}};return e.jsxs(C,{children:[e.jsxs(I,{children:[e.jsxs(A,{className:"text-base flex items-center gap-2",children:[e.jsx(H,{className:"h-5 w-5 text-primary","aria-hidden":"true"}),"Hämta från din webbplats"]}),e.jsx(_,{children:"Vi läser en sida på din webbplats och gör ett utkast av det som står där. Allt hämtat markeras som obekräftat tills du gått igenom det."})]}),e.jsxs(z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-end gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-[220px] space-y-1.5",children:[e.jsx(B,{htmlFor:"import-url",children:"Adress till en sida"}),e.jsx(D,{id:"import-url",value:s,placeholder:"salongnord.se",onChange:a=>l(a.target.value),onKeyDown:a=>{a.key==="Enter"&&v()}})]}),e.jsxs(N,{variant:"outline",disabled:u||!s.trim(),onClick:()=>void v(),children:[u?e.jsx(E,{className:"h-4 w-4 mr-1.5 animate-spin","aria-hidden":"true"}):e.jsx(H,{className:"h-4 w-4 mr-1.5","aria-hidden":"true"}),"Läs sidan"]})]}),e.jsx("div",{className:"flex flex-wrap items-center gap-2",children:[["native","Direkthämtning"],["firecrawl","Firecrawl"]].map(([a,U])=>e.jsx("button",{type:"button","aria-pressed":d===a,onClick:()=>o(a),className:`rounded-md border px-3 py-1.5 text-xs transition-colors
2                focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
3                ${d===a?"border-primary bg-primary/5":"hover:bg-muted/50"}`,children:U},a))}),e.jsxs("p",{className:"text-xs text-muted-foreground flex items-start gap-1.5",children:[e.jsx(Y,{className:"h-3.5 w-3.5 mt-0.5 shrink-0","aria-hidden":"true"}),d==="native"?"Sidan hämtas av vår server direkt från din webbplats. Ingen tredje part får adressen, det kostar ingenting, och vi läser robots.txt först.":"Firecrawl hämtar sidan åt oss och kör den i en riktig webbläsare, så sidor byggda med JavaScript går att läsa. Adressen skickas då till Firecrawl och hämtningen dras från ditt Firecrawl-konto. Kräver en sparad nyckel under Integrationer & API. Vi läser robots.txt själva först, oavsett."]}),t&&e.jsxs("div",{className:"rounded-lg border p-3 space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium",children:t.title??t.finalUrl}),e.jsxs(b,{variant:"secondary",className:"text-xs",children:[t.characters.toLocaleString("sv-SE")," tecken"]}),e.jsx(b,{variant:"outline",className:"text-xs",children:t.robots.checked?`robots.txt läst${t.robots.rule?` (${t.robots.rule})`:""}`:"ingen robots.txt fanns"}),t.redirected&&e.jsxs(b,{variant:"outline",className:"text-xs",children:["omdirigerad till ",t.finalUrl]}),t.truncated&&e.jsx(b,{variant:"outline",className:"text-xs text-amber-600 border-amber-600/40",children:"sidan var för stor — bara början lästes"})]}),e.jsx("p",{className:"text-xs text-muted-foreground line-clamp-4 whitespace-pre-line",children:t.text.slice(0,600)}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(B,{htmlFor:"import-name",children:"Företagsnamn"}),e.jsx(D,{id:"import-name",value:i,maxLength:120,onChange:a=>k(a.target.value)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Gissat från sidans titel. Rätta det om det blev fel."})]}),e.jsxs(T,{children:[e.jsx(K,{className:"h-4 w-4","aria-hidden":"true"}),e.jsxs(V,{className:"text-sm space-y-1",children:[e.jsx("p",{className:"font-medium",children:"Så här behandlas det hämtade i samtal:"}),e.jsx("ul",{className:"list-disc pl-5 text-xs space-y-0.5",children:be.slice(1,4).map(a=>e.jsx("li",{children:a},a))})]})]}),e.jsxs(N,{disabled:m||!i.trim(),onClick:()=>void p(),children:[m&&e.jsx(E,{className:"h-4 w-4 mr-1.5 animate-spin","aria-hidden":"true"}
3),"Skapa utkast från sidan"]})]})]})]})},we=["business_details","services","greeting","collect_fields"],y=({label:r,value:s})=>e.jsxs("div",{className:"flex items-center justify-between gap-4 py-2 text-sm border-b last:border-0",children:[e.jsx("span",{className:"text-muted-foreground",children:r}),e.jsx("span",{className:"font-medium text-right",children:s})]}),Ee=()=>{const{bundle:r,config:s,setup:l,languageProfiles:d,loading:o,error:u,refresh:c}=de();if(o)return e.jsxs("div",{className:"space-y-4",children:[e.jsx(P,{className:"h-32 w-full"}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsx(P,{className:"h-56 w-full"}),e.jsx(P,{className:"h-56 w-full"})]})]});if(u)return e.jsx(T,{variant:"destructive",children:e.jsx(V,{children:u})});const m=(r==null?void 0:r.credential.status)==="valid",g={voice:!!(s!=null&&s.voice),api:m,test:((r==null?void 0:r.testCallCount)??0)>0},t=[...we.map(a=>({key:a,title:G[a].title,tab:G[a].tab,done:!((l==null?void 0:l.missing)??[]).includes(a)})),...Q.map(a=>({...a,done:g[a.key]??!1}))],n=t.filter(a=>a.done).length,i=t.find(a=>!a.done)??null,k=((l==null?void 0:l.isComplete)??!1)&&m,v=((l==null?void 0:l.missing)??[]).some(a=>["business_details","services","greeting"].includes(a)),p=d.find(a=>a.id===(s==null?void 0:s.default_language_profile_id))??d[0]??null;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(C,{children:[e.jsx(I,{className:"pb-3",children:e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(A,{children:k?"Redo att ta emot samtal":"Installationen är inte klar"}),e.jsx(_,{className:"max-w-2xl",children:k?"Allt receptionisten behöver finns på plats. Ring ett provsamtal och tala med den via datorns mikrofon.":`${t.length-n} steg återstår innan du kan ringa ett provsamtal.`})]}),e.jsx(b,{variant:(s==null?void 0:s.status)==="active"?"default":"outline",children:(s==null?void 0:s.status)==="active"?"Aktiv":(s==null?void 0:s.status)==="paused"?"Pausad":"Utkast"})]})}),e.jsxs(z,{className:"flex flex-wrap gap-2",children:[k?e.jsx(N,{size:"lg",asChild:!0,children:e.jsxs(F,{to:L("test"),children:[e.jsx(M,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),"Ring ett provsamtal"]})}):i?e.jsx(N,{size:"lg",asChild:!0,children:e.jsxs(F,{to:L(i.tab),children:[i.title,e.jsx(X,{className:"h-4 w-4 ml-2","aria-hidden":"true"})]})}):null,e.jsx(N,{variant:"outline",asChild:!0,children:e.jsxs(F,{to:L("inquiries"),children:[e.jsx(Z,{className:"h-4 w-4 mr-2","aria-hidden":"true"}),"Kundförfrågningar"]})})]})]}),e.jsx(Ne,{defaultBusinessName:(s==null?void 0:s.business_name)??"",defaultDescription:(s==null?void 0:s.business_description)??"",hasExistingContent:!v,onDone:c}),v&&e.jsx(ye,{onApplied:c}),v&&e.jsx(ke,{defaultProfile:p,onDone:c}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs(C,{children:[e.jsxs(I,{className:"pb-3",children:[e.jsx(A,{className:"text-base",children:"Installation"}),e.jsxs(_,{children:[n," av ",t.length," klara"]})]}),e.jsxs(z,{className:"space-y-3",children:[e.jsx(ee,{value:n/t.length*100,"aria-label":`${n} av ${t.length} steg klara`}),e.jsx("ul",{className:"space-y-0.5",children:t.map(a=>e.jsx("li",{children:e.jsxs(F,{to:L(a.tab),className:"flex items-center gap-2 py-1.5 text-sm rounded hover:bg-muted/50 px-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[a.done?e.jsx(se,{className:"h-4 w-4 text-emerald-600 shrink-0","aria-hidden":"true"}):e.jsx(ae,{className:"h-4 w-4 text-muted-foreground shrink-0","aria-hidden":"true"}),e.jsx("span",{className:te(a.done&&"text-muted-foreground line-through"),children:a.title}),e.jsx("span",{className:"sr-only",children:a.done?"(klart)":"(ej klart)"})]})},a.key))})]})]}),e.jsxs(C,{children:[e.jsxs(I,{className:"pb-3",children:[e.jsx(A,{className:"text-base",children:"Så är den inställd"}),e.jsx(_,{children:"Ändra under Inställningar."})]}),e.jsxs(z,{children:[e.jsx(y,{label:"Namn",value:(s==null?void 0:s.assistant_name)||"—"}),e.jsx(y,{label:"Språk",value:(s==null?void 0:s.primary_language)||"—"}),e.jsx(y,{label:"Röst",value:(s==null?void 0:s.voice)||"—"}),e.jsx(y,{label:"AI-modell",value:!(s!=null&&s.model)||s.model===ce?"Rekommenderad":s.model}),e.jsx(y,{label:"OpenAI-konto",value:m?`Anslutet (…${(r==null?void 0:r.credential.maskedSuffix)??""})`:"Inte anslutet"}),e.jsx(y,{label:"Provsamtal hittills",value:String((r==null?void 0:r.testCallCount)??0)}),e.jsx(y,{label:"Publicerat manus",value:r!=null&&r.activeVersion?`v${r.activeVersion.version_number}`:"Inget"})]})]})]}),e.jsxs(T,{children:[e.jsx(K,{className:"h-4 w-4","aria-hidden":"true"}),e.jsxs(V,{children:["Receptionisten testas via datorns mikrofon och högtalare. Inget telefonnummer är anslutet ännu — det kommer i nästa fas."," ",e.jsx(F,{to:re("telep
3hony"),className:"underline underline-offset-2",children:"Läs mer"})]})]})]})};export{Ee 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.