PageSourceSearch

https://myliveroom.com/assets/AdminNotifications-DobjuJe2.js

js myliveroom.com collected 2026-10-01 13:52:04 UTC 7,599 bytes, 1 lines download raw bytes

1import{a as B,u as D,r as i,j as e,L as F}from"./index-DT98fQox.js";import{A as M}from"./AdminLayout-uaaqYwvj.js";import{b as O,e as c}from"./index-Dk_GaLZW.js";import{cf as P,cg as U,ch as Y,ci as q}from"./admin-BijFdg4U.js";import{f as V,a as G,w as m,d as S,c as H}from"./adminWorkspaceShared-CNKEg6m5.js";import"./markdown-CIel6SH6.js";import"./marked.esm-r2HKmrw_.js";const J={alert:"feather-activity",report:"feather-flag",announcement:"feather-radio",task:"feather-check-square"},_={info:{bg:"rgba(59,130,246,.12)",fg:"#2563eb"},warning:{bg:"rgba(251,191,36,.14)",fg:"#d97706"},critical:{bg:"rgba(239,68,68,.12)",fg:"#dc2626"}},te=()=>{const{t}=B(),{confirm:A,dialog:C}=D(),[d,u]=i.useState([]),[h,g]=i.useState(null),[f,y]=i.useState(0),[W,x]=i.useState(!0),[k,s]=i.useState(null),[r,z]=i.useState("all"),[n,o]=i.useState(null),[b,v]=i.useState(!1),p=i.useCallback(async()=>{x(!0),s(null);try{const a=await P();u(a.notifications),y(a.unread),g(a.last_seen_at)}catch{s(t("admin.workspace.notifications.load_failed","Failed to load notifications."))}finally{x(!1)}},[t]);i.useEffect(()=>{p()},[p]);const w=i.useMemo(()=>r==="all"?d:d.filter(a=>a.type===r),[d,r]),L=async()=>{try{await q(),y(0),g(new Date().toISOString())}catch{s(t("admin.workspace.notifications.mark_failed","Failed to mark as read."))}},I=async()=>{if(!(!n||!n.title.trim()||!n.body.trim())){v(!0),s(null);try{await Y({title:n.title.trim(),body:n.body.trim(),level:n.level}),o(null),await p()}catch{s(t("admin.workspace.notifications.announce_failed","Failed to post the announcement."))}finally{v(!1)}}},N=async a=>{const l=parseInt(a.id.split(":")[1]??"",10);if(Number.isFinite(l)&&await A(t("admin.workspace.notifications.announce_delete_confirm","Delete this announcement?"),!0))try{await U(l),u(E=>E.filter(R=>R.id!==a.id))}catch{s(t("admin.workspace.notifications.announce_failed","Failed to post the announcement."))}},j=a=>!!a.happened_at&&(h==null||a.happened_at>h),T=[{key:"all",label:t("admin.workspace.notifications.tab_all","All")},{key:"alert",label:t("admin.workspace.notifications.tab_alerts","Alerts")},{key:"report",label:t("admin.workspace.notifications.tab_reports","Reports")},{key:"announcement",label:t("admin.workspace.notifications.tab_announcements","Announcements")},{key:"task",label:t("admin.workspace.notifications.tab_tasks","Tasks")}];return e.jsxs(M,{title:t("admin.workspace.notifications.title","Notifications"),subtitle:t("admin.workspace.notifications.subtitle","System alerts, reports, announcements and task assignments in one feed"),actions:e.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[e.jsx(c,{variant:"ghost",icon:"feather-check",onClick:()=>{L()},disabled:f===0,children:t("admin.workspace.notifications.mark_all","Mark all read")}),e.jsx(c,{variant:"primary",icon:"feather-radio",onClick:()=>o({title:"",body:"",level:"info"}),children:t("admin.workspace.notifications.announce","Announcement")})]}),children:[k&&e.jsx("div",{style:{color:"var(--adm-danger, #ef4444)",fontSize:13,fontWeight:600,marginBottom:10},children:k}),e.jsxs("div",{style:{display:"flex",gap:6,marginBottom:14,flexWrap:"wrap"},children:[T.map(a=>e.jsx("button",{type:"button",onClick:()=>z(a.key),style:{padding:"6px 14px",borderRadius:999,border:"1px solid var(--adm-card-border, #e4e4e7)",cursor:"pointer",fontSize:12.5,fontWeight:700,background:r===a.key?"var(--adm-primary, #6366f1)":"var(--adm-card-bg, #fff)",color:r===a.key?"#fff":"var(--adm-text-soft, #64748b)"},children:a.label},a.key)),f>0&&e.jsx("span",{style:{marginLeft:"auto",fontSize:12.5,fontWeight:700,color:"var(--adm-primary, #6366f1)",alignSelf:"center"},children:t("admin.workspace.notifications.unread_count","{{count}} unread",{count:f})})]}),e.jsx(O,{flush:!0,children:W?e.jsx("div",{style:{padding:28,fontSize:13.5,color:"var(--adm-text-soft, #64748b)"},children:t("admin.workspace.loading","Loading…")}):w.length===0?e.jsxs("div",{style:{padding:"48px 20px",textAlign:"center",color:"var(--adm-text-muted, #94a3b8)",fontSize:13.5},children:[e.jsx("i",{className:"feather-bell-off",style:{fontSize:30,display:"block",marginBottom:8},"aria-hidden":"true"}),t("admin.workspace.notifications.empty","Nothing here — all caught up.")]}):w.map(a=>{const l=_[a.level]??_.info;return e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",ga
1p:12,padding:"13px 16px",borderBottom:"1px solid var(--adm-card-border, #e4e4e7)",background:j(a)?"rgba(99,102,241,.05)":"transparent"},children:[e.jsx("span",{style:{width:34,height:34,borderRadius:10,background:l.bg,color:l.fg,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:e.jsx("i",{className:J[a.type]??"feather-bell",style:{fontSize:15},"aria-hidden":"true"})}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("span",{style:{fontSize:13.5,fontWeight:700,color:"var(--adm-text, #0f172a)"},children:a.title}),j(a)&&e.jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"var(--adm-primary, #6366f1)",flexShrink:0}}),e.jsx("span",{style:{marginLeft:"auto",fontSize:11.5,color:"var(--adm-text-muted, #94a3b8)",flexShrink:0},children:V(a.happened_at,t)})]}),a.body&&e.jsx("div",{style:{fontSize:12.5,color:"var(--adm-text-soft, #64748b)",marginTop:2,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:a.body}),e.jsxs("div",{style:{display:"flex",gap:12,marginTop:5},children:[a.link&&a.link!=="/admin/workspace/notifications"&&e.jsxs(F,{to:a.link,style:{fontSize:12,fontWeight:700,color:"var(--adm-primary, #6366f1)",textDecoration:"none"},children:[t("admin.workspace.notifications.open","Open")," →"]}),a.type==="announcement"&&e.jsx("button",{type:"button",onClick:()=>{N(a)},style:{border:"none",background:"transparent",cursor:"pointer",fontSize:12,fontWeight:700,color:"var(--adm-danger, #ef4444)",padding:0},children:t("actions.delete","Delete")})]})]})]},a.id)})}),n&&e.jsx(G,{title:t("admin.workspace.notifications.announce_title","Post Announcement"),sub:t("admin.workspace.notifications.announce_sub","Broadcast a note to the whole admin team"),onClose:()=>o(null),maxWidth:480,children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[e.jsxs("div",{children:[e.jsxs("label",{style:m,children:[t("admin.workspace.notifications.field_title","Title")," *"]}),e.jsx("input",{value:n.title,autoFocus:!0,onChange:a=>o({...n,title:a.target.value}),style:S})]}),e.jsxs("div",{children:[e.jsxs("label",{style:m,children:[t("admin.workspace.notifications.field_body","Message")," *"]}),e.jsx("textarea",{rows:4,value:n.body,onChange:a=>o({...n,body:a.target.value}),style:{...S,resize:"vertical"}})]}),e.jsxs("div",{children:[e.jsx("label",{style:m,children:t("admin.workspace.notifications.field_level","Level")}),e.jsxs(H,{value:n.level,onChange:a=>o({...n,level:a.target.value}),children:[e.jsx("option",{value:"info",children:t("admin.workspace.notifications.level_info","Info")}),e.jsx("option",{value:"warning",children:t("admin.workspace.notifications.level_warning","Warning")}),e.jsx("option",{value:"critical",children:t("admin.workspace.notifications.level_critical","Critical")})]})]}),e.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:8},children:[e.jsx(c,{variant:"ghost",onClick:()=>o(null),children:t("actions.cancel","Cancel")}),e.jsx(c,{variant:"primary",disabled:b||!n.title.trim()||!n.body.trim(),onClick:()=>{I()},children:b?t("admin.workspace.saving","Saving…"):t("admin.workspace.notifications.post","Post")})]})]})}),C]})};export{te 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.