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