@burdenoff/microfe-planmagnet 2026.925.18 → 2026.926.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 (92) hide show
  1. package/dist/generated/wspace-types.d.ts +61 -2
  2. package/dist/generated/wspace-types.d.ts.map +1 -1
  3. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  4. package/dist/planmagnet/PlanMagnetRoot.js +90 -79
  5. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  6. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  7. package/dist/planmagnet/PlanMagnetRoutes.js +124 -127
  8. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  9. package/dist/planmagnet/create/CreateDialogs.d.ts.map +1 -1
  10. package/dist/planmagnet/create/CreateDialogs.js +149 -124
  11. package/dist/planmagnet/create/CreateDialogs.js.map +1 -1
  12. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
  13. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +1 -1
  14. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
  15. package/dist/planmagnet/pages/NotFoundPage.d.ts +6 -0
  16. package/dist/planmagnet/pages/NotFoundPage.d.ts.map +1 -0
  17. package/dist/planmagnet/pages/NotFoundPage.js +18 -0
  18. package/dist/planmagnet/pages/NotFoundPage.js.map +1 -0
  19. package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts.map +1 -1
  20. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js +93 -98
  21. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +1 -1
  22. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts.map +1 -1
  23. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js +72 -79
  24. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +1 -1
  25. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
  26. package/dist/planmagnet/pages/ProductsEditProductPagePage.js +112 -123
  27. package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
  28. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -1
  29. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +103 -87
  30. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
  31. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
  32. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +92 -98
  33. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
  34. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +1 -1
  35. package/dist/planmagnet/pages/ProductsProductsPagePage.js +88 -96
  36. package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
  37. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +1 -1
  38. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +116 -114
  39. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
  40. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -1
  41. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +82 -88
  42. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +1 -1
  43. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -1
  44. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +79 -79
  45. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
  46. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts.map +1 -1
  47. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js +111 -91
  48. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  49. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +1 -1
  50. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +117 -97
  51. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +1 -1
  52. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
  53. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +150 -154
  54. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
  55. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +1 -1
  56. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +154 -117
  57. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +1 -1
  58. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
  59. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +75 -31
  60. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
  61. package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +1 -1
  62. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +161 -115
  63. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +1 -1
  64. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -1
  65. package/dist/planmagnet/pages/TasksEditTaskPagePage.js +117 -102
  66. package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
  67. package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts.map +1 -1
  68. package/dist/planmagnet/pages/TeamInviteMemberPagePage.js +147 -147
  69. package/dist/planmagnet/pages/TeamInviteMemberPagePage.js.map +1 -1
  70. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
  71. package/dist/planmagnet/pages/TeamTeamPagePage.js +77 -67
  72. package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
  73. package/dist/planmagnet/roadmaps/planningFocus.d.ts +23 -0
  74. package/dist/planmagnet/roadmaps/planningFocus.d.ts.map +1 -0
  75. package/dist/planmagnet/roadmaps/planningFocus.js +76 -0
  76. package/dist/planmagnet/roadmaps/planningFocus.js.map +1 -0
  77. package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
  78. package/dist/planmagnet/sprints/SprintControls.js +48 -29
  79. package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
  80. package/dist/planmagnet/sprints/SprintDates.d.ts +37 -0
  81. package/dist/planmagnet/sprints/SprintDates.d.ts.map +1 -0
  82. package/dist/planmagnet/sprints/SprintDates.js +114 -0
  83. package/dist/planmagnet/sprints/SprintDates.js.map +1 -0
  84. package/dist/planmagnet/utils/email.d.ts +9 -0
  85. package/dist/planmagnet/utils/email.d.ts.map +1 -0
  86. package/dist/planmagnet/utils/email.js +15 -0
  87. package/dist/planmagnet/utils/email.js.map +1 -0
  88. package/dist/planmagnet/utils/formValidation.d.ts +18 -0
  89. package/dist/planmagnet/utils/formValidation.d.ts.map +1 -0
  90. package/dist/planmagnet/utils/formValidation.js +17 -0
  91. package/dist/planmagnet/utils/formValidation.js.map +1 -0
  92. package/package.json +1 -1
