1import{u as w,r as a,p as R,bc as M,V as u,bd as O,be as z,bf as B,j as e,ay as r,R as F,C as f,A as v,I as P,bg as D,g as j,q as g,bh as G,o as L}from"./main.BDEOpGwP.js";import{P as Y}from"./PhoenixInlineLoader.BJZOkih7.chunk.js";import{B as $}from"./ButtonGroup.DO3bvd3g.chunk.js";const b=25,H=["info","warning","critical"],K=["meter_anomaly","meter_recovery","meter_stuck","meter_reset","device_data_delayed","device_data_offline","device_data_resumed"],N=i=>i==="critical"?"danger":i==="info"?"info":"warning",q=()=>{const{t:i}=w(),[s,m]=a.useState(!1),[o,A]=a.useState(""),[c,I]=a.useState(""),[n,_]=a.useState(b),S=a.useMemo(()=>({unreadOnly:s,severity:o||null,type:c||null,limit:n+1,offset:0}),[s,o,c,n]),{data:C,loading:l,error:x}=R(M,{variables:S,fetchPolicy:"cache-and-network"}),h=["GetNotifications","GetNotificationSummary"],[y]=u(O,{refetchQueries:h}),[k]=u(z,{refetchQueries:h}),p=C?.notifications??[],E=p.length>n,d=p.slice(0,n).sort(B);return e.jsxs("div",{"data-testid":"notifications-page",children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center flex-wrap gap-3 mb-4",children:[e.jsx("h2",{className:"mb-0",children:i("notifications.title")}),e.jsx(r,{variant:"link",className:"p-0 fs-9",onClick:()=>k(),"data-testid":"notifications-page-mark-all-read",children:i("notifications.markAllRead")})]}),e.jsxs(F,{className:"g-2 mb-4 align-items-center",children:[e.jsx(f,{xs:"auto",children:e.jsxs($,{size:"sm",children:[e.jsx(r,{variant:s?"phoenix-secondary":"phoenix-primary",onClick:()=>m(!1),children:i("notifications.filterAll")}),e.jsx(r,{variant:s?"phoenix-primary":"phoenix-secondary",onClick:()=>m(!0),"data-testid":"notifications-filter-unread",children:i("notifications.filterUnread")})]})}),e.jsx(f,{xs:"auto",children:e.jsxs(v.Select,{size:"sm",value:o,onChange:t=>A(t.target.value),"data-testid":"notifications-filter-severity","aria-label":i("notifications.filterBySeverityAria"),children:[e.jsx("option",{value:"",children:i("notifications.filterSeverity")}),H.map(t=>e.jsx("option",{value:t,children:i(`notifications.severity.${t}`)},t))]})}),e.jsx(f,{xs:"auto",children:e.jsxs(v.Select,{size:"sm",value:c,onChange:t=>I(t.target.value),"data-testid":"notifications-filter-type","aria-label":i("notifications.filterByTypeAria"),children:[e.jsx("option",{value:"",children:i("notifications.filterType")}),K.map(t=>e.jsx("option",{value:t,children:i(`notifications.type.${t}`)},t))]})})]}),l&&d.length===0&&e.jsx(Y,{size:40,minHeight:160}),!l&&x&&e.jsx("div",{className:"text-center text-danger py-6",children:i("notifications.error")}),!l&&!x&&d.length===0&&e.jsx("div",{className:"text-center text-body-tertiary py-6",children:i("notifications.empty")}),e.jsx("div",{className:"border-top",children:d.map(t=>e.jsx("div",{role:"button",tabIndex:0,"data-testid":`notifications-page-item-${t.id}`,onClick:()=>y({variables:{notificationId:t.id,read:!t.readAt}}),onKeyDown:T=>T.key==="Enter"&&y({variables:{notificationId:t.id,read:!t.readAt}}),className:j("px-3 py-3 border-bottom",{"bg-primary-subtle":!t.readAt}),children:e.jsxs("div",{className:"d-flex align-items-start gap-3",children:[e.jsx("span",{className:`text-${N(t.severity)} pt-1`,children:e.jsx(P,{icon:D(t.severity),size:18})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"d-flex justify-content-between gap-2 flex-wrap",children:[e.jsx("span",{className:j("fs-8",{"fw-bold":!t.readAt,"fw-semibold":!!t.readAt}),children:t.title}),e.jsxs("span",{className:"d-flex align-items-center gap-2 align-self-start flex-shrink-0",children:[e.jsx(g,{bg:N(t.severity),className:"fs-10",children:i(`notifications.severity.${t.severity}`)||t.severity}),!t.readAt&&e.jsx(g,{bg:"primary",pill:!0,className:"fs-10",children:i("notifications.unread")})]})]}),t.body&&e.jsx("div",{className:"fs-9 text-body-secondary mt-1",children:t.body}),e.jsxs("div",{className:"fs-10 text-body-tertiary mt-1",children:[G(t)," ·"," ",L(t.createdAt).format("DD MMM YYYY, HH:mm")]})]})]})},t.id))}),E&&e.jsx("div",{className:"text-center my-4",children:e.jsx(r,{variant:"phoenix-secondary",size:"sm",onClick:()=>_(t=>t+b),"data-testid":"notifications-load-more",children:i("notifications.loadMore")})})]})};export{q 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.