1import{r as c,f as B,eV as Z,z as K,C as L,eW as A,eX as H,eY as ee,eZ as se,j as e,T as ae,D as te,G as ne,bu as y,e_ as P,ab as ie,B as T,e$ as $,f0 as le,bC as re,L as D,V as R,aQ as oe,aX as ce,aI as M,f1 as de,I as me,aJ as O,aK as Q,aL as _,aM as q,aN as E,aO as V,P as ue}from"./index-Cp7YA_Ww.js";import{e as xe}from"./sidebar-EfcMZpkg.js";import"./separator-Bm3u9jon.js";import"./Separator-BY7rmoAq.js";import"./DialogTitle-3KXw1FDb.js";import"./store-BPJjTpa8.js";import"./DialogPopup-wUJRsSY6.js";import"./tooltip-CZ9FrsRB.js";import"./safePolygon-B37oODdG.js";import"./HugeiconsIcon-CiS12Muj.js";function pe({source:a}){return e.jsxs("a",{href:a.url,target:"_blank",rel:"noopener noreferrer",className:"group flex items-start gap-2",children:[e.jsx(D,{domain:a.url,className:"mt-0.5 size-4"}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("span",{className:"text-sm text-foreground group-hover:underline truncate",children:a.title}),e.jsx("span",{className:"text-xs text-blue-600 truncate",children:a.url})]})]})}function ge({painPoint:a,targetPromptTopic:i}){const t=i??a.brief;return e.jsx("div",{className:"bg-muted flex items-start gap-4 roun
1ded-lg px-6 py-6",children:e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[e.jsxs("h3",{className:"text-foreground text-lg font-semibold",children:["â",t,"â"]}),a.description&&e.jsx("p",{className:"text-muted-foreground max-w-150 text-sm",children:a.description}),e.jsxs("div",{className:"flex flex-col gap-2 pt-6",children:[e.jsx("span",{className:"text-xs font-medium",children:"Sources"}),e.jsx("div",{className:"flex flex-col gap-1.5",children:a.sources.map(l=>e.jsx(pe,{source:l},l.url))})]})]})})}function he({result:a,selected:i,disabled:t,onSelectedChange:l}){const u=a.metaTitle??a.domain;return e.jsxs("div",{className:"flex items-start gap-5 border-b px-6 pt-5 pb-[21px]",style:{borderColor:"#eaeaea"},children:[e.jsxs("div",{className:"flex w-10 shrink-0 flex-col items-center gap-2 pt-1",children:[e.jsxs("span",{className:"text-xs font-semibold leading-[18px]",style:{color:"#a3a3a3"},children:["#",a.position]}),e.jsx("div",{className:"flex size-5 shrink-0 items-center justify-center overflow-hidden rounded",style:{backgroundColor:"#f8f8f9"},children:e.jsx(D,{domain:a.domain,className:"size-5"})})]}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("a",{href:a.url,target:"_blank",rel:"noopener noreferrer",className:"truncate text-base font-medium leading-6 hover:underline",style:{color:"#2563eb"},children:u})}),e.jsx("span",{className:"truncate text-xs leading-[18px]",style:{color:"#16a34a"},children:a.url}),a.metaDescription&&e.jsx("p",{className:"pt-1 text-sm leading-[21px]",style:{color:"#161616"},children:a.metaDescription})]}),e.jsx(T,{variant:i?"outline":"default",size:"sm",disabled:t,onClick:()=>l(!i),className:"shrink-0",children:i?"Remove":"Add"})]})}function fe({prompt:a}){return e.jsx("div",{className:"flex items-center gap-3 rounded-lg border px-4 py-3",children:e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[e.jsx("span",{className:"text-sm font-medium",children:a.topic}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(R,{variant:"outline",size:"sm",children:[e.jsx(oe,{className:"size-3"}),a.location.name]}),e.jsxs(R,{variant:"outline",size:"sm",children:[e.jsx(ce,{className:"size-3"}),a.language.name]})]})]})})}function je({campaignId:a}){const i=K(),[t,l]=c.useState({topic:"",locationInput:"",languageInput:"",selectedLocation:null,selectedLanguage:null}),{data:u=[],isLoading:C}=M({type:"location",query:t.locationInput}),{data:m=[],isLoading:I}=M({type:"language",query:t.languageInput}),{mutate:x,isPending:d}=L({...de(),onSuccess:()=>{l({topic:"",locationInput:"",languageInput:"",selectedLocation:null,selectedLanguage:null}),i.invalidateQueries({queryKey:A({path:{campaign_id:a}})})}}),f=t.topic.trim()&&t.selectedLocation!==null&&t.selectedLanguage!==null&&!d;function p(){!t.selectedLocation||!t.selectedLanguage||x({path:{campaign_id:a},body:{topic:t.topic.trim(),location:{id:Number(t.selectedLocation.id),code:t.selectedLocation.code??"",isoCode:t.selectedLocation.isoCode??"",name:t.selectedLocation.name},language:{id:Number(t.selectedLanguage.id),code:t.selectedLanguage.code??"",isoCode:t.selectedLanguage.isoCode??"",name:t.selectedLanguage.name}}})}return e.jsxs("div",{className:"rounded-lg border border-dashed px-4 py-4 flex flex-col gap-3",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:"Add new query"}),e.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsx(me,{className:"w-55",placeholder:"Enter query...",value:t.topic,onChange:n=>l(r=>({...r,topic:n.target.value})),disabled:d}),e.jsxs(O,{items:u,value:t.locationInput,onValueChange:n=>l(r=>({...r,locationInput:n})),itemToStringValue:n=>n?.name??"",filter:null,children:[e.jsx(Q,{className:"w-37",placeholder:"Search location...",showTrigger:!1,disabled:d}),e.jsxs(_,{children:[e.jsx(q,{children:C?"Loading...":"No results found."}),e.jsx(E,{children:n=>e.jsx(V,{value:n,onClick:()=>l(r=>({...r,locationInput:n.name,selectedLocation:n})),children:n.name},n.id)})]})]}),e.jsxs(O,{items:m,value:t.languageInput,onValueChange:n=>l(r=>({...r,languageInput:n})),itemToStringValue:n=>n?.name??"",filter:null,children:[e.jsx(Q,{className:"w-34",placeholder:"Search language...",showTrigger:!1,disabled:d}),e.jsxs(_,{children:[e.jsx(q,{children:I?"Loading...":"No results found."}),e.jsx(E,{children:n=>e.jsx(V,{value:n,onClick:()=>l(r=>({...r,languageInput:n.name,selectedLanguage:n})),children:n.name},n.id)})]})]}),e.jsxs(T,{size:"sm",disabled:!f,onClick:p,children:[e.jsx(ue,{"data-icon":"inl
1ine-start"}),d?"Adding...":"Add"]})]})]})}function Te(){const{id:a}=le.useParams(),{data:i,isLoading:t}=B(re({path:{campaign_id:a}}));return t?e.jsx("div",{className:"flex h-screen items-center justify-center",children:e.jsx($,{className:"text-primary animate-spin",size:32,weight:"bold"})}):i?e.jsxs("div",{className:"flex h-screen flex-col",children:[e.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-2 border-b px-6",children:[e.jsx(xe,{className:"size-8"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"Campaign"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"/"}),e.jsx("span",{className:"text-sm font-medium",children:"Settings"})]}),e.jsx(Ne,{allowAdd:!0,campaignId:a,data:i})]}):null}function Ne({campaignId:a,data:i,allowAdd:t=!1,onSearchIntentUpdated:l}){const u=i.painPoints??[],C=i.searchIntents.flatMap(s=>s.results)??[],m=i.targetPrompts??[],I=c.useMemo(()=>{const s=new Map;for(const o of m)o.painPointId&&s.set(o.painPointId,o.topic);return s},[m]),x=C.length>0,d=u.length>0,f=d,p=!x&&!d,[n,r]=c.useState("search-intent"),w=B({...Z({path:{campaign_id:a}}),enabled:p&&!!i}),j=w.data?.data.flatMap(s=>s.organicResults??[])??[],F=j.map(s=>`${s.id}:${s.selected?"1":"0"}`).join("|"),[g,z]=c.useState([]),k=K(),{mutate:G,isPending:S}=L({...H(),onSuccess:()=>{w.refetch(),k.invalidateQueries({queryKey:A({path:{campaign_id:a}})})}}),{mutateAsync:U,isPending:N}=L(ee()),X=se(i.searchIntents),h=c.useMemo(()=>[...x?[{value:"search-intent",label:"Search Intent"}]:[],...p?[{value:"organic-competitors",label:"Organic Competitors"}]:[],...f?[{value:"pain-point",label:"Pain Point"}]:[],...m.length>0?[{value:"target-prompts",label:"Target Prompts"}]:[]],[x,f,p,m.length]),v=c.useMemo(()=>j.filter(s=>s.selected).map(s=>s.id),[F]),J=c.useMemo(()=>new Set(g),[g]),W=c.useMemo(()=>{const s=[...v].sort(),o=[...g].sort();return s.join(",")!==o.join(",")},[v,g]);return c.useEffect(()=>{if(h.some(o=>o.value===n))return;const s=h[0]?.value;s&&s!==n&&r(s)},[n,h]),c.useEffect(()=>{z(v)},[v]),e.jsx("div",{className:"flex-1 min-h-0 bg-white",children:e.jsxs(ae,{value:n,onValueChange:s=>r(s),orientation:"vertical",className:"relative block h-full",children:[h.length>1&&e.jsx(te,{className:"absolute left-4 top-1/2 z-10 -translate-y-1/2",children:h.map(s=>e.jsx(ne,{value:s.value,children:s.label},s.value))}),e.jsx("div",{className:"flex h-full justify-center overflow-auto px-6 py-8",children:e.jsxs("div",{className:"w-full max-w-150",children:[x&&e.jsx(y,{value:"search-intent",children:e.jsxs("section",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-full border border-border bg-white shadow-xs",children:e.jsx(P,{className:"size-5 text-foreground",weight:"fill"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-md font-medium text-foreground",children:"Search Intent"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"The search intent cluster this content is optimized for."})]})]}),e.jsx("div",{className:"flex flex-col gap-3",children:X.map(({detail:s,cluster:o},b)=>e.jsx(ie,{cluster:o,index:b,isSelected:s.selected,loading:N,onSelect:()=>{U({body:{searchIntentId:s.id},path:{campaign_id:a}}).then(async()=>{await k.invalidateQueries({queryKey:A({path:{campaign_id:a}})}),l?.()})}},s.id))})]})}),d&&e.jsx(y,{value:"pain-point",children:e.jsxs("section",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-full border border-border bg-white shadow-xs",children:e.jsx(P,{className:"size-5 text-foreground",weight:"fill"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-md font-medium text-foreground",children:"Pain Points"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"The audience pain points this campaign addresses."})]})]}),e.jsx("div",{className:"flex flex-col gap-3",children:u.map(s=>e.jsx(ge,{painPoint:s,targetPromptTopic:I.get(s.id)},s.id))})]})}),p&&e.jsx(y,{value:"organic-competitors",children:e.jsxs("section",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-full border border-border bg-white shadow-xs",children:e.jsx(P,{className:"size-5 text-foreground",weight:"fill"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-md font-medium text-foreground",children:"Organic SERP Results"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"The competitor pages analyzed for this campaign."})]})]}),e.jsx(T,{disabled:!W||S||N,onClick:()=>G({path:{campaign_id:a},body:{websiteIds:g}}
1),children:S||N?"Updating...":"Update"})]}),w.isLoading?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx($,{className:"text-primary animate-spin",size:24,weight:"bold"})}):j.length>0?e.jsx("div",{className:"overflow-hidden rounded-lg border",children:j.map(s=>e.jsx(he,{result:s,selected:J.has(s.id),disabled:S||N,onSelectedChange:o=>z(b=>o?[...new Set([...b,s.id])]:b.filter(Y=>Y!==s.id))},s.id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"No SERP results available."})]})}),e.jsx(y,{value:"target-prompts",children:e.jsxs("section",{className:"flex flex-col gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-md font-medium text-foreground",children:"AI Query Tracking"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Queries tracked across AI search engines for this campaign."})]}),m.length>0&&e.jsx("div",{className:"flex flex-col gap-2",children:m.map(s=>e.jsx(fe,{prompt:s},s.promptId))}),t&&e.jsx(je,{campaignId:a})]})})]})})]})})}export{Ne as CampaignSettingsContent,Te as component};
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.