@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.
- package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +163 -150
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +124 -108
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/comments/CommentThread.js +36 -36
- package/dist/planmagnet/comments/RoadmapComments.js +21 -21
- package/dist/planmagnet/controls/AutomationRuleControls.js +24 -24
- package/dist/planmagnet/controls/FeatureControls.js +60 -60
- package/dist/planmagnet/controls/MilestoneControls.d.ts +2 -0
- package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/MilestoneControls.js +89 -72
- package/dist/planmagnet/controls/MilestoneControls.js.map +1 -1
- package/dist/planmagnet/controls/SyncControls.js +59 -59
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +15 -15
- package/dist/planmagnet/docs/DocSuggestionsPanel.js +12 -12
- package/dist/planmagnet/docs/DocVersionCompare.js +3 -3
- package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts +12 -0
- package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts.map +1 -0
- package/dist/planmagnet/forecast/DeliveryForecastCard.js +208 -0
- package/dist/planmagnet/forecast/DeliveryForecastCard.js.map +1 -0
- package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts +5 -0
- package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts.map +1 -0
- package/dist/planmagnet/forecast/ProjectOutlookCard.js +190 -0
- package/dist/planmagnet/forecast/ProjectOutlookCard.js.map +1 -0
- package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts +5 -0
- package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts.map +1 -0
- package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js +99 -0
- package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js.map +1 -0
- package/dist/planmagnet/forecast/ResourceForecastCard.d.ts +8 -0
- package/dist/planmagnet/forecast/ResourceForecastCard.d.ts.map +1 -0
- package/dist/planmagnet/forecast/ResourceForecastCard.js +185 -0
- package/dist/planmagnet/forecast/ResourceForecastCard.js.map +1 -0
- package/dist/planmagnet/forecast/riskFlags.d.ts +35 -0
- package/dist/planmagnet/forecast/riskFlags.d.ts.map +1 -0
- package/dist/planmagnet/forecast/riskFlags.js +37 -0
- package/dist/planmagnet/forecast/riskFlags.js.map +1 -0
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts +17 -0
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts.map +1 -0
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.js +218 -0
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.js.map +1 -0
- package/dist/planmagnet/meetings/MeetingsCard.d.ts +7 -0
- package/dist/planmagnet/meetings/MeetingsCard.d.ts.map +1 -0
- package/dist/planmagnet/meetings/MeetingsCard.js +108 -0
- package/dist/planmagnet/meetings/MeetingsCard.js.map +1 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts +9 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts.map +1 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js +232 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js.map +1 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts +19 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts.map +1 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.js +226 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.js.map +1 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts +14 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts.map +1 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.js +81 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.js.map +1 -0
- package/dist/planmagnet/meetings/meetingActions.d.ts +57 -0
- package/dist/planmagnet/meetings/meetingActions.d.ts.map +1 -0
- package/dist/planmagnet/meetings/meetingActions.js +51 -0
- package/dist/planmagnet/meetings/meetingActions.js.map +1 -0
- package/dist/planmagnet/meetings/meetingGraphql.d.ts +29 -0
- package/dist/planmagnet/meetings/meetingGraphql.d.ts.map +1 -0
- package/dist/planmagnet/meetings/meetingGraphql.js +166 -0
- package/dist/planmagnet/meetings/meetingGraphql.js.map +1 -0
- package/dist/planmagnet/meetings/meetingModel.d.ts +74 -0
- package/dist/planmagnet/meetings/meetingModel.d.ts.map +1 -0
- package/dist/planmagnet/meetings/meetingModel.js +88 -0
- package/dist/planmagnet/meetings/meetingModel.js.map +1 -0
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +216 -182
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js +11 -11
- package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js +4 -4
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +163 -163
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js +165 -165
- package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js.map +1 -1
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js +197 -0
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js.map +1 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js +173 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js +234 -0
- package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +73 -52
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +205 -190
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +211 -182
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ReportsReportPagePage.js +22 -22
- package/dist/planmagnet/pages/ReportsReportPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ReportsReportsPagePage.js +21 -21
- package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamTeamDetailPagePage.js +88 -83
- package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/analytics/SprintDeliveryCards.d.ts.map +1 -1
- package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js +139 -112
- package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js.map +1 -1
- package/dist/planmagnet/pages/analytics/StatusFlowCard.js +21 -21
- package/dist/planmagnet/product/ProductControls.js +91 -91
- package/dist/planmagnet/reports/SchedulesPanel.js +33 -33
- package/dist/planmagnet/reports/ShareDialog.js +76 -76
- package/dist/planmagnet/reports/ShareDialog.js.map +1 -1
- package/dist/planmagnet/reports/sharedReportRoute.d.ts +3 -2
- package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +1 -1
- package/dist/planmagnet/reports/sharedReportRoute.js.map +1 -1
- package/dist/planmagnet/roadmaps/RoadmapControls.js +60 -60
- package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js +30 -30
- package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js +21 -21
- package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js +22 -22
- 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
|
|
7
|
-
import { combineLiveRefreshModes as
|
|
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
|
|
10
|
-
import { ProjectComments as
|
|
11
|
-
import { usePresence as
|
|
12
|
-
import { NewRiskDialog as
|
|
13
|
-
import { ProjectHeaderActions as
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
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
|
|
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
|
-
`,
|
|
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
|
-
},
|
|
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
|
-
},
|
|
112
|
+
}, I = new Set([
|
|
108
113
|
"IDENTIFIED",
|
|
109
114
|
"ANALYZING",
|
|
110
115
|
"MITIGATING",
|
|
111
116
|
"ACCEPTED"
|
|
112
117
|
]);
|
|
113
|
-
function
|
|
114
|
-
let
|
|
115
|
-
variables: { id:
|
|
116
|
-
skip: !
|
|
117
|
-
}),
|
|
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:
|
|
120
|
-
queries:
|
|
121
|
-
}),
|
|
124
|
+
projectId: C,
|
|
125
|
+
queries: M
|
|
126
|
+
}), pe = s({
|
|
122
127
|
kind: "sprint",
|
|
123
|
-
projectId:
|
|
124
|
-
enabled: !!
|
|
125
|
-
queries:
|
|
126
|
-
}),
|
|
128
|
+
projectId: C,
|
|
129
|
+
enabled: !!C,
|
|
130
|
+
queries: M
|
|
131
|
+
}), me = s({
|
|
127
132
|
kind: "workItem",
|
|
128
|
-
projectId:
|
|
129
|
-
queries:
|
|
130
|
-
}),
|
|
131
|
-
if (!
|
|
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 (
|
|
140
|
+
if (B && !z) return /* @__PURE__ */ w("div", {
|
|
136
141
|
className: "flex items-center justify-center p-12",
|
|
137
|
-
children: /* @__PURE__ */
|
|
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 (
|
|
144
|
+
if (V) return /* @__PURE__ */ T("div", {
|
|
140
145
|
className: "p-6 text-red-500",
|
|
141
|
-
children: ["Error loading project: ",
|
|
146
|
+
children: ["Error loading project: ", V.message]
|
|
142
147
|
});
|
|
143
|
-
let U =
|
|
144
|
-
if (!U) return /* @__PURE__ */
|
|
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) =>
|
|
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"),
|
|
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__ */
|
|
171
|
+
return /* @__PURE__ */ T("div", {
|
|
167
172
|
className: "space-y-6 p-6",
|
|
168
173
|
children: [
|
|
169
|
-
/* @__PURE__ */
|
|
174
|
+
/* @__PURE__ */ T("div", {
|
|
170
175
|
className: "flex items-center justify-between",
|
|
171
|
-
children: [/* @__PURE__ */
|
|
172
|
-
/* @__PURE__ */
|
|
176
|
+
children: [/* @__PURE__ */ T("div", { children: [
|
|
177
|
+
/* @__PURE__ */ T("div", {
|
|
173
178
|
className: "flex items-center gap-2",
|
|
174
179
|
children: [
|
|
175
|
-
/* @__PURE__ */
|
|
176
|
-
/* @__PURE__ */
|
|
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__ */
|
|
181
|
-
className: `text-xs px-2 py-0.5 rounded-full capitalize ${
|
|
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__ */
|
|
189
|
+
/* @__PURE__ */ w(c, { mode: he })
|
|
185
190
|
]
|
|
186
191
|
}),
|
|
187
|
-
/* @__PURE__ */
|
|
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__ */
|
|
192
|
-
] }), /* @__PURE__ */
|
|
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__ */
|
|
200
|
+
/* @__PURE__ */ w(f, {
|
|
196
201
|
projectId: U.id,
|
|
197
202
|
name: U.name,
|
|
198
203
|
status: U.status
|
|
199
204
|
}),
|
|
200
|
-
/* @__PURE__ */
|
|
205
|
+
/* @__PURE__ */ T("div", {
|
|
201
206
|
className: "flex items-center gap-2",
|
|
202
207
|
children: [
|
|
203
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ T(D, {
|
|
204
209
|
size: "sm",
|
|
205
210
|
variant: "outline",
|
|
206
|
-
onClick: () =>
|
|
211
|
+
onClick: () => L("/automation/automation-rules-page"),
|
|
207
212
|
"data-testid": "project-automation-rules",
|
|
208
|
-
children: [/* @__PURE__ */
|
|
213
|
+
children: [/* @__PURE__ */ w(h, { className: "mr-1 h-4 w-4" }), "Automation rules"]
|
|
209
214
|
}),
|
|
210
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ T(D, {
|
|
211
216
|
size: "sm",
|
|
212
217
|
variant: "outline",
|
|
213
|
-
onClick: () =>
|
|
218
|
+
onClick: () => L(`/projects/quality-gates-page?projectId=${encodeURIComponent(U.id)}`),
|
|
214
219
|
"data-testid": "project-quality-gates",
|
|
215
|
-
children: [/* @__PURE__ */
|
|
220
|
+
children: [/* @__PURE__ */ w(ue, { className: "mr-1 h-4 w-4" }), "Quality gates"]
|
|
216
221
|
}),
|
|
217
|
-
/* @__PURE__ */
|
|
222
|
+
/* @__PURE__ */ w(ae, {
|
|
218
223
|
projectId: U.id,
|
|
219
224
|
projectName: U.name,
|
|
220
|
-
onCreated: (e) =>
|
|
221
|
-
trigger: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
235
|
+
/* @__PURE__ */ w(E, {
|
|
231
236
|
variant: "outline",
|
|
232
237
|
className: "capitalize",
|
|
233
238
|
children: U.methodology.toLowerCase()
|
|
234
239
|
}),
|
|
235
|
-
/* @__PURE__ */
|
|
240
|
+
/* @__PURE__ */ T(D, {
|
|
236
241
|
size: "sm",
|
|
237
242
|
variant: "outline",
|
|
238
|
-
onClick: () =>
|
|
239
|
-
children: [/* @__PURE__ */ b
|
|
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__ */
|
|
249
|
+
/* @__PURE__ */ T("div", {
|
|
245
250
|
className: "grid grid-cols-2 md:grid-cols-4 gap-4",
|
|
246
251
|
children: [
|
|
247
|
-
/* @__PURE__ */
|
|
252
|
+
/* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
|
|
248
253
|
className: "pt-4",
|
|
249
|
-
children: [/* @__PURE__ */
|
|
254
|
+
children: [/* @__PURE__ */ T("div", {
|
|
250
255
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
251
|
-
children: [/* @__PURE__ */
|
|
252
|
-
}), /* @__PURE__ */
|
|
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
|
-
|
|
260
|
+
_e,
|
|
256
261
|
"/",
|
|
257
262
|
Q.length
|
|
258
263
|
]
|
|
259
264
|
})]
|
|
260
265
|
}) }),
|
|
261
|
-
/* @__PURE__ */
|
|
266
|
+
/* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
|
|
262
267
|
className: "pt-4",
|
|
263
|
-
children: [/* @__PURE__ */
|
|
268
|
+
children: [/* @__PURE__ */ T("div", {
|
|
264
269
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
265
|
-
children: [/* @__PURE__ */
|
|
266
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
276
|
+
/* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
|
|
272
277
|
className: "pt-4",
|
|
273
|
-
children: [/* @__PURE__ */
|
|
278
|
+
children: [/* @__PURE__ */ T("div", {
|
|
274
279
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
275
|
-
children: [/* @__PURE__ */
|
|
276
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
286
|
+
/* @__PURE__ */ w(O, { children: /* @__PURE__ */ T(k, {
|
|
282
287
|
className: "pt-4",
|
|
283
|
-
children: [/* @__PURE__ */
|
|
288
|
+
children: [/* @__PURE__ */ T("div", {
|
|
284
289
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
285
|
-
children: [/* @__PURE__ */
|
|
286
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
293
|
+
children: /* @__PURE__ */ w(n, { id: U.ownerId })
|
|
289
294
|
})]
|
|
290
295
|
}) })
|
|
291
296
|
]
|
|
292
297
|
}),
|
|
293
|
-
/* @__PURE__ */
|
|
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__ */
|
|
312
|
+
children: [/* @__PURE__ */ T("div", {
|
|
296
313
|
className: "lg:col-span-2 space-y-6",
|
|
297
314
|
children: [
|
|
298
|
-
/* @__PURE__ */
|
|
299
|
-
/* @__PURE__ */
|
|
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__ */
|
|
318
|
+
children: [/* @__PURE__ */ w("span", {
|
|
302
319
|
className: "text-muted-foreground",
|
|
303
320
|
children: "Tasks done"
|
|
304
|
-
}), /* @__PURE__ */
|
|
321
|
+
}), /* @__PURE__ */ w("span", {
|
|
305
322
|
className: "font-medium",
|
|
306
323
|
children: Z === null ? "No open tasks" : `${Z}%`
|
|
307
324
|
})]
|
|
308
325
|
}),
|
|
309
|
-
/* @__PURE__ */
|
|
326
|
+
/* @__PURE__ */ w("div", {
|
|
310
327
|
className: "w-full h-4 rounded-full bg-muted overflow-hidden",
|
|
311
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
333
|
+
/* @__PURE__ */ T("div", {
|
|
317
334
|
className: "flex justify-between text-xs text-muted-foreground mt-2",
|
|
318
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
338
|
+
Y && /* @__PURE__ */ T(O, { children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ T(j, {
|
|
322
339
|
className: "flex items-center gap-2",
|
|
323
|
-
children: [/* @__PURE__ */
|
|
324
|
-
}) }), /* @__PURE__ */
|
|
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__ */
|
|
344
|
+
/* @__PURE__ */ T("div", {
|
|
328
345
|
className: "flex justify-between",
|
|
329
|
-
children: [/* @__PURE__ */
|
|
346
|
+
children: [/* @__PURE__ */ w("span", {
|
|
330
347
|
className: "font-medium",
|
|
331
348
|
children: Y.name
|
|
332
|
-
}), /* @__PURE__ */
|
|
349
|
+
}), /* @__PURE__ */ w(E, { children: "Active" })]
|
|
333
350
|
}),
|
|
334
|
-
Y.goal && /* @__PURE__ */
|
|
351
|
+
Y.goal && /* @__PURE__ */ w("p", {
|
|
335
352
|
className: "text-sm text-muted-foreground",
|
|
336
353
|
children: Y.goal
|
|
337
354
|
}),
|
|
338
|
-
/* @__PURE__ */
|
|
355
|
+
/* @__PURE__ */ T("div", {
|
|
339
356
|
className: "grid grid-cols-3 gap-4 text-center",
|
|
340
357
|
children: [
|
|
341
|
-
/* @__PURE__ */
|
|
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__ */
|
|
365
|
+
}), /* @__PURE__ */ w("p", {
|
|
349
366
|
className: "text-xs text-muted-foreground",
|
|
350
367
|
children: "Points"
|
|
351
368
|
})] }),
|
|
352
|
-
/* @__PURE__ */
|
|
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__ */
|
|
376
|
+
}), /* @__PURE__ */ w("p", {
|
|
360
377
|
className: "text-xs text-muted-foreground",
|
|
361
378
|
children: "Tasks"
|
|
362
379
|
})] }),
|
|
363
|
-
/* @__PURE__ */
|
|
380
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
364
381
|
className: "text-lg font-semibold",
|
|
365
382
|
children: X ? `${X.velocity} pts` : "—"
|
|
366
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
396
|
+
] }) }), /* @__PURE__ */ T(k, {
|
|
380
397
|
className: "space-y-2",
|
|
381
|
-
children: [
|
|
382
|
-
...o(() =>
|
|
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__ */
|
|
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__ */
|
|
406
|
+
/* @__PURE__ */ w("span", {
|
|
390
407
|
className: "font-normal",
|
|
391
408
|
children: e.title
|
|
392
409
|
})
|
|
393
410
|
]
|
|
394
|
-
}), /* @__PURE__ */
|
|
411
|
+
}), /* @__PURE__ */ w("div", {
|
|
395
412
|
className: "flex gap-1 mt-1",
|
|
396
|
-
children: e.labels.map((e) => /* @__PURE__ */
|
|
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__ */
|
|
417
|
+
})] }), /* @__PURE__ */ T("div", {
|
|
401
418
|
className: "flex items-center gap-2",
|
|
402
|
-
children: [/* @__PURE__ */
|
|
419
|
+
children: [/* @__PURE__ */ T("span", {
|
|
403
420
|
className: "text-xs text-muted-foreground",
|
|
404
421
|
children: [e.storyPoints ?? 0, " pts"]
|
|
405
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
433
|
+
/* @__PURE__ */ w(l, {
|
|
417
434
|
projectId: U.id,
|
|
418
435
|
presence: H
|
|
419
436
|
})
|
|
420
437
|
]
|
|
421
|
-
}), /* @__PURE__ */
|
|
438
|
+
}), /* @__PURE__ */ T("div", {
|
|
422
439
|
className: "space-y-6",
|
|
423
440
|
children: [
|
|
424
|
-
/* @__PURE__ */
|
|
425
|
-
workspaceId:
|
|
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__ */
|
|
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__ */
|
|
457
|
+
] }) }), /* @__PURE__ */ T(k, {
|
|
433
458
|
className: "space-y-3",
|
|
434
|
-
children: [K.map((e) => /* @__PURE__ */
|
|
459
|
+
children: [K.map((e) => /* @__PURE__ */ T("div", {
|
|
435
460
|
className: "border-b pb-2 last:border-0",
|
|
436
|
-
children: [/* @__PURE__ */
|
|
461
|
+
children: [/* @__PURE__ */ T("div", {
|
|
437
462
|
className: "flex justify-between",
|
|
438
|
-
children: [/* @__PURE__ */
|
|
463
|
+
children: [/* @__PURE__ */ w("span", {
|
|
439
464
|
className: "text-sm font-medium",
|
|
440
465
|
children: e.name
|
|
441
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
471
|
+
}), /* @__PURE__ */ T("div", {
|
|
447
472
|
className: "flex items-center gap-1 text-xs text-muted-foreground mt-1",
|
|
448
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
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
|
-
|
|
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__ */
|
|
486
|
+
children: [/* @__PURE__ */ w(A, { children: /* @__PURE__ */ T(j, {
|
|
458
487
|
className: "flex items-center gap-2",
|
|
459
|
-
children: [/* @__PURE__ */
|
|
460
|
-
}) }), /* @__PURE__ */
|
|
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__ */
|
|
491
|
+
children: $.map((e) => /* @__PURE__ */ T("div", {
|
|
463
492
|
className: "border-b pb-2 last:border-0",
|
|
464
|
-
children: [/* @__PURE__ */
|
|
493
|
+
children: [/* @__PURE__ */ w("button", {
|
|
465
494
|
type: "button",
|
|
466
495
|
className: "text-sm font-medium hover:underline text-left",
|
|
467
|
-
onClick: () =>
|
|
496
|
+
onClick: () => L(a("/projects/planning-detail-page", e.sprint.id)),
|
|
468
497
|
children: e.sprint.name
|
|
469
|
-
}), /* @__PURE__ */
|
|
498
|
+
}), /* @__PURE__ */ T("button", {
|
|
470
499
|
type: "button",
|
|
471
500
|
className: "block text-xs text-muted-foreground hover:underline",
|
|
472
|
-
onClick: () =>
|
|
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__ */
|
|
514
|
+
/* @__PURE__ */ T(O, { children: [/* @__PURE__ */ T(A, {
|
|
486
515
|
className: "flex flex-row items-center justify-between space-y-0",
|
|
487
|
-
children: [/* @__PURE__ */
|
|
516
|
+
children: [/* @__PURE__ */ T(j, {
|
|
488
517
|
className: "flex items-center gap-2",
|
|
489
518
|
children: [
|
|
490
|
-
/* @__PURE__ */
|
|
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__ */
|
|
524
|
+
}), /* @__PURE__ */ w(d, {
|
|
496
525
|
projectId: U.id,
|
|
497
|
-
onCreated: (e) =>
|
|
526
|
+
onCreated: (e) => L(a("/risks/risk-detail-page", e))
|
|
498
527
|
})]
|
|
499
|
-
}), /* @__PURE__ */
|
|
528
|
+
}), /* @__PURE__ */ T(k, {
|
|
500
529
|
className: "space-y-3",
|
|
501
530
|
children: [
|
|
502
|
-
|
|
503
|
-
...o(() =>
|
|
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__ */
|
|
534
|
+
children: [/* @__PURE__ */ T("div", {
|
|
506
535
|
className: "flex justify-between gap-2",
|
|
507
|
-
children: [/* @__PURE__ */
|
|
536
|
+
children: [/* @__PURE__ */ w("span", {
|
|
508
537
|
className: "text-sm font-medium truncate",
|
|
509
538
|
children: e.title
|
|
510
|
-
}), /* @__PURE__ */
|
|
511
|
-
className: `text-xs px-2 py-0.5 rounded-full shrink-0 ${
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
557
|
+
/* @__PURE__ */ T("button", {
|
|
529
558
|
type: "button",
|
|
530
559
|
className: "text-xs text-primary hover:underline",
|
|
531
|
-
onClick: () =>
|
|
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__ */
|
|
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__ */
|
|
572
|
+
/* @__PURE__ */ T("div", {
|
|
544
573
|
className: "flex justify-between",
|
|
545
|
-
children: [/* @__PURE__ */
|
|
574
|
+
children: [/* @__PURE__ */ w("span", {
|
|
546
575
|
className: "text-muted-foreground",
|
|
547
576
|
children: "Owner"
|
|
548
|
-
}), /* @__PURE__ */
|
|
577
|
+
}), /* @__PURE__ */ w("span", { children: /* @__PURE__ */ w(n, { id: U.ownerId }) })]
|
|
549
578
|
}),
|
|
550
|
-
/* @__PURE__ */
|
|
579
|
+
/* @__PURE__ */ T("div", {
|
|
551
580
|
className: "flex justify-between",
|
|
552
|
-
children: [/* @__PURE__ */
|
|
581
|
+
children: [/* @__PURE__ */ w("span", {
|
|
553
582
|
className: "text-muted-foreground",
|
|
554
583
|
children: "Key"
|
|
555
|
-
}), /* @__PURE__ */
|
|
584
|
+
}), /* @__PURE__ */ w("span", {
|
|
556
585
|
className: "font-mono",
|
|
557
586
|
children: U.key
|
|
558
587
|
})]
|
|
559
588
|
}),
|
|
560
|
-
/* @__PURE__ */
|
|
589
|
+
/* @__PURE__ */ T("div", {
|
|
561
590
|
className: "flex justify-between",
|
|
562
|
-
children: [/* @__PURE__ */
|
|
591
|
+
children: [/* @__PURE__ */ w("span", {
|
|
563
592
|
className: "text-muted-foreground",
|
|
564
593
|
children: "Methodology"
|
|
565
|
-
}), /* @__PURE__ */
|
|
594
|
+
}), /* @__PURE__ */ w("span", {
|
|
566
595
|
className: "capitalize",
|
|
567
596
|
children: U.methodology.toLowerCase()
|
|
568
597
|
})]
|
|
569
598
|
}),
|
|
570
|
-
/* @__PURE__ */
|
|
599
|
+
/* @__PURE__ */ T("div", {
|
|
571
600
|
className: "flex justify-between",
|
|
572
|
-
children: [/* @__PURE__ */
|
|
601
|
+
children: [/* @__PURE__ */ w("span", {
|
|
573
602
|
className: "text-muted-foreground",
|
|
574
603
|
children: "Program"
|
|
575
|
-
}), U.program ? /* @__PURE__ */
|
|
604
|
+
}), U.program ? /* @__PURE__ */ w("button", {
|
|
576
605
|
type: "button",
|
|
577
606
|
className: "text-primary hover:underline underline-offset-2",
|
|
578
|
-
onClick: () =>
|
|
607
|
+
onClick: () => L(a("/products/program-detail-page", U.program.id)),
|
|
579
608
|
children: U.program.name
|
|
580
|
-
}) : /* @__PURE__ */
|
|
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__ */
|
|
614
|
+
U.tags.length > 0 && /* @__PURE__ */ T("div", {
|
|
586
615
|
className: "flex justify-between items-start",
|
|
587
|
-
children: [/* @__PURE__ */
|
|
616
|
+
children: [/* @__PURE__ */ w("span", {
|
|
588
617
|
className: "text-muted-foreground",
|
|
589
618
|
children: "Tags"
|
|
590
|
-
}), /* @__PURE__ */
|
|
619
|
+
}), /* @__PURE__ */ w("div", {
|
|
591
620
|
className: "flex gap-1 flex-wrap justify-end",
|
|
592
|
-
children: U.tags.map((e) => /* @__PURE__ */
|
|
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 {
|
|
637
|
+
export { L as ProjectsProjectDetailPagePage };
|
|
609
638
|
|
|
610
639
|
//# sourceMappingURL=ProjectsProjectDetailPagePage.js.map
|