PageSourceSearch

https://globetrotter-engine.lovable.app/assets/AnnouncementManager-D1iVYHDs.js

js globetrotter-engine.lovable.app collected 2026-10-03 03:29:28 UTC 10,315 bytes, 1 lines download raw bytes

1import{ap as U,r as b,D as Z,aq as N,j as e,V as J,bo as W,B as u,p as X,W as $,av as ee,aw as se,ax as ae,L as r,I as x,i as k,k as T,l as q,m as S,n as A,a as h,t as m,w as j,b as p,br as O,s as ie,bx as le,aJ as ne,c2 as te,ab as g,aK as c}from"./index-XdapicsC.js";import{T as re}from"./textarea-BjkOJokC.js";import{S as B}from"./switch-CkgsyDXn.js";import{T as ce,a as de,b as H,c as d,d as oe,e as o}from"./table-BXjYmKtA.js";import{A as ue,a as xe,b as he,c as me,d as je,e as pe,f as ge,g as ye}from"./alert-dialog-CMgU7caj.js";import{E as ve}from"./eye-Dz74ojjJ.js";import{P as _e}from"./pencil-CsrgYJFo.js";import{T as fe}from"./trash-2-C9G6v9Gg.js";const K={banner:{label:"Banner",icon:le},modal:{label:"Modal/Popup",icon:ne},toast:{label:"Toast",icon:O},popup:{label:"Köşe Popup",icon:te}},I={all:"Herkes",logged_in:"Giriş Yapmış",guests:"Misafirler",new_users:"Yeni Kullanıcılar"},be={once:"Bir Kez",daily:"Günlük",always:"Her Zaman",session:"Oturum Başına"};function Ae(){const y=U(),[z,C]=b.useState(!1),[D,w]=b.useState(null),[v,M]=b.useState(null),[a,n]=b.useState({title:"",content:"",type:"banner",priority:0,target_audience:"all",display_frequency:"always",action_url:"",action_text:"",image_url:"",icon:"megaphone",is_active:!0,is_dismissible:!0,display_pages:["home"],style:{}}),{data:l,isLoading:G}=Z({queryKey:["admin-announcements"],queryFn:async()=>{const{data:s,error:i}=await g.from("announcements").select("*").order("created_at",{ascending:!1});if(i)throw i;return s}}),L=N({mutationFn:async s=>{const i={title:s.title,content:s.content,type:s.type||"banner",priority:s.priority||0,target_audience:s.target_audience||"all",display_frequency:s.display_frequency||"always",action_url:s.action_url||null,action_text:s.action_text||null,image_url:s.image_url||null,icon:s.icon||null,is_active:s.is_active??!0,is_dismissible:s.is_dismissible??!0,display_pages:s.display_pages||["home"],style:s.style||{}},{error:t}=await g.from("announcements").insert(i);if(t)throw t},onSuccess:()=>{c.success("Duyuru oluşturuldu"),y.invalidateQueries({queryKey:["admin-announcements"]}),_()},onError:s=>c.error(s.message)}),E=N({mutationFn:async({id:s,data:i})=>{const{error:t}=await g.from("announcements").update(i).eq("id",s);if(t)throw t},onSuccess:()=>{c.success("Duyuru güncellendi"),y.invalidateQueries({queryKey:["admin-announcements"]}),_()},onError:s=>c.error(s.message)}),P=N({mutationFn:async s=>{const{error:i}=await g.from("announcements").delete().eq("id",s);if(i)throw i},onSuccess:()=>{c.success("Duyuru silindi"),y.invalidateQueries({queryKey:["admin-announcements"]}),w(null)},onError:s=>c.error(s.message)}),V=N({mutationFn:async({id:s,is_active:i})=>{const{error:t}=await g.from("announcements").update({is_active:i}).eq("id",s);if(t)throw t},onSuccess:()=>{y.invalidateQueries({queryKey:["admin-announcements"]})}}),_=()=>{n({title:"",content:"",type:"banner",priority:0,target_audience:"all",display_frequency:"always",action_url:"",action_text:"",image_url:"",icon:"megaphone",is_active:!0,is_dismissible:!0,display_pages:["home"],style:{}}),M(null),C(!1)},Y=s=>{M(s),n({title:s.title,content:s.content,type:s.type,priority:s.priority,target_audience:s.target_audience,display_frequency:s.display_frequency,action_url:s.action_url||"",action_text:s.action_text||"",image_url:s.image_url||"",icon:s.icon||"megaphone",is_active:s.is_active,is_dismissible:s.is_dismissible,display_pages:s.display_pages,style:s.style}),C(!0)},Q=s=>{s.preventDefault(),v?E.mutate({id:v.id,data:a}):L.mutate(a)},f={total:(l==null?void 0:l.length)||0,active:(l==null?void 0:l.filter(s=>s.is_active).length)||0,totalViews:(l==null?void 0:l.reduce((s,i)=>s+(i.view_count||0),0))||0,totalClicks:(l==null?void 0:l.reduce((s,i)=>s+(i.click_count||0),0))||0};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold",children:"Duyuru Yönetimi"}),e.jsx("p",{className:"text-muted-foreground",children:"Banner, modal ve toast duyuruları yönetin"})]}),e.jsxs(J,{open:z,onOpenChange:s=>{C(s),s||_()},children:[e.jsx(W,{asChild:!0,children:e.jsxs(u,{children:[e.jsx(X,{className:"mr-2 h-4 w-4"}),"Yeni Duyuru"]})}),e.jsxs($,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(ee,{children:[e.jsx(se,{children:v?"Duyuru Düzenle":"Yeni Duyuru"}),e.jsx(ae,{children:"Kullanıcılara gösterilecek duyuruyu yapılandırın"})]}),e.jsxs("form",{onSubmit:Q,className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Başlık *"}),e.jsx(x,{value:a.title,onChange:s=>n({...a,title:s.target.value}),required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Tip"}),e.jsxs(k,{value:a.type,onValueChange:s=>n({...a,type:s}),children:[e.jsx(T,{children:e.jsx(q,{})}),e.jsx(S,{children:Object.entries(K).map(([s,{label:i}])=>e.jsx(A,{value:s,children:i},s))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"İçerik *"}),e.jsx(re,{value:a.content,onChange:s=>n({...a,content:s.target.value}),rows:3,required:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Hedef Kitle"}),e.jsxs(k,{value:a.target_audience,onValueChange:s=>n({...a,target_audience:s}),children:[e.jsx(T,{children:e.jsx(q,{})}),e.jsx(S,{children:Object.entries(I).map(([s,i])=>e.jsx(A,{value:s,children:i},s))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Görüntüleme Sıklığı"}),e.jsxs(k,{value:a.display_frequency,onValueChange:s=>n({...a,display_frequency:s}),children:[e.jsx(T,{children:e.jsx(q,{})}),e.jsx(S,{children:Object.entries(be).map(([s,i])=>e.jsx(A,{value:s,children:i},s))})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Aksiyon URL"}),e.jsx(x,{value:a.action_url||"",onChange:s=>n({...a,action_url:s.target.value}),placeholder:"/tours veya https://..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Aksiyon Butonu Metni"}),e.jsx(x,{value:a.action_text||"",onChange:s=>n({...a,action_text:s.target.value}),placeholder:"Fırsatı Yakala"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Görsel URL"}),e.jsx(x,{value:a.image_url||"",onChange:s=>n({...a,image_url:s.target.value}),placeholder:"https://..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{children:"Öncelik"}),e.jsx(x,{type:"number",value:a.priority,onChange:s=>n({...a,priority:parseInt(s.target.value)||0})})]})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{checked:a.is_active,onCheckedChange:s=>n({...a,is_active:s})}),e.jsx(r,{children:"Aktif"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{checked:a.is_dismissible,onCheckedChange:s=>n({...a,is_dismissible:s})}),e.jsx(r,{children:"Kapatılabilir"})]})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(u,{type:"button",variant:"outline",onClick:_,children:"İptal"}),e.jsx(u,{type:"submit",disabled:L.isPending||E.isPending,children:v?"Güncelle":"Oluştur"})]})]})]})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-4",children:[e.jsxs(h,{children:[e.jsx(m,{className:"pb-2",children:e.jsx(j,{className:"text-sm font-medium",children:"Toplam Duyuru"})}),e.jsx(p,{children:e.jsx("div",{className:"text-2xl font-bold",children:f.total})})]}),e.jsxs(h,{children:[e.jsx(m,{className:"pb-2",children:e.jsx(j,{className:"text-sm font-medium",children:"Aktif"})}),e.jsx(p,{children:e.jsx("div",{className:"text-2xl font-bold text-green-600",children:f.active})})]}),e.jsxs(h,{children:[e.jsx(m,{className:"pb-2",children:e.jsx(j,{className:"text-sm font-medium",children:"Toplam Görüntülenme"})}),e.jsx(p,{children:e.jsx("div",{className:"text-2xl font-bold",children:f.totalViews.toLocaleStr
1ing()})})]}),e.jsxs(h,{children:[e.jsx(m,{className:"pb-2",children:e.jsx(j,{className:"text-sm font-medium",children:"Toplam Tıklanma"})}),e.jsx(p,{children:e.jsx("div",{className:"text-2xl font-bold",children:f.totalClicks.toLocaleString()})})]})]}),e.jsxs(h,{children:[e.jsx(m,{children:e.jsx(j,{children:"Duyurular"})}),e.jsx(p,{children:G?e.jsx("div",{className:"text-center py-8",children:"Yükleniyor..."}):l&&l.length>0?e.jsxs(ce,{children:[e.jsx(de,{children:e.jsxs(H,{children:[e.jsx(d,{children:"Başlık"}),e.jsx(d,{children:"Tip"}),e.jsx(d,{children:"Kitle"}),e.jsx(d,{children:"Görüntülenme"}),e.jsx(d,{children:"Durum"}),e.jsx(d,{className:"w-[100px]",children:"İşlemler"})]})}),e.jsx(oe,{children:l.map(s=>{var t,F;const i=((t=K[s.type])==null?void 0:t.icon)||O;return e.jsxs(H,{children:[e.jsx(o,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:s.title})]})}),e.jsx(o,{children:e.jsx(ie,{variant:"outline",children:(F=K[s.type])==null?void 0:F.label})}),e.jsx(o,{children:I[s.target_audience]}),e.jsx(o,{children:e.jsx("div",{className:"text-sm",children:e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(ve,{className:"h-3 w-3"})," ",s.view_count]})})}),e.jsx(o,{children:e.jsx(B,{checked:s.is_active,onCheckedChange:R=>V.mutate({id:s.id,is_active:R})})}),e.jsx(o,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(u,{size:"icon",variant:"ghost",onClick:()=>Y(s),children:e.jsx(_e,{className:"h-4 w-4"})}),e.jsx(u,{size:"icon",variant:"ghost",onClick:()=>w(s.id),children:e.jsx(fe,{className:"h-4 w-4"})})]})})]},s.id)})})]}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"Henüz duyuru yok"})})]}),e.jsx(ue,{open:!!D,onOpenChange:()=>w(null),children:e.jsxs(xe,{children:[e.jsxs(he,{children:[e.jsx(me,{children:"Duyuruyu Sil"}),e.jsx(je,{children:"Bu işlem geri alınamaz. Devam etmek istiyor musunuz?"})]}),e.jsxs(pe,{children:[e.jsx(ge,{children:"İptal"}),e.jsx(ye,{onClick:()=>D&&P.mutate(D),children:"Sil"})]})]})})]})}export{Ae 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.