PageSourceSearch

https://hiiboss.ai/assets/TaskBoard-DsNamKZA.js

js hiiboss.ai collected 2026-10-05 12:09:15 UTC 10,291 bytes, 1 lines download raw bytes

1import{r as l,u as z,g as G,s as p,j as e,L as Q,B as T,D as Z,P as J,h as K,Q as X,R as ee,T as m,I as L,V as se,W as j,Y as g,Z as f,_ as v,$ as r,C as i,d,a as C,b as y,i as O,a0 as te,a1 as ae,a2 as re,l as le,k as ne}from"./index-Dn3Tem9S.js";import{P as ie}from"./progress-BVfWxDYI.js";import{T as de,a as ce,b as N}from"./tabs-tFAX6vso.js";import{A as oe}from"./arrow-left-tmeQj7F7.js";import{P as xe}from"./plus-CU8ZKO7O.js";import{T as me}from"./target-D64XNYUF.js";import{C as ue}from"./circle-alert-Bivt2OSg.js";const M=[{value:"sales",label:"Sales"},{value:"marketing",label:"Marketing"},{value:"hr",label:"Human Resources"},{value:"support",label:"Customer Support"},{value:"finance",label:"Finance"},{value:"operations",label:"Operations"}];function be(){const[c,k]=l.useState([]),[_,V]=l.useState([]),[B,D]=l.useState(!0),[b,E]=l.useState("all"),[w,F]=l.useState("all"),[R,S]=l.useState(!1),[a,o]=l.useState({title:"",description:"",department:"sales",priority:"medium",due_date:""}),{toast:u}=z(),H=G();l.useEffect(()=>{P()},[]);const P=async()=>{D(!0);try{const[s,t]=await Promise.all([p.from("tasks").select("*").order("created_at",{ascending:!1}),p.from("business_objectives").select("*")]);s.data&&k(s.data),t.data&&V(t.data)}catch(s){console.error("Error fetching data:",s)}finally{D(!1)}},$=async()=>{if(a.title.trim())try{const{error:s}=await p.from("tasks").insert([{title:a.title,description:a.description||null,department:a.department,priority:a.priority,due_date:a.due_date||null,status:"pending"}]);if(s)throw s;u({title:"Task created!",description:"Your new task has been added."}),o({title:"",description:"",department:"sales",priority:"medium",due_date:""}),S(!1),P()}catch{u({title:"Error",description:"Failed to create task",variant:"destructive"})}},U=async(s,t)=>{try{const x={status:t};t==="completed"&&(x.completed_at=new Date().toISOString());const{error:I}=await p.from("tasks").update(x).eq("id",s);if(I)throw I;k(q=>q.map(h=>h.id===s?{...h,status:t,completed_at:t==="completed"?new Date().toISOString():h.completed_at}:h)),t==="completed"&&u({title:"Task completed! 🎉",description:"Great job!"})}catch{u({title:"Error",description:"Failed to update task",variant:"destructive"})}},A=c.filter(s=>!(b!=="all"&&s.status!==b||w!=="all"&&s.department!==w)),n={total:c.length,pending:c.filter(s=>s.status==="pending").length,inProgress:c.filter(s=>s.status==="in_progress").length,completed:c.filter(s=>s.status==="completed").length},W=s=>{switch(s){case"urgent":return"bg-red-500";case"high":return"bg-orange-500";case"medium":return"bg-amber-500";default:return"bg-green-500"}},Y=s=>{switch(s){case"completed":return e.jsx(ne,{className:"h-4 w-4 text-green-500"});case"in_progress":return e.jsx(le,{className:"h-4 w-4 text-amber-500"});default:return e.jsx(ue,{className:"h-4 w-4 text-muted-foreground"})}};return B?e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:e.jsx(Q,{className:"h-8 w-8 animate-spin text-primary"})}):e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("div",{className:"border-b bg-card",children:e.jsx("div",{className:"container mx-auto px-6 py-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(T,{variant:"ghost",size:"icon",onClick:()=>H("/"),children:e.jsx(oe,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Task Board"}),e.jsx("p",{className:"text-muted-foreground",children:"Manage tasks and track progress"})]})]}),e.jsxs(Z,{open:R,onOpenChange:S,children:[e.jsx(J,{asChild:!0,children:e.jsxs(T,{children:[e.jsx(xe,{className:"h-4 w-4 mr-2"}),"Add Task"]})}),e.jsxs(K,{children:[e.jsx(X,{children:e.jsx(ee,{children:"Create New Task"})}),e.jsxs("div",{className:"space-y-4 mt-4",children:[e.jsxs("div",{children:[e.jsx(m,{children:"Title"}),e.jsx(L,{value:a.title,onChange:s=>o(t=>({...t,title:s.target.value})),placeholder:"Task title"})]}),e.jsxs("div",{children:[e.jsx(m,{children:"Description"}),e.jsx(se,{value:a.description,onChange:s=>o(t=>({...t,description:s.target.value})),placeholder:"Optional description"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(m,{children:"Department"}),e.jsxs(j,{value:a.department,onValueChange:s=>o(t=>({...t,department:s})),children:[e.jsx(g,{children:e.jsx(f,{})}),e.jsx(v,{children:M.map(s=>e.jsx(r,{value:s.value,children:s.label},s.value))})]})]}),e.jsxs("div",{children:[e.jsx(m,{children:"Priority"}),e.jsxs(j,{value:a.priority,onValueChange:s=>o(t=>({...t,priority:s})),children:[e.jsx(g,{children:e.jsx(f,{})}),e.jsxs(v,{children:[e.jsx(r,{value:"low",children:"Low"}),e.jsx(r,{value:"medium",children:"Medium"}),e.jsx(r,{value:"high",children:"High"}),e.jsx(r,{value:"urgent",children:"Urgent"})]})]})]})]}),e.jsxs("div",{children:[e.jsx(m,{children:"Due Date"}),e.jsx(L,{type:"date",value:a.due_date,onChange:s=>o(t=>({...t,due_date:s.target.value}))})]}),e.jsx(T,{onClick:$,className:"w-full",children:"Create Task"})]})]})]})]})})}),e.jsxs("div",{className:"container mx-auto px-6 py-8",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-8",children:[e.jsx(i,{children:e.jsxs(d,{className:"p-4 text-center",children:[e.jsx("p",{className:"text-3xl font-bold",children:n.total}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Total Tasks"})]})}),e.jsx(i,{children:e.jsxs(d,{className:"p-4 text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-amber-500",children:n.pending}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Pending"})]})}),e.jsx(i,{children:e.jsxs(d,{className:"p-4 text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-blue-500",children:n.inProgress}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"In Progress"})]})}),e.jsx(i,{children:e.jsxs(d,{className:"p-4 text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-green-500",children:n.completed}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Completed"})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[e.jsx("div",{className:"lg:col-span-2",children:e.jsxs(i,{children:[e.jsx(C,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"Tasks"}),e.jsx("div",{className:"flex gap-2",children:e.jsxs(j,{value:w,onValueChange:F,children:[e.jsx(g,{className:"w-[140px]",children:e.jsx(f,{placeholder:"Department"})}),e.jsxs(v,{children:[e.jsx(r,{value:"all",children:"All Depts"}),M.map(s=>e.jsx(r,{value:s.value,children:s.label},s.value))]})]})})]})}),e.jsx(d,{children:e.jsxs(de,{value:b,onValueChange:E,children:[e.jsxs(ce,{className:"mb-4",children:[e.jsx(N,{value:"all",children:"All"}),e.jsx(N,{value:"pending",children:"Pending"}),e.jsx(N,{value:"in_progress",children:"In Progress"}),e.jsx(N,{value:"completed",children:"Completed"})]}),e.jsx("div",{className:"space-y-3",children:A.length===0?e.jsx("p",{className:"text-center text-muted-foreground py-8",children:"No tasks foun
1d"}):A.map(s=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-lg border bg-card hover:bg-muted/50 transition-colors",children:[Y(s.status),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:`font-medium ${s.status==="completed"?"line-through text-muted-foreground":""}`,children:s.title}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(O,{variant:"outline",className:"text-xs",children:s.department}),s.due_date&&e.jsxs("span",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[e.jsx(te,{className:"h-3 w-3"}),new Date(s.due_date).toLocaleDateString()]})]})]}),e.jsx("div",{className:`w-2 h-2 rounded-full ${W(s.priority)}`}),e.jsxs(j,{value:s.status,onValueChange:t=>U(s.id,t),children:[e.jsx(g,{className:"w-[130px]",children:e.jsx(f,{})}),e.jsxs(v,{children:[e.jsx(r,{value:"pending",children:"Pending"}),e.jsx(r,{value:"in_progress",children:"In Progress"}),e.jsx(r,{value:"completed",children:"Completed"})]})]})]},s.id))})]})})]})}),e.jsxs("div",{children:[e.jsxs(i,{children:[e.jsxs(C,{children:[e.jsxs(y,{className:"flex items-center gap-2",children:[e.jsx(me,{className:"h-5 w-5"}),"Business Objectives"]}),e.jsx(ae,{children:"Track progress toward your goals"})]}),e.jsx(d,{children:_.length===0?e.jsx("p",{className:"text-center text-muted-foreground py-8",children:"No objectives set"}):e.jsx("div",{className:"space-y-4",children:_.map(s=>{const t=s.target_value?s.current_value/s.target_value*100:0,x=Math.ceil((new Date(s.target_date).getTime()-Date.now())/(1e3*60*60*24));return e.jsxs("div",{className:"p-3 rounded-lg border",children:[e.jsxs("div",{className:"flex items-start justify-between mb-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-sm",children:s.title}),e.jsx(O,{variant:"outline",className:"text-xs mt-1",children:s.department})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("p",{className:"text-sm font-semibold",children:[Math.round(t),"%"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:x>0?`${x}d left`:"Overdue"})]})]}),e.jsx(ie,{value:Math.min(t,100),className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[s.current_value,"/",s.target_value," ",s.unit]})]},s.id)})})})]}),e.jsxs(i,{className:"mt-4",children:[e.jsx(C,{children:e.jsxs(y,{className:"flex items-center gap-2 text-base",children:[e.jsx(re,{className:"h-4 w-4"}),"This Week"]})}),e.jsx(d,{children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Tasks Completed"}),e.jsx("span",{className:"font-semibold",children:c.filter(s=>{if(s.status!=="completed"||!s.completed_at)return!1;const t=new Date(Date.now()-7*864e5);return new Date(s.completed_at)>=t}).length})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Completion Rate"}),e.jsxs("span",{className:"font-semibold",children:[n.total>0?Math.round(n.completed/n.total*100):0,"%"]})]})]})})]})]})]})]})]})}export{be 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.