@@ -1,14 +1,15 @@
1
1
  import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
2
2
  import { PersonName as n } from "../people/People.js";
3
- import { detailPath as r, rowLinkProps as i } from "../utils/rowNavigation.js";
4
- import { useState as a } from "react";
5
- import { Calendar as o, Filter as s, Loader2 as c, Map as l, Plus as u } from "lucide-react";
6
- import { gql as d } from "@apollo/client";
7
- import { useQuery as f } from "@apollo/client/react";
8
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
9
- import { Badge as h, Button as g, Card as _, CardContent as v, CardHeader as y, CardTitle as b } from "@burdenoff/fe-libs/ui";
3
+ import { PLANNING_FOCUSES as r, PlanningFocusBadge as i, planningFocusLabel as a } from "../roadmaps/planningFocus.js";
4
+ import { detailPath as o, rowLinkProps as s } from "../utils/rowNavigation.js";
5
+ import { useState as c } from "react";
6
+ import { Calendar as l, Filter as u, Loader2 as d, Map as f, Plus as p } from "lucide-react";
7
+ import { gql as m } from "@apollo/client";
8
+ import { useQuery as h } from "@apollo/client/react";
9
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
10
+ import { Badge as v, Button as y, Card as b, CardContent as x, CardHeader as S, CardTitle as C } from "@burdenoff/fe-libs/ui";
10
11
  //#region src/planmagnet/pages/ProductsRoadmapsPagePage.tsx
11
- var x = d`
12
+ var w = m`
12
13
  query ListRoadmapsPage(
13
14
  $workspaceId: ID!
14
15
  $filter: PlanmagnetRoadmapFilter
@@ -21,6 +22,7 @@ var x = d`
21
22
  name
22
23
  description
23
24
  type
25
+ planningFocus
24
26
  isPublic
25
27
  ownerId
26
28
  createdAt
@@ -36,152 +38,150 @@ var x = d`
36
38
  totalCount
37
39
  }
38
40
  }
