@burdenoff/microfe-planmagnet 2026.1001.2 → 2026.1001.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  2. package/dist/planmagnet/PlanMagnetRoot.js +160 -153
  3. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  4. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  5. package/dist/planmagnet/PlanMagnetRoutes.js +121 -109
  6. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  7. package/dist/planmagnet/controls/MilestoneControls.d.ts +2 -0
  8. package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -1
  9. package/dist/planmagnet/controls/MilestoneControls.js +89 -72
  10. package/dist/planmagnet/controls/MilestoneControls.js.map +1 -1
  11. package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts +17 -0
  12. package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts.map +1 -0
  13. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js +218 -0
  14. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js.map +1 -0
  15. package/dist/planmagnet/meetings/MeetingsCard.d.ts +7 -0
  16. package/dist/planmagnet/meetings/MeetingsCard.d.ts.map +1 -0
  17. package/dist/planmagnet/meetings/MeetingsCard.js +108 -0
  18. package/dist/planmagnet/meetings/MeetingsCard.js.map +1 -0
  19. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts +9 -0
  20. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts.map +1 -0
  21. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js +232 -0
  22. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js.map +1 -0
  23. package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts +19 -0
  24. package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts.map +1 -0
  25. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js +226 -0
  26. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js.map +1 -0
  27. package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts +14 -0
  28. package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts.map +1 -0
  29. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js +81 -0
  30. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js.map +1 -0
  31. package/dist/planmagnet/meetings/meetingActions.d.ts +57 -0
  32. package/dist/planmagnet/meetings/meetingActions.d.ts.map +1 -0
  33. package/dist/planmagnet/meetings/meetingActions.js +51 -0
  34. package/dist/planmagnet/meetings/meetingActions.js.map +1 -0
  35. package/dist/planmagnet/meetings/meetingGraphql.d.ts +29 -0
  36. package/dist/planmagnet/meetings/meetingGraphql.d.ts.map +1 -0
  37. package/dist/planmagnet/meetings/meetingGraphql.js +166 -0
  38. package/dist/planmagnet/meetings/meetingGraphql.js.map +1 -0
  39. package/dist/planmagnet/meetings/meetingModel.d.ts +74 -0
  40. package/dist/planmagnet/meetings/meetingModel.d.ts.map +1 -0
  41. package/dist/planmagnet/meetings/meetingModel.js +88 -0
  42. package/dist/planmagnet/meetings/meetingModel.js.map +1 -0
  43. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts +2 -0
  44. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts.map +1 -0
  45. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js +197 -0
  46. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js.map +1 -0
  47. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts +2 -0
  48. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts.map +1 -0
  49. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js +173 -0
  50. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js.map +1 -0
  51. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +1 -1
  52. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +73 -52
  53. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +1 -1
  54. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
  55. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +205 -190
  56. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
  57. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
  58. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +192 -187
  59. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
  60. package/dist/planmagnet/reports/ShareDialog.js +65 -65
  61. package/dist/planmagnet/reports/ShareDialog.js.map +1 -1
  62. package/package.json +1 -1
@@ -8,21 +8,22 @@ import { useEntityId as ne } from "../hooks/useEntityId.js";
8
8
  import { combineLiveRefreshModes as re, useLiveRefresh as s } from "../hooks/useLiveRefresh.js";
9
9
  import { LiveStatus as c } from "../controls/LiveStatus.js";
10
10
  import { PresenceAvatars as ie } from "../presence/PresenceAvatars.js";
11
- import { ProjectComments as ae } from "../comments/TargetComments.js";
12
- import { usePresence as l } from "../hooks/usePresence.js";
13
- import { NewRiskDialog as u, NewTemplateFromProjectDialog as d } from "../create/CreateDialogs.js";
11
+ import { ProjectComments as l } from "../comments/TargetComments.js";
12
+ import { usePresence as u } from "../hooks/usePresence.js";
13
+ import { NewRiskDialog as d, NewTemplateFromProjectDialog as ae } from "../create/CreateDialogs.js";
14
14
  import { ProjectHeaderActions as f } from "../controls/ProjectControls.js";
15
+ import { MeetingsCard as p } from "../meetings/MeetingsCard.js";
15
16
  import { ProjectBudgetsSummary as oe } from "../budgets/ProjectBudgetsSummary.js";
16
17
  import { ProjectOutlookCard as se } from "../forecast/ProjectOutlookCard.js";
17
- import { ResourceForecastCard as p } from "../forecast/ResourceForecastCard.js";
18
- import { ProjectRiskSummaryCard as ce } from "../forecast/ProjectRiskSummaryCard.js";
19
- import { Bot as le, Calendar as m, CheckSquare as ue, FolderKanban as h, LayoutTemplate as g, Route as _, ShieldAlert as v, ShieldCheck as y, Users as b, Zap as x } from "lucide-react";
20
- import { gql as S } from "@apollo/client";
18
+ import { ResourceForecastCard as ce } from "../forecast/ResourceForecastCard.js";
19
+ import { ProjectRiskSummaryCard as m } from "../forecast/ProjectRiskSummaryCard.js";
20
+ import { Bot as h, Calendar as g, CheckSquare as _, FolderKanban as v, LayoutTemplate as y, Route as b, ShieldAlert as le, ShieldCheck as ue, Users as x, Zap as S } from "lucide-react";
21
+ import { gql as C } from "@apollo/client";
21
22
  import { useQuery as de } from "@apollo/client/react";
