PageSourceSearch

https://bacctrack-7ha7hyw7.manus.space/assets/AdminBannersPage-BY7iNeJc.js

js bacctrack-7ha7hyw7.manus.space collected 2026-10-03 05:01:57 UTC 39,065 bytes, 1 lines download raw bytes

1import{t as P,b as i,r,j as e,g as v,E as de,G as oe,X as $}from"./index-C3Qps0S4.js";import{C as b,a as j}from"./card-DtXeaqs_.js";import{B as l}from"./button-xdpkFraK.js";import{I as c}from"./input-Dj8udylZ.js";import{T as me}from"./textarea-DrSHHi7w.js";import{D as ge,b as xe,c as pe,d as he}from"./dialog-BY1FISUw.js";import{B as I}from"./badge-DBCec9J8.js";import{S as O,a as M,b as E,c as R,d as x}from"./select-C8zBw1Za.js";import{P as ue}from"./plus-BLlLQSZn.js";import{I as G}from"./image-BchddWpn.js";import{M as Pe}from"./mouse-pointer-click-CvZ_JWhU.js";import{C as be}from"./calendar-B4gE8JM6.js";import{A as je}from"./arrow-up-CfgqzYEd.js";import{S as Be}from"./square-pen-B5oOKm1w.js";import{C as Ae}from"./copy-COsMcIJe.js";import{T as ve}from"./trash-2-DOBLe4Vk.js";import{M as V}from"./monitor-75UmjWyb.js";import{U as F}from"./upload-_gXBE_kq.js";import{S as H}from"./smartphone-B6eKunU3.js";import"./index-Jol-UBUv.js";import"./index-BKUanX19.js";import"./index-Dr02_Kwf.js";import"./index-BdQq_4o_.js";import"./index-BBBp6CNx.js";import"./chevron-up-F-ZIdiqt.js";const L=[{value:"promotion",label:"โปรโมชั่น",emoji:"🎁"},{value:"announcement",label:"ประกาศ",emoji:"📢"},{value:"event",label:"กิจกรรม",emoji:"🏆"},{value:"vip",label:"VIP",emoji:"💎"},{value:"lucky_draw",label:"สุ่มรางวัล",emoji:"🎰"}],W={high:{label:"สูง",color:"bg-red-600/20 text-red-400 border-red-600/30"},medium:{label:"ปานกลาง",color:"bg-yellow-600/20 text-yellow-400 border-yellow-600/30"},low:{label:"ต่ำ",color:"bg-zinc-600/20 text-zinc-400 border-zinc-600/30"}},_={name:"",title:"",subtitle:"",description:"",imageUrl:"",mobileImageUrl:"",linkUrl:"",buttonText:"",buttonColor:"#F59E0B",bannerType:"promotion",priority:"medium",textPosition:"left",textColor:"#FFFFFF",overlayColor:"#000000",overlayOpacity:"0.40",displayOrder:"0",startDate:"",endDate:""};function Ye({placement:N="home"}){const{data:p,isLoading:J,refetch:f}=P.admin.banners.useQuery({placement:N}),S=P.admin.createBanner.useMutation({onSuccess:()=>{f(),u(!1),i.success("สร้างแบนเนอร์สำเร็จ")},onError:a=>{i.error(`สร้างไม่สำเร็จ: ${a.message}`)}}),h=P.admin.updateBanner.useMutation({onSuccess:()=>{f(),u(!1),i.success("อัปเดตสำเร็จ")},onError:a=>{i.error(`อัปเดตไม่สำเร็จ: ${a.message}`)}}),Y=P.admin.deleteBanner.useMutation({onSuccess:()=>{f(),i.success("ลบสำเร็จ")},onError:a=>{i.error(`ลบไม่สำเร็จ: ${a.message}`)}}),q=P.admin.duplicateBanner.useMutation({onSuccess:()=>{f(),i.success("คัดลอกสำเร็จ")},onError:a=>{i.error(`คัดลอกไม่สำเร็จ: ${a.message}`)}}),Q=P.admin.uploadBannerImage.useMutation({onError:a=>{i.error(`อัปโหลดไม่สำเร็จ: ${a.message}`)}}),[X,u]=r.useState(!1),[d,y]=r.useState(null),[s,t]=r.useState(_),[o,z]=r.useState("basic"),[C,K]=r.useState(!1),[w,Z]=r.useState(!1),k=r.useRef(null),U=r.useRef(null),ee=()=>{t(_),y(null)},D=async(a,n)=>{if(a.size>10*1024*1024){i.error("ไฟล์ใหญ่เกิน 10MB");return}if(!a.type.startsWith("image/")&&!a.name.match(/\.(jpg|jpeg|png|gif|webp|svg|bmp|tiff|avif|heic|heif|ico)$/i)){i.error("กรุณาเลือกไฟล์รูปภาพ");return}const B=n==="desktop"?K:Z;B(!0);try{const m=new FileReader,T=await new Promise((g,ce)=>{m.onload=()=>{const re=m.result;g(re.split(",")[1])},m.onerror=ce,m.readAsDataURL(a)}),A=await Q.mutateAsync({base64:T,mimeType:a.type,bannerId:d??void 0,field:n});A.url&&(t(n==="desktop"?g=>({...g,imageUrl:A.url}):g=>({...g,mobileImageUrl:A.url})),i.success("อัปโหลดรูปภาพสำเร็จ"))}catch{}finally{B(!1)}},ae=()=>{if(!d&&!s.title.trim()){i.error("กรุณากรอกหัวข้อ (Headline) ในแท็บ 'เนื้อหา'"),z("content");return}if(!d&&!s.name.trim()&&!s.title.trim()){i.error("กรุณากรอกชื่อแบนเนอร์ในแท็บ 'ข้อมูลหลัก'"),z("basic");return}d?h.mutate({id:d,name:s.name||void 0,title:s.title||void 0,subtitle:s.subtitle||null,description:s.description||null,imageUrl:s.imageUrl||null,mobileImageUrl:s.mobileImageUrl||null,linkUrl:s.linkUrl||null,buttonText:s.buttonText||null,buttonColor:s.buttonColor||null,bannerType:s.bannerType,priority:s.priority,textPosition:s.textPosition,textColor:s.textColor||null,overlayColor:s.overlayColor||null,overlayOpacity:s.overlayOpacity||null,displayOrder:parseInt(s.displayOrder)||0,startDate:s.startDate||null,endD
1ate:s.endDate||null}):S.mutate({name:s.name.trim()||s.title.trim(),title:s.title.trim(),subtitle:s.subtitle||void 0,description:s.description||void 0,imageUrl:s.imageUrl||void 0,mobileImageUrl:s.mobileImageUrl||void 0,linkUrl:s.linkUrl||void 0,buttonText:s.buttonText||void 0,buttonColor:s.buttonColor||void 0,bannerType:s.bannerType,placement:N,priority:s.priority,textPosition:s.textPosition,textColor:s.textColor||void 0,overlayColor:s.overlayColor||void 0,overlayOpacity:s.overlayOpacity||void 0,displayOrder:parseInt(s.displayOrder)||0,startDate:s.startDate||void 0,endDate:s.endDate||void 0})},se=a=>{t({name:a.name||"",title:a.title||"",subtitle:a.subtitle||"",description:a.description||"",imageUrl:a.imageUrl||"",mobileImageUrl:a.mobileImageUrl||"",linkUrl:a.linkUrl||"",buttonText:a.buttonText||"",buttonColor:a.buttonColor||"#F59E0B",bannerType:a.bannerType||"promotion",priority:a.priority||"medium",textPosition:a.textPosition||"left",textColor:a.textColor||"#FFFFFF",overlayColor:a.overlayColor||"#000000",overlayOpacity:a.overlayOpacity||"0.40",displayOrder:String(a.displayOrder||0),startDate:a.startDate?new Date(a.startDate).toISOString().slice(0,16):"",endDate:a.endDate?new Date(a.endDate).toISOString().slice(0,16):""}),y(a.id),z("basic"),u(!0)},ne=p?.reduce((a,n)=>a+(n.views||0),0)||0,te=p?.reduce((a,n)=>a+(n.clicks||0),0)||0,ie=p?.filter(a=>a.isActive===1).length||0,le=()=>{const a=s.textPosition||"left",n=s.textColor||"#FFFFFF",B=s.overlayColor||"#000000",m=parseFloat(s.overlayOpacity||"0.4"),T=s.buttonColor||"#F59E0B",A=a==="center"?"items-center text-center":a==="right"?"items-end text-right":"items-start text-left",g=a==="center"?"mx-auto":a==="right"?"ml-auto":"mr-auto";return e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:183",className:"space-y-3",children:[e.jsxs("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:184",className:"text-xs text-zinc-400 flex items-center gap-1",children:[e.jsx(V,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:184",className:"w-3 h-3"})," ตัวอย่าง Desktop"]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:185",className:"relative w-full overflow-hidden rounded-lg border border-zinc-700",style:{aspectRatio:"21/9"},children:[s.imageUrl?e.jsx("img",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:187",src:v(s.imageUrl),alt:"Preview",className:"absolute inset-0 w-full h-full object-cover"}):e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:189",className:"absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-900"}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:191",className:"absolute inset-0",style:{backgroundColor:B,opacity:m}}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:192",className:`absolute inset-0 flex flex-col justify-center px-6 ${A}`,children:e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:193",className:`max-w-xl ${g}`,children:[s.title&&e.jsx("h2",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:195",className:"text-lg md:text-2xl font-bold mb-1 drop-shadow-lg",style:{color:n},children:s.title}),s.subtitle&&e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:200",className:"text-xs md:text-sm mb-1 opacity-90 drop-shadow",style:{color:n},children:s.subtitle}),s.description&&e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:205",className:"text-[10px] md:text-xs mb-2 opacity-80 drop-shadow line-clamp-2",style:{color:n},children:s.description}),s.buttonText&&e.jsx("button",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:210",className:"px-3 py-1.5 rounded-lg font-semibold text-xs transition-all",style:{backgroundColor:T,color:n},children:s.buttonText})]})})]}),s.mobileImageUrl&&e.jsxs(e.Fragment,{children:[e.jsxs("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:223",className:"text-xs text-zinc-400 flex items-center gap-1 mt-3",children:[e.jsx(H,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:223",className:"w-3 h-3"})," ตัวอย่าง Mobile"]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:224",className:"relative w-32 mx-auto overflow-hidden rounded-lg border border-zinc-700",style:{aspectRatio:"9/16"},children:[e.jsx("img",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:225",src:v(s.mobileImageUrl),alt:"Mobile Preview",className:"absolute inset-0 w-full h-full object-cover"}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:226",className:"absolute inset-0",style:{backgroundColor:B,opacity:m}})]})]})]})};return e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:235",className:"space-y-6",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:236",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:237",children:[e.jsx("h1",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:238",className:"text-2xl font-bold text-orange-400",children:N==="login"?"แบนเนอร์หน้า Login":"แบนเนอร์หน้าหลัก"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:239",className:"text-sm text-zinc-400 mt-1",children:N==="login"?"จัดการแบนเนอร์ที่แสดงบนหน้าเข้าสู่ระบบ":"จัดการแบนเนอร์โปรโมชั่นบนหน้าหลัก"})]}),e.jsxs(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:241",onClick:()=>{ee(),u(!0)},className:"bg-orange-600 hover:bg-orange-700",children:[e.jsx(ue,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:242",className:"w-4 h-4 mr-1"})," เพิ่มแบนเนอร์"]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:247",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(b,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:248",className:"bg-zinc-900/50 border-zinc-800",children:e.jsxs(j,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:249",className:"p-3 text-center",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:250",className:"text-xs text-zinc-400",children:"แบนเนอร์ทั้งหมด"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:251",className:"text-xl font-bold text-zinc-200",children:p?.length||0})]})}),e.jsx(b,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:254",className:"bg-zinc-900/50 border-zinc-800",children:e.jsxs(j,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:255",className:"p-3 text-center",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:256",className:"text-xs text-zinc-400",children:"กำลังแสดง"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:257",className:"text-xl font-bold text-green-400",children:ie})]})}),e.jsx(b,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:260",className:"bg-zinc-900/50 border-zinc-800",children:e.jsxs(j,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:261",className:"p-3 text-center",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:262",className:"text-xs text-zinc-400",children:"Views รวม"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:263",className:"text-xl font-bold text-blue-400",children:ne.toLocaleStr
1ing()})]})}),e.jsx(b,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:266",className:"bg-zinc-900/50 border-zinc-800",children:e.jsxs(j,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:267",className:"p-3 text-center",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:268",className:"text-xs text-zinc-400",children:"Clicks รวม"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:269",className:"text-xl font-bold text-orange-400",children:te.toLocaleString()})]})})]}),J?e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:276",className:"text-zinc-400",children:"กำลังโหลด..."}):p?.length?e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:286",className:"grid gap-3",children:p.map(a=>e.jsx(b,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:288",className:"bg-zinc-900/50 border-zinc-800 overflow-hidden",children:e.jsx(j,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:289",className:"p-0",children:e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:290",className:"flex",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:292",className:"w-24 h-20 md:w-36 md:h-24 flex-shrink-0 bg-zinc-800 relative overflow-hidden",children:a.imageUrl?e.jsx("img",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:294",src:v(a.imageUrl),alt:a.title,className:"w-full h-full object-cover"}):e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:296",className:"w-full h-full flex items-center justify-center",children:e.jsx(G,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:297",className:"w-8 h-8 text-zinc-600"})})}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:302",className:"flex-1 p-3 flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:303",className:"min-w-0",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:304",className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:305",className:"font-medium text-zinc-200 truncate",children:a.title}),e.jsx(I,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:306",className:a.isActive===1?"bg-green-600/20 text-green-400 border-green-600/30":"bg-zinc-600/20 text-zinc-400 border-zinc-600/30",children:a.isActive===1?"แสดง":"ซ่อน"}),a.bannerType&&e.jsxs(I,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:310",variant:"outline",className:"border-zinc-600 text-zinc-400 text-xs",children:[L.find(n=>n.value===a.bannerType)?.emoji," ",L.find(n=>n.value===a.bannerType)?.label]}),a.priority&&e.jsx(I,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:315",className:W[a.priority]?.color||"",children:W[a.priority]?.label})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:320",className:"flex items-center gap-3 mt-1 text-xs text-zinc-500",children:[e.jsxs("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:321",className:"flex items-center gap-1",children:[e.jsx(de,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:321",className:"w-3 h-3"})," ",(a.views||0).toLocaleString()]}),e.jsxs("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:322",className:"flex items-center gap-1",children:[e.jsx(Pe,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:322",className:"w-3 h-3"})," ",(a.clicks||0).toLocaleString()]}),a.startDate&&e.jsxs("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:323",className:"flex items-center gap-1",children:[e.jsx(be,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:323",className:"w-3 h-3"})," ",new Date(a.startDate).toLocaleDateString("th-TH")]}),e.jsxs("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:324",children:["#",a.displayOrder]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:327",className:"flex gap-1 flex-shrink-0 ml-2",children:[e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:328",size:"sm",variant:"ghost",onClick:()=>h.mutate({id:a.id,displayOrder:Math.max(0,a.displayOrder-1)}),className:"h-7 w-7 p-0",children:e.jsx(je,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:329",className:"w-3 h-3"})}),e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:331",size:"sm",variant:"ghost",onClick:()=>h.mutate({id:a.id,displayOrder:a.displayOrder+1}),className:"h-7 w-7 p-0",children:e.jsx(oe,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:332",className:"w-3 h-3"})}),e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:334",size:"sm",variant:"ghost",onClick:()=>se(a),className:"h-7 w-7 p-0 text-orange-400",children:e.jsx(Be,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:335",className:"w-3 h-3"})}),e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:337",size:"sm",variant:"ghost",onClick:()=>q.mutate({id:a.id}),className:"h-7 w-7 p-0",children:e.jsx(Ae,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:338",className:"w-3 h-3"})}),e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:340",size:"sm",variant:"ghost",onClick:()=>h.mutate({id:a.id,isActive:a.isActive===1?0:1}),className:"h-7 w-7 p-0 text-yellow-400",children:a.isActive===1?"⏸":"▶"}),e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:343",size:"sm",variant:"ghost",onClick:()=>{confirm("ลบแบนเนอร์นี้?")&&Y.mutate({id:a.id})},className:"h-7 w-7 p-0 text-red-400",children:e.jsx(ve,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:344",className:"w-3 h-3"})})]})]})]})})},a.id))}):e.jsx(b,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:278",className:"bg-zinc-900/50 border-zinc-800",children:e.jsxs(j,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:279",className:"py-12 text-center text-zinc-400",children:[e.jsx(G,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:280",className:"w-12 h-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:281",children:"ยังไม่มีแบนเนอร์"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:282",className:"text-sm mt-1",children:'กดปุ่ม "เพิ่มแบนเนอร์" เพื่อเริ่มต้น'})]})}),e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:356",ref:k,type:"file",accept:"image/*,.svg,.bmp,.tiff,.avif,.heic,.heif,.ico",className:"hidden",onChange:a=>{const n=a.target.files?.[0];n&&D(n,"desktop"),a.target.value=""}}),e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:367",ref:U,type:"file",accept:"image/*,.svg,.bmp,.tiff,.avif,.heic,.heif,.ico",className:"hidden",onChange:a=>{const n=a.target.files?.[0];n&&D(n,"mobile"),a.target.value=""}}),e.jsx(ge,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:380",open:X,onOpenChange:a=>{a||(u(!1),y(null))},children:e.jsxs(xe,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:381",className:"bg-zinc-900 border-zinc-700 max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsx(pe,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:382",children:e.jsx(he,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:383",className:"text-orange-400",children:d?"แก้ไขแบนเนอร์":"สร้างแบนเนอร์ใหม่"})}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:387",className:"flex gap-1 border-b border-zinc-700 pb-2 flex-wrap",children:["basic","content","style","schedule","preview"].map(a=>e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:389",size:"sm",variant:o===a?"default":"ghost",onClick:()=>z(a),className:o===a?"bg-orange-600":"text-zinc-400",children:{basic:"ข้อมูลหลัก",content:"เนื้อหา",style:"สไตล์",schedule:"กำหนดเวลา",preview:"ดูตัวอย่าง"}[a]},a))}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:397",className:"space-y-3 mt-3",children:[o==="basic"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:400",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:401",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:402",className:"text-xs text-zinc-400 mb-1 block",children:"ชื่อแบนเนอร์ *"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:403",placeholder:"ชื่อสำหรับจัดการ",value:s.name,onChange:a=>t({...s,name:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:405",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:406",className:"text-xs text-zinc-400 mb-1 block",children:"ประเภท"}),e.jsxs(O,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:407",value:s.bannerType,onValueChange:a=>t({...s,bannerType:a}),children:[e.jsx(M,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:408",className:"bg-zinc-800 border-zinc-700",children:e.jsx(E,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:408"})}),e.jsx(R,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:409",className:"bg-zinc-800 border-zinc-700",children:L.map(a=>e.jsxs(x,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:410",value:a.value,children:[a.emoji," ",a.label]},a.value))})]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:415",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:416",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:417",className:"text-xs text-zinc-400 mb-1 block",children:"ความสำคัญ"}),e.jsxs(O,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:418",value:s.priority,onValueChange:a=>t({...s,priority:a}),children:[e.jsx(M,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:419",className:"bg-zinc-800 border-zinc-700",children:e.jsx(E,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:419"})}),e.jsxs(R,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:420",className:"bg-zinc-800 border-zinc-700",children:[e.jsx(x,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:421",value:"high",children:"🔴 สูง"}),e.jsx(x,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:422",value:"medium",children:"🟡 ปานกลาง"}),e.jsx(x,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:423",value:"low",children:"⚪ ต่ำ"})]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:427",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:428",className:"text-xs text-zinc-400 mb-1 block",children:"ลำดับแสดง"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:429",type:"number",value:s.displayOrder,onChange:a=>t({...s,displayOrder:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:434",children:[e.jsxs("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:435",className:"text-xs text-zinc-400 mb-1 block flex items-center gap-1",children:[e.jsx(V,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:436",className:"w-3 h-3"})," รูปภาพ Desktop (แนะนำ 3000x1300)"]}),e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:438",ref:k,type:"file",accept:"image/*",className:"hidden",onChange:a=>{const n=a.target.files?.[0];n&&D(n,"desktop"),a.target.value=""}}),s.imageUrl?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:440",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:441",className:"rounded-lg overflow-hidden border border-zinc-700 h-32",children:e.jsx("img",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:442",src:v(s.imageUrl),alt:"Desktop Preview",className:"w-full h-full object-cover"})}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:444",className:"flex gap-2 mt-2",children:[e.jsxs(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:445",type:"button",variant:"outline",size:"sm",onClick:()=>k.current?.click(),disabled:C,className:"border-orange-600/50 text-orange-400 hover:bg-orange-600/10 flex-1",children:[C?e.jsx("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:446",className:"animate-spin",children:"⏳"}):e.jsx(F,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:446",className:"w-4 h-4 mr-1"}),C?"กำลังอัปโหลด...":"เปลี่ยนรูป"]}),e.jsxs(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:449",type:"button",variant:"ghost",size:"sm",onClick:()=>t({...s,imageUrl:""}),className:"text-red-400",children:[e.jsx($,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:450",className:"w-4 h-4 mr-1"})," ลบ"]})]})]}):e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:455",onClick:()=>k.current?.click(),className:"border-2 border-dashed border-zinc-700 rounded-lg p-6 text-center cursor-pointer hover:border-orange-500/50 transition-colors active:scale-[0.98]",children:C?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:457",className:"space-y-2",children:[e.jsx("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:457",className:"text-2xl animate-spin inline-block",children:"⏳"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:457",className:"text-xs text-zinc-400",children:"กำลังอัปโหลด..."})]}):e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:459",className:"space-y-2",children:[e.jsx(F,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:459",className:"w-8 h-8 mx-auto text-zinc-500"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:459",className:"text-xs text-zinc-400",children:"คลิกเพื่ออัปโหลดรูปภาพ Desktop"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:459",className:"text-[10px] text-zinc-600",children:"รองรับ JPG, PNG, GIF, WebP ไม่เกิน 10MB"})]})})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:466",children:[e.jsxs("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:467",className:"text-xs text-zinc-400 mb-1 block flex items-center gap-1",children:[e.jsx(H,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:468",className:"w-3 h-3"})," รูปภาพ Mobile (แนะนำ 1080x1920, ไม่บังคับ)"]}),e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:470",ref:U,type:"file",accept:"image/*",className:"hidden",onChange:a=>{const n=a.target.files?.[0];n&&D(n,"mobile"),a.target.value=""}}),s.mobileImageUrl?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:472",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:473",className:"rounded-lg overflow-hidden border border-zinc-700 h-32 w-20",children:e.jsx("img",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:474",src:v(s.mobileImageUrl),alt:"Mobile Preview",className:"w-full h-full object-cover"})}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:476",className:"flex gap-2 mt-2",children:[e.jsxs(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:477",type:"button",variant:"outline",size:"sm",onClick:()=>U.current?.click(),disabled:w,className:"border-orange-600/50 text-orange-400 hover:bg-orange-600/10 flex-1",children:[w?e.jsx("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:478",className:"animate-spin",children:"⏳"}):e.jsx(F,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:478",className:"w-4 h-4 mr-1"}),w?"กำลังอัปโหลด...":"เปลี่ยนรูป"]}),e.jsxs(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:481",type:"button",varia
1nt:"ghost",size:"sm",onClick:()=>t({...s,mobileImageUrl:""}),className:"text-red-400",children:[e.jsx($,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:482",className:"w-4 h-4 mr-1"})," ลบ"]})]})]}):e.jsx("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:487",onClick:()=>U.current?.click(),className:"border-2 border-dashed border-zinc-700 rounded-lg p-6 text-center cursor-pointer hover:border-orange-500/50 transition-colors active:scale-[0.98]",children:w?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:489",className:"space-y-2",children:[e.jsx("span",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:489",className:"text-2xl animate-spin inline-block",children:"⏳"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:489",className:"text-xs text-zinc-400",children:"กำลังอัปโหลด..."})]}):e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:491",className:"space-y-2",children:[e.jsx(F,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:491",className:"w-8 h-8 mx-auto text-zinc-500"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:491",className:"text-xs text-zinc-400",children:"คลิกเพื่ออัปโหลดรูปภาพ Mobile"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:491",className:"text-[10px] text-zinc-600",children:"รองรับ JPG, PNG, GIF, WebP ไม่เกิน 10MB"})]})})]})]}),o==="content"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:501",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:502",className:"text-xs text-zinc-400 mb-1 block",children:"หัวข้อ (Headline) *"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:503",placeholder:"หัวข้อหลักบนแบนเนอร์",value:s.title,onChange:a=>t({...s,title:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:505",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:506",className:"text-xs text-zinc-400 mb-1 block",children:"คำบรรยาย (Subtitle)"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:507",placeholder:"คำอธิบายสั้นๆ",value:s.subtitle,onChange:a=>t({...s,subtitle:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:509",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:510",className:"text-xs text-zinc-400 mb-1 block",children:"รายละเอียด (Description)"}),e.jsx(me,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:511",placeholder:"รายละเอียดเพิ่มเติม",value:s.description,onChange:a=>t({...s,description:a.target.value}),className:"bg-zinc-800 border-zinc-700",rows:3})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:513",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:514",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:515",className:"text-xs text-zinc-400 mb-1 block",children:"ข้อความปุ่ม"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:516",placeholder:"เช่น เริ่มเล่นเลย",value:s.buttonText,onChange:a=>t({...s,buttonText:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:518",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:519",className:"text-xs text-zinc-400 mb-1 block",children:"URL ปุ่ม (ลิงก์เมื่อกด)"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:520",placeholder:"/play หรือ https://...",value:s.linkUrl,onChange:a=>t({...s,linkUrl:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]})]})]}),o==="style"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:528",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:529",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:530",className:"text-xs text-zinc-400 mb-1 block",children:"ตำแหน่งข้อความ"}),e.jsxs(O,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:531",value:s.textPosition,onValueChange:a=>t({...s,textPosition:a}),children:[e.jsx(M,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:532",className:"bg-zinc-800 border-zinc-700",children:e.jsx(E,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:532"})}),e.jsxs(R,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:533",className:"bg-zinc-800 border-zinc-700",children:[e.jsx(x,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:534",value:"left",children:"ซ้าย"}),e.jsx(x,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:535",value:"center",children:"กลาง"}),e.jsx(x,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:536",value:"right",children:"ขวา"})]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:540",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:541",className:"text-xs text-zinc-400 mb-1 block",children:"สีข้อความ"}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:542",className:"flex gap-2",children:[e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:543",type:"color",value:s.textColor,onChange:a=>t({...s,textColor:a.target.value}),className:"w-10 h-9 rounded border border-zinc-700 bg-zinc-800 cursor-pointer"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:544",value:s.textColor,onChange:a=>t({...s,textColor:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:548",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:549",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:550",className:"text-xs text-zinc-400 mb-1 block",children:"สีปุ่ม"}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:551",className:"flex gap-2",children:[e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:552",type:"color",value:s.buttonColor,onChange:a=>t({...s,buttonColor:a.target.value}),className:"w-10 h-9 rounded border border-zinc-700 bg-zinc-800 cursor-pointer"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:553",value:s.buttonColor,onChange:a=>t({...s,buttonColor:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:556",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:557",className:"text-xs text-zinc-400 mb-1 block",children:"สี Overlay"}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:558",className:"flex gap-2",children:[e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:559",type:"color",value:s.overlayColor,onChange:a=>t({...s,overlayColor:a.target.value}),className:"w-10 h-9 rounded border border-zinc-700 bg-zinc-800 cursor-pointer"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:560",value:s.overlayColor,onChange:a=>t({...s,overlayColor:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:564",children:[e.jsxs("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:565",className:"text-xs text-zinc-400 mb-1 block",children:["ความทึบ Overlay (",(parseFloat(s.overlayOpacity)*100).toFixed(0),"%)"]}),e.jsx("input",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:566",type:"range",min:"0",max:"1",step:"0.05",value:s.overlayOpacity,onChange:a=>t({...s,overlayOpacity:a.target.value}),className:"w-full accent-orange-500"})]})]}),o==="schedule"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:575",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:576",className:"text-xs text-zinc-400 mb-1 block",children:"เริ่มแสดง"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:577",type:"datetime-local",value:s.startDate,onChange:a=>t({...s,startDate:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:579",children:[e.jsx("label",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:580",className:"text-xs text-zinc-400 mb-1 block",children:"หยุดแสดง"}),e.jsx(c,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:581",type:"datetime-local",value:s.endDate,onChange:a=>t({...s,endDate:a.target.value}),className:"bg-zinc-800 border-zinc-700"})]}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:583",className:"text-xs text-zinc-500",children:"หากไม่กำหนดวันที่ แบนเนอร์จะแสดงตลอดเวลา (ตามสถานะเปิด/ปิด)"})]}),o==="preview"&&e.jsx(le,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:587"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:590",className:"flex gap-2 mt-4",children:[e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:591",onClick:ae,disabled:S.isPending||h.isPending,className:"flex-1 bg-orange-600 hover:bg-orange-700",children:S.isPending||h.isPending?"กำลังบันทึก...":d?"บันทึกการแก้ไข":"สร้างแบนเนอร์"}),e.jsx(l,{"data-loc":"client/src/pages/admin/AdminBannersPage.tsx:594",variant:"outline",onClick:()=>{u(!1),y(null)},className:"border-zinc-700",children:"ยกเลิก"})]})]})})]})}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.