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