@burdenoff/microfe-planmagnet 2026.924.2 → 2026.924.3

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 (68) hide show
  1. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  2. package/dist/planmagnet/PlanMagnetRoot.js +93 -142
  3. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  4. package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +1 -1
  5. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +150 -149
  6. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +1 -1
  7. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +1 -1
  8. package/dist/planmagnet/pages/DashboardDashboardPagePage.js +113 -116
  9. package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +1 -1
  10. package/dist/planmagnet/pages/GoalsGoalsPagePage.d.ts.map +1 -1
  11. package/dist/planmagnet/pages/GoalsGoalsPagePage.js +59 -58
  12. package/dist/planmagnet/pages/GoalsGoalsPagePage.js.map +1 -1
  13. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +1 -1
  14. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js +150 -149
  15. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +1 -1
  16. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
  17. package/dist/planmagnet/pages/ProductsEditProductPagePage.js +108 -107
  18. package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
  19. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
  20. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +93 -92
  21. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
  22. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +1 -1
  23. package/dist/planmagnet/pages/ProductsProductsPagePage.js +89 -87
  24. package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
  25. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -1
  26. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +94 -93
  27. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +1 -1
  28. package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +1 -1
  29. package/dist/planmagnet/pages/ProductsReleasesPagePage.js +57 -56
  30. package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +1 -1
  31. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -1
  32. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +82 -81
  33. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +1 -1
  34. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -1
  35. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +72 -71
  36. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
  37. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +1 -1
  38. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js +38 -37
  39. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js.map +1 -1
  40. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts.map +1 -1
  41. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js +72 -71
  42. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js.map +1 -1
  43. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +1 -1
  44. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +47 -46
  45. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +1 -1
  46. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
  47. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +120 -119
  48. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
  49. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
  50. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +131 -130
  51. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
  52. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +1 -1
  53. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +77 -75
  54. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +1 -1
  55. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +1 -1
  56. package/dist/planmagnet/pages/ReportsReportsPagePage.js +71 -70
  57. package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +1 -1
  58. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
  59. package/dist/planmagnet/pages/TeamTeamPagePage.js +58 -57
  60. package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
  61. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.d.ts.map +1 -1
  62. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.js +81 -72
  63. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.js.map +1 -1
  64. package/dist/planmagnet/people/People.d.ts +20 -0
  65. package/dist/planmagnet/people/People.d.ts.map +1 -0
  66. package/dist/planmagnet/people/People.js +42 -0
  67. package/dist/planmagnet/people/People.js.map +1 -0
  68. package/package.json +1 -1
@@ -1,13 +1,14 @@
1
1
  import { usePlanMagnet as e } from "../providers/PlanMagnetProvider.js";
