1import{j as e,r as S}from"./react-vendor-DKK5h-4S.js";import{a as de,b as he,N as ce,L as oe}from"./router-CKFl4ZoT.js";import{aQ as xe,aR as ue,aS as me,aL as Q,s as B}from"./index-rOX5Rmnz.js";import{B as o}from"./button-OGp97DSX.js";import{I as d}from"./input-DUVSE-me.js";import{T as C}from"./textarea-BmbqlQEF.js";import{L as n}from"./label--ZH0K_eI.js";import{C as m,a as p,b as v,d as j}from"./card-C_8Augd4.js";import{u as f}from"./ui-extras-CIMz-jDr.js";import{I as X}from"./ImageUpload-CH_YRiNC.js";import{ar as U,aq as k,aw as Z,C as ee,al as je,ax as ge,as as pe,O as Y,ab as ve}from"./icons-CoEihuPy.js";import{A as be}from"./AdminLayout-xtLJHO7X.js";import"./query-BddnajNh.js";import"./supabase-CJoCJpoI.js";import"./radix-DQ8yzr2B.js";import"./forms-DGqSpeMD.js";import"./dropdown-menu-COjvxBet.js";const fe=["Calendar","Award","Clock","Shield","Lock","Heart"];function y(s,x,i){const a=x+i;if(a<0||a>=s.length)return s;const r=[...s];return[r[x],r[a]]=[r[a],r[x]],r}function _({children:s,onUp:x,onDown:i,onRemove:a}){return e.jsxs("div",{className:"border rounded-md p-3 space-y-2 bg-muted/20",children:[e.jsxs("div",{className:"flex justify-end gap-1",children:[x&&e.jsx(o,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7",onClick:x,children:e.jsx(Z,{className:"h-3.5 w-3.5"})}),i&&e.jsx(o,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7",onClick:i,children:e.jsx(ee,{className:"h-3.5 w-3.5"})}),e.jsx(o,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7 text-destructive",onClick:a,children:e.jsx(U,{className:"h-3.5 w-3.5"})})]}),s]})}function ye({content:s,setContent:x}){const i=(a,r)=>x({...s,[a]:r});return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Hero"})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Eyebrow"}),e.jsx(d,{value:s.hero.eyebrow,onChange:a=>i("hero",{...s.hero,eyebrow:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Title"}),e.jsx(d,{value:s.hero.title,onChange:a=>i("hero",{...s.hero,title:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Subtitle"}),e.jsx(C,{rows:3,value:s.hero.subtitle,onChange:a=>i("hero",{...s.hero,subtitle:a.target.value})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Primary CTA label"}),e.jsx(d,{value:s.hero.primaryCta.label,onChange:a=>i("hero",{...s.hero,primaryCta:{...s.hero.primaryCta,label:a.target.value}})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Primary CTA link"}
1),e.jsx(d,{value:s.hero.primaryCta.href,onChange:a=>i("hero",{...s.hero,primaryCta:{...s.hero.primaryCta,href:a.target.value}})})]})]}),e.jsxs("div",{children:[e.jsx(n,{children:"WhatsApp button label"}),e.jsx(d,{value:s.hero.whatsappLabel,onChange:a=>i("hero",{...s.hero,whatsappLabel:a.target.value})})]}),e.jsx(X,{label:"Hero image",value:s.hero.image,onChange:a=>i("hero",{...s.hero,image:a})}),e.jsxs("div",{children:[e.jsx(n,{children:"Hero image alt text"}),e.jsx(d,{value:s.hero.imageAlt,onChange:a=>i("hero",{...s.hero,imageAlt:a.target.value})})]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Trust chips"})}),e.jsxs(j,{className:"space-y-2",children:[s.chips.map((a,r)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(d,{value:a,onChange:t=>{const l=[...s.chips];l[r]=t.target.value,i("chips",l)}}),e.jsx(o,{type:"button",size:"icon",variant:"ghost",className:"text-destructive",onClick:()=>i("chips",s.chips.filter((t,l)=>l!==r)),children:e.jsx(U,{className:"h-4 w-4"})})]},r)),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>i("chips",[...s.chips,""]),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add chip"]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Trust strip"})}),e.jsxs(j,{className:"space-y-3",children:[s.trust.map((a,r)=>e.jsxs(_,{onUp:r>0?()=>i("trust",y(s.trust,r,-1)):void 0,onDown:r<s.trust.length-1?()=>i("trust",y(s.trust,r,1)):void 0,onRemove:()=>i("trust",s.trust.filter((t,l)=>l!==r)),children:[e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Icon"}),e.jsx("select",{className:"w-full h-9 rounded-md border border-input bg-background px-2 text-sm",value:a.icon,onChange:t=>{const l=[...s.trust];l[r]={...a,icon:t.target.value},i("trust",l)},children:fe.map(t=>e.jsx("option",{value:t,children:t},t))})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(n,{className:"text-xs",children:"Title"}),e.jsx(d,{value:a.title,onChange:t=>{const l=[...s.trust];l[r]={...a,title:t.target.value},i("trust",l)}})]})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Subtitle"}),e.jsx(d,{value:a.sub,onChange:t=>{const l=[...s.trust];l[r]={...a,sub:t.target.value},i("trust",l)}})]})]},r)),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>i("trust",[...s.trust,{icon:"Award",title:"",sub:""}]),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add trust item"]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Audience tabs"})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Eyebrow"}),e.jsx(d,{value:s.audienceTabs.eyebrow,onChange:a=>i("audienceTabs",{...s.audienceTabs,eyebrow:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Heading"}),e.jsx(d,{value:s.audienceTabs.heading,onChange:a=>i("audienceTabs",{...s.audienceTabs,heading:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Sub"}),e.jsx(C,{rows:2,value:s.audienceTabs.sub,onChange:a=>i("audienceTabs",{...s.audienceTabs,sub:a.target.value})})]}),s.audienceTabs.audiences.map((a,r)=>e.jsxs(m,{children:[e.jsx(p,{className:"pb-2",children:e.jsxs(v,{className:"text-sm flex justify-between items-center",children:["Tab: ",a.label||"(no label)",e.jsxs("div",{className:"flex gap-1",children:[r>0&&e.jsx(o,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>i("audienceTabs",{...s.audienceTabs,audiences:y(s.audienceTabs.audiences,r,-1)}),children:e.jsx(Z,{className:"h-3.5 w-3.5"})}),r<s.audienceTabs.audiences.length-1&&e.jsx(o,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>i("audienceTabs",{...s.audienceTabs,audiences:y(s.audienceTabs.audiences,r,1)}),children:e.jsx(ee,{className:"h-3.5 w-3.5"})}),e.jsx(o,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7 text-destructive",onClick:()=>i("audienceTabs",{...s.audienceTabs,audiences:s.audienceTabs.audiences.filter((t,l)=>l!==r)}),children:e.jsx(U,{className:"h-3.5 w-3.5"})})]})]})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Label"}),e.jsx(d,{value:a.label,onChange:t=>A(s,i,r,{...a,label:t.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Order ID"}),e.jsx(d,{type:"number",value:a.id,onChange:t=>A(s,i,r,{...a,id:Number(t.target.value)})})]})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Blurb"}),e.jsx(C,{rows:2,value:a.blurb,onChange:t=>A(s,i,r,{...a,blurb:t.target.value})})]}),e.jsx(n,{className:"text-xs font-semibold pt-1",children:"Therapists"}),a.therapists.map((t,l)=>e.jsxs(_,{onUp:l>0?()=>A(s,i,r,{...a,therapists:y(a.therapists,l,-1)}):void 0,onDown:l<a.therapists.length-1?()=>A(s,i,r,{...a,therapists:y(a.therapists,l,1)}):void 0,onRemove:()=>A(s,i,r,{...a,therapists:a.therapists.filter((g,w)=>w!==l)}),children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Name"}),e.jsx(d,{value:t.name,onChange:g=>R(s,i,r,l,{...t,name:g.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Credential"}),e.jsx(d,{value:t.credential,onChange:g=>R(s,i,r,l,{...t,credential:g.target.value})})]})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Intro"}),e.jsx(C,{rows:2,value:t.intro,onChange:g=>R(s,i,r,l,{...t,intro:g.target.value})})]}),e.jsx(X,{label:"Photo (optional)",value:t.photo||"",onChange:g=>R(s,i,r,l,{...t,photo:g})})]},l)),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>A(s,i,r,{...a,therapists:[...a.therapists,{name:"",credential:"",intro:""}]}),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add therapist"]})]})]},a.id)),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>{const a=Math.max(0,...s.audienceTabs.audiences.map(r=>r.id))+1;i("audienceTabs",{...s.audienceTabs,audiences:[...s.audienceTabs.audiences,{id:a,label:"New audience",blurb:"",therapists:[]}]})},children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add audience tab"]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Body content (H2 sections, â¥1500 words for SEO)"})}),e.jsxs(j,{className:"space-y-3",children:[(s.body??[]).map((a,r)=>
1e.jsxs(_,{onUp:r>0?()=>i("body",y(s.body,r,-1)):void 0,onDown:r<(s.body?.length??0)-1?()=>i("body",y(s.body,r,1)):void 0,onRemove:()=>i("body",s.body.filter((t,l)=>l!==r)),children:[e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Heading (H2)"}),e.jsx(d,{value:a.heading,onChange:t=>{const l=[...s.body];l[r]={...a,heading:t.target.value},i("body",l)}})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Sub-heading (H3, optional)"}),e.jsx(d,{value:a.sub||"",onChange:t=>{const l=[...s.body];l[r]={...a,sub:t.target.value},i("body",l)}})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Paragraphs (one per line, blank line separates paragraphs)"}),e.jsx(C,{rows:8,value:a.paragraphs.join(` 2 3`),onChange:t=>{const l=[...s.body];l[r]={...a,paragraphs:t.target.value.split(/\n\s*\n/).map(g=>g.trim()).filter(Boolean)},i("body",l)}}),e.jsxs("p",{className:"text-[11px] text-muted-foreground mt-1",children:[a.paragraphs.join(" ").split(/\s+/).filter(Boolean).length," words in this section"]})]})]},r)),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Total body words: ",(s.body??[]).reduce((a,r)=>a+r.paragraphs.join(" ").split(/\s+/).filter(Boolean).length,0)," (target ⥠1500)"]}),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>i("body",[...s.body??[],{heading:"",sub:"",paragraphs:[""]}]),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add body section"]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Mid-page CTA banner"})}),e.jsx(j,{className:"space-y-3",children:s.ctaBanner?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx(n,{children:"Heading"}),e.jsx(d,{value:s.ctaBanner.heading,onChange:a=>i("ctaBanner",{...s.ctaBanner,heading:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Sub"}),e.jsx(C,{rows:2,value:s.ctaBanner.sub,onChange:a=>i("ctaBanner",{...s.ctaBanner,sub:a.target.value})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Primary CTA label"}),e.jsx(d,{value:s.ctaBanner.primary.label,onChange:a=>i("ctaBanner",{...s.ctaBanner,primary:{...s.ctaBanner.primary,label:a.target.value}})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Primary CTA link"}),e.jsx(d,{value:s.ctaBanner.primary.href,onChange:a=>i("ctaBanner",{...s.ctaBanner,primary:{...s.ctaBanner.primary,href:a.target.value}})})]})]}),e.jsxs("div",{children:[e.jsx(n,{children:"WhatsApp button label"}),e.jsx(d,{value:s.ctaBanner.whatsappLabel,onChange:a=>i("ctaBanner",{...s.ctaBanner,whatsappLabel:a.target.value})})]}),e.jsx(o,{type:"button",size:"sm",variant:"ghost",className:"text-destructive",onClick:()=>i("ctaBanner",void 0),children:"Remove banner"})]}):e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>i("ctaBanner",{heading:"Ready to take the next step?",sub:"Book a session online or message us on WhatsApp.",primary:{label:"Book an appointment",href:"/appointments"},whatsappLabel:"WhatsApp us"}),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add CTA banner"]})})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Why us"})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Eyebrow"}),e.jsx(d,{value:s.why.eyebrow,onChange:a=>i("why",{...s.why,eyebrow:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Heading"}),e.jsx(d,{value:s.why.heading,onChange:a=>i("why",{...s.why,heading:a.target.value})})]}),s.why.items.map((a,r)=>e.jsxs(_,{onUp:r>0?()=>i("why",{...s.why,items:y(s.why.items,r,-1)}):void 0,onDown:r<s.why.items.length-1?()=>i("why",{...s.why,items:y(s.why.items,r,1)}):void 0,onRemove:()=>i("why",{...s.why,items:s.why.items.filter((t,l)=>l!==r)}),children:[e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Title"}),e.jsx(d,{value:a.t,onChange:t=>{const l=[...s.why.items];l[r]={...a,t:t.target.value},i("why",{...s.why,items:l})}})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Description"}),e.jsx(C,{rows:2,value:a.d,onChange:t=>{const l=[...s.why.items];l[r]={...a,d:t.target.value},i("why",{...s.why,items:l})}})]})]},r)),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>i("why",{...s.why,items:[...s.why.items,{t:"",d:""}]}),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add item"]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Internal links"})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Heading"}),e.jsx(d,{value:s.internalLinks?.heading||"",onChange:a=>i("internalLinks",{...s.internalLinks??{items:[]},heading:a.target.value})})]}),(s.internalLinks?.items??[]).map((a,r)=>
3e.jsxs(_,{onUp:r>0?()=>i("internalLinks",{...s.internalLinks,items:y(s.internalLinks.items,r,-1)}):void 0,onDown:r<(s.internalLinks?.items.length??0)-1?()=>i("internalLinks",{...s.internalLinks,items:y(s.internalLinks.items,r,1)}):void 0,onRemove:()=>i("internalLinks",{...s.internalLinks,items:s.internalLinks.items.filter((t,l)=>l!==r)}),children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Label"}),e.jsx(d,{value:a.label,onChange:t=>{const l=[...s.internalLinks.items];l[r]={...a,label:t.target.value},i("internalLinks",{...s.internalLinks,items:l})}})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Href"}),e.jsx(d,{value:a.href,onChange:t=>{const l=[...s.internalLinks.items];l[r]={...a,href:t.target.value},i("internalLinks",{...s.internalLinks,items:l})}})]})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Blurb"}),e.jsx(d,{value:a.blurb,onChange:t=>{const l=[...s.internalLinks.items];l[r]={...a,blurb:t.target.value},i("internalLinks",{...s.internalLinks,items:l})}})]})]},r)),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>i("internalLinks",{heading:s.internalLinks?.heading||"Related pages",eyebrow:"Explore more",items:[...s.internalLinks?.items??[],{label:"",href:"/",blurb:""}]}),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add link"]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Local SEO"})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Heading"}),e.jsx(d,{value:s.localSeo?.heading||"",onChange:a=>i("localSeo",{...s.localSeo??{address:"",hours:"",areaServed:[]},heading:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Intro"}),e.jsx(C,{rows:2,value:s.localSeo?.intro||"",onChange:a=>i("localSeo",{...s.localSeo??{heading:"",address:"",hours:"",areaServed:[]},intro:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Address"}),e.jsx(d,{value:s.localSeo?.address||"",onChange:a=>i("localSeo",{...s.localSeo??{heading:"",hours:"",areaServed:[]},address:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Hours"}),e.jsx(d,{value:s.localSeo?.hours||"",onChange:a=>i("localSeo",{...s.localSeo??{heading:"",address:"",areaServed:[]},hours:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Areas served (comma-separated)"}),e.jsx(d,{value:(s.localSeo?.areaServed??[]).join(", "),onChange:a=>i("localSeo",{...s.localSeo??{heading:"",address:"",hours:""},areaServed:a.target.value.split(",").map(r=>r.trim()).filter(Boolean)})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Map embed URL (optional)"}),e.jsx(d,{value:s.localSeo?.mapEmbedUrl||"",onChange:a=>i("localSeo",{...s.localSeo??{heading:"",address:"",hours:"",areaServed:[]},mapEmbedUrl:a.target.value})})]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"FAQ"})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Eyebrow"}),e.jsx(d,{value:s.faq.eyebrow,onChange:a=>i("faq",{...s.faq,eyebrow:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Heading"}),e.jsx(d,{value:s.faq.heading,onChange:a=>i("faq",{...s.faq,heading:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Sub"}),e.jsx(C,{rows:2,value:s.faq.sub,onChange:a=>i("faq",{...s.faq,sub:a.target.value})})]}),s.faq.items.map((a,r)=>e.jsxs(_,{onUp:r>0?()=>i("faq",{...s.faq,items:y(s.faq.items,r,-1)}):void 0,onDown:r<s.faq.items.length-1?()=>i("faq",{...s.faq,items:y(s.faq.items,r,1)}):void 0,onRemove:()=>i("faq",{...s.faq,items:s.faq.items.filter((t,l)=>l!==r)}),children:[e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Question"}),e.jsx(d,{value:a.q,onChange:t=>{const l=[...s.faq.items];l[r]={...a,q:t.target.value},i("faq",{...s.faq,items:l})}})]}),e.jsxs("div",{children:[e.jsx(n,{className:"text-xs",children:"Answer"}),e.jsx(C,{rows:3,value:a.a,onChange:t=>{const l=[...s.faq.items];l[r]={...a,a:t.target.value},i("faq",{...s.faq,items:l})}})]})]},r)),e.jsxs(o,{type:"button",size:"sm",variant:"outline",onClick:()=>i("faq",{...s.faq,items:[...s.faq.items,{q:"",a:""}]}),children:[e.jsx(k,{className:"h-3 w-3 mr-1"}),"Add FAQ"]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Contact"})}),e.jsxs(j,{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Eyebrow"}),e.jsx(d,{value:s.contact.eyebrow,onChange:a=>i("contact",{...s.contact,eyebrow:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Heading"}),e.jsx(d,{value:s.contact.heading,onChange:a=>i("contact",{...s.contact,heading:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Sub"}),e.jsx(C,{rows:2,value:s.contact.sub,onChange:a=>i("contact",{...s.contact,sub:a.target.value})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(n,{children:"WhatsApp number"}),e.jsx(d,{value:s.contact.whatsapp,onChange:a=>i("contact",{...s.contact,whatsapp:a.target.value})})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Email"}),e.jsx(d,{value:s.contact.email,onChange:a=>i("contact",{...s.contact,email:a.target.value})})]})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Hours"}),e.jsx(d,{value:s.contact.hours,onChange:a=>i("contact",{...s.contact,hours:a.target.value})})]})]})]})]})}function A(s,x,i,a){const r=[...s.audienceTabs.audiences];r[i]=a,x("audienceTabs",{...s.audienceTabs,audiences:r})}function R(s,x,i,a,r){const t=[...s.audienceTabs.audiences],l=[...t[i].therapists];l[a]=r,t[i]={...t[i],therapists:l},x("audienceTabs",{...s.audienceTabs,audiences:t})}const we=["admin","auth","preview","api","assets","static","public","sitemap"];function Ne(){const{id:s}=de(),x=!s,{user:i,loading:a}=xe(),{hasRole:r,loading:t}=ue("admin"),{activeSite:l}=me(),g=he(),[w,M]=S.useState(null),[L,I]=S.useState(""),[T,D]=S.useState(""),[G,P]=S.useState(""),[V,H]=S.useState(""),[J,E]=S.useState(Q),[se,ae]=S.useState(!x),[O,z]=S.useState(!1),[F,ie]=S.useState(""),[$,K]=S.useState(!1),re=async()=>{const c=F.trim();if(!c)return f.error("Paste a URL to import from");if(!/^https?:\/\//i.test(c))return f.error("URL must start with http:// or https://");K(!0);try{const{data:u,error:b}=await B.functions.invoke("import-page-from-url",{body:{url:c}});if(b)throw b;if(!u?.success)throw new Error(u?.error||"Import failed");const h=u.data||{};h.title&&!T&&D(h.title),h.slugSuggestion&&!L&&I(String(h.slugSuggestion).toLowerCase()),h.seo_title&&P(h.seo_title),h.seo_description&&H(h.seo_de
3scription),E(N=>({...N,hero:{...N.hero,...h.hero||{}},chips:Array.isArray(h.chips)&&h.chips.length?h.chips:N.chips,body:Array.isArray(h.body)&&h.body.length?h.body:N.body,ctaBanner:h.ctaBanner??N.ctaBanner,why:h.why?.items?.length?{...N.why,...h.why}:N.why,internalLinks:h.internalLinks?.items?.length?h.internalLinks:N.internalLinks,localSeo:h.localSeo??N.localSeo,faq:h.faq?.items?.length?{...N.faq,...h.faq}:N.faq,jsonLd:h.jsonLd??N.jsonLd})),f.success("Imported â review and edit before saving. Rewrite headings to avoid duplicate-content SEO penalties.")}catch(u){f.error(u?.message||"Import failed")}finally{K(!1)}};S.useEffect(()=>{x||!r||B.from("landing_pages").select("*").eq("id",s).maybeSingle().then(({data:c,error:u})=>{if(u||!c){f.error("Page not found"),g("/_studio");return}const b=c;M(b),I(b.slug),D(b.title),P(b.seo_title||""),H(b.seo_description||"");const h={...Q,...b.content};E(h),ae(!1)})},[s,x,r,g]);const q=(()=>{if(!L)return"Slug is required";if(!/^[a-z0-9]+(?:-[a-z0-9]+)*(?:\/[a-z0-9]+(?:-[a-z0-9]+)*)*$/.test(L))return'Use lowercase letters, numbers, hyphens. Use "/" for nested paths e.g. we-serve/individual-counselling';for(const c of L.split("/"))if(we.includes(c))return`"${c}" is reserved`;return null})(),W=async c=>{if(q)return f.error(q);if(!T.trim())return f.error("Title is required");z(!0);const u={slug:L,title:T.trim(),content:J,seo_title:G||null,seo_description:V||null};if(c===!0&&(u.status="published",u.published_at=new Date().toISOString()),c===!1&&(u.status="draft",u.published_at=null),x){if(!l)return z(!1),f.error("No active site selected. Choose a site in the admin header first.");u.created_by=i.id,u.site_id=l.id,u.status=u.status||"draft";const{data:b,error:h}=await B.from("landing_pages").insert(u).select().single();if(z(!1),h)return f.error(h.message);f.success("Created"),g(`/_studio/pages/${b.id}/edit`)}else{const{error:b}=await B.from("landing_pages").update(u).eq("id",s);if(z(!1),b)return f.error(b.message);f.success(c===!0?"Published live":c===!1?"Unpublished":"Saved");const{data:h}=await B.from("landing_pages").select("*").eq("id",s).maybeSingle();h&&M(h)}},le=()=>{const c=l?.primary_domain??"olivebranch.com.sg";confirm(`Publish "${T}" to https://${c}/${L}? It will be publicly visible and indexable.`)&&W(!0)},te=()=>{confirm(`Unpublish "${T}"? The public URL will return 404.`)&&W(!1)},ne=async()=>{if(!w||!confirm(`Delete "${w.title}"? This cannot be undone.`))return;const{error:c}=await B.from("landing_pages").delete().eq("id",w.id);if(c)return f.error(c.message);f.success("Deleted"),g("/_studio/pages")};return a||t?e.jsx("div",{className:"p-8",children:"Loadingâ¦"}):i?r?se?e.jsx("div",{className:"p-8",children:"Loading pageâ¦"}):e.jsx(be,{title:x?"New page":T||w?.title||"Edit page",subtitle:w?`/${w.slug} · ${w.status}`:"Draft new landing page",hideSiteSwitcher:!0,headerAction:e.jsxs("div",{className:"flex items-center gap-2",children:[!x&&w&&e.jsx(o,{asChild:!0,size:"sm",variant:"outline",children:e.jsxs(oe,{to:`/preview/${w.slug}`,children:[e.jsx(je,{className:"h-4 w-4 mr-1"}),"Preview"]})}),e.jsxs(o,{size:"sm",variant:"outline",onClick:()=>W(),disabled:O||!!q,children:[e.jsx(ge,{className:"h-4 w-4 mr-1"}),"Save draft"]}),!x&&w?.status==="published"?e.jsx(o,{size:"sm",variant:"secondary",onClick:te,disabled:O,children:"Unpublish"}):e.jsxs(o,{size:"sm",onClick:le,disabled:O||!!q||x,children:[e.jsx(pe,{className:"h-4 w-4 mr-1"}),"Publish Live"]})]}),children:e.jsxs("div",{className:"max-w-3xl space-y-6",children:[x&&e.jsx(m,{children:e.jsx(j,{className:"pt-4 text-sm text-muted-foreground",children:"Save the draft first, then preview and publish."})}),e.jsxs(m,{className:"border-primary/30",children:[e.jsx(p,{children:e.jsxs(v,{className:"text-base flex items-center gap-2",children:[e.jsx(Y,{className:"h-4 w-4"}),"Auto-fill from existing page"]})}),e.jsxs(j,{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Paste a URL from olivebranch.com.sg (or any source). We'll scrape it and pre-fill title, SEO, hero, chips, why-us and FAQs. Review and rewrite before saving â Google penalises duplicate content."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(d,{placeholder:"https://olivebranch.com.sg/we-serve/indiv
3idual-counselling",value:F,onChange:c=>ie(c.target.value),disabled:$}),e.jsx(o,{onClick:re,disabled:$||!F.trim(),children:$?e.jsxs(e.Fragment,{children:[e.jsx(ve,{className:"h-4 w-4 mr-1 animate-spin"}),"Importingâ¦"]}):e.jsxs(e.Fragment,{children:[e.jsx(Y,{className:"h-4 w-4 mr-1"}),"Auto-fill"]})})]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"Basics"})}),e.jsxs(j,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(n,{htmlFor:"slug",children:"URL slug"}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"olivebranch.com.sg/"}),e.jsx(d,{id:"slug",value:L,onChange:c=>I(c.target.value.toLowerCase().trim()),placeholder:"anxiety-counselling-singapore"})]}),L&&(q?e.jsx("p",{className:"text-xs text-destructive mt-1",children:q}):e.jsx("p",{className:"text-xs text-green-600 mt-1",children:"â Valid slug"}))]}),e.jsxs("div",{children:[e.jsx(n,{htmlFor:"title",children:"Page title (internal)"}),e.jsx(d,{id:"title",value:T,onChange:c=>D(c.target.value),placeholder:"Anxiety Counselling â Singapore"})]})]})]}),e.jsxs(m,{children:[e.jsx(p,{children:e.jsx(v,{className:"text-base",children:"SEO"})}),e.jsxs(j,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs(n,{htmlFor:"seoTitle",children:["SEO title ",e.jsx("span",{className:"text-xs text-muted-foreground",children:"(under 60 chars)"})]}),e.jsx(d,{id:"seoTitle",value:G,onChange:c=>P(c.target.value),maxLength:70})]}),e.jsxs("div",{children:[e.jsxs(n,{htmlFor:"seoDesc",children:["Meta description ",e.jsx("span",{className:"text-xs text-muted-foreground",children:"(under 160 chars)"})]}),e.jsx(C,{id:"seoDesc",value:V,onChange:c=>H(c.target.value),maxLength:180,rows:3})]})]})]}),e.jsx(ye,{content:J,setContent:E}),e.jsx(m,{children:e.jsxs(j,{className:"pt-4 flex items-center justify-between",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Need to start over?"}),e.jsx(o,{variant:"outline",size:"sm",onClick:()=>{confirm("Reset all sections to default content?")&&E(Q)},children:"Reset to default content"})]})}),!x&&e.jsx(m,{children:e.jsx(j,{className:"pt-4",children:e.jsxs(o,{variant:"ghost",size:"sm",onClick:ne,className:"text-destructive",children:[e.jsx(U,{className:"h-4 w-4 mr-1"}),"Delete page"]})})})]})}):e.jsx("div",{className:"p-8 text-center",children:"Admin access required."}):e.jsx(ce,{to:"/_studio/auth",replace:!0})}function Oe(){return e.jsx(Ne,{})}export{Oe 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.