@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 2.26 kB
JavaScript
;const o=require("react/jsx-runtime"),n=require("./index-DwV9MiDB.js"),x=require("./index-UhBwhhTY.js"),d=require("./SpeziProvider-BW6pacsq.js"),u=require("./utils/date.cjs"),r=require("react"),N=require("./FormError-DIiF9S_S.js"),f=r.createContext(null),c=()=>{const t=r.useContext(f);if(!t)throw new Error("Missing NotificationContext provider.");return t},l=({notification:t,children:i,className:e,asChild:s})=>{const a=s?x.Slot:"article";return o.jsx(f.Provider,{value:t,children:o.jsx(a,{className:n.cn("flex gap-x-4 border-b border-b-neutral-200 px-3 py-4 last:border-b-0",e),children:i})})},m=({notification:t,children:i,href:e})=>{const{router:{Link:s}}=d.useSpeziContext();return o.jsx(l,{asChild:!0,notification:t,children:o.jsx(s,{href:e,className:"hover:bg-accent/50 cursor-pointer transition",children:i})})},g=({time:t,...i})=>{const e=c();return o.jsx("time",{className:n.cn("shrink-0 text-xs",!e.isRead&&"font-semibold"),...i,children:u.formatDateTime(t)})},j=({className:t,...i})=>{const e=c();return o.jsx("h5",{className:n.cn("flex-1 text-sm",e.isRead?"text-foreground/70 font-medium":"font-semibold",t),...i})},p=({className:t,...i})=>o.jsx("div",{className:n.cn("flex flex-1 flex-col gap-1",t),...i}),h=({className:t,...i})=>o.jsx("header",{className:n.cn("flex flex-1 gap-1",t),...i}),b=({className:t,...i})=>{const e=c();return o.jsx("p",{className:n.cn("flex-1 text-sm",e.isRead&&"text-foreground/70",t),...i})},v=({alt:t="Notification image",src:i,className:e,...s})=>{const a=c();return o.jsx("div",{className:n.cn("flex-center shrink-0",a.isRead&&"opacity-70"),children:i?o.jsx("img",{alt:t,className:n.cn("size-10 rounded-lg object-cover",e),src:i,...s}):o.jsx("div",{className:n.cn("flex-center bg-accent size-10 rounded-full",e),children:o.jsx(N.Info,{className:"text-foreground/25"})})})},C=({onClick:t,className:i,...e})=>o.jsx("div",{className:n.cn("flex gap-2 self-start",i),onClick:s=>{s.stopPropagation(),s.preventDefault(),t==null||t(s)},...e});exports.Notification=l;exports.NotificationActions=C;exports.NotificationContentContainer=p;exports.NotificationHeader=h;exports.NotificationImage=v;exports.NotificationLink=m;exports.NotificationMessage=b;exports.NotificationTime=g;exports.NotificationTitle=j;