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