PageSourceSearch

https://nircle.com/assets/AdDashboardView-ssnd3d8Z.js

js nircle.com collected 2026-10-02 22:14:58 UTC 80,405 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/leaflet-src-C0zwsW1n.js","assets/index-YqUjisW-.js","assets/vendor-D3ahWMFY.js","assets/index-BswYZ62M.css","assets/leaflet-Dgihpmma.css"])))=>i.map(i=>d[i]);
2import{u as Fa,L as Q,B as gt,Z as Ht,a as B,al as Ia,am as ct,_ as Oa}from"./index-YqUjisW-.js";import{e as qa,r as c,c as v,w as Gt,_ as za,f as Ka,p as H,i as ie,b as t,a as o,k as x,l as _,A as E,v as F,t as l,F as m,h as w,x as ee,E as b,n as V,H as f,C as we,q as te,D as xt,T as Ce,G as qe,I as Wa,o as s,K as Ha}from"./vendor-D3ahWMFY.js";import{M as Ga}from"./MainLayout-IssbuzrT.js";import{r as pt}from"./PlusIcon-DZsws9GA.js";import{r as yt}from"./MegaphoneIcon-DJ_09KCS.js";const Ya={class:"w-full px-4 sm:px-6 lg:px-8 pb-6 -mt-4"},Xa={class:"flex border-b border-gray-200 dark:border-gray-700 mb-6 overflow-x-auto scrollbar-hide"},Za=["onClick"],Ja={key:0,class:"absolute bottom-0 left-0 right-0 h-0.5 bg-[#026B63] rounded-t"},Qa={key:0},er={key:0,class:"flex items-center justify-center py-16"},tr={class:"grid grid-cols-2 lg:grid-cols-4 gap-4 mb-4"},ar={class:"text-2xl font-bold text-gray-900 dark:text-white mt-1"},rr={class:"text-2xl font-bold text-green-600 mt-1"},sr={class:"text-2xl font-bold text-gray-900 dark:text-white mt-1"},lr={class:"text-2xl font-bold text-orange-500 mt-1"},or={class:"text-[10px] text-gray-400 mt-0.5"},nr={class:"p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 mb-8"},dr={class:"flex items-center justify-between mb-2"},ir={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},ur={class:"h-2 w-full rounded-full bg-gray-100 dark:bg-gray-700 overflow-hidden"},gr={class:"grid grid-cols-1 lg:grid-cols-2 gap-6"},cr={class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5"},xr={key:0,class:"text-center py-6"},pr={key:1,class:"space-y-2"},yr=["onClick"],br={class:"flex-1 min-w-0"},vr={class:"text-sm font-medium text-gray-900 dark:text-white truncate"},mr={class:"text-[10px] text-gray-400"},fr={class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5"},kr={key:0,class:"text-center py-6"},_r={key:1,class:"space-y-2"},hr={class:"flex-1 min-w-0"},wr={class:"text-sm font-medium text-gray-900 dark:text-white truncate"},Cr={class:"text-[10px] text-gray-400"},Sr={key:1},Ar={class:"flex items-center justify-between mb-4"},Br={class:"relative flex-1 max-w-xs"},Mr={class:"flex gap-2 mb-4 overflow-x-auto scrollbar-hide"},Dr=["onClick"],Lr={key:0,class:"flex items-center justify-center py-16"},Nr={key:1,class:"text-center py-16"},Ur={key:2,class:"space-y-3"},Tr={class:"flex items-start justify-between mb-3"},$r={class:"flex-1 min-w-0"},Er={class:"text-base font-bold text-gray-900 dark:text-white truncate"},jr={class:"text-[10px] text-gray-400 font-mono mt-0.5"},Pr={class:"grid grid-cols-4 gap-2 mb-3"},Vr={class:"p-2 rounded-lg bg-blue-50 dark:bg-blue-900/20 text-center"},Rr={class:"text-xs text-blue-600 dark:text-blue-400 font-bold"},Fr={class:"p-2 rounded-lg bg-green-50 dark:bg-green-900/20 text-center"},Ir={class:"text-xs text-green-600 dark:text-green-400 font-bold"},Or={class:"p-2 rounded-lg bg-teal-50 dark:bg-teal-900/20 text-center"},qr={class:"text-xs text-teal-600 dark:text-teal-400 font-bold"},zr={class:"p-2 rounded-lg bg-purple-50 dark:bg-purple-900/20 text-center"},Kr={class:"text-xs text-purple-600 dark:text-purple-400 font-bold"},Wr={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Hr={key:0},Gr={class:"flex gap-2 mt-3 pt-3 border-t border-gray-100 dark:border-gray-700"},Yr=["onClick"],Xr=["onClick"],Zr={key:2},Jr={key:0,class:"text-center py-16"},Qr={class:"rounded-2xl bg-gradient-to-r from-[#2D1B69] to-[#026B63] p-5 mb-4 text-white"},es={class:"flex items-center justify-between"},ts={class:"min-w-0"},as={class:"text-xs opacity-70 flex items-center gap-1.5 flex-wrap"},rs={key:1},ss={class:"opacity-100 font-medium"},ls={class:"text-lg font-bold truncate mt-0.5"},os={class:"text-[11px] opacity-70 mt-0.5"},ns={key:0,class:"flex gap-2 mb-6 overflow-x-auto scrollbar-hide"},ds=["onClick"],is={key:1,class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 mb-6"},us={class:"flex items-start justify-between mb-3 flex-wrap gap-2"},gs={class:"text-[11px] text-gray-400 mt-0.5"},cs=["viewBox"],xs=["y1","y2"],ps=["d"],ys=["d"],bs={class:"flex items-center justify-between mt-2"}
2,vs={key:0,class:"text-[10px] text-amber-600 dark:text-amber-400"},ms={class:"grid grid-cols-1 sm:grid-cols-3 gap-4 mb-6"},fs={class:"p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700"},ks={class:"text-2xl font-bold text-gray-900 dark:text-white mt-1"},_s={key:0,class:"text-[10px] text-gray-400 mt-0.5"},hs={key:1,class:"text-[10px] text-gray-400 mt-0.5"},ws={class:"p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700"},Cs={class:"text-2xl font-bold text-gray-900 dark:text-white mt-1"},Ss={class:"p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700"},As={class:"text-2xl font-bold text-gray-900 dark:text-white mt-1"},Bs={class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 mb-6"},Ms={class:"flex items-start justify-between mb-4 flex-wrap gap-3"},Ds={class:"flex items-center gap-2"},Ls={class:"text-sm font-bold text-gray-900 dark:text-white"},Ns={class:"text-[11px] text-gray-400 mt-0.5"},Us={key:0,class:"text-[10px] text-gray-400 mt-0.5"},Ts={key:0,class:"text-right"},$s={class:"text-xs font-bold text-gray-900 dark:text-white"},Es={class:"text-[11px] text-gray-500 dark:text-gray-400"},js={key:0,class:"h-[180px] flex items-center justify-center"},Ps=["viewBox"],Vs=["y1","y2"],Rs=["x","width","onMouseenter","onClick"],Fs=["x","y","width","height","fill","opacity"],Is={class:"flex justify-between mt-2 text-[10px] text-gray-400"},Os={key:2,class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 mb-6"},qs={class:"flex items-baseline justify-between mb-3"},zs={class:"text-sm font-bold text-gray-900 dark:text-white"},Ks={class:"text-[10px] text-gray-400"},Ws={key:0,class:"text-center py-6"},Hs={key:1,class:"overflow-x-auto"},Gs={class:"w-full text-left"},Ys={class:"py-1.5 pr-3 text-gray-500 dark:text-gray-400 tabular-nums"},Xs={class:"py-1.5 pr-3"},Zs={class:"py-1.5 pr-3 text-gray-600 dark:text-gray-300"},Js={class:"py-1.5 pr-3 text-gray-500 dark:text-gray-400"},Qs={class:"py-1.5 text-gray-600 dark:text-gray-300"},el={key:0,class:"text-gray-400"},tl={key:3,class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 mb-6"},al={class:"space-y-2"},rl={class:"w-16 shrink-0 text-xs text-gray-700 dark:text-gray-300"},sl={class:"flex-1 h-2 rounded-full bg-gray-100 dark:bg-gray-700 overflow-hidden"},ll={class:"w-40 shrink-0 text-right text-[11px] text-gray-500 dark:text-gray-400 tabular-nums"},ol={key:4,class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 mb-6"},nl={class:"overflow-x-auto"},dl={class:"min-w-[560px]"},il={class:"w-8 shrink-0 text-[10px] text-gray-400"},ul=["title"],gl={class:"flex items-center gap-1 mt-1"},cl={class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 mb-6"},xl={class:"text-sm font-bold text-gray-900 dark:text-white mb-3"},pl={key:0,class:"py-6 flex justify-center"},yl={key:1,class:"text-center py-6"},bl={key:2,class:"space-y-2"},vl={class:"w-28 shrink-0 text-xs text-gray-700 dark:text-gray-300 truncate"},ml={key:0,class:"text-gray-400"},fl={class:"flex-1 h-2 rounded-full bg-gray-100 dark:bg-gray-700 overflow-hidden"},kl={class:"w-24 shrink-0 text-right text-[11px] text-gray-500 dark:text-gray-400"},_l={key:5,class:"flex items-center justify-center py-16"},hl={key:6,class:"text-center py-16"},wl={key:7,class:"space-y-3"},Cl={class:"flex items-start gap-3 mb-2"},Sl=["disabled","onClick"],Al=["src","alt"],Bl={class:"flex-1 min-w-0"},Ml={class:"text-base font-bold text-gray-900 dark:text-white truncate"},Dl={key:0,class:"text-xs text-gray-500 dark:text-gray-400 italic mt-0.5"},Ll={key:0,class:"text-sm text-gray-600 dark:text-gray-300 line-clamp-2 mb-3"},Nl={key:1,class:"flex gap-2 mb-3 overflow-x-auto scrollbar-hide"},Ul=["onClick"],Tl={class:"w-20 h-14 rounded-lg overflow-hidden bg-gray-100 dark:bg-gray-700 border border-gray-200 dark:border-gray-600 group-hover:border-[#026B63] flex items-center justify-center transition-colors"},$l=["src","alt"],El=["src"],jl={key:2,class:"text-[9px] text-gray-400 px-1 text-center"}
2,Pl={class:"text-[9px] text-gray-400 group-hover:text-[#026B63] mt-1 text-center transition-colors"},Vl={class:"grid grid-cols-4 gap-2 mb-3"},Rl={class:"p-2 rounded-lg bg-blue-50 dark:bg-blue-900/20 text-center"},Fl={class:"text-xs text-blue-600 dark:text-blue-400 font-bold"},Il={class:"p-2 rounded-lg bg-orange-50 dark:bg-orange-900/20 text-center"},Ol={class:"text-xs text-orange-600 dark:text-orange-400 font-bold"},ql={class:"p-2 rounded-lg bg-purple-50 dark:bg-purple-900/20 text-center"},zl={class:"text-xs text-purple-600 dark:text-purple-400 font-bold"},Kl={class:"p-2 rounded-lg bg-green-50 dark:bg-green-900/20 text-center"},Wl={class:"text-xs text-green-600 dark:text-green-400 font-bold"},Hl={class:"h-1.5 w-full rounded-full bg-gray-100 dark:bg-gray-700 overflow-hidden mb-3"},Gl={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Yl={key:0,class:"px-2 py-0.5 rounded bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-300"},Xl={key:1},Zl={key:3},Jl={class:"flex items-center justify-between mb-4"},Ql={class:"relative flex-1 max-w-xs"},eo={key:0,class:"flex items-center justify-center py-16"},to={key:1,class:"text-center py-16"},ao={key:2,class:"space-y-3"},ro={class:"flex items-start justify-between mb-2"},so={class:"flex-1 min-w-0"},lo={class:"text-base font-bold text-gray-900 dark:text-white truncate"},oo={class:"text-[10px] text-gray-400 font-mono mt-0.5"},no={key:0,class:"text-sm text-gray-600 dark:text-gray-300 line-clamp-2 mb-3"},io={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},uo={key:0},go={class:"flex gap-2 mt-3 pt-3 border-t border-gray-100 dark:border-gray-700"},co=["onClick"],xo={class:"text-lg font-bold text-gray-900 dark:text-white mb-5"},po={class:"space-y-4"},yo={class:"grid grid-cols-2 gap-3"},bo={class:"grid grid-cols-2 gap-3"},vo={class:"flex gap-3 mt-5"},mo=["disabled"],fo={class:"text-lg font-bold text-gray-900 dark:text-white mb-5"},ko={class:"space-y-4"},_o={class:"flex gap-3 mt-5"},ho=["disabled"],wo={class:"flex-1 overflow-y-auto p-6 space-y-5"},Co=["value"],So={key:0,class:"text-[10px] text-gray-400 mt-1"},Ao={class:"grid grid-cols-2 gap-3"},Bo={class:"flex gap-2"}
2,Mo={key:0,class:"text-[10px] text-[#026B63] mt-1 truncate"},Do=["value"],Lo={class:"text-[10px] text-gray-400 mt-1 text-right"},No={class:"grid grid-cols-2 gap-3"},Uo=["value"],To={class:"grid grid-cols-3 gap-3"},$o={class:"grid grid-cols-2 gap-3"},Eo={class:"pt-2 border-t border-gray-100 dark:border-gray-700"},jo={class:"space-y-3"},Po={class:"flex items-baseline justify-between mb-1"},Vo={class:"text-[11px] font-semibold text-gray-700 dark:text-gray-300"},Ro={class:"text-[10px] text-gray-400"},Fo={class:"flex gap-2 items-center"},Io=["onUpdate:modelValue","placeholder"],Oo=["accept","onChange"],qo=["onClick","disabled"],zo={class:"w-12 h-12 shrink-0 rounded-lg overflow-hidden bg-gray-100 dark:bg-gray-700 flex items-center justify-center"},Ko=["src"],Wo=["src"],Ho={key:2,class:"text-[9px] text-gray-400"},Go=["onClick"],Yo={key:0,class:"text-[10px] text-red-500 mt-1"},Xo={class:"pt-2 border-t border-gray-100 dark:border-gray-700"},Zo={class:"relative rounded-xl overflow-hidden border border-gray-200 dark:border-gray-700 mb-2"},Jo={key:0,class:"absolute inset-0 flex items-center justify-center pointer-events-none"},Qo={class:"grid grid-cols-3 gap-2"},en={class:"pt-2 border-t border-gray-100 dark:border-gray-700"},tn={class:"flex items-start gap-2 cursor-pointer"},an={class:"flex gap-3 px-6 py-4 border-t border-gray-200 dark:border-gray-700 flex-shrink-0"},rn=["disabled"],sn={key:0,class:"fixed inset-0 z-[210] flex items-center justify-center p-4"},ln={class:"relative w-full max-w-lg max-h-[85vh] flex flex-col rounded-2xl bg-white dark:bg-gray-800 shadow-xl overflow-hidden"},on={class:"px-6 py-4 border-t-0 border-b border-gray-200 dark:border-gray-700"},nn={class:"relative mt-3"},dn={class:"flex-1 overflow-y-auto p-3"},un={key:0,class:"py-10 flex justify-center"},gn={key:1,class:"text-center py-10"},cn=["onClick"],xn={class:"w-12 h-12 shrink-0 rounded-lg overflow-hidden bg-gray-100 dark:bg-gray-700 flex items-center justify-center"},pn=["src"],yn={class:"flex-1 min-w-0"},bn={class:"text-sm font-medium text-gray-900 dark:text-white truncate"},vn={class:"text-[11px] text-gray-500 dark:text-gray-400 line-clamp-2"},mn={class:"text-[10px] text-gray-400 mt-0.5 font-mono"},fn={class:"px-6 py-3 border-t border-gray-200 dark:border-gray-700"},kn=["src","alt"],_n=["src"],hn=["src"],wn={class:"mt-4 text-center"},Cn={class:"text-white text-sm font-semibold"},Sn={class:"text-white/60 text-xs mt-0.5"},An={key:0},Bn=["href"],bt=720,ue=160,Se=720,ae=180,Mn=qa({__name:"AdDashboardView",setup(Dn){const vt=Fa(),Yt=c(),Xt=[{id:"dashboard",label:"Dashboard"},{id:"campaigns",label:"Campaigns"},{id:"advertisements",label:"Advertisements"},{id:"catalogs",label:"Catalogs"}],j=c("dashboard"),ge=c(!0),h=c([]),ce=c([]),z=c([]),ze=c(!1),k=c(null),xe=c(""),re=c("All"),Ke=c(""),G=c(!1),Y=c(!1),X=c(!1),Ae=c(!1),Be=c(!1),Me=c(!1),We=c(null),He=c(null),M=c({title:"",total_budget:0,daily_budget:0,start_date:"",end_date:"",currency:"USD"}),O=c({title:"",description:"",unique_code:""}),d=c({campaign_id:"",post_code:"",ad_type:"image",ad_title:"",ad_headline:"",ad_description:"",ad_cta:"",ad_cta_link:"",ad_gender:"All",ad_min_age:18,ad_max_age:65,ad_total_budget:0,ad_daily_budget:0,ad_start_date:"",ad_end_date:"",is_ad_running:!1,location_name:"",ad_map_lat:"",ad_map_lon:"",ad_map_radius:"",ad_portrait_url:"",ad_landscape_url:"",ad_leaderboard_url:"",ad_skyscraper_url:"",ad_square_url:"",ad_video_url:"",ad_audio_url:""}),se=v(()=>h.value.find(r=>String(r.id)===String(d.value.campaign_id))||null),Zt=["image","video","carousel","audio"],Ge=c(null),De=c(!1);let R=null,Ye=null,pe=null;const mt=[6.5244,3.3792];function ft(){const r=Number(d.value.ad_map_radius||0);return(r>0?r:25)*1e3}async function Jt(){if(!(!Ge.value||R))try{const r=(await ct(async()=>{const{default:u}=await import("./leaflet-src-C0zwsW1n.js").then(g=>g.l);return{default:u}},__vite__mapDeps([0,1,2,3]))).default??await ct(()=>import("./leaflet-src-C0zwsW1n.js").then(u=>u.l),__vite__mapDeps([0,1,2,3]));await ct(()=>Promise.resolve({}),__vite__mapDeps([4]));const e=Number(d.value.ad_map_lat)||mt[0],n=Number(d.value.ad_map_lon)||mt[1];R=r.map(Ge.value,{scrollWheelZoom:!1}
2).setView([e,n],9),r.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:"&copy; OpenStreetMap contributors",maxZoom:18}).addTo(R),Ye=r.circleMarker([e,n],{radius:6,color:"#026B63",fillColor:"#026B63",fillOpacity:1,weight:2}).addTo(R),pe=r.circle([e,n],{radius:ft(),color:"#026B63",fillColor:"#026B63",fillOpacity:.12,weight:1.5}).addTo(R),R.on("click",u=>{const{lat:g,lng:y}=u.latlng;d.value.ad_map_lat=g.toFixed(6),d.value.ad_map_lon=y.toFixed(6),Ye.setLatLng([g,y]),pe.setLatLng([g,y])}),setTimeout(()=>R&&R.invalidateSize(),120),De.value=!0}catch{De.value=!1}}function Qt(){R&&(R.remove(),R=null),Ye=null,pe=null,De.value=!1}Gt(()=>d.value.ad_map_radius,()=>{pe&&pe.setRadius(ft())}),Gt(X,r=>{r?Ha(()=>Jt()):Qt()});function ea(){d.value.ad_map_lat="",d.value.ad_map_lon="",d.value.ad_map_radius="",d.value.location_name=""}const ye=c(!1),Le=c([]),Xe=c(!1),Ze=c("");async function ta(){if(ye.value=!0,Le.value.length)return;Xe.value=!0;const r=await B.getFeedPosts({postType:"user_feed",userProfileId:vt.userId,page:0,recordsPerPage:50});Le.value=r.success?P(r.data):[],Xe.value=!1}const kt=v(()=>{const r=Ze.value.trim().toLowerCase();return r?Le.value.filter(e=>(e.title||"").toLowerCase().includes(r)||(e.content||"").toLowerCase().includes(r)):Le.value});function aa(r){d.value.post_code=r.unique_code,d.value.post_title=r.title||"",ye.value=!1}function _t(r){return r!=null&&r.img_url&&String(r.img_url).split(",")[0]||null}const Ne=c(null),K=c({}),ht=c({});function wt(r){if(!r)return"";if(typeof r=="string")return r;if(Array.isArray(r)){const e=r[0];return typeof e=="string"?e:(e==null?void 0:e.url)||(e==null?void 0:e.image_url)||(e==null?void 0:e.media_url)||""}return r.url||r.image_url||r.media_url||""}function ra(r){var e;(e=ht.value[r])==null||e.click()}async function sa(r,e){var g,y,p,S,W,a;const n=r.target,u=(g=n.files)==null?void 0:g[0];if(u){Ne.value=e,K.value={...K.value,[e]:""};try{const i=await B.uploadMedia(u),C=((p=(y=i.data)==null?void 0:y.results)==null?void 0:p[0])||((S=i.data)==null?void 0:S[0])||i.data,I=(C==null?void 0:C.status)==="SUCCESS"?wt(C.payload):wt(((W=i.data)==null?void 0:W.url)||((a=i.data)==null?void 0:a.payload));I?d.value[e]=I:K.value={...K.value,[e]:"Upload finished but no URL came back"}}catch{K.value={...K.value,[e]:"Upload failed — try again"}}Ne.value=null,n&&(n.value="")}}const la=[{field:"ad_square_url",label:"Square",hint:"250 × 250 · feed",kind:"image",placeholder:"https://…/square.jpg"},{field:"ad_landscape_url",label:"Landscape",hint:"1200 × 628 · feed, web",kind:"image",placeholder:"https://…/landscape.jpg"},{field:"ad_portrait_url",label:"Portrait",hint:"1080 × 1350 · mobile",kind:"image",placeholder:"https://…/portrait.jpg"},{field:"ad_leaderboard_url",label:"Leaderboard",hint:"728 × 90 · top banner",kind:"image",placeholder:"https://…/leaderboard.jpg"},{field:"ad_skyscraper_url",label:"Skyscraper",hint:"160 × 600 · blog rail",kind:"image",placeholder:"https://…/skyscraper.jpg"},{field:"ad_video_url",label:"Video",hint:"mp4 · video placements",kind:"video",placeholder:"https://…/video.mp4"},{field:"ad_audio_url",label:"Audio",hint:"mp3 · audio placements",kind:"audio",placeholder:"https://…/audio.mp3"}],oa=["Shop Now","Learn More","Sign Up","Contact Us","Book Now","Download","Get Offer","Subscribe"],na=v(()=>h.value.filter(r=>Z(r)==="Active").length),da=["BIF","CLP","DJF","GNF","ISK","JPY","KMF","KRW","PYG","RWF","UGX","VND","VUV","XAF","XOF","XPF"],ia=["BHD","IQD","JOD","KWD","LYD","OMR","TND"],ua={USD:"$",NGN:"₦",GBP:"£",EUR:"€",KES:"KSh",GHS:"₵",ZAR:"R"};function Ct(r){const e=(r||"USD").toUpperCase();return da.includes(e)?0:ia.includes(e)?3:2}function ga(r,e){return Number(r||0)/Math.pow(10,Ct(e))}function D(r,e){const n=(e||"USD").toUpperCase(),u=ua[n]||n+" ",g=Ct(n);return u+ga(r,n).toLocaleString(void 0,{minimumFractionDigits:g,maximumFractionDigits:g})}const Je=v(()=>{var r;return((r=h.value.find(e=>e.currency))==null?void 0:r.currency)||"USD"}),Ue=v(()=>h.value.reduce((r,e)=>r+Number(e.total_budget_minor||0),0)),Qe=v(()=>h.value.reduce((r,e)=>r+Number(e.spend_minor||0),0)),ca=v(()=>D(Ue.value,Je.value)),xa=v(()=>D(Qe.value,Je.value)),pa=v(()=>D(Math.max(0,Ue.value-Qe.value),Je.value)),St=v(()=>Ue.value>0?Math.round(Qe.value/Ue.value*100):0),ya=v(()=>h.value.reduce((r,e)=>r+(Array.isArray(e.ads)?e.ads.reduce((n,u)=>n+Number(u.billable_impressions||0),0):0),0));function At(r){var e,n;return(e=k.value)!=null&&e.currency?k.value.currency:((n=h.value.find(u=>String(u.id)===String(r.campaign_id)))==null?void 0:n.currency)||"USD"}const ba=[{field:"media_square_url",label:"Square",kind:"image"},{field:"media_landscape_url",label:"Landscape",kind:"image"},{field:"media_portrait_url",label:"Portrait",kind:"image"},{field:"media_leaderboard_url",label:"Leaderboard",kind:"image"},{field:"media_skyscraper_url",label:"Skyscraper",kind:"image"},{field:"media_video_url",label:"Video",kind:"video"},{field:"media_audio_url",label:"Audio",kind:"audio"}];function le(r){return ba.filter(e=>r==null?void 0:r[e.field]).map(e=>({label:e.label,url:r[e.field],kind:e.kind}))}function Bt(r){const e=le(r).find(n=>n.kind==="image");return(e==null?void 0:e.url)||(r==null?void 0:r.img_url)||null}function Te(r){const e=r.target;e.style.display="none"}const L=c({open:!1,items:[],index:0,adTitle:""}),q=v(()=>L.value.items[L.value.index]||null);function Mt(r,e,n){r.length&&(L.value={open:!0,items:r,index:e,adTitle:(n==null?void 0:n.title)||""},document.addEventListener("keydown",tt))}function et(){L.value.open=!1,document.removeEventListener("keydown",tt)}function $e(r){const e=L.value.items.length;e&&(L.value.index=(L.value.index+r+e)%e)}function tt(r){r.key==="Escape"?et():r.key==="ArrowRight"?$e(1):r.key==="ArrowLeft"&&$e(-1)}za(()=>document.removeEventListener("keydown",tt));function Dt(r){const e=Number(r.total_budget_minor||0);return e<=0?0:Math.round(Number(r.spend_minor||0)/e*100)}const at=c({});async function va(){const r=await Promise.allSettled(h.value.map(n=>B.getAdStats({campaign_id:n.id,days:365}))),e={};r.forEach((n,u)=>{if(n.status!=="fulfilled"||!n.value.success)return;const g=P(n.value.data);e[String(h.value[u].id)]=g.reduce((y,p)=>({impressions:y.impressions+Number(p.impressions||0),clicks:y.clicks+Number(p.clicks||0),spend_minor:y.spend_minor+Number(p.spend_minor||0)}),{impressions:0,clicks:0,spend_minor:0})}),at.value=e}function Ee(r,e){var n;return((n=at.value[String(r.id)])==null?void 0:n[e])??0}function ma(r){return Math.round(Ee(r,"clicks")*.48)}function fa(r){const e=at.value[String(r.id)];return!e||e.impressions===0?"0.00":(e.clicks/e.impressions*100).toFixed(2)}const Lt=c([]),rt=c(!1),U=c(null),T=c(null);function be(){var r,e;return(r=T.value)!=null&&r.unique_code?{ad_code:T.value.unique_code}:{campaign_id:(e=k.value)==null?void 0:e.id}}async function je(r){rt.value=!0;const e=await B.getAdStats({...be(),days:30});Lt.value=e.success?P(e.data):[],rt.value=!1}function ka(){dt(),je(),ne(),it()}function st(r){T.value=r,ka()}const ve=v(()=>{const r={};Lt.value.forEach(u=>{r[String(u.day).slice(0,10)]=u});const e=[],n=new Date;for(let u=29;u>=0;u--){const g=new Date(n);g.setDate(n.getDate()-u);const y=g.toISOString().slice(0,10),p=r[y];e.push({day:y,label:g.toLocaleDateString(void 0,{month:"short",day:"numeric"}),impressions:Number((p==null?void 0:p.impressions)||0),clicks:Number((p==null?void 0:p.clicks)||0),serves:Number((p==null?void 0:p.serves)||0),spend_minor:Number((p==null?void 0:p.spend_minor)||0)})}return e}),$=c(null),lt=c([]),ot=c(!1),Pe=c([]),nt=c(!1),oe=c([]);async function _a(r,e){const n=await B.getAdStats({...be(),group_by:"events",day:e});oe.value=n.success?P(n.data):[]}
2function ha(r){return r?String(r).slice(11,19):""}async function wa(r){if(!k.value)return;$.value=r,ot.value=!0,U.value=null,oe.value=[],_a(k.value.id,r),ne(k.value.id,r);const e=await B.getAdStats({...be(),group_by:"hourly",day:r}),n={};(e.success?P(e.data):[]).forEach(u=>{n[Number(u.hour)]=u}),lt.value=Array.from({length:24},(u,g)=>{var y,p,S;return{hour:g,label:`${String(g).padStart(2,"0")}:00`,impressions:Number(((y=n[g])==null?void 0:y.impressions)||0),clicks:Number(((p=n[g])==null?void 0:p.clicks)||0),spend_minor:Number(((S=n[g])==null?void 0:S.spend_minor)||0)}}),ot.value=!1}function dt(){$.value=null,lt.value=[],oe.value=[],U.value=null,k.value&&ne(k.value.id)}async function ne(r,e=null){nt.value=!0;const n=await B.getAdStats({...be(),group_by:"location",days:30,...e?{day:e}:{}});Pe.value=n.success?P(n.data):[],nt.value=!1}const N=v(()=>$.value?lt.value:ve.value),de=v(()=>N.value.reduce((r,e)=>({impressions:r.impressions+e.impressions,clicks:r.clicks+e.clicks,spend_minor:r.spend_minor+e.spend_minor}),{impressions:0,clicks:0,spend_minor:0})),Ca=v(()=>de.value.impressions>0?(de.value.clicks/de.value.impressions*100).toFixed(2):"0.00"),Nt=v(()=>Pe.value.reduce((r,e)=>r+Number(e.impressions||0),0));function Ut(r){return Nt.value?Math.round(Number(r.impressions||0)/Nt.value*100):0}const Ve=c([]),Tt=c([]),me=c(null);async function it(r){const e=be(),[n,u,g]=await Promise.allSettled([B.getAdStats({...e,group_by:"position",days:30}),B.getAdStats({...e,group_by:"heatmap",days:30}),B.getAdStats({...e,group_by:"reach",days:30})]);Ve.value=n.status==="fulfilled"&&n.value.success?P(n.value.data):[],Tt.value=u.status==="fulfilled"&&u.value.success?P(u.value.data):[];const y=g.status==="fulfilled"&&g.value.success?P(g.value.data):[];me.value=y[0]||null}const A=v(()=>{const r=k.value,e=Number((r==null?void 0:r.total_budget_minor)||0);if(!(r!=null&&r.start_at)||!(r!=null&&r.end_at)||e<=0)return null;const n=new Date(String(r.start_at).slice(0,10)),u=new Date(String(r.end_at).slice(0,10)),g=new Date(new Date().toISOString().slice(0,10)),y=864e5,p=Math.max(1,Math.round((u.getTime()-n.getTime())/y)+1),S=Math.min(p,Math.max(0,Math.round((g.getTime()-n.getTime())/y)+1)),W={};ve.value.forEach(J=>{W[J.day]=J.spend_minor});const a=[];let i=0;for(let J=0;J<p;J++){const ut=new Date(n.getTime()+J*y),Kt=ut.toISOString().slice(0,10),Wt=ut.getTime()<=g.getTime();Wt&&(i+=W[Kt]||0),a.push({day:Kt,label:ut.toLocaleDateString(void 0,{month:"short",day:"numeric"}),actual:Wt?i:null,ideal:Math.round(e/p*(J+1))})}const C=Number(r.spend_minor||0),I=Math.round(e/p*S),_e=S>0?C/S:0,he=_e>0?Math.ceil((e-C)/_e):null;return{points:a,budget:e,spent:C,idealToDate:I,totalDays:p,elapsedDays:S,variance:C-I,onPace:Math.abs(C-I)<=e*.05,projectedDays:he,willUnderspend:he!==null&&he>p-S}}),fe=v(()=>{const r=ve.value.reduce((n,u)=>n+Number(u.serves||0),0),e=Fe.value.impressions;return r?{serves:r,impressions:e,rate:Math.round(e/r*100)}:null}),Re=v(()=>{if(!me.value)return null;const r=Number(me.value.reach||0),e=Number(me.value.impressions||0),n=Number(me.value.anonymous_impressions||0);return{reach:r,impressions:e,anonymous:n,frequency:r>0?(e/r).toFixed(1):"0.0"}}),Sa=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],$t=v(()=>{const r={};let e=0;return Tt.value.forEach(u=>{const g=`${Number(u.weekday)}-${Number(u.hour)}`,y=Number(u.impressions||0);r[g]=y,y>e&&(e=y)}),{rows:Sa.map((u,g)=>({label:u,cells:Array.from({length:24},(y,p)=>{const S=r[`${g+1}-${p}`]||0;return{hour:p,value:S,intensity:e>0?S/e:0}})})),max:e}}),Aa=v(()=>Math.max(.01,...Ve.value.map(r=>Number(r.ctr||0))));function Ba(r,e){return e<=1?0:r/(e-1)*bt}function Ma(r,e){return ue-(e>0?r/e*ue:0)}function Et(r,e,n){const u=r.map((g,y)=>({x:Ba(y,r.length),y:Ma(g[e]??0,n),v:g[e]})).filter(g=>g.v!==null&&g.v!==void 0);return u.length?u.map((g,y)=>`${y===0?"M":"L"}${g.x.toFixed(1)},${g.y.toFixed(1)}`).join(" "):""}v(()=>Math.max(1,...ve.value.map(r=>r.impressions)));const Fe=v(()=>ve.value.reduce((r,e)=>({impressions:r.impressions+e.impressions,clicks:r.clicks+e.clicks,spend_minor:r.spend_minor+e.spend_minor}),{impressions:0,clicks:0,spend_minor:0}));v(()=>Fe.value.impressions>0?(Fe.value.clicks/Fe.value.impressions*100).toFixed(2):"0.00");const Da=v(()=>Math.max(1,...N.value.map(r=>r.impressions))),La=v(()=>Se/N.value.length-2);function jt(r){return r*(Se/N.value.length)}function Pt(r){return Math.max(r>0?2:0,r/Da.value*ae)}const Vt=v(()=>{let r=h.value;re.value!=="All"&&(r=r.filter(n=>Z(n)===re.value));const e=xe.value.trim().toLowerCase();return e&&(r=r.filter(n=>(n.title||"").toLowerCase().includes(e))),r}),Rt=v(()=>{const r=Ke.value.trim().toLowerCase();return r?ce.value.filter(e=>(e.name||e.title||"").toLowerCase().includes(r)):ce.value});function P(r){var n;const e=((n=r==null?void 0:r.results)==null?void 0:n[0])||(r==null?void 0:r[0])||r;return Array.isArray(e==null?void 0:e.payload)?e.payload:[]}function Z(r){return r.status?r.status.charAt(0).toUpperCase()+r.status.slice(1).toLowerCase():"Active"}function Ft(r){return r.is_ad_running_at?"Active":r.is_ad_paused_at?"Paused":"Draft"}function Na(r){return r==="Active"?"text-green-500":r==="Paused"?"text-orange-500":r==="Completed"?"text-blue-500":"text-gray-400"}function It(r){return r==="Active"?"bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400":r==="Paused"?"bg-orange-100 dar
2k:bg-orange-900/30 text-orange-700 dark:text-orange-400":r==="Completed"?"bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400":"bg-gray-100 dark:bg-gray-700 text-gray-500 dark:text-gray-400"}function ke(r){return Ia(r)}function Ie(r="All"){re.value=r,xe.value="",j.value="campaigns"}function Ua(r){re.value="All",xe.value=r.title||"",j.value="campaigns",k.value=r,Oe(r.id),je(r.id),ne(r.id),it(r.id)}function Ot(r){k.value=r,T.value=null,j.value="advertisements",dt(),Oe(r.id),je(r.id),ne(r.id)}function Ta(r){var e,n;We.value=r,M.value={title:r.title||"",total_budget:Number(r.total_budget||0),daily_budget:Number(r.daily_budget||0),start_date:((e=r.start_at)==null?void 0:e.split("T")[0])||"",end_date:((n=r.end_at)==null?void 0:n.split("T")[0])||"",currency:r.currency||"USD"},G.value=!0}function $a(r){He.value=r,O.value={title:r.name||r.title||"",description:r.description||"",unique_code:r.unique_code||""},Y.value=!0}async function Ea(){M.value.title&&(Ae.value=!0,await B.saveCampaign(M.value),Ae.value=!1,G.value=!1,We.value=null,M.value={title:"",total_budget:0,daily_budget:0,start_date:"",end_date:"",currency:"USD"},qt())}async function ja(){O.value.title&&(Be.value=!0,await B.saveCatalog(O.value),Be.value=!1,Y.value=!1,He.value=null,O.value={title:"",description:"",unique_code:""},zt())}async function Pa(){if(!d.value.ad_title||!d.value.campaign_id)return;const r=d.value.campaign_id;Me.value=!0,await B.saveAd({...d.value,ads_id:""}),Me.value=!1,X.value=!1,d.value={campaign_id:"",post_code:"",ad_type:"image",ad_title:"",ad_headline:"",ad_description:"",ad_cta:"",ad_cta_link:"",ad_gender:"All",ad_min_age:18,ad_max_age:65,ad_total_budget:0,ad_daily_budget:0,ad_start_date:"",ad_end_date:"",is_ad_running:!1,location_name:"",ad_map_lat:"",ad_map_lon:"",ad_map_radius:"",ad_portrait_url:"",ad_landscape_url:"",ad_leaderboard_url:"",ad_skyscraper_url:"",ad_square_url:"",ad_video_url:"",ad_audio_url:""};const e=h.value.find(n=>String(n.id)===String(r));e?Ot(e):Oe(String(r))}function Va(){var r;d.value.campaign_id=((r=k.value)==null?void 0:r.id)||"",X.value=!0}async function qt(){const r=await B.getCampaigns();r.success&&(h.value=P(r.data))}async function zt(){const r=await B.getCatalogs();r.success&&(ce.value=P(r.data))}async function Oe(r){ze.value=!0;const e=await B.getAds(r);e.success&&(z.value=P(e.data)),ze.value=!1}async function Ra(){ge.value=!0,await Promise.allSettled([qt(),zt()]),ge.value=!1,va(),!k.value&&h.value.length>0&&(k.value=h.value[0],T.value=null,await Promise.allSettled([Oe(h.value[0].id),je(h.value[0].id),ne(h.value[0].id),it(h.value[0].id)]))}return Ka(Ra),(r,e)=>(s(),H(Ga,{ref_key:"mainLayout",ref:Yt,"show-category-tabs":!1,"show-floating-actions":!1,"force-login":!V(vt).isAuthenticated},{default:ie(()=>{var n,u,g,y,p,S,W;return[t("div",Ya,[e[100]||(e[100]=t("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white mb-4"},"Ad Dashboard",-1)),t("div",Xa,[(s(),o(m,null,_(Xt,a=>t("button",{key:a.id,onClick:i=>j.value=a.id,class:E(["relative px-4 py-2.5 text-sm font-medium transition-colors whitespace-nowrap",j.value===a.id?"text-[#026B63]":"text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200"])},[F(l(a.label)+" ",1),j.value===a.id?(s(),o("span",Ja)):x("",!0)],10,Za)),64))]),j.value==="dashboard"?(s(),o("section",Qa,[ge.value?(s(),o("div",er,[w(Q,{width:80,height:80,"container-class":"mx-auto"})])):(s(),o(m,{key:1},[t("div",tr,[t("button",{type:"button",onClick:e[0]||(e[0]=a=>Ie()),class:"text-left p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 hover:border-[#026B63] hover:shadow-sm transition-all"},[e[58]||(e[58]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"},"Campaigns",-1)),t("p",ar,l(h.value.length),1)]),t("button",{type:"button",onClick:e[1]||(e[1]=a=>Ie("Active")),class:"text-left p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 hover:border-[#026B63] hover:shadow-sm transition-all"},[e[59]||(e[59]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"},"Active",-1)),t("p",rr,l(na.value),1)]),t("button",{type:"button",onClick:e[2]||(e[2]=a=>j.value="advertisements"),class:"text-left p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 hover:border-[#026B63] hover:shadow-sm transition-all"},[e[60]||(e[60]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"}
2,"Impressions",-1)),t("p",sr,l(ya.value.toLocaleString()),1)]),t("button",{type:"button",onClick:e[3]||(e[3]=a=>Ie()),class:"text-left p-4 rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 hover:border-[#026B63] hover:shadow-sm transition-all"},[e[61]||(e[61]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"},"Spent",-1)),t("p",lr,l(xa.value),1),t("p",or,"of "+l(ca.value),1)])]),t("div",nr,[t("div",dr,[e[62]||(e[62]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"},"Budget Used",-1)),t("p",ir,l(St.value)+"% · "+l(pa.value)+" remaining",1)]),t("div",ur,[t("div",{class:"h-full rounded-full bg-[#026B63] transition-all",style:ee({width:Math.min(100,St.value)+"%"})},null,4)])]),t("div",gr,[t("div",cr,[e[64]||(e[64]=t("h3",{class:"text-sm font-bold text-gray-900 dark:text-white mb-3"},"Recent Campaigns",-1)),h.value.length===0?(s(),o("div",xr,[...e[63]||(e[63]=[t("p",{class:"text-gray-400 text-sm"},"No campaigns yet",-1)])])):(s(),o("div",pr,[(s(!0),o(m,null,_(h.value.slice(0,5),a=>(s(),o("button",{type:"button",key:a.id,onClick:i=>Ua(a),class:"w-full text-left flex items-center justify-between py-2 px-2 -mx-2 rounded-lg border-b border-gray-100 dark:border-gray-700 last:border-0 hover:bg-gray-50 dark:hover:bg-gray-700/40 transition-colors"},[t("div",br,[t("p",vr,l(a.title),1),t("p",mr,l(Ee(a,"impressions").toLocaleString())+" impressions · "+l(D(a.spend_minor,a.currency))+" spent ",1)]),t("span",{class:E(["text-xs font-semibold ml-3 shrink-0",Na(Z(a))])},l(Z(a)),3)],8,yr))),128))]))]),t("div",fr,[e[66]||(e[66]=t("h3",{class:"text-sm font-bold text-gray-900 dark:text-white mb-3"},"Catalogs",-1)),ce.value.length===0?(s(),o("div",kr,[...e[65]||(e[65]=[t("p",{class:"text-gray-400 text-sm"},"No catalogs yet",-1)])])):(s(),o("div",_r,[(s(!0),o(m,null,_(ce.value.slice(0,5),a=>(s(),o("div",{key:a.id||a.unique_code,class:"flex items-center justify-between py-2 border-b border-gray-100 dark:border-gray-700 last:border-0"},[t("div",hr,[t("p",wr,l(a.name||a.title),1),t("p",Cr,l(a.product_snapshot||0)+" products",1)]),t("span",{class:E(["text-xs font-semibold",a.published_at?"text-green-500":"text-gray-400"])},l(a.published_at?"Active":"Draft"),3)]))),128))]))])])],64))])):j.value==="campaigns"?(s(),o("section",Sr,[t("div",Ar,[t("div",Br,[w(V(gt),{class:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),b(t("input",{"onUpdate:modelValue":e[4]||(e[4]=a=>xe.value=a),type:"text",placeholder:"Search campaigns...",class:"w-full pl-9 pr-4 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,xe.value]])]),t("button",{onClick:e[5]||(e[5]=a=>G.value=!0),class:"ml-3 px-4 py-2 rounded-xl bg-[#026B63] hover:bg-[#025A54] text-white text-sm font-semibold transition-colors flex items-center gap-1.5"},[w(V(pt),{class:"w-4 h-4"}),e[67]||(e[67]=F(" New Campaign ",-1))])]),t("div",Mr,[(s(),o(m,null,_(["All","Active","Draft","Paused","Completed"],a=>t("button",{key:a,onClick:i=>re.value=a,class:E(["px-3 py-1 rounded-full text-xs font-medium transition-colors whitespace-nowrap",re.value===a?"bg-[#026B63] text-white":"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700"])},l(a),11,Dr)),64))]),ge.value?(s(),o("div",Lr,[w(Q,{width:80,height:80,"container-class":"mx-auto"})])):Vt.value.length===0?(s(),o("div",Nr,[w(V(yt),{class:"w-12 h-12 text-gray-300 dark:text-gray-600 mx-auto mb-3"}),e[68]||(e[68]=t("p",{class:"text-gray-500 dark:text-gray-400 font-medium"},"No campaigns found",-1))])):(s(),o("div",Ur,[(s(!0),o(m,null,_(Vt.value,a=>(s(),o("div",{key:a.id,class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 hover:shadow-md transition-shadow"},[t("div",Tr,[t("div",$r,[t("h3",Er,l(a.title),1),t("p",jr,"ID: "+l(a.id),1)]),t("span",{class:E(["px-2.5 py-1 rounded-full text-[10px] font-bold",It(Z(a))])},l(Z(a)),3)]),t("div",Pr,[t("div",Vr,[t("p",Rr,l(Ee(a,"impressions").toLocaleStr
2ing()),1),e[69]||(e[69]=t("p",{class:"text-[9px] text-blue-500/70"},"Impressions",-1))]),t("div",Fr,[t("p",Ir,l(Ee(a,"clicks").toLocaleString()),1),e[70]||(e[70]=t("p",{class:"text-[9px] text-green-500/70"},"Clicks",-1))]),t("div",Or,[t("p",qr,l(ma(a).toLocaleString()),1),e[71]||(e[71]=t("p",{class:"text-[9px] text-teal-500/70"},"Downloads",-1))]),t("div",zr,[t("p",Kr,l(fa(a))+"%",1),e[72]||(e[72]=t("p",{class:"text-[9px] text-purple-500/70"},"CTR",-1))])]),t("div",Wr,[t("span",null,"Budget: "+l(D(a.total_budget_minor,a.currency))+" · Spent: "+l(D(a.spend_minor,a.currency)),1),a.start_at?(s(),o("span",Hr,l(ke(a.start_at))+" → "+l(a.end_at?ke(a.end_at):"Ongoing"),1)):x("",!0)]),t("div",Gr,[t("button",{onClick:i=>Ot(a),class:"px-3 py-1.5 rounded-lg bg-[#026B63] text-white text-xs font-medium hover:bg-[#025A54] transition-colors"},"View Ads",8,Yr),t("button",{onClick:i=>Ta(a),class:"px-3 py-1.5 rounded-lg bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 text-xs font-medium hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors"},"Edit",8,Xr)])]))),128))]))])):j.value==="advertisements"?(s(),o("section",Zr,[k.value?(s(),o(m,{key:1},[t("div",Qr,[t("div",es,[t("div",ts,[t("p",as,[t("button",{type:"button",onClick:e[7]||(e[7]=a=>Ie()),class:"hover:underline"},"Campaigns"),e[75]||(e[75]=t("span",null,"/",-1)),T.value?(s(),o("button",{key:0,type:"button",onClick:e[8]||(e[8]=a=>st(null)),class:"hover:underline"},l(k.value.title),1)):(s(),o("span",rs,l(k.value.title),1)),T.value?(s(),o(m,{key:2},[e[74]||(e[74]=t("span",null,"/",-1)),t("span",ss,l(T.value.title),1)],64)):x("",!0)]),t("h3",ls,l(T.value?T.value.title:k.value.title),1),t("p",os,l(T.value?"Reporting for this advert only":`Reporting across all ${z.value.length} advert${z.value.length===1?"":"s"} in this campaign`),1)]),t("button",{onClick:Va,class:"shrink-0 px-4 py-2 rounded-xl bg-white/20 hover:bg-white/30 text-sm font-semibold transition-colors flex items-center gap-1.5"},[w(V(pt),{class:"w-4 h-4"}),e[76]||(e[76]=F(" New Ad ",-1))])])]),z.value.length>0?(s(),o("div",ns,[t("button",{type:"button",onClick:e[9]||(e[9]=a=>st(null)),class:E(["px-3 py-1.5 rounded-full text-xs font-medium whitespace-nowrap transition-colors",T.value?"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700":"bg-[#026B63] text-white"])}," All ads ("+l(z.value.length)+") ",3),(s(!0),o(m,null,_(z.value,a=>{var i;return s(),o("button",{type:"button",key:a.id,onClick:C=>st(a),class:E(["px-3 py-1.5 rounded-full text-xs font-medium whitespace-nowrap transition-colors",((i=T.value)==null?void 0:i.id)===a.id?"bg-[#026B63] text-white":"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700"])},l(a.title||"Untitled ad"),11,ds)}),128))])):x("",!0),A.value?(s(),o("div",is,[t("div",us,[t("div",null,[e[77]||(e[77]=t("h3",{class:"text-sm font-bold text-gray-900 dark:text-white"},"Budget pacing",-1)),t("p",gs," Day "+l(A.value.elapsedDays)+" of "+l(A.value.totalDays)+" · "+l(D(A.value.spent,(n=k.value)==null?void 0:n.currency))+" of "+l(D(A.value.budget,(u=k.value)==null?void 0:u.currency)),1)]),t("span",{class:E(["px-2 py-1 rounded-full text-[10px] font-bold",A.value.onPace?"bg-green-50 text-green-600 dark:bg-green-900/20 dark:text-green-400":A.value.variance<0?"bg-amber-50 text-amber-600 dark:bg-amber-900/20 dark:text-amber-400":"bg-red-50 text-red-600 dark:bg-red-900/20 dark:text-red-400"])},l(A.value.onPace?"On pace":A.value.variance<0?"Underpacing":"Overpacing")+" · "+l(D(Math.abs(A.value.variance),(g=k.value)==null?void 0:g.currency))+" "+l(A.value.variance<0?"behind":"ahead"),3)]),(s(),o("svg",{viewBox:`0 0 ${bt} ${ue}`,class:"w-full",style:ee({height:ue+"px"}),preserveAspectRatio:"none"},[(s(),o(m,null,_([0,.5,1],a=>t("line",{key:a,x1:"0",x2:bt,y1:ue*a,y2:ue*a,class:"stroke-gray-200 dark:stroke-gray-700","stroke-width":"1","vector-effect":"non-scaling-stroke"},null,8,xs)),64)),t("path",{d:Et(A.value.points,"ideal",A.value.budget),fill:"none",class:"stroke-gray-300 dark:stroke-gray-600","stroke-width":"2","stroke-dasharray":"4 4","vector-effect":"non-scaling-stroke"},null,8,ps),t("path",{d:Et(A.value.points,"actual",A.value.budget),fill:"none",stroke:"#02
26B63","stroke-width":"2.5","vector-effect":"non-scaling-stroke","stroke-linecap":"round"},null,8,ys)],12,cs)),t("div",bs,[e[78]||(e[78]=t("div",{class:"flex items-center gap-4 text-[10px] text-gray-400"},[t("span",{class:"flex items-center gap-1.5"},[t("span",{class:"w-3 h-0.5 bg-[#026B63] rounded"}),F("Actual")]),t("span",{class:"flex items-center gap-1.5"},[t("span",{class:"w-3 h-0.5 bg-gray-300 dark:bg-gray-600 rounded"}),F("Even pace")])],-1)),A.value.willUnderspend?(s(),o("p",vs," At this rate the budget won't be spent by the end date ")):x("",!0)])])):x("",!0),t("div",ms,[t("div",fs,[e[79]||(e[79]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"},"View rate",-1)),t("p",ks,l(fe.value?fe.value.rate+"%":"—"),1),fe.value?(s(),o("p",_s," seen "+l(fe.value.impressions.toLocaleString())+" of "+l(fe.value.serves.toLocaleString())+" placements ",1)):(s(),o("p",hs,"needs SERVE and IMPRESSION events"))]),t("div",ws,[e[80]||(e[80]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"},"Reach",-1)),t("p",Cs,l(Re.value?Re.value.reach.toLocaleString():"—"),1),e[81]||(e[81]=t("p",{class:"text-[10px] text-gray-400 mt-0.5"},"signed-in people",-1))]),t("div",Ss,[e[82]||(e[82]=t("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"},"Frequency",-1)),t("p",As,l(Re.value?Re.value.frequency+"×":"—"),1),e[83]||(e[83]=t("p",{class:"text-[10px] text-gray-400 mt-0.5"},"average times each person saw it",-1))])]),t("div",Bs,[t("div",Ms,[t("div",null,[t("div",Ds,[$.value?(s(),o("button",{key:0,type:"button",onClick:dt,class:"text-[11px] font-semibold text-[#026B63] hover:underline"},"← 30 days")):x("",!0),t("h3",Ls,l($.value?`Impressions by hour — ${$.value}`:"Impressions — last 30 days"),1)]),t("p",Ns,l(de.value.impressions.toLocaleString())+" impressions · "+l(de.value.clicks.toLocaleString())+" clicks · "+l(Ca.value)+"% CTR · "+l(D(de.value.spend_minor,(y=k.value)==null?void 0:y.currency))+" spent ",1),$.value?x("",!0):(s(),o("p",Us,"Click any bar to break the day down by hour"))]),U.value!==null&&N.value[U.value]?(s(),o("div",Ts,[t("p",$s,l(N.value[U.value].label),1),t("p",Es,l(N.value[U.value].impressions.toLocaleString())+" impr · "+l(N.value[U.value].clicks)+" clicks · "+l(D(N.value[U.value].spend_minor,(p=k.value)==null?void 0:p.currency)),1)])):x("",!0)]),rt.value||ot.value?(s(),o("div",js,[w(Q,{width:60,height:60,"container-class":"mx-auto"})])):(s(),o(m,{key:1},[(s(),o("svg",{viewBox:`0 0 ${Se} ${ae}`,class:"w-full",style:ee({height:ae+"px"}),preserveAspectRatio:"none"},[(s(),o(m,null,_([0,.5,1],a=>t("line",{key:a,x1:"0",x2:Se,y1:ae*a,y2:ae*a,class:"stroke-gray-200 dark:stroke-gray-700","stroke-width":"1","vector-effect":"non-scaling-stroke"},null,8,Vs)),64)),(s(!0),o(m,null,_(N.value,(a,i)=>(s(),o("g",{key:a.day||a.hour},[t("rect",{x:jt(i),y:"0",width:Se/N.value.length,height:ae,fill:"transparent",class:E($.value?"":"cursor-pointer"),onMouseenter:C=>U.value=i,onMouseleave:e[10]||(e[10]=C=>U.value=null),onClick:C=>!$.value&&a.impressions>0?wa(a.day):null},null,42,Rs),t("rect",{x:jt(i),y:ae-Pt(a.impressions),width:La.value,height:Pt(a.impressions),rx:"3",fill:U.value===i?"#014F49":"#026B63",opacity:U.value===null||U.value===i?1:.45,class:"pointer-events-none transition-opacity"},null,8,Fs)]))),128))],12,Ps)),t("div",Is,[t("span",null,l((S=N.value[0])==null?void 0:S.label),1),t("span",null,l((W=N.value[N.value.length-1])==null?void 0:W.label),1)])],64))]),$.value?(s(),o("div",Os,[t("div",qs,[t("h3",zs,"Events — "+l($.value),1),t("span",Ks,"most recent "+l(oe.value.length),1)]),oe.value.length===0?(s(),o("div",Ws,[...e[84]||(e[84]=[t("p",{class:"text-gray-400 text-sm"},"No events recorded for this day",-1)])])):(s(),o("div",Hs,[t("table",Gs,[e[85]||(e[85]=t("thead",null,[t("tr",{class:"text-[10px] uppercase text-gray-400 border-b border-gray-100 dark:border-gray-700"},[t("th",{class:"py-2 pr-3 font-medium"},"Time"),t("th",{class:"py-2 pr-3 font-medium"},"Event"),t("th",{class:"py-2 pr-3 font-medium"},"Surface"),t("th",{class:"py-2 pr-3 font-medium"},"Position"),t("th",{class:"py-2 font-medium"},"Location")])],-1)),t("tbody",null,[(s(!0),o(m,null,_(oe.value,a=>(s(),o("tr",{key:a.unique_code,class:"text-xs border-b border-gray-50 dark:border-gray-700/50 last:border-0"},[t("td",Ys,l(ha(a.created_at)),1),t("td",Xs,[t("span",{class:E(["px-1.5 py-0.5 rounded text-[10px] font-semibold",a.event_type==="CLICK"?"bg-green-50 text-green-600 dark:bg-green-900/20 dark:text-green-400":a.event_type==="IMPRESSION"?"bg-blue-50 text-blue-600 dar
2k:bg-blue-900/20 dark:text-blue-400":"bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400"])},l(a.event_type),3)]),t("td",Zs,l(a.feed_type||"—"),1),t("td",Js,l(a.page_no!==null?a.page_no:"—"),1),t("td",Qs,[F(l(a.city||"—"),1),a.country_code?(s(),o("span",el," · "+l(a.country_code),1)):x("",!0)])]))),128))])])])),e[86]||(e[86]=t("p",{class:"text-[10px] text-gray-400 mt-3"},"Individual viewers are not identified — delivery is reported by time, surface and place.",-1))])):x("",!0),Ve.value.length?(s(),o("div",tl,[e[87]||(e[87]=t("h3",{class:"text-sm font-bold text-gray-900 dark:text-white mb-1"},"Performance by feed position",-1)),e[88]||(e[88]=t("p",{class:"text-[10px] text-gray-400 mb-3"},"How the slot performs depending on how far the reader scrolled",-1)),t("div",al,[(s(!0),o(m,null,_(Ve.value,a=>(s(),o("div",{key:a.page_no,class:"flex items-center gap-3"},[t("div",rl,"Page "+l(a.page_no),1),t("div",sl,[t("div",{class:"h-full rounded-full bg-[#026B63]",style:ee({width:Math.round(Number(a.ctr||0)/Aa.value*100)+"%"})},null,4)]),t("div",ll,l(Number(a.ctr||0).toFixed(2))+"% CTR · "+l(Number(a.impressions).toLocaleString())+" impr ",1)]))),128))])])):x("",!0),$t.value.max>0?(s(),o("div",ol,[e[90]||(e[90]=t("h3",{class:"text-sm font-bold text-gray-900 dark:text-white mb-1"},"Impressions by day and hour",-1)),e[91]||(e[91]=t("p",{class:"text-[10px] text-gray-400 mb-3"},"Last 30 days · darker means more impressions",-1)),t("div",nl,[t("div",dl,[(s(!0),o(m,null,_($t.value.rows,a=>(s(),o("div",{key:a.label,class:"flex items-center gap-1 mb-1"},[t("span",il,l(a.label),1),(s(!0),o(m,null,_(a.cells,i=>(s(),o("div",{key:i.hour,class:E(["flex-1 h-4 rounded-sm",i.value===0?"bg-gray-100 dark:bg-gray-700/50":""]),style:ee({backgroundColor:i.value>0?`rgba(2,107,99,${.12+i.intensity*.88})`:void 0}),title:`${a.label} ${String(i.hour).padStart(2,"0")}:00 — ${i.value.toLocaleString()} impressions`},null,14,ul))),128))]))),128)),t("div",gl,[e[89]||(e[89]=t("span",{class:"w-8 shrink-0"},null,-1)),(s(),o(m,null,_(24,a=>t("span",{key:a,class:"flex-1 text-[8px] text-gray-400 text-center"},l((a-1)%6===0?String(a-1).padStart(2,"0"):""),1)),64))])])])])):x("",!0),t("div",cl,[t("h3",xl,l($.value?`Top locations — ${$.value}`:"Top locations — last 30 days"),1),nt.value?(s(),o("div",pl,[w(Q,{width:50,height:50,"container-class":"mx-auto"})])):Pe.value.length===0?(s(),o("div",yl,[...e[92]||(e[92]=[t("p",{class:"text-gray-400 text-sm"},"No location data yet",-1),t("p",{class:"text-[10px] text-gray-400 mt-1"},"Location is recorded on impressions served after this feature went live",-1)])])):(s(),o("div",bl,[(s(!0),o(m,null,_(Pe.value.slice(0,8),(a,i)=>(s(),o("div",{key:i,class:"flex items-center gap-3"},[t("div",vl,[F(l(a.city||a.country_code||"Unknown")+" ",1),a.city&&a.country_code?(s(),o("span",ml,"· "+l(a.country_code),1)):x("",!0)]),t("div",fl,[t("div",{class:"h-full rounded-full bg-[#026B63]",style:ee({width:Ut(a)+"%"})},null,4)]),t("div",kl,l(Number(a.impressions).toLocaleString())+" · "+l(Ut(a))+"% ",1)]))),128))]))]),ze.value?(s(),o("div",_l,[w(Q,{width:80,height:80,"container-class":"mx-auto"})])):z.value.length===0?(s(),o("div",hl,[...e[93]||(e[93]=[t("p",{class:"text-gray-400 text-sm"},"No advertisements in this campaign yet",-1)])])):(s(),o("div",wl,[(s(!0),o(m,null,_(z.value,a=>(s(),o("div",{key:a.id,class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 hover:shadow-md transition-shadow"},[t("div",Cl,[t("button",{type:"button",class:"w-14 h-14 shrink-0 rounded-xl overflow-hidden bg-gray-100 dark:bg-gray-700 flex items-center justify-center hover:ring-2 hover:ring-[#026B63] transition-all",disabled:!le(a).length,onClick:i=>Mt(le(a),0,a)},[Bt(a)?(s(),o("img",{key:0,src:Bt(a),alt:a.title||"Ad creative",class:"w-full h-full object-cover",loading:"lazy",onError:Te},null,40,Al)):(s(),H(V(yt),{key:1,class:"w-6 h-6 text-gray-300 dark:text-gray-500"}))],8,Sl),t("div",Bl,[t("h3",Ml,l(a.title),1),a.headline?(s(),o("p",Dl,l(a.headline),1)):x("",!0)]),t("span",{class:E(["px-2.5 py-1 rounded-full text-[10px] font-bold shrink-0",It(Ft(a))])},l(Ft(a)),3)]),a.description?(s(),o("p",Ll,l(a.description),1)):x("",!0),le(a).length?(s(),o("div",Nl,[(s(!0),o(m,null,_(le(a),(i,C)=>(s(),o("button",{type:"button",key:i.label,class:"shrink-0 group",onClick:I=>Mt(le(a),C,a)}
2,[t("div",Tl,[i.kind==="image"?(s(),o("img",{key:0,src:i.url,alt:i.label,class:"w-full h-full object-cover",loading:"lazy",onError:Te},null,40,$l)):i.kind==="video"?(s(),o("video",{key:1,src:i.url,class:"w-full h-full object-cover",muted:"",playsinline:"",preload:"metadata"},null,8,El)):(s(),o("span",jl,"Audio"))]),t("p",Pl,l(i.label),1)],8,Ul))),128))])):x("",!0),t("div",Vl,[t("div",Rl,[t("p",Fl,l(Number(a.billable_impressions||0).toLocaleString()),1),e[94]||(e[94]=t("p",{class:"text-[9px] text-blue-500/70"},"Impressions",-1))]),t("div",Il,[t("p",Ol,l(D(a.spend_minor,At(a))),1),e[95]||(e[95]=t("p",{class:"text-[9px] text-orange-500/70"},"Spent",-1))]),t("div",ql,[t("p",zl,l(D(a.rate_minor,At(a))),1),e[96]||(e[96]=t("p",{class:"text-[9px] text-purple-500/70"},"CPM",-1))]),t("div",Kl,[t("p",Wl,l(Dt(a))+"%",1),e[97]||(e[97]=t("p",{class:"text-[9px] text-green-500/70"},"Budget used",-1))])]),t("div",Hl,[t("div",{class:"h-full rounded-full bg-[#026B63]",style:ee({width:Math.min(100,Dt(a))+"%"})},null,4)]),t("div",Gl,[a.ad_cta?(s(),o("span",Yl,l(a.ad_cta),1)):x("",!0),a.ad_gender?(s(),o("span",Xl,l(a.ad_gender)+" · "+l(a.min_age||18)+"-"+l(a.max_age||65),1)):x("",!0)])]))),128))]))],64)):(s(),o("div",Jr,[w(V(yt),{class:"w-12 h-12 text-gray-300 dark:text-gray-600 mx-auto mb-3"}),e[73]||(e[73]=t("p",{class:"text-gray-500 dark:text-gray-400 font-medium"},"Select a campaign from the Campaigns tab to view its ads",-1)),t("button",{onClick:e[6]||(e[6]=a=>j.value="campaigns"),class:"mt-3 text-sm text-[#026B63] font-medium hover:underline"},"Go to Campaigns")]))])):j.value==="catalogs"?(s(),o("section",Zl,[t("div",Jl,[t("div",Ql,[w(V(gt),{class:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),b(t("input",{"onUpdate:modelValue":e[11]||(e[11]=a=>Ke.value=a),type:"text",placeholder:"Search catalogs...",class:"w-full pl-9 pr-4 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,Ke.value]])]),t("button",{onClick:e[12]||(e[12]=a=>Y.value=!0),class:"ml-3 px-4 py-2 rounded-xl bg-[#026B63] hover:bg-[#025A54] text-white text-sm font-semibold transition-colors flex items-center gap-1.5"},[w(V(pt),{class:"w-4 h-4"}),e[98]||(e[98]=F(" New Catalog ",-1))])]),ge.value?(s(),o("div",eo,[w(Q,{width:80,height:80,"container-class":"mx-auto"})])):Rt.value.length===0?(s(),o("div",to,[w(V(Ht),{class:"w-12 h-12 text-gray-300 dark:text-gray-600 mx-auto mb-3"}),e[99]||(e[99]=t("p",{class:"text-gray-500 dark:text-gray-400 font-medium"},"No catalogs found",-1))])):(s(),o("div",ao,[(s(!0),o(m,null,_(Rt.value,a=>(s(),o("div",{key:a.id||a.unique_code,class:"rounded-2xl bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 p-5 hover:shadow-md transition-shadow"},[t("div",ro,[t("div",so,[t("h3",lo,l(a.name||a.title),1),t("p",oo,l(a.unique_code),1)]),t("span",{class:E(["px-2.5 py-1 rounded-full text-[10px] font-bold",a.published_at?"bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400":"bg-gray-100 dark:bg-gray-700 text-gray-500"])},l(a.published_at?"Active":"Draft"),3)]),a.description?(s(),o("p",no,l(a.description),1)):x("",!0),t("div",io,[t("span",null,l(a.product_snapshot||0)+" products",1),a.created_at?(s(),o("span",uo,"Created "+l(ke(a.created_at)),1)):x("",!0)]),t("div",go,[t("button",{onClick:i=>$a(a),class:"px-3 py-1.5 rounded-lg bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 text-xs font-medium hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors"},"Edit",8,co)])]))),128))]))])):x("",!0)]),(s(),H(we,{to:"body"},[w(Ce,{name:"fade"},{default:ie(()=>[G.value?(s(),o("div",{key:0,class:"fixed inset-0 z-[200] flex items-center justify-center p-4",onKeydown:e[21]||(e[21]=xt(a=>G.value=!1,["escape"]))},[t("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:e[13]||(e[13]=a=>G.value=!1)}),t("div",{class:"relative w-full max-w-md bg-white dark:bg-gray-900 rounded-2xl shadow-2xl p-6",onClick:e[20]||(e[20]=te(()=>{},["stop"]))},[t("h3",xo,l(We.value?"Edit Campaign":"New Campaign"),1),t("div",po,[t("div",null,[e[101]||(e[101]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Campaign Title",-1)),e[102]||(e[102]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"A descriptive name for your campaign to identify it in your dashboard.",-1)),b(t("input",{"onUpdate:modelValue":e[14]||(e[14]=a=>M.value.title=a),type:"text",placeholder:"e.g. Summer Product Launch",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,M.value.title]])]),t("div",yo,[t("div",null,[e[103]||(e[103]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Total Budget ($)",-1)),e[104]||(e[104]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"The maximum amount to spend across the entire campaign.",-1)),b(t("input",{"onUpdate:modelValue":e[15]||(e[15]=a=>M.value.total_budget=a),type:"number",placeholder:"0",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,M.value.total_budget,void 0,{number:!0}]])]),t("div",null,[e[105]||(e[105]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Daily Budget ($)",-1)),e[106]||(e[106]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"The maximum to spend per day. Helps pace your spending evenly.",-1)),b(t("input",{"onUpdate:modelValue":e[16]||(e[16]=a=>M.value.daily_budget=a),type:"number",placeholder:"0",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,M.value.daily_budget,void 0,{number:!0}]])])]),t("div",bo,[t("div",null,[e[107]||(e[107]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Start Date",-1)),e[108]||(e[108]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"When your campaign begins running.",-1)),b(t("input",{"onUpdate:modelValue":e[17]||(e[17]=a=>M.value.start_date=a),type:"date",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,M.value.start_date]])]),t("div",null,[e[109]||(e[109]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"End Date",-1)),e[110]||(e[110]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"When your campaign stops. Leave empty for ongoing.",-1)),b(t("input",{"onUpdate:modelValue":e[18]||(e[18]=a=>M.value.end_date=a),type:"date",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,M.value.end_date]])])])]),t("div",vo,[t("button",{onClick:e[19]||(e[19]=a=>G.value=!1),class:"flex-1 py-2 rounded-xl border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300 text-sm font-medium"},"Cancel"),t("button",{onClick:Ea,disabled:Ae.value||!M.value.title,class:"flex-1 py-2 rounded-xl bg-[#026B63] hover:bg-[#025A54] text-white text-sm font-semibold disabled:opacity-40 transition-colors"},l(Ae.value?"Saving...":"Save"),9,mo)])])],32)):x("",!0)]),_:1})])),(s(),H(we,{to:"body"},[w(Ce,{name:"fade"},{default:ie(()=>[Y.value?(s(),o("div",{key:0,class:"fixed inset-0 z-[200] flex items-center justify-center p-4",onKeydown:e[27]||(e[27]=xt(a=>Y.value=!1,["escape"]))},[t("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:e[22]||(e[22]=a=>Y.value=!1)}),t("div",{class:"relative w-full max-w-md bg-white dark:bg-gray-900 rounded-2xl shadow-2xl p-6",onClick:e[26]||(e[26]=te(()=>{},["stop"]))},[t("h3",fo,l(He.value?"Edit Catalog":"New Catalog"),1),t("div",ko,[t("div",null,[e[111]||(e[111]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Catalog Name",-1)),e[112]||(e[112]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"The name of your product catalog or store.",-1)),b(t("input",{"onUpdate:modelValue":e[23]||(e[23]=a=>O.value.title=a),type:"text",placeholder:"e.g. My Online Store",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,O.value.title]])]),t("div",null,[e[113]||(e[113]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Description",-1)),e[114]||(e[114]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"Describe what products or services this catalog contains.",-1)),b(t("textarea",{"onUpdate:modelValue":e[24]||(e[24]=a=>O.value.description=a),placeholder:"Tell customers what they'll find in this catalog...",rows:"4",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63] resize-none"},null,512),[[f,O.value.description]])])]),t("div",_o,[t("button",{onClick:e[25]||(e[25]=a=>Y.value=!1),class:"flex-1 py-2 rounded-xl border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300 text-sm font-medium"},"Cancel"),t("button",{onClick:ja,disabled:Be.value||!O.value.title,class:"flex-1 py-2 rounded-xl bg-[#026B63] hover:bg-[#025A54] text-white text-sm font-semibold disabled:opacity-40 transition-colors"},l(Be.value?"Saving...":"Save"),9,ho)])])],32)):x("",!0)]),_:1})])),(s(),H(we,{to:"body"},[w(Ce,{name:"fade"},{default:ie(()=>[X.value?(s(),o("div",{key:0,class:"fixed inset-0 z-[200] flex items-center justify-center p-4",onKeydown:e[51]||(e[51]=xt(a=>X.value=!1,["escape"]))},[t("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:e[28]||(e[28]=a=>X.value=!1)}),t("div",{class:"relative w-full max-w-lg max-h-[85vh] bg-white dark:bg-gray-900 rounded-2xl shadow-2xl overflow-hidden flex flex-col",onClick:e[50]||
2(e[50]=te(()=>{},["stop"]))},[e[154]||(e[154]=t("div",{class:"px-6 py-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0"},[t("h3",{class:"text-lg font-bold text-gray-900 dark:text-white"},"New Advertisement")],-1)),t("div",wo,[t("div",null,[e[116]||(e[116]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Campaign",-1)),e[117]||(e[117]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"The campaign this ad runs under. Its budget, dates and currency apply to this ad.",-1)),b(t("select",{"onUpdate:modelValue":e[29]||(e[29]=a=>d.value.campaign_id=a),class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},[e[115]||(e[115]=t("option",{value:""},"Select a campaign…",-1)),(s(!0),o(m,null,_(h.value,a=>(s(),o("option",{key:a.id,value:a.id},l(a.title)+" — "+l(D(a.total_budget_minor,a.currency))+" · "+l(Z(a)),9,Co))),128))],512),[[qe,d.value.campaign_id]]),se.value?(s(),o("p",So," Runs "+l(se.value.start_at?ke(se.value.start_at):"—")+" → "+l(se.value.end_at?ke(se.value.end_at):"ongoing")+" · budgets entered below are in "+l(se.value.currency||"USD"),1)):x("",!0)]),t("div",Ao,[t("div",null,[e[118]||(e[118]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Start date",-1)),e[119]||(e[119]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"Leave blank to start as soon as it's launched.",-1)),b(t("input",{"onUpdate:modelValue":e[30]||(e[30]=a=>d.value.ad_start_date=a),type:"date",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,d.value.ad_start_date]])]),t("div",null,[e[120]||(e[120]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"End date",-1)),e[121]||(e[121]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"Blank runs until the campaign ends.",-1)),b(t("input",{"onUpdate:modelValue":e[31]||(e[31]=a=>d.value.ad_end_date=a),type:"date",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,d.value.ad_end_date]])])]),t("div",null,[e[122]||(e[122]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Creative post",-1)),e[123]||(e[123]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},[F("The published post this ad promotes. "),t("strong",null,"Required to deliver"),F(" — an ad with no post never serves.")],-1)),t("div",Bo,[b(t("input",{"onUpdate:modelValue":e[32]||(e[32]=a=>d.value.post_code=a),type:"text",placeholder:"Pick a post, or paste its code",class:"flex-1 min-w-0 px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,d.value.post_code]]),t("button",{type:"button",onClick:ta,class:"shrink-0 px-3 py-2 rounded-xl text-xs font-semibold border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300 hover:border-[#026B63] hover:text-[#026B63] transition-colors whitespace-nowrap"}," Choose post ")]),d.value.post_title?(s(),o("p",Mo,"Selected: "+l(d.value.post_title),1)):x("",!0)]),t("div",null,[e[124]||(e[124]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Ad format",-1)),e[125]||(e[125]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"What kind of creative this is.",-1)),b(t("select",{"onUpdate:modelValue":e[33]||(e[33]=a=>d.value.ad_type=a),class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},[(s(),o(m,null,_(Zt,a=>t("option",{key:a,value:a},l(a),9,Do)),64))],512),[[qe,d.value.ad_type]])]),t("div",null,[e[126]||(e[126]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Ad Title",-1)),e[127]||(e[127]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"An internal name for this ad. Not shown to your audience.",-1)),b(t("input",{"onUpdate:modelValue":e[34]||(e[34]=a=>d.value.ad_title=a),type:"text",placeholder:"e.g. Spring Sale Banner",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,d.value.ad_title]])]),t("div",null,[e[128]||(e[128]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"}
2,"Headline",-1)),e[129]||(e[129]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"The main text your audience sees first. Keep it short and compelling (max 90 characters).",-1)),b(t("input",{"onUpdate:modelValue":e[35]||(e[35]=a=>d.value.ad_headline=a),type:"text",placeholder:"e.g. 50% Off Everything This Weekend",maxlength:"90",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,d.value.ad_headline]]),t("p",Lo,l((d.value.ad_headline||"").length)+"/90",1)]),t("div",null,[e[130]||(e[130]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Description",-1)),e[131]||(e[131]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"Supporting text that gives more detail about your offer or product.",-1)),b(t("textarea",{"onUpdate:modelValue":e[36]||(e[36]=a=>d.value.ad_description=a),placeholder:"Describe your ad in more detail...",rows:"3",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63] resize-none"},null,512),[[f,d.value.ad_description]])]),t("div",No,[t("div",null,[e[133]||(e[133]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Call to Action",-1)),e[134]||(e[134]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"The button label shown on your ad.",-1)),b(t("select",{"onUpdate:modelValue":e[37]||(e[37]=a=>d.value.ad_cta=a),class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},[e[132]||(e[132]=t("option",{value:""},"Select CTA",-1)),(s(),o(m,null,_(oa,a=>t("option",{key:a,value:a},l(a),9,Uo)),64))],512),[[qe,d.value.ad_cta]])]),t("div",null,[e[135]||(e[135]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"CTA Link",-1)),e[136]||(e[136]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"Where users go when they click the button.",-1)),b(t("input",{"onUpdate:modelValue":e[38]||(e[38]=a=>d.value.ad_cta_link=a),type:"url",placeholder:"https://...",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,d.value.ad_cta_link]])])]),t("div",null,[e[141]||(e[141]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Target Demographics",-1)),e[142]||(e[142]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-2"},"Define who should see your ad based on gender and age range.",-1)),t("div",To,[t("div",null,[e[138]||(e[138]=t("label",{class:"text-[10px] text-gray-500 dark:text-gray-400 mb-1 block"},"Gender",-1)),b(t("select",{"onUpdate:modelValue":e[39]||(e[39]=a=>d.value.ad_gender=a),class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},[...e[137]||(e[137]=[t("option",{value:"All"},"All",-1),t("option",{value:"Male"},"Male",-1),t("option",{value:"Female"},"Female",-1),t("option",{value:"Other"},"Other",-1)])],512),[[qe,d.value.ad_gender]])]),t("div",null,[e[139]||(e[139]=t("label",{class:"text-[10px] text-gray-500 dark:text-gray-400 mb-1 block"},"Min Age",-1)),b(t("input",{"onUpdate:modelValue":e[40]||(e[40]=a=>d.value.ad_min_age=a),type:"number",min:"13",max:"85",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},null,512),[[f,d.value.ad_min_age,void 0,{number:!0}]])]),t("div",null,[e[140]||(e[140]=t("label",{class:"text-[10px] text-gray-500 dark:text-gray-400 mb-1 block"},"Max Age",-1)),b(t("input",{"onUpdate:modelValue":e[41]||(e[41]=a=>d.value.ad_max_age=a),type:"number",min:"13",max:"85",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},null,512),[[f,d.value.ad_max_age,void 0,{number:!0}]])])])]),t("div",$o,[t("div",null,[e[143]||(e[143]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Ad Total Budget ($)",-1)),e[144]||(e[144]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"Maximum spend for this specific ad.",-1)),b(t("input",{"onUpdate:modelValue":e[42]||(e[42]=a=>d.value.ad_total_budget=a),type:"number",placeholder:"0",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},null,512),[[f,d.value.ad_total_budget,void 0,{number:!0}]])]),t("div",null,[e[145]||(e[145]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Ad Daily Budget ($)",-1)),e[146]||(e[146]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-1.5"},"Maximum daily spend for this ad.",-1)),b(t("input",{"onUpdate:modelValue":e[43]||(e[43]=a=>d.value.ad_daily_budget=a),type:"number",placeholder:"0",class:"w-full px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},null,512),[[f,d.value.ad_daily_budget,void 0,{number:!0}]])])]),t("div",Eo,[e[147]||(e[147]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Creatives",-1)),e[148]||(e[148]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-3"}," Each size fills a different placement. Supply only the ones you want to run — a placement with no creative simply isn't filled. ",-1)),t("div",jo,[(s(),o(m,null,_(la,a=>t("div",{key:a.field},[t("div",Po,[t("label",Vo,l(a.label),1),t("span",Ro,l(a.hint),1)]),t("div",Fo,[b(t("input",{"onUpdate:modelValue":i=>
2d.value[a.field]=i,type:"url",placeholder:a.placeholder,class:"flex-1 min-w-0 px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,8,Io),[[f,d.value[a.field]]]),t("input",{type:"file",class:"hidden",ref_for:!0,ref:i=>ht.value[a.field]=i,accept:a.kind==="image"?"image/*":a.kind==="video"?"video/*":"audio/*",onChange:i=>sa(i,a.field)},null,40,Oo),t("button",{type:"button",onClick:i=>ra(a.field),disabled:Ne.value===a.field,class:"shrink-0 px-3 py-2 rounded-xl text-xs font-semibold border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300 hover:border-[#026B63] hover:text-[#026B63] disabled:opacity-40 transition-colors whitespace-nowrap"},l(Ne.value===a.field?"Uploading…":"Upload"),9,qo),t("div",zo,[d.value[a.field]&&a.kind==="image"?(s(),o("img",{key:0,src:d.value[a.field],alt:"",class:"w-full h-full object-cover",onError:Te},null,40,Ko)):d.value[a.field]&&a.kind==="video"?(s(),o("video",{key:1,src:d.value[a.field],class:"w-full h-full object-cover",muted:"",playsinline:"",preload:"metadata"},null,8,Wo)):(s(),o("span",Ho,l(a.kind==="image"?"—":a.kind),1))]),d.value[a.field]?(s(),o("button",{key:0,type:"button",onClick:i=>d.value[a.field]="",class:"shrink-0 text-[10px] text-gray-400 hover:text-red-500 transition-colors"},"Clear",8,Go)):x("",!0)]),K.value[a.field]?(s(),o("p",Yo,l(K.value[a.field]),1)):x("",!0)])),64))])]),t("div",Xo,[e[150]||(e[150]=t("label",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300 mb-1 block"},"Location targeting",-1)),e[151]||(e[151]=t("p",{class:"text-[10px] text-gray-400 dark:text-gray-500 mb-3"}," Optional. With a radius set, the ad only serves to people whose profile location falls inside it — anyone whose location is unknown still sees it. ",-1)),b(t("input",{"onUpdate:modelValue":e[44]||(e[44]=a=>d.value.location_name=a),type:"text",placeholder:"Place name, e.g. Lagos",class:"w-full px-3 py-2 mb-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,d.value.location_name]]),t("div",Zo,[t("div",{ref_key:"mapEl",ref:Ge,class:"w-full h-56 bg-gray-100 dark:bg-gray-700"},null,512),De.value?x("",!0):(s(),o("div",Jo,[...e[149]||(e[149]=[t("p",{class:"text-[11px] text-gray-400"},"Loading map…",-1)])]))]),e[152]||(e[152]=t("p",{class:"text-[10px] text-gray-400 mb-2"},"Click the map to set the centre. Adjust the radius below to resize the circle.",-1)),t("div",Qo,[b(t("input",{"onUpdate:modelValue":e[45]||(e[45]=a=>d.value.ad_map_lat=a),type:"text",placeholder:"Latitude",class:"px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},null,512),[[f,d.value.ad_map_lat]]),b(t("input",{"onUpdate:modelValue":e[46]||(e[46]=a=>d.value.ad_map_lon=a),type:"text",placeholder:"Longitude",class:"px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},null,512),[[f,d.value.ad_map_lon]]),b(t("input",{"onUpdate:modelValue":e[47]||(e[47]=a=>d.value.ad_map_radius=a),type:"number",min:"1",placeholder:"Radius km",class:"px-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none"},null,512),[[f,d.value.ad_map_radius]])]),d.value.ad_map_lat||d.value.ad_map_radius?(s(),o("button",{key:0,type:"button",onClick:ea,class:"mt-2 text-[10px] text-gray-400 hover:text-red-500 transition-colors"},"Clear location targeting")):x("",!0)]),t("div",en,[t("label",tn,[b(t("input",{"onUpdate:modelValue":e[48]||(e[48]=a=>d.value.is_ad_running=a),type:"checkbox",class:"mt-0.5 accent-[#026B63]"},null,512),[[Wa,d.value.is_ad_running]]),e[153]||(e[153]=t("span",null,[t("span",{class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},"Launch immediately"),t("span",{class:"block text-[10px] text-gray-400 dark:text-gray-500"},"Leave unchecked to save as a draft. A draft never serves until you lau
2nch it.")],-1))])])]),t("div",an,[t("button",{onClick:e[49]||(e[49]=a=>X.value=!1),class:"flex-1 py-2 rounded-xl border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300 text-sm font-medium"},"Cancel"),t("button",{onClick:Pa,disabled:Me.value||!d.value.ad_title||!d.value.campaign_id,class:"flex-1 py-2 rounded-xl bg-[#026B63] hover:bg-[#025A54] text-white text-sm font-semibold disabled:opacity-40 transition-colors"},l(Me.value?"Saving...":"Save Ad"),9,rn)])])],32)):x("",!0)]),_:1})])),(s(),H(we,{to:"body"},[w(Ce,{name:"fade"},{default:ie(()=>[ye.value?(s(),o("div",sn,[t("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:e[52]||(e[52]=a=>ye.value=!1)}),t("div",ln,[t("div",on,[e[155]||(e[155]=t("h3",{class:"text-lg font-bold text-gray-900 dark:text-white"},"Choose a post",-1)),e[156]||(e[156]=t("p",{class:"text-[11px] text-gray-400 mt-0.5"},"Your published posts. The ad promotes whichever you pick.",-1)),t("div",nn,[w(V(gt),{class:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),b(t("input",{"onUpdate:modelValue":e[53]||(e[53]=a=>Ze.value=a),type:"text",placeholder:"Search your posts...",class:"w-full pl-9 pr-3 py-2 text-sm rounded-xl border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white focus:outline-none focus:ring-1 focus:ring-[#026B63]"},null,512),[[f,Ze.value]])])]),t("div",dn,[Xe.value?(s(),o("div",un,[w(Q,{width:60,height:60,"container-class":"mx-auto"})])):kt.value.length===0?(s(),o("div",gn,[...e[157]||(e[157]=[t("p",{class:"text-gray-400 text-sm"},"No posts found",-1)])])):(s(!0),o(m,{key:2},_(kt.value,a=>(s(),o("button",{type:"button",key:a.id,onClick:i=>aa(a),class:"w-full text-left flex items-start gap-3 p-2 rounded-xl hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors"},[t("div",xn,[_t(a)?(s(),o("img",{key:0,src:_t(a)??"",alt:"",class:"w-full h-full object-cover",loading:"lazy",onError:Te},null,40,pn)):(s(),H(V(Ht),{key:1,class:"w-5 h-5 text-gray-300 dark:text-gray-500"}))]),t("div",yn,[t("p",bn,l(a.title||"Untitled post"),1),t("p",vn,l((a.content||"").slice(0,120)),1),t("p",mn,l(a.unique_code),1)])],8,cn))),128))]),t("div",fn,[t("button",{onClick:e[54]||(e[54]=a=>ye.value=!1),class:"w-full py-2 rounded-xl border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300 text-sm font-medium"},"Cancel")])])])):x("",!0)]),_:1})])),(s(),H(we,{to:"body"},[w(Ce,{name:"fade"},{default:ie(()=>{var a,i,C,I,_e;return[L.value.open?(s(),o("div",{key:0,class:"fixed inset-0 z-[100] bg-black/90 flex items-center justify-center p-4",onClick:te(et,["self"])},[t("button",{type:"button",onClick:et,class:"absolute top-4 right-4 w-10 h-10 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center text-xl leading-none transition-colors"},"×"),L.value.items.length>1?(s(),o("button",{key:0,type:"button",onClick:e[55]||(e[55]=te(he=>$e(-1),["stop"])),class:"absolute left-4 w-10 h-10 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center transition-colors"},"‹")):x("",!0),L.value.items.length>1?(s(),o("button",{key:1,type:"button",onClick:e[56]||(e[56]=te(he=>$e(1),["stop"])),class:"absolute right-4 w-10 h-10 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center transition-colors"},"›")):x("",!0),t("div",{class:"max-w-5xl w-full flex flex-col items-center",onClick:e[57]||(e[57]=te(()=>{},["stop"]))},[((a=q.value)==null?void 0:a.kind)==="image"?(s(),o("img",{key:0,src:q.value.url,alt:q.value.label,class:"max-h-[78vh] max-w-full object-contain rounded-xl"},null,8,kn)):((i=q.value)==null?void 0:i.kind)==="video"?(s(),o("video",{key:1,src:q.value.url,class:"max-h-[78vh] max-w-full rounded-xl",controls:"",autoplay:"",playsinline:""},null,8,_n)):((C=q.value)==null?void 0:C.kind)==="audio"?(s(),o("audio",{key:2,src:q.value.url,class:"w-full max-w-md",controls:"",autoplay:""},null,8,hn)):x("",!0),t("div",wn,[t("p",Cn,l(L.value.adTitle),1),t("p",Sn,[F(l((I=q.value)==null?void 0:I.label)+" ",1),L.value.items.length>1?(s(),o("span",An," · "+l(L.value.index+1)+" of "+l(L.value.items.length),1)):x("",!0)]),t("a",{href:(_e=q.value)==null?void 0:_e.url,target:"_blank",rel:"noopener noreferrer",class:"inline-block mt-2 text-[11px] text-[#4FD1C5] hover:underline"},"Open original",8,Bn)])])])):x("",!0)]}),_:1})]))]}),_:1},8,["force-login"]))}}),En=Oa(Mn,[["__scopeId","data-v-dc3907b1"]]);export{En 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.