@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanMagnetRoot.d.ts","sourceRoot":"","sources":["../../src/planmagnet/PlanMagnetRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PlanMagnetRoot.d.ts","sourceRoot":"","sources":["../../src/planmagnet/PlanMagnetRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAsC3C,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAW5D,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAoXlD,CAAC"}
|
|
@@ -5,337 +5,343 @@ import { PlanMagnetRoutes as i } from "./PlanMagnetRoutes.js";
|
|
|
5
5
|
import { joinPath as a } from "./utils/navigation.js";
|
|
6
6
|
import { PRIORITIZATION_PATH as o } from "./product/routes.js";
|
|
7
7
|
import { useEffect as s } from "react";
|
|
8
|
-
import { Activity as c, BarChart3 as l, Bot as u, Briefcase as d, CalendarDays as f, CheckSquare as p, ClipboardList as m, Crown as h, Flag as g, FolderKanban as _, Gauge as v, GitBranch as y, History as b, LayoutDashboard as x, LayoutGrid as S, LayoutTemplate as C, Map as w, Package as T,
|
|
9
|
-
import { jsx as
|
|
10
|
-
import { FeatureFlagProvider as
|
|
8
|
+
import { Activity as c, BarChart3 as l, Bot as u, Briefcase as d, CalendarDays as f, CheckSquare as p, ClipboardList as m, Crown as h, Flag as g, FolderKanban as _, Gauge as v, GitBranch as y, History as b, LayoutDashboard as x, LayoutGrid as S, LayoutTemplate as C, Map as w, Package as T, ShieldAlert as E, ShieldCheck as D, Sparkles as O, SquareGanttChart as k, Star as A, Swords as j, Target as M, TrendingUp as N, UserPlus as P, Users as F, UsersRound as I, Zap as L } from "lucide-react";
|
|
9
|
+
import { jsx as R } from "react/jsx-runtime";
|
|
10
|
+
import { FeatureFlagProvider as z } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
11
11
|
//#region src/planmagnet/PlanMagnetRoot.tsx
|
|
12
|
-
function
|
|
12
|
+
function B({ children: e }) {
|
|
13
13
|
let { workspaceId: r } = t();
|
|
14
|
-
return /* @__PURE__ */
|
|
14
|
+
return /* @__PURE__ */ R(n, {
|
|
15
15
|
workspaceId: r ?? void 0,
|
|
16
16
|
children: e
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
var
|
|
20
|
-
let { registerNavItems: n, registerFooterItems:
|
|
19
|
+
var V = (t) => {
|
|
20
|
+
let { registerNavItems: n, registerFooterItems: V, basePath: H = "/" } = t, U = r();
|
|
21
21
|
return s(() => {
|
|
22
22
|
if (n) return n({
|
|
23
23
|
id: "planmagnet",
|
|
24
|
-
label:
|
|
25
|
-
path:
|
|
26
|
-
icon: /* @__PURE__ */
|
|
24
|
+
label: U("planmagnet.nav.root", "PlanMagnet"),
|
|
25
|
+
path: H,
|
|
26
|
+
icon: /* @__PURE__ */ R(x, { size: 20 }),
|
|
27
27
|
order: 80,
|
|
28
28
|
group: "products",
|
|
29
29
|
children: [
|
|
30
30
|
{
|
|
31
31
|
id: "planmagnet-dashboard",
|
|
32
|
-
label:
|
|
33
|
-
path: a(
|
|
34
|
-
icon: /* @__PURE__ */
|
|
32
|
+
label: U("planmagnet.nav.dashboard", "Dashboard"),
|
|
33
|
+
path: a(H, "dashboard/dashboard-page"),
|
|
34
|
+
icon: /* @__PURE__ */ R(x, { size: 16 }),
|
|
35
35
|
order: 1
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
id: "planmagnet-dashboards",
|
|
39
|
-
label:
|
|
40
|
-
path: a(
|
|
41
|
-
icon: /* @__PURE__ */
|
|
39
|
+
label: U("planmagnet.nav.dashboards", "Dashboards"),
|
|
40
|
+
path: a(H, "dashboards/executive-page"),
|
|
41
|
+
icon: /* @__PURE__ */ R(S, { size: 16 }),
|
|
42
42
|
order: 1.5,
|
|
43
43
|
children: [
|
|
44
44
|
{
|
|
45
45
|
id: "planmagnet-dashboards-executive",
|
|
46
|
-
label:
|
|
47
|
-
path: a(
|
|
48
|
-
icon: /* @__PURE__ */
|
|
46
|
+
label: U("planmagnet.nav.dashboards.executive", "Executive"),
|
|
47
|
+
path: a(H, "dashboards/executive-page"),
|
|
48
|
+
icon: /* @__PURE__ */ R(S, { size: 16 })
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
id: "planmagnet-dashboards-pm",
|
|
52
|
-
label:
|
|
53
|
-
path: a(
|
|
54
|
-
icon: /* @__PURE__ */
|
|
52
|
+
label: U("planmagnet.nav.dashboards.pm", "Project manager"),
|
|
53
|
+
path: a(H, "dashboards/project-manager-page"),
|
|
54
|
+
icon: /* @__PURE__ */ R(m, { size: 16 })
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
id: "planmagnet-dashboards-team",
|
|
58
|
-
label:
|
|
59
|
-
path: a(
|
|
60
|
-
icon: /* @__PURE__ */
|
|
58
|
+
label: U("planmagnet.nav.dashboards.team", "Team utilization"),
|
|
59
|
+
path: a(H, "dashboards/team-utilization-page"),
|
|
60
|
+
icon: /* @__PURE__ */ R(I, { size: 16 })
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
id: "planmagnet-dashboards-leadership",
|
|
64
|
-
label:
|
|
65
|
-
path: a(
|
|
66
|
-
icon: /* @__PURE__ */
|
|
64
|
+
label: U("planmagnet.nav.dashboards.leadership", "Leadership"),
|
|
65
|
+
path: a(H, "dashboards/leadership-page"),
|
|
66
|
+
icon: /* @__PURE__ */ R(h, { size: 16 })
|
|
67
67
|
}
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
id: "planmagnet-products",
|
|
72
|
-
label:
|
|
73
|
-
path: a(
|
|
74
|
-
icon: /* @__PURE__ */
|
|
72
|
+
label: U("planmagnet.nav.products", "Products"),
|
|
73
|
+
path: a(H, "products/products-page"),
|
|
74
|
+
icon: /* @__PURE__ */ R(T, { size: 16 }),
|
|
75
75
|
order: 2,
|
|
76
76
|
children: [
|
|
77
77
|
{
|
|
78
78
|
id: "planmagnet-features",
|
|
79
|
-
label:
|
|
80
|
-
path: a(
|
|
81
|
-
icon: /* @__PURE__ */
|
|
79
|
+
label: U("planmagnet.nav.products.features", "Features"),
|
|
80
|
+
path: a(H, "products/features-page"),
|
|
81
|
+
icon: /* @__PURE__ */ R(A, { size: 16 })
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
id: "planmagnet-releases",
|
|
85
|
-
label:
|
|
86
|
-
path: a(
|
|
87
|
-
icon: /* @__PURE__ */
|
|
85
|
+
label: U("planmagnet.nav.products.releases", "Releases"),
|
|
86
|
+
path: a(H, "products/releases-page"),
|
|
87
|
+
icon: /* @__PURE__ */ R(y, { size: 16 })
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
id: "planmagnet-roadmaps",
|
|
91
|
-
label:
|
|
92
|
-
path: a(
|
|
93
|
-
icon: /* @__PURE__ */
|
|
91
|
+
label: U("planmagnet.nav.products.roadmaps", "Roadmaps"),
|
|
92
|
+
path: a(H, "products/roadmaps-page"),
|
|
93
|
+
icon: /* @__PURE__ */ R(w, { size: 16 })
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
id: "planmagnet-portfolios",
|
|
97
|
-
label:
|
|
98
|
-
path: a(
|
|
99
|
-
icon: /* @__PURE__ */
|
|
97
|
+
label: U("planmagnet.nav.products.portfolios", "Portfolios"),
|
|
98
|
+
path: a(H, "products/portfolios-page"),
|
|
99
|
+
icon: /* @__PURE__ */ R(d, { size: 16 })
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
id: "planmagnet-programs",
|
|
103
|
-
label:
|
|
104
|
-
path: a(
|
|
105
|
-
icon: /* @__PURE__ */
|
|
103
|
+
label: U("planmagnet.nav.products.programs", "Programs"),
|
|
104
|
+
path: a(H, "products/programs-page"),
|
|
105
|
+
icon: /* @__PURE__ */ R(_, { size: 16 })
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
id: "planmagnet-competitors",
|
|
109
|
-
label:
|
|
110
|
-
path: a(
|
|
111
|
-
icon: /* @__PURE__ */
|
|
109
|
+
label: U("planmagnet.nav.products.competitors", "Competitors"),
|
|
110
|
+
path: a(H, "products/competitors-page"),
|
|
111
|
+
icon: /* @__PURE__ */ R(j, { size: 16 })
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
114
|
id: "planmagnet-prioritization",
|
|
115
|
-
label:
|
|
116
|
-
path: a(
|
|
117
|
-
icon: /* @__PURE__ */
|
|
115
|
+
label: U("planmagnet.nav.products.prioritization", "Prioritization"),
|
|
116
|
+
path: a(H, o),
|
|
117
|
+
icon: /* @__PURE__ */ R(v, { size: 16 })
|
|
118
118
|
}
|
|
119
119
|
]
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
id: "planmagnet-projects",
|
|
123
|
-
label:
|
|
124
|
-
path: a(
|
|
125
|
-
icon: /* @__PURE__ */
|
|
123
|
+
label: U("planmagnet.nav.projects", "Projects"),
|
|
124
|
+
path: a(H, "projects/projects-page"),
|
|
125
|
+
icon: /* @__PURE__ */ R(_, { size: 16 }),
|
|
126
126
|
order: 3,
|
|
127
127
|
children: [
|
|
128
128
|
{
|
|
129
129
|
id: "planmagnet-projects-all",
|
|
130
|
-
label:
|
|
131
|
-
path: a(
|
|
132
|
-
icon: /* @__PURE__ */
|
|
130
|
+
label: U("planmagnet.nav.projects.all", "All Projects"),
|
|
131
|
+
path: a(H, "projects/projects-page"),
|
|
132
|
+
icon: /* @__PURE__ */ R(_, { size: 16 })
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
id: "planmagnet-projects-active",
|
|
136
|
-
label:
|
|
137
|
-
path: a(
|
|
138
|
-
icon: /* @__PURE__ */
|
|
136
|
+
label: U("planmagnet.nav.projects.active", "Active Projects"),
|
|
137
|
+
path: a(H, "projects/active-projects-page"),
|
|
138
|
+
icon: /* @__PURE__ */ R(N, { size: 16 })
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
id: "planmagnet-projects-create",
|
|
142
|
-
label:
|
|
143
|
-
path: a(
|
|
144
|
-
icon: /* @__PURE__ */
|
|
142
|
+
label: U("planmagnet.nav.projects.create", "Create Project"),
|
|
143
|
+
path: a(H, "projects/create-project-page"),
|
|
144
|
+
icon: /* @__PURE__ */ R(_, { size: 16 })
|
|
145
145
|
},
|
|
146
146
|
{
|
|
147
147
|
id: "planmagnet-milestones",
|
|
148
|
-
label:
|
|
149
|
-
path: a(
|
|
150
|
-
icon: /* @__PURE__ */
|
|
148
|
+
label: U("planmagnet.nav.projects.milestones", "Milestones"),
|
|
149
|
+
path: a(H, "projects/milestones-page"),
|
|
150
|
+
icon: /* @__PURE__ */ R(M, { size: 16 })
|
|
151
151
|
},
|
|
152
152
|
{
|
|
153
153
|
id: "planmagnet-planning",
|
|
154
|
-
label:
|
|
155
|
-
path: a(
|
|
156
|
-
icon: /* @__PURE__ */
|
|
154
|
+
label: U("planmagnet.nav.projects.planning", "Planning"),
|
|
155
|
+
path: a(H, "projects/planning-page"),
|
|
156
|
+
icon: /* @__PURE__ */ R(f, { size: 16 })
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
id: "planmagnet-templates",
|
|
160
|
-
label:
|
|
161
|
-
path: a(
|
|
162
|
-
icon: /* @__PURE__ */
|
|
160
|
+
label: U("planmagnet.nav.projects.templates", "Templates"),
|
|
161
|
+
path: a(H, "templates/templates-page"),
|
|
162
|
+
icon: /* @__PURE__ */ R(C, { size: 16 })
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
id: "planmagnet-quality-gates",
|
|
166
|
-
label:
|
|
167
|
-
path: a(
|
|
168
|
-
icon: /* @__PURE__ */
|
|
166
|
+
label: U("planmagnet.nav.projects.qualityGates", "Quality gates"),
|
|
167
|
+
path: a(H, "projects/quality-gates-page"),
|
|
168
|
+
icon: /* @__PURE__ */ R(D, { size: 16 })
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
id: "planmagnet-gantt",
|
|
172
|
-
label:
|
|
173
|
-
path: a(
|
|
174
|
-
icon: /* @__PURE__ */
|
|
172
|
+
label: U("planmagnet.nav.projects.gantt", "Gantt"),
|
|
173
|
+
path: a(H, "projects/gantt-page"),
|
|
174
|
+
icon: /* @__PURE__ */ R(k, { size: 16 })
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
id: "planmagnet-at-risk",
|
|
178
|
+
label: U("planmagnet.nav.projects.atRisk", "At-risk work"),
|
|
179
|
+
path: a(H, "projects/at-risk-page"),
|
|
180
|
+
icon: /* @__PURE__ */ R(E, { size: 16 })
|
|
175
181
|
}
|
|
176
182
|
]
|
|
177
183
|
},
|
|
178
184
|
{
|
|
179
185
|
id: "planmagnet-goals",
|
|
180
|
-
label:
|
|
181
|
-
path: a(
|
|
182
|
-
icon: /* @__PURE__ */
|
|
186
|
+
label: U("planmagnet.nav.goals", "Goals (OKRs)"),
|
|
187
|
+
path: a(H, "goals/goals-page"),
|
|
188
|
+
icon: /* @__PURE__ */ R(g, { size: 16 }),
|
|
183
189
|
order: 3.5,
|
|
184
190
|
children: [{
|
|
185
191
|
id: "planmagnet-goals-all",
|
|
186
|
-
label:
|
|
187
|
-
path: a(
|
|
188
|
-
icon: /* @__PURE__ */
|
|
192
|
+
label: U("planmagnet.nav.goals.all", "All Objectives"),
|
|
193
|
+
path: a(H, "goals/goals-page"),
|
|
194
|
+
icon: /* @__PURE__ */ R(g, { size: 16 })
|
|
189
195
|
}, {
|
|
190
196
|
id: "planmagnet-goals-create",
|
|
191
|
-
label:
|
|
192
|
-
path: a(
|
|
193
|
-
icon: /* @__PURE__ */
|
|
197
|
+
label: U("planmagnet.nav.goals.create", "Create Objective"),
|
|
198
|
+
path: a(H, "goals/create-objective-page"),
|
|
199
|
+
icon: /* @__PURE__ */ R(g, { size: 16 })
|
|
194
200
|
}]
|
|
195
201
|
},
|
|
196
202
|
{
|
|
197
203
|
id: "planmagnet-tasks",
|
|
198
|
-
label:
|
|
199
|
-
path: a(
|
|
200
|
-
icon: /* @__PURE__ */
|
|
204
|
+
label: U("planmagnet.nav.tasks", "Tasks"),
|
|
205
|
+
path: a(H, "tasks/tasks-page"),
|
|
206
|
+
icon: /* @__PURE__ */ R(p, { size: 16 }),
|
|
201
207
|
order: 4,
|
|
202
208
|
children: [
|
|
203
209
|
{
|
|
204
210
|
id: "planmagnet-tasks-my-dashboard",
|
|
205
|
-
label:
|
|
206
|
-
path: a(
|
|
207
|
-
icon: /* @__PURE__ */
|
|
211
|
+
label: U("planmagnet.nav.tasks.myDashboard", "My dashboard"),
|
|
212
|
+
path: a(H, "tasks/my-dashboard-page"),
|
|
213
|
+
icon: /* @__PURE__ */ R(x, { size: 16 })
|
|
208
214
|
},
|
|
209
215
|
{
|
|
210
216
|
id: "planmagnet-tasks-board",
|
|
211
|
-
label:
|
|
212
|
-
path: a(
|
|
213
|
-
icon: /* @__PURE__ */
|
|
217
|
+
label: U("planmagnet.nav.tasks.board", "Task Board"),
|
|
218
|
+
path: a(H, "tasks/tasks-page"),
|
|
219
|
+
icon: /* @__PURE__ */ R(p, { size: 16 })
|
|
214
220
|
},
|
|
215
221
|
{
|
|
216
222
|
id: "planmagnet-tasks-create",
|
|
217
|
-
label:
|
|
218
|
-
path: a(
|
|
219
|
-
icon: /* @__PURE__ */
|
|
223
|
+
label: U("planmagnet.nav.tasks.create", "Create Task"),
|
|
224
|
+
path: a(H, "tasks/create-task-page"),
|
|
225
|
+
icon: /* @__PURE__ */ R(p, { size: 16 })
|
|
220
226
|
}
|
|
221
227
|
]
|
|
222
228
|
},
|
|
223
229
|
{
|
|
224
230
|
id: "planmagnet-sprints",
|
|
225
|
-
label:
|
|
226
|
-
path: a(
|
|
227
|
-
icon: /* @__PURE__ */ L
|
|
231
|
+
label: U("planmagnet.nav.sprints", "Sprints"),
|
|
232
|
+
path: a(H, "sprints/start-sprint-page"),
|
|
233
|
+
icon: /* @__PURE__ */ R(L, { size: 16 }),
|
|
228
234
|
order: 5
|
|
229
235
|
},
|
|
230
236
|
{
|
|
231
237
|
id: "planmagnet-automation",
|
|
232
|
-
label:
|
|
233
|
-
path: a(
|
|
234
|
-
icon: /* @__PURE__ */
|
|
238
|
+
label: U("planmagnet.nav.automation", "Automation"),
|
|
239
|
+
path: a(H, "automation/automation-rules-page"),
|
|
240
|
+
icon: /* @__PURE__ */ R(u, { size: 16 }),
|
|
235
241
|
order: 5.5,
|
|
236
242
|
children: [{
|
|
237
243
|
id: "planmagnet-automation-rules",
|
|
238
|
-
label:
|
|
239
|
-
path: a(
|
|
240
|
-
icon: /* @__PURE__ */
|
|
244
|
+
label: U("planmagnet.nav.automation.rules", "Rules"),
|
|
245
|
+
path: a(H, "automation/automation-rules-page"),
|
|
246
|
+
icon: /* @__PURE__ */ R(u, { size: 16 })
|
|
241
247
|
}, {
|
|
242
248
|
id: "planmagnet-automation-create",
|
|
243
|
-
label:
|
|
244
|
-
path: a(
|
|
245
|
-
icon: /* @__PURE__ */
|
|
249
|
+
label: U("planmagnet.nav.automation.create", "New rule"),
|
|
250
|
+
path: a(H, "automation/create-automation-rule-page"),
|
|
251
|
+
icon: /* @__PURE__ */ R(u, { size: 16 })
|
|
246
252
|
}]
|
|
247
253
|
},
|
|
248
254
|
{
|
|
249
255
|
id: "planmagnet-ai",
|
|
250
|
-
label:
|
|
251
|
-
path: a(
|
|
252
|
-
icon: /* @__PURE__ */
|
|
256
|
+
label: U("planmagnet.nav.ai", "AI planning"),
|
|
257
|
+
path: a(H, "ai/plan-page"),
|
|
258
|
+
icon: /* @__PURE__ */ R(O, { size: 16 }),
|
|
253
259
|
order: 5.7,
|
|
254
260
|
children: [{
|
|
255
261
|
id: "planmagnet-ai-plan",
|
|
256
|
-
label:
|
|
257
|
-
path: a(
|
|
258
|
-
icon: /* @__PURE__ */
|
|
262
|
+
label: U("planmagnet.nav.ai.plan", "Break down work"),
|
|
263
|
+
path: a(H, "ai/plan-page"),
|
|
264
|
+
icon: /* @__PURE__ */ R(O, { size: 16 })
|
|
259
265
|
}, {
|
|
260
266
|
id: "planmagnet-ai-activity",
|
|
261
|
-
label:
|
|
262
|
-
path: a(
|
|
263
|
-
icon: /* @__PURE__ */
|
|
267
|
+
label: U("planmagnet.nav.ai.activity", "My AI activity"),
|
|
268
|
+
path: a(H, "ai/activity-page"),
|
|
269
|
+
icon: /* @__PURE__ */ R(b, { size: 16 })
|
|
264
270
|
}]
|
|
265
271
|
},
|
|
266
272
|
{
|
|
267
273
|
id: "planmagnet-activity",
|
|
268
|
-
label:
|
|
269
|
-
path: a(
|
|
270
|
-
icon: /* @__PURE__ */
|
|
274
|
+
label: U("planmagnet.nav.activity", "Activity"),
|
|
275
|
+
path: a(H, "activity/activity-page"),
|
|
276
|
+
icon: /* @__PURE__ */ R(c, { size: 16 }),
|
|
271
277
|
order: 6
|
|
272
278
|
},
|
|
273
279
|
{
|
|
274
280
|
id: "planmagnet-reports",
|
|
275
|
-
label:
|
|
276
|
-
path: a(
|
|
277
|
-
icon: /* @__PURE__ */
|
|
281
|
+
label: U("planmagnet.nav.reports", "Reports"),
|
|
282
|
+
path: a(H, "reports/reports-page"),
|
|
283
|
+
icon: /* @__PURE__ */ R(l, { size: 16 }),
|
|
278
284
|
order: 8
|
|
279
285
|
},
|
|
280
286
|
{
|
|
281
287
|
id: "planmagnet-team",
|
|
282
|
-
label:
|
|
283
|
-
path: a(
|
|
284
|
-
icon: /* @__PURE__ */
|
|
288
|
+
label: U("planmagnet.nav.team", "Team"),
|
|
289
|
+
path: a(H, "team/team-page"),
|
|
290
|
+
icon: /* @__PURE__ */ R(F, { size: 16 }),
|
|
285
291
|
order: 10,
|
|
286
292
|
children: [
|
|
287
293
|
{
|
|
288
294
|
id: "planmagnet-teams",
|
|
289
|
-
label:
|
|
290
|
-
path: a(
|
|
291
|
-
icon: /* @__PURE__ */
|
|
295
|
+
label: U("planmagnet.nav.team.teams", "Teams"),
|
|
296
|
+
path: a(H, "team/teams-page"),
|
|
297
|
+
icon: /* @__PURE__ */ R(F, { size: 16 })
|
|
292
298
|
},
|
|
293
299
|
{
|
|
294
300
|
id: "planmagnet-team-roster",
|
|
295
|
-
label:
|
|
296
|
-
path: a(
|
|
297
|
-
icon: /* @__PURE__ */
|
|
301
|
+
label: U("planmagnet.nav.team.members", "Members"),
|
|
302
|
+
path: a(H, "team/team-page"),
|
|
303
|
+
icon: /* @__PURE__ */ R(F, { size: 16 })
|
|
298
304
|
},
|
|
299
305
|
{
|
|
300
306
|
id: "planmagnet-team-invite",
|
|
301
|
-
label:
|
|
302
|
-
path: a(
|
|
303
|
-
icon: /* @__PURE__ */
|
|
307
|
+
label: U("planmagnet.nav.team.invite", "Invite member"),
|
|
308
|
+
path: a(H, "team/invite-member-page"),
|
|
309
|
+
icon: /* @__PURE__ */ R(P, { size: 16 })
|
|
304
310
|
}
|
|
305
311
|
]
|
|
306
312
|
},
|
|
307
313
|
{
|
|
308
314
|
id: "planmagnet-analytics",
|
|
309
|
-
label:
|
|
310
|
-
path: a(
|
|
311
|
-
icon: /* @__PURE__ */
|
|
315
|
+
label: U("planmagnet.nav.analytics", "Analytics"),
|
|
316
|
+
path: a(H, "analytics/analytics-page"),
|
|
317
|
+
icon: /* @__PURE__ */ R(N, { size: 16 }),
|
|
312
318
|
order: 12
|
|
313
319
|
}
|
|
314
320
|
]
|
|
315
321
|
});
|
|
316
322
|
}, [
|
|
317
323
|
n,
|
|
318
|
-
|
|
319
|
-
|
|
324
|
+
H,
|
|
325
|
+
U
|
|
320
326
|
]), s(() => {
|
|
321
|
-
if (
|
|
327
|
+
if (V) return V([{
|
|
322
328
|
id: "planmagnet-status",
|
|
323
|
-
label:
|
|
329
|
+
label: U("planmagnet.footer.ready", "PlanMagnet Ready"),
|
|
324
330
|
type: "status",
|
|
325
331
|
section: "left",
|
|
326
332
|
order: 10
|
|
327
333
|
}]);
|
|
328
|
-
}, [
|
|
334
|
+
}, [V, U]), /* @__PURE__ */ R(z, {
|
|
329
335
|
workspaceId: null,
|
|
330
336
|
gateway: "global",
|
|
331
337
|
defaultEnabled: !0,
|
|
332
|
-
children: /* @__PURE__ */
|
|
338
|
+
children: /* @__PURE__ */ R(e, {
|
|
333
339
|
...t,
|
|
334
|
-
children: /* @__PURE__ */
|
|
340
|
+
children: /* @__PURE__ */ R(B, { children: /* @__PURE__ */ R(i, {}) })
|
|
335
341
|
})
|
|
336
342
|
});
|
|
337
343
|
};
|
|
338
344
|
//#endregion
|
|
339
|
-
export {
|
|
345
|
+
export { V as PlanMagnetRoot };
|
|
340
346
|
|
|
341
347
|
//# sourceMappingURL=PlanMagnetRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanMagnetRoot.js","names":[],"sources":["../../src/planmagnet/PlanMagnetRoot.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport {\n LayoutDashboard,\n Package,\n FolderKanban,\n CheckSquare,\n Zap,\n CalendarDays,\n Users,\n TrendingUp,\n Star,\n GitBranch,\n Map,\n Target,\n Flag,\n UserPlus,\n Briefcase,\n Swords,\n Bot,\n LayoutTemplate,\n ShieldCheck,\n Sparkles,\n History,\n SquareGanttChart,\n Activity as ActivityIcon,\n LayoutGrid,\n ClipboardList,\n UsersRound,\n Crown,\n Gauge,\n BarChart3,\n} from 'lucide-react';\nimport { PlanMagnetProvider, usePlanMagnet } from './providers/PlanMagnetProvider';\nimport { PeopleProvider } from './people/People';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTr } from '../shared/hooks/useTr';\nimport type { NavItem, PlanMagnetRootProps } from './types';\nimport { PlanMagnetRoutes } from './PlanMagnetRoutes';\nimport { joinPath } from './utils/navigation';\nimport { PRIORITIZATION_PATH } from './product/routes';\n\n/** Resolves user ids to names for every page, in one batch (see people/People.tsx). */\nfunction PlanMagnetPeople({ children }: { children: ReactNode }) {\n const { workspaceId } = usePlanMagnet();\n return <PeopleProvider workspaceId={workspaceId ?? undefined}>{children}</PeopleProvider>;\n}\n\nexport const PlanMagnetRoot: FC<PlanMagnetRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const tr = useTr();\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'planmagnet',\n label: tr('planmagnet.nav.root', 'PlanMagnet'),\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'planmagnet-dashboard',\n label: tr('planmagnet.nav.dashboard', 'Dashboard'),\n path: joinPath(basePath, 'dashboard/dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n order: 1,\n },\n {\n // ANR-06/07/28, CWF-31: role dashboards composed from existing queries — no new backend.\n id: 'planmagnet-dashboards',\n label: tr('planmagnet.nav.dashboards', 'Dashboards'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n order: 1.5,\n children: [\n {\n id: 'planmagnet-dashboards-executive',\n label: tr('planmagnet.nav.dashboards.executive', 'Executive'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n },\n {\n id: 'planmagnet-dashboards-pm',\n label: tr('planmagnet.nav.dashboards.pm', 'Project manager'),\n path: joinPath(basePath, 'dashboards/project-manager-page'),\n icon: <ClipboardList size={16} />,\n },\n {\n id: 'planmagnet-dashboards-team',\n label: tr('planmagnet.nav.dashboards.team', 'Team utilization'),\n path: joinPath(basePath, 'dashboards/team-utilization-page'),\n icon: <UsersRound size={16} />,\n },\n {\n id: 'planmagnet-dashboards-leadership',\n label: tr('planmagnet.nav.dashboards.leadership', 'Leadership'),\n path: joinPath(basePath, 'dashboards/leadership-page'),\n icon: <Crown size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-products',\n label: tr('planmagnet.nav.products', 'Products'),\n // BOFF-8045: Product is now a real entity (vision, lifecycle stage, North\n // Star) distinct from Roadmap — `products-page` shows real Products, and\n // the group root points there again. \"Roadmaps\" stays as its own child\n // below, now genuinely about roadmaps rather than products relabelled.\n path: joinPath(basePath, 'products/products-page'),\n icon: <Package size={16} />,\n order: 2,\n children: [\n {\n id: 'planmagnet-features',\n label: tr('planmagnet.nav.products.features', 'Features'),\n path: joinPath(basePath, 'products/features-page'),\n icon: <Star size={16} />,\n },\n {\n id: 'planmagnet-releases',\n label: tr('planmagnet.nav.products.releases', 'Releases'),\n path: joinPath(basePath, 'products/releases-page'),\n icon: <GitBranch size={16} />,\n },\n {\n id: 'planmagnet-roadmaps',\n label: tr('planmagnet.nav.products.roadmaps', 'Roadmaps'),\n path: joinPath(basePath, 'products/roadmaps-page'),\n icon: <Map size={16} />,\n },\n {\n // BOFF-8047: Portfolios and Programs were `api-only` — full CRUD existed in the service with\n // zero routes anywhere in the UI.\n id: 'planmagnet-portfolios',\n label: tr('planmagnet.nav.products.portfolios', 'Portfolios'),\n path: joinPath(basePath, 'products/portfolios-page'),\n icon: <Briefcase size={16} />,\n },\n {\n id: 'planmagnet-programs',\n label: tr('planmagnet.nav.products.programs', 'Programs'),\n path: joinPath(basePath, 'products/programs-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-competitors',\n label: tr('planmagnet.nav.products.competitors', 'Competitors'),\n path: joinPath(basePath, 'products/competitors-page'),\n icon: <Swords size={16} />,\n },\n {\n // PRM-27: MoSCoW/Kano/Value-vs-Effort over feature requests or roadmap initiatives.\n id: 'planmagnet-prioritization',\n label: tr('planmagnet.nav.products.prioritization', 'Prioritization'),\n path: joinPath(basePath, PRIORITIZATION_PATH),\n icon: <Gauge size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-projects',\n label: tr('planmagnet.nav.projects', 'Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n order: 3,\n children: [\n {\n id: 'planmagnet-projects-all',\n label: tr('planmagnet.nav.projects.all', 'All Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-projects-active',\n label: tr('planmagnet.nav.projects.active', 'Active Projects'),\n path: joinPath(basePath, 'projects/active-projects-page'),\n icon: <TrendingUp size={16} />,\n },\n {\n id: 'planmagnet-projects-create',\n label: tr('planmagnet.nav.projects.create', 'Create Project'),\n path: joinPath(basePath, 'projects/create-project-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-milestones',\n label: tr('planmagnet.nav.projects.milestones', 'Milestones'),\n path: joinPath(basePath, 'projects/milestones-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'planmagnet-planning',\n label: tr('planmagnet.nav.projects.planning', 'Planning'),\n path: joinPath(basePath, 'projects/planning-page'),\n icon: <CalendarDays size={16} />,\n },\n {\n id: 'planmagnet-templates',\n label: tr('planmagnet.nav.projects.templates', 'Templates'),\n path: joinPath(basePath, 'templates/templates-page'),\n icon: <LayoutTemplate size={16} />,\n },\n {\n // GAP-02: the gates a release or phase must pass — list, criteria, review.\n id: 'planmagnet-quality-gates',\n label: tr('planmagnet.nav.projects.qualityGates', 'Quality gates'),\n path: joinPath(basePath, 'projects/quality-gates-page'),\n icon: <ShieldCheck size={16} />,\n },\n {\n // ANR-24: a timeline over the same WorkItemDependency graph the critical-path page's\n // dependency graph (PDM-27) reads.\n id: 'planmagnet-gantt',\n label: tr('planmagnet.nav.projects.gantt', 'Gantt'),\n path: joinPath(basePath, 'projects/gantt-page'),\n icon: <SquareGanttChart size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-goals',\n label: tr('planmagnet.nav.goals', 'Goals (OKRs)'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n order: 3.5,\n children: [\n {\n id: 'planmagnet-goals-all',\n label: tr('planmagnet.nav.goals.all', 'All Objectives'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n },\n {\n id: 'planmagnet-goals-create',\n label: tr('planmagnet.nav.goals.create', 'Create Objective'),\n path: joinPath(basePath, 'goals/create-objective-page'),\n icon: <Flag size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-tasks',\n label: tr('planmagnet.nav.tasks', 'Tasks'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n order: 4,\n children: [\n {\n // ANR-08: a team member's own time/delivery/goals view — first, alongside My Work.\n id: 'planmagnet-tasks-my-dashboard',\n label: tr('planmagnet.nav.tasks.myDashboard', 'My dashboard'),\n path: joinPath(basePath, 'tasks/my-dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n {\n id: 'planmagnet-tasks-board',\n label: tr('planmagnet.nav.tasks.board', 'Task Board'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n },\n {\n id: 'planmagnet-tasks-create',\n label: tr('planmagnet.nav.tasks.create', 'Create Task'),\n path: joinPath(basePath, 'tasks/create-task-page'),\n icon: <CheckSquare size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-sprints',\n label: tr('planmagnet.nav.sprints', 'Sprints'),\n path: joinPath(basePath, 'sprints/start-sprint-page'),\n icon: <Zap size={16} />,\n order: 5,\n },\n {\n id: 'planmagnet-automation',\n label: tr('planmagnet.nav.automation', 'Automation'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n order: 5.5,\n children: [\n {\n id: 'planmagnet-automation-rules',\n label: tr('planmagnet.nav.automation.rules', 'Rules'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n },\n {\n id: 'planmagnet-automation-create',\n label: tr('planmagnet.nav.automation.create', 'New rule'),\n path: joinPath(basePath, 'automation/create-automation-rule-page'),\n icon: <Bot size={16} />,\n },\n ],\n },\n {\n // AI-05 / AI-24: break work down with AI (every suggestion is confirmed by a person before it is created),\n // and the caller's own agent runs.\n id: 'planmagnet-ai',\n label: tr('planmagnet.nav.ai', 'AI planning'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n order: 5.7,\n children: [\n {\n id: 'planmagnet-ai-plan',\n label: tr('planmagnet.nav.ai.plan', 'Break down work'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n },\n {\n id: 'planmagnet-ai-activity',\n label: tr('planmagnet.nav.ai.activity', 'My AI activity'),\n path: joinPath(basePath, 'ai/activity-page'),\n icon: <History size={16} />,\n },\n ],\n },\n {\n // CWF-09: a merged, newest-first feed of work-item events across the workspace — creation, status\n // changes, comments and tracked field edits. A top-level item (not nested, unlike \"My AI activity\"\n // above, which is scoped to the caller's own AI calls) since this feed covers every project.\n id: 'planmagnet-activity',\n label: tr('planmagnet.nav.activity', 'Activity'),\n path: joinPath(basePath, 'activity/activity-page'),\n icon: <ActivityIcon size={16} />,\n order: 6,\n },\n {\n // ANR-13/14/15/16/17: a real, ownable, shareable, schedulable report model now backs this — it was\n // hidden (register: `not-built`) while the page fabricated rows client-side and Save ran no\n // mutation; see git history / BOFF-7822.\n id: 'planmagnet-reports',\n label: tr('planmagnet.nav.reports', 'Reports'),\n path: joinPath(basePath, 'reports/reports-page'),\n icon: <BarChart3 size={16} />,\n order: 8,\n },\n {\n // BOFF-8044: \"Team roster\" (a workspace directory, not a team) is relabelled \"Members\" so\n // it stops colliding with the real Team entity's own \"Teams\" list added alongside it.\n // \"Create Team\" is no longer hidden — the Team model now exists. \"Invite Member\" sends a\n // real invitation through the platform's createInvitation with a PlanMagnet access level (H12).\n id: 'planmagnet-team',\n label: tr('planmagnet.nav.team', 'Team'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n order: 10,\n children: [\n {\n id: 'planmagnet-teams',\n label: tr('planmagnet.nav.team.teams', 'Teams'),\n path: joinPath(basePath, 'team/teams-page'),\n icon: <Users size={16} />,\n },\n {\n // BOFF-8044: a NEW key, not a relabel of 'planmagnet.nav.team.roster' — a locale that\n // already had that key translated as \"Team roster\" would otherwise keep showing the\n // old wording regardless of this fallback, since useTr only falls back when the\n // provider has no translation for the KEY at all.\n id: 'planmagnet-team-roster',\n label: tr('planmagnet.nav.team.members', 'Members'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'planmagnet-team-invite',\n label: tr('planmagnet.nav.team.invite', 'Invite member'),\n path: joinPath(basePath, 'team/invite-member-page'),\n icon: <UserPlus size={16} />,\n },\n ],\n },\n // \"Workspace\" hidden: `create-workspace-page` navigated home on submit and created\n // nothing (a false success). Workspaces are created from the shell's workspace\n // switcher, which is the platform's real flow. Route kept; page now says so.\n {\n id: 'planmagnet-analytics',\n label: tr('planmagnet.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics/analytics-page'),\n icon: <TrendingUp size={16} />,\n order: 12,\n },\n ],\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, tr]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'planmagnet-status',\n label: tr('planmagnet.footer.ready', 'PlanMagnet Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, tr]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <PlanMagnetProvider {...props}>\n <PlanMagnetPeople>\n <PlanMagnetRoutes />\n </PlanMagnetPeople>\n </PlanMagnetProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlanMagnetRoot.js","names":[],"sources":["../../src/planmagnet/PlanMagnetRoot.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport {\n LayoutDashboard,\n Package,\n FolderKanban,\n CheckSquare,\n Zap,\n CalendarDays,\n Users,\n TrendingUp,\n Star,\n GitBranch,\n Map,\n Target,\n Flag,\n UserPlus,\n Briefcase,\n Swords,\n Bot,\n LayoutTemplate,\n ShieldCheck,\n Sparkles,\n History,\n SquareGanttChart,\n ShieldAlert,\n Activity as ActivityIcon,\n LayoutGrid,\n ClipboardList,\n UsersRound,\n Crown,\n Gauge,\n BarChart3,\n} from 'lucide-react';\nimport { PlanMagnetProvider, usePlanMagnet } from './providers/PlanMagnetProvider';\nimport { PeopleProvider } from './people/People';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTr } from '../shared/hooks/useTr';\nimport type { NavItem, PlanMagnetRootProps } from './types';\nimport { PlanMagnetRoutes } from './PlanMagnetRoutes';\nimport { joinPath } from './utils/navigation';\nimport { PRIORITIZATION_PATH } from './product/routes';\n\n/** Resolves user ids to names for every page, in one batch (see people/People.tsx). */\nfunction PlanMagnetPeople({ children }: { children: ReactNode }) {\n const { workspaceId } = usePlanMagnet();\n return <PeopleProvider workspaceId={workspaceId ?? undefined}>{children}</PeopleProvider>;\n}\n\nexport const PlanMagnetRoot: FC<PlanMagnetRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const tr = useTr();\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'planmagnet',\n label: tr('planmagnet.nav.root', 'PlanMagnet'),\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'planmagnet-dashboard',\n label: tr('planmagnet.nav.dashboard', 'Dashboard'),\n path: joinPath(basePath, 'dashboard/dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n order: 1,\n },\n {\n // ANR-06/07/28, CWF-31: role dashboards composed from existing queries — no new backend.\n id: 'planmagnet-dashboards',\n label: tr('planmagnet.nav.dashboards', 'Dashboards'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n order: 1.5,\n children: [\n {\n id: 'planmagnet-dashboards-executive',\n label: tr('planmagnet.nav.dashboards.executive', 'Executive'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n },\n {\n id: 'planmagnet-dashboards-pm',\n label: tr('planmagnet.nav.dashboards.pm', 'Project manager'),\n path: joinPath(basePath, 'dashboards/project-manager-page'),\n icon: <ClipboardList size={16} />,\n },\n {\n id: 'planmagnet-dashboards-team',\n label: tr('planmagnet.nav.dashboards.team', 'Team utilization'),\n path: joinPath(basePath, 'dashboards/team-utilization-page'),\n icon: <UsersRound size={16} />,\n },\n {\n id: 'planmagnet-dashboards-leadership',\n label: tr('planmagnet.nav.dashboards.leadership', 'Leadership'),\n path: joinPath(basePath, 'dashboards/leadership-page'),\n icon: <Crown size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-products',\n label: tr('planmagnet.nav.products', 'Products'),\n // BOFF-8045: Product is now a real entity (vision, lifecycle stage, North\n // Star) distinct from Roadmap — `products-page` shows real Products, and\n // the group root points there again. \"Roadmaps\" stays as its own child\n // below, now genuinely about roadmaps rather than products relabelled.\n path: joinPath(basePath, 'products/products-page'),\n icon: <Package size={16} />,\n order: 2,\n children: [\n {\n id: 'planmagnet-features',\n label: tr('planmagnet.nav.products.features', 'Features'),\n path: joinPath(basePath, 'products/features-page'),\n icon: <Star size={16} />,\n },\n {\n id: 'planmagnet-releases',\n label: tr('planmagnet.nav.products.releases', 'Releases'),\n path: joinPath(basePath, 'products/releases-page'),\n icon: <GitBranch size={16} />,\n },\n {\n id: 'planmagnet-roadmaps',\n label: tr('planmagnet.nav.products.roadmaps', 'Roadmaps'),\n path: joinPath(basePath, 'products/roadmaps-page'),\n icon: <Map size={16} />,\n },\n {\n // BOFF-8047: Portfolios and Programs were `api-only` — full CRUD existed in the service with\n // zero routes anywhere in the UI.\n id: 'planmagnet-portfolios',\n label: tr('planmagnet.nav.products.portfolios', 'Portfolios'),\n path: joinPath(basePath, 'products/portfolios-page'),\n icon: <Briefcase size={16} />,\n },\n {\n id: 'planmagnet-programs',\n label: tr('planmagnet.nav.products.programs', 'Programs'),\n path: joinPath(basePath, 'products/programs-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-competitors',\n label: tr('planmagnet.nav.products.competitors', 'Competitors'),\n path: joinPath(basePath, 'products/competitors-page'),\n icon: <Swords size={16} />,\n },\n {\n // PRM-27: MoSCoW/Kano/Value-vs-Effort over feature requests or roadmap initiatives.\n id: 'planmagnet-prioritization',\n label: tr('planmagnet.nav.products.prioritization', 'Prioritization'),\n path: joinPath(basePath, PRIORITIZATION_PATH),\n icon: <Gauge size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-projects',\n label: tr('planmagnet.nav.projects', 'Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n order: 3,\n children: [\n {\n id: 'planmagnet-projects-all',\n label: tr('planmagnet.nav.projects.all', 'All Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-projects-active',\n label: tr('planmagnet.nav.projects.active', 'Active Projects'),\n path: joinPath(basePath, 'projects/active-projects-page'),\n icon: <TrendingUp size={16} />,\n },\n {\n id: 'planmagnet-projects-create',\n label: tr('planmagnet.nav.projects.create', 'Create Project'),\n path: joinPath(basePath, 'projects/create-project-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-milestones',\n label: tr('planmagnet.nav.projects.milestones', 'Milestones'),\n path: joinPath(basePath, 'projects/milestones-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'planmagnet-planning',\n label: tr('planmagnet.nav.projects.planning', 'Planning'),\n path: joinPath(basePath, 'projects/planning-page'),\n icon: <CalendarDays size={16} />,\n },\n {\n id: 'planmagnet-templates',\n label: tr('planmagnet.nav.projects.templates', 'Templates'),\n path: joinPath(basePath, 'templates/templates-page'),\n icon: <LayoutTemplate size={16} />,\n },\n {\n // GAP-02: the gates a release or phase must pass — list, criteria, review.\n id: 'planmagnet-quality-gates',\n label: tr('planmagnet.nav.projects.qualityGates', 'Quality gates'),\n path: joinPath(basePath, 'projects/quality-gates-page'),\n icon: <ShieldCheck size={16} />,\n },\n {\n // ANR-24: a timeline over the same WorkItemDependency graph the critical-path page's\n // dependency graph (PDM-27) reads.\n id: 'planmagnet-gantt',\n label: tr('planmagnet.nav.projects.gantt', 'Gantt'),\n path: joinPath(basePath, 'projects/gantt-page'),\n icon: <SquareGanttChart size={16} />,\n },\n {\n // AI-10: rule-based at-risk work item flags, project-scoped.\n id: 'planmagnet-at-risk',\n label: tr('planmagnet.nav.projects.atRisk', 'At-risk work'),\n path: joinPath(basePath, 'projects/at-risk-page'),\n icon: <ShieldAlert size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-goals',\n label: tr('planmagnet.nav.goals', 'Goals (OKRs)'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n order: 3.5,\n children: [\n {\n id: 'planmagnet-goals-all',\n label: tr('planmagnet.nav.goals.all', 'All Objectives'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n },\n {\n id: 'planmagnet-goals-create',\n label: tr('planmagnet.nav.goals.create', 'Create Objective'),\n path: joinPath(basePath, 'goals/create-objective-page'),\n icon: <Flag size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-tasks',\n label: tr('planmagnet.nav.tasks', 'Tasks'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n order: 4,\n children: [\n {\n // ANR-08: a team member's own time/delivery/goals view — first, alongside My Work.\n id: 'planmagnet-tasks-my-dashboard',\n label: tr('planmagnet.nav.tasks.myDashboard', 'My dashboard'),\n path: joinPath(basePath, 'tasks/my-dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n {\n id: 'planmagnet-tasks-board',\n label: tr('planmagnet.nav.tasks.board', 'Task Board'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n },\n {\n id: 'planmagnet-tasks-create',\n label: tr('planmagnet.nav.tasks.create', 'Create Task'),\n path: joinPath(basePath, 'tasks/create-task-page'),\n icon: <CheckSquare size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-sprints',\n label: tr('planmagnet.nav.sprints', 'Sprints'),\n path: joinPath(basePath, 'sprints/start-sprint-page'),\n icon: <Zap size={16} />,\n order: 5,\n },\n {\n id: 'planmagnet-automation',\n label: tr('planmagnet.nav.automation', 'Automation'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n order: 5.5,\n children: [\n {\n id: 'planmagnet-automation-rules',\n label: tr('planmagnet.nav.automation.rules', 'Rules'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n },\n {\n id: 'planmagnet-automation-create',\n label: tr('planmagnet.nav.automation.create', 'New rule'),\n path: joinPath(basePath, 'automation/create-automation-rule-page'),\n icon: <Bot size={16} />,\n },\n ],\n },\n {\n // AI-05 / AI-24: break work down with AI (every suggestion is confirmed by a person before it is created),\n // and the caller's own agent runs.\n id: 'planmagnet-ai',\n label: tr('planmagnet.nav.ai', 'AI planning'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n order: 5.7,\n children: [\n {\n id: 'planmagnet-ai-plan',\n label: tr('planmagnet.nav.ai.plan', 'Break down work'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n },\n {\n id: 'planmagnet-ai-activity',\n label: tr('planmagnet.nav.ai.activity', 'My AI activity'),\n path: joinPath(basePath, 'ai/activity-page'),\n icon: <History size={16} />,\n },\n ],\n },\n {\n // CWF-09: a merged, newest-first feed of work-item events across the workspace — creation, status\n // changes, comments and tracked field edits. A top-level item (not nested, unlike \"My AI activity\"\n // above, which is scoped to the caller's own AI calls) since this feed covers every project.\n id: 'planmagnet-activity',\n label: tr('planmagnet.nav.activity', 'Activity'),\n path: joinPath(basePath, 'activity/activity-page'),\n icon: <ActivityIcon size={16} />,\n order: 6,\n },\n {\n // ANR-13/14/15/16/17: a real, ownable, shareable, schedulable report model now backs this — it was\n // hidden (register: `not-built`) while the page fabricated rows client-side and Save ran no\n // mutation; see git history / BOFF-7822.\n id: 'planmagnet-reports',\n label: tr('planmagnet.nav.reports', 'Reports'),\n path: joinPath(basePath, 'reports/reports-page'),\n icon: <BarChart3 size={16} />,\n order: 8,\n },\n {\n // BOFF-8044: \"Team roster\" (a workspace directory, not a team) is relabelled \"Members\" so\n // it stops colliding with the real Team entity's own \"Teams\" list added alongside it.\n // \"Create Team\" is no longer hidden — the Team model now exists. \"Invite Member\" sends a\n // real invitation through the platform's createInvitation with a PlanMagnet access level (H12).\n id: 'planmagnet-team',\n label: tr('planmagnet.nav.team', 'Team'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n order: 10,\n children: [\n {\n id: 'planmagnet-teams',\n label: tr('planmagnet.nav.team.teams', 'Teams'),\n path: joinPath(basePath, 'team/teams-page'),\n icon: <Users size={16} />,\n },\n {\n // BOFF-8044: a NEW key, not a relabel of 'planmagnet.nav.team.roster' — a locale that\n // already had that key translated as \"Team roster\" would otherwise keep showing the\n // old wording regardless of this fallback, since useTr only falls back when the\n // provider has no translation for the KEY at all.\n id: 'planmagnet-team-roster',\n label: tr('planmagnet.nav.team.members', 'Members'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'planmagnet-team-invite',\n label: tr('planmagnet.nav.team.invite', 'Invite member'),\n path: joinPath(basePath, 'team/invite-member-page'),\n icon: <UserPlus size={16} />,\n },\n ],\n },\n // \"Workspace\" hidden: `create-workspace-page` navigated home on submit and created\n // nothing (a false success). Workspaces are created from the shell's workspace\n // switcher, which is the platform's real flow. Route kept; page now says so.\n {\n id: 'planmagnet-analytics',\n label: tr('planmagnet.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics/analytics-page'),\n icon: <TrendingUp size={16} />,\n order: 12,\n },\n ],\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, tr]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'planmagnet-status',\n label: tr('planmagnet.footer.ready', 'PlanMagnet Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, tr]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <PlanMagnetProvider {...props}>\n <PlanMagnetPeople>\n <PlanMagnetRoutes />\n </PlanMagnetPeople>\n </PlanMagnetProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanMagnetRoutes.d.ts","sourceRoot":"","sources":["../../src/planmagnet/PlanMagnetRoutes.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlanMagnetRoutes.d.ts","sourceRoot":"","sources":["../../src/planmagnet/PlanMagnetRoutes.tsx"],"names":[],"mappings":"AA8aA,wBAAgB,gBAAgB,4CA4P/B"}
|