@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.
Files changed (72) hide show
  1. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  2. package/dist/planmagnet/PlanMagnetRoot.js +156 -150
  3. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  4. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  5. package/dist/planmagnet/PlanMagnetRoutes.js +19 -15
  6. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  7. package/dist/planmagnet/comments/CommentThread.js +36 -36
  8. package/dist/planmagnet/comments/RoadmapComments.js +21 -21
  9. package/dist/planmagnet/controls/AutomationRuleControls.js +24 -24
  10. package/dist/planmagnet/controls/FeatureControls.js +60 -60
  11. package/dist/planmagnet/controls/SyncControls.js +59 -59
  12. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +15 -15
  13. package/dist/planmagnet/docs/DocSuggestionsPanel.js +12 -12
  14. package/dist/planmagnet/docs/DocVersionCompare.js +3 -3
  15. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts +12 -0
  16. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts.map +1 -0
  17. package/dist/planmagnet/forecast/DeliveryForecastCard.js +208 -0
  18. package/dist/planmagnet/forecast/DeliveryForecastCard.js.map +1 -0
  19. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts +5 -0
  20. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts.map +1 -0
  21. package/dist/planmagnet/forecast/ProjectOutlookCard.js +190 -0
  22. package/dist/planmagnet/forecast/ProjectOutlookCard.js.map +1 -0
  23. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts +5 -0
  24. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts.map +1 -0
  25. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js +99 -0
  26. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js.map +1 -0
  27. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts +8 -0
  28. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts.map +1 -0
  29. package/dist/planmagnet/forecast/ResourceForecastCard.js +185 -0
  30. package/dist/planmagnet/forecast/ResourceForecastCard.js.map +1 -0
  31. package/dist/planmagnet/forecast/riskFlags.d.ts +35 -0
  32. package/dist/planmagnet/forecast/riskFlags.d.ts.map +1 -0
  33. package/dist/planmagnet/forecast/riskFlags.js +37 -0
  34. package/dist/planmagnet/forecast/riskFlags.js.map +1 -0
  35. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
  36. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +216 -182
  37. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  38. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js +11 -11
  39. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js +4 -4
  40. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +163 -163
  41. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
  42. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js +165 -165
  43. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js.map +1 -1
  44. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts +2 -0
  45. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts.map +1 -0
  46. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js +234 -0
  47. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js.map +1 -0
  48. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
  49. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +206 -182
  50. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
  51. package/dist/planmagnet/pages/ReportsReportPagePage.js +22 -22
  52. package/dist/planmagnet/pages/ReportsReportPagePage.js.map +1 -1
  53. package/dist/planmagnet/pages/ReportsReportsPagePage.js +21 -21
  54. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +1 -1
  55. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js +88 -83
  56. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +1 -1
  57. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.d.ts.map +1 -1
  58. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js +139 -112
  59. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js.map +1 -1
  60. package/dist/planmagnet/pages/analytics/StatusFlowCard.js +21 -21
  61. package/dist/planmagnet/product/ProductControls.js +91 -91
  62. package/dist/planmagnet/reports/SchedulesPanel.js +33 -33
  63. package/dist/planmagnet/reports/ShareDialog.js +20 -20
  64. package/dist/planmagnet/reports/ShareDialog.js.map +1 -1
  65. package/dist/planmagnet/reports/sharedReportRoute.d.ts +3 -2
  66. package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +1 -1
  67. package/dist/planmagnet/reports/sharedReportRoute.js.map +1 -1
  68. package/dist/planmagnet/roadmaps/RoadmapControls.js +60 -60
  69. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js +30 -30
  70. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js +21 -21
  71. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js +22 -22
  72. 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;AAqC3C,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAW5D,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA6WlD,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, ShieldCheck as E, Sparkles as D, SquareGanttChart as O, Star as k, Swords as A, Target as j, TrendingUp as M, UserPlus as N, Users as P, UsersRound as F, Zap as I } from "lucide-react";
