PageSourceSearch

https://collabute.ai/assets/app.inbox-XRS08tUq.js

js collabute.ai collected 2026-09-24 13:54:34 UTC 7,874 bytes, 1 lines download raw bytes

1import{k as h,j as t,w as f,a2 as N,E as _,a1 as k,ac as c,bc as D,bd as C,aO as y,be as M,aJ as b,aG as L,aC as O,bf as $,bg as P,u as v,bh as z,bi as H,bj as G,D as U,bk as Y,bl as F}from"./index-1IeKS4sZ.js";import{T as B}from"./tabs-CTEhEkP1.js";function K(e,s){const a=(s&&typeof s.scheduleId=="string"?s.scheduleId:null)??e?.match(/^\/(?:app\/)?(?:schedules|routines)\/([^/?#]+)/)?.[1]??null,i=s&&typeof s.runId=="string"?s.runId:null;return a?i?`/app/routines/${a}?run=${encodeURIComponent(i)}`:`/app/routines/${a}`:e?e.startsWith("/app/")?e:e.startsWith("/documents/")?`/app${e}`:e:null}const Q=["today","yesterday","this_week","older"],J={today:"Today",yesterday:"Yesterday",this_week:"This week",older:"Older"},W={TRANSCRIPT_READY:{icon:O,className:"text-emerald-500"},MEETING_COMPLETED:{icon:L,className:"text-sky-500"},TASK_CREATED:{icon:b,className:"text-amber-500"},TASK_APPROVED:{icon:b,className:"text-amber-500"},TASK_UPDATED:{icon:b,className:"text-amber-500"},SYNC_COMPLETED:{icon:y,className:"text-teal-500"},MEETING_STARTING_SOON:{icon:M,className:"text-sky-500"},SCHEDULE_RUN:{icon:y,className:"text-teal-500"},SCHEDULE_RUN_FAILED:{icon:y,className:"text-red-400"}};function V(e){if(!(e<=0))return e>99?"99+":e}function I(e){if(!e)return null;const s=new Date(e);return Number.isNaN(s.getTime())?null:s}function X(e){const s=I(e);if(!s)return"older";const a=new Date;a.setHours(0,0,0,0);const i=new Date(a);i.setDate(i.getDate()-1);const r=new Date(a);r.setDate(r.getDate()-7);const n=new Date(s);return n.setHours(0,0,0,0),n.getTime()>=a.getTime()?"today":n.getTime()>=i.getTime()?"yesterday":n.getTime()>=r.getTime()?"this_week":"older"}function q(e){const s=I(e);if(!s)return"";const a=Math.max(0,Date.now()-s.getTime()),i=Math.floor(a/6e4),r=Math.floor(a/36e5),n=Math.floor(a/864e5);return i<1?"Just now":i<60?`${i}m ago`:r<24?`${r}h ago`:n===1?"Yesterday":n<7?`${n}d ago`:s.toLocaleDateString()}function Z({label:e}){return t.jsxs("div",{className:"flex flex-col items-center justify-center py-16",role:"status","aria-live":"polite","aria-busy":"true",children:[t.jsx(c,{icon:C,size:32,className:"animate-spin text-muted-foreground","aria-hidden":"true"}),t.jsx("p",{className:"mt-3 text-sm text-muted-foreground",children:e})]})}function j({service:e}){return t.jsx(k,{icon:t.jsx(c,{icon:D,size:24,"aria-hidden":"true"}),title:`No ${e} suggestions`,description:"New draft suggestions will appear here for review."})}function ee({items:e,unreadCount:s,isLoading:a=!1,isError:i=!1,isMarkingRead:r,isMarkingAllRead:n,isDeleting:g,onRetry:m,onMarkRead:x,onMarkAllRead:T,onDelete:E}){const[o,w]=h.useState("all"),S=[{id:"all",label:"All"},{id:"unread",label:"Unread",badge:V(s)},{id:"slack",label:"Slack Suggestions"},{id:"teams",label:"Teams Suggestions"}],p=h.useMemo(()=>o==="unread"?e.filter(l=>!l.read):o==="all"?e:[],[o,e]),A=h.useMemo(()=>{const l=new Map;for(const d of p){const u=X(d.createdAt);l.set(u,[...l.get(u)??[],d])}return Q.filter(d=>l.has(d)).map(d=>({group:d,items:l.get(d)??[]}))},[p]),R=o==="slack"||o==="teams";return t.jsxs("div",{className:"relative flex h-full min-h-0 flex-col bg-background",children:[t.jsx("div",{className:f("shrink-0 border-b border-border py-2",N),children:t.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[t.jsx("div",{className:"min-w-0 overflow-x-auto [scrollbar-width:none]",children:t.jsx(B,{tabs:S,activeTab:o,onChange:w,ariaLabel:"Filter notifications",idBase:"inbox",className:"w-max",tabClassName:"min-h-0 rounded-md"})}),!R&&s>0?t.jsx("button",{type:"button",onClick:T,disabled:n,className:"shrink-0 rounded-md px-1 py-1 text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",children:n?"Marking as read…":"Mark all as read"}):null]})}),t.jsx("div",{id:`inbox-panel-${o}`,role:"tabpanel","aria-labelledby":`inbox-tab-${o}`,"data-scroll-restoration-id":"dashboard-primary-scroll",className:f("min-h-0 flex-1 overflow-y-auto overscroll-contain py-4",N),children:o==="slack"?t.jsx(j,{service:"Slack"}):o==="teams"?t.jsx(j,{service:"Teams"}):a?t.jsx(Z,{label:"Loading notifications..."}):i?t.jsx(_,{title:"Inbox could not load",onRetry:m}):p.length===0?t.jsx(k,{icon:t.jsx(c,{icon:D,size:24,"aria-hidden":"true"}),title:o==="unread"?"No unread notifications":"No notifications yet",description:o==="unread"?"You're all caught up":"You'll be notified when your meetings are processed and tasks are updated"}):t.jsx("div",{className:"w-full space-y-8",children:A.map(({group:l,items:d})=>t.jsxs("section",{"aria-labelledby":`inbox-${l}`,children:[t.jsx("h2",{id:`inbox-${l}`,className:"mb-3 px-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:J[l]}),t.jsx("div",{className:"space-y-0.5",children:d.map(u=>t.jsx(te,{item:u,isMarkingRead:r,isDeleting:g,onMarkRead:x,onDelete:E},u.id))})]},l))})})]})}function te({item:e,isMarkingRead:s,isDeleting:a,onMarkRead:i,onDelete:r}){const n=W[e.type.toUpperCase()]??{icon:$,className:"text-muted-foreground"},g=q(e.createdAt),m=K(e.actionUrl,e.metadata),x=t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted/80",children:t.jsx(c,{icon:n.icon,size:18,weight:"fill",className:n.className,"aria-hidden":"true"})}),t.jsxs("span",{className:"min-w-0 flex-1 text-left",children:[t.jsx("span",{className:f("block text-xs leading-snug",e.read?"text-muted-foreground":"font-semibold text-foreground"),children:e.title}),t.jsxs("span",{className:"mt-0.5 block truncate text-[10px] text-muted-foreground",children:[e.body?`${e.body} · `:null,g]})]})]});return t.jsxs("article",{className:f("group flex min-h-[53px] items-start gap-3 rounded-lg px-3 py-2.5 transition-colors hover:bg-muted",!e.read&&"bg-muted/40"),children:[m?t.jsx("a",{href:m,className:"flex min-w-0 flex-1 items-start gap-3 rounded-md focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring","aria-label":`Open ${e.title}`,children:x}):t.jsx("div",{className:"flex min-w-0 flex-1 items-start gap-3",children:x}),t.jsxs("div",{className:"flex shrink-0 items-center gap-1.5 self-center",children:[e.read?null:t.jsx("span",{className:"size-2 shrink-0 rounded-full bg-sky-500","aria-label":"Unread"}),e.read?null:t.jsx("button",{type:"button",onClick:()=>i(e.id),disabled:s,className:"rounded-md p-1.5 text-muted-foreground opacity-0 transition-[color,background-color,opacity] hover:bg-muted hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover:opacity-100 disabled:pointer-events-none disabled:opacity-30",title:"Mark as read","aria-label":`Mar
1k ${e.title} as read`,children:t.jsx(c,{icon:b,size:14,"aria-hidden":"true"})}),t.jsx("button",{type:"button",onClick:()=>r(e.id),disabled:a,className:"rounded-md p-1.5 text-muted-foreground opacity-0 transition-[color,background-color,opacity] hover:bg-destructive/10 hover:text-destructive focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover:opacity-100 disabled:pointer-events-none disabled:opacity-30",title:"Delete","aria-label":`Delete ${e.title}`,children:t.jsx(c,{icon:P,size:14,"aria-hidden":"true"})})]})]})}function se({children:e}){return t.jsx(U,{title:"Inbox",children:e})}function ie(){const e=v(Y()),s=v(F()),a=z(),i=H(),r=G();return t.jsx(se,{children:t.jsx(ee,{items:e.data??[],unreadCount:s.data??0,isLoading:e.isLoading||s.isLoading,isError:e.isError||s.isError,isMarkingRead:a.isPending,isMarkingAllRead:i.isPending,isDeleting:r.isPending,onRetry:()=>{Promise.all([e.refetch(),s.refetch()])},onMarkRead:n=>a.mutate(n),onMarkAllRead:()=>i.mutate(),onDelete:n=>r.mutate(n)})})}export{ie as component};

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.