2
- import { Calendar as t, Clock as n, GitBranch as r, Loader2 as i } from "lucide-react";
3
- import { useParams as a } from "react-router";
4
- import { gql as o } from "@apollo/client";
5
- import { useQuery as s } from "@apollo/client/react";
6
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
- import { Badge as u, Card as d, CardContent as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
8
- import { Markdown as h } from "@burdenoff/fe-libs/shared/components";
2
+ import { PersonName as t } from "../people/People.js";
3
+ import { Calendar as n, Clock as r, GitBranch as i, Loader2 as a } from "lucide-react";
4
+ import { useParams as o } from "react-router";
5
+ import { gql as s } from "@apollo/client";
6
+ import { useQuery as c } from "@apollo/client/react";
7
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
8
+ import { Badge as d, Card as f, CardContent as p, CardHeader as m, CardTitle as h } from "@burdenoff/fe-libs/ui";
9
+ import { Markdown as g } from "@burdenoff/fe-libs/shared/components";
9
10
  //#region src/planmagnet/pages/ProductsReleaseDetailPagePage.tsx
10
- var g = o`
11
+ var _ = s`
11
12
  query GetRelease($id: ID!) {
12
13
  planmagnetRelease(id: $id) {
13
14
  id
@@ -34,7 +35,7 @@ var g = o`
34
35
  }
35
36
  }
36
37
  }
37
- `, _ = {
38
+ `, v = {
38
39
  DRAFT: "bg-gray-100 text-gray-800",
39
40
  PLANNING: "bg-yellow-100 text-yellow-800",
40
41
  IN_PROGRESS: "bg-blue-100 text-blue-800",
@@ -43,89 +44,89 @@ var g = o`
43
44
  CANCELLED: "bg-red-100 text-red-800",
44
45
  ROLLED_BACK: "bg-red-100 text-red-800"
45
46
  };
46
- function v() {
47
- let { workspaceId: o } = e(), v = a().id ?? "", { data: y, loading: b, error: x } = s(g, {
48
- variables: { id: v },
49
- skip: !v
47
+ function y() {
48
+ let { workspaceId: s } = e(), y = o().id ?? "", { data: b, loading: x, error: S } = c(_, {
49
+ variables: { id: y },
50
+ skip: !y
50
51
  });
51
- if (b) return /* @__PURE__ */ c("div", {
52
+ if (x) return /* @__PURE__ */ l("div", {
52
53
  className: "flex items-center justify-center p-12",
53
- children: /* @__PURE__ */ c(i, { className: "h-8 w-8 animate-spin text-muted-foreground" })
54
+ children: /* @__PURE__ */ l(a, { className: "h-8 w-8 animate-spin text-muted-foreground" })
54
55
  });
55
- if (x) return /* @__PURE__ */ l("div", {
56
+ if (S) return /* @__PURE__ */ u("div", {
56
57
  className: "p-6 text-destructive",
57
- children: ["Failed to load release: ", x.message]
58
+ children: ["Failed to load release: ", S.message]
58
59
  });
59
- let S = y?.planmagnetRelease;
60
- if (!S) return /* @__PURE__ */ c("div", {
60
+ let C = b?.planmagnetRelease;
61
+ if (!C) return /* @__PURE__ */ l("div", {
61
62
  className: "p-6 text-muted-foreground",
62
63
  children: "Release not found."
63
64
  });
64
- let C = S.workItems ?? [], w = C.filter((e) => e.type === "STORY" || e.type === "FEATURE"), T = C.filter((e) => e.type === "BUG");
65
- return /* @__PURE__ */ l("div", {
65
+ let w = C.workItems ?? [], T = w.filter((e) => e.type === "STORY" || e.type === "FEATURE"), E = w.filter((e) => e.type === "BUG");
66
+ return /* @__PURE__ */ u("div", {
66
67
  className: "space-y-6 p-6",
67
- children: [/* @__PURE__ */ l("div", {
68
+ children: [/* @__PURE__ */ u("div", {
68
69
  className: "flex items-center justify-between",
69
- children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ l("div", {
70
+ children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("div", {
70
71
  className: "flex items-center gap-2",
71
72
  children: [
72
- /* @__PURE__ */ c(r, { className: "h-5 w-5 text-primary" }),
73
- /* @__PURE__ */ c("h1", {
73
+ /* @__PURE__ */ l(i, { className: "h-5 w-5 text-primary" }),
74
+ /* @__PURE__ */ l("h1", {
74
75
  className: "text-2xl font-semibold",
75
- children: S.version
76
+ children: C.version
76
77
  }),
77
- /* @__PURE__ */ c("span", {
78
- className: `text-xs px-2 py-0.5 rounded-full capitalize ${_[S.status] ?? "bg-gray-100"}`,
79
- children: S.status.toLowerCase().replace("_", " ")
78
+ /* @__PURE__ */ l("span", {
79
+ className: `text-xs px-2 py-0.5 rounded-full capitalize ${v[C.status] ?? "bg-gray-100"}`,
80
+ children: C.status.toLowerCase().replace("_", " ")
80
81
  })
81
82
  ]
82
- }), /* @__PURE__ */ c("p", {
83
+ }), /* @__PURE__ */ l("p", {
83
84
  className: "text-sm text-muted-foreground mt-1",
84
- children: S.name
85
- })] }), /* @__PURE__ */ c(u, {
85
+ children: C.name
86
+ })] }), /* @__PURE__ */ l(d, {
86
87
  variant: "outline",
87
88
  className: "capitalize",
88
- children: S.status.toLowerCase().replace("_", " ")
89
+ children: C.status.toLowerCase().replace("_", " ")
89
90
  })]
90
- }), /* @__PURE__ */ l("div", {
91
+ }), /* @__PURE__ */ u("div", {
91
92
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
92
- children: [/* @__PURE__ */ l("div", {
93
+ children: [/* @__PURE__ */ u("div", {
93
94
  className: "lg:col-span-2 space-y-6",
94
95
  children: [
95
- /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ c(m, { children: "Overview" }) }), /* @__PURE__ */ l(f, {
96
+ /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l(m, { children: /* @__PURE__ */ l(h, { children: "Overview" }) }), /* @__PURE__ */ u(p, {
96
97
  className: "space-y-4",
97
- children: [/* @__PURE__ */ c("div", {
98
+ children: [/* @__PURE__ */ l("div", {
98
99
  className: "text-sm prose prose-sm dark:prose-invert max-w-none",
99
- children: S.description ? /* @__PURE__ */ c(h, { children: S.description }) : /* @__PURE__ */ c("p", { children: "No description provided." })
100
- }), /* @__PURE__ */ l("div", {
100
+ children: C.description ? /* @__PURE__ */ l(g, { children: C.description }) : /* @__PURE__ */ l("p", { children: "No description provided." })
101
+ }), /* @__PURE__ */ u("div", {
101
102
  className: "grid grid-cols-3 gap-4",
102
103
  children: [
103
- /* @__PURE__ */ l("div", {
104
+ /* @__PURE__ */ u("div", {
104
105
  className: "text-center p-3 bg-muted rounded-md",
105
- children: [/* @__PURE__ */ c("p", {
106
+ children: [/* @__PURE__ */ l("p", {
106
107
  className: "text-lg font-semibold mt-1",
107
- children: w.length
108
- }), /* @__PURE__ */ c("p", {
108
+ children: T.length
109
+ }), /* @__PURE__ */ l("p", {
109
110
  className: "text-xs text-muted-foreground",
110
111
  children: "Features"
111
112
  })]
112
113
  }),
113
- /* @__PURE__ */ l("div", {
114
+ /* @__PURE__ */ u("div", {
114
115
  className: "text-center p-3 bg-muted rounded-md",
115
- children: [/* @__PURE__ */ c("p", {
116
+ children: [/* @__PURE__ */ l("p", {
116
117
  className: "text-lg font-semibold mt-1",
117
- children: T.length
118
- }), /* @__PURE__ */ c("p", {
118
+ children: E.length
119
+ }), /* @__PURE__ */ l("p", {
119
120
  className: "text-xs text-muted-foreground",
120
121
  children: "Bug Fixes"
121
122
  })]
122
123
  }),
123
- /* @__PURE__ */ l("div", {
124
+ /* @__PURE__ */ u("div", {
124
125
  className: "text-center p-3 bg-muted rounded-md",
125
- children: [/* @__PURE__ */ c("p", {
126
+ children: [/* @__PURE__ */ l("p", {
126
127
  className: "text-lg font-semibold mt-1",
127
- children: C.length
128
- }), /* @__PURE__ */ c("p", {
128
+ children: w.length
129
+ }), /* @__PURE__ */ l("p", {
129
130
  className: "text-xs text-muted-foreground",
130
131
  children: "Total Items"
131
132
  })]
@@ -133,22 +134,22 @@ function v() {
133
134
  ]
134
135
  })]
135
136
  })] }),
136
- S.releaseNotes && /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ c(m, { children: "Release Notes" }) }), /* @__PURE__ */ c(f, { children: /* @__PURE__ */ c("div", {
137
+ C.releaseNotes && /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l(m, { children: /* @__PURE__ */ l(h, { children: "Release Notes" }) }), /* @__PURE__ */ l(p, { children: /* @__PURE__ */ l("div", {
137
138
  className: "text-sm prose prose-sm dark:prose-invert max-w-none",
138
- children: /* @__PURE__ */ c(h, { children: S.releaseNotes })
139
+ children: /* @__PURE__ */ l(g, { children: C.releaseNotes })
139
140
  }) })] }),
140
- C.length > 0 && /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ l(m, { children: [
141
+ w.length > 0 && /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l(m, { children: /* @__PURE__ */ u(h, { children: [
141
142
  "Work Items (",
142
- C.length,
143
+ w.length,
143
144
  ")"
144
- ] }) }), /* @__PURE__ */ c(f, {
145
+ ] }) }), /* @__PURE__ */ l(p, {
145
146
  className: "space-y-2",
146
- children: C.map((e) => /* @__PURE__ */ l("div", {
147
+ children: w.map((e) => /* @__PURE__ */ u("div", {
147
148
  className: "flex items-center justify-between border rounded-md p-3",
148
- children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
149
+ children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
149
150
  className: "text-sm font-medium",
150
151
  children: e.title
151
- }), /* @__PURE__ */ l("p", {
152
+ }), /* @__PURE__ */ u("p", {
152
153
  className: "text-xs text-muted-foreground capitalize",
153
154
  children: [
154
155
  e.type.toLowerCase(),
@@ -156,7 +157,7 @@ function v() {
156
157
  e.priority.toLowerCase(),
157
158
  " priority"
158
159
  ]
159
- })] }), /* @__PURE__ */ c(u, {
160
+ })] }), /* @__PURE__ */ l(d, {
160
161
  variant: "outline",
161
162
  className: "text-xs capitalize",
162
163
  children: e.status.toLowerCase().replace("_", " ")
@@ -164,89 +165,89 @@ function v() {
164
165
  }, e.id))
165
166
  })] })
166
167
  ]
167
- }), /* @__PURE__ */ l("div", {
168
+ }), /* @__PURE__ */ u("div", {
168
169
  className: "space-y-6",
169
170
  children: [
170
- /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ c(m, { children: "Timeline" }) }), /* @__PURE__ */ l(f, {
171
+ /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l(m, { children: /* @__PURE__ */ l(h, { children: "Timeline" }) }), /* @__PURE__ */ u(p, {
171
172
  className: "space-y-3 text-sm",
172
- children: [/* @__PURE__ */ l("div", {
173
+ children: [/* @__PURE__ */ u("div", {
173
174
  className: "flex items-center gap-2",
174
175
  children: [
175
- /* @__PURE__ */ c(t, { className: "h-4 w-4 text-muted-foreground" }),
176
- /* @__PURE__ */ c("span", {
176
+ /* @__PURE__ */ l(n, { className: "h-4 w-4 text-muted-foreground" }),
177
+ /* @__PURE__ */ l("span", {
177
178
  className: "text-muted-foreground",
178
179
  children: "Planned:"
179
180
  }),
180
- /* @__PURE__ */ c("span", {
181
+ /* @__PURE__ */ l("span", {
181
182
  className: "font-medium",
182
- children: S.plannedDate ? new Date(S.plannedDate).toLocaleDateString() : "Not set"
183
+ children: C.plannedDate ? new Date(C.plannedDate).toLocaleDateString() : "Not set"
183
184
  })
184
185
  ]
185
- }), S.releasedAt && /* @__PURE__ */ l("div", {
186
+ }), C.releasedAt && /* @__PURE__ */ u("div", {
186
187
  className: "flex items-center gap-2",
187
188
  children: [
188
- /* @__PURE__ */ c(n, { className: "h-4 w-4 text-green-500" }),
189
- /* @__PURE__ */ c("span", {
189
+ /* @__PURE__ */ l(r, { className: "h-4 w-4 text-green-500" }),
190
+ /* @__PURE__ */ l("span", {
190
191
  className: "text-muted-foreground",
191
192
  children: "Released:"
192
193
  }),
193
- /* @__PURE__ */ c("span", {
194
+ /* @__PURE__ */ l("span", {
194
195
  className: "font-medium",
195
- children: new Date(S.releasedAt).toLocaleDateString()
196
+ children: new Date(C.releasedAt).toLocaleDateString()
196
197
  })
197
198
  ]
198
199
  })]
199
200
  })] }),
200
- /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ c(m, { children: "Details" }) }), /* @__PURE__ */ l(f, {
201
+ /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l(m, { children: /* @__PURE__ */ l(h, { children: "Details" }) }), /* @__PURE__ */ u(p, {
201
202
  className: "space-y-2 text-sm",
202
203
  children: [
203
- /* @__PURE__ */ l("div", {
204
+ /* @__PURE__ */ u("div", {
204
205
  className: "flex justify-between",
205
- children: [/* @__PURE__ */ c("span", {
206
+ children: [/* @__PURE__ */ l("span", {
206
207
  className: "text-muted-foreground",
207
208
  children: "Version"
208
- }), /* @__PURE__ */ c("span", {
209
+ }), /* @__PURE__ */ l("span", {
209
210
  className: "font-medium",
210
- children: S.version
211
+ children: C.version
211
212
  })]
212
213
  }),
213
- /* @__PURE__ */ l("div", {
214
+ /* @__PURE__ */ u("div", {
214
215
  className: "flex justify-between",
215
- children: [/* @__PURE__ */ c("span", {
216
+ children: [/* @__PURE__ */ l("span", {
216
217
  className: "text-muted-foreground",
217
218
  children: "Status"
218
- }), /* @__PURE__ */ c(u, {
219
+ }), /* @__PURE__ */ l(d, {
219
220
  variant: "outline",
220
221
  className: "text-xs capitalize",
221
- children: S.status.toLowerCase().replace("_", " ")
222
+ children: C.status.toLowerCase().replace("_", " ")
222
223
  })]
223
224
  }),
224
- /* @__PURE__ */ l("div", {
225
+ /* @__PURE__ */ u("div", {
225
226
  className: "flex justify-between",
226
- children: [/* @__PURE__ */ c("span", {
227
+ children: [/* @__PURE__ */ l("span", {
227
228
  className: "text-muted-foreground",
228
229
  children: "Owner"
229
- }), /* @__PURE__ */ c("span", { children: S.ownerId })]
230
+ }), /* @__PURE__ */ l("span", { children: /* @__PURE__ */ l(t, { id: C.ownerId }) })]
230
231
  }),
231
- /* @__PURE__ */ l("div", {
232
+ /* @__PURE__ */ u("div", {
232
233
  className: "flex justify-between",
233
- children: [/* @__PURE__ */ c("span", {
234
+ children: [/* @__PURE__ */ l("span", {
234
235
  className: "text-muted-foreground",
235
236
  children: "Created"
236
- }), /* @__PURE__ */ c("span", { children: new Date(S.createdAt).toLocaleDateString() })]
237
+ }), /* @__PURE__ */ l("span", { children: new Date(C.createdAt).toLocaleDateString() })]
237
238
  }),
238
- /* @__PURE__ */ l("div", {
239
+ /* @__PURE__ */ u("div", {
239
240
  className: "flex justify-between",
240
- children: [/* @__PURE__ */ c("span", {
241
+ children: [/* @__PURE__ */ l("span", {
241
242
  className: "text-muted-foreground",
242
243
  children: "Updated"
243
- }), /* @__PURE__ */ c("span", { children: new Date(S.updatedAt).toLocaleDateString() })]
244
+ }), /* @__PURE__ */ l("span", { children: new Date(C.updatedAt).toLocaleDateString() })]
244
245
  })
245
246
  ]
246
247
  })] }),
247
- S.tags?.length > 0 && /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ c(m, { children: "Tags" }) }), /* @__PURE__ */ c(f, {
248
+ C.tags?.length > 0 && /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l(m, { children: /* @__PURE__ */ l(h, { children: "Tags" }) }), /* @__PURE__ */ l(p, {
248
249
  className: "flex flex-wrap gap-1",
249
- children: S.tags.map((e) => /* @__PURE__ */ c(u, {
250
+ children: C.tags.map((e) => /* @__PURE__ */ l(d, {
250
251
  variant: "outline",
251
252
  className: "text-xs",
252
253
  children: e
@@ -258,6 +259,6 @@ function v() {
258
259
  });
259
260
  }
260
261
  //#endregion
261
- export { v as ProductsReleaseDetailPagePage };
262
+ export { y as ProductsReleaseDetailPagePage };
262
263
 
263
264
  //# sourceMappingURL=ProductsReleaseDetailPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsReleaseDetailPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsReleaseDetailPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge } from '@burdenoff/fe-libs/ui';\nimport { Markdown } from '@burdenoff/fe-libs/shared/components';\nimport { GitBranch, Calendar, Clock, Server, Loader2 } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { useParams } from 'react-router';\n\nconst GET_RELEASE = gql`\n query GetRelease($id: ID!) {\n planmagnetRelease(id: $id) {\n id\n workspaceId\n projectId\n name\n description\n version\n status\n plannedDate\n releasedAt\n releaseNotes\n ownerId\n tags\n metadata\n createdAt\n updatedAt\n workItems {\n id\n title\n status\n type\n priority\n }\n }\n }\n`;\n\ninterface WorkItemSummary {\n id: string;\n title: string;\n status: string;\n type: string;\n priority: string;\n}\n\nconst statusColor: Record<string, string> = {\n DRAFT: 'bg-gray-100 text-gray-800',\n PLANNING: 'bg-yellow-100 text-yellow-800',\n IN_PROGRESS: 'bg-blue-100 text-blue-800',\n READY: 'bg-orange-100 text-orange-800',\n RELEASED: 'bg-green-100 text-green-800',\n CANCELLED: 'bg-red-100 text-red-800',\n ROLLED_BACK: 'bg-red-100 text-red-800',\n};\n\nexport function ProductsReleaseDetailPagePage() {\n const { workspaceId } = usePlanMagnet();\n const params = useParams<{ id: string }>();\n const releaseId = params.id ?? '';\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>>(GET_RELEASE, {\n variables: { id: releaseId },\n skip: !releaseId,\n });\n\n if (loading) {\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 release: {error.message}</div>;\n }\n\n const release = data?.planmagnetRelease;\n if (!release) return <div className=\"p-6 text-muted-foreground\">Release not found.</div>;\n\n const workItems: WorkItemSummary[] = release.workItems ?? [];\n const featureItems = workItems.filter((w) => w.type === 'STORY' || w.type === 'FEATURE');\n const bugItems = workItems.filter((w) => w.type === 'BUG');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"flex items-center gap-2\">\n <GitBranch className=\"h-5 w-5 text-primary\" />\n <h1 className=\"text-2xl font-semibold\">{release.version}</h1>\n <span\n className={`text-xs px-2 py-0.5 rounded-full capitalize ${statusColor[release.status] ?? 'bg-gray-100'}`}\n >\n {release.status.toLowerCase().replace('_', ' ')}\n </span>\n </div>\n <p className=\"text-sm text-muted-foreground mt-1\">{release.name}</p>\n </div>\n <Badge variant=\"outline\" className=\"capitalize\">\n {release.status.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Overview</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"text-sm prose prose-sm dark:prose-invert max-w-none\">\n {release.description ? (\n <Markdown>{release.description}</Markdown>\n ) : (\n <p>No description provided.</p>\n )}\n </div>\n <div className=\"grid grid-cols-3 gap-4\">\n <div className=\"text-center p-3 bg-muted rounded-md\">\n <p className=\"text-lg font-semibold mt-1\">{featureItems.length}</p>\n <p className=\"text-xs text-muted-foreground\">Features</p>\n </div>\n <div className=\"text-center p-3 bg-muted rounded-md\">\n <p className=\"text-lg font-semibold mt-1\">{bugItems.length}</p>\n <p className=\"text-xs text-muted-foreground\">Bug Fixes</p>\n </div>\n <div className=\"text-center p-3 bg-muted rounded-md\">\n <p className=\"text-lg font-semibold mt-1\">{workItems.length}</p>\n <p className=\"text-xs text-muted-foreground\">Total Items</p>\n </div>\n </div>\n </CardContent>\n </Card>\n\n {release.releaseNotes && (\n <Card>\n <CardHeader>\n <CardTitle>Release Notes</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-sm prose prose-sm dark:prose-invert max-w-none\">\n <Markdown>{release.releaseNotes}</Markdown>\n </div>\n </CardContent>\n </Card>\n )}\n\n {workItems.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Work Items ({workItems.length})</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {workItems.map((item) => (\n <div\n key={item.id}\n className=\"flex items-center justify-between border rounded-md p-3\"\n >\n <div>\n <p className=\"text-sm font-medium\">{item.title}</p>\n <p className=\"text-xs text-muted-foreground capitalize\">\n {item.type.toLowerCase()} &middot; {item.priority.toLowerCase()} priority\n </p>\n </div>\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {item.status.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Timeline</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3 text-sm\">\n <div className=\"flex items-center gap-2\">\n <Calendar className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Planned:</span>\n <span className=\"font-medium\">\n {release.plannedDate\n ? new Date(release.plannedDate).toLocaleDateString()\n : 'Not set'}\n </span>\n </div>\n {release.releasedAt && (\n <div className=\"flex items-center gap-2\">\n <Clock className=\"h-4 w-4 text-green-500\" />\n <span className=\"text-muted-foreground\">Released:</span>\n <span className=\"font-medium\">\n {new Date(release.releasedAt).toLocaleDateString()}\n </span>\n </div>\n )}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Version</span>\n <span className=\"font-medium\">{release.version}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Status</span>\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {release.status.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Owner</span>\n <span>{release.ownerId}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Created</span>\n <span>{new Date(release.createdAt).toLocaleDateString()}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Updated</span>\n <span>{new Date(release.updatedAt).toLocaleDateString()}</span>\n </div>\n </CardContent>\n </Card>\n\n {release.tags?.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Tags</CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-1\">\n {release.tags.map((tag: string) => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProductsReleaseDetailPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsReleaseDetailPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge } from '@burdenoff/fe-libs/ui';\nimport { Markdown } from '@burdenoff/fe-libs/shared/components';\nimport { GitBranch, Calendar, Clock, Server, Loader2 } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { useParams } from 'react-router';\nimport { PersonName } from '../people/People';\n\nconst GET_RELEASE = gql`\n query GetRelease($id: ID!) {\n planmagnetRelease(id: $id) {\n id\n workspaceId\n projectId\n name\n description\n version\n status\n plannedDate\n releasedAt\n releaseNotes\n ownerId\n tags\n metadata\n createdAt\n updatedAt\n workItems {\n id\n title\n status\n type\n priority\n }\n }\n }\n`;\n\ninterface WorkItemSummary {\n id: string;\n title: string;\n status: string;\n type: string;\n priority: string;\n}\n\nconst statusColor: Record<string, string> = {\n DRAFT: 'bg-gray-100 text-gray-800',\n PLANNING: 'bg-yellow-100 text-yellow-800',\n IN_PROGRESS: 'bg-blue-100 text-blue-800',\n READY: 'bg-orange-100 text-orange-800',\n RELEASED: 'bg-green-100 text-green-800',\n CANCELLED: 'bg-red-100 text-red-800',\n ROLLED_BACK: 'bg-red-100 text-red-800',\n};\n\nexport function ProductsReleaseDetailPagePage() {\n const { workspaceId } = usePlanMagnet();\n const params = useParams<{ id: string }>();\n const releaseId = params.id ?? '';\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>>(GET_RELEASE, {\n variables: { id: releaseId },\n skip: !releaseId,\n });\n\n if (loading) {\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 release: {error.message}</div>;\n }\n\n const release = data?.planmagnetRelease;\n if (!release) return <div className=\"p-6 text-muted-foreground\">Release not found.</div>;\n\n const workItems: WorkItemSummary[] = release.workItems ?? [];\n const featureItems = workItems.filter((w) => w.type === 'STORY' || w.type === 'FEATURE');\n const bugItems = workItems.filter((w) => w.type === 'BUG');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"flex items-center gap-2\">\n <GitBranch className=\"h-5 w-5 text-primary\" />\n <h1 className=\"text-2xl font-semibold\">{release.version}</h1>\n <span\n className={`text-xs px-2 py-0.5 rounded-full capitalize ${statusColor[release.status] ?? 'bg-gray-100'}`}\n >\n {release.status.toLowerCase().replace('_', ' ')}\n </span>\n </div>\n <p className=\"text-sm text-muted-foreground mt-1\">{release.name}</p>\n </div>\n <Badge variant=\"outline\" className=\"capitalize\">\n {release.status.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Overview</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"text-sm prose prose-sm dark:prose-invert max-w-none\">\n {release.description ? (\n <Markdown>{release.description}</Markdown>\n ) : (\n <p>No description provided.</p>\n )}\n </div>\n <div className=\"grid grid-cols-3 gap-4\">\n <div className=\"text-center p-3 bg-muted rounded-md\">\n <p className=\"text-lg font-semibold mt-1\">{featureItems.length}</p>\n <p className=\"text-xs text-muted-foreground\">Features</p>\n </div>\n <div className=\"text-center p-3 bg-muted rounded-md\">\n <p className=\"text-lg font-semibold mt-1\">{bugItems.length}</p>\n <p className=\"text-xs text-muted-foreground\">Bug Fixes</p>\n </div>\n <div className=\"text-center p-3 bg-muted rounded-md\">\n <p className=\"text-lg font-semibold mt-1\">{workItems.length}</p>\n <p className=\"text-xs text-muted-foreground\">Total Items</p>\n </div>\n </div>\n </CardContent>\n </Card>\n\n {release.releaseNotes && (\n <Card>\n <CardHeader>\n <CardTitle>Release Notes</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-sm prose prose-sm dark:prose-invert max-w-none\">\n <Markdown>{release.releaseNotes}</Markdown>\n </div>\n </CardContent>\n </Card>\n )}\n\n {workItems.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Work Items ({workItems.length})</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {workItems.map((item) => (\n <div\n key={item.id}\n className=\"flex items-center justify-between border rounded-md p-3\"\n >\n <div>\n <p className=\"text-sm font-medium\">{item.title}</p>\n <p className=\"text-xs text-muted-foreground capitalize\">\n {item.type.toLowerCase()} &middot; {item.priority.toLowerCase()} priority\n </p>\n </div>\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {item.status.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Timeline</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3 text-sm\">\n <div className=\"flex items-center gap-2\">\n <Calendar className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Planned:</span>\n <span className=\"font-medium\">\n {release.plannedDate\n ? new Date(release.plannedDate).toLocaleDateString()\n : 'Not set'}\n </span>\n </div>\n {release.releasedAt && (\n <div className=\"flex items-center gap-2\">\n <Clock className=\"h-4 w-4 text-green-500\" />\n <span className=\"text-muted-foreground\">Released:</span>\n <span className=\"font-medium\">\n {new Date(release.releasedAt).toLocaleDateString()}\n </span>\n </div>\n )}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Version</span>\n <span className=\"font-medium\">{release.version}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Status</span>\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {release.status.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Owner</span>\n <span>\n <PersonName id={release.ownerId} />\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Created</span>\n <span>{new Date(release.createdAt).toLocaleDateString()}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Updated</span>\n <span>{new Date(release.updatedAt).toLocaleDateString()}</span>\n </div>\n </CardContent>\n </Card>\n\n {release.tags?.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Tags</CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-1\">\n {release.tags.map((tag: string) => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsReleasesPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsReleasesPagePage.tsx"],"names":[],"mappings":"AAwEA,wBAAgB,wBAAwB,4CAiIvC"}
1
+ {"version":3,"file":"ProductsReleasesPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsReleasesPagePage.tsx"],"names":[],"mappings":"AAyEA,wBAAgB,wBAAwB,4CAiIvC"}
@@ -1,13 +1,14 @@
1
1
  import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
2
- import { detailPath as n, rowLinkProps as r } from "../utils/rowNavigation.js";
3
- import { useState as i } from "react";
4
- import { Calendar as a, GitBranch as o, Loader2 as s, Package as c } from "lucide-react";
5
- import { gql as l } from "@apollo/client";
6
- import { useQuery as u } from "@apollo/client/react";
7
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
8
- import { Badge as p, Button as m, Card as h, CardContent as g, CardHeader as _, CardTitle as v } from "@burdenoff/fe-libs/ui";
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, GitBranch as s, Loader2 as c, Package as l } from "lucide-react";
6
+ import { gql as u } from "@apollo/client";
7
+ import { useQuery as d } from "@apollo/client/react";
8
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
9
+ import { Badge as m, Button as h, Card as g, CardContent as _, CardHeader as v, CardTitle as y } from "@burdenoff/fe-libs/ui";
9
10
  //#region src/planmagnet/pages/ProductsReleasesPagePage.tsx
10
- var y = l`
11
+ var b = u`
11
12
  query ListReleases(
12
13
  $workspaceId: ID!
13
14
  $filter: PlanmagnetReleaseFilter
@@ -33,7 +34,7 @@ var y = l`
33
34
  totalCount
34
35
  }
35
36
  }
36
- `, b = [
37
+ `, x = [
37
38
  "all",
38
39
  "DRAFT",
39
40
  "PLANNING",
@@ -41,7 +42,7 @@ var y = l`
41
42
  "READY",
42
43
  "RELEASED",
43
44
  "CANCELLED"
44
- ], x = {
45
+ ], S = {
45
46
  DRAFT: "bg-gray-100 text-gray-800",
46
47
  PLANNING: "bg-yellow-100 text-yellow-800",
47
48
  IN_PROGRESS: "bg-blue-100 text-blue-800",
@@ -50,105 +51,105 @@ var y = l`
50
51
  CANCELLED: "bg-red-100 text-red-800",
51
52
  ROLLED_BACK: "bg-red-100 text-red-800"
52
53
  };
53
- function S() {
54
- let { workspaceId: l } = e(), S = t(), [C, w] = i("all"), { data: T, loading: E, error: D } = u(y, {
54
+ function C() {
55
+ let { workspaceId: u } = e(), C = t(), [w, T] = a("all"), { data: E, loading: D, error: O } = d(b, {
55
56
  variables: {
56
- workspaceId: l,
57
- filter: C === "all" ? void 0 : { status: C },
57
+ workspaceId: u,
58
+ filter: w === "all" ? void 0 : { status: w },
58
59
  pagination: { first: 50 }
59
60
  },
60
- skip: !l
61
+ skip: !u
61
62
  });
62
- if (E) return /* @__PURE__ */ d("div", {
63
+ if (D) return /* @__PURE__ */ f("div", {
63
64
  className: "flex items-center justify-center p-12",
64
- children: /* @__PURE__ */ d(s, { className: "h-8 w-8 animate-spin text-muted-foreground" })
65
+ children: /* @__PURE__ */ f(c, { className: "h-8 w-8 animate-spin text-muted-foreground" })
65
66
  });
66
- if (D) return /* @__PURE__ */ f("div", {
67
+ if (O) return /* @__PURE__ */ p("div", {
67
68
  className: "p-6 text-destructive",
68
- children: ["Failed to load releases: ", D.message]
69
+ children: ["Failed to load releases: ", O.message]
69
70
  });
70
- let O = T?.planmagnetReleases?.items ?? [], k = T?.planmagnetReleases?.totalCount ?? 0;
71
- return /* @__PURE__ */ f("div", {
71
+ let k = E?.planmagnetReleases?.items ?? [], A = E?.planmagnetReleases?.totalCount ?? 0;
72
+ return /* @__PURE__ */ p("div", {
72
73
  className: "space-y-6 p-6",
73
74
  children: [
74
- /* @__PURE__ */ f("div", {
75
+ /* @__PURE__ */ p("div", {
75
76
  className: "flex items-center justify-between",
76
- children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("h1", {
77
+ children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
77
78
  className: "text-2xl font-semibold",
78
79
  children: "Releases"
79
- }), /* @__PURE__ */ f("p", {
80
+ }), /* @__PURE__ */ p("p", {
80
81
  className: "text-sm text-muted-foreground",
81
- children: [k, " releases across all products"]
82
- })] }), /* @__PURE__ */ f(m, {
82
+ children: [A, " releases across all products"]
83
+ })] }), /* @__PURE__ */ p(h, {
83
84
  size: "sm",
84
- children: [/* @__PURE__ */ d(o, { className: "mr-1 h-4 w-4" }), "New Release"]
85
+ children: [/* @__PURE__ */ f(s, { className: "mr-1 h-4 w-4" }), "New Release"]
85
86
  })]
86
87
  }),
87
- /* @__PURE__ */ d("div", {
88
+ /* @__PURE__ */ f("div", {
88
89
  className: "flex gap-1 border-b pb-1",
89
- children: b.map((e) => /* @__PURE__ */ d("button", {
90
- onClick: () => w(e),
91
- className: `px-3 py-1.5 text-sm rounded-md capitalize ${C === e ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-muted"}`,
90
+ children: x.map((e) => /* @__PURE__ */ f("button", {
91
+ onClick: () => T(e),
92
+ className: `px-3 py-1.5 text-sm rounded-md capitalize ${w === e ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-muted"}`,
92
93
  children: e === "all" ? "All" : e.toLowerCase().replace("_", " ")
93
94
  }, e))
94
95
  }),
95
- /* @__PURE__ */ d("div", {
96
+ /* @__PURE__ */ f("div", {
96
97
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
97
- children: O.map((e) => /* @__PURE__ */ f(h, {
98
- ...r(() => S(n("/products/release-detail-page", e.id)), e.name),
99
- children: [/* @__PURE__ */ f(_, {
98
+ children: k.map((e) => /* @__PURE__ */ p(g, {
99
+ ...i(() => C(r("/products/release-detail-page", e.id)), e.name),
100
+ children: [/* @__PURE__ */ p(v, {
100
101
  className: "pb-2",
101
- children: [/* @__PURE__ */ f("div", {
102
+ children: [/* @__PURE__ */ p("div", {
102
103
  className: "flex items-center justify-between",
103
- children: [/* @__PURE__ */ d("div", {
104
+ children: [/* @__PURE__ */ f("div", {
104
105
  className: "flex items-center gap-2",
105
- children: /* @__PURE__ */ d("span", {
106
+ children: /* @__PURE__ */ f("span", {
106
107
  className: "text-lg font-semibold",
107
108
  children: e.version
108
109
  })
109
- }), /* @__PURE__ */ d("span", {
110
- className: `text-xs px-2 py-0.5 rounded-full capitalize ${x[e.status] ?? "bg-gray-100"}`,
110
+ }), /* @__PURE__ */ f("span", {
111
+ className: `text-xs px-2 py-0.5 rounded-full capitalize ${S[e.status] ?? "bg-gray-100"}`,
111
112
  children: e.status.toLowerCase().replace("_", " ")
112
113
  })]
113
- }), /* @__PURE__ */ d(v, {
114
+ }), /* @__PURE__ */ f(y, {
114
115
  className: "text-sm font-medium",
115
116
  children: e.name
116
117
  })]
117
- }), /* @__PURE__ */ f(g, {
118
+ }), /* @__PURE__ */ p(_, {
118
119
  className: "space-y-3",
119
120
  children: [
120
- /* @__PURE__ */ d("p", {
121
+ /* @__PURE__ */ f("p", {
121
122
  className: "text-sm text-muted-foreground",
122
123
  children: e.description ?? "No description"
123
124
  }),
124
- /* @__PURE__ */ f("div", {
125
+ /* @__PURE__ */ p("div", {
125
126
  className: "flex items-center gap-4 text-sm",
126
- children: [/* @__PURE__ */ f("div", {
127
+ children: [/* @__PURE__ */ p("div", {
127
128
  className: "flex items-center gap-1 text-muted-foreground",
128
129
  children: [
129
- /* @__PURE__ */ d(c, { className: "h-3.5 w-3.5" }),
130
+ /* @__PURE__ */ f(l, { className: "h-3.5 w-3.5" }),
130
131
  "Owner: ",
131
- e.ownerId
132
+ /* @__PURE__ */ f(n, { id: e.ownerId })
132
133
  ]
133
- }), /* @__PURE__ */ f("div", {
134
+ }), /* @__PURE__ */ p("div", {
134
135
  className: "flex items-center gap-1 text-muted-foreground",
135
- children: [/* @__PURE__ */ d(a, { className: "h-3.5 w-3.5" }), e.plannedDate ? new Date(e.plannedDate).toLocaleDateString() : "No date"]
136
+ children: [/* @__PURE__ */ f(o, { className: "h-3.5 w-3.5" }), e.plannedDate ? new Date(e.plannedDate).toLocaleDateString() : "No date"]
136
137
  })]
137
138
  }),
138
- e.tags.length > 0 && /* @__PURE__ */ d("div", {
139
+ e.tags.length > 0 && /* @__PURE__ */ f("div", {
139
140
  className: "flex gap-1 flex-wrap",
140
- children: e.tags.map((e) => /* @__PURE__ */ d(p, {
141
+ children: e.tags.map((e) => /* @__PURE__ */ f(m, {
141
142
  variant: "outline",
142
143
  className: "text-xs",
143
144
  children: e
144
145
  }, e))
145
146
  }),
146
- e.releaseNotes && /* @__PURE__ */ f("div", {
147
+ e.releaseNotes && /* @__PURE__ */ p("div", {
147
148
  className: "border-t pt-2",
148
- children: [/* @__PURE__ */ d("p", {
149
+ children: [/* @__PURE__ */ f("p", {
149
150
  className: "text-xs font-medium text-muted-foreground mb-1",
150
151
  children: "Release Notes Preview"
151
- }), /* @__PURE__ */ d("p", {
152
+ }), /* @__PURE__ */ f("p", {
152
153
  className: "text-xs text-muted-foreground line-clamp-3",
153
154
  children: e.releaseNotes
154
155
  })]
@@ -157,7 +158,7 @@ function S() {
157
158
  })]
158
159
  }, e.id))
159
160
  }),
160
- O.length === 0 && /* @__PURE__ */ d("p", {
161
+ k.length === 0 && /* @__PURE__ */ f("p", {
161
162
  className: "text-center text-muted-foreground py-8",
162
163
  children: "No releases match this filter."
163
164
  })
@@ -165,6 +166,6 @@ function S() {
165
166
  });
166
167
  }
167
168
  //#endregion
168
- export { S as ProductsReleasesPagePage };
169
+ export { C as ProductsReleasesPagePage };
169
170
 
170
171
  //# sourceMappingURL=ProductsReleasesPagePage.js.map