1import{_ as Re,a as He,b as Ee}from"./CCHJd4eH.js";import{_ as Oe}from"./C-f4-Qy5.js";import{_ as Ve,a as Ue,b as Be,c as Ie,d as Ne}from"./dxtsC-PC.js";import{_ as je}from"./Ct70UkVf.js";import{_ as Ke,a as We,b as Ye,c as qe,d as Je,e as Qe,f as Xe,g as Ze}from"./DpDpeJfo.js";import{e as et,l as _e,f as G,x as v,m as tt,c as b,a as i,b as a,p as C,g as V,h as o,w as l,M as nt,F as M,r as L,E as ne,o as u,d as c,t as x,n as q,i as le,A as lt}from"#entry";import{u as ye}from"./DgmzirMX.js";import{u as at}from"./BRJC_-Hn.js";import{c as we}from"./CyPiDsNh.js";import{T as ot}from"./DkiXgwtS.js";import{L as it}from"./NcoBN1k7.js";import{S as st}from"./Bow-ID3d.js";import"./CacwcQhS.js";import"./zNhCWlda.js";import"./DZCbKU22.js";import"./DsXan2nO.js";import"./eBjFu-IB.js";import"./DttKcmEo.js";import"./vSSdCmu6.js";import"./DQwCFQKB.js";import"./6e2DFz5k.js";import"./9gGBeuqq.js";const rt=we("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);const ct=we("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]),ut={class:"flex items-start justify-between gap-4 flex-wrap"},dt={class:"flex items-center gap-2 flex-wrap justify-end"},ft={class:"flex items-center gap-4 flex-wrap"},pt={class:"flex items-center gap-3"},vt={class:"flex items-center gap-3 flex-wrap"},gt=["onClick"],mt={class:"flex items-center gap-3 flex-wrap"},xt={key:1,class:"ml-2 text-xs text-[#ee088C] hidden lg:block"},bt={class:"border-collapse text-xs",style:{"min-width":"860px",width:"100%"}},_t=["title","onClick"],yt=["title","onClick"],wt={class:"flex items-center h-10"},kt={class:"font-normal text-zinc-500 tracking-normal normal-case"},zt=["onMousedown","onMouseenter","onMouseup"],Ct=["title"],St={key:0,class:"absolute -bottom-0.5 -right-0.5 text-[7px] font-bold bg-[#ee088C] text-white px-0.5 rounded-sm leading-none py-[1px]"},$t={class:"flex items-center gap-5 flex-wrap"},ht={class:"text-xs text-zinc-400"},Qt=et({__name:"tier-grid",async setup(Dt){let y,U;const D=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],w=[10,11,12,13,14,15,16,17,18,19,20,21,22,23,0],B=[{name:"Happy Hour",color:"#00ff7b",textClass:"text-black"},{name:"Off Peak",color:"#18B9ff",textClass:"text-black"},{name:"Peak",color:"#fbbf24",textClass:"text-black"},{name:"Super Peak",color:"#ef4444",textClass:"text-white"}],J=["Happy Hour","Off Peak","Peak","Super Peak"];function ke(t){return B.find(e=>e.name===t)?.color??"#333333"}function ze(t){return B.find(e=>e.name===t)?.textClass??"text-white"}function ae(t){return t==="Happy Hour"?"HH":t==="Off Peak"?"OP":t==="Peak"?"PK":t==="Super Peak"?"SP":t.slice(0,2).toUpperCase()}function Q(t){return t===0?"12am":t<12?`${t}am`:t===12?"12pm":`${t-12}pm`}function P(t){const e={};for(const s of w)e[String(s)]=t;return e}function Ce(){const t={};for(const e of w)t[String(e)]=e>=10&&e<=13?"Peak":"Super Peak";return t}const I={Monday:P("Peak"),Tuesday:P("Off Peak"),Wednesday:P("Happy Hour"),Thursday:P("Off Peak"),Friday:P("Off Peak"),Saturday:Ce(),Sunday:P("Peak")};function T(t){const e={};for(const s of D)e[s]={...t[s]};return e}const{data:oe}=([y,U]=_e(()=>ye("/api/admin/cms/locations","$yOawiTtEAt")),y=await y,U(),y),Se=G(()=>Array.isArray(oe.value)?oe.value:[]),{data:ie,refresh:se}=([y,U]=_e(()=>ye("/api/admin/cms/tier-grid","$EHr96V__n2")),y=await y,U(),y),X=G(()=>Array.isArray(ie.value)?ie.value:[]),{toast:S}=at(),_=v("global"),k=G(()=>_.value==="global"?X.value.find(t=>!t.location_id)??null:X.value.find(t=>String(t.location_id)===_.value)??null),N=G(()=>X.value.find(t=>!t.location_id)??null),Z=G(()=>_.value!=="global"),R=G(()=>!!k.value),d=v(T(I));function $(){const t={};for(const e of D){t[e]={};for(const s of w)t[e][String(s)]=[]}return t}function re(t){const e={};for(const s of D){e[s]={};for(const f of w)e[s][String(f)]=[...t[s]?.[String(f)]??[]]}return e}const r=v($());tt([k,_],()=>{k.value?.grid?(d.value=T(k.value.grid),r.value=k.value.flags?re(k.value.flags):$()):(d.value=T(I),r.value=$())},{immediate:!0});const z=v("Peak"),g=v(!1),m=v("21+"),j=v(!1),H=v(!1),E=v(null);function $e(t,e){j.value=!0,H.value=!1,E.value=`${t}-${e}`}function he(t,e){if(!j.value)return;if(`${t}-${e}`!==E.value){if(!H.value&&(H.value=!0,E.value)){const[f,h]=E.value.split("-");if(g.value){const K=r.value[f][h];K.includes(m.value)||(r.value[f][h]=[...K,m.value])}else d.value[f][h]=z.value}if(g.value){const f=r.value[t][String(e)];f.includes(m.value)||(r.value[t][String(e)]=[...f,m.value])}else d.value[t][String(e)]=z.value}}function ee(t,e){if(j.value&&!H.value&&t!==void 0&&e!==void 0)if(g.value){const s=r.value[t][String(e)];s.includes(m.value)?r.value[t][String(e)]=s.filter(f=>f!==m.value):r.value[t][String(e)]=[...s,m.value]}else{const s=d.value[t][String(e)],f=J.indexOf(s),h=J[(f+1)%J.length];d.value[t][String(e)]=h}j.value=!1,H.value=!1,E.value=null}function De(t){if(g.value)for(const e of w){const s=r.value[t][String(e)];s.includes(m.value)||(r.value[t][String(e)]=[...s,m.value])}else for(const e of w)d.value[t][String(e)]=z.value}function Pe(t){if(g.value)for(const e of D){const s=r.value[e][String(t)];s.includes(m.value)||(r.value[e][String(t)]=[...s,m.value])}else for(const e of D)d.value[e][String(t)]=z.value}const O=v(!1);async function Te(){O.value=!0;try{R.value?await $fetch(`/api/admin/cms/tier-grid/${k.value.id}`,{method:"PUT",body:{grid:d.value,flags:r.value}}):await $fetch("/api/admin/cms/tier-grid",{method:"POST",body:{location_id:_.value==="global"?null:_.value,grid:d.value,flags:r.value}}),await se(),S({title:"Saved",description:"Tier grid has been saved successfully."})}catch(t){S({title:"Save Failed",description:t.data?.message||"Failed to save tier grid",variant:"destructive"})}finally{O.value=!1}}const A=v(!1),F=v(!1);function Ae(){d.value=T(I),r.value=$(),A.value=!1,S({title:"Reset",description:"Grid reset to default values. Save to persist."})}function Fe(){N.value?.grid?(d.value=T(N.value.grid),r.value=N.value.flags?re(N.value.flags):$(),S({title:"Copied",description:"Global grid copied. Save to persist."})):(d.value=T(I),r.value=$(),S({title:"Copied",description:"No global grid saved yet â using hardcoded default."}))}async function Ge(){if(R.value)try{await $fetch(`/api/admin/cms/tier-grid/${k.value.id}`,{method:"DELETE"}),await se(),S({title:"Deleted",description:"Location override deleted. Grid now falls back to global default."})}catch(t){S({title:"Delete Failed",description:t.data?.message||"Failed to delete grid override",variant:"destructive"})}finally{F.value=!1}}return(t,e)=>{const s=Re,f=Oe,h=Be,K=Ue,ce=Ne,Me=Ie,Le=Ve,te=je,W=Ee,Y=He,ue=qe,de=Je,fe=Ye,pe=Xe,ve=Ze,ge=Qe,me=We,xe=Ke;return u(),b("div",{class:"space-y-6 select-none",onMouseup:ee,onMouseleave:ee},[i("div",ut,[e[12]||(e[12]=i("div",null,[i("h1",{class:"text-3xl font-bold text-white tracking-[1.5px] uppercase"},"Tier Grid"),i("p",{class:"text-zinc-400 mt-1"},"Map each day à hour slot to a pricing tier. Click a cell to cycle tiers, or select a paint tier and drag across cells.")],-1)),i("div",dt,[o(Z)?(u(),C(s,{key:0,variant:"outline",size:"sm",class:"border-zinc-700 text-zinc-300 hover:text-white",onClick:Fe},{default:l(()=>[a(o(rt),{class:"mr-1.5 h-4 w-4"}),e[9]||(e[9]=c(" Copy from Global ",-1))]),_:1})):V("",!0),a(s,{variant:"outline",size:"sm",class:"border-zinc-700 text-zinc-300 hover:text-white",onClick:e[0]||(e[0]=n=>A.value=!0)},{default:l(()=>[a(o(ct),{class:"mr-1.5 h-4 w-4"}),e[10]||(e[10]=c(" Reset to Default ",-1))]),_:1}),o(Z)&&o(R)?(u(),C(s,{key:1,variant:"outline",size:"sm",class:"border-red-800 text-red-400 hover:text-red-300 hover:border-red-600",onClick:e[1]||(e[1]=n=>F.value=!0)},{default:l(()=>[a(o(ot),{class:"mr-1.5 h-4 w-4"}),e[11]||(e[11]=c(" Delete Override ",-1))]),_:1})):V("",!0),a(s,{size:"sm",disabled:o(O),onClick:Te},{default:l(()=>[o(O)?(u(),C(o(it),{key:0,class:"mr-1.5 h-4 w-4 animate-spin"})):(u(),C(o(st),{key:1,class:"mr-1.5 h-4 w-4"})),c(" "+x(o(O)?"Saving...":"Save Grid"),1)]),_:1},8,["disabled"])])]),a(Y,{class:"bg-zinc-900 border-zinc-800"},{default:l(()=>[a(W,{class:"p-4"},{default:l(()=>[i("div",ft,[i("div",pt,[a(f,{class:"text-zinc-400 whitespace-nowrap text-sm"},{default:l(()=>[...e[13]||(e[13]=[c("Location:",-1)])]),_:1}),a(Le,{modelValue:o(_),"onUpdate:modelValue":e[2]||(e[2]=n=>ne(_)?_.value=n:null)},{default:l(()=>[a(K,{class:"w-56 bg-zinc-800 border-zinc-700 text-white"},{default:l(()=>[a(h)]),_:1}),a(Me,{class:"bg-zinc-900 border-zinc-700"},{default:l(()=>[a(ce,{value:"global",class:"text-white focus:bg-zinc-800"},{default:l(()=>[...e[14]||(e[14]=[c(" Global (Default) ",-1)])]),_:1}),(u(!0),b(M,null,L(o(Se),n=>(u(),C(ce,{key:n.id,value:String(n.id),class:"text-white focus:bg-zinc-800"},{default:l(()=>[c(x(n.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])]),o(R)?(u(),C(te,{key:0,variant:"outline",class:"border-green-700 text-green-400"},{default:l(()=>[...e[15]||(e[15]=[c(" Saved override ",-1)])]),_:1})):o(Z)?(u(),C(te,{key:1,variant:"outline",class:"border-zinc-600 text-zinc-500"},{default:l(()=>[...e[16]||(e[16]=[c(" Using global default (no override saved) ",-1)])]),_:1})):(u(),C(te,{key:2,variant:"outline",class:"border-zinc-600 text-zinc-500"},{default:l(()=>[c(x(o(R)?"Saved":"No global grid saved yet"),1)]),_:1}))])]),_:1})]),_:1}),a(Y,{class:"bg-zinc-900 border-zinc-800"},{default:l(()=>[a(W,{class:"p-4"},{default:l(()=>[i("div",vt,[e[17]||(e[17]=i("span",{class:"text-xs text-zinc-400 font-semibold uppercase tracking-wider whitespace-nowrap"}," Paint tier: ",-1)),(u(),b(M,null,L(B,n=>i("button",{key:n.name,type:"button",style:le({backgroundColor:n.color}),class:q(["px-4 py-1.5 rounded-md font-bold text-sm transition-all",n.textClass,o(z)===n.name?"ring-2 ring-white ring-offset-2 ring-offset-zinc-900 scale-105 shadow-lg":"opacity-60 hover:opacity-90 hover:scale-105"]),onClick:p=>z.value=n.name},x(n.name),15,gt)),64)),e[18]||(e[18]=i("span",{class:"ml-2 text-xs text-zinc-600 hidden lg:block"}," Click cells to paint ⢠Drag to paint multiple ⢠Click day label to fill entire row ⢠Click hour label to fill entire column ",-1))])]),_:1})]),_:1}),a(Y,{class:"bg-zinc-900 border-zinc-800"},{default:l(()=>[a(W,{class:"p-4"},{default:l(()=>[i("div",mt,[e[19]||(e[19]=i("span",{class:"text-xs text-zinc-400 font-semibold uppercase tracking-wider whitespace-nowrap"}," Flag overlay: ",-1)),i("button",{type:"button",class:q(["px-4 py-1.5 rounded-md font-bold text-sm transition-all",[o(g)?"bg-[#ee088C] text-white ring-2 ring-white ring-offset-2 ring-offset-zinc-900 scale-105 shadow-lg":"bg-zinc-700 text-zinc-300 hover:bg-zinc-600 hover:scale-105"]]),onClick:e[3]||(e[3]=n=>g.value=!o(g))},x(o(g)?"Painting 21+":"21+ Flag"),3),o(g)?(u(),b("button",{key:0,t
1ype:"button",class:"px-3 py-1.5 rounded-md text-sm bg-zinc-800 text-red-400 hover:bg-red-900/30 border border-red-800 transition-all",onClick:e[4]||(e[4]=n=>r.value=$())}," Clear All Flags ")):V("",!0),o(g)?(u(),b("span",xt," Click cells to toggle 21+ flag ⢠Drag to add ⢠Click day/hour labels to fill row/column ")):V("",!0)])]),_:1})]),_:1}),a(Y,{class:"bg-zinc-900 border-zinc-800 overflow-hidden"},{default:l(()=>[a(W,{class:"p-0 overflow-x-auto"},{default:l(()=>[i("table",bt,[i("thead",null,[i("tr",null,[e[20]||(e[20]=i("th",{class:"bg-zinc-800 border-b border-r border-zinc-700 px-3 py-2.5 text-left text-zinc-500 font-medium text-xs w-28 sticky left-0 z-10"}," Day / Hour ",-1)),(u(),b(M,null,L(w,n=>i("th",{key:n,class:"bg-zinc-800 border-b border-r border-zinc-700 px-1 py-2.5 text-center text-zinc-400 font-medium cursor-pointer hover:bg-zinc-700 transition-colors whitespace-nowrap text-xs",title:`Fill entire column ${Q(n)} with ${o(z)}`,onClick:p=>Pe(n)},x(Q(n)),9,_t)),64))])]),i("tbody",null,[(u(),b(M,null,L(D,n=>i("tr",{key:n,class:"border-b border-zinc-800 last:border-0"},[i("td",{class:"bg-zinc-800/60 border-r border-zinc-700 px-3 py-0 font-bold text-zinc-200 whitespace-nowrap cursor-pointer hover:bg-zinc-700/70 transition-colors sticky left-0 z-10 text-xs tracking-wider uppercase",title:`Fill entire ${n} row with ${o(z)}`,onClick:p=>De(n)},[i("div",wt,[c(x(n.slice(0,3)),1),i("span",kt,x(n.slice(3)),1)])],8,yt),(u(),b(M,null,L(w,p=>i("td",{key:p,class:"border-r border-zinc-800 last:border-0 p-0.5",onMousedown:lt(be=>$e(n,p),["prevent"]),onMouseenter:be=>he(n,p),onMouseup:be=>ee(n,p)},[i("div",{class:q(["h-9 flex items-center justify-center font-black cursor-crosshair rounded transition-opacity hover:opacity-80 active:opacity-60 text-[11px] tracking-wide relative",ze(o(d)[n][String(p)])]),style:le({backgroundColor:ke(o(d)[n][String(p)])}),title:`${n} ${Q(p)}: ${o(d)[n][String(p)]}${o(r)[n]?.[String(p)]?.length?" ["+o(r)[n][String(p)].join(", ")+"]":""} â click to cycle, drag to paint`},[c(x(ae(o(d)[n][String(p)]))+" ",1),o(r)[n]?.[String(p)]?.includes("21+")?(u(),b("span",St,"21+")):V("",!0)],14,Ct)],40,zt)),64))])),64))])])]),_:1})]),_:1}),i("div",$t,[e[21]||(e[21]=i("span",{class:"text-xs text-zinc-500 uppercase tracking-wider"},"Legend:",-1)),(u(),b(M,null,L(B,n=>i("div",{key:n.name,class:"flex items-center gap-1.5"},[i("span",{class:q(["inline-flex w-7 h-5 rounded items-center justify-center text-[10px] font-black",n.textClass]),style:le({backgroundColor:n.color})},x(ae(n.name)),7),i("span",ht,x(n.name),1)])),64)),e[22]||(e[22]=nt('<div class="flex items-center gap-1.5 ml-4 pl-4 border-l border-zinc-700"><span class="text-xs text-zinc-500 uppercase tracking-wider mr-1">Flags:</span><span class="inline-flex items-center gap-1"><span class="inline-flex px-1 py-0.5 rounded-sm bg-[#ee088C] text-white text-[9px] font-bold">21+</span><span class="text-xs text-zinc-400">Age Restriction</span></span></div>',1))]),a(xe,{open:o(A),"onUpdate:open":e[6]||(e[6]=n=>ne(A)?A.value=n:null)},{default:l(()=>[a(me,{class:"bg-zinc-900 border-zinc-800 text-white"},{default:l(()=>[a(fe,null,{default:l(()=>[a(ue,null,{default:l(()=>[...e[23]||(e[23]=[c("Reset grid to default?",-1)])]),_:1}),a(de,{class:"text-zinc-400"},{default:l(()=>[...e[24]||(e[24]=[c(' This will overwrite your current edits with the hardcoded default grid. The change is not saved until you click "Save Grid". ',-1)])]),_:1})]),_:1}),a(ge,null,{default:l(()=>[a(pe,{class:"border-zinc-700",onClick:e[5]||(e[5]=n=>A.value=!1)},{default:l(()=>[...e[25]||(e[25]=[c(" Cancel ",-1)])]),_:1}),a(ve,{onClick:Ae},{default:l(()=>[...e[26]||(e[26]=[c(" Reset ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]),a(xe,{open:o(F),"onUpdate:open":e[8]||(e[8]=n=>ne(F)?F.value=n:null)},{default:l(()=>[a(me,{class:"bg-zinc-900 border-zinc-800 text-white"},{default:l(()=>[a(fe,null,{default:l(()=>[a(ue,null,{default:l(()=>[...e[27]||(e[27]=[c("Delete location override?",-1)])]),_:1}),a(de,{class:"text-zinc-400"},{default:l(()=>[...e[28]||(e[28]=[c(" This will remove the saved tier grid for this location. It will fall back to the global default grid. This action cannot be undone. ",-1)])]),_:1})]),_:1}),a(ge,null,{default:l(()=>[a(pe,{class:"border-zinc-700",onClick:e[7]||(e[7]=n=>F.value=!1)},{default:l(()=>[...e[29]||(e[29]=[c(" Cancel ",-1)])]),_:1}),a(ve,{class:"bg-red-600 hover:bg-red-700 text-white",onClick:Ge},{default:l(()=>[...e[30]||(e[30]=[c(" Delete Override ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])],32)}}});
1export{Qt 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.