PageSourceSearch

https://vatdi.com/build/assets/AdminTasks-m8jVQYBy.js

js vatdi.com collected 2026-10-02 06:28:31 UTC 12,280 bytes, 1 lines download raw bytes

1import{u as G,e as H,r as u,j as a,L as X}from"./react-CgBY0Ze-.js";import{P as z}from"./PageHeader-B2uLUomX.js";import{u as V,D as q}from"./useDataTable-BKIraTgq.js";import{S as x}from"./StatusBadge-BLFaUmng.js";import{M as p}from"./MultiSelect--3kPkCNb.js";import{d as W,b as J,O as n,R as P,o as Q}from"./main-Cyy5nyiT.js";import{T as Z,a as ee,b as ae,c as te,S as se,d as re}from"./tasks-BLhD2Os4.js";import{aM as le,bG as ie,X as ne,cp as de,b$ as oe,ch as ce,bo as ue,T as ge}from"./vendor-NlgW4Nml.js";import{R as me,B as xe,C as pe,X as be,Y as he,T as ye,b as ke}from"./recharts-DLDRFx7F.js";import"./renderIcon-CWUPWWi0.js";import"./Pagination-DV0ATNcS.js";import"./EmptyState-CjfARjZz.js";import"./http-BCn5QfZZ.js";const ve={open:"sky",in_progress:"yellow",paused:"amber",review:"purple",human_review:"yellow",done:"emerald",closed:"red"},je={low:"gray",medium:"sky",high:"amber",urgent:"red"},E=l=>Array.isArray(l)?l:l===""||l==null?[]:[l],D={"":{bg:"bg-gray-50 hover:bg-gray-100 dark:bg-gray-800/50 dark:hover:bg-gray-700/50",active:"bg-gray-200 ring-2 ring-gray-400 dark:bg-gray-700 dark:ring-gray-500",text:"text-gray-700 dark:text-gray-200",label:"text-gray-600 dark:text-gray-300"},open:{bg:"bg-sky-50 hover:bg-sky-100 dark:bg-sky-900/30 dark:hover:bg-sky-900/50",active:"bg-sky-200 ring-2 ring-primary-400 dark:bg-sky-900/60 dark:ring-primary-500",text:"text-sky-700 dark:text-sky-300",label:"text-primary-600 dark:text-primary-300"},in_progress:{bg:"bg-yellow-50 hover:bg-yellow-100 dark:bg-yellow-900/30 dark:hover:bg-yellow-900/50",active:"bg-yellow-200 ring-2 ring-yellow-400 dark:bg-yellow-900/60 dark:ring-yellow-500",text:"text-yellow-700 dark:text-yellow-300",label:"text-yellow-600 dark:text-yellow-400"},paused:{bg:"bg-amber-50 hover:bg-amber-100 dark:bg-amber-900/30 dark:hover:bg-amber-900/50",active:"bg-amber-200 ring-2 ring-amber-400 dark:bg-amber-900/60 dark:ring-amber-500",text:"text-amber-700 dark:text-amber-300",label:"text-amber-600 dark:text-amber-400"},review:{bg:"bg-purple-50 hover:bg-purple-100 dark:bg-purple-900/30 dark:hover:bg-purple-900/50",active:"bg-purple-200 ring-2 ring-purple-400 dark:bg-purple-900/60 dark:ring-purple-500",text:"text-purple-700 dark:text-purple-300",label:"text-purple-600 dark:text-purple-400"},human_review:{bg:"bg-yellow-50 hover:bg-yellow-100 dark:bg-yellow-900/30 dark:hover:bg-yellow-900/50",active:"bg-yellow-200 ring-2 ring-yellow-400 dark:bg-yellow-900/60 dark:ring-yellow-500",text:"text-yellow-800 dark:text-yellow-200",label:"text-yellow-700 dark:text-yellow-300"},done:{bg:"bg-emerald-50 hover:bg-emerald-100 dark:bg-emerald-900/30 dark:hover:bg-emerald-900/50",active:"bg-emerald-200 ring-2 ring-emerald-400 dark:bg-emerald-900/60 dark:ring-emerald-500",text:"text-emerald-700 dark:text-emerald-300",label:"text-emerald-600 dark:text-emerald-400"},closed:{bg:"bg-red-50 hover:bg-red-100 dark:bg-red-900/30 dark:hover:bg-red-900/50",active:"bg-red-200 ring-2 ring-red-400 dark:bg-red-900/60 dark:ring-red-500",text:"text-red-700 dark:text-red-300",label:"text-red-600 dark:text-red-400"}};function $e(){var v,j,f,N,w,S,T,C,_,A;const l=G(),R=W(),d=J(),[g]=H(),F=g.get("type")||"",$=g.get("status")||"",I=g.get("priority")||"",[t,B]=u.useState(null),[o,b]=u.useState(""),[h,y]=u.useState(!1),r=V({fetchFn:e=>{const{search:s,...i}=e;return n.tasks.list({...i,q:s})},initialFilters:{status:$,type:F,priority:I}}),c=()=>{n.tasks.stats().then(e=>{var s;return B(((s=e.data)==null?void 0:s.data)||e.data)}).catch(()=>{})};u.useEffect(()=>{c()},[]);const L=e=>{R({title:"Delete Task",message:"Are you sure you want to delete this task? This action cannot be undone.",confirmText:"Delete",variant:"danger",action:()=>n.tasks.delete(e),onSuccess:()=>{r.refresh(),c()},successMessage:"Task deleted"})},k=async e=>{const s=e.status==="paused"?"open":"paused";try{await n.tasks.updateStatus(e.id,s),d.success(`Task ${s==="paused"?"paused":"resumed"}`),r.refresh(),c()}catch(i){d.error(P(i,"Failed to update status"))}},m=E(r.filters.status),O=e=>{const s=m.length===1&&m[0]===e;r.updateFilter("status",s?"":[e])},M=async()=>
1{if(!(!o||r.selected.length===0)){y(!0);try{await n.tasks.bulkStatus(r.selected,o),d.success(`Updated ${r.selected.length} task(s)`),b(""),r.setSelected([]),r.refresh(),c()}catch(e){d.error(P(e,"Failed to update tasks"))}finally{y(!1)}}},U=[{key:"created_at",label:"Date",sortable:!0,render:e=>a.jsx("span",{className:"whitespace-nowrap text-xs text-gray-500 dark:text-gray-400",children:e.created_at?Q(e.created_at):"-"})},{key:"title",label:"Task",sortable:!0,render:e=>a.jsxs("div",{className:"min-w-[200px]",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(x,{status:e.type,label:te[e.type]||e.type}),a.jsx("span",{className:"font-medium text-gray-900 dark:text-gray-100",children:e.title})]}),e.description&&a.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-0.5 line-clamp-1 max-w-md",children:e.description})]})},{key:"priority",label:"Priority",sortable:!0,render:e=>a.jsx(x,{status:e.priority,label:(e.priority||"medium").charAt(0).toUpperCase()+(e.priority||"medium").slice(1)})},{key:"status",label:"Status",sortable:!0,render:e=>a.jsx(x,{status:e.status,label:se[e.status]||e.status})},{key:"assignee",label:"Assignee",render:e=>e.assignee_name||a.jsx("span",{className:"text-gray-400 dark:text-gray-500 text-xs",children:"—"})},{key:"attachments",label:"",render:e=>{var s;return((s=e.attachments)==null?void 0:s.length)>0?a.jsxs("span",{className:"text-gray-400 dark:text-gray-500 flex items-center gap-1",title:`${e.attachments.length} file(s)`,children:[a.jsx(de,{className:"w-3.5 h-3.5"}),a.jsx("span",{className:"text-xs",children:e.attachments.length})]}):null}},{key:"actions",label:"",className:"w-32 text-right",render:e=>a.jsxs("div",{className:"flex items-center justify-end gap-1",onClick:s=>s.stopPropagation(),children:[!re.includes(e.status)&&(e.status==="paused"?a.jsx("button",{onClick:()=>k(e),className:"btn-icon text-emerald-500 dark:text-emerald-400 hover:text-emerald-700 dark:hover:text-emerald-300",title:"Resume",children:a.jsx(oe,{className:"w-4 h-4"})}):a.jsx("button",{onClick:()=>k(e),className:"btn-icon text-amber-500 dark:text-amber-400 hover:text-amber-700 dark:hover:text-amber-300",title:"Pause",children:a.jsx(ce,{className:"w-4 h-4"})})),a.jsx("button",{onClick:()=>l(`/admin/tasks/${e.id}/edit`),className:"btn-icon-primary",title:"Edit","aria-label":`Edit task ${e.title}`,children:a.jsx(ue,{className:"w-4 h-4"})}),a.jsx("button",{onClick:()=>L(e.id),className:"btn-icon-danger",title:"Delete","aria-label":`Delete task ${e.title}`,children:a.jsx(ge,{className:"w-4 h-4"})})]})}],K=[{label:"Total",value:(v=t==null?void 0:t.counts)==null?void 0:v.total,status:""},{label:"Open",value:(j=t==null?void 0:t.counts)==null?void 0:j.open,status:"open"},{label:"In Progress",value:(f=t==null?void 0:t.counts)==null?void 0:f.in_progress,status:"in_progress"},{label:"Paused",value:(N=t==null?void 0:t.counts)==null?void 0:N.paused,status:"paused"},{label:"Review",value:(w=t==null?void 0:t.counts)==null?void 0:w.review,status:"review"},{label:"Human Review",value:(S=t==null?void 0:t.counts)==null?void 0:S.human_review,status:"human_review"},{label:"Done",value:(T=t==null?void 0:t.counts)==null?void 0:T.done,status:"done"},{label:"Closed",value:(C=t==null?void 0:t.counts)==null?void 0:C.closed,status:"closed"}],Y=Object.values(r.filters).some(e=>E(e).length>0);return a.jsxs("div",{className:"space-y-6",children:[a.jsx(z,{title:"Tasks & Issues",description:`${r.meta.total||0} total tasks — routed to the ai-agents pipeline`,icon:a.jsx(ie,{className:"w-5 h-5"}),iconAccent:"indigo",action:{label:"New Task",onClick:()=>l("/admin/tasks/create")},actions:a.jsxs(X,{to:"/admin/tasks/guidelines",className:"inline-flex items-center gap-1.5 text-sm text-gray-600 dark:text-gray-300 hover:text-primary-700 dark:hover:text-primary-300 px-3 py-2 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800/50",children:[a.jsx(le,{className:"w-4 h-4"})," Guidelines"]})}),(t==null?void 0:t.counts)&&a.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-8 gap-3",children:K.map(e=>{const s=D[e.status]||D[""],i=!!e.status&&m.includes(e.status);return a.jsxs("button",{onClick:()=>e.status&&O(e.status),disabled:!e.status,className:`text-center p-3 rounded-lg transition-colors ${i?s.active:s.bg} ${e.status?"":"cursor-default"}`,children:[a.jsx("p",{className:`text-2xl font-bold ${s.text}`,children:e.value??0}),a.jsx("p",{className:`text-xs font-medium ${s.label}`,children:e.label})]},e.label)})}),t&&(((_=t.daily_completions)==null?void 0:_.length)>0||t.ai_agent!==void 0)&&a.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[a.jsxs("div",{className:"lg:col-span-2 card p-4",children:[a.jsx("h3",{className:"text-sm font-semibold text-gray-700 dark:text-gray-200 mb-3",children:"Tasks Completed (Last 14 Days)"}),a.jsx(me,{width:"100%",height:180,children:a.jsxs(xe,{data:t.daily_completions||[],children:[a.jsx(pe,{strokeDasharray:"3 3",vertical:!1}),a.jsx(be,{dataKey:"date",tick:{fontSize:10}
1,tickFormatter:e=>(e||"").slice(5)}),a.jsx(he,{allowDecimals:!1,tick:{fontSize:10}}),a.jsx(ye,{labelFormatter:e=>e}),a.jsx(ke,{dataKey:"count",fill:"#10b981",radius:[3,3,0,0]})]})})]}),a.jsxs("div",{className:"card p-4 flex flex-col justify-center",children:[a.jsx("h3",{className:"text-sm font-semibold text-gray-700 dark:text-gray-200 mb-3",children:"AI Agent Status"}),(A=t.ai_agent)!=null&&A.active?a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsxs("span",{className:"relative flex h-3 w-3",children:[a.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75"}),a.jsx("span",{className:"relative inline-flex rounded-full h-3 w-3 bg-emerald-500"})]}),a.jsxs("div",{className:"min-w-0",children:[a.jsx("p",{className:"text-sm font-medium text-emerald-700 dark:text-emerald-300",children:"Working"}),a.jsxs("p",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:["Task #",t.ai_agent.task_id,": ",t.ai_agent.task_title]})]})]}):a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("span",{className:"inline-flex rounded-full h-3 w-3 bg-gray-300 dark:bg-gray-600"}),a.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:"Idle — No tasks in progress"})]})]})]}),a.jsxs("div",{className:"card",children:[a.jsx("div",{className:"p-4 border-b border-gray-200 dark:border-gray-700",children:a.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[a.jsx("div",{className:"flex-1",children:a.jsx("input",{type:"text",placeholder:"Search tasks...",value:r.search,onChange:e=>r.setSearch(e.target.value),className:"input"})}),a.jsx(p,{label:"Type",className:"w-44",options:Z,value:r.filters.type,onChange:e=>r.updateFilter("type",e)}),a.jsx(p,{label:"Status",className:"w-44",options:ee.map(e=>{var s;return{...e,count:(s=t==null?void 0:t.counts)==null?void 0:s[e.value],tone:ve[e.value]}}),value:r.filters.status,onChange:e=>r.updateFilter("status",e)}),a.jsx(p,{label:"Priority",className:"w-40",options:ae.map(e=>({...e,tone:je[e.value]})),value:r.filters.priority,onChange:e=>r.updateFilter("priority",e)}),Y&&a.jsxs("button",{onClick:r.resetFilters,className:"btn-secondary",children:[a.jsx(ne,{className:"w-4 h-4"})," Clear"]})]})}),a.jsx("div",{className:"p-4",children:a.jsx(q,{columns:U,table:r,onRowClick:e=>l(`/admin/tasks/${e.id}`),emptyTitle:"No tasks yet",emptyDescription:"Create your first task — it will be picked up by the ai-agents pipeline.",bulkActions:a.jsxs(a.Fragment,{children:[a.jsxs("select",{value:o,onChange:e=>b(e.target.value),className:"input w-auto text-sm py-1.5",children:[a.jsx("option",{value:"",children:"Change status to…"}),a.jsx("option",{value:"open",children:"Open"}),a.jsx("option",{value:"in_progress",children:"In Progress"}),a.jsx("option",{value:"review",children:"Review"}),a.jsx("option",{value:"paused",children:"Paused"}),a.jsx("option",{value:"done",children:"Done"}),a.jsx("option",{value:"closed",children:"Closed"})]}),a.jsx("button",{onClick:M,disabled:!o||h,className:"btn-primary text-sm py-1.5 px-3",children:h?"Applying…":"Apply"})]})})})]})]})}export{$e 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.