39
- `, S = {
40
- TIMELINE: "bg-purple-100 text-purple-800",
41
- GANTT: "bg-orange-100 text-orange-800",
42
- SWIMLANE: "bg-green-100 text-green-800",
43
- CUSTOM: "bg-blue-100 text-blue-800"
44
- };
45
- function C() {
46
- let d = t(), { workspaceId: C } = e(), [w, T] = a("all"), [E, D] = a("all"), { data: O, loading: k, error: A } = f(x, {
41
+ `;
42
+ function T() {
43
+ let m = t(), { workspaceId: T } = e(), [E, D] = c("all"), [O, k] = c("all"), { data: A, loading: j, error: M } = h(w, {
47
44
  variables: {
48
- workspaceId: C,
45
+ workspaceId: T,
49
46
  pagination: { first: 50 }
50
47
  },
51
- skip: !C
48
+ skip: !T
52
49
  });
53
- if (k && !O) return /* @__PURE__ */ p("div", {
50
+ if (j && !A) return /* @__PURE__ */ g("div", {
54
51
  className: "flex items-center justify-center p-12",
55
- children: /* @__PURE__ */ p(c, { className: "h-8 w-8 animate-spin text-muted-foreground" })
52
+ children: /* @__PURE__ */ g(d, { className: "h-8 w-8 animate-spin text-muted-foreground" })
56
53
  });
57
- if (A) return /* @__PURE__ */ m("div", {
54
+ if (M) return /* @__PURE__ */ _("div", {
58
55
  className: "p-6 text-destructive",
59
- children: ["Failed to load roadmaps: ", A.message]
56
+ children: ["Failed to load roadmaps: ", M.message]
60
57
  });
61
- let j = O?.planmagnetRoadmaps?.items ?? [], M = O?.planmagnetRoadmaps?.totalCount ?? 0, N = ["all", ...new Set(j.map((e) => e.type))], P = [
58
+ let N = A?.planmagnetRoadmaps?.items ?? [], P = A?.planmagnetRoadmaps?.totalCount ?? 0, F = [
59
+ "all",
60
+ ...r,
61
+ "none"
62
+ ], I = [
62
63
  "all",
63
64
  "public",
64
65
  "private"
65
- ], F = j.filter((e) => (w === "all" || e.type === w) && (E === "all" || E === "public" && e.isPublic || E === "private" && !e.isPublic));
66
- return /* @__PURE__ */ m("div", {
66
+ ], L = N.filter((e) => (E === "all" || (E === "none" ? !e.planningFocus : e.planningFocus === E)) && (O === "all" || O === "public" && e.isPublic || O === "private" && !e.isPublic));
67
+ return /* @__PURE__ */ _("div", {
67
68
  className: "space-y-6 p-6",
68
69
  children: [
69
- /* @__PURE__ */ m("div", {
70
+ /* @__PURE__ */ _("div", {
70
71
  className: "flex items-center justify-between",
71
- children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("h1", {
72
+ children: [/* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h1", {
72
73
  className: "text-2xl font-semibold",
73
74
  children: "Roadmaps"
74
- }), /* @__PURE__ */ m("p", {
75
+ }), /* @__PURE__ */ _("p", {
75
76
  className: "text-sm text-muted-foreground",
76
- children: [M, " roadmaps across all products"]
77
- })] }), /* @__PURE__ */ m(g, {
77
+ children: [P, " roadmaps across all products"]
78
+ })] }), /* @__PURE__ */ _(y, {
78
79
  size: "sm",
79
- onClick: () => d("/products/create-roadmap-page"),
80
- children: [/* @__PURE__ */ p(u, { className: "mr-1 h-4 w-4" }), "New Roadmap"]
80
+ onClick: () => m("/products/create-roadmap-page"),
81
+ children: [/* @__PURE__ */ g(p, { className: "mr-1 h-4 w-4" }), "New Roadmap"]
81
82
  })]
82
83
  }),
83
- /* @__PURE__ */ m("div", {
84
+ /* @__PURE__ */ _("div", {
84
85
  className: "flex gap-4 flex-wrap",
85
- children: [/* @__PURE__ */ m("div", {
86
+ children: [/* @__PURE__ */ _("div", {
86
87
  className: "flex items-center gap-2",
87
88
  children: [
88
- /* @__PURE__ */ p(s, { className: "h-4 w-4 text-muted-foreground" }),
89
- /* @__PURE__ */ p("span", {
89
+ /* @__PURE__ */ g(u, { className: "h-4 w-4 text-muted-foreground" }),
90
+ /* @__PURE__ */ g("span", {
90
91
  className: "text-sm text-muted-foreground",
91
- children: "Type:"
92
+ children: "Focus:"
92
93
  }),
93
- N.map((e) => /* @__PURE__ */ p("button", {
94
- onClick: () => T(e),
95
- className: `px-2 py-1 text-xs rounded-md capitalize ${w === e ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"}`,
96
- children: e === "all" ? "All" : e.toLowerCase()
94
+ F.map((e) => /* @__PURE__ */ g("button", {
95
+ type: "button",
96
+ "aria-pressed": E === e,
97
+ onClick: () => D(e),
98
+ className: `px-2 py-1 text-xs rounded-md ${E === e ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"}`,
99
+ children: e === "all" ? "All" : e === "none" ? "Not set" : a(e)
97
100
  }, e))
98
101
  ]
99
- }), /* @__PURE__ */ m("div", {
102
+ }), /* @__PURE__ */ _("div", {
100
103
  className: "flex items-center gap-2",
101
- children: [/* @__PURE__ */ p("span", {
104
+ children: [/* @__PURE__ */ g("span", {
102
105
  className: "text-sm text-muted-foreground",
103
106
  children: "Visibility:"
104
- }), P.map((e) => /* @__PURE__ */ p("button", {
105
- onClick: () => D(e),
106
- className: `px-2 py-1 text-xs rounded-md capitalize ${E === e ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"}`,
107
+ }), I.map((e) => /* @__PURE__ */ g("button", {
108
+ onClick: () => k(e),
109
+ className: `px-2 py-1 text-xs rounded-md capitalize ${O === e ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"}`,
107
110
  children: e
108
111
  }, e))]
109
112
  })]
110
113
  }),
111
- /* @__PURE__ */ p("div", {
114
+ /* @__PURE__ */ g("div", {
112
115
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
113
- children: F.map((e) => {
114
- let t = e.items?.length ?? 0, a = e.items?.filter((e) => e.status === "COMPLETED" || e.status === "DONE").length ?? 0, s = t > 0 ? Math.round(a / t * 100) : 0, c = e.items?.map((e) => e.startDate).filter(Boolean) ?? [], u = e.items?.map((e) => e.endDate).filter(Boolean) ?? [], f = c.length > 0 ? c.sort()[0] : null, g = u.length > 0 ? u.sort().reverse()[0] : null;
115
- return /* @__PURE__ */ m(_, {
116
- ...i(() => d(r("/products/roadmap-detail-page", e.id)), e.name),
117
- children: [/* @__PURE__ */ p(y, {
116
+ children: L.map((e) => {
117
+ let t = e.items?.length ?? 0, r = e.items?.filter((e) => e.status === "COMPLETED" || e.status === "DONE").length ?? 0, a = t > 0 ? Math.round(r / t * 100) : 0, c = e.items?.map((e) => e.startDate).filter(Boolean) ?? [], u = e.items?.map((e) => e.endDate).filter(Boolean) ?? [], d = c.length > 0 ? c.sort()[0] : null, p = u.length > 0 ? u.sort().reverse()[0] : null;
118
+ return /* @__PURE__ */ _(b, {
119
+ ...s(() => m(o("/products/roadmap-detail-page", e.id)), e.name),
120
+ children: [/* @__PURE__ */ g(S, {
118
121
  className: "pb-2",
119
- children: /* @__PURE__ */ m("div", {
122
+ children: /* @__PURE__ */ _("div", {
120
123
  className: "flex items-center justify-between",
121
- children: [/* @__PURE__ */ p(b, {
124
+ children: [/* @__PURE__ */ g(C, {
122
125
  className: "text-base",
123
126
  children: e.name
124
- }), /* @__PURE__ */ p(h, {
127
+ }), /* @__PURE__ */ g(v, {
125
128
  variant: e.isPublic ? "default" : "secondary",
126
129
  className: "capitalize",
127
130
  children: e.isPublic ? "public" : "private"
128
131
  })]
129
132
  })
130
- }), /* @__PURE__ */ m(v, {
133
+ }), /* @__PURE__ */ _(x, {
131
134
  className: "space-y-3",
132
135
  children: [
133
- /* @__PURE__ */ p("p", {
136
+ /* @__PURE__ */ g("p", {
134
137
  className: "text-sm text-muted-foreground",
135
138
  children: e.description ?? "No description"
136
139
  }),
137
- /* @__PURE__ */ m("div", {
140
+ /* @__PURE__ */ _("div", {
138
141
  className: "flex items-center gap-2",
139
- children: [/* @__PURE__ */ p("span", {
140
- className: `text-xs px-2 py-0.5 rounded-full capitalize ${S[e.type] ?? "bg-gray-100"}`,
141
- children: e.type.toLowerCase()
142
- }), /* @__PURE__ */ p(h, {
142
+ children: [/* @__PURE__ */ g(i, { focus: e.planningFocus }), /* @__PURE__ */ g(v, {
143
143
  variant: "outline",
144
144
  className: "text-xs capitalize",
145
145
  children: e.isPublic ? "public" : "private"
146
146
  })]
147
147
  }),
148
- /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ m("div", {
148
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ _("div", {
149
149
  className: "flex justify-between text-xs mb-1",
150
- children: [/* @__PURE__ */ p("span", {
150
+ children: [/* @__PURE__ */ g("span", {
151
151
  className: "text-muted-foreground",
152
152
  children: "Progress"
153
- }), /* @__PURE__ */ m("span", {
153
+ }), /* @__PURE__ */ _("span", {
154
154
  className: "font-medium",
155
- children: [s, "%"]
155
+ children: [a, "%"]
156
156
  })]
157
- }), /* @__PURE__ */ p("div", {
157
+ }), /* @__PURE__ */ g("div", {
158
158
  className: "w-full h-2 rounded-full bg-muted overflow-hidden",
159
- children: /* @__PURE__ */ p("div", {
159
+ children: /* @__PURE__ */ g("div", {
160
160
  className: "h-full bg-primary rounded-full",
161
- style: { width: `${s}%` }
161
+ style: { width: `${a}%` }
162
162
  })
163
163
  })] }),
164
- /* @__PURE__ */ p("div", {
164
+ /* @__PURE__ */ g("div", {
165
165
  className: "flex gap-4 text-xs text-muted-foreground",
166
- children: /* @__PURE__ */ m("span", {
166
+ children: /* @__PURE__ */ _("span", {
167
167
  className: "flex items-center gap-1",
168
168
  children: [
169
- /* @__PURE__ */ p(l, { className: "h-3 w-3" }),
169
+ /* @__PURE__ */ g(f, { className: "h-3 w-3" }),
170
170
  t,
171
171
  " items"
172
172
  ]
173
173
  })
174
174
  }),
175
- /* @__PURE__ */ m("div", {
175
+ /* @__PURE__ */ _("div", {
176
176
  className: "flex items-center justify-between text-xs text-muted-foreground border-t pt-2",
177
- children: [/* @__PURE__ */ m("span", { children: ["Owner: ", /* @__PURE__ */ p(n, { id: e.ownerId })] }), f && g && /* @__PURE__ */ m("span", {
177
+ children: [/* @__PURE__ */ _("span", { children: ["Owner: ", /* @__PURE__ */ g(n, { id: e.ownerId })] }), d && p && /* @__PURE__ */ _("span", {
178
178
  className: "flex items-center gap-1",
179
179
  children: [
180
- /* @__PURE__ */ p(o, { className: "h-3 w-3" }),
181
- new Date(f).toLocaleDateString(),
180
+ /* @__PURE__ */ g(l, { className: "h-3 w-3" }),
181
+ new Date(d).toLocaleDateString(),
182
182
  " -",
183
183
  " ",
184
- new Date(g).toLocaleDateString()
184
+ new Date(p).toLocaleDateString()
185
185
  ]
186
186
  })]
187
187
  })
@@ -190,7 +190,7 @@ function C() {
190
190
  }, e.id);
191
191
  })
192
192
  }),
193
- F.length === 0 && /* @__PURE__ */ p("p", {
193
+ L.length === 0 && /* @__PURE__ */ g("p", {
194
194
  className: "text-center text-muted-foreground py-8",
195
195
  children: "No roadmaps match the selected filters."
196
196
  })
@@ -198,6 +198,6 @@ function C() {
198
198
  });
199
199
  }
200
200
  //#endregion
201
- export { C as ProductsRoadmapsPagePage };
201
+ export { T as ProductsRoadmapsPagePage };
202
202
 
203
203
  //# sourceMappingURL=ProductsRoadmapsPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsRoadmapsPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsRoadmapsPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { Map, Calendar, Plus, Filter, Loader2 } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { rowLinkProps, detailPath } from '../utils/rowNavigation';\nimport { PersonName } from '../people/People';\n\nconst LIST_ROADMAPS = gql`\n query ListRoadmapsPage(\n $workspaceId: ID!\n $filter: PlanmagnetRoadmapFilter\n $pagination: PlanmagnetPaginationInput\n ) {\n planmagnetRoadmaps(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n items {\n id\n workspaceId\n name\n description\n type\n isPublic\n ownerId\n createdAt\n updatedAt\n items {\n id\n title\n status\n startDate\n endDate\n }\n }\n totalCount\n }\n }\n`;\n\ninterface RoadmapItemNode {\n id: string;\n title: string;\n status: string;\n startDate: string | null;\n endDate: string | null;\n}\n\ninterface RoadmapNode {\n id: string;\n name: string;\n description: string | null;\n type: string;\n isPublic: boolean;\n ownerId: string;\n createdAt: string;\n updatedAt: string;\n items: RoadmapItemNode[];\n}\n\nconst typeColor: Record<string, string> = {\n TIMELINE: 'bg-purple-100 text-purple-800',\n GANTT: 'bg-orange-100 text-orange-800',\n SWIMLANE: 'bg-green-100 text-green-800',\n CUSTOM: 'bg-blue-100 text-blue-800',\n};\n\nexport function ProductsRoadmapsPagePage() {\n const navigate = usePlanMagnetNavigate();\n const { workspaceId } = usePlanMagnet();\n const [typeFilter, setTypeFilter] = useState<string>('all');\n const [visFilter, setVisFilter] = useState<string>('all');\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(LIST_ROADMAPS, {\n variables: {\n workspaceId,\n pagination: { first: 50 },\n },\n skip: !workspaceId,\n });\n\n // Only before the first load: a refetch must not blank the page (it\n\n // unmounts every component on it and loses their state).\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-destructive\">Failed to load roadmaps: {error.message}</div>;\n }\n\n const roadmaps: RoadmapNode[] = data?.planmagnetRoadmaps?.items ?? [];\n const totalCount = data?.planmagnetRoadmaps?.totalCount ?? 0;\n\n const types = ['all', ...new Set(roadmaps.map((r) => r.type))];\n const visibilities = ['all', 'public', 'private'];\n\n const filtered = roadmaps.filter(\n (r) =>\n (typeFilter === 'all' || r.type === typeFilter) &&\n (visFilter === 'all' ||\n (visFilter === 'public' && r.isPublic) ||\n (visFilter === 'private' && !r.isPublic))\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Roadmaps</h1>\n <p className=\"text-sm text-muted-foreground\">{totalCount} roadmaps across all products</p>\n </div>\n <Button size=\"sm\" onClick={() => navigate('/products/create-roadmap-page')}>\n <Plus className=\"mr-1 h-4 w-4\" />\n New Roadmap\n </Button>\n </div>\n\n <div className=\"flex gap-4 flex-wrap\">\n <div className=\"flex items-center gap-2\">\n <Filter className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Type:</span>\n {types.map((t) => (\n <button\n key={t}\n onClick={() => setTypeFilter(t)}\n className={`px-2 py-1 text-xs rounded-md capitalize ${typeFilter === t ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {t === 'all' ? 'All' : t.toLowerCase()}\n </button>\n ))}\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Visibility:</span>\n {visibilities.map((v) => (\n <button\n key={v}\n onClick={() => setVisFilter(v)}\n className={`px-2 py-1 text-xs rounded-md capitalize ${visFilter === v ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {v}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {filtered.map((rm) => {\n const itemCount = rm.items?.length ?? 0;\n const completedItems =\n rm.items?.filter((i) => i.status === 'COMPLETED' || i.status === 'DONE').length ?? 0;\n const progress = itemCount > 0 ? Math.round((completedItems / itemCount) * 100) : 0;\n const startDates = rm.items?.map((i) => i.startDate).filter(Boolean) ?? [];\n const endDates = rm.items?.map((i) => i.endDate).filter(Boolean) ?? [];\n const earliestStart = startDates.length > 0 ? startDates.sort()[0] : null;\n const latestEnd = endDates.length > 0 ? endDates.sort().reverse()[0] : null;\n\n return (\n <Card\n key={rm.id}\n {...rowLinkProps(\n () => navigate(detailPath('/products/roadmap-detail-page', rm.id)),\n rm.name\n )}\n >\n <CardHeader className=\"pb-2\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{rm.name}</CardTitle>\n <Badge variant={rm.isPublic ? 'default' : 'secondary'} className=\"capitalize\">\n {rm.isPublic ? 'public' : 'private'}\n </Badge>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-sm text-muted-foreground\">\n {rm.description ?? 'No description'}\n </p>\n <div className=\"flex items-center gap-2\">\n <span\n className={`text-xs px-2 py-0.5 rounded-full capitalize ${typeColor[rm.type] ?? 'bg-gray-100'}`}\n >\n {rm.type.toLowerCase()}\n </span>\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {rm.isPublic ? 'public' : 'private'}\n </Badge>\n </div>\n <div>\n <div className=\"flex justify-between text-xs mb-1\">\n <span className=\"text-muted-foreground\">Progress</span>\n <span className=\"font-medium\">{progress}%</span>\n </div>\n <div className=\"w-full h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full bg-primary rounded-full\"\n style={{ width: `${progress}%` }}\n />\n </div>\n </div>\n <div className=\"flex gap-4 text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <Map className=\"h-3 w-3\" />\n {itemCount} items\n </span>\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground border-t pt-2\">\n <span>\n Owner: <PersonName id={rm.ownerId} />\n </span>\n {earliestStart && latestEnd && (\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"h-3 w-3\" />\n {new Date(earliestStart).toLocaleDateString()} -{' '}\n {new Date(latestEnd).toLocaleDateString()}\n </span>\n )}\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n {filtered.length === 0 && (\n <p className=\"text-center text-muted-foreground py-8\">\n No roadmaps match the selected filters.\n </p>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProductsRoadmapsPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsRoadmapsPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { Map, Calendar, Plus, Filter, Loader2 } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { rowLinkProps, detailPath } from '../utils/rowNavigation';\nimport { PersonName } from '../people/People';\nimport {\n PLANNING_FOCUSES,\n PlanningFocusBadge,\n planningFocusLabel,\n} from '../roadmaps/planningFocus';\n\nconst LIST_ROADMAPS = gql`\n query ListRoadmapsPage(\n $workspaceId: ID!\n $filter: PlanmagnetRoadmapFilter\n $pagination: PlanmagnetPaginationInput\n ) {\n planmagnetRoadmaps(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n items {\n id\n workspaceId\n name\n description\n type\n planningFocus\n isPublic\n ownerId\n createdAt\n updatedAt\n items {\n id\n title\n status\n startDate\n endDate\n }\n }\n totalCount\n }\n }\n`;\n\ninterface RoadmapItemNode {\n id: string;\n title: string;\n status: string;\n startDate: string | null;\n endDate: string | null;\n}\n\ninterface RoadmapNode {\n id: string;\n name: string;\n description: string | null;\n type: string;\n planningFocus: string | null;\n isPublic: boolean;\n ownerId: string;\n createdAt: string;\n updatedAt: string;\n items: RoadmapItemNode[];\n}\n\nexport function ProductsRoadmapsPagePage() {\n const navigate = usePlanMagnetNavigate();\n const { workspaceId } = usePlanMagnet();\n const [focusFilter, setFocusFilter] = useState<string>('all');\n const [visFilter, setVisFilter] = useState<string>('all');\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(LIST_ROADMAPS, {\n variables: {\n workspaceId,\n pagination: { first: 50 },\n },\n skip: !workspaceId,\n });\n\n // Only before the first load: a refetch must not blank the page (it\n\n // unmounts every component on it and loses their state).\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-destructive\">Failed to load roadmaps: {error.message}</div>;\n }\n\n const roadmaps: RoadmapNode[] = data?.planmagnetRoadmaps?.items ?? [];\n const totalCount = data?.planmagnetRoadmaps?.totalCount ?? 0;\n\n // Filter by what a roadmap is ABOUT. Every roadmap has the same display, so\n // filtering by it (the old \"Type: timeline\" chips) chose nothing (BOFF-7934).\n const focuses = ['all', ...PLANNING_FOCUSES, 'none'];\n const visibilities = ['all', 'public', 'private'];\n\n const filtered = roadmaps.filter(\n (r) =>\n (focusFilter === 'all' ||\n (focusFilter === 'none' ? !r.planningFocus : r.planningFocus === focusFilter)) &&\n (visFilter === 'all' ||\n (visFilter === 'public' && r.isPublic) ||\n (visFilter === 'private' && !r.isPublic))\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Roadmaps</h1>\n <p className=\"text-sm text-muted-foreground\">{totalCount} roadmaps across all products</p>\n </div>\n <Button size=\"sm\" onClick={() => navigate('/products/create-roadmap-page')}>\n <Plus className=\"mr-1 h-4 w-4\" />\n New Roadmap\n </Button>\n </div>\n\n <div className=\"flex gap-4 flex-wrap\">\n <div className=\"flex items-center gap-2\">\n <Filter className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Focus:</span>\n {focuses.map((f) => (\n <button\n key={f}\n type=\"button\"\n aria-pressed={focusFilter === f}\n onClick={() => setFocusFilter(f)}\n className={`px-2 py-1 text-xs rounded-md ${focusFilter === f ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {f === 'all' ? 'All' : f === 'none' ? 'Not set' : planningFocusLabel(f)}\n </button>\n ))}\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Visibility:</span>\n {visibilities.map((v) => (\n <button\n key={v}\n onClick={() => setVisFilter(v)}\n className={`px-2 py-1 text-xs rounded-md capitalize ${visFilter === v ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {v}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {filtered.map((rm) => {\n const itemCount = rm.items?.length ?? 0;\n const completedItems =\n rm.items?.filter((i) => i.status === 'COMPLETED' || i.status === 'DONE').length ?? 0;\n const progress = itemCount > 0 ? Math.round((completedItems / itemCount) * 100) : 0;\n const startDates = rm.items?.map((i) => i.startDate).filter(Boolean) ?? [];\n const endDates = rm.items?.map((i) => i.endDate).filter(Boolean) ?? [];\n const earliestStart = startDates.length > 0 ? startDates.sort()[0] : null;\n const latestEnd = endDates.length > 0 ? endDates.sort().reverse()[0] : null;\n\n return (\n <Card\n key={rm.id}\n {...rowLinkProps(\n () => navigate(detailPath('/products/roadmap-detail-page', rm.id)),\n rm.name\n )}\n >\n <CardHeader className=\"pb-2\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{rm.name}</CardTitle>\n <Badge variant={rm.isPublic ? 'default' : 'secondary'} className=\"capitalize\">\n {rm.isPublic ? 'public' : 'private'}\n </Badge>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-sm text-muted-foreground\">\n {rm.description ?? 'No description'}\n </p>\n <div className=\"flex items-center gap-2\">\n <PlanningFocusBadge focus={rm.planningFocus} />\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {rm.isPublic ? 'public' : 'private'}\n </Badge>\n </div>\n <div>\n <div className=\"flex justify-between text-xs mb-1\">\n <span className=\"text-muted-foreground\">Progress</span>\n <span className=\"font-medium\">{progress}%</span>\n </div>\n <div className=\"w-full h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full bg-primary rounded-full\"\n style={{ width: `${progress}%` }}\n />\n </div>\n </div>\n <div className=\"flex gap-4 text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <Map className=\"h-3 w-3\" />\n {itemCount} items\n </span>\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground border-t pt-2\">\n <span>\n Owner: <PersonName id={rm.ownerId} />\n </span>\n {earliestStart && latestEnd && (\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"h-3 w-3\" />\n {new Date(earliestStart).toLocaleDateString()} -{' '}\n {new Date(latestEnd).toLocaleDateString()}\n </span>\n )}\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n {filtered.length === 0 && (\n <p className=\"text-center text-muted-foreground py-8\">\n No roadmaps match the selected filters.\n </p>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectsCreateProjectPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProjectsCreateProjectPagePage.tsx"],"names":[],"mappings":"AA2BA,wBAAgB,6BAA6B,4CA4J5C"}
1
+ {"version":3,"file":"ProjectsCreateProjectPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProjectsCreateProjectPagePage.tsx"],"names":[],"mappings":"AA6BA,wBAAgB,6BAA6B,4CA4L5C"}