PageSourceSearch

https://incommand.ai/assets/ProjectTimelinePanel-7gldqYYs.js

js incommand.ai collected 2026-10-05 15:02:55 UTC 3,038 bytes, 6 lines download raw bytes

1import{j as e}from"./vendor-radix-BnNg3BH5.js";import{S as n,a as d,b as x,c as p,d as f}from"./sheet-BMVGKQ_l.js";import{S as h}from"./scroll-area-OnGFamwr.js";import{B as u}from"./badge-Cl7apleB.js";import{C as j}from"./clock-BYWbH6MV.js";import{C as b}from"./calendar-Ce69BthR.js";import{A as o}from"./arrow-right-LjC5fuTq.js";import{d as g,F as y}from"./index-Epr9psQo.js";import{F as N}from"./flag-BJdgpYpl.js";import{T as w}from"./target-CyHaUH9t.js";import{U as C}from"./users-uAR6_Qvs.js";import{f as S}from"./format-Bw8okCdv.js";import"./vendor-react-67mgcWXU.js";import"./vendor-supabase-CTlrDMdV.js";import"./vendor-charts-Dck3qfzI.js";import"./vendor-query-PMAhJHCS.js";import"./vendor-motion-CSzk-Fqg.js";import"./en-US-DJiZ5LCQ.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const v=g("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]),P={created:{icon:v,label:"Project Created",color:"text-primary"},started:{icon:N,label:"Project Started",color:"text-success"},milestone:{icon:w,label:"Milestone",color:"text-warning"},deliverable:{icon:y,label:"Deliverable",color:"text-info"},team:{icon:C,label:"Team Update",color:"text-muted-foreground"},status:{icon:o,label:"Status Change",color:"text-accent"}};function K({open:a,onOpenChange:l,projectName:i,events:s}){return e.jsx(n,{open:a,onOpenChange:l,children:e.jsxs(d,{className:"w-full sm:max-w-lg",children:[e.jsxs(x,{children:[e.jsxs(p,{className:"flex items-center gap-2",children:[e.jsx(j,{className:"h-5 w-5"}),"Project Timeline"]}),e.jsx(f,{children:i})]}),e.jsx(h,{className:"h-[calc(100vh-120px)] mt-6 pr-4",children:s.length===0?e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(b,{className:"h-12 w-12 mx-auto mb-4 opacity-30"}),e.jsx("p",{children:"No timeline events yet"})]}):e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute left-5 top-0 bottom-0 w-px bg-border"}),e.jsx("div",{className:"space-y-6",children:s.map((t,c)=>{const r=P[t.type]||{icon:o,label:t.type,color:"text-muted-foreground"},m=r.icon;return e.jsxs("div",{className:"relative pl-12",children:[e.jsx("div",{className:`absolute left-3 w-5 h-5 rounded-full bg-background border-2 flex items-center justify-center ${c===0?"border-primary":"border-muted"}`,children:e.jsx(m,{className:`h-3 w-3 ${r.color}`})}),e.jsxs("div",{className:"bg-muted/50 rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(u,{variant:"outline",className:"mb-2",children:r.label}),e.jsx("time",{className:"text-xs text-muted-foreground",children:S(new Date(t.date),"MMM d, yyyy")})]}),e.jsx("p",{className:"font-medium text-sm",children:t.title}),t.description&&e.jsx("p",{className:"text-sm mt-1 text-muted-foreground",children:t.description})]})]},t.id)})})]})})]})})}export{K as ProjectTimelinePanel};

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.