@burdenoff/microfe-planmagnet 2026.627.1 → 2026.715.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 (121) hide show
  1. package/dist/dev/main.d.ts +2 -0
  2. package/dist/dev/main.d.ts.map +1 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -2
  6. package/dist/node_modules/clsx/dist/clsx.js +18 -0
  7. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  8. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +1716 -0
  9. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  10. package/dist/planmagnet/PlanMagnetRoot.d.ts +5 -0
  11. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -0
  12. package/dist/planmagnet/PlanMagnetRoutes.d.ts +2 -0
  13. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -0
  14. package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts +4 -0
  15. package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +1 -0
  16. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +405 -0
  17. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +1 -0
  18. package/dist/planmagnet/index.d.ts +6 -0
  19. package/dist/planmagnet/index.d.ts.map +1 -0
  20. package/dist/planmagnet/index.js +1 -0
  21. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts +2 -0
  22. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -0
  23. package/dist/planmagnet/pages/CollaborationCollaborationPagePage.d.ts +2 -0
  24. package/dist/planmagnet/pages/CollaborationCollaborationPagePage.d.ts.map +1 -0
  25. package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.d.ts +2 -0
  26. package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.d.ts.map +1 -0
  27. package/dist/planmagnet/pages/CollaborationFilesPagePage.d.ts +2 -0
  28. package/dist/planmagnet/pages/CollaborationFilesPagePage.d.ts.map +1 -0
  29. package/dist/planmagnet/pages/CollaborationMessagesPagePage.d.ts +2 -0
  30. package/dist/planmagnet/pages/CollaborationMessagesPagePage.d.ts.map +1 -0
  31. package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.d.ts +2 -0
  32. package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.d.ts.map +1 -0
  33. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts +2 -0
  34. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +1 -0
  35. package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.d.ts +2 -0
  36. package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.d.ts.map +1 -0
  37. package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts +2 -0
  38. package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts.map +1 -0
  39. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts +2 -0
  40. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts.map +1 -0
  41. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts +2 -0
  42. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -0
  43. package/dist/planmagnet/pages/ProductsEditReleasePagePage.d.ts +2 -0
  44. package/dist/planmagnet/pages/ProductsEditReleasePagePage.d.ts.map +1 -0
  45. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts +2 -0
  46. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts.map +1 -0
  47. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts +2 -0
  48. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -0
  49. package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts +2 -0
  50. package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +1 -0
  51. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts +2 -0
  52. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -0
  53. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts +2 -0
  54. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -0
  55. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts +2 -0
  56. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +1 -0
  57. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts +2 -0
  58. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -0
  59. package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts +2 -0
  60. package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +1 -0
  61. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts +2 -0
  62. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +1 -0
  63. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts +2 -0
  64. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -0
  65. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts +2 -0
  66. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -0
  67. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts +2 -0
  68. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +1 -0
  69. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts +2 -0
  70. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts.map +1 -0
  71. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts +2 -0
  72. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +1 -0
  73. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts +2 -0
  74. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts.map +1 -0
  75. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts +2 -0
  76. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +1 -0
  77. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts +2 -0
  78. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -0
  79. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts +2 -0
  80. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +1 -0
  81. package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts +2 -0
  82. package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +1 -0
  83. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts +2 -0
  84. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -0
  85. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts +2 -0
  86. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +1 -0
  87. package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts +2 -0
  88. package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts.map +1 -0
  89. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts +2 -0
  90. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +1 -0
  91. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts +2 -0
  92. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -0
  93. package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts +2 -0
  94. package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +1 -0
  95. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts +2 -0
  96. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -0
  97. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts +2 -0
  98. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -0
  99. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts +2 -0
  100. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -0
  101. package/dist/planmagnet/pages/TeamCreateTeamPagePage.d.ts +2 -0
  102. package/dist/planmagnet/pages/TeamCreateTeamPagePage.d.ts.map +1 -0
  103. package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts +2 -0
  104. package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts.map +1 -0
  105. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts +2 -0
  106. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -0
  107. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.d.ts +2 -0
  108. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.d.ts.map +1 -0
  109. package/dist/planmagnet/providers/PlanMagnetProvider.d.ts +31 -0
  110. package/dist/planmagnet/providers/PlanMagnetProvider.d.ts.map +1 -0
  111. package/dist/planmagnet/store/planmagnetStore.d.ts +30 -0
  112. package/dist/planmagnet/store/planmagnetStore.d.ts.map +1 -0
  113. package/dist/planmagnet/types/index.d.ts +317 -0
  114. package/dist/planmagnet/types/index.d.ts.map +1 -0
  115. package/dist/planmagnet/utils/cn.d.ts +4 -0
  116. package/dist/planmagnet/utils/cn.d.ts.map +1 -0
  117. package/dist/planmagnet/utils/cn.js +10 -0
  118. package/dist/planmagnet/utils/cn.js.map +1 -0
  119. package/dist/planmagnet/utils/navigation.d.ts +2 -0
  120. package/dist/planmagnet/utils/navigation.d.ts.map +1 -0
  121. package/package.json +2 -2
