@burdenoff/microfe-planmagnet 2026.930.23 → 2026.930.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +6 -5
- package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +154 -147
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +66 -62
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/comments/CommentThread.d.ts +8 -1
- package/dist/planmagnet/comments/CommentThread.d.ts.map +1 -1
- package/dist/planmagnet/comments/CommentThread.js +188 -181
- package/dist/planmagnet/comments/CommentThread.js.map +1 -1
- package/dist/planmagnet/comments/TargetComments.d.ts +10 -2
- package/dist/planmagnet/comments/TargetComments.d.ts.map +1 -1
- package/dist/planmagnet/comments/TargetComments.js +10 -8
- package/dist/planmagnet/comments/TargetComments.js.map +1 -1
- package/dist/planmagnet/comments/WorkItemComments.d.ts +7 -1
- package/dist/planmagnet/comments/WorkItemComments.d.ts.map +1 -1
- package/dist/planmagnet/comments/WorkItemComments.js +5 -4
- package/dist/planmagnet/comments/WorkItemComments.js.map +1 -1
- package/dist/planmagnet/controls/FeatureControls.d.ts +11 -0
- package/dist/planmagnet/controls/FeatureControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/FeatureControls.js +305 -135
- package/dist/planmagnet/controls/FeatureControls.js.map +1 -1
- package/dist/planmagnet/controls/Pickers.d.ts +18 -0
- package/dist/planmagnet/controls/Pickers.d.ts.map +1 -1
- package/dist/planmagnet/controls/Pickers.js +78 -1
- package/dist/planmagnet/controls/Pickers.js.map +1 -1
- package/dist/planmagnet/controls/PrioritizationControls.d.ts +72 -0
- package/dist/planmagnet/controls/PrioritizationControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/PrioritizationControls.js +246 -0
- package/dist/planmagnet/controls/PrioritizationControls.js.map +1 -0
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.d.ts +8 -0
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.d.ts.map +1 -0
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +217 -0
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js.map +1 -0
- package/dist/planmagnet/docs/DocDiffView.d.ts +26 -0
- package/dist/planmagnet/docs/DocDiffView.d.ts.map +1 -0
- package/dist/planmagnet/docs/DocDiffView.js +52 -0
- package/dist/planmagnet/docs/DocDiffView.js.map +1 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.d.ts +13 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.d.ts.map +1 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.js +308 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.js.map +1 -0
- package/dist/planmagnet/docs/DocVersionCompare.d.ts +7 -0
- package/dist/planmagnet/docs/DocVersionCompare.d.ts.map +1 -0
- package/dist/planmagnet/docs/DocVersionCompare.js +105 -0
- package/dist/planmagnet/docs/DocVersionCompare.js.map +1 -0
- package/dist/planmagnet/hooks/usePresence.d.ts +39 -0
- package/dist/planmagnet/hooks/usePresence.d.ts.map +1 -0
- package/dist/planmagnet/hooks/usePresence.js +146 -0
- package/dist/planmagnet/hooks/usePresence.js.map +1 -0
- package/dist/planmagnet/index.d.ts +1 -0
- package/dist/planmagnet/index.d.ts.map +1 -1
- package/dist/planmagnet/index.js +1 -0
- package/dist/planmagnet/links/CodeLinksPanel.d.ts +22 -0
- package/dist/planmagnet/links/CodeLinksPanel.d.ts.map +1 -0
- package/dist/planmagnet/links/CodeLinksPanel.js +94 -0
- package/dist/planmagnet/links/CodeLinksPanel.js.map +1 -0
- package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +488 -217
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +131 -125
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +183 -99
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +113 -97
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsPrioritizationPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/ProductsPrioritizationPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ProductsPrioritizationPagePage.js +363 -0
- package/dist/planmagnet/pages/ProductsPrioritizationPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +96 -79
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +144 -128
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +205 -196
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +194 -160
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
- package/dist/planmagnet/presence/PresenceAvatars.d.ts +16 -0
- package/dist/planmagnet/presence/PresenceAvatars.d.ts.map +1 -0
- package/dist/planmagnet/presence/PresenceAvatars.js +56 -0
- package/dist/planmagnet/presence/PresenceAvatars.js.map +1 -0
- package/dist/planmagnet/product/ProductControls.d.ts +33 -0
- package/dist/planmagnet/product/ProductControls.d.ts.map +1 -1
- package/dist/planmagnet/product/ProductControls.js +593 -268
- package/dist/planmagnet/product/ProductControls.js.map +1 -1
- package/dist/planmagnet/product/routes.d.ts +10 -0
- package/dist/planmagnet/product/routes.d.ts.map +1 -0
- package/dist/planmagnet/product/routes.js +6 -0
- package/dist/planmagnet/product/routes.js.map +1 -0
- package/dist/planmagnet/roadmaps/RoadmapControls.d.ts +10 -0
- package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +1 -1
- package/dist/planmagnet/roadmaps/RoadmapControls.js +235 -184
- package/dist/planmagnet/roadmaps/RoadmapControls.js.map +1 -1
- package/dist/planmagnet/utils/graphqlErrors.d.ts +6 -0
- package/dist/planmagnet/utils/graphqlErrors.d.ts.map +1 -1
- package/dist/planmagnet/utils/graphqlErrors.js +5 -2
- package/dist/planmagnet/utils/graphqlErrors.js.map +1 -1
- package/dist/planmagnet/utils/lineDiff.d.ts +21 -0
- package/dist/planmagnet/utils/lineDiff.d.ts.map +1 -0
- package/dist/planmagnet/utils/lineDiff.js +36 -0
- package/dist/planmagnet/utils/lineDiff.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "./planmagnet/providers/PlanMagnetProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { PRIORITIZATION_PATH as n } from "./planmagnet/product/routes.js";
|
|
3
|
+
import { PlanMagnetRoot as r } from "./planmagnet/PlanMagnetRoot.js";
|
|
4
|
+
import { PlanMagnetAdminRoot as i } from "./planmagnet/admin/PlanMagnetAdminRoot.js";
|
|
5
|
+
import { usePlanMagnetStore as a } from "./planmagnet/store/planmagnetStore.js";
|
|
6
|
+
import { INTEGRATIONS_NEW_SYNC_PATH as o, INTEGRATIONS_SYNCS_PATH as s, INTEGRATIONS_SYNC_DETAIL_PATH as c, integrationsSyncDetailPath as l } from "./planmagnet/integrations/routes.js";
|
|
6
7
|
import "./planmagnet/index.js";
|
|
7
|
-
export {
|
|
8
|
+
export { o as INTEGRATIONS_NEW_SYNC_PATH, s as INTEGRATIONS_SYNCS_PATH, c as INTEGRATIONS_SYNC_DETAIL_PATH, n as PRIORITIZATION_PATH, i as PlanMagnetAdminRoot, r as PlanMagnetRoot, l as integrationsSyncDetailPath, e as usePlanMagnet, t as usePlanMagnetNavigate, a as usePlanMagnetStore };
|
|
@@ -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;AAoC3C,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAW5D,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAqWlD,CAAC"}
|
|
@@ -3,325 +3,332 @@ import { PeopleProvider as n } from "./people/People.js";
|
|
|
3
3
|
import { useTr as r } from "../shared/hooks/useTr.js";
|
|
4
4
|
import { PlanMagnetRoutes as i } from "./PlanMagnetRoutes.js";
|
|
5
5
|
import { joinPath as a } from "./utils/navigation.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { PRIORITIZATION_PATH as o } from "./product/routes.js";
|
|
7
|
+
import { useEffect as s } from "react";
|
|
8
|
+
import { Activity as c, Bot as l, Briefcase as u, CalendarDays as d, CheckSquare as f, ClipboardList as p, Crown as m, Flag as h, FolderKanban as g, Gauge as _, GitBranch as v, History as y, LayoutDashboard as b, LayoutGrid as x, LayoutTemplate as S, Map as C, Package as w, ShieldCheck as T, Sparkles as E, SquareGanttChart as D, Star as O, Swords as k, Target as A, TrendingUp as j, UserPlus as M, Users as N, UsersRound as P, Zap as F } from "lucide-react";
|
|
9
|
+
import { jsx as I } from "react/jsx-runtime";
|
|
10
|
+
import { FeatureFlagProvider as L } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
10
11
|
//#region src/planmagnet/PlanMagnetRoot.tsx
|
|
11
|
-
function
|
|
12
|
+
function R({ children: e }) {
|
|
12
13
|
let { workspaceId: r } = t();
|
|
13
|
-
return /* @__PURE__ */
|
|
14
|
+
return /* @__PURE__ */ I(n, {
|
|
14
15
|
workspaceId: r ?? void 0,
|
|
15
16
|
children: e
|
|
16
17
|
});
|
|
17
18
|
}
|
|
18
|
-
var
|
|
19
|
-
let { registerNavItems: n, registerFooterItems:
|
|
20
|
-
return
|
|
19
|
+
var z = (t) => {
|
|
20
|
+
let { registerNavItems: n, registerFooterItems: z, basePath: B = "/" } = t, V = r();
|
|
21
|
+
return s(() => {
|
|
21
22
|
if (n) return n({
|
|
22
23
|
id: "planmagnet",
|
|
23
|
-
label:
|
|
24
|
-
path:
|
|
25
|
-
icon: /* @__PURE__ */
|
|
24
|
+
label: V("planmagnet.nav.root", "PlanMagnet"),
|
|
25
|
+
path: B,
|
|
26
|
+
icon: /* @__PURE__ */ I(b, { size: 20 }),
|
|
26
27
|
order: 80,
|
|
27
28
|
group: "products",
|
|
28
29
|
children: [
|
|
29
30
|
{
|
|
30
31
|
id: "planmagnet-dashboard",
|
|
31
|
-
label:
|
|
32
|
-
path: a(
|
|
33
|
-
icon: /* @__PURE__ */
|
|
32
|
+
label: V("planmagnet.nav.dashboard", "Dashboard"),
|
|
33
|
+
path: a(B, "dashboard/dashboard-page"),
|
|
34
|
+
icon: /* @__PURE__ */ I(b, { size: 16 }),
|
|
34
35
|
order: 1
|
|
35
36
|
},
|
|
36
37
|
{
|
|
37
38
|
id: "planmagnet-dashboards",
|
|
38
|
-
label:
|
|
39
|
-
path: a(
|
|
40
|
-
icon: /* @__PURE__ */
|
|
39
|
+
label: V("planmagnet.nav.dashboards", "Dashboards"),
|
|
40
|
+
path: a(B, "dashboards/executive-page"),
|
|
41
|
+
icon: /* @__PURE__ */ I(x, { size: 16 }),
|
|
41
42
|
order: 1.5,
|
|
42
43
|
children: [
|
|
43
44
|
{
|
|
44
45
|
id: "planmagnet-dashboards-executive",
|
|
45
|
-
label:
|
|
46
|
-
path: a(
|
|
47
|
-
icon: /* @__PURE__ */
|
|
46
|
+
label: V("planmagnet.nav.dashboards.executive", "Executive"),
|
|
47
|
+
path: a(B, "dashboards/executive-page"),
|
|
48
|
+
icon: /* @__PURE__ */ I(x, { size: 16 })
|
|
48
49
|
},
|
|
49
50
|
{
|
|
50
51
|
id: "planmagnet-dashboards-pm",
|
|
51
|
-
label:
|
|
52
|
-
path: a(
|
|
53
|
-
icon: /* @__PURE__ */
|
|
52
|
+
label: V("planmagnet.nav.dashboards.pm", "Project manager"),
|
|
53
|
+
path: a(B, "dashboards/project-manager-page"),
|
|
54
|
+
icon: /* @__PURE__ */ I(p, { size: 16 })
|
|
54
55
|
},
|
|
55
56
|
{
|
|
56
57
|
id: "planmagnet-dashboards-team",
|
|
57
|
-
label:
|
|
58
|
-
path: a(
|
|
59
|
-
icon: /* @__PURE__ */ P
|
|
58
|
+
label: V("planmagnet.nav.dashboards.team", "Team utilization"),
|
|
59
|
+
path: a(B, "dashboards/team-utilization-page"),
|
|
60
|
+
icon: /* @__PURE__ */ I(P, { size: 16 })
|
|
60
61
|
},
|
|
61
62
|
{
|
|
62
63
|
id: "planmagnet-dashboards-leadership",
|
|
63
|
-
label:
|
|
64
|
-
path: a(
|
|
65
|
-
icon: /* @__PURE__ */
|
|
64
|
+
label: V("planmagnet.nav.dashboards.leadership", "Leadership"),
|
|
65
|
+
path: a(B, "dashboards/leadership-page"),
|
|
66
|
+
icon: /* @__PURE__ */ I(m, { size: 16 })
|
|
66
67
|
}
|
|
67
68
|
]
|
|
68
69
|
},
|
|
69
70
|
{
|
|
70
71
|
id: "planmagnet-products",
|
|
71
|
-
label:
|
|
72
|
-
path: a(
|
|
73
|
-
icon: /* @__PURE__ */
|
|
72
|
+
label: V("planmagnet.nav.products", "Products"),
|
|
73
|
+
path: a(B, "products/products-page"),
|
|
74
|
+
icon: /* @__PURE__ */ I(w, { size: 16 }),
|
|
74
75
|
order: 2,
|
|
75
76
|
children: [
|
|
76
77
|
{
|
|
77
78
|
id: "planmagnet-features",
|
|
78
|
-
label:
|
|
79
|
-
path: a(
|
|
80
|
-
icon: /* @__PURE__ */
|
|
79
|
+
label: V("planmagnet.nav.products.features", "Features"),
|
|
80
|
+
path: a(B, "products/features-page"),
|
|
81
|
+
icon: /* @__PURE__ */ I(O, { size: 16 })
|
|
81
82
|
},
|
|
82
83
|
{
|
|
83
84
|
id: "planmagnet-releases",
|
|
84
|
-
label:
|
|
85
|
-
path: a(
|
|
86
|
-
icon: /* @__PURE__ */
|
|
85
|
+
label: V("planmagnet.nav.products.releases", "Releases"),
|
|
86
|
+
path: a(B, "products/releases-page"),
|
|
87
|
+
icon: /* @__PURE__ */ I(v, { size: 16 })
|
|
87
88
|
},
|
|
88
89
|
{
|
|
89
90
|
id: "planmagnet-roadmaps",
|
|
90
|
-
label:
|
|
91
|
-
path: a(
|
|
92
|
-
icon: /* @__PURE__ */
|
|
91
|
+
label: V("planmagnet.nav.products.roadmaps", "Roadmaps"),
|
|
92
|
+
path: a(B, "products/roadmaps-page"),
|
|
93
|
+
icon: /* @__PURE__ */ I(C, { size: 16 })
|
|
93
94
|
},
|
|
94
95
|
{
|
|
95
96
|
id: "planmagnet-portfolios",
|
|
96
|
-
label:
|
|
97
|
-
path: a(
|
|
98
|
-
icon: /* @__PURE__ */
|
|
97
|
+
label: V("planmagnet.nav.products.portfolios", "Portfolios"),
|
|
98
|
+
path: a(B, "products/portfolios-page"),
|
|
99
|
+
icon: /* @__PURE__ */ I(u, { size: 16 })
|
|
99
100
|
},
|
|
100
101
|
{
|
|
101
102
|
id: "planmagnet-programs",
|
|
102
|
-
label:
|
|
103
|
-
path: a(
|
|
104
|
-
icon: /* @__PURE__ */
|
|
103
|
+
label: V("planmagnet.nav.products.programs", "Programs"),
|
|
104
|
+
path: a(B, "products/programs-page"),
|
|
105
|
+
icon: /* @__PURE__ */ I(g, { size: 16 })
|
|
105
106
|
},
|
|
106
107
|
{
|
|
107
108
|
id: "planmagnet-competitors",
|
|
108
|
-
label:
|
|
109
|
-
path: a(
|
|
110
|
-
icon: /* @__PURE__ */
|
|
109
|
+
label: V("planmagnet.nav.products.competitors", "Competitors"),
|
|
110
|
+
path: a(B, "products/competitors-page"),
|
|
111
|
+
icon: /* @__PURE__ */ I(k, { size: 16 })
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: "planmagnet-prioritization",
|
|
115
|
+
label: V("planmagnet.nav.products.prioritization", "Prioritization"),
|
|
116
|
+
path: a(B, o),
|
|
117
|
+
icon: /* @__PURE__ */ I(_, { size: 16 })
|
|
111
118
|
}
|
|
112
119
|
]
|
|
113
120
|
},
|
|
114
121
|
{
|
|
115
122
|
id: "planmagnet-projects",
|
|
116
|
-
label:
|
|
117
|
-
path: a(
|
|
118
|
-
icon: /* @__PURE__ */
|
|
123
|
+
label: V("planmagnet.nav.projects", "Projects"),
|
|
124
|
+
path: a(B, "projects/projects-page"),
|
|
125
|
+
icon: /* @__PURE__ */ I(g, { size: 16 }),
|
|
119
126
|
order: 3,
|
|
120
127
|
children: [
|
|
121
128
|
{
|
|
122
129
|
id: "planmagnet-projects-all",
|
|
123
|
-
label:
|
|
124
|
-
path: a(
|
|
125
|
-
icon: /* @__PURE__ */
|
|
130
|
+
label: V("planmagnet.nav.projects.all", "All Projects"),
|
|
131
|
+
path: a(B, "projects/projects-page"),
|
|
132
|
+
icon: /* @__PURE__ */ I(g, { size: 16 })
|
|
126
133
|
},
|
|
127
134
|
{
|
|
128
135
|
id: "planmagnet-projects-active",
|
|
129
|
-
label:
|
|
130
|
-
path: a(
|
|
131
|
-
icon: /* @__PURE__ */
|
|
136
|
+
label: V("planmagnet.nav.projects.active", "Active Projects"),
|
|
137
|
+
path: a(B, "projects/active-projects-page"),
|
|
138
|
+
icon: /* @__PURE__ */ I(j, { size: 16 })
|
|
132
139
|
},
|
|
133
140
|
{
|
|
134
141
|
id: "planmagnet-projects-create",
|
|
135
|
-
label:
|
|
136
|
-
path: a(
|
|
137
|
-
icon: /* @__PURE__ */
|
|
142
|
+
label: V("planmagnet.nav.projects.create", "Create Project"),
|
|
143
|
+
path: a(B, "projects/create-project-page"),
|
|
144
|
+
icon: /* @__PURE__ */ I(g, { size: 16 })
|
|
138
145
|
},
|
|
139
146
|
{
|
|
140
147
|
id: "planmagnet-milestones",
|
|
141
|
-
label:
|
|
142
|
-
path: a(
|
|
143
|
-
icon: /* @__PURE__ */
|
|
148
|
+
label: V("planmagnet.nav.projects.milestones", "Milestones"),
|
|
149
|
+
path: a(B, "projects/milestones-page"),
|
|
150
|
+
icon: /* @__PURE__ */ I(A, { size: 16 })
|
|
144
151
|
},
|
|
145
152
|
{
|
|
146
153
|
id: "planmagnet-planning",
|
|
147
|
-
label:
|
|
148
|
-
path: a(
|
|
149
|
-
icon: /* @__PURE__ */
|
|
154
|
+
label: V("planmagnet.nav.projects.planning", "Planning"),
|
|
155
|
+
path: a(B, "projects/planning-page"),
|
|
156
|
+
icon: /* @__PURE__ */ I(d, { size: 16 })
|
|
150
157
|
},
|
|
151
158
|
{
|
|
152
159
|
id: "planmagnet-templates",
|
|
153
|
-
label:
|
|
154
|
-
path: a(
|
|
155
|
-
icon: /* @__PURE__ */
|
|
160
|
+
label: V("planmagnet.nav.projects.templates", "Templates"),
|
|
161
|
+
path: a(B, "templates/templates-page"),
|
|
162
|
+
icon: /* @__PURE__ */ I(S, { size: 16 })
|
|
156
163
|
},
|
|
157
164
|
{
|
|
158
165
|
id: "planmagnet-quality-gates",
|
|
159
|
-
label:
|
|
160
|
-
path: a(
|
|
161
|
-
icon: /* @__PURE__ */
|
|
166
|
+
label: V("planmagnet.nav.projects.qualityGates", "Quality gates"),
|
|
167
|
+
path: a(B, "projects/quality-gates-page"),
|
|
168
|
+
icon: /* @__PURE__ */ I(T, { size: 16 })
|
|
162
169
|
},
|
|
163
170
|
{
|
|
164
171
|
id: "planmagnet-gantt",
|
|
165
|
-
label:
|
|
166
|
-
path: a(
|
|
167
|
-
icon: /* @__PURE__ */
|
|
172
|
+
label: V("planmagnet.nav.projects.gantt", "Gantt"),
|
|
173
|
+
path: a(B, "projects/gantt-page"),
|
|
174
|
+
icon: /* @__PURE__ */ I(D, { size: 16 })
|
|
168
175
|
}
|
|
169
176
|
]
|
|
170
177
|
},
|
|
171
178
|
{
|
|
172
179
|
id: "planmagnet-goals",
|
|
173
|
-
label:
|
|
174
|
-
path: a(
|
|
175
|
-
icon: /* @__PURE__ */
|
|
180
|
+
label: V("planmagnet.nav.goals", "Goals (OKRs)"),
|
|
181
|
+
path: a(B, "goals/goals-page"),
|
|
182
|
+
icon: /* @__PURE__ */ I(h, { size: 16 }),
|
|
176
183
|
order: 3.5,
|
|
177
184
|
children: [{
|
|
178
185
|
id: "planmagnet-goals-all",
|
|
179
|
-
label:
|
|
180
|
-
path: a(
|
|
181
|
-
icon: /* @__PURE__ */
|
|
186
|
+
label: V("planmagnet.nav.goals.all", "All Objectives"),
|
|
187
|
+
path: a(B, "goals/goals-page"),
|
|
188
|
+
icon: /* @__PURE__ */ I(h, { size: 16 })
|
|
182
189
|
}, {
|
|
183
190
|
id: "planmagnet-goals-create",
|
|
184
|
-
label:
|
|
185
|
-
path: a(
|
|
186
|
-
icon: /* @__PURE__ */
|
|
191
|
+
label: V("planmagnet.nav.goals.create", "Create Objective"),
|
|
192
|
+
path: a(B, "goals/create-objective-page"),
|
|
193
|
+
icon: /* @__PURE__ */ I(h, { size: 16 })
|
|
187
194
|
}]
|
|
188
195
|
},
|
|
189
196
|
{
|
|
190
197
|
id: "planmagnet-tasks",
|
|
191
|
-
label:
|
|
192
|
-
path: a(
|
|
193
|
-
icon: /* @__PURE__ */
|
|
198
|
+
label: V("planmagnet.nav.tasks", "Tasks"),
|
|
199
|
+
path: a(B, "tasks/tasks-page"),
|
|
200
|
+
icon: /* @__PURE__ */ I(f, { size: 16 }),
|
|
194
201
|
order: 4,
|
|
195
202
|
children: [
|
|
196
203
|
{
|
|
197
204
|
id: "planmagnet-tasks-my-dashboard",
|
|
198
|
-
label:
|
|
199
|
-
path: a(
|
|
200
|
-
icon: /* @__PURE__ */
|
|
205
|
+
label: V("planmagnet.nav.tasks.myDashboard", "My dashboard"),
|
|
206
|
+
path: a(B, "tasks/my-dashboard-page"),
|
|
207
|
+
icon: /* @__PURE__ */ I(b, { size: 16 })
|
|
201
208
|
},
|
|
202
209
|
{
|
|
203
210
|
id: "planmagnet-tasks-board",
|
|
204
|
-
label:
|
|
205
|
-
path: a(
|
|
206
|
-
icon: /* @__PURE__ */
|
|
211
|
+
label: V("planmagnet.nav.tasks.board", "Task Board"),
|
|
212
|
+
path: a(B, "tasks/tasks-page"),
|
|
213
|
+
icon: /* @__PURE__ */ I(f, { size: 16 })
|
|
207
214
|
},
|
|
208
215
|
{
|
|
209
216
|
id: "planmagnet-tasks-create",
|
|
210
|
-
label:
|
|
211
|
-
path: a(
|
|
212
|
-
icon: /* @__PURE__ */
|
|
217
|
+
label: V("planmagnet.nav.tasks.create", "Create Task"),
|
|
218
|
+
path: a(B, "tasks/create-task-page"),
|
|
219
|
+
icon: /* @__PURE__ */ I(f, { size: 16 })
|
|
213
220
|
}
|
|
214
221
|
]
|
|
215
222
|
},
|
|
216
223
|
{
|
|
217
224
|
id: "planmagnet-sprints",
|
|
218
|
-
label:
|
|
219
|
-
path: a(
|
|
220
|
-
icon: /* @__PURE__ */
|
|
225
|
+
label: V("planmagnet.nav.sprints", "Sprints"),
|
|
226
|
+
path: a(B, "sprints/start-sprint-page"),
|
|
227
|
+
icon: /* @__PURE__ */ I(F, { size: 16 }),
|
|
221
228
|
order: 5
|
|
222
229
|
},
|
|
223
230
|
{
|
|
224
231
|
id: "planmagnet-automation",
|
|
225
|
-
label:
|
|
226
|
-
path: a(
|
|
227
|
-
icon: /* @__PURE__ */
|
|
232
|
+
label: V("planmagnet.nav.automation", "Automation"),
|
|
233
|
+
path: a(B, "automation/automation-rules-page"),
|
|
234
|
+
icon: /* @__PURE__ */ I(l, { size: 16 }),
|
|
228
235
|
order: 5.5,
|
|
229
236
|
children: [{
|
|
230
237
|
id: "planmagnet-automation-rules",
|
|
231
|
-
label:
|
|
232
|
-
path: a(
|
|
233
|
-
icon: /* @__PURE__ */
|
|
238
|
+
label: V("planmagnet.nav.automation.rules", "Rules"),
|
|
239
|
+
path: a(B, "automation/automation-rules-page"),
|
|
240
|
+
icon: /* @__PURE__ */ I(l, { size: 16 })
|
|
234
241
|
}, {
|
|
235
242
|
id: "planmagnet-automation-create",
|
|
236
|
-
label:
|
|
237
|
-
path: a(
|
|
238
|
-
icon: /* @__PURE__ */
|
|
243
|
+
label: V("planmagnet.nav.automation.create", "New rule"),
|
|
244
|
+
path: a(B, "automation/create-automation-rule-page"),
|
|
245
|
+
icon: /* @__PURE__ */ I(l, { size: 16 })
|
|
239
246
|
}]
|
|
240
247
|
},
|
|
241
248
|
{
|
|
242
249
|
id: "planmagnet-ai",
|
|
243
|
-
label:
|
|
244
|
-
path: a(
|
|
245
|
-
icon: /* @__PURE__ */
|
|
250
|
+
label: V("planmagnet.nav.ai", "AI planning"),
|
|
251
|
+
path: a(B, "ai/plan-page"),
|
|
252
|
+
icon: /* @__PURE__ */ I(E, { size: 16 }),
|
|
246
253
|
order: 5.7,
|
|
247
254
|
children: [{
|
|
248
255
|
id: "planmagnet-ai-plan",
|
|
249
|
-
label:
|
|
250
|
-
path: a(
|
|
251
|
-
icon: /* @__PURE__ */
|
|
256
|
+
label: V("planmagnet.nav.ai.plan", "Break down work"),
|
|
257
|
+
path: a(B, "ai/plan-page"),
|
|
258
|
+
icon: /* @__PURE__ */ I(E, { size: 16 })
|
|
252
259
|
}, {
|
|
253
260
|
id: "planmagnet-ai-activity",
|
|
254
|
-
label:
|
|
255
|
-
path: a(
|
|
256
|
-
icon: /* @__PURE__ */
|
|
261
|
+
label: V("planmagnet.nav.ai.activity", "My AI activity"),
|
|
262
|
+
path: a(B, "ai/activity-page"),
|
|
263
|
+
icon: /* @__PURE__ */ I(y, { size: 16 })
|
|
257
264
|
}]
|
|
258
265
|
},
|
|
259
266
|
{
|
|
260
267
|
id: "planmagnet-activity",
|
|
261
|
-
label:
|
|
262
|
-
path: a(
|
|
263
|
-
icon: /* @__PURE__ */
|
|
268
|
+
label: V("planmagnet.nav.activity", "Activity"),
|
|
269
|
+
path: a(B, "activity/activity-page"),
|
|
270
|
+
icon: /* @__PURE__ */ I(c, { size: 16 }),
|
|
264
271
|
order: 6
|
|
265
272
|
},
|
|
266
273
|
{
|
|
267
274
|
id: "planmagnet-team",
|
|
268
|
-
label:
|
|
269
|
-
path: a(
|
|
270
|
-
icon: /* @__PURE__ */
|
|
275
|
+
label: V("planmagnet.nav.team", "Team"),
|
|
276
|
+
path: a(B, "team/team-page"),
|
|
277
|
+
icon: /* @__PURE__ */ I(N, { size: 16 }),
|
|
271
278
|
order: 10,
|
|
272
279
|
children: [
|
|
273
280
|
{
|
|
274
281
|
id: "planmagnet-teams",
|
|
275
|
-
label:
|
|
276
|
-
path: a(
|
|
277
|
-
icon: /* @__PURE__ */
|
|
282
|
+
label: V("planmagnet.nav.team.teams", "Teams"),
|
|
283
|
+
path: a(B, "team/teams-page"),
|
|
284
|
+
icon: /* @__PURE__ */ I(N, { size: 16 })
|
|
278
285
|
},
|
|
279
286
|
{
|
|
280
287
|
id: "planmagnet-team-roster",
|
|
281
|
-
label:
|
|
282
|
-
path: a(
|
|
283
|
-
icon: /* @__PURE__ */
|
|
288
|
+
label: V("planmagnet.nav.team.members", "Members"),
|
|
289
|
+
path: a(B, "team/team-page"),
|
|
290
|
+
icon: /* @__PURE__ */ I(N, { size: 16 })
|
|
284
291
|
},
|
|
285
292
|
{
|
|
286
293
|
id: "planmagnet-team-invite",
|
|
287
|
-
label:
|
|
288
|
-
path: a(
|
|
289
|
-
icon: /* @__PURE__ */
|
|
294
|
+
label: V("planmagnet.nav.team.invite", "Invite member"),
|
|
295
|
+
path: a(B, "team/invite-member-page"),
|
|
296
|
+
icon: /* @__PURE__ */ I(M, { size: 16 })
|
|
290
297
|
}
|
|
291
298
|
]
|
|
292
299
|
},
|
|
293
300
|
{
|
|
294
301
|
id: "planmagnet-analytics",
|
|
295
|
-
label:
|
|
296
|
-
path: a(
|
|
297
|
-
icon: /* @__PURE__ */
|
|
302
|
+
label: V("planmagnet.nav.analytics", "Analytics"),
|
|
303
|
+
path: a(B, "analytics/analytics-page"),
|
|
304
|
+
icon: /* @__PURE__ */ I(j, { size: 16 }),
|
|
298
305
|
order: 12
|
|
299
306
|
}
|
|
300
307
|
]
|
|
301
308
|
});
|
|
302
309
|
}, [
|
|
303
310
|
n,
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
]),
|
|
307
|
-
if (
|
|
311
|
+
B,
|
|
312
|
+
V
|
|
313
|
+
]), s(() => {
|
|
314
|
+
if (z) return z([{
|
|
308
315
|
id: "planmagnet-status",
|
|
309
|
-
label:
|
|
316
|
+
label: V("planmagnet.footer.ready", "PlanMagnet Ready"),
|
|
310
317
|
type: "status",
|
|
311
318
|
section: "left",
|
|
312
319
|
order: 10
|
|
313
320
|
}]);
|
|
314
|
-
}, [
|
|
321
|
+
}, [z, V]), /* @__PURE__ */ I(L, {
|
|
315
322
|
workspaceId: null,
|
|
316
323
|
gateway: "global",
|
|
317
324
|
defaultEnabled: !0,
|
|
318
|
-
children: /* @__PURE__ */
|
|
325
|
+
children: /* @__PURE__ */ I(e, {
|
|
319
326
|
...t,
|
|
320
|
-
children: /* @__PURE__ */
|
|
327
|
+
children: /* @__PURE__ */ I(R, { children: /* @__PURE__ */ I(i, {}) })
|
|
321
328
|
})
|
|
322
329
|
});
|
|
323
330
|
};
|
|
324
331
|
//#endregion
|
|
325
|
-
export {
|
|
332
|
+
export { z as PlanMagnetRoot };
|
|
326
333
|
|
|
327
334
|
//# 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} 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';\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 },\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 // Reports hidden (register: `not-built` — the page fabricates rows client-side\n // and Save runs no mutation). Routes kept.\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 Activity as ActivityIcon,\n LayoutGrid,\n ClipboardList,\n UsersRound,\n Crown,\n Gauge,\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 // Reports hidden (register: `not-built` — the page fabricates rows client-side\n // and Save runs no mutation). Routes kept.\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":"AAkaA,wBAAgB,gBAAgB,4CAsP/B"}
|