22
- import { jsx as C, jsxs as w } from "react/jsx-runtime";
23
- import { Badge as T, Button as E, Card as D, CardContent as O, CardHeader as k, CardTitle as A } from "@burdenoff/fe-libs/ui";
23
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
24
+ import { Badge as E, Button as D, Card as O, CardContent as k, CardHeader as A, CardTitle as j } from "@burdenoff/fe-libs/ui";
24
25
  //#region src/planmagnet/pages/ProjectsProjectDetailPagePage.tsx
25
- var j = ["GetProjectDetail"], M = S`
26
+ var M = ["GetProjectDetail"], N = C`
26
27
  query GetProjectDetail($id: ID!) {
27
28
  planmagnetProject(id: $id) {
28
29
  id
@@ -95,64 +96,64 @@ var j = ["GetProjectDetail"], M = S`
95
96
  }
96
97
  }
97
98
  }
98
- `, N = {
99
+ `, P = {
99
100
  ACTIVE: "bg-green-100 text-green-800",
100
101
  ON_HOLD: "bg-orange-100 text-orange-800",
101
102
  CANCELLED: "bg-red-100 text-red-800",
102
103
  COMPLETED: "bg-blue-100 text-blue-800",
103
104
  PLANNING: "bg-gray-100 text-gray-800",
104
105
  ARCHIVED: "bg-gray-100 text-gray-800"
105
- }, P = {
106
+ }, F = {
106
107
  CRITICAL: "bg-red-100 text-red-800",
107
108
  HIGH: "bg-orange-100 text-orange-800",
108
109
  MEDIUM: "bg-yellow-100 text-yellow-800",
109
110
  LOW: "bg-blue-100 text-blue-800",
110
111
  NEGLIGIBLE: "bg-gray-100 text-gray-800"
111
- }, F = new Set([
112
+ }, I = new Set([
112
113
  "IDENTIFIED",
113
114
  "ANALYZING",
114
115
  "MITIGATING",
115
116
  "ACCEPTED"
116
117
  ]);
117
- function I() {
118
- let S = ne("projectId"), I = t(), { workspaceId: L } = e(), { data: R, loading: z, error: B } = de(M, {
119
- variables: { id: S },
120
- skip: !S
121
- }), V = s({
122
- kind: "project",
123
- projectId: S,
124
- queries: j
118
+ function L() {
119
+ let C = ne("projectId"), L = t(), { workspaceId: R } = e(), { data: z, loading: B, error: V } = de(N, {
120
+ variables: { id: C },
121
+ skip: !C
125
122
  }), fe = s({
126
- kind: "sprint",
127
- projectId: S,
128
- enabled: !!S,
129
- queries: j
123
+ kind: "project",
124
+ projectId: C,
125
+ queries: M
130
126
  }), pe = s({
127
+ kind: "sprint",
128
+ projectId: C,
129
+ enabled: !!C,
130
+ queries: M
131
+ }), me = s({
131
132
  kind: "workItem",
132
- projectId: S,
133
- queries: j
134
- }), me = re(V.mode, fe.mode, pe.mode), H = l("PROJECT", S);
135
- if (!S) return /* @__PURE__ */ C("div", {
133
+ projectId: C,
134
+ queries: M
135
+ }), he = re(fe.mode, pe.mode, me.mode), H = u("PROJECT", C);
136
+ if (!C) return /* @__PURE__ */ w("div", {
136
137
  className: "p-6 text-muted-foreground",
137
138
  children: "No project selected. Open one from the list."
138
139
  });
139
- if (z && !R) return /* @__PURE__ */ C("div", {
140
+ if (B && !z) return /* @__PURE__ */ w("div", {
140
141
  className: "flex items-center justify-center p-12",
141
- children: /* @__PURE__ */ C("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
142
+ children: /* @__PURE__ */ w("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
142
143
  });
143
- if (B) return /* @__PURE__ */ w("div", {
144
+ if (V) return /* @__PURE__ */ T("div", {
144
145
  className: "p-6 text-red-500",
145
- children: ["Error loading project: ", B.message]
146
+ children: ["Error loading project: ", V.message]
146
147
  });
147
- let U = R?.planmagnetProject;
148
- if (!U) return /* @__PURE__ */ C("div", {
148
+ let U = z?.planmagnetProject;
149
+ if (!U) return /* @__PURE__ */ w("div", {
149
150
  className: "p-6 text-muted-foreground",
150
151
  children: "Project not found."
151
152
  });
152
- let W = U.workItems ?? [], G = U.sprints ?? [], K = U.milestones ?? [], q = U.risks ?? [], J = q.filter((e) => F.has(e.status)), he = [...J].sort((e, t) => t.riskScore - e.riskScore).slice(0, 3), Y = G.find((e) => e.status === "ACTIVE"), X = G.filter((e) => e.status === "COMPLETED" && e.velocity != null).sort((e, t) => (t.endDate ?? "").localeCompare(e.endDate ?? ""))[0], Z = ee(W.map((e) => ({
153
+ let W = U.workItems ?? [], G = U.sprints ?? [], K = U.milestones ?? [], q = U.risks ?? [], J = q.filter((e) => I.has(e.status)), ge = [...J].sort((e, t) => t.riskScore - e.riskScore).slice(0, 3), Y = G.find((e) => e.status === "ACTIVE"), X = G.filter((e) => e.status === "COMPLETED" && e.velocity != null).sort((e, t) => (t.endDate ?? "").localeCompare(e.endDate ?? ""))[0], Z = ee(W.map((e) => ({
153
154
  status: e.status,
154
155
  storyPoints: e.storyPoints
155
- }))), Q = W.filter((e) => e.status !== "CANCELLED"), ge = Q.filter((e) => e.status === "DONE").length, _e = [...W].sort((e, t) => t.createdAt.localeCompare(e.createdAt)).slice(0, 5), $ = Object.values(W.reduce((e, t) => {
156
+ }))), Q = W.filter((e) => e.status !== "CANCELLED"), _e = Q.filter((e) => e.status === "DONE").length, ve = [...W].sort((e, t) => t.createdAt.localeCompare(e.createdAt)).slice(0, 5), $ = Object.values(W.reduce((e, t) => {
156
157
  if (!t.sprint?.team) return e;
157
158
  let n = e[t.sprint.id] ?? {
158
159
  sprint: {
@@ -167,219 +168,219 @@ function I() {
167
168
  title: t.title
168
169
  }), e[t.sprint.id] = n, e;
169
170
  }, {}));
170
- return /* @__PURE__ */ w("div", {
171
+ return /* @__PURE__ */ T("div", {
171
172
  className: "space-y-6 p-6",
172
173
  children: [
173
- /* @__PURE__ */ w("div", {
174
+ /* @__PURE__ */ T("div", {
174
175
  className: "flex items-center justify-between",
175
- children: [/* @__PURE__ */ w("div", { children: [
176
- /* @__PURE__ */ w("div", {
176
+ children: [/* @__PURE__ */ T("div", { children: [
177
+ /* @__PURE__ */ T("div", {
177
178
  className: "flex items-center gap-2",
178
179
  children: [
179
- /* @__PURE__ */ C(h, { className: "h-5 w-5 text-primary" }),
180
- /* @__PURE__ */ C("h1", {
180
+ /* @__PURE__ */ w(v, { className: "h-5 w-5 text-primary" }),
181
+ /* @__PURE__ */ w("h1", {
181
182
  className: "text-2xl font-semibold",
182
183
  children: U.name
183
184
  }),
184
- /* @__PURE__ */ C("span", {
185
- className: `text-xs px-2 py-0.5 rounded-full capitalize ${N[U.status] ?? "bg-gray-100"}`,
185
+ /* @__PURE__ */ w("span", {
186
+ className: `text-xs px-2 py-0.5 rounded-full capitalize ${P[U.status] ?? "bg-gray-100"}`,
186
187
  children: U.status.toLowerCase().replace("_", " ")
187
188
  }),
188
- /* @__PURE__ */ C(c, { mode: me })
189
+ /* @__PURE__ */ w(c, { mode: he })
189
190
  ]
190
191
  }),
191
- /* @__PURE__ */ C("p", {
192
+ /* @__PURE__ */ w("p", {
192
193
  className: "text-sm text-muted-foreground mt-1",
193
194
  children: U.description ?? "No description"
194
195
  }),
195
- /* @__PURE__ */ C(ie, { others: H.others })
196
- ] }), /* @__PURE__ */ w("div", {
196
+ /* @__PURE__ */ w(ie, { others: H.others })
197
+ ] }), /* @__PURE__ */ T("div", {
197
198
  className: "flex flex-col items-end gap-2",
198
199
  children: [
199
- /* @__PURE__ */ C(f, {
200
+ /* @__PURE__ */ w(f, {
200
201
  projectId: U.id,
201
202
  name: U.name,
202
203
  status: U.status
203
204
  }),
204
- /* @__PURE__ */ w("div", {
205
+ /* @__PURE__ */ T("div", {
205
206
  className: "flex items-center gap-2",
206
207
  children: [
207
- /* @__PURE__ */ w(E, {
208
+ /* @__PURE__ */ T(D, {
208
209
  size: "sm",
209
210
  variant: "outline",
210
- onClick: () => I("/automation/automation-rules-page"),
211
+ onClick: () => L("/automation/automation-rules-page"),
211
212
  "data-testid": "project-automation-rules",
212
- children: [/* @__PURE__ */ C(le, { className: "mr-1 h-4 w-4" }), "Automation rules"]
213
+ children: [/* @__PURE__ */ w(h, { className: "mr-1 h-4 w-4" }), "Automation rules"]
213
214
  }),
214
- /* @__PURE__ */ w(E, {
215
+ /* @__PURE__ */ T(D, {
215
216
  size: "sm",
216
217
  variant: "outline",
217
- onClick: () => I(`/projects/quality-gates-page?projectId=${encodeURIComponent(U.id)}`),
218
+ onClick: () => L(`/projects/quality-gates-page?projectId=${encodeURIComponent(U.id)}`),
218
219
  "data-testid": "project-quality-gates",
219
- children: [/* @__PURE__ */ C(y, { className: "mr-1 h-4 w-4" }), "Quality gates"]
220
+ children: [/* @__PURE__ */ w(ue, { className: "mr-1 h-4 w-4" }), "Quality gates"]
220
221
  }),
221
- /* @__PURE__ */ C(d, {
222
+ /* @__PURE__ */ w(ae, {
222
223
  projectId: U.id,
223
224
  projectName: U.name,
224
- onCreated: (e) => I(a("/templates/edit-template-page", e)),
225
- trigger: /* @__PURE__ */ w(E, {
225
+ onCreated: (e) => L(a("/templates/edit-template-page", e)),
226
+ trigger: /* @__PURE__ */ T(D, {
226
227
  size: "sm",
227
228
  variant: "outline",
228
229
  "data-testid": "project-save-as-template",
229
- children: [/* @__PURE__ */ C(g, { className: "mr-1 h-4 w-4" }), "Save as template"]
230
+ children: [/* @__PURE__ */ w(y, { className: "mr-1 h-4 w-4" }), "Save as template"]
230
231
  })
231
232
  })
232
233
  ]
233
234
  }),
234
- /* @__PURE__ */ C(T, {
235
+ /* @__PURE__ */ w(E, {
235
236
  variant: "outline",
236
237
  className: "capitalize",
237
238
  children: U.methodology.toLowerCase()
238
239
  }),
239
- /* @__PURE__ */ w(E, {
240
+ /* @__PURE__ */ T(D, {
240
241
  size: "sm",
241
242
  variant: "outline",
242
- onClick: () => I(a("/projects/critical-path-page", U.id)),
243
- children: [/* @__PURE__ */ C(_, { className: "mr-1 h-4 w-4" }), "Critical path"]
243
+ onClick: () => L(a("/projects/critical-path-page", U.id)),
244
+ children: [/* @__PURE__ */ w(b, { className: "mr-1 h-4 w-4" }), "Critical path"]
244
245
  })
245
246
  ]
246
247
  })]
247
248
  }),
248
- /* @__PURE__ */ w("div", {
249
+ /* @__PURE__ */ T("div", {
249
250
  className: "grid grid-cols-2 md:grid-cols-4 gap-4",
250
251
  children: [
251
- /* @__PURE__ */ C(D, { children: /* @__PURE__ */ w(O, {
252
+ /* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
252
253
  className: "pt-4",
253
- children: [/* @__PURE__ */ w("div", {
254
+ children: [/* @__PURE__ */ T("div", {
254
255
  className: "flex items-center gap-2 text-muted-foreground text-xs",
255
- children: [/* @__PURE__ */ C(ue, { className: "h-4 w-4" }), "Work Items"]
256
- }), /* @__PURE__ */ w("p", {
256
+ children: [/* @__PURE__ */ w(_, { className: "h-4 w-4" }), "Work Items"]
257
+ }), /* @__PURE__ */ T("p", {
257
258
  className: "text-xl font-bold mt-1",
258
259
  children: [
259
- ge,
260
+ _e,
260
261
  "/",
261
262
  Q.length
262
263
  ]
263
264
  })]
264
265
  }) }),
265
- /* @__PURE__ */ C(D, { children: /* @__PURE__ */ w(O, {
266
+ /* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
266
267
  className: "pt-4",
267
- children: [/* @__PURE__ */ w("div", {
268
+ children: [/* @__PURE__ */ T("div", {
268
269
  className: "flex items-center gap-2 text-muted-foreground text-xs",
269
- children: [/* @__PURE__ */ C(x, { className: "h-4 w-4" }), "Sprints"]
270
- }), /* @__PURE__ */ C("p", {
270
+ children: [/* @__PURE__ */ w(S, { className: "h-4 w-4" }), "Sprints"]
271
+ }), /* @__PURE__ */ w("p", {
271
272
  className: "text-xl font-bold mt-1",
272
273
  children: G.length
273
274
  })]
274
275
  }) }),
275
- /* @__PURE__ */ C(D, { children: /* @__PURE__ */ w(O, {
276
+ /* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
276
277
  className: "pt-4",
277
- children: [/* @__PURE__ */ w("div", {
278
+ children: [/* @__PURE__ */ T("div", {
278
279
  className: "flex items-center gap-2 text-muted-foreground text-xs",
279
- children: [/* @__PURE__ */ C(m, { className: "h-4 w-4" }), "Milestones"]
280
- }), /* @__PURE__ */ C("p", {
280
+ children: [/* @__PURE__ */ w(g, { className: "h-4 w-4" }), "Milestones"]
281
+ }), /* @__PURE__ */ w("p", {
281
282
  className: "text-xl font-bold mt-1",
282
283
  children: K.length
283
284
  })]
284
285
  }) }),
285
- /* @__PURE__ */ C(D, { children: /* @__PURE__ */ w(O, {
286
+ /* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
286
287
  className: "pt-4",
287
- children: [/* @__PURE__ */ w("div", {
288
+ children: [/* @__PURE__ */ T("div", {
288
289
  className: "flex items-center gap-2 text-muted-foreground text-xs",
289
- children: [/* @__PURE__ */ C(b, { className: "h-4 w-4" }), "Owner"]
290
- }), /* @__PURE__ */ C("p", {
290
+ children: [/* @__PURE__ */ w(x, { className: "h-4 w-4" }), "Owner"]
291
+ }), /* @__PURE__ */ w("p", {
291
292
  className: "text-sm font-bold mt-1 truncate",
292
- children: /* @__PURE__ */ C(n, { id: U.ownerId })
293
+ children: /* @__PURE__ */ w(n, { id: U.ownerId })
293
294
  })]
294
295
  }) })
295
296
  ]
296
297
  }),
297
- /* @__PURE__ */ w("div", {
298
+ /* @__PURE__ */ T("div", {
298
299
  className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
299
- children: [/* @__PURE__ */ C(te, {
300
- workspaceId: L,
300
+ children: [/* @__PURE__ */ w(te, {
301
+ workspaceId: R,
301
302
  projectId: U.id,
302
303
  sprintId: Y?.id,
303
304
  sprintName: Y?.name
304
- }), /* @__PURE__ */ C(se, {
305
- workspaceId: L,
305
+ }), /* @__PURE__ */ w(se, {
306
+ workspaceId: R,
306
307
  projectId: U.id
307
308
  })]
308
309
  }),
309
- /* @__PURE__ */ w("div", {
310
+ /* @__PURE__ */ T("div", {
310
311
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
311
- children: [/* @__PURE__ */ w("div", {
312
+ children: [/* @__PURE__ */ T("div", {
312
313
  className: "lg:col-span-2 space-y-6",
313
314
  children: [
314
- /* @__PURE__ */ w(D, { children: [/* @__PURE__ */ C(k, { children: /* @__PURE__ */ C(A, { children: "Timeline" }) }), /* @__PURE__ */ w(O, { children: [
315
- /* @__PURE__ */ w("div", {
315
+ /* @__PURE__ */ T(O, { children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ w(j, { children: "Timeline" }) }), /* @__PURE__ */ T(k, { children: [
316
+ /* @__PURE__ */ T("div", {
316
317
  className: "flex justify-between text-sm mb-2",
317
- children: [/* @__PURE__ */ C("span", {
318
+ children: [/* @__PURE__ */ w("span", {
318
319
  className: "text-muted-foreground",
319
320
  children: "Tasks done"
320
- }), /* @__PURE__ */ C("span", {
321
+ }), /* @__PURE__ */ w("span", {
321
322
  className: "font-medium",
322
323
  children: Z === null ? "No open tasks" : `${Z}%`
323
324
  })]
324
325
  }),
325
- /* @__PURE__ */ C("div", {
326
+ /* @__PURE__ */ w("div", {
326
327
  className: "w-full h-4 rounded-full bg-muted overflow-hidden",
327
- children: /* @__PURE__ */ C("div", {
328
+ children: /* @__PURE__ */ w("div", {
328
329
  className: "h-full bg-primary rounded-full",
329
330
  style: { width: `${Z ?? 0}%` }
330
331
  })
331
332
  }),
332
- /* @__PURE__ */ w("div", {
333
+ /* @__PURE__ */ T("div", {
333
334
  className: "flex justify-between text-xs text-muted-foreground mt-2",
334
- children: [/* @__PURE__ */ C("span", { children: U.startDate ? new Date(U.startDate).toLocaleDateString() : "Not set" }), /* @__PURE__ */ C("span", { children: U.endDate ? new Date(U.endDate).toLocaleDateString() : "Not set" })]
335
+ children: [/* @__PURE__ */ w("span", { children: U.startDate ? new Date(U.startDate).toLocaleDateString() : "Not set" }), /* @__PURE__ */ w("span", { children: U.endDate ? new Date(U.endDate).toLocaleDateString() : "Not set" })]
335
336
  })
336
337
  ] })] }),
337
- Y && /* @__PURE__ */ w(D, { children: [/* @__PURE__ */ C(k, { children: /* @__PURE__ */ w(A, {
338
+ Y && /* @__PURE__ */ T(O, { children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ T(j, {
338
339
  className: "flex items-center gap-2",
339
- children: [/* @__PURE__ */ C(x, { className: "h-4 w-4 text-primary" }), "Active Sprint"]
340
- }) }), /* @__PURE__ */ w(O, {
340
+ children: [/* @__PURE__ */ w(S, { className: "h-4 w-4 text-primary" }), "Active Sprint"]
341
+ }) }), /* @__PURE__ */ T(k, {
341
342
  className: "space-y-3",
342
343
  children: [
343
- /* @__PURE__ */ w("div", {
344
+ /* @__PURE__ */ T("div", {
344
345
  className: "flex justify-between",
345
- children: [/* @__PURE__ */ C("span", {
346
+ children: [/* @__PURE__ */ w("span", {
346
347
  className: "font-medium",
347
348
  children: Y.name
348
- }), /* @__PURE__ */ C(T, { children: "Active" })]
349
+ }), /* @__PURE__ */ w(E, { children: "Active" })]
349
350
  }),
350
- Y.goal && /* @__PURE__ */ C("p", {
351
+ Y.goal && /* @__PURE__ */ w("p", {
351
352
  className: "text-sm text-muted-foreground",
352
353
  children: Y.goal
353
354
  }),
354
- /* @__PURE__ */ w("div", {
355
+ /* @__PURE__ */ T("div", {
355
356
  className: "grid grid-cols-3 gap-4 text-center",
356
357
  children: [
357
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ w("p", {
358
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("p", {
358
359
  className: "text-lg font-semibold",
359
360
  children: [
360
361
  Y.workItems?.filter((e) => e.status === "DONE").reduce((e, t) => e + (t.storyPoints ?? 0), 0),
361
362
  "/",
362
363
  Y.workItems?.reduce((e, t) => e + (t.storyPoints ?? 0), 0) ?? 0
363
364
  ]
364
- }), /* @__PURE__ */ C("p", {
365
+ }), /* @__PURE__ */ w("p", {
365
366
  className: "text-xs text-muted-foreground",
366
367
  children: "Points"
367
368
  })] }),
368
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ w("p", {
369
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("p", {
369
370
  className: "text-lg font-semibold",
370
371
  children: [
371
372
  Y.workItems?.filter((e) => e.status === "DONE").length ?? 0,
372
373
  "/",
373
374
  Y.workItems?.length ?? 0
374
375
  ]
375
- }), /* @__PURE__ */ C("p", {
376
+ }), /* @__PURE__ */ w("p", {
376
377
  className: "text-xs text-muted-foreground",
377
378
  children: "Tasks"
378
379
  })] }),
379
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
380
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
380
381
  className: "text-lg font-semibold",
381
382
  children: X ? `${X.velocity} pts` : "—"
382
- }), /* @__PURE__ */ C("p", {
383
+ }), /* @__PURE__ */ w("p", {
383
384
  className: "text-xs text-muted-foreground",
384
385
  children: "Velocity of the last sprint"
385
386
  })] })
@@ -387,113 +388,117 @@ function I() {
387
388
  })
388
389
  ]
389
390
  })] }),
390
- /* @__PURE__ */ w(D, { children: [/* @__PURE__ */ C(k, { children: /* @__PURE__ */ w(A, { children: [
391
+ /* @__PURE__ */ T(O, { children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ T(j, { children: [
391
392
  "Work items (",
392
393
  W.length,
393
394
  ")",
394
395
  W.length > 5 ? " · latest 5" : ""
395
- ] }) }), /* @__PURE__ */ w(O, {
396
+ ] }) }), /* @__PURE__ */ T(k, {
396
397
  className: "space-y-2",
397
- children: [_e.map((e) => /* @__PURE__ */ w("div", {
398
- ...o(() => I(`/tasks/task-detail-page?taskId=${encodeURIComponent(e.id)}`), e.key),
398
+ children: [ve.map((e) => /* @__PURE__ */ T("div", {
399
+ ...o(() => L(`/tasks/task-detail-page?taskId=${encodeURIComponent(e.id)}`), e.key),
399
400
  className: `flex items-center justify-between border rounded-md p-2.5 ${i}`,
400
- children: [/* @__PURE__ */ w("div", { children: [/* @__PURE__ */ w("p", {
401
+ children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("p", {
401
402
  className: "text-sm font-medium",
402
403
  children: [
403
404
  e.key,
404
405
  " ",
405
- /* @__PURE__ */ C("span", {
406
+ /* @__PURE__ */ w("span", {
406
407
  className: "font-normal",
407
408
  children: e.title
408
409
  })
409
410
  ]
410
- }), /* @__PURE__ */ C("div", {
411
+ }), /* @__PURE__ */ w("div", {
411
412
  className: "flex gap-1 mt-1",
412
- children: e.labels.map((e) => /* @__PURE__ */ C("span", {
413
+ children: e.labels.map((e) => /* @__PURE__ */ w("span", {
413
414
  className: "text-[10px] px-1.5 py-0.5 rounded bg-muted",
414
415
  children: e
415
416
  }, e))
416
- })] }), /* @__PURE__ */ w("div", {
417
+ })] }), /* @__PURE__ */ T("div", {
417
418
  className: "flex items-center gap-2",
418
- children: [/* @__PURE__ */ w("span", {
419
+ children: [/* @__PURE__ */ T("span", {
419
420
  className: "text-xs text-muted-foreground",
420
421
  children: [e.storyPoints ?? 0, " pts"]
421
- }), /* @__PURE__ */ C(T, {
422
+ }), /* @__PURE__ */ w(E, {
422
423
  variant: "secondary",
423
424
  className: "capitalize text-xs",
424
425
  children: e.status.toLowerCase().replace("_", " ")
425
426
  })]
426
427
  })]
427
- }, e.id)), W.length === 0 && /* @__PURE__ */ C("p", {
428
+ }, e.id)), W.length === 0 && /* @__PURE__ */ w("p", {
428
429
  className: "text-sm text-muted-foreground text-center py-4",
429
430
  children: "No work items yet."
430
431
  })]
431
432
  })] }),
432
- /* @__PURE__ */ C(ae, {
433
+ /* @__PURE__ */ w(l, {
433
434
  projectId: U.id,
434
435
  presence: H
435
436
  })
436
437
  ]
437
- }), /* @__PURE__ */ w("div", {
438
+ }), /* @__PURE__ */ T("div", {
438
439
  className: "space-y-6",
439
440
  children: [
440
- /* @__PURE__ */ C(oe, {
441
- workspaceId: L,
441
+ /* @__PURE__ */ w(oe, {
442
+ workspaceId: R,
442
443
  projectId: U.id
443
444
  }),
444
- /* @__PURE__ */ C(p, {
445
- workspaceId: L,
445
+ /* @__PURE__ */ w(ce, {
446
+ workspaceId: R,
446
447
  projectId: U.id
447
448
  }),
448
- /* @__PURE__ */ C(ce, {
449
- workspaceId: L,
449
+ /* @__PURE__ */ w(m, {
450
+ workspaceId: R,
450
451
  projectId: U.id
451
452
  }),
452
- /* @__PURE__ */ w(D, { children: [/* @__PURE__ */ C(k, { children: /* @__PURE__ */ w(A, { children: [
453
+ /* @__PURE__ */ T(O, { children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ T(j, { children: [
453
454
  "Milestones (",
454
455
  K.length,
455
456
  ")"
456
- ] }) }), /* @__PURE__ */ w(O, {
457
+ ] }) }), /* @__PURE__ */ T(k, {
457
458
  className: "space-y-3",
458
- children: [K.map((e) => /* @__PURE__ */ w("div", {
459
+ children: [K.map((e) => /* @__PURE__ */ T("div", {
459
460
  className: "border-b pb-2 last:border-0",
460
- children: [/* @__PURE__ */ w("div", {
461
+ children: [/* @__PURE__ */ T("div", {
461
462
  className: "flex justify-between",
462
- children: [/* @__PURE__ */ C("span", {
463
+ children: [/* @__PURE__ */ w("span", {
463
464
  className: "text-sm font-medium",
464
465
  children: e.name
465
- }), /* @__PURE__ */ C(T, {
466
+ }), /* @__PURE__ */ w(E, {
466
467
  variant: "outline",
467
468
  className: "text-xs capitalize",
468
469
  children: e.status.toLowerCase().replace("_", " ")
469
470
  })]
470
- }), /* @__PURE__ */ w("div", {
471
+ }), /* @__PURE__ */ T("div", {
471
472
  className: "flex items-center gap-1 text-xs text-muted-foreground mt-1",
472
- children: [/* @__PURE__ */ C(m, { className: "h-3 w-3" }), e.dueDate ? new Date(e.dueDate).toLocaleDateString() : "No due date"]
473
+ children: [/* @__PURE__ */ w(g, { className: "h-3 w-3" }), e.dueDate ? new Date(e.dueDate).toLocaleDateString() : "No due date"]
473
474
  })]
474
- }, e.id)), K.length === 0 && /* @__PURE__ */ C("p", {
475
+ }, e.id)), K.length === 0 && /* @__PURE__ */ w("p", {
475
476
  className: "text-sm text-muted-foreground text-center py-2",
476
477
  children: "No milestones."
477
478
  })]
478
479
  })] }),
479
- $.length > 0 && /* @__PURE__ */ w(D, {
480
+ /* @__PURE__ */ w(p, {
481
+ workspaceId: R,
482
+ projectId: U.id
483
+ }),
484
+ $.length > 0 && /* @__PURE__ */ T(O, {
480
485
  "data-testid": "team-sprint-work",
481
- children: [/* @__PURE__ */ C(k, { children: /* @__PURE__ */ w(A, {
486
+ children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ T(j, {
482
487
  className: "flex items-center gap-2",
483
- children: [/* @__PURE__ */ C(b, { className: "h-4 w-4" }), "Team sprint work"]
484
- }) }), /* @__PURE__ */ C(O, {
488
+ children: [/* @__PURE__ */ w(x, { className: "h-4 w-4" }), "Team sprint work"]
489
+ }) }), /* @__PURE__ */ w(k, {
485
490
  className: "space-y-3",
486
- children: $.map((e) => /* @__PURE__ */ w("div", {
491
+ children: $.map((e) => /* @__PURE__ */ T("div", {
487
492
  className: "border-b pb-2 last:border-0",
488
- children: [/* @__PURE__ */ C("button", {
493
+ children: [/* @__PURE__ */ w("button", {
489
494
  type: "button",
490
495
  className: "text-sm font-medium hover:underline text-left",
491
- onClick: () => I(a("/projects/planning-detail-page", e.sprint.id)),
496
+ onClick: () => L(a("/projects/planning-detail-page", e.sprint.id)),
492
497
  children: e.sprint.name
493
- }), /* @__PURE__ */ w("button", {
498
+ }), /* @__PURE__ */ T("button", {
494
499
  type: "button",
495
500
  className: "block text-xs text-muted-foreground hover:underline",
496
- onClick: () => I(a("/team/team-detail-page", e.sprint.team.id)),
501
+ onClick: () => L(a("/team/team-detail-page", e.sprint.team.id)),
497
502
  children: [
498
503
  e.items.length,
499
504
  " item",
@@ -506,36 +511,36 @@ function I() {
506
511
  }, e.sprint.id))
507
512
  })]
508
513
  }),
509
- /* @__PURE__ */ w(D, { children: [/* @__PURE__ */ w(k, {
514
+ /* @__PURE__ */ T(O, { children: [/* @__PURE__ */ T(A, {
510
515
  className: "flex flex-row items-center justify-between space-y-0",
511
- children: [/* @__PURE__ */ w(A, {
516
+ children: [/* @__PURE__ */ T(j, {
512
517
  className: "flex items-center gap-2",
513
518
  children: [
514
- /* @__PURE__ */ C(v, { className: "h-4 w-4 text-primary" }),
519
+ /* @__PURE__ */ w(le, { className: "h-4 w-4 text-primary" }),
515
520
  "Risks (",
516
521
  J.length,
517
522
  " open)"
518
523
  ]
519
- }), /* @__PURE__ */ C(u, {
524
+ }), /* @__PURE__ */ w(d, {
520
525
  projectId: U.id,
521
- onCreated: (e) => I(a("/risks/risk-detail-page", e))
526
+ onCreated: (e) => L(a("/risks/risk-detail-page", e))
522
527
  })]
523
- }), /* @__PURE__ */ w(O, {
528
+ }), /* @__PURE__ */ T(k, {
524
529
  className: "space-y-3",
525
530
  children: [
526
- he.map((e) => /* @__PURE__ */ w("div", {
527
- ...o(() => I(a("/risks/risk-detail-page", e.id)), e.title),
531
+ ge.map((e) => /* @__PURE__ */ T("div", {
532
+ ...o(() => L(a("/risks/risk-detail-page", e.id)), e.title),
528
533
  className: `border-b pb-2 last:border-0 ${i}`,
529
- children: [/* @__PURE__ */ w("div", {
534
+ children: [/* @__PURE__ */ T("div", {
530
535
  className: "flex justify-between gap-2",
531
- children: [/* @__PURE__ */ C("span", {
536
+ children: [/* @__PURE__ */ w("span", {
532
537
  className: "text-sm font-medium truncate",
533
538
  children: e.title
534
- }), /* @__PURE__ */ C("span", {
535
- className: `text-xs px-2 py-0.5 rounded-full shrink-0 ${P[e.severity] ?? "bg-gray-100"}`,
539
+ }), /* @__PURE__ */ w("span", {
540
+ className: `text-xs px-2 py-0.5 rounded-full shrink-0 ${F[e.severity] ?? "bg-gray-100"}`,
536
541
  children: r(e.severity)
537
542
  })]
538
- }), /* @__PURE__ */ w("div", {
543
+ }), /* @__PURE__ */ T("div", {
539
544
  className: "text-xs text-muted-foreground mt-1",
540
545
  children: [
541
546
  "Score ",
@@ -545,14 +550,14 @@ function I() {
545
550
  ]
546
551
  })]
547
552
  }, e.id)),
548
- J.length === 0 && /* @__PURE__ */ C("p", {
553
+ J.length === 0 && /* @__PURE__ */ w("p", {
549
554
  className: "text-sm text-muted-foreground text-center py-2",
550
555
  children: "No open risks."
551
556
  }),
552
- /* @__PURE__ */ w("button", {
557
+ /* @__PURE__ */ T("button", {
553
558
  type: "button",
554
559
  className: "text-xs text-primary hover:underline",
555
- onClick: () => I(`/risks/risk-register-page?projectId=${encodeURIComponent(U.id)}`),
560
+ onClick: () => L(`/risks/risk-register-page?projectId=${encodeURIComponent(U.id)}`),
556
561
  children: [
557
562
  "View risk register (",
558
563
  q.length,
@@ -561,59 +566,59 @@ function I() {
561
566
  })
562
567
  ]
563
568
  })] }),
564
- /* @__PURE__ */ w(D, { children: [/* @__PURE__ */ C(k, { children: /* @__PURE__ */ C(A, { children: "Details" }) }), /* @__PURE__ */ w(O, {
569
+ /* @__PURE__ */ T(O, { children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ w(j, { children: "Details" }) }), /* @__PURE__ */ T(k, {
565
570
  className: "space-y-2 text-sm",
566
571
  children: [
567
- /* @__PURE__ */ w("div", {
572
+ /* @__PURE__ */ T("div", {
568
573
  className: "flex justify-between",
569
- children: [/* @__PURE__ */ C("span", {
574
+ children: [/* @__PURE__ */ w("span", {
570
575
  className: "text-muted-foreground",
571
576
  children: "Owner"
572
- }), /* @__PURE__ */ C("span", { children: /* @__PURE__ */ C(n, { id: U.ownerId }) })]
577
+ }), /* @__PURE__ */ w("span", { children: /* @__PURE__ */ w(n, { id: U.ownerId }) })]
573
578
  }),
574
- /* @__PURE__ */ w("div", {
579
+ /* @__PURE__ */ T("div", {
575
580
  className: "flex justify-between",
576
- children: [/* @__PURE__ */ C("span", {
581
+ children: [/* @__PURE__ */ w("span", {
577
582
  className: "text-muted-foreground",
578
583
  children: "Key"
579
- }), /* @__PURE__ */ C("span", {
584
+ }), /* @__PURE__ */ w("span", {
580
585
  className: "font-mono",
581
586
  children: U.key
582
587
  })]
583
588
  }),
584
- /* @__PURE__ */ w("div", {
589
+ /* @__PURE__ */ T("div", {
585
590
  className: "flex justify-between",
586
- children: [/* @__PURE__ */ C("span", {
591
+ children: [/* @__PURE__ */ w("span", {
587
592
  className: "text-muted-foreground",
588
593
  children: "Methodology"
589
- }), /* @__PURE__ */ C("span", {
594
+ }), /* @__PURE__ */ w("span", {
590
595
  className: "capitalize",
591
596
  children: U.methodology.toLowerCase()
592
597
  })]
593
598
  }),
594
- /* @__PURE__ */ w("div", {
599
+ /* @__PURE__ */ T("div", {
595
600
  className: "flex justify-between",
596
- children: [/* @__PURE__ */ C("span", {
601
+ children: [/* @__PURE__ */ w("span", {
597
602
  className: "text-muted-foreground",
598
603
  children: "Program"
599
- }), U.program ? /* @__PURE__ */ C("button", {
604
+ }), U.program ? /* @__PURE__ */ w("button", {
600
605
  type: "button",
601
606
  className: "text-primary hover:underline underline-offset-2",
602
- onClick: () => I(a("/products/program-detail-page", U.program.id)),
607
+ onClick: () => L(a("/products/program-detail-page", U.program.id)),
603
608
  children: U.program.name
604
- }) : /* @__PURE__ */ C("span", {
609
+ }) : /* @__PURE__ */ w("span", {
605
610
  className: "text-muted-foreground",
606
611
  children: "No program"
607
612
  })]
608
613
  }),
609
- U.tags.length > 0 && /* @__PURE__ */ w("div", {
614
+ U.tags.length > 0 && /* @__PURE__ */ T("div", {
610
615
  className: "flex justify-between items-start",
611
- children: [/* @__PURE__ */ C("span", {
616
+ children: [/* @__PURE__ */ w("span", {
612
617
  className: "text-muted-foreground",
613
618
  children: "Tags"
614
- }), /* @__PURE__ */ C("div", {
619
+ }), /* @__PURE__ */ w("div", {
615
620
  className: "flex gap-1 flex-wrap justify-end",
616
- children: U.tags.map((e) => /* @__PURE__ */ C(T, {
621
+ children: U.tags.map((e) => /* @__PURE__ */ w(E, {
617
622
  variant: "outline",
618
623
  className: "text-xs",
619
624
  children: e
@@ -629,6 +634,6 @@ function I() {
629
634
  });
630
635
  }
631
636
  //#endregion
632
- export { I as ProjectsProjectDetailPagePage };
637
+ export { L as ProjectsProjectDetailPagePage };
633
638
 
634
639
  //# sourceMappingURL=ProjectsProjectDetailPagePage.js.map