@@ -0,0 +1,405 @@
1
+ import { PlanMagnetProvider as e, usePlanMagnet as t } from "../providers/PlanMagnetProvider.js";
2
+ import { cn as n } from "../utils/cn.js";
3
+ import { useMemo as r, useState as i } from "react";
4
+ import { AlertCircle as a, Archive as o, FolderKanban as s, LayoutTemplate as c, Loader2 as l, Zap as u } from "lucide-react";
5
+ import { gql as d } from "@apollo/client";
6
+ import { useMutation as f, useQuery as p } from "@apollo/client/react";
7
+ import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
8
+ import { useI18n as _ } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
+ import { Badge as v, Button as y, Card as b, CardContent as x, CardHeader as S, CardTitle as C, Checkbox as w, Skeleton as T } from "@burdenoff/fe-libs/ui";
10
+ //#region src/planmagnet/admin/PlanMagnetAdminRoot.tsx
11
+ var E = d`
12
+ query AdminPlanmagnetProjects($workspaceId: ID!) {
13
+ planmagnetProjects(workspaceId: $workspaceId, pagination: { first: 100 }) {
14
+ items {
15
+ id
16
+ name
17
+ key
18
+ status
19
+ methodology
20
+ ownerId
21
+ createdAt
22
+ }
23
+ totalCount
24
+ }
25
+ }
26
+ `, D = d`
27
+ query AdminPlanmagnetBoards($workspaceId: ID!) {
28
+ planmagnetBoards(workspaceId: $workspaceId, pagination: { first: 100 }) {
29
+ items {
30
+ id
31
+ name
32
+ type
33
+ projectId
34
+ }
35
+ totalCount
36
+ }
37
+ }
38
+ `, O = d`
39
+ query AdminPlanmagnetAutomationRules($workspaceId: ID!) {
40
+ planmagnetAutomationRules(workspaceId: $workspaceId, pagination: { first: 100 }) {
41
+ items {
42
+ id
43
+ name
44
+ status
45
+ triggerType
46
+ executionCount
47
+ lastExecutedAt
48
+ createdAt
49
+ }
50
+ totalCount
51
+ }
52
+ }
53
+ `, k = d`
54
+ mutation AdminArchiveProject($id: ID!) {
55
+ planmagnetUpdateProject(id: $id, input: { status: ARCHIVED }) {
56
+ id
57
+ status
58
+ }
59
+ }
60
+ `;
61
+ function A(e) {
62
+ switch (e) {
63
+ case "ACTIVE": return "success";
64
+ case "ARCHIVED": return "secondary";
65
+ case "CANCELLED": return "destructive";
66
+ case "COMPLETED": return "info";
67
+ case "ON_HOLD": return "warning";
68
+ case "PLANNING": return "outline";
69
+ default: return "default";
70
+ }
71
+ }
72
+ function j(e) {
73
+ switch (e) {
74
+ case "ACTIVE": return "success";
75
+ case "PAUSED": return "warning";
76
+ case "ERROR": return "destructive";
77
+ case "DISABLED": return "secondary";
78
+ default: return "default";
79
+ }
80
+ }
81
+ function M(e) {
82
+ if (!e) return "—";
83
+ try {
84
+ return new Date(e).toLocaleDateString();
85
+ } catch {
86
+ return e;
87
+ }
88
+ }
89
+ function N(e) {
90
+ return e.toLowerCase().replace(/_/g, " ");
91
+ }
92
+ function P(e) {
93
+ return e.toLowerCase().replace(/_/g, " ");
94
+ }
95
+ function F({ icon: e, label: t, used: r, limit: i, className: a }) {
96
+ let o = Math.min(100, Math.round(r / Math.max(1, i) * 100));
97
+ return /* @__PURE__ */ h(b, {
98
+ className: a,
99
+ children: /* @__PURE__ */ g(x, {
100
+ className: "pt-6",
101
+ children: [
102
+ /* @__PURE__ */ g("div", {
103
+ className: "flex items-center gap-2 text-muted-foreground",
104
+ children: [/* @__PURE__ */ h(e, { className: "h-4 w-4" }), /* @__PURE__ */ h("span", {
105
+ className: "text-sm",
106
+ children: t
107
+ })]
108
+ }),
109
+ /* @__PURE__ */ g("div", {
110
+ className: "mt-2 flex items-baseline gap-2",
111
+ children: [/* @__PURE__ */ h("span", {
112
+ className: "text-2xl font-semibold",
113
+ children: r
114
+ }), /* @__PURE__ */ g("span", {
115
+ className: "text-sm text-muted-foreground",
116
+ children: ["/ ", i]
117
+ })]
118
+ }),
119
+ /* @__PURE__ */ h("div", {
120
+ className: "mt-3 h-2 w-full overflow-hidden rounded-full bg-muted",
121
+ children: /* @__PURE__ */ h("div", {
122
+ className: n("h-full rounded-full transition-all", o >= 90 ? "bg-destructive" : o >= 70 ? "bg-warning" : "bg-success"),
123
+ style: { width: `${o}%` }
124
+ })
125
+ }),
126
+ /* @__PURE__ */ g("p", {
127
+ className: "mt-2 text-xs text-muted-foreground",
128
+ children: [o, "% used"]
129
+ })
130
+ ]
131
+ })
132
+ });
133
+ }
134
+ function I() {
135
+ return /* @__PURE__ */ g("div", {
136
+ className: "space-y-3",
137
+ children: [/* @__PURE__ */ h(T, { className: "h-8 w-1/3" }), /* @__PURE__ */ h(T, { className: "h-32 w-full" })]
138
+ });
139
+ }
140
+ function L({ columns: e, data: t, emptyState: r }) {
141
+ return t.length === 0 ? /* @__PURE__ */ h("div", {
142
+ className: "py-8 text-center text-sm text-muted-foreground",
143
+ children: r
144
+ }) : /* @__PURE__ */ h("div", {
145
+ className: "overflow-x-auto",
146
+ children: /* @__PURE__ */ g("table", {
147
+ className: "w-full text-sm",
148
+ children: [/* @__PURE__ */ h("thead", {
149
+ className: "bg-muted/50",
150
+ children: /* @__PURE__ */ h("tr", { children: e.map((e) => /* @__PURE__ */ h("th", {
151
+ className: n("px-4 py-3 text-left font-medium text-muted-foreground", e.className),
152
+ children: e.header
153
+ }, e.key)) })
154
+ }), /* @__PURE__ */ h("tbody", {
155
+ className: "divide-y",
156
+ children: t.map((t) => /* @__PURE__ */ h("tr", {
157
+ className: "hover:bg-muted/30",
158
+ children: e.map((e) => /* @__PURE__ */ h("td", {
159
+ className: n("px-4 py-3", e.className),
160
+ children: e.cell(t)
161
+ }, `${t.id}-${e.key}`))
162
+ }, t.id))
163
+ })]
164
+ })
165
+ });
166
+ }
167
+ function R() {
168
+ let { workspaceId: e } = t(), { t: n } = _(), d = n, [T, R] = i(/* @__PURE__ */ new Set()), [z, B] = i(!1), [V, H] = i(null), U = p(E, {
169
+ variables: { workspaceId: e ?? "" },
170
+ skip: !e
171
+ }), W = p(D, {
172
+ variables: { workspaceId: e ?? "" },
173
+ skip: !e
174
+ }), G = p(O, {
175
+ variables: { workspaceId: e ?? "" },
176
+ skip: !e
177
+ }), [K] = f(k), q = U.data?.planmagnetProjects.items ?? [], J = W.data?.planmagnetBoards.items ?? [], Y = G.data?.planmagnetAutomationRules.items ?? [], X = r(() => q.filter((e) => e.status === "ACTIVE"), [q]), Z = (e) => {
178
+ R((t) => {
179
+ let n = new Set(t);
180
+ return n.has(e) ? n.delete(e) : n.add(e), n;
181
+ });
182
+ }, Q = () => {
183
+ let e = X.filter((e) => e.status !== "ARCHIVED");
184
+ T.size === e.length ? R(/* @__PURE__ */ new Set()) : R(new Set(e.map((e) => e.id)));
185
+ }, $ = async () => {
186
+ if (T.size !== 0) {
187
+ B(!0), H(null);
188
+ try {
189
+ await Promise.all(Array.from(T).map((e) => K({ variables: { id: e } }))), await U.refetch(), R(/* @__PURE__ */ new Set());
190
+ } catch (e) {
191
+ H(e instanceof Error ? e.message : d("planmagnet.admin.archive.unknownError", "Bulk archive failed"));
192
+ } finally {
193
+ B(!1);
194
+ }
195
+ }
196
+ };
197
+ if (!e) return /* @__PURE__ */ h("div", {
198
+ className: "min-h-screen bg-background",
199
+ children: /* @__PURE__ */ g("div", {
200
+ className: "flex min-h-[320px] flex-col items-center justify-center gap-3 text-muted-foreground",
201
+ children: [/* @__PURE__ */ h(a, { className: "h-8 w-8" }), /* @__PURE__ */ h("p", { children: d("planmagnet.admin.noWorkspace", "Select a workspace to manage PlanMagnet admin settings.") })]
202
+ })
203
+ });
204
+ let ee = U.loading || W.loading || G.loading;
205
+ return /* @__PURE__ */ h("div", {
206
+ className: "min-h-screen bg-background",
207
+ children: /* @__PURE__ */ g("div", {
208
+ className: "mx-auto max-w-7xl space-y-6 p-6",
209
+ children: [
210
+ /* @__PURE__ */ h("div", {
211
+ className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",
212
+ children: /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h1", {
213
+ className: "text-2xl font-semibold tracking-tight",
214
+ children: d("planmagnet.admin.title", "PlanMagnet Admin")
215
+ }), /* @__PURE__ */ h("p", {
216
+ className: "text-sm text-muted-foreground",
217
+ children: d("planmagnet.admin.purpose", "Workspace quota overview, bulk project archive, and automation rule audit.")
218
+ })] })
219
+ }),
220
+ /* @__PURE__ */ g("div", {
221
+ className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
222
+ children: [
223
+ /* @__PURE__ */ h(F, {
224
+ icon: s,
225
+ label: d("planmagnet.admin.quota.projects", "Projects"),
226
+ used: q.length,
227
+ limit: 50
228
+ }),
229
+ /* @__PURE__ */ h(F, {
230
+ icon: c,
231
+ label: d("planmagnet.admin.quota.boards", "Boards"),
232
+ used: J.length,
233
+ limit: 100
234
+ }),
235
+ /* @__PURE__ */ h(F, {
236
+ icon: u,
237
+ label: d("planmagnet.admin.quota.automationRules", "Automation Rules"),
238
+ used: Y.length,
239
+ limit: 25
240
+ })
241
+ ]
242
+ }),
243
+ ee ? /* @__PURE__ */ h(I, {}) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ g(b, { children: [/* @__PURE__ */ g(S, {
244
+ className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
245
+ children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h(C, { children: d("planmagnet.admin.archive.title", "Bulk Project Archive") }), /* @__PURE__ */ h("p", {
246
+ className: "text-sm text-muted-foreground",
247
+ children: d("planmagnet.admin.archive.subtitle", "Select active projects and archive them in one action.")
248
+ })] }), /* @__PURE__ */ g(y, {
249
+ size: "sm",
250
+ variant: "destructive",
251
+ disabled: T.size === 0 || z,
252
+ onClick: $,
253
+ children: [
254
+ z ? /* @__PURE__ */ h(l, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ h(o, { className: "mr-2 h-4 w-4" }),
255
+ d("planmagnet.admin.archive.action", "Archive"),
256
+ " (",
257
+ T.size,
258
+ ")"
259
+ ]
260
+ })]
261
+ }), /* @__PURE__ */ g(x, { children: [V && /* @__PURE__ */ g("div", {
262
+ className: "mb-4 flex items-center gap-2 rounded-md bg-destructive/10 p-3 text-sm text-destructive",
263
+ children: [/* @__PURE__ */ h(a, { className: "h-4 w-4" }), V]
264
+ }), /* @__PURE__ */ h("div", {
265
+ className: "rounded-md border",
266
+ children: /* @__PURE__ */ h(L, {
267
+ data: X,
268
+ columns: [
269
+ {
270
+ key: "select",
271
+ header: /* @__PURE__ */ h(w, {
272
+ checked: X.length > 0 && T.size === X.length,
273
+ onCheckedChange: Q,
274
+ "aria-label": d("planmagnet.admin.archive.selectAll", "Select all active projects")
275
+ }),
276
+ cell: (e) => /* @__PURE__ */ h(w, {
277
+ checked: T.has(e.id),
278
+ onCheckedChange: () => Z(e.id),
279
+ "aria-label": d("planmagnet.admin.archive.selectProject", "Select project")
280
+ }),
281
+ className: "w-12"
282
+ },
283
+ {
284
+ key: "name",
285
+ header: d("planmagnet.admin.archive.column.name", "Project"),
286
+ cell: (e) => /* @__PURE__ */ g("div", {
287
+ className: "flex flex-col",
288
+ children: [/* @__PURE__ */ h("span", {
289
+ className: "font-medium",
290
+ children: e.name
291
+ }), /* @__PURE__ */ h("span", {
292
+ className: "text-xs text-muted-foreground font-mono",
293
+ children: e.key
294
+ })]
295
+ })
296
+ },
297
+ {
298
+ key: "status",
299
+ header: d("planmagnet.admin.archive.column.status", "Status"),
300
+ cell: (e) => /* @__PURE__ */ h(v, {
301
+ variant: A(e.status),
302
+ children: e.status.toLowerCase().replace("_", " ")
303
+ })
304
+ },
305
+ {
306
+ key: "methodology",
307
+ header: d("planmagnet.admin.archive.column.methodology", "Methodology"),
308
+ cell: (e) => /* @__PURE__ */ h("span", {
309
+ className: "text-sm capitalize",
310
+ children: N(e.methodology)
311
+ })
312
+ },
313
+ {
314
+ key: "owner",
315
+ header: d("planmagnet.admin.archive.column.owner", "Owner"),
316
+ cell: (e) => /* @__PURE__ */ h("span", {
317
+ className: "text-sm text-muted-foreground font-mono",
318
+ children: e.ownerId
319
+ })
320
+ },
321
+ {
322
+ key: "created",
323
+ header: d("planmagnet.admin.archive.column.created", "Created"),
324
+ cell: (e) => /* @__PURE__ */ h("span", {
325
+ className: "text-sm",
326
+ children: M(e.createdAt)
327
+ })
328
+ }
329
+ ],
330
+ emptyState: d("planmagnet.admin.archive.empty", "No active projects to archive.")
331
+ })
332
+ })] })] }), /* @__PURE__ */ g(b, { children: [/* @__PURE__ */ g(S, { children: [/* @__PURE__ */ h(C, { children: d("planmagnet.admin.automation.title", "Automation Rule Audit") }), /* @__PURE__ */ h("p", {
333
+ className: "text-sm text-muted-foreground",
334
+ children: d("planmagnet.admin.automation.subtitle", "Review rule health, execution counts, and last run timestamps.")
335
+ })] }), /* @__PURE__ */ h(x, { children: /* @__PURE__ */ h("div", {
336
+ className: "rounded-md border",
337
+ children: /* @__PURE__ */ h(L, {
338
+ data: Y,
339
+ columns: [
340
+ {
341
+ key: "name",
342
+ header: d("planmagnet.admin.automation.column.name", "Rule"),
343
+ cell: (e) => /* @__PURE__ */ h("span", {
344
+ className: "font-medium",
345
+ children: e.name
346
+ })
347
+ },
348
+ {
349
+ key: "trigger",
350
+ header: d("planmagnet.admin.automation.column.trigger", "Trigger"),
351
+ cell: (e) => /* @__PURE__ */ h("span", {
352
+ className: "text-sm",
353
+ children: P(e.triggerType)
354
+ })
355
+ },
356
+ {
357
+ key: "status",
358
+ header: d("planmagnet.admin.automation.column.status", "Status"),
359
+ cell: (e) => /* @__PURE__ */ h(v, {
360
+ variant: j(e.status),
361
+ children: e.status.toLowerCase()
362
+ })
363
+ },
364
+ {
365
+ key: "executions",
366
+ header: d("planmagnet.admin.automation.column.executions", "Executions"),
367
+ cell: (e) => /* @__PURE__ */ h("span", {
368
+ className: "text-sm",
369
+ children: e.executionCount
370
+ })
371
+ },
372
+ {
373
+ key: "lastRun",
374
+ header: d("planmagnet.admin.automation.column.lastRun", "Last Run"),
375
+ cell: (e) => /* @__PURE__ */ h("span", {
376
+ className: "text-sm",
377
+ children: M(e.lastExecutedAt)
378
+ })
379
+ },
380
+ {
381
+ key: "created",
382
+ header: d("planmagnet.admin.automation.column.created", "Created"),
383
+ cell: (e) => /* @__PURE__ */ h("span", {
384
+ className: "text-sm",
385
+ children: M(e.createdAt)
386
+ })
387
+ }
388
+ ],
389
+ emptyState: d("planmagnet.admin.automation.empty", "No automation rules found.")
390
+ })
391
+ }) })] })] })
392
+ ]
393
+ })
394
+ });
395
+ }
396
+ function z(t) {
397
+ return /* @__PURE__ */ h(e, {
398
+ ...t,
399
+ children: /* @__PURE__ */ h(R, {})
400
+ });
401
+ }
402
+ //#endregion
403
+ export { z as PlanMagnetAdminRoot };
404
+
405
+ //# sourceMappingURL=PlanMagnetAdminRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanMagnetAdminRoot.js","names":[],"sources":["../../../src/planmagnet/admin/PlanMagnetAdminRoot.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { useMemo, useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Checkbox,\n Skeleton,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n AlertCircle,\n Archive,\n FolderKanban,\n LayoutTemplate,\n Loader2,\n Zap,\n} from 'lucide-react';\n\nimport { PlanMagnetProvider, usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { cn } from '../utils/cn';\nimport type { PlanMagnetRootProps } from '../types';\n\n// ------------------------------------------------------------------------------\n// Domain types (mirror the planmagnet subgraph until generated types are fixed)\n// ------------------------------------------------------------------------------\n\ntype ProjectStatus =\n | 'ACTIVE'\n | 'ARCHIVED'\n | 'CANCELLED'\n | 'COMPLETED'\n | 'ON_HOLD'\n | 'PLANNING';\n\ninterface AdminProject {\n id: string;\n name: string;\n key: string;\n status: ProjectStatus;\n methodology: string;\n ownerId: string;\n createdAt: string;\n}\n\ninterface AdminBoard {\n id: string;\n name: string;\n type: string;\n projectId?: string | null;\n}\n\ninterface AdminAutomationRule {\n id: string;\n name: string;\n status: string;\n triggerType: string;\n executionCount: number;\n lastExecutedAt?: string | null;\n createdAt: string;\n}\n\n// ------------------------------------------------------------------------------\n// GraphQL documents (inline so the admin surface does not depend on generated\n// hooks while the rest of the MFE's operation files are being reconciled with\n// the schema).\n// ------------------------------------------------------------------------------\n\nconst ADMIN_PROJECTS_QUERY = gql`\n query AdminPlanmagnetProjects($workspaceId: ID!) {\n planmagnetProjects(workspaceId: $workspaceId, pagination: { first: 100 }) {\n items {\n id\n name\n key\n status\n methodology\n ownerId\n createdAt\n }\n totalCount\n }\n }\n`;\n\nconst ADMIN_BOARDS_QUERY = gql`\n query AdminPlanmagnetBoards($workspaceId: ID!) {\n planmagnetBoards(workspaceId: $workspaceId, pagination: { first: 100 }) {\n items {\n id\n name\n type\n projectId\n }\n totalCount\n }\n }\n`;\n\nconst ADMIN_AUTOMATION_RULES_QUERY = gql`\n query AdminPlanmagnetAutomationRules($workspaceId: ID!) {\n planmagnetAutomationRules(workspaceId: $workspaceId, pagination: { first: 100 }) {\n items {\n id\n name\n status\n triggerType\n executionCount\n lastExecutedAt\n createdAt\n }\n totalCount\n }\n }\n`;\n\nconst ARCHIVE_PROJECT_MUTATION = gql`\n mutation AdminArchiveProject($id: ID!) {\n planmagnetUpdateProject(id: $id, input: { status: ARCHIVED }) {\n id\n status\n }\n }\n`;\n\n// ------------------------------------------------------------------------------\n// Presentation helpers\n// ------------------------------------------------------------------------------\n\nfunction projectStatusVariant(status: ProjectStatus) {\n switch (status) {\n case 'ACTIVE':\n return 'success';\n case 'ARCHIVED':\n return 'secondary';\n case 'CANCELLED':\n return 'destructive';\n case 'COMPLETED':\n return 'info';\n case 'ON_HOLD':\n return 'warning';\n case 'PLANNING':\n return 'outline';\n default:\n return 'default';\n }\n}\n\nfunction automationStatusVariant(status: string) {\n switch (status) {\n case 'ACTIVE':\n return 'success';\n case 'PAUSED':\n return 'warning';\n case 'ERROR':\n return 'destructive';\n case 'DISABLED':\n return 'secondary';\n default:\n return 'default';\n }\n}\n\nfunction formatDate(value: string | null | undefined) {\n if (!value) return '—';\n try {\n return new Date(value).toLocaleDateString();\n } catch {\n return value;\n }\n}\n\nfunction localizeMethodology(value: string) {\n return value.toLowerCase().replace(/_/g, ' ');\n}\n\nfunction localizeTrigger(value: string) {\n return value.toLowerCase().replace(/_/g, ' ');\n}\n\n// ------------------------------------------------------------------------------\n// Sub-components\n// ------------------------------------------------------------------------------\n\nfunction QuotaCard({\n icon: Icon,\n label,\n used,\n limit,\n className,\n}: {\n icon: React.ComponentType<{ className?: string }>;\n label: string;\n used: number;\n limit: number;\n className?: string;\n}) {\n const percentage = Math.min(100, Math.round((used / Math.max(1, limit)) * 100));\n\n return (\n <Card className={className}>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-2 text-muted-foreground\">\n <Icon className=\"h-4 w-4\" />\n <span className=\"text-sm\">{label}</span>\n </div>\n <div className=\"mt-2 flex items-baseline gap-2\">\n <span className=\"text-2xl font-semibold\">{used}</span>\n <span className=\"text-sm text-muted-foreground\">/ {limit}</span>\n </div>\n <div className=\"mt-3 h-2 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={cn(\n 'h-full rounded-full transition-all',\n percentage >= 90 ? 'bg-destructive' : percentage >= 70 ? 'bg-warning' : 'bg-success'\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n <p className=\"mt-2 text-xs text-muted-foreground\">{percentage}% used</p>\n </CardContent>\n </Card>\n );\n}\n\nfunction SectionLoader() {\n return (\n <div className=\"space-y-3\">\n <Skeleton className=\"h-8 w-1/3\" />\n <Skeleton className=\"h-32 w-full\" />\n </div>\n );\n}\n\ninterface SimpleTableColumn<T> {\n key: string;\n header: React.ReactNode;\n cell: (row: T) => React.ReactNode;\n className?: string;\n}\n\nfunction SimpleTable<T extends { id: string }>({\n columns,\n data,\n emptyState,\n}: {\n columns: SimpleTableColumn<T>[];\n data: T[];\n emptyState: React.ReactNode;\n}) {\n if (data.length === 0) {\n return <div className=\"py-8 text-center text-sm text-muted-foreground\">{emptyState}</div>;\n }\n\n return (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead className=\"bg-muted/50\">\n <tr>\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n 'px-4 py-3 text-left font-medium text-muted-foreground',\n column.className\n )}\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y\">\n {data.map((row) => (\n <tr key={row.id} className=\"hover:bg-muted/30\">\n {columns.map((column) => (\n <td key={`${row.id}-${column.key}`} className={cn('px-4 py-3', column.className)}>\n {column.cell(row)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n// ------------------------------------------------------------------------------\n// Main dashboard\n// ------------------------------------------------------------------------------\n\nfunction PlanMagnetAdminDashboard() {\n const { workspaceId } = usePlanMagnet();\n const { t: rawT } = useI18n();\n const t = rawT as unknown as (key: string, fallback?: string) => string;\n\n const [selectedProjectIds, setSelectedProjectIds] = useState<Set<string>>(new Set());\n const [archiving, setArchiving] = useState(false);\n const [archiveError, setArchiveError] = useState<string | null>(null);\n\n const projectsQuery = useQuery<{\n planmagnetProjects: { items: AdminProject[]; totalCount: number };\n }>(ADMIN_PROJECTS_QUERY, {\n variables: { workspaceId: workspaceId ?? '' },\n skip: !workspaceId,\n });\n\n const boardsQuery = useQuery<{\n planmagnetBoards: { items: AdminBoard[]; totalCount: number };\n }>(ADMIN_BOARDS_QUERY, {\n variables: { workspaceId: workspaceId ?? '' },\n skip: !workspaceId,\n });\n\n const rulesQuery = useQuery<{\n planmagnetAutomationRules: { items: AdminAutomationRule[]; totalCount: number };\n }>(ADMIN_AUTOMATION_RULES_QUERY, {\n variables: { workspaceId: workspaceId ?? '' },\n skip: !workspaceId,\n });\n\n const [archiveProject] = useMutation(ARCHIVE_PROJECT_MUTATION);\n\n const projects = projectsQuery.data?.planmagnetProjects.items ?? [];\n const boards = boardsQuery.data?.planmagnetBoards.items ?? [];\n const rules = rulesQuery.data?.planmagnetAutomationRules.items ?? [];\n\n const activeProjects = useMemo(\n () => projects.filter((project) => project.status === 'ACTIVE'),\n [projects]\n );\n\n const toggleProjectSelection = (id: string) => {\n setSelectedProjectIds((previous) => {\n const next = new Set(previous);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const toggleAll = () => {\n const selectable = activeProjects.filter((project) => project.status !== 'ARCHIVED');\n if (selectedProjectIds.size === selectable.length) {\n setSelectedProjectIds(new Set());\n } else {\n setSelectedProjectIds(new Set(selectable.map((project) => project.id)));\n }\n };\n\n const handleBulkArchive = async () => {\n if (selectedProjectIds.size === 0) return;\n setArchiving(true);\n setArchiveError(null);\n try {\n await Promise.all(\n Array.from(selectedProjectIds).map((id) => archiveProject({ variables: { id } }))\n );\n await projectsQuery.refetch();\n setSelectedProjectIds(new Set());\n } catch (error) {\n setArchiveError(\n error instanceof Error ? error.message : t('planmagnet.admin.archive.unknownError', 'Bulk archive failed')\n );\n } finally {\n setArchiving(false);\n }\n };\n\n if (!workspaceId) {\n return (\n <div className=\"min-h-screen bg-background\">\n <div className=\"flex min-h-[320px] flex-col items-center justify-center gap-3 text-muted-foreground\">\n <AlertCircle className=\"h-8 w-8\" />\n <p>\n {t(\n 'planmagnet.admin.noWorkspace',\n 'Select a workspace to manage PlanMagnet admin settings.'\n )}\n </p>\n </div>\n </div>\n );\n }\n\n const isLoading = projectsQuery.loading || boardsQuery.loading || rulesQuery.loading;\n\n return (\n <div className=\"min-h-screen bg-background\">\n <div className=\"mx-auto max-w-7xl space-y-6 p-6\">\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold tracking-tight\">\n {t('planmagnet.admin.title', 'PlanMagnet Admin')}\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'planmagnet.admin.purpose',\n 'Workspace quota overview, bulk project archive, and automation rule audit.'\n )}\n </p>\n </div>\n </div>\n\n {/* Quota overview — counts are real; limits are placeholder until a\n dedicated admin quota query exists in the backend. */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n <QuotaCard\n icon={FolderKanban}\n label={t('planmagnet.admin.quota.projects', 'Projects')}\n used={projects.length}\n limit={50}\n />\n <QuotaCard\n icon={LayoutTemplate}\n label={t('planmagnet.admin.quota.boards', 'Boards')}\n used={boards.length}\n limit={100}\n />\n <QuotaCard\n icon={Zap}\n label={t('planmagnet.admin.quota.automationRules', 'Automation Rules')}\n used={rules.length}\n limit={25}\n />\n </div>\n\n {isLoading ? (\n <SectionLoader />\n ) : (\n <>\n {/* Bulk project archive */}\n <Card>\n <CardHeader className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <CardTitle>\n {t('planmagnet.admin.archive.title', 'Bulk Project Archive')}\n </CardTitle>\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'planmagnet.admin.archive.subtitle',\n 'Select active projects and archive them in one action.'\n )}\n </p>\n </div>\n <Button\n size=\"sm\"\n variant=\"destructive\"\n disabled={selectedProjectIds.size === 0 || archiving}\n onClick={handleBulkArchive}\n >\n {archiving ? (\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n ) : (\n <Archive className=\"mr-2 h-4 w-4\" />\n )}\n {t('planmagnet.admin.archive.action', 'Archive')} ({selectedProjectIds.size})\n </Button>\n </CardHeader>\n <CardContent>\n {archiveError && (\n <div className=\"mb-4 flex items-center gap-2 rounded-md bg-destructive/10 p-3 text-sm text-destructive\">\n <AlertCircle className=\"h-4 w-4\" />\n {archiveError}\n </div>\n )}\n <div className=\"rounded-md border\">\n <SimpleTable<AdminProject>\n data={activeProjects}\n columns={[\n {\n key: 'select',\n header: (\n <Checkbox\n checked={\n activeProjects.length > 0 &&\n selectedProjectIds.size === activeProjects.length\n }\n onCheckedChange={toggleAll}\n aria-label={t(\n 'planmagnet.admin.archive.selectAll',\n 'Select all active projects'\n )}\n />\n ),\n cell: (row) => (\n <Checkbox\n checked={selectedProjectIds.has(row.id)}\n onCheckedChange={() => toggleProjectSelection(row.id)}\n aria-label={t(\n 'planmagnet.admin.archive.selectProject',\n 'Select project'\n )}\n />\n ),\n className: 'w-12',\n },\n {\n key: 'name',\n header: t('planmagnet.admin.archive.column.name', 'Project'),\n cell: (row) => (\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{row.name}</span>\n <span className=\"text-xs text-muted-foreground font-mono\">\n {row.key}\n </span>\n </div>\n ),\n },\n {\n key: 'status',\n header: t('planmagnet.admin.archive.column.status', 'Status'),\n cell: (row) => (\n <Badge variant={projectStatusVariant(row.status)}>\n {row.status.toLowerCase().replace('_', ' ')}\n </Badge>\n ),\n },\n {\n key: 'methodology',\n header: t(\n 'planmagnet.admin.archive.column.methodology',\n 'Methodology'\n ),\n cell: (row) => (\n <span className=\"text-sm capitalize\">\n {localizeMethodology(row.methodology)}\n </span>\n ),\n },\n {\n key: 'owner',\n header: t('planmagnet.admin.archive.column.owner', 'Owner'),\n cell: (row) => (\n <span className=\"text-sm text-muted-foreground font-mono\">\n {row.ownerId}\n </span>\n ),\n },\n {\n key: 'created',\n header: t('planmagnet.admin.archive.column.created', 'Created'),\n cell: (row) => <span className=\"text-sm\">{formatDate(row.createdAt)}</span>,\n },\n ]}\n emptyState={t(\n 'planmagnet.admin.archive.empty',\n 'No active projects to archive.'\n )}\n />\n </div>\n </CardContent>\n </Card>\n\n {/* Automation rule audit */}\n <Card>\n <CardHeader>\n <CardTitle>\n {t('planmagnet.admin.automation.title', 'Automation Rule Audit')}\n </CardTitle>\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'planmagnet.admin.automation.subtitle',\n 'Review rule health, execution counts, and last run timestamps.'\n )}\n </p>\n </CardHeader>\n <CardContent>\n <div className=\"rounded-md border\">\n <SimpleTable<AdminAutomationRule>\n data={rules}\n columns={[\n {\n key: 'name',\n header: t('planmagnet.admin.automation.column.name', 'Rule'),\n cell: (row) => <span className=\"font-medium\">{row.name}</span>,\n },\n {\n key: 'trigger',\n header: t('planmagnet.admin.automation.column.trigger', 'Trigger'),\n cell: (row) => (\n <span className=\"text-sm\">{localizeTrigger(row.triggerType)}</span>\n ),\n },\n {\n key: 'status',\n header: t('planmagnet.admin.automation.column.status', 'Status'),\n cell: (row) => (\n <Badge variant={automationStatusVariant(row.status)}>\n {row.status.toLowerCase()}\n </Badge>\n ),\n },\n {\n key: 'executions',\n header: t(\n 'planmagnet.admin.automation.column.executions',\n 'Executions'\n ),\n cell: (row) => <span className=\"text-sm\">{row.executionCount}</span>,\n },\n {\n key: 'lastRun',\n header: t(\n 'planmagnet.admin.automation.column.lastRun',\n 'Last Run'\n ),\n cell: (row) => (\n <span className=\"text-sm\">{formatDate(row.lastExecutedAt)}</span>\n ),\n },\n {\n key: 'created',\n header: t('planmagnet.admin.automation.column.created', 'Created'),\n cell: (row) => <span className=\"text-sm\">{formatDate(row.createdAt)}</span>,\n },\n ]}\n emptyState={t(\n 'planmagnet.admin.automation.empty',\n 'No automation rules found.'\n )}\n />\n </div>\n </CardContent>\n </Card>\n </>\n )}\n </div>\n </div>\n );\n}\n\n// ------------------------------------------------------------------------------\n// Public root export consumed by the admin app shell\n// ------------------------------------------------------------------------------\n\nexport function PlanMagnetAdminRoot(props: PlanMagnetRootProps) {\n return (\n <PlanMagnetProvider {...props}>\n <PlanMagnetAdminDashboard />\n </PlanMagnetProvider>\n );\n}\n"],"mappings":";;;;;;;;;;AAwEA,IAAM,IAAuB,CAAG;;;;;;;;;;;;;;;GAiB1B,IAAqB,CAAG;;;;;;;;;;;;GAcxB,IAA+B,CAAG;;;;;;;;;;;;;;;GAiBlC,IAA2B,CAAG;;;;;;;;AAapC,SAAS,EAAqB,GAAuB;AACnD,SAAQ,GAAR;EACE,KAAK,SACH,QAAO;EACT,KAAK,WACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,WACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,EAAwB,GAAgB;AAC/C,SAAQ,GAAR;EACE,KAAK,SACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,QACH,QAAO;EACT,KAAK,WACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,EAAW,GAAkC;AACpD,KAAI,CAAC,EAAO,QAAO;AACnB,KAAI;AACF,SAAO,IAAI,KAAK,EAAM,CAAC,oBAAoB;SACrC;AACN,SAAO;;;AAIX,SAAS,EAAoB,GAAe;AAC1C,QAAO,EAAM,aAAa,CAAC,QAAQ,MAAM,IAAI;;AAG/C,SAAS,EAAgB,GAAe;AACtC,QAAO,EAAM,aAAa,CAAC,QAAQ,MAAM,IAAI;;AAO/C,SAAS,EAAU,EACjB,MAAM,GACN,UACA,SACA,UACA,gBAOC;CACD,IAAM,IAAa,KAAK,IAAI,KAAK,KAAK,MAAO,IAAO,KAAK,IAAI,GAAG,EAAM,GAAI,IAAI,CAAC;AAE/E,QACE,kBAAC,GAAD;EAAiB;YACf,kBAAC,GAAD;GAAa,WAAU;aAAvB;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC5B,kBAAC,QAAD;MAAM,WAAU;gBAAW;MAAa,CAAA,CACpC;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD;MAAM,WAAU;gBAA0B;MAAY,CAAA,EACtD,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CAAgD,MAAG,EAAa;QAC5D;;IACN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MACE,WAAW,EACT,sCACA,KAAc,KAAK,mBAAmB,KAAc,KAAK,eAAe,aACzE;MACD,OAAO,EAAE,OAAO,GAAG,EAAW,IAAI;MAClC,CAAA;KACE,CAAA;IACN,kBAAC,KAAD;KAAG,WAAU;eAAb,CAAmD,GAAW,SAAU;;IAC5D;;EACT,CAAA;;AAIX,SAAS,IAAgB;AACvB,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,GAAD,EAAU,WAAU,aAAc,CAAA,EAClC,kBAAC,GAAD,EAAU,WAAU,eAAgB,CAAA,CAChC;;;AAWV,SAAS,EAAsC,EAC7C,YACA,SACA,iBAKC;AAKD,QAJI,EAAK,WAAW,IACX,kBAAC,OAAD;EAAK,WAAU;YAAkD;EAAiB,CAAA,GAIzF,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,SAAD;GAAO,WAAU;aAAjB,CACE,kBAAC,SAAD;IAAO,WAAU;cACf,kBAAC,MAAD,EAAA,UACG,EAAQ,KAAK,MACZ,kBAAC,MAAD;KAEE,WAAW,EACT,yDACA,EAAO,UACR;eAEA,EAAO;KACL,EAPE,EAAO,IAOT,CACL,EACC,CAAA;IACC,CAAA,EACR,kBAAC,SAAD;IAAO,WAAU;cACd,EAAK,KAAK,MACT,kBAAC,MAAD;KAAiB,WAAU;eACxB,EAAQ,KAAK,MACZ,kBAAC,MAAD;MAAoC,WAAW,EAAG,aAAa,EAAO,UAAU;gBAC7E,EAAO,KAAK,EAAI;MACd,EAFI,GAAG,EAAI,GAAG,GAAG,EAAO,MAExB,CACL;KACC,EANI,EAAI,GAMR,CACL;IACI,CAAA,CACF;;EACJ,CAAA;;AAQV,SAAS,IAA2B;CAClC,IAAM,EAAE,mBAAgB,GAAe,EACjC,EAAE,GAAG,MAAS,GAAS,EACvB,IAAI,GAEJ,CAAC,GAAoB,KAAyB,kBAAsB,IAAI,KAAK,CAAC,EAC9E,CAAC,GAAW,KAAgB,EAAS,GAAM,EAC3C,CAAC,GAAc,KAAmB,EAAwB,KAAK,EAE/D,IAAgB,EAEnB,GAAsB;EACvB,WAAW,EAAE,aAAa,KAAe,IAAI;EAC7C,MAAM,CAAC;EACR,CAAC,EAEI,IAAc,EAEjB,GAAoB;EACrB,WAAW,EAAE,aAAa,KAAe,IAAI;EAC7C,MAAM,CAAC;EACR,CAAC,EAEI,IAAa,EAEhB,GAA8B;EAC/B,WAAW,EAAE,aAAa,KAAe,IAAI;EAC7C,MAAM,CAAC;EACR,CAAC,EAEI,CAAC,KAAkB,EAAY,EAAyB,EAExD,IAAW,EAAc,MAAM,mBAAmB,SAAS,EAAE,EAC7D,IAAS,EAAY,MAAM,iBAAiB,SAAS,EAAE,EACvD,IAAQ,EAAW,MAAM,0BAA0B,SAAS,EAAE,EAE9D,IAAiB,QACf,EAAS,QAAQ,MAAY,EAAQ,WAAW,SAAS,EAC/D,CAAC,EAAS,CACX,EAEK,KAA0B,MAAe;AAC7C,KAAuB,MAAa;GAClC,IAAM,IAAO,IAAI,IAAI,EAAS;AAM9B,UALI,EAAK,IAAI,EAAG,GACd,EAAK,OAAO,EAAG,GAEf,EAAK,IAAI,EAAG,EAEP;IACP;IAGE,UAAkB;EACtB,IAAM,IAAa,EAAe,QAAQ,MAAY,EAAQ,WAAW,WAAW;AACpF,EAAI,EAAmB,SAAS,EAAW,SACzC,kBAAsB,IAAI,KAAK,CAAC,GAEhC,EAAsB,IAAI,IAAI,EAAW,KAAK,MAAY,EAAQ,GAAG,CAAC,CAAC;IAIrE,IAAoB,YAAY;AAChC,QAAmB,SAAS,GAEhC;GADA,EAAa,GAAK,EAClB,EAAgB,KAAK;AACrB,OAAI;AAKF,IAJA,MAAM,QAAQ,IACZ,MAAM,KAAK,EAAmB,CAAC,KAAK,MAAO,EAAe,EAAE,WAAW,EAAE,OAAI,EAAE,CAAC,CAAC,CAClF,EACD,MAAM,EAAc,SAAS,EAC7B,kBAAsB,IAAI,KAAK,CAAC;YACzB,GAAO;AACd,MACE,aAAiB,QAAQ,EAAM,UAAU,EAAE,yCAAyC,sBAAsB,CAC3G;aACO;AACR,MAAa,GAAM;;;;AAIvB,KAAI,CAAC,EACH,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA,EACnC,kBAAC,KAAD,EAAA,UACG,EACC,gCACA,0DACD,EACC,CAAA,CACA;;EACF,CAAA;CAIV,IAAM,KAAY,EAAc,WAAW,EAAY,WAAW,EAAW;AAE7E,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAE,0BAA0B,mBAAmB;MAC7C,CAAA,EACL,kBAAC,KAAD;MAAG,WAAU;gBACV,EACC,4BACA,6EACD;MACC,CAAA,CACA,EAAA,CAAA;KACF,CAAA;IAIN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,GAAD;OACE,MAAM;OACN,OAAO,EAAE,mCAAmC,WAAW;OACvD,MAAM,EAAS;OACf,OAAO;OACP,CAAA;MACF,kBAAC,GAAD;OACE,MAAM;OACN,OAAO,EAAE,iCAAiC,SAAS;OACnD,MAAM,EAAO;OACb,OAAO;OACP,CAAA;MACF,kBAAC,GAAD;OACE,MAAM;OACN,OAAO,EAAE,0CAA0C,mBAAmB;OACtE,MAAM,EAAM;OACZ,OAAO;OACP,CAAA;MACE;;IAEL,KACC,kBAAC,GAAD,EAAiB,CAAA,GAEjB,kBAAA,GAAA,EAAA,UAAA,CAEE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;KAAY,WAAU;eAAtB,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACG,EAAE,kCAAkC,uBAAuB,EAClD,CAAA,EACZ,kBAAC,KAAD;MAAG,WAAU;gBACV,EACC,qCACA,yDACD;MACC,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,GAAD;MACE,MAAK;MACL,SAAQ;MACR,UAAU,EAAmB,SAAS,KAAK;MAC3C,SAAS;gBAJX;OAMG,IACC,kBAAC,GAAD,EAAS,WAAU,6BAA8B,CAAA,GAEjD,kBAAC,GAAD,EAAS,WAAU,gBAAiB,CAAA;OAErC,EAAE,mCAAmC,UAAU;OAAC;OAAG,EAAmB;OAAK;OACrE;QACE;QACb,kBAAC,GAAD,EAAA,UAAA,CACG,KACC,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA,EAClC,EACG;QAER,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MACE,MAAM;MACN,SAAS;OACP;QACE,KAAK;QACL,QACE,kBAAC,GAAD;SACE,SACE,EAAe,SAAS,KACxB,EAAmB,SAAS,EAAe;SAE7C,iBAAiB;SACjB,cAAY,EACV,sCACA,6BACD;SACD,CAAA;QAEJ,OAAO,MACL,kBAAC,GAAD;SACE,SAAS,EAAmB,IAAI,EAAI,GAAG;SACvC,uBAAuB,EAAuB,EAAI,GAAG;SACrD,cAAY,EACV,0CACA,iBACD;SACD,CAAA;QAEJ,WAAW;QACZ;OACD;QACE,KAAK;QACL,QAAQ,EAAE,wCAAwC,UAAU;QAC5D,OAAO,MACL,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBAAe,EAAI;UAAY,CAAA,EAC/C,kBAAC,QAAD;UAAM,WAAU;oBACb,EAAI;UACA,CAAA,CACH;;QAET;OACD;QACE,KAAK;QACL,QAAQ,EAAE,0CAA0C,SAAS;QAC7D,OAAO,MACL,kBAAC,GAAD;SAAO,SAAS,EAAqB,EAAI,OAAO;mBAC7C,EAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,IAAI;SACrC,CAAA;QAEX;OACD;QACE,KAAK;QACL,QAAQ,EACN,+CACA,cACD;QACD,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBACb,EAAoB,EAAI,YAAY;SAChC,CAAA;QAEV;OACD;QACE,KAAK;QACL,QAAQ,EAAE,yCAAyC,QAAQ;QAC3D,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBACb,EAAI;SACA,CAAA;QAEV;OACD;QACE,KAAK;QACL,QAAQ,EAAE,2CAA2C,UAAU;QAC/D,OAAO,MAAQ,kBAAC,QAAD;SAAM,WAAU;mBAAW,EAAW,EAAI,UAAU;SAAQ,CAAA;QAC5E;OACF;MACD,YAAY,EACV,kCACA,iCACD;MACD,CAAA;KACE,CAAA,CACM,EAAA,CAAA,CACT,EAAA,CAAA,EAGP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACG,EAAE,qCAAqC,wBAAwB,EACtD,CAAA,EACZ,kBAAC,KAAD;KAAG,WAAU;eACV,EACC,wCACA,iEACD;KACC,CAAA,CACO,EAAA,CAAA,EACb,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MACE,MAAM;MACN,SAAS;OACP;QACE,KAAK;QACL,QAAQ,EAAE,2CAA2C,OAAO;QAC5D,OAAO,MAAQ,kBAAC,QAAD;SAAM,WAAU;mBAAe,EAAI;SAAY,CAAA;QAC/D;OACD;QACE,KAAK;QACL,QAAQ,EAAE,8CAA8C,UAAU;QAClE,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBAAW,EAAgB,EAAI,YAAY;SAAQ,CAAA;QAEtE;OACD;QACE,KAAK;QACL,QAAQ,EAAE,6CAA6C,SAAS;QAChE,OAAO,MACL,kBAAC,GAAD;SAAO,SAAS,EAAwB,EAAI,OAAO;mBAChD,EAAI,OAAO,aAAa;SACnB,CAAA;QAEX;OACD;QACE,KAAK;QACL,QAAQ,EACN,iDACA,aACD;QACD,OAAO,MAAQ,kBAAC,QAAD;SAAM,WAAU;mBAAW,EAAI;SAAsB,CAAA;QACrE;OACD;QACE,KAAK;QACL,QAAQ,EACN,8CACA,WACD;QACD,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBAAW,EAAW,EAAI,eAAe;SAAQ,CAAA;QAEpE;OACD;QACE,KAAK;QACL,QAAQ,EAAE,8CAA8C,UAAU;QAClE,OAAO,MAAQ,kBAAC,QAAD;SAAM,WAAU;mBAAW,EAAW,EAAI,UAAU;SAAQ,CAAA;QAC5E;OACF;MACD,YAAY,EACV,qCACA,6BACD;MACD,CAAA;KACE,CAAA,EACM,CAAA,CACT,EAAA,CAAA,CACN,EAAA,CAAA;IAED;;EACF,CAAA;;AAQV,SAAgB,EAAoB,GAA4B;AAC9D,QACE,kBAAC,GAAD;EAAoB,GAAI;YACtB,kBAAC,GAAD,EAA4B,CAAA;EACT,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { PlanMagnetRoot } from './PlanMagnetRoot';
2
+ export { PlanMagnetAdminRoot } from './admin/PlanMagnetAdminRoot';
3
+ export type { PlanMagnetRootProps, NavItem, FooterItem } from './types';
4
+ export { usePlanMagnet, usePlanMagnetNavigate } from './providers/PlanMagnetProvider';
5
+ export { usePlanMagnetStore } from './store/planmagnetStore';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/planmagnet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import "./providers/PlanMagnetProvider.js";
2
2
  import "./PlanMagnetRoot.js";
