PageSourceSearch

https://atlanta.tickets.beatthebomb.com/_nuxt/CQGAXYif.js

js beatthebomb.com collected 2026-09-26 03:27:34 UTC 7,150 bytes, 1 lines download raw bytes

1import{_ as M}from"./C-f4-Qy5.js";import{_ as Q,a as G,b as H,c as J,d as K}from"./dxtsC-PC.js";import{a as W,_ as X,b as Y}from"./CCHJd4eH.js";import{_ as Z}from"./RLLgkEzh.js";import{_ as ee}from"./CiF7Basw.js";import{u as te}from"./BRJC_-Hn.js";import{u as se}from"./DgmzirMX.js";import{P as oe}from"./w-DR3gVW.js";import{T as ae}from"./DkiXgwtS.js";import{S as le}from"./Bow-ID3d.js";import{e as ne,l as ie,f as F,x,m as re,c as u,a,b as t,g as A,w as s,h as n,F as g,v as ce,o as i,d as m,E as de,r as C,p as v,t as _}from"#entry";import"./zNhCWlda.js";import"./CacwcQhS.js";import"./DZCbKU22.js";import"./DsXan2nO.js";import"./eBjFu-IB.js";import"./DttKcmEo.js";import"./vSSdCmu6.js";import"./DQwCFQKB.js";import"./DjkoA8ho.js";import"./9gGBeuqq.js";import"./CyPiDsNh.js";const ue={class:"space-y-6"},me={class:"flex items-end gap-4"},pe={class:"flex-1 space-y-1.5"},_e={class:"text-zinc-500 text-xs ml-1"},fe={key:0,class:"text-xs text-amber-400 mt-1"},ve={key:0,class:"flex justify-center py-12"},ye={key:1,class:"space-y-4"},be={class:"border-b border-zinc-800 px-4 py-3 flex items-center justify-between"},he={class:"text-sm font-medium text-zinc-300"},xe={class:"text-cyan-400 font-mono"},ge={key:1,class:"divide-y divide-zinc-800"},we={class:"col-span-1 text-center text-zinc-500 text-sm pb-1"},ze={class:"col-span-4 space-y-1"},Ve={class:"col-span-2 space-y-1"},ke={class:"col-span-3 space-y-1"},Ce={class:"col-span-1 space-y-1"},Se={class:"col-span-1 flex justify-center"},$e={class:"flex justify-end"},Ye=ne({__name:"bundles",async setup(Pe){let y,S;const{toast:b}=te(),{data:$}=([y,S]=ie(()=>se("/api/admin/cms/products","$9OhxPkh4Cz")),y=await y,S(),y),P=F(()=>($.value??[]).filter(d=>d.category==="bundle")),D=F(()=>($.value??[]).filter(d=>d.category!=="bundle")),p=x(""),r=x([]),w=x(!1),f=x(!1);re(p,async d=>{if(!d){r.value=[];return}w.value=!0;try{const e=await $fetch(`/api/admin/cms/bundles?bundle_slug=${d}`);r.value=e.map(o=>({...o}))}catch{r.value=[],b({title:"Error",description:"Failed to load bundle components",variant:"destructive"})}finally{w.value=!1}});function I(){r.value.push({component_product_slug:"",quantity:1,roller_product_id:"",price_override:null,display_order:r.value.length})}function L(d){r.value.splice(d,1),r.value.forEach((e,o)=>{e.display_order=o})}async function R(){if(!p.value)return;if(r.value.some(e=>!e.component_product_slug)){b({title:"Validation error",description:"All components must have a product selected.",variant:"destructive"});return}f.value=!0;try{await $fetch("/api/admin/cms/bundles",{method:"POST",body:{bundle_slug:p.value,components:r.value.map((o,h)=>({component_product_slug:o.component_product_slug,quantity:Number(o.quantity)||1,roller_product_id:o.roller_product_id||null,price_override:o.price_override!=null&&o.price_override!==""?Number(o.price_override):null,display_order:h}))}}),b({title:"Saved",description:"Bundle components updated."});const e=await $fetch(`/api/admin/cms/bundles?bundle_slug=${p.value}`);r.value=e.map(o=>({...o}))}catch(e){b({title:"Error",description:e.data?.message||"Failed to save bundle",variant:"destructive"})}finally{f.value=!1}}return(d,e)=>{const o=M,h=H,B=G,U=K,N=J,E=Q,T=Y,j=W,q=Z,z=X,O=ce("EmptyState"),V=ee;return i(),u("div",ue,[e[8]||(e[8]=a("div",{class:"flex items-center justify-between"},[a("div",null,[a("h1",{class:"text-3xl font-bold text-white"},"Bundle Components"),a("p",{class:"text-zinc-400 mt-1"},"Define which products make up each bundle (2-pack, 3-pack, etc.)")])],-1)),t(j,{class:"bg-zinc-900 border-zinc-800"},{default:s(()=>[t(T,{class:"p-4"},{default:s(()=>[a("div",me,[a("div",pe,[t(o,null,{default:s(()=>[...e[1]||(e[1]=[m("Select Bundle Product",-1)])]),_:1}),t(E,{modelValue:n(p),"onUpdate:modelValue":e[0]||(e[0]=l=>de(p)?p.value=l:null)},{default:s(()=>[t(B,{class:"bg-zinc-800 border-zinc-700 text-white max-w-sm"},{default:s(()=>[t(h,{placeholder:"Choose a bundle..."})]),_:1}),t(N,{class:"bg-zinc-800 border-zinc-700"},{default:s(()=>[(i(!0),u(g,null,C(n(P),l=>(i(),v(U,{key:l.slug,value:l.slug,class:"text-white"},{default:s(()=>[m(_(l.display_name)+" ",1),a("span",_e,"("+_(l.slug)+")",1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"]),n(P).length?A("",!0):(i(),u("p",fe,' No bundle products found. Create a product with category "bundle" first. '))])])]),_:1})]),_:1}),n(p)?(i(),u(g,{key:0},[n(w)?(i(),u("div",ve,[t(q,{class:"h-6 w-6 text-cyan-400"})])):(i(),u("div",ye,[t(j,{class:"bg-zinc-900 border-zinc-800"},{default:s(()=>[t(T,{class:"p-0"},{default:s(()=>[a("div",be,[a("span",he,[e[2]||(e[2]=m(" Components for ",-1)),a("span",xe,_(n(p)),1)]),t(z,{variant:"ghost",size:"sm",onClick:I,class:"text-cyan-400 hover:text-cyan-300"},{default:s(()=>[t(n(oe),{class:"mr-1 h-4 w-4"}),e[3]||(e[3]=m(" Add Component ",-1))]),_:1})]),n(r).length?(i(),u("div",ge,[(i(!0),u(g,null,C(n(r),(l,k)=>(i(),u("div",{key:k,class:"p-4 grid grid-cols-12 gap-3 items-end"},[a("div",we,"# "+_(k+1),1),a("div",ze,[t(o,{class:"text-xs"},{default:s(()=>[...e[4]||(e[4]=[m("Product",-1)])]),_:1}),t(E,{modelValue:l.component_product_slug,"onUpdate:modelValue":c=>l.component_product_slug=c},{default:s(()=>[t(B,{class:"bg-zinc-800 border-zinc-700 text-white h-9 text-sm"},{default:s(()=>[t(h,{placeholder:"Select product..."})]),_:1}),t(N,{class:"bg-zinc-800 border-zinc-700"},{default:s(()=>[(i(!0),u(g,null,C(n(D),c=>(i(),v(U,{key:c.slug,value:c.slug,class:"text-white text-sm"},{default:s(()=>[m(_(c.display_name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"])]),a("div",Ve,[t(o,{class:"text-xs"},{default:s(()=>[...e[5]||(e[5]=[m("Quantity",-1)])]),_:1}),t(V,{modelValue:l.quantity,"onUpdate:modelValue":c=>l.quantity=c,modelModifiers:{number:!0},type:"number",min:"1",class:"bg-zinc-800 border-zinc-700 text-white h-9 text-sm"},null,8,["modelValue","onUpdate:modelValue"])]),a("div",ke,[t(o,{class:"text-xs"},{default:s(()=>[...e[6]||(e[6]=[m("Roller Product ID",-1)])]),_:1}),t(V,{modelValue:l.roller_product_id,"onUpdate:modelValue":c=>l.roller_product_id=c,placeholder:"optional",class:"bg-zinc-800 border-zinc-700 text-white h-9 text-sm font-mono"},null,8,["modelValue","onUpdate:modelValue"])]),a("div",Ce,[t(o,{class:"text-xs"},{default:s(()=>[...e[7]||(e[7]=[m("Price $",-1)])]),_:1}),t(V,{modelValue:l.price_override,"onUpdate:modelValue":c=>l.price_override=c,type:"number",step:"0.01",placeholder:"—",class:"bg-zinc-800 border-zinc-700 text-white h-9 text-sm"},null,8,["modelValue","onUpdate:modelValue"])]),a("div",Se,[t(z,{variant:"ghost",size:"icon",onClick:c=>L(k),class:"text-red-400 hover:text-red-300 hover:bg-red-950/30","aria-label":"Remove c
1omponent"},{default:s(()=>[t(n(ae),{class:"h-4 w-4"})]),_:1},8,["onClick"])])]))),128))])):(i(),v(O,{key:0,title:"No components",description:"This bundle has no components yet. Add one below.",class:"py-10"}))]),_:1})]),_:1}),a("div",$e,[t(z,{onClick:R,disabled:n(f)},{default:s(()=>[n(f)?(i(),v(q,{key:0,class:"mr-2 h-4 w-4"})):(i(),v(n(le),{key:1,class:"mr-2 h-4 w-4"})),m(" "+_(n(f)?"Saving...":"Save Bundle"),1)]),_:1},8,["disabled"])])]))],64)):A("",!0)])}}});export{Ye 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.