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.