3
+ import "./admin/PlanMagnetAdminRoot.js";
3
4
  import "./store/planmagnetStore.js";
@@ -0,0 +1,2 @@
1
+ export declare function AnalyticsAnalyticsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=AnalyticsAnalyticsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsAnalyticsPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/AnalyticsAnalyticsPagePage.tsx"],"names":[],"mappings":"AAyGA,wBAAgB,0BAA0B,4CAkSzC"}
@@ -0,0 +1,2 @@
1
+ export declare function CollaborationCollaborationPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CollaborationCollaborationPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborationCollaborationPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/CollaborationCollaborationPagePage.tsx"],"names":[],"mappings":"AAsCA,wBAAgB,kCAAkC,4CAsFjD"}
@@ -0,0 +1,2 @@
1
+ export declare function CollaborationCreateChannelPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CollaborationCreateChannelPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborationCreateChannelPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/CollaborationCreateChannelPagePage.tsx"],"names":[],"mappings":"AAOA,wBAAgB,kCAAkC,4CA8EjD"}
@@ -0,0 +1,2 @@
1
+ export declare function CollaborationFilesPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CollaborationFilesPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborationFilesPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/CollaborationFilesPagePage.tsx"],"names":[],"mappings":"AAyCA,wBAAgB,0BAA0B,4CAyFzC"}
@@ -0,0 +1,2 @@
1
+ export declare function CollaborationMessagesPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CollaborationMessagesPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborationMessagesPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/CollaborationMessagesPagePage.tsx"],"names":[],"mappings":"AA0DA,wBAAgB,6BAA6B,4CAqG5C"}
@@ -0,0 +1,2 @@
1
+ export declare function CollaborationNewDiscussionPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CollaborationNewDiscussionPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborationNewDiscussionPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/CollaborationNewDiscussionPagePage.tsx"],"names":[],"mappings":"AAgCA,wBAAgB,kCAAkC,4CAiGjD"}
@@ -0,0 +1,2 @@
1
+ export declare function DashboardDashboardPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DashboardDashboardPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardDashboardPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/DashboardDashboardPagePage.tsx"],"names":[],"mappings":"AAuFA,wBAAgB,0BAA0B,4CAwUzC"}
@@ -0,0 +1,2 @@
1
+ export declare function MeetingsScheduleMeetingPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=MeetingsScheduleMeetingPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeetingsScheduleMeetingPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/MeetingsScheduleMeetingPagePage.tsx"],"names":[],"mappings":"AAiEA,wBAAgB,+BAA+B,4CAwN9C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsCreateProductPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsCreateProductPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsCreateProductPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsCreateProductPagePage.tsx"],"names":[],"mappings":"AAgCA,wBAAgB,6BAA6B,4CAqK5C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsCreateRoadmapPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsCreateRoadmapPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsCreateRoadmapPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsCreateRoadmapPagePage.tsx"],"names":[],"mappings":"AAuBA,wBAAgB,6BAA6B,4CA2H5C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsEditProductPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsEditProductPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsEditProductPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsEditProductPagePage.tsx"],"names":[],"mappings":"AA0DA,wBAAgB,2BAA2B,4CA4N1C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsEditReleasePagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsEditReleasePagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsEditReleasePagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsEditReleasePagePage.tsx"],"names":[],"mappings":"AA2CA,wBAAgB,2BAA2B,4CAqM1C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsFeatureAnalyticsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsFeatureAnalyticsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsFeatureAnalyticsPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsFeatureAnalyticsPagePage.tsx"],"names":[],"mappings":"AA8DA,wBAAgB,gCAAgC,4CA6P/C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsFeatureDetailPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsFeatureDetailPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsFeatureDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsFeatureDetailPagePage.tsx"],"names":[],"mappings":"AA2DA,wBAAgB,6BAA6B,4CA8M5C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsFeaturesPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsFeaturesPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsFeaturesPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsFeaturesPagePage.tsx"],"names":[],"mappings":"AAqEA,wBAAgB,wBAAwB,4CAsMvC"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsNewFeaturePagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsNewFeaturePagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsNewFeaturePagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsNewFeaturePagePage.tsx"],"names":[],"mappings":"AAiCA,wBAAgB,0BAA0B,4CAgMzC"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsProductDetailPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsProductDetailPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsProductDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsProductDetailPagePage.tsx"],"names":[],"mappings":"AAgGA,wBAAgB,6BAA6B,4CA2N5C"}
@@ -0,0 +1,2 @@
1
+ export declare function ProductsProductsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductsProductsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductsProductsPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsProductsPagePage.tsx"],"names":[],"mappings":"AAgEA,wBAAgB,wBAAwB,4CAsLvC"}