@burdenoff/microfe-planmagnet 2026.927.2 → 2026.927.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +1 -1
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +128 -124
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +1 -1
- package/dist/planmagnet/controls/ConfirmButton.d.ts +25 -0
- package/dist/planmagnet/controls/ConfirmButton.d.ts.map +1 -0
- package/dist/planmagnet/controls/ConfirmButton.js +30 -0
- package/dist/planmagnet/controls/ConfirmButton.js.map +1 -0
- package/dist/planmagnet/controls/FeatureControls.d.ts +26 -0
- package/dist/planmagnet/controls/FeatureControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/FeatureControls.js +318 -0
- package/dist/planmagnet/controls/FeatureControls.js.map +1 -0
- package/dist/planmagnet/controls/MilestoneControls.d.ts +17 -0
- package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/MilestoneControls.js +200 -0
- package/dist/planmagnet/controls/MilestoneControls.js.map +1 -0
- package/dist/planmagnet/controls/ObjectiveControls.d.ts +31 -0
- package/dist/planmagnet/controls/ObjectiveControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/ObjectiveControls.js +296 -0
- package/dist/planmagnet/controls/ObjectiveControls.js.map +1 -0
- package/dist/planmagnet/controls/Pickers.d.ts +26 -0
- package/dist/planmagnet/controls/Pickers.d.ts.map +1 -0
- package/dist/planmagnet/controls/Pickers.js +171 -0
- package/dist/planmagnet/controls/Pickers.js.map +1 -0
- package/dist/planmagnet/controls/ProjectControls.d.ts +13 -0
- package/dist/planmagnet/controls/ProjectControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/ProjectControls.js +104 -0
- package/dist/planmagnet/controls/ProjectControls.js.map +1 -0
- package/dist/planmagnet/controls/ReleaseControls.d.ts +14 -0
- package/dist/planmagnet/controls/ReleaseControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/ReleaseControls.js +108 -0
- package/dist/planmagnet/controls/ReleaseControls.js.map +1 -0
- package/dist/planmagnet/controls/WorkItemControls.d.ts +52 -0
- package/dist/planmagnet/controls/WorkItemControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/WorkItemControls.js +198 -0
- package/dist/planmagnet/controls/WorkItemControls.js.map +1 -0
- package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +188 -154
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/DocsDocsPagePage.js +4 -4
- package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js +63 -56
- package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js.map +1 -1
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js +229 -214
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js +142 -114
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditReleasePagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsEditReleasePagePage.js +134 -105
- package/dist/planmagnet/pages/ProductsEditReleasePagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +102 -108
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +119 -94
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +97 -90
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +107 -106
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js +2 -0
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +150 -111
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +116 -93
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js +55 -63
- package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +4 -4
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +134 -132
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +6 -5
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +167 -116
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksEditTaskPagePage.js +139 -107
- package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +205 -158
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTasksPagePage.js +1 -0
- package/dist/planmagnet/pages/TasksTasksPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.js +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
- package/dist/planmagnet/people/People.js +1 -1
- package/dist/planmagnet/roadmaps/RoadmapControls.d.ts +34 -0
- package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +1 -0
- package/dist/planmagnet/roadmaps/RoadmapControls.js +301 -0
- package/dist/planmagnet/roadmaps/RoadmapControls.js.map +1 -0
- package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
- package/dist/planmagnet/sprints/SprintControls.js +194 -215
- package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanMagnetAdminRoot.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/admin/PlanMagnetAdminRoot.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlanMagnetAdminRoot.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/admin/PlanMagnetAdminRoot.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA4mBpD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,2CAM7D"}
|
|
@@ -2,14 +2,15 @@ import { PlanMagnetProvider as e, usePlanMagnet as t } from "../providers/PlanMa
|
|
|
2
2
|
import { PersonName as n } from "../people/People.js";
|
|
3
3
|
import { useTr as r } from "../../shared/hooks/useTr.js";
|
|
4
4
|
import { cn as i } from "../utils/cn.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
5
|
+
import { throwOnError as a } from "../utils/mutationResult.js";
|
|
6
|
+
import { useMemo as o, useState as s } from "react";
|
|
7
|
+
import { AlertCircle as c, Archive as l, FolderKanban as u, LayoutTemplate as d, Loader2 as f, Zap as p } from "lucide-react";
|
|
8
|
+
import { gql as m } from "@apollo/client";
|
|
9
|
+
import { useMutation as h, useQuery as g } from "@apollo/client/react";
|
|
10
|
+
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
11
|
+
import { Badge as b, Button as x, Card as S, CardContent as C, CardHeader as w, CardTitle as T, Checkbox as E, Skeleton as D } from "@burdenoff/fe-libs/ui";
|
|
11
12
|
//#region src/planmagnet/admin/PlanMagnetAdminRoot.tsx
|
|
12
|
-
var
|
|
13
|
+
var O = m`
|
|
13
14
|
query AdminPlanmagnetProjects($workspaceId: ID!) {
|
|
14
15
|
planmagnetProjects(workspaceId: $workspaceId, pagination: { first: 100 }) {
|
|
15
16
|
items {
|
|
@@ -24,7 +25,7 @@ var D = p`
|
|
|
24
25
|
totalCount
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
`,
|
|
28
|
+
`, k = m`
|
|
28
29
|
query AdminPlanmagnetBoards($workspaceId: ID!) {
|
|
29
30
|
planmagnetBoards(workspaceId: $workspaceId, pagination: { first: 100 }) {
|
|
30
31
|
items {
|
|
@@ -36,7 +37,7 @@ var D = p`
|
|
|
36
37
|
totalCount
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
|
-
`,
|
|
40
|
+
`, A = m`
|
|
40
41
|
query AdminPlanmagnetAutomationRules($workspaceId: ID!) {
|
|
41
42
|
planmagnetAutomationRules(workspaceId: $workspaceId, pagination: { first: 100 }) {
|
|
42
43
|
items {
|
|
@@ -51,7 +52,7 @@ var D = p`
|
|
|
51
52
|
totalCount
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
|
-
`,
|
|
55
|
+
`, j = m`
|
|
55
56
|
mutation AdminArchiveProject($id: ID!) {
|
|
56
57
|
planmagnetUpdateProject(id: $id, input: { status: ARCHIVED }) {
|
|
57
58
|
id
|
|
@@ -59,7 +60,7 @@ var D = p`
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
`;
|
|
62
|
-
function
|
|
63
|
+
function M(e) {
|
|
63
64
|
switch (e) {
|
|
64
65
|
case "ACTIVE": return "success";
|
|
65
66
|
case "ARCHIVED": return "secondary";
|
|
@@ -70,7 +71,7 @@ function j(e) {
|
|
|
70
71
|
default: return "default";
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
|
-
function
|
|
74
|
+
function N(e) {
|
|
74
75
|
switch (e) {
|
|
75
76
|
case "ACTIVE": return "success";
|
|
76
77
|
case "PAUSED": return "warning";
|
|
@@ -79,7 +80,7 @@ function M(e) {
|
|
|
79
80
|
default: return "default";
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
|
-
function
|
|
83
|
+
function P(e) {
|
|
83
84
|
if (!e) return "—";
|
|
84
85
|
try {
|
|
85
86
|
return new Date(e).toLocaleDateString();
|
|
@@ -87,44 +88,44 @@ function N(e) {
|
|
|
87
88
|
return e;
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
|
-
function
|
|
91
|
+
function F(e) {
|
|
91
92
|
return e.toLowerCase().replace(/_/g, " ");
|
|
92
93
|
}
|
|
93
|
-
function
|
|
94
|
+
function I(e) {
|
|
94
95
|
return e.toLowerCase().replace(/_/g, " ");
|
|
95
96
|
}
|
|
96
|
-
function
|
|
97
|
+
function L({ icon: e, label: t, used: n, limit: r, className: a }) {
|
|
97
98
|
let o = Math.min(100, Math.round(n / Math.max(1, r) * 100));
|
|
98
|
-
return /* @__PURE__ */
|
|
99
|
+
return /* @__PURE__ */ v(S, {
|
|
99
100
|
className: a,
|
|
100
|
-
children: /* @__PURE__ */
|
|
101
|
+
children: /* @__PURE__ */ y(C, {
|
|
101
102
|
className: "pt-6",
|
|
102
103
|
children: [
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
+
/* @__PURE__ */ y("div", {
|
|
104
105
|
className: "flex items-center gap-2 text-muted-foreground",
|
|
105
|
-
children: [/* @__PURE__ */
|
|
106
|
+
children: [/* @__PURE__ */ v(e, { className: "h-4 w-4" }), /* @__PURE__ */ v("span", {
|
|
106
107
|
className: "text-sm",
|
|
107
108
|
children: t
|
|
108
109
|
})]
|
|
109
110
|
}),
|
|
110
|
-
/* @__PURE__ */
|
|
111
|
+
/* @__PURE__ */ y("div", {
|
|
111
112
|
className: "mt-2 flex items-baseline gap-2",
|
|
112
|
-
children: [/* @__PURE__ */
|
|
113
|
+
children: [/* @__PURE__ */ v("span", {
|
|
113
114
|
className: "text-2xl font-semibold",
|
|
114
115
|
children: n
|
|
115
|
-
}), /* @__PURE__ */
|
|
116
|
+
}), /* @__PURE__ */ y("span", {
|
|
116
117
|
className: "text-sm text-muted-foreground",
|
|
117
118
|
children: ["/ ", r]
|
|
118
119
|
})]
|
|
119
120
|
}),
|
|
120
|
-
/* @__PURE__ */
|
|
121
|
+
/* @__PURE__ */ v("div", {
|
|
121
122
|
className: "mt-3 h-2 w-full overflow-hidden rounded-full bg-muted",
|
|
122
|
-
children: /* @__PURE__ */
|
|
123
|
+
children: /* @__PURE__ */ v("div", {
|
|
123
124
|
className: i("h-full rounded-full transition-all", o >= 90 ? "bg-destructive" : o >= 70 ? "bg-warning" : "bg-success"),
|
|
124
125
|
style: { width: `${o}%` }
|
|
125
126
|
})
|
|
126
127
|
}),
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
+
/* @__PURE__ */ y("p", {
|
|
128
129
|
className: "mt-2 text-xs text-muted-foreground",
|
|
129
130
|
children: [o, "% used"]
|
|
130
131
|
})
|
|
@@ -132,31 +133,31 @@ function I({ icon: e, label: t, used: n, limit: r, className: a }) {
|
|
|
132
133
|
})
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
|
-
function
|
|
136
|
-
return /* @__PURE__ */
|
|
136
|
+
function R() {
|
|
137
|
+
return /* @__PURE__ */ y("div", {
|
|
137
138
|
className: "space-y-3",
|
|
138
|
-
children: [/* @__PURE__ */
|
|
139
|
+
children: [/* @__PURE__ */ v(D, { className: "h-8 w-1/3" }), /* @__PURE__ */ v(D, { className: "h-32 w-full" })]
|
|
139
140
|
});
|
|
140
141
|
}
|
|
141
|
-
function
|
|
142
|
-
return t.length === 0 ? /* @__PURE__ */
|
|
142
|
+
function z({ columns: e, data: t, emptyState: n }) {
|
|
143
|
+
return t.length === 0 ? /* @__PURE__ */ v("div", {
|
|
143
144
|
className: "py-8 text-center text-sm text-muted-foreground",
|
|
144
145
|
children: n
|
|
145
|
-
}) : /* @__PURE__ */
|
|
146
|
+
}) : /* @__PURE__ */ v("div", {
|
|
146
147
|
className: "overflow-x-auto",
|
|
147
|
-
children: /* @__PURE__ */
|
|
148
|
+
children: /* @__PURE__ */ y("table", {
|
|
148
149
|
className: "w-full text-sm",
|
|
149
|
-
children: [/* @__PURE__ */
|
|
150
|
+
children: [/* @__PURE__ */ v("thead", {
|
|
150
151
|
className: "bg-muted/50",
|
|
151
|
-
children: /* @__PURE__ */
|
|
152
|
+
children: /* @__PURE__ */ v("tr", { children: e.map((e) => /* @__PURE__ */ v("th", {
|
|
152
153
|
className: i("px-4 py-3 text-left font-medium text-muted-foreground", e.className),
|
|
153
154
|
children: e.header
|
|
154
155
|
}, e.key)) })
|
|
155
|
-
}), /* @__PURE__ */
|
|
156
|
+
}), /* @__PURE__ */ v("tbody", {
|
|
156
157
|
className: "divide-y",
|
|
157
|
-
children: t.map((t) => /* @__PURE__ */
|
|
158
|
+
children: t.map((t) => /* @__PURE__ */ v("tr", {
|
|
158
159
|
className: "hover:bg-muted/30",
|
|
159
|
-
children: e.map((e) => /* @__PURE__ */
|
|
160
|
+
children: e.map((e) => /* @__PURE__ */ v("td", {
|
|
160
161
|
className: i("px-4 py-3", e.className),
|
|
161
162
|
children: e.cell(t)
|
|
162
163
|
}, `${t.id}-${e.key}`))
|
|
@@ -165,118 +166,121 @@ function R({ columns: e, data: t, emptyState: n }) {
|
|
|
165
166
|
})
|
|
166
167
|
});
|
|
167
168
|
}
|
|
168
|
-
function
|
|
169
|
-
let { workspaceId: e } = t(), i = r(), [
|
|
169
|
+
function B() {
|
|
170
|
+
let { workspaceId: e } = t(), i = r(), [m, D] = s(/* @__PURE__ */ new Set()), [B, V] = s(!1), [H, U] = s(null), W = g(O, {
|
|
170
171
|
variables: { workspaceId: e ?? "" },
|
|
171
172
|
skip: !e
|
|
172
|
-
}),
|
|
173
|
+
}), G = g(k, {
|
|
173
174
|
variables: { workspaceId: e ?? "" },
|
|
174
175
|
skip: !e
|
|
175
|
-
}),
|
|
176
|
+
}), K = g(A, {
|
|
176
177
|
variables: { workspaceId: e ?? "" },
|
|
177
178
|
skip: !e
|
|
178
|
-
}), [
|
|
179
|
-
|
|
179
|
+
}), [q] = h(j), J = W.data?.planmagnetProjects.items ?? [], Y = G.data?.planmagnetBoards.items ?? [], X = K.data?.planmagnetAutomationRules.items ?? [], Z = o(() => J.filter((e) => e.status !== "ARCHIVED"), [J]), Q = (e) => {
|
|
180
|
+
D((t) => {
|
|
180
181
|
let n = new Set(t);
|
|
181
182
|
return n.has(e) ? n.delete(e) : n.add(e), n;
|
|
182
183
|
});
|
|
183
|
-
},
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
B(!1);
|
|
184
|
+
}, $ = () => {
|
|
185
|
+
m.size === Z.length ? D(/* @__PURE__ */ new Set()) : D(new Set(Z.map((e) => e.id)));
|
|
186
|
+
}, ee = async () => {
|
|
187
|
+
if (m.size === 0) return;
|
|
188
|
+
V(!0), U(null);
|
|
189
|
+
let e = Array.from(m);
|
|
190
|
+
try {
|
|
191
|
+
let t = await Promise.allSettled(e.map((e) => a(q({ variables: { id: e } })))), n = e.filter((e, n) => t[n].status === "rejected");
|
|
192
|
+
if (await W.refetch(), D(new Set(n)), n.length > 0) {
|
|
193
|
+
let r = t.find((e) => e.status === "rejected"), i = r.reason instanceof Error ? r.reason.message : String(r.reason), a = n.map((e) => J.find((t) => t.id === e)?.name ?? e).join(", ");
|
|
194
|
+
U(`${n.length} of ${e.length} could not be archived (${a}): ${i}`);
|
|
195
195
|
}
|
|
196
|
+
} catch (e) {
|
|
197
|
+
U(e instanceof Error ? e.message : i("planmagnet.admin.archive.unknownError", "Bulk archive failed"));
|
|
198
|
+
} finally {
|
|
199
|
+
V(!1);
|
|
196
200
|
}
|
|
197
201
|
};
|
|
198
|
-
if (!e) return /* @__PURE__ */
|
|
202
|
+
if (!e) return /* @__PURE__ */ v("div", {
|
|
199
203
|
className: "min-h-screen bg-background",
|
|
200
|
-
children: /* @__PURE__ */
|
|
204
|
+
children: /* @__PURE__ */ y("div", {
|
|
201
205
|
className: "flex min-h-[320px] flex-col items-center justify-center gap-3 text-muted-foreground",
|
|
202
|
-
children: [/* @__PURE__ */
|
|
206
|
+
children: [/* @__PURE__ */ v(c, { className: "h-8 w-8" }), /* @__PURE__ */ v("p", { children: i("planmagnet.admin.noWorkspace", "Select a workspace to manage PlanMagnet admin settings.") })]
|
|
203
207
|
})
|
|
204
208
|
});
|
|
205
|
-
let
|
|
206
|
-
return /* @__PURE__ */
|
|
209
|
+
let te = W.loading || G.loading || K.loading;
|
|
210
|
+
return /* @__PURE__ */ v("div", {
|
|
207
211
|
className: "min-h-screen bg-background",
|
|
208
|
-
children: /* @__PURE__ */
|
|
212
|
+
children: /* @__PURE__ */ y("div", {
|
|
209
213
|
className: "mx-auto max-w-7xl space-y-6 p-6",
|
|
210
214
|
children: [
|
|
211
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ v("div", {
|
|
212
216
|
className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",
|
|
213
|
-
children: /* @__PURE__ */
|
|
217
|
+
children: /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
|
|
214
218
|
className: "text-2xl font-semibold tracking-tight",
|
|
215
219
|
children: i("planmagnet.admin.title", "PlanMagnet Admin")
|
|
216
|
-
}), /* @__PURE__ */
|
|
220
|
+
}), /* @__PURE__ */ v("p", {
|
|
217
221
|
className: "text-sm text-muted-foreground",
|
|
218
222
|
children: i("planmagnet.admin.purpose", "Workspace quota overview, bulk project archive, and automation rule audit.")
|
|
219
223
|
})] })
|
|
220
224
|
}),
|
|
221
|
-
/* @__PURE__ */
|
|
225
|
+
/* @__PURE__ */ y("div", {
|
|
222
226
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
223
227
|
children: [
|
|
224
|
-
/* @__PURE__ */
|
|
225
|
-
icon:
|
|
228
|
+
/* @__PURE__ */ v(L, {
|
|
229
|
+
icon: u,
|
|
226
230
|
label: i("planmagnet.admin.quota.projects", "Projects"),
|
|
227
|
-
used:
|
|
231
|
+
used: J.length,
|
|
228
232
|
limit: 50
|
|
229
233
|
}),
|
|
230
|
-
/* @__PURE__ */
|
|
231
|
-
icon:
|
|
234
|
+
/* @__PURE__ */ v(L, {
|
|
235
|
+
icon: d,
|
|
232
236
|
label: i("planmagnet.admin.quota.boards", "Boards"),
|
|
233
|
-
used:
|
|
237
|
+
used: Y.length,
|
|
234
238
|
limit: 100
|
|
235
239
|
}),
|
|
236
|
-
/* @__PURE__ */
|
|
237
|
-
icon:
|
|
240
|
+
/* @__PURE__ */ v(L, {
|
|
241
|
+
icon: p,
|
|
238
242
|
label: i("planmagnet.admin.quota.automationRules", "Automation Rules"),
|
|
239
|
-
used:
|
|
243
|
+
used: X.length,
|
|
240
244
|
limit: 25
|
|
241
245
|
})
|
|
242
246
|
]
|
|
243
247
|
}),
|
|
244
|
-
|
|
248
|
+
te ? /* @__PURE__ */ v(R, {}) : /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ y(S, { children: [/* @__PURE__ */ y(w, {
|
|
245
249
|
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
246
|
-
children: [/* @__PURE__ */
|
|
250
|
+
children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(T, { children: i("planmagnet.admin.archive.title", "Bulk Project Archive") }), /* @__PURE__ */ v("p", {
|
|
247
251
|
className: "text-sm text-muted-foreground",
|
|
248
|
-
children: i("planmagnet.admin.archive.subtitle", "Select
|
|
249
|
-
})] }), /* @__PURE__ */
|
|
252
|
+
children: i("planmagnet.admin.archive.subtitle", "Select projects and archive them in one action.")
|
|
253
|
+
})] }), /* @__PURE__ */ y(x, {
|
|
250
254
|
size: "sm",
|
|
251
255
|
variant: "destructive",
|
|
252
|
-
disabled:
|
|
253
|
-
onClick:
|
|
256
|
+
disabled: m.size === 0 || B,
|
|
257
|
+
onClick: ee,
|
|
254
258
|
children: [
|
|
255
|
-
|
|
259
|
+
B ? /* @__PURE__ */ v(f, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ v(l, { className: "mr-2 h-4 w-4" }),
|
|
256
260
|
i("planmagnet.admin.archive.action", "Archive"),
|
|
257
261
|
" (",
|
|
258
|
-
|
|
262
|
+
m.size,
|
|
259
263
|
")"
|
|
260
264
|
]
|
|
261
265
|
})]
|
|
262
|
-
}), /* @__PURE__ */
|
|
266
|
+
}), /* @__PURE__ */ y(C, { children: [H && /* @__PURE__ */ y("div", {
|
|
263
267
|
className: "mb-4 flex items-center gap-2 rounded-md bg-destructive/10 p-3 text-sm text-destructive",
|
|
264
|
-
children: [/* @__PURE__ */
|
|
265
|
-
}), /* @__PURE__ */
|
|
268
|
+
children: [/* @__PURE__ */ v(c, { className: "h-4 w-4" }), H]
|
|
269
|
+
}), /* @__PURE__ */ v("div", {
|
|
266
270
|
className: "rounded-md border",
|
|
267
|
-
children: /* @__PURE__ */
|
|
268
|
-
data:
|
|
271
|
+
children: /* @__PURE__ */ v(z, {
|
|
272
|
+
data: Z,
|
|
269
273
|
columns: [
|
|
270
274
|
{
|
|
271
275
|
key: "select",
|
|
272
|
-
header: /* @__PURE__ */
|
|
273
|
-
checked:
|
|
274
|
-
onCheckedChange:
|
|
275
|
-
"aria-label": i("planmagnet.admin.archive.selectAll", "Select all
|
|
276
|
+
header: /* @__PURE__ */ v(E, {
|
|
277
|
+
checked: Z.length > 0 && m.size === Z.length,
|
|
278
|
+
onCheckedChange: $,
|
|
279
|
+
"aria-label": i("planmagnet.admin.archive.selectAll", "Select all projects")
|
|
276
280
|
}),
|
|
277
|
-
cell: (e) => /* @__PURE__ */
|
|
278
|
-
checked:
|
|
279
|
-
onCheckedChange: () =>
|
|
281
|
+
cell: (e) => /* @__PURE__ */ v(E, {
|
|
282
|
+
checked: m.has(e.id),
|
|
283
|
+
onCheckedChange: () => Q(e.id),
|
|
280
284
|
"aria-label": i("planmagnet.admin.archive.selectProject", "Select project")
|
|
281
285
|
}),
|
|
282
286
|
className: "w-12"
|
|
@@ -284,12 +288,12 @@ function z() {
|
|
|
284
288
|
{
|
|
285
289
|
key: "name",
|
|
286
290
|
header: i("planmagnet.admin.archive.column.name", "Project"),
|
|
287
|
-
cell: (e) => /* @__PURE__ */
|
|
291
|
+
cell: (e) => /* @__PURE__ */ y("div", {
|
|
288
292
|
className: "flex flex-col",
|
|
289
|
-
children: [/* @__PURE__ */
|
|
293
|
+
children: [/* @__PURE__ */ v("span", {
|
|
290
294
|
className: "font-medium",
|
|
291
295
|
children: e.name
|
|
292
|
-
}), /* @__PURE__ */
|
|
296
|
+
}), /* @__PURE__ */ v("span", {
|
|
293
297
|
className: "text-xs text-muted-foreground font-mono",
|
|
294
298
|
children: e.key
|
|
295
299
|
})]
|
|
@@ -298,50 +302,50 @@ function z() {
|
|
|
298
302
|
{
|
|
299
303
|
key: "status",
|
|
300
304
|
header: i("planmagnet.admin.archive.column.status", "Status"),
|
|
301
|
-
cell: (e) => /* @__PURE__ */
|
|
302
|
-
variant:
|
|
305
|
+
cell: (e) => /* @__PURE__ */ v(b, {
|
|
306
|
+
variant: M(e.status),
|
|
303
307
|
children: e.status.toLowerCase().replace("_", " ")
|
|
304
308
|
})
|
|
305
309
|
},
|
|
306
310
|
{
|
|
307
311
|
key: "methodology",
|
|
308
312
|
header: i("planmagnet.admin.archive.column.methodology", "Methodology"),
|
|
309
|
-
cell: (e) => /* @__PURE__ */
|
|
313
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
310
314
|
className: "text-sm capitalize",
|
|
311
|
-
children:
|
|
315
|
+
children: F(e.methodology)
|
|
312
316
|
})
|
|
313
317
|
},
|
|
314
318
|
{
|
|
315
319
|
key: "owner",
|
|
316
320
|
header: i("planmagnet.admin.archive.column.owner", "Owner"),
|
|
317
|
-
cell: (e) => /* @__PURE__ */
|
|
321
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
318
322
|
className: "text-sm text-muted-foreground font-mono",
|
|
319
|
-
children: /* @__PURE__ */
|
|
323
|
+
children: /* @__PURE__ */ v(n, { id: e.ownerId })
|
|
320
324
|
})
|
|
321
325
|
},
|
|
322
326
|
{
|
|
323
327
|
key: "created",
|
|
324
328
|
header: i("planmagnet.admin.archive.column.created", "Created"),
|
|
325
|
-
cell: (e) => /* @__PURE__ */
|
|
329
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
326
330
|
className: "text-sm",
|
|
327
|
-
children:
|
|
331
|
+
children: P(e.createdAt)
|
|
328
332
|
})
|
|
329
333
|
}
|
|
330
334
|
],
|
|
331
335
|
emptyState: i("planmagnet.admin.archive.empty", "No active projects to archive.")
|
|
332
336
|
})
|
|
333
|
-
})] })] }), /* @__PURE__ */
|
|
337
|
+
})] })] }), /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ y(w, { children: [/* @__PURE__ */ v(T, { children: i("planmagnet.admin.automation.title", "Automation Rule Audit") }), /* @__PURE__ */ v("p", {
|
|
334
338
|
className: "text-sm text-muted-foreground",
|
|
335
339
|
children: i("planmagnet.admin.automation.subtitle", "Review rule health, execution counts, and last run timestamps.")
|
|
336
|
-
})] }), /* @__PURE__ */
|
|
340
|
+
})] }), /* @__PURE__ */ v(C, { children: /* @__PURE__ */ v("div", {
|
|
337
341
|
className: "rounded-md border",
|
|
338
|
-
children: /* @__PURE__ */
|
|
339
|
-
data:
|
|
342
|
+
children: /* @__PURE__ */ v(z, {
|
|
343
|
+
data: X,
|
|
340
344
|
columns: [
|
|
341
345
|
{
|
|
342
346
|
key: "name",
|
|
343
347
|
header: i("planmagnet.admin.automation.column.name", "Rule"),
|
|
344
|
-
cell: (e) => /* @__PURE__ */
|
|
348
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
345
349
|
className: "font-medium",
|
|
346
350
|
children: e.name
|
|
347
351
|
})
|
|
@@ -349,23 +353,23 @@ function z() {
|
|
|
349
353
|
{
|
|
350
354
|
key: "trigger",
|
|
351
355
|
header: i("planmagnet.admin.automation.column.trigger", "Trigger"),
|
|
352
|
-
cell: (e) => /* @__PURE__ */
|
|
356
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
353
357
|
className: "text-sm",
|
|
354
|
-
children:
|
|
358
|
+
children: I(e.triggerType)
|
|
355
359
|
})
|
|
356
360
|
},
|
|
357
361
|
{
|
|
358
362
|
key: "status",
|
|
359
363
|
header: i("planmagnet.admin.automation.column.status", "Status"),
|
|
360
|
-
cell: (e) => /* @__PURE__ */
|
|
361
|
-
variant:
|
|
364
|
+
cell: (e) => /* @__PURE__ */ v(b, {
|
|
365
|
+
variant: N(e.status),
|
|
362
366
|
children: e.status.toLowerCase()
|
|
363
367
|
})
|
|
364
368
|
},
|
|
365
369
|
{
|
|
366
370
|
key: "executions",
|
|
367
371
|
header: i("planmagnet.admin.automation.column.executions", "Executions"),
|
|
368
|
-
cell: (e) => /* @__PURE__ */
|
|
372
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
369
373
|
className: "text-sm",
|
|
370
374
|
children: e.executionCount
|
|
371
375
|
})
|
|
@@ -373,17 +377,17 @@ function z() {
|
|
|
373
377
|
{
|
|
374
378
|
key: "lastRun",
|
|
375
379
|
header: i("planmagnet.admin.automation.column.lastRun", "Last Run"),
|
|
376
|
-
cell: (e) => /* @__PURE__ */
|
|
380
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
377
381
|
className: "text-sm",
|
|
378
|
-
children:
|
|
382
|
+
children: P(e.lastExecutedAt)
|
|
379
383
|
})
|
|
380
384
|
},
|
|
381
385
|
{
|
|
382
386
|
key: "created",
|
|
383
387
|
header: i("planmagnet.admin.automation.column.created", "Created"),
|
|
384
|
-
cell: (e) => /* @__PURE__ */
|
|
388
|
+
cell: (e) => /* @__PURE__ */ v("span", {
|
|
385
389
|
className: "text-sm",
|
|
386
|
-
children:
|
|
390
|
+
children: P(e.createdAt)
|
|
387
391
|
})
|
|
388
392
|
}
|
|
389
393
|
],
|
|
@@ -394,13 +398,13 @@ function z() {
|
|
|
394
398
|
})
|
|
395
399
|
});
|
|
396
400
|
}
|
|
397
|
-
function
|
|
398
|
-
return /* @__PURE__ */
|
|
401
|
+
function V(t) {
|
|
402
|
+
return /* @__PURE__ */ v(e, {
|
|
399
403
|
...t,
|
|
400
|
-
children: /* @__PURE__ */
|
|
404
|
+
children: /* @__PURE__ */ v(B, {})
|
|
401
405
|
});
|
|
402
406
|
}
|
|
403
407
|
//#endregion
|
|
404
|
-
export {
|
|
408
|
+
export { V as PlanMagnetAdminRoot };
|
|
405
409
|
|
|
406
410
|
//# sourceMappingURL=PlanMagnetAdminRoot.js.map
|