PageSourceSearch

https://oniki.net/ui/assets/DirectMarketingListPage-DJRkgq5X.js

js oniki.net collected 2026-10-08 18:43:22 UTC 7,787 bytes, 1 lines download raw bytes

1import{aR as F,cK as R,j as e,B as P,a as U,u as o,a9 as z,cE as G,T as _,r as h,eV as O,eF as B,eG as K,f as x,eH as V,eI as q,fi as H,fU as Q,L as k,M as j,q as $,x as W,bs as Z,bt as J,bu as X,bv as Y,bw as ee,fE as te,A as ae,D as se,fD as re,d as ie,ao as ne}from"./index-DPD08fmB.js";import{D as le}from"./directMarketing.service-BbizeACd.js";import{E as de}from"./ellipsis-vertical-DtVcecxZ.js";const E={all:["directMarketing","sends"],lists:()=>[...E.all,"list"],list:t=>[...E.lists(),t]},ce=(t,s)=>{const r=s==null?void 0:s.statusCode;return r&&r>=400?!1:t<2};function oe(t={}){const s=F({queryKey:E.list(t),queryFn:({signal:r})=>le.listSends(t,r),placeholderData:R,staleTime:3e4,gcTime:3e5,refetchOnWindowFocus:!1,retry:ce});return{data:s.data,isLoading:s.isLoading,isError:s.isError,error:s.error,refetch:s.refetch}}const ue={QUEUED:{variant:"default",className:"bg-muted text-muted-foreground hover:bg-muted",glyph:"○"},SENDING:{variant:"default",className:"bg-primary text-primary-foreground hover:bg-primary",glyph:"◐"},COMPLETED:{variant:"default",className:"bg-success text-success-foreground hover:bg-success",glyph:"●"},PARTIAL_FAILURE:{variant:"outline",className:"border-destructive text-destructive bg-card",glyph:"◒"},FAILED:{variant:"default",className:"bg-destructive text-destructive-foreground hover:bg-destructive",glyph:"▲"},CANCELLED:{variant:"outline",className:"border-muted-foreground text-muted-foreground bg-card",glyph:"⊘"}},D=t=>{switch(t){case"QUEUED":return"Kuyrukta";case"SENDING":return"Gönderiliyor";case"COMPLETED":return"Tamamlandı";case"PARTIAL_FAILURE":return"Kısmen başarısız";case"FAILED":return"Başarısız";case"CANCELLED":return"İptal edildi";default:return"—"}},me=["ALL","QUEUED","SENDING","COMPLETED","PARTIAL_FAILURE","FAILED","CANCELLED"],ge=20,he=({status:t})=>{const s=ue[t];return e.jsxs(P,{variant:s.variant,className:U("gap-1 whitespace-nowrap",s.className),"data-testid":`status-badge-${t}`,children:[e.jsx("span",{"aria-hidden":"true",children:s.glyph}),D(t)]})},ke=()=>{const{t}=o(),s=z(),{hasRole:r}=G(),p=_.isEnabled("direct_marketing_emails")&&(r("ADMIN_MARKETING")||r("ADMIN")),[u,f]=h.useState(""),[n,d]=h.useState("ALL"),[l,v]=h.useState(void 0),[y,m]=h.useState(0),{data:i,isLoading:c,isError:g,error:L,refetch:M}=oe({search:u||void 0,status:n==="ALL"?void 0:n,from:l!=null&&l.from?l.from.toISOString():void 0,to:l!=null&&l.to?l.to.toISOString():void 0,page:y,size:ge});if(!p)return null;const b=(i==null?void 0:i.content)??[],A=(i==null?void 0:i.totalElements)??0,S=!c&&!g&&A===0,C=a=>{f(a),m(0)},w=a=>{d(a),m(0)},T=a=>{v(a),m(0)},N=a=>{s(`/admin/marketing/direct/${a}`)},I=[{id:"name",header:t("admin.directMarketing.list.columns.name","İsim"),cell:({row:a})=>e.jsx("span",{className:"text-sm font-medium",children:a.original.name})},{id:"audience",header:t("admin.directMarketing.list.columns.audience","Hedef Kitle"),cell:({row:a})=>e.jsxs("span",{className:"text-sm tabular-nums",children:[a.original.reachableCount.toLocaleString("tr-TR")," /"," ",a.original.uniqueRecipientCount.toLocaleString("tr-TR")]}),align:"right"},{id:"sentFailed",header:t("admin.directMarketing.list.columns.sentFailed","Gönderildi / Başarısız"),cell:({row:a})=>e.jsxs("span",{className:"text-sm tabular-nums",children:[a.original.sentCount.toLocaleString("tr-TR")," / ",a.original.failedCount.toLocaleString("tr-TR")]}),align:"right"},{id:"status",header:t("admin.directMarketing.list.columns.status","Durum"),cell:({row:a})=>e.jsx(he,{status:a.original.status})},{id:"createdAt",header:t("admin.directMarketing.list.columns.createdAt","Oluşturuldu"),cell:({row:a})=>e.jsx("span",{className:"text-sm text-muted-foreground",children:O(new Date(a.original.createdAt),{addSuffix:!0})})},{id:"actions",header:"",cell:({row:a})=>e.jsxs(B,{children:[e.jsx(K,{asChild:!0,children:e.jsxs(x,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0","data-testid":`row-actions-trigger-${a.original.id}`,children:[e.jsx(de,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:t("admin.directMarketing.list.actions.openMenu","Menüyü aç")}
1)]})}),e.jsx(V,{align:"end",children:e.jsx(q,{onClick:()=>N(a.original.id),children:t("admin.directMarketing.list.actions.view","Görüntüle")})})]}),width:"60px"}];return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(xe,{}),e.jsx(pe,{search:u,onSearchChange:C,statusFilter:n,onStatusChange:w,dateRange:l,onDateChange:T}),c&&e.jsx("div",{"data-testid":"direct-marketing-loading-state",children:e.jsx(H,{rows:5,columns:6})}),!c&&g&&e.jsx(je,{error:L,onRetry:M}),!c&&!g&&S&&e.jsx(fe,{}),!c&&!g&&!S&&e.jsx("div",{"data-testid":"direct-marketing-sends-table",children:e.jsx(Q,{data:b,columns:I,onRowClick:a=>N(a.id),pagination:i?{page:i.number,pageSize:i.size,total:i.totalElements,totalPages:i.totalPages,onPageChange:m}:void 0})})]})},xe=()=>{const{t}=o();return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-6 flex-wrap",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-h2 font-display text-foreground",children:t("admin.directMarketing.list.title","Direct Marketing")}),e.jsx("p",{className:"text-body text-muted-foreground",children:t("admin.directMarketing.list.subtitle","Filtre ile hedef liste seç, tek e-posta yaz, doğrudan gönder.")})]}),e.jsx(x,{asChild:!0,variant:"cta","data-testid":"new-direct-email-cta",children:e.jsxs(k,{to:"/admin/marketing/direct/new",children:[e.jsx(j,{className:"h-4 w-4 mr-2"}),t("admin.directMarketing.list.newSendCta","New Direct Email")]})})]}),e.jsx($,{})]})},pe=({search:t,onSearchChange:s,statusFilter:r,onStatusChange:p,dateRange:u,onDateChange:f})=>{const{t:n}=o();return e.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsx(W,{value:t,onChange:d=>s(d.target.value),placeholder:n("admin.directMarketing.list.searchPlaceholder","İsme göre ara..."),"aria-label":n("admin.directMarketing.list.searchAriaLabel","İsme göre ara"),className:"w-[240px]"}),e.jsxs(Z,{value:r,onValueChange:p,children:[e.jsx(J,{className:"w-[180px]","aria-label":n("admin.directMarketing.list.statusFilterAriaLabel","Duruma göre filtrele"),children:e.jsx(X,{})}),e.jsx(Y,{children:me.map(d=>e.jsx(ee,{value:d,children:d==="ALL"?n("admin.directMarketing.list.statusAll","Tümü"):D(d)},d))})]}),e.jsx(te,{date:u,onDateChange:f,placeholder:n("admin.directMarketing.list.dateRangePlaceholder","Tarih aralığı seç")})]})},fe=()=>{const{t}=o();return e.jsx(ie,{"data-testid":"direct-marketing-empty-state",children:e.jsxs(ne,{className:"flex flex-col items-center justify-center gap-4 py-16 text-center",children:[e.jsx(j,{className:"h-10 w-10 text-muted-foreground/40","aria-hidden":"true"}),e.jsx("p",{className:"text-body text-muted-foreground",children:t("admin.directMarketing.list.empty.description","Henüz doğrudan e-posta göndermediniz.")}),e.jsx(x,{asChild:!0,variant:"outline",className:"border-primary text-primary","data-testid":"empty-state-cta",children:e.jsxs(k,{to:"/admin/marketing/direct/new",children:[e.jsx(j,{className:"h-4 w-4 mr-2"}),t("admin.directMarketing.list.newSendCta","New Direct Email")]})})]})})},je=({error:t,onRetry:s})=>{const{t:r}=o();return e.jsx(ae,{variant:"destructive","data-testid":"direct-marketing-error-state",children:e.jsxs(se,{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{children:(t==null?void 0:t.message)||r("admin.directMarketing.list.error.description","Liste yüklenemedi.")}),e.jsxs(x,{variant:"outline",size:"sm",onClick:s,"data-testid":"error-state-retry",children:[e.jsx(re,{className:"h-4 w-4 mr-2"}),r("admin.directMarketing.list.error.retry","Tekrar dene")]})]})})};export{ue as STATUS_BADGE_CONFIG,he as StatusBadge,ke as default,D as formatSendStatus};

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.