9
- import { jsx as L } from "react/jsx-runtime";
10
- import { FeatureFlagProvider as R } from "@burdenoff/fe-libs/shared/feature-flags";
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 z({ children: e }) {
12
+ function B({ children: e }) {
13
13
  let { workspaceId: r } = t();
14
- return /* @__PURE__ */ L(n, {
14
+ return /* @__PURE__ */ R(n, {
15
15
  workspaceId: r ?? void 0,
16
16
  children: e
17
17
  });
18
18
  }
19
- var B = (t) => {
20
- let { registerNavItems: n, registerFooterItems: B, basePath: V = "/" } = t, H = r();
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: H("planmagnet.nav.root", "PlanMagnet"),
25
- path: V,
26
- icon: /* @__PURE__ */ L(x, { size: 20 }),
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: H("planmagnet.nav.dashboard", "Dashboard"),
33
- path: a(V, "dashboard/dashboard-page"),
34
- icon: /* @__PURE__ */ L(x, { size: 16 }),
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: H("planmagnet.nav.dashboards", "Dashboards"),
40
- path: a(V, "dashboards/executive-page"),
41
- icon: /* @__PURE__ */ L(S, { size: 16 }),
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: H("planmagnet.nav.dashboards.executive", "Executive"),
47
- path: a(V, "dashboards/executive-page"),
48
- icon: /* @__PURE__ */ L(S, { size: 16 })
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: H("planmagnet.nav.dashboards.pm", "Project manager"),
53
- path: a(V, "dashboards/project-manager-page"),
54
- icon: /* @__PURE__ */ L(m, { size: 16 })
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: H("planmagnet.nav.dashboards.team", "Team utilization"),
59
- path: a(V, "dashboards/team-utilization-page"),
60
- icon: /* @__PURE__ */ L(F, { size: 16 })
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: H("planmagnet.nav.dashboards.leadership", "Leadership"),
65
- path: a(V, "dashboards/leadership-page"),
66
- icon: /* @__PURE__ */ L(h, { size: 16 })
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: H("planmagnet.nav.products", "Products"),
73
- path: a(V, "products/products-page"),
74
- icon: /* @__PURE__ */ L(T, { size: 16 }),
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: H("planmagnet.nav.products.features", "Features"),
80
- path: a(V, "products/features-page"),
81
- icon: /* @__PURE__ */ L(k, { size: 16 })
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: H("planmagnet.nav.products.releases", "Releases"),
86
- path: a(V, "products/releases-page"),
87
- icon: /* @__PURE__ */ L(y, { size: 16 })
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: H("planmagnet.nav.products.roadmaps", "Roadmaps"),
92
- path: a(V, "products/roadmaps-page"),
93
- icon: /* @__PURE__ */ L(w, { size: 16 })
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: H("planmagnet.nav.products.portfolios", "Portfolios"),
98
- path: a(V, "products/portfolios-page"),
99
- icon: /* @__PURE__ */ L(d, { size: 16 })
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: H("planmagnet.nav.products.programs", "Programs"),
104
- path: a(V, "products/programs-page"),
105
- icon: /* @__PURE__ */ L(_, { size: 16 })
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: H("planmagnet.nav.products.competitors", "Competitors"),
110
- path: a(V, "products/competitors-page"),
111
- icon: /* @__PURE__ */ L(A, { size: 16 })
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: H("planmagnet.nav.products.prioritization", "Prioritization"),
116
- path: a(V, o),
117
- icon: /* @__PURE__ */ L(v, { size: 16 })
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: H("planmagnet.nav.projects", "Projects"),
124
- path: a(V, "projects/projects-page"),
125
- icon: /* @__PURE__ */ L(_, { size: 16 }),
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: H("planmagnet.nav.projects.all", "All Projects"),
131
- path: a(V, "projects/projects-page"),
132
- icon: /* @__PURE__ */ L(_, { size: 16 })
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: H("planmagnet.nav.projects.active", "Active Projects"),
137
- path: a(V, "projects/active-projects-page"),
138
- icon: /* @__PURE__ */ L(M, { size: 16 })
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: H("planmagnet.nav.projects.create", "Create Project"),
143
- path: a(V, "projects/create-project-page"),
144
- icon: /* @__PURE__ */ L(_, { size: 16 })
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: H("planmagnet.nav.projects.milestones", "Milestones"),
149
- path: a(V, "projects/milestones-page"),
150
- icon: /* @__PURE__ */ L(j, { size: 16 })
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: H("planmagnet.nav.projects.planning", "Planning"),
155
- path: a(V, "projects/planning-page"),
156
- icon: /* @__PURE__ */ L(f, { size: 16 })
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: H("planmagnet.nav.projects.templates", "Templates"),
161
- path: a(V, "templates/templates-page"),
162
- icon: /* @__PURE__ */ L(C, { size: 16 })
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: H("planmagnet.nav.projects.qualityGates", "Quality gates"),
167
- path: a(V, "projects/quality-gates-page"),
168
- icon: /* @__PURE__ */ L(E, { size: 16 })
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: H("planmagnet.nav.projects.gantt", "Gantt"),
173
- path: a(V, "projects/gantt-page"),
174
- icon: /* @__PURE__ */ L(O, { size: 16 })
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: H("planmagnet.nav.goals", "Goals (OKRs)"),
181
- path: a(V, "goals/goals-page"),
182
- icon: /* @__PURE__ */ L(g, { size: 16 }),
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: H("planmagnet.nav.goals.all", "All Objectives"),
187
- path: a(V, "goals/goals-page"),
188
- icon: /* @__PURE__ */ L(g, { size: 16 })
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: H("planmagnet.nav.goals.create", "Create Objective"),
192
- path: a(V, "goals/create-objective-page"),
193
- icon: /* @__PURE__ */ L(g, { size: 16 })
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: H("planmagnet.nav.tasks", "Tasks"),
199
- path: a(V, "tasks/tasks-page"),
200
- icon: /* @__PURE__ */ L(p, { size: 16 }),
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: H("planmagnet.nav.tasks.myDashboard", "My dashboard"),
206
- path: a(V, "tasks/my-dashboard-page"),
207
- icon: /* @__PURE__ */ L(x, { size: 16 })
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: H("planmagnet.nav.tasks.board", "Task Board"),
212
- path: a(V, "tasks/tasks-page"),
213
- icon: /* @__PURE__ */ L(p, { size: 16 })
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: H("planmagnet.nav.tasks.create", "Create Task"),
218
- path: a(V, "tasks/create-task-page"),
219
- icon: /* @__PURE__ */ L(p, { size: 16 })
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: H("planmagnet.nav.sprints", "Sprints"),
226
- path: a(V, "sprints/start-sprint-page"),
227
- icon: /* @__PURE__ */ L(I, { size: 16 }),
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: H("planmagnet.nav.automation", "Automation"),
233
- path: a(V, "automation/automation-rules-page"),
234
- icon: /* @__PURE__ */ L(u, { size: 16 }),
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: H("planmagnet.nav.automation.rules", "Rules"),
239
- path: a(V, "automation/automation-rules-page"),
240
- icon: /* @__PURE__ */ L(u, { size: 16 })
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: H("planmagnet.nav.automation.create", "New rule"),
244
- path: a(V, "automation/create-automation-rule-page"),
245
- icon: /* @__PURE__ */ L(u, { size: 16 })
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: H("planmagnet.nav.ai", "AI planning"),
251
- path: a(V, "ai/plan-page"),
252
- icon: /* @__PURE__ */ L(D, { size: 16 }),
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: H("planmagnet.nav.ai.plan", "Break down work"),
257
- path: a(V, "ai/plan-page"),
258
- icon: /* @__PURE__ */ L(D, { size: 16 })
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: H("planmagnet.nav.ai.activity", "My AI activity"),
262
- path: a(V, "ai/activity-page"),
263
- icon: /* @__PURE__ */ L(b, { size: 16 })
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: H("planmagnet.nav.activity", "Activity"),
269
- path: a(V, "activity/activity-page"),
270
- icon: /* @__PURE__ */ L(c, { size: 16 }),
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: H("planmagnet.nav.reports", "Reports"),
276
- path: a(V, "reports/reports-page"),
277
- icon: /* @__PURE__ */ L(l, { size: 16 }),
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: H("planmagnet.nav.team", "Team"),
283
- path: a(V, "team/team-page"),
284
- icon: /* @__PURE__ */ L(P, { size: 16 }),
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: H("planmagnet.nav.team.teams", "Teams"),
290
- path: a(V, "team/teams-page"),
291
- icon: /* @__PURE__ */ L(P, { size: 16 })
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: H("planmagnet.nav.team.members", "Members"),
296
- path: a(V, "team/team-page"),
297
- icon: /* @__PURE__ */ L(P, { size: 16 })
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: H("planmagnet.nav.team.invite", "Invite member"),
302
- path: a(V, "team/invite-member-page"),
303
- icon: /* @__PURE__ */ L(N, { size: 16 })
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: H("planmagnet.nav.analytics", "Analytics"),
310
- path: a(V, "analytics/analytics-page"),
311
- icon: /* @__PURE__ */ L(M, { size: 16 }),
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
- V,
319
- H
324
+ H,
325
+ U
320
326
  ]), s(() => {
321
- if (B) return B([{
327
+ if (V) return V([{
322
328
  id: "planmagnet-status",
323
- label: H("planmagnet.footer.ready", "PlanMagnet Ready"),
329
+ label: U("planmagnet.footer.ready", "PlanMagnet Ready"),
324
330
  type: "status",
325
331
  section: "left",
326
332
  order: 10
327
333
  }]);
328
- }, [B, H]), /* @__PURE__ */ L(R, {
334
+ }, [V, U]), /* @__PURE__ */ R(z, {
329
335
  workspaceId: null,
330
336
  gateway: "global",
331
337
  defaultEnabled: !0,
332
- children: /* @__PURE__ */ L(e, {
338
+ children: /* @__PURE__ */ R(e, {
333
339
  ...t,
334
- children: /* @__PURE__ */ L(z, { children: /* @__PURE__ */ L(i, {}) })
340
+ children: /* @__PURE__ */ R(B, { children: /* @__PURE__ */ R(i, {}) })
335
341
  })
336
342
  });
337
343
  };
338
344
  //#endregion
339
- export { B as PlanMagnetRoot };
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":"AA0aA,wBAAgB,gBAAgB,4CA0P/B"}
1
+ {"version":3,"file":"PlanMagnetRoutes.d.ts","sourceRoot":"","sources":["../../src/planmagnet/PlanMagnetRoutes.tsx"],"names":[],"mappings":"AA8aA,wBAAgB,gBAAgB,4CA4P/B"}