@burdenoff/microfe-planmagnet 2026.1001.6 → 2026.1001.7

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 (81) hide show
  1. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  2. package/dist/planmagnet/PlanMagnetRoutes.js +10 -6
  3. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  4. package/dist/planmagnet/automation/automationRuleTypes.d.ts +31 -19
  5. package/dist/planmagnet/automation/automationRuleTypes.d.ts.map +1 -1
  6. package/dist/planmagnet/automation/automationRuleTypes.js +4 -8
  7. package/dist/planmagnet/automation/automationRuleTypes.js.map +1 -1
  8. package/dist/planmagnet/controls/FeatureControls.d.ts +18 -1
  9. package/dist/planmagnet/controls/FeatureControls.d.ts.map +1 -1
  10. package/dist/planmagnet/controls/FeatureControls.js +259 -202
  11. package/dist/planmagnet/controls/FeatureControls.js.map +1 -1
  12. package/dist/planmagnet/controls/FeedbackControls.d.ts +70 -0
  13. package/dist/planmagnet/controls/FeedbackControls.d.ts.map +1 -0
  14. package/dist/planmagnet/controls/FeedbackControls.js +153 -0
  15. package/dist/planmagnet/controls/FeedbackControls.js.map +1 -0
  16. package/dist/planmagnet/controls/SyncControls.d.ts.map +1 -1
  17. package/dist/planmagnet/controls/SyncControls.js +1 -0
  18. package/dist/planmagnet/controls/SyncControls.js.map +1 -1
  19. package/dist/planmagnet/controls/WebhookSubscriptionControls.d.ts +47 -0
  20. package/dist/planmagnet/controls/WebhookSubscriptionControls.d.ts.map +1 -0
  21. package/dist/planmagnet/controls/WebhookSubscriptionControls.js +542 -0
  22. package/dist/planmagnet/controls/WebhookSubscriptionControls.js.map +1 -0
  23. package/dist/planmagnet/dashboards/DashboardUI.js +7 -7
  24. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.js +4 -4
  25. package/dist/planmagnet/forecast/DeliveryForecastCard.js +8 -8
  26. package/dist/planmagnet/forecast/ProjectOutlookCard.js +10 -10
  27. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js +9 -9
  28. package/dist/planmagnet/forecast/ResourceForecastCard.js +6 -6
  29. package/dist/planmagnet/integrations/syncTypes.d.ts +2 -1
  30. package/dist/planmagnet/integrations/syncTypes.d.ts.map +1 -1
  31. package/dist/planmagnet/integrations/syncTypes.js +19 -9
  32. package/dist/planmagnet/integrations/syncTypes.js.map +1 -1
  33. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +8 -8
  34. package/dist/planmagnet/pages/DashboardDashboardPagePage.js +23 -23
  35. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
  36. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +340 -248
  37. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
  38. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.d.ts.map +1 -1
  39. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.js +172 -167
  40. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.js.map +1 -1
  41. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.d.ts.map +1 -1
  42. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.js +92 -83
  43. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.js.map +1 -1
  44. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.d.ts +2 -0
  45. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.d.ts.map +1 -0
  46. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.js +175 -0
  47. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.js.map +1 -0
  48. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -1
  49. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +151 -126
  50. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +1 -1
  51. package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +1 -1
  52. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +136 -129
  53. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +1 -1
  54. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -1
  55. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +149 -119
  56. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
  57. package/dist/planmagnet/pages/ProductsProductsPagePage.js +13 -13
  58. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js +9 -9
  59. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js +8 -8
  60. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +12 -12
  61. package/dist/planmagnet/pages/ReportsReportsPagePage.js +23 -23
  62. package/dist/planmagnet/pages/TasksMyDashboardPagePage.js +18 -18
  63. package/dist/planmagnet/pages/TasksMyWorkPagePage.js +10 -10
  64. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js +5 -5
  65. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js +8 -8
  66. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js +6 -6
  67. package/dist/planmagnet/pages/analytics/MetricsCard.js +6 -6
  68. package/dist/planmagnet/pages/analytics/QualityMetricsCard.js +6 -6
  69. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js +8 -8
  70. package/dist/planmagnet/pages/analytics/StatusFlowCard.js +7 -7
  71. package/dist/planmagnet/pages/analytics/ThroughputCard.js +7 -7
  72. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.js +7 -7
  73. package/dist/planmagnet/people/People.d.ts +14 -0
  74. package/dist/planmagnet/people/People.d.ts.map +1 -1
  75. package/dist/planmagnet/people/People.js +36 -22
  76. package/dist/planmagnet/people/People.js.map +1 -1
  77. package/dist/planmagnet/webhooks/webhookTypes.d.ts +54 -0
  78. package/dist/planmagnet/webhooks/webhookTypes.d.ts.map +1 -0
  79. package/dist/planmagnet/webhooks/webhookTypes.js +17 -0
  80. package/dist/planmagnet/webhooks/webhookTypes.js.map +1 -0
  81. package/package.json +1 -1
@@ -2,16 +2,21 @@ import { usePlanMagnetNavigate as e } from "../providers/PlanMagnetProvider.js";
2
2
  import { PersonName as t } from "../people/People.js";
3
3
  import { detailPath as n } from "../utils/rowNavigation.js";
4
4
  import { useEntityId as r } from "../hooks/useEntityId.js";
5
- import { directionLabel as i, parseGithubFieldMapping as a, providerLabel as o } from "../integrations/syncTypes.js";
6
- import { CONFLICT_STRATEGY_EXPLANATION as s, ConflictResolveActions as c, ConflictStatusBadge as l, DeleteSyncButton as u, EditSyncDialog as d, PauseResumeButton as f, RunNowButton as p, SyncHealthSummary as m, SyncRunResultSummary as h, SyncRunStatusBadge as g, SyncStatusBadge as _, TestConnectionButton as v, TruncatedText as y } from "../controls/SyncControls.js";
7
- import { useState as b } from "react";
8
- import { ExternalLink as x, History as S, Plug as C, ShieldAlert as w } from "lucide-react";
9
- import { gql as T } from "@apollo/client";
10
- import { useQuery as E } from "@apollo/client/react";
11
- import { Fragment as D, jsx as O, jsxs as k } from "react/jsx-runtime";
12
- import { Badge as A, Button as j, Card as M, CardContent as N, CardHeader as P, CardTitle as F, Tabs as I, TabsContent as L, TabsList as R, TabsTrigger as z } from "@burdenoff/fe-libs/ui";
5
+ import { conflictStrategyLabel as i, directionLabel as a, parseGithubFieldMapping as o, providerLabel as s } from "../integrations/syncTypes.js";
6
+ import { CONFLICT_STRATEGY_EXPLANATION as c, ConflictResolveActions as l, ConflictStatusBadge as u, DeleteSyncButton as d, EditSyncDialog as f, PauseResumeButton as p, RunNowButton as m, SyncHealthSummary as h, SyncRunResultSummary as g, SyncRunStatusBadge as _, SyncStatusBadge as v, TestConnectionButton as y, TruncatedText as b } from "../controls/SyncControls.js";
7
+ import { useState as x } from "react";
8
+ import { ExternalLink as S, History as C, Plug as w, ShieldAlert as T } from "lucide-react";
9
+ import { gql as E } from "@apollo/client";
10
+ import { useQuery as D } from "@apollo/client/react";
11
+ import { Fragment as O, jsx as k, jsxs as A } from "react/jsx-runtime";
12
+ import { Badge as j, Button as M, Card as N, CardContent as P, CardHeader as F, CardTitle as I, Tabs as L, TabsContent as R, TabsList as z, TabsTrigger as B } from "@burdenoff/fe-libs/ui";
13
13
  //#region src/planmagnet/pages/IntegrationsSyncDetailPagePage.tsx
14
- var B = 20, V = 20, H = T`
14
+ var V = {
15
+ SOURCE_WINS: "kept PlanMagnet",
16
+ TARGET_WINS: "took the provider",
17
+ MERGE: "merged",
18
+ MANUAL: "dismissed manually"
19
+ }, H = 20, U = 20, W = E`
15
20
  query SyncDetail($id: ID!) {
16
21
  planmagnetExternalSync(id: $id) {
17
22
  id
@@ -41,7 +46,7 @@ var B = 20, V = 20, H = T`
41
46
  }
42
47
  }
43
48
  }
44
- `, U = T`
49
+ `, G = E`
45
50
  query SyncRuns($syncId: ID!, $pagination: PlanmagnetPaginationInput) {
46
51
  planmagnetSyncRuns(syncId: $syncId, pagination: $pagination) {
47
52
  totalCount
@@ -65,7 +70,7 @@ var B = 20, V = 20, H = T`
65
70
  }
66
71
  }
67
72
  }
68
- `, W = T`
73
+ `, K = E`
69
74
  query SyncConflicts(
70
75
  $syncId: ID!
71
76
  $status: PlanmagnetSyncConflictStatus
@@ -100,18 +105,18 @@ var B = 20, V = 20, H = T`
100
105
  }
101
106
  }
102
107
  `;
103
- function G({ syncId: e }) {
104
- let [n, r] = b(!1), { data: a, loading: o, error: s, fetchMore: c } = E(U, { variables: {
108
+ function q({ syncId: e }) {
109
+ let [n, r] = x(!1), { data: i, loading: o, error: s, fetchMore: c } = D(G, { variables: {
105
110
  syncId: e,
106
- pagination: { first: B }
107
- } }), l = a?.planmagnetSyncRuns, u = l?.items ?? [], d = async () => {
111
+ pagination: { first: H }
112
+ } }), l = i?.planmagnetSyncRuns, u = l?.items ?? [], d = async () => {
108
113
  let e = l?.pageInfo.endCursor;
109
114
  if (e) {
110
115
  r(!0);
111
116
  try {
112
117
  await c({
113
118
  variables: { pagination: {
114
- first: B,
119
+ first: H,
115
120
  after: e
116
121
  } },
117
122
  updateQuery: (e, { fetchMoreResult: t }) => ({ planmagnetSyncRuns: {
@@ -124,79 +129,79 @@ function G({ syncId: e }) {
124
129
  }
125
130
  }
126
131
  };
127
- return /* @__PURE__ */ k("div", {
132
+ return /* @__PURE__ */ A("div", {
128
133
  className: "space-y-3",
129
134
  "data-testid": "sync-runs",
130
135
  children: [
131
- s && /* @__PURE__ */ k("p", {
136
+ s && /* @__PURE__ */ A("p", {
132
137
  role: "alert",
133
138
  className: "text-sm text-destructive",
134
139
  children: ["Run history could not be loaded: ", s.message]
135
140
  }),
136
- o && !a && /* @__PURE__ */ O("p", {
141
+ o && !i && /* @__PURE__ */ k("p", {
137
142
  className: "text-sm text-muted-foreground",
138
143
  children: "Loading run history…"
139
144
  }),
140
- l && u.length === 0 && /* @__PURE__ */ O("p", {
145
+ l && u.length === 0 && /* @__PURE__ */ k("p", {
141
146
  className: "py-6 text-center text-sm text-muted-foreground",
142
147
  children: "No runs yet — use \"Run now\" above to start the first one."
143
148
  }),
144
- /* @__PURE__ */ O("div", {
149
+ /* @__PURE__ */ k("div", {
145
150
  className: "overflow-x-auto",
146
- children: u.length > 0 && /* @__PURE__ */ k("table", {
151
+ children: u.length > 0 && /* @__PURE__ */ A("table", {
147
152
  className: "w-full text-sm",
148
- children: [/* @__PURE__ */ O("thead", { children: /* @__PURE__ */ k("tr", {
153
+ children: [/* @__PURE__ */ k("thead", { children: /* @__PURE__ */ A("tr", {
149
154
  className: "text-left text-muted-foreground",
150
155
  children: [
151
- /* @__PURE__ */ O("th", {
156
+ /* @__PURE__ */ k("th", {
152
157
  className: "py-1 pr-3 font-medium",
153
158
  children: "Started"
154
159
  }),
155
- /* @__PURE__ */ O("th", {
160
+ /* @__PURE__ */ k("th", {
156
161
  className: "py-1 pr-3 font-medium",
157
162
  children: "Direction"
158
163
  }),
159
- /* @__PURE__ */ O("th", {
164
+ /* @__PURE__ */ k("th", {
160
165
  className: "py-1 pr-3 font-medium",
161
166
  children: "Status"
162
167
  }),
163
- /* @__PURE__ */ O("th", {
168
+ /* @__PURE__ */ k("th", {
164
169
  className: "py-1 pr-3 font-medium",
165
170
  children: "Created / updated / skipped"
166
171
  }),
167
- /* @__PURE__ */ O("th", {
172
+ /* @__PURE__ */ k("th", {
168
173
  className: "py-1 pr-3 font-medium",
169
174
  children: "Conflicts"
170
175
  }),
171
- /* @__PURE__ */ O("th", {
176
+ /* @__PURE__ */ k("th", {
172
177
  className: "py-1 pr-3 font-medium",
173
178
  children: "Triggered by"
174
179
  }),
175
- /* @__PURE__ */ O("th", {
180
+ /* @__PURE__ */ k("th", {
176
181
  className: "py-1 font-medium",
177
182
  children: "Error"
178
183
  })
179
184
  ]
180
- }) }), /* @__PURE__ */ O("tbody", { children: u.map((e) => /* @__PURE__ */ k("tr", {
185
+ }) }), /* @__PURE__ */ k("tbody", { children: u.map((e) => /* @__PURE__ */ A("tr", {
181
186
  className: "border-t align-top",
182
187
  "data-testid": "sync-run-row",
183
188
  children: [
184
- /* @__PURE__ */ k("td", {
189
+ /* @__PURE__ */ A("td", {
185
190
  className: "py-1.5 pr-3 whitespace-nowrap",
186
- children: [/* @__PURE__ */ O("div", { children: new Date(e.startedAt).toLocaleString() }), /* @__PURE__ */ k("div", {
191
+ children: [/* @__PURE__ */ k("div", { children: new Date(e.startedAt).toLocaleString() }), /* @__PURE__ */ A("div", {
187
192
  className: "text-xs text-muted-foreground",
188
193
  children: ["finished ", new Date(e.finishedAt).toLocaleString()]
189
194
  })]
190
195
  }),
191
- /* @__PURE__ */ O("td", {
196
+ /* @__PURE__ */ k("td", {
192
197
  className: "py-1.5 pr-3 whitespace-nowrap",
193
- children: i(e.direction)
198
+ children: a(e.direction)
194
199
  }),
195
- /* @__PURE__ */ O("td", {
200
+ /* @__PURE__ */ k("td", {
196
201
  className: "py-1.5 pr-3",
197
- children: /* @__PURE__ */ O(g, { status: e.status })
202
+ children: /* @__PURE__ */ k(_, { status: e.status })
198
203
  }),
199
- /* @__PURE__ */ k("td", {
204
+ /* @__PURE__ */ A("td", {
200
205
  className: "py-1.5 pr-3 whitespace-nowrap",
201
206
  children: [
202
207
  e.itemsCreated,
@@ -206,21 +211,21 @@ function G({ syncId: e }) {
206
211
  e.itemsSkipped
207
212
  ]
208
213
  }),
209
- /* @__PURE__ */ O("td", {
214
+ /* @__PURE__ */ k("td", {
210
215
  className: "py-1.5 pr-3",
211
216
  children: e.conflictCount
212
217
  }),
213
- /* @__PURE__ */ O("td", {
218
+ /* @__PURE__ */ k("td", {
214
219
  className: "py-1.5 pr-3 whitespace-nowrap",
215
- children: /* @__PURE__ */ O(t, { id: e.triggeredBy })
220
+ children: /* @__PURE__ */ k(t, { id: e.triggeredBy })
216
221
  }),
217
- /* @__PURE__ */ O("td", {
222
+ /* @__PURE__ */ k("td", {
218
223
  className: "py-1.5 text-status-error-text",
219
- children: e.errorMessage ? /* @__PURE__ */ O(y, {
224
+ children: e.errorMessage ? /* @__PURE__ */ k(b, {
220
225
  text: e.errorMessage,
221
226
  max: 100,
222
227
  className: "text-status-error-text"
223
- }) : /* @__PURE__ */ O("span", {
228
+ }) : /* @__PURE__ */ k("span", {
224
229
  className: "text-muted-foreground",
225
230
  children: "—"
226
231
  })
@@ -229,7 +234,7 @@ function G({ syncId: e }) {
229
234
  }, e.id)) })]
230
235
  })
231
236
  }),
232
- l?.pageInfo.hasNextPage && /* @__PURE__ */ O(j, {
237
+ l?.pageInfo.hasNextPage && /* @__PURE__ */ k(M, {
233
238
  size: "sm",
234
239
  variant: "outline",
235
240
  onClick: () => void d(),
@@ -239,35 +244,35 @@ function G({ syncId: e }) {
239
244
  ]
240
245
  });
241
246
  }
242
- function K({ conflict: n }) {
247
+ function J({ conflict: n }) {
243
248
  let r = e(), i = n.mapping, a = i?.internalType === "workitem";
244
- return /* @__PURE__ */ k("li", {
249
+ return /* @__PURE__ */ A("li", {
245
250
  className: "rounded-md border p-4 space-y-2",
246
251
  "data-testid": "sync-conflict",
247
252
  children: [
248
- /* @__PURE__ */ k("div", {
253
+ /* @__PURE__ */ A("div", {
249
254
  className: "flex flex-wrap items-center justify-between gap-2",
250
- children: [/* @__PURE__ */ k("div", {
255
+ children: [/* @__PURE__ */ A("div", {
251
256
  className: "flex flex-wrap items-center gap-2",
252
- children: [/* @__PURE__ */ O(l, { status: n.status }), /* @__PURE__ */ k("span", {
257
+ children: [/* @__PURE__ */ k(u, { status: n.status }), /* @__PURE__ */ A("span", {
253
258
  className: "text-xs text-muted-foreground",
254
259
  children: ["Detected ", new Date(n.createdAt).toLocaleString()]
255
260
  })]
256
- }), i && /* @__PURE__ */ k("div", {
261
+ }), i && /* @__PURE__ */ A("div", {
257
262
  className: "flex items-center gap-2 text-xs",
258
- children: [a ? /* @__PURE__ */ O("button", {
263
+ children: [a ? /* @__PURE__ */ k("button", {
259
264
  type: "button",
260
265
  className: "font-medium text-primary hover:underline",
261
266
  onClick: () => r(`/tasks/task-detail-page?taskId=${encodeURIComponent(i.internalId)}`),
262
267
  children: "Open in PlanMagnet"
263
- }) : /* @__PURE__ */ k("span", {
268
+ }) : /* @__PURE__ */ A("span", {
264
269
  className: "text-muted-foreground",
265
270
  children: [
266
271
  i.internalType,
267
272
  " ",
268
273
  i.internalId
269
274
  ]
270
- }), i.externalUrl && /* @__PURE__ */ k("a", {
275
+ }), i.externalUrl && /* @__PURE__ */ A("a", {
271
276
  href: i.externalUrl,
272
277
  target: "_blank",
273
278
  rel: "noreferrer noopener",
@@ -275,43 +280,43 @@ function K({ conflict: n }) {
275
280
  children: [
276
281
  "View on ",
277
282
  i.externalType,
278
- /* @__PURE__ */ O(x, { className: "h-3 w-3" })
283
+ /* @__PURE__ */ k(S, { className: "h-3 w-3" })
279
284
  ]
280
285
  })]
281
286
  })]
282
287
  }),
283
- /* @__PURE__ */ k("p", {
288
+ /* @__PURE__ */ A("p", {
284
289
  className: "text-sm",
285
290
  children: [
286
291
  "Fields in conflict:",
287
292
  " ",
288
- /* @__PURE__ */ O("span", {
293
+ /* @__PURE__ */ k("span", {
289
294
  className: "font-medium",
290
295
  children: n.fields.length ? n.fields.join(", ") : "unknown"
291
296
  })
292
297
  ]
293
298
  }),
294
- /* @__PURE__ */ k("div", {
299
+ /* @__PURE__ */ A("div", {
295
300
  className: "grid grid-cols-1 sm:grid-cols-2 gap-2 text-xs text-muted-foreground",
296
- children: [/* @__PURE__ */ k("span", { children: ["PlanMagnet last updated ", new Date(n.localUpdatedAt).toLocaleString()] }), /* @__PURE__ */ k("span", { children: ["Provider last updated ", new Date(n.remoteUpdatedAt).toLocaleString()] })]
301
+ children: [/* @__PURE__ */ A("span", { children: ["PlanMagnet last updated ", new Date(n.localUpdatedAt).toLocaleString()] }), /* @__PURE__ */ A("span", { children: ["Provider last updated ", new Date(n.remoteUpdatedAt).toLocaleString()] })]
297
302
  }),
298
- n.status === "OPEN" ? /* @__PURE__ */ O(c, { conflictId: n.id }) : /* @__PURE__ */ k("p", {
303
+ n.status === "OPEN" ? /* @__PURE__ */ k(l, { conflictId: n.id }) : /* @__PURE__ */ A("p", {
299
304
  className: "text-xs text-muted-foreground",
300
305
  children: [
301
306
  "Resolved ",
302
307
  n.resolvedAt ? new Date(n.resolvedAt).toLocaleString() : "",
303
- n.resolution ? ` — ${n.resolution === "SOURCE_WINS" ? "kept PlanMagnet" : n.resolution === "TARGET_WINS" ? "took the provider" : "dismissed manually"}` : "",
304
- n.resolvedBy ? /* @__PURE__ */ k(D, { children: [" by ", /* @__PURE__ */ O(t, { id: n.resolvedBy })] }) : null
308
+ n.resolution ? ` — ${V[n.resolution] ?? n.resolution.toLowerCase()}` : "",
309
+ n.resolvedBy ? /* @__PURE__ */ A(O, { children: [" by ", /* @__PURE__ */ k(t, { id: n.resolvedBy })] }) : null
305
310
  ]
306
311
  })
307
312
  ]
308
313
  });
309
314
  }
310
- function q({ syncId: e }) {
311
- let [t, n] = b("OPEN"), [r, i] = b(!1), { data: a, loading: o, error: s, fetchMore: c } = E(W, { variables: {
315
+ function Y({ syncId: e }) {
316
+ let [t, n] = x("OPEN"), [r, i] = x(!1), { data: a, loading: o, error: s, fetchMore: c } = D(K, { variables: {
312
317
  syncId: e,
313
318
  status: t === "ALL" ? void 0 : t,
314
- pagination: { first: V }
319
+ pagination: { first: U }
315
320
  } }), l = a?.planmagnetSyncConflicts, u = l?.items ?? [], d = async () => {
316
321
  let e = l?.pageInfo.endCursor;
317
322
  if (e) {
@@ -319,7 +324,7 @@ function q({ syncId: e }) {
319
324
  try {
320
325
  await c({
321
326
  variables: { pagination: {
322
- first: V,
327
+ first: U,
323
328
  after: e
324
329
  } },
325
330
  updateQuery: (e, { fetchMoreResult: t }) => ({ planmagnetSyncConflicts: {
@@ -332,11 +337,11 @@ function q({ syncId: e }) {
332
337
  }
333
338
  }
334
339
  };
335
- return /* @__PURE__ */ k("div", {
340
+ return /* @__PURE__ */ A("div", {
336
341
  className: "space-y-3",
337
342
  "data-testid": "sync-conflicts",
338
343
  children: [
339
- /* @__PURE__ */ O("div", {
344
+ /* @__PURE__ */ k("div", {
340
345
  className: "flex flex-wrap gap-1",
341
346
  role: "group",
342
347
  "aria-label": "Filter conflicts by status",
@@ -344,7 +349,7 @@ function q({ syncId: e }) {
344
349
  "OPEN",
345
350
  "RESOLVED",
346
351
  "ALL"
347
- ].map((e) => /* @__PURE__ */ O("button", {
352
+ ].map((e) => /* @__PURE__ */ k("button", {
348
353
  type: "button",
349
354
  "aria-pressed": t === e,
350
355
  "data-testid": `sync-conflicts-status-${e}`,
@@ -353,24 +358,24 @@ function q({ syncId: e }) {
353
358
  children: e === "ALL" ? "All" : e.charAt(0) + e.slice(1).toLowerCase()
354
359
  }, e))
355
360
  }),
356
- s && /* @__PURE__ */ k("p", {
361
+ s && /* @__PURE__ */ A("p", {
357
362
  role: "alert",
358
363
  className: "text-sm text-destructive",
359
364
  children: ["Conflicts could not be loaded: ", s.message]
360
365
  }),
361
- o && !a && /* @__PURE__ */ O("p", {
366
+ o && !a && /* @__PURE__ */ k("p", {
362
367
  className: "text-sm text-muted-foreground",
363
368
  children: "Loading conflicts…"
364
369
  }),
365
- l && u.length === 0 && /* @__PURE__ */ O("p", {
370
+ l && u.length === 0 && /* @__PURE__ */ k("p", {
366
371
  className: "py-6 text-center text-sm text-muted-foreground",
367
372
  children: t === "OPEN" ? "No open conflicts." : "No conflicts found."
368
373
  }),
369
- /* @__PURE__ */ O("ul", {
374
+ /* @__PURE__ */ k("ul", {
370
375
  className: "space-y-3",
371
- children: u.map((e) => /* @__PURE__ */ O(K, { conflict: e }, e.id))
376
+ children: u.map((e) => /* @__PURE__ */ k(J, { conflict: e }, e.id))
372
377
  }),
373
- l?.pageInfo.hasNextPage && /* @__PURE__ */ O(j, {
378
+ l?.pageInfo.hasNextPage && /* @__PURE__ */ k(M, {
374
379
  size: "sm",
375
380
  variant: "outline",
376
381
  onClick: () => void d(),
@@ -380,206 +385,206 @@ function q({ syncId: e }) {
380
385
  ]
381
386
  });
382
387
  }
383
- function J() {
384
- let t = r(), c = e(), [l, g] = b(null), { data: T, loading: D, error: j } = E(H, {
388
+ function X() {
389
+ let t = r(), l = e(), [u, _] = x(null), { data: E, loading: O, error: M } = D(W, {
385
390
  variables: { id: t },
386
391
  skip: !t
387
392
  });
388
- if (!t) return /* @__PURE__ */ O("div", {
393
+ if (!t) return /* @__PURE__ */ k("div", {
389
394
  className: "p-6 text-muted-foreground",
390
395
  children: "No sync selected. Open one from Integrations."
391
396
  });
392
- if (D && !T) return /* @__PURE__ */ O("div", {
397
+ if (O && !E) return /* @__PURE__ */ k("div", {
393
398
  className: "flex items-center justify-center p-12",
394
- children: /* @__PURE__ */ O("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
399
+ children: /* @__PURE__ */ k("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
395
400
  });
396
- if (j) return /* @__PURE__ */ k("div", {
401
+ if (M) return /* @__PURE__ */ A("div", {
397
402
  className: "p-6 text-destructive",
398
- children: ["Sync could not be loaded: ", j.message]
403
+ children: ["Sync could not be loaded: ", M.message]
399
404
  });
400
- let B = T?.planmagnetExternalSync;
401
- if (!B) return /* @__PURE__ */ O("div", {
405
+ let V = E?.planmagnetExternalSync;
406
+ if (!V) return /* @__PURE__ */ k("div", {
402
407
  className: "p-6 text-muted-foreground",
403
408
  children: "Sync not found."
404
409
  });
405
- let V = a(B.fieldMapping);
406
- return /* @__PURE__ */ k("div", {
410
+ let H = o(V.fieldMapping);
411
+ return /* @__PURE__ */ A("div", {
407
412
  className: "space-y-6 p-6",
408
413
  "data-testid": "sync-detail",
409
414
  children: [
410
- /* @__PURE__ */ k("div", {
415
+ /* @__PURE__ */ A("div", {
411
416
  className: "flex flex-wrap items-start justify-between gap-4",
412
- children: [/* @__PURE__ */ k("div", {
417
+ children: [/* @__PURE__ */ A("div", {
413
418
  className: "flex items-start gap-3",
414
- children: [/* @__PURE__ */ O(C, { className: "h-6 w-6 text-primary mt-0.5" }), /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ k("div", {
419
+ children: [/* @__PURE__ */ k(w, { className: "h-6 w-6 text-primary mt-0.5" }), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ A("div", {
415
420
  className: "flex flex-wrap items-center gap-2",
416
- children: [/* @__PURE__ */ k("h1", {
421
+ children: [/* @__PURE__ */ A("h1", {
417
422
  className: "text-2xl font-semibold",
418
- children: [o(B.provider), " sync"]
419
- }), /* @__PURE__ */ O(_, { status: B.status })]
420
- }), /* @__PURE__ */ k("p", {
423
+ children: [s(V.provider), " sync"]
424
+ }), /* @__PURE__ */ k(v, { status: V.status })]
425
+ }), /* @__PURE__ */ A("p", {
421
426
  className: "text-sm text-muted-foreground",
422
427
  children: [
423
- B.project ? /* @__PURE__ */ O("button", {
428
+ V.project ? /* @__PURE__ */ k("button", {
424
429
  type: "button",
425
430
  className: "text-primary hover:underline",
426
- onClick: () => c(n("/projects/project-detail-page", B.project?.id)),
427
- children: B.project.name
431
+ onClick: () => l(n("/projects/project-detail-page", V.project?.id)),
432
+ children: V.project.name
428
433
  }) : "Unknown project",
429
434
  " · ",
430
- i(B.direction)
435
+ a(V.direction)
431
436
  ]
432
437
  })] })]
433
- }), /* @__PURE__ */ k("div", {
438
+ }), /* @__PURE__ */ A("div", {
434
439
  className: "flex flex-wrap items-center gap-2",
435
440
  children: [
436
- /* @__PURE__ */ O(p, {
437
- syncId: B.id,
441
+ /* @__PURE__ */ k(m, {
442
+ syncId: V.id,
438
443
  size: "default",
439
- onResult: g
444
+ onResult: _
440
445
  }),
441
- /* @__PURE__ */ O(f, {
442
- syncId: B.id,
443
- status: B.status
446
+ /* @__PURE__ */ k(p, {
447
+ syncId: V.id,
448
+ status: V.status
444
449
  }),
445
- /* @__PURE__ */ O(v, { syncId: B.id }),
446
- /* @__PURE__ */ O(d, { sync: {
447
- id: B.id,
448
- provider: B.provider,
449
- direction: B.direction,
450
- conflictStrategy: B.conflictStrategy,
451
- fieldMapping: B.fieldMapping,
452
- syncFilters: B.syncFilters
450
+ /* @__PURE__ */ k(y, { syncId: V.id }),
451
+ /* @__PURE__ */ k(f, { sync: {
452
+ id: V.id,
453
+ provider: V.provider,
454
+ direction: V.direction,
455
+ conflictStrategy: V.conflictStrategy,
456
+ fieldMapping: V.fieldMapping,
457
+ syncFilters: V.syncFilters
453
458
  } }),
454
- /* @__PURE__ */ O(u, {
455
- syncId: B.id,
456
- label: `${o(B.provider)} sync`,
457
- onDeleted: () => c("/integrations/syncs-page")
459
+ /* @__PURE__ */ k(d, {
460
+ syncId: V.id,
461
+ label: `${s(V.provider)} sync`,
462
+ onDeleted: () => l("/integrations/syncs-page")
458
463
  })
459
464
  ]
460
465
  })]
461
466
  }),
462
- l && /* @__PURE__ */ O(h, { result: l }),
463
- /* @__PURE__ */ k("div", {
467
+ u && /* @__PURE__ */ k(g, { result: u }),
468
+ /* @__PURE__ */ A("div", {
464
469
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
465
- children: [/* @__PURE__ */ k("div", {
470
+ children: [/* @__PURE__ */ A("div", {
466
471
  className: "lg:col-span-2 space-y-6",
467
- children: [/* @__PURE__ */ k(M, { children: [/* @__PURE__ */ O(P, { children: /* @__PURE__ */ O(F, { children: "Health" }) }), /* @__PURE__ */ k(N, {
472
+ children: [/* @__PURE__ */ A(N, { children: [/* @__PURE__ */ k(F, { children: /* @__PURE__ */ k(I, { children: "Health" }) }), /* @__PURE__ */ A(P, {
468
473
  className: "space-y-3",
469
- children: [/* @__PURE__ */ O(m, { health: B.runHealth }), B.lastSyncError && /* @__PURE__ */ O("p", {
474
+ children: [/* @__PURE__ */ k(h, { health: V.runHealth }), V.lastSyncError && /* @__PURE__ */ k("p", {
470
475
  className: "text-sm text-status-error-text",
471
476
  "data-testid": "sync-last-error",
472
- children: /* @__PURE__ */ O(y, {
473
- text: B.lastSyncError,
477
+ children: /* @__PURE__ */ k(b, {
478
+ text: V.lastSyncError,
474
479
  max: 200,
475
480
  className: "text-status-error-text"
476
481
  })
477
482
  })]
478
- })] }), /* @__PURE__ */ k(M, { children: [/* @__PURE__ */ O(P, { children: /* @__PURE__ */ k(F, {
483
+ })] }), /* @__PURE__ */ A(N, { children: [/* @__PURE__ */ k(F, { children: /* @__PURE__ */ A(I, {
479
484
  className: "flex items-center gap-2",
480
- children: [/* @__PURE__ */ O(S, { className: "h-4 w-4 text-primary" }), "History"]
481
- }) }), /* @__PURE__ */ O(N, { children: /* @__PURE__ */ k(I, {
485
+ children: [/* @__PURE__ */ k(C, { className: "h-4 w-4 text-primary" }), "History"]
486
+ }) }), /* @__PURE__ */ k(P, { children: /* @__PURE__ */ A(L, {
482
487
  defaultValue: "runs",
483
488
  children: [
484
- /* @__PURE__ */ k(R, { children: [/* @__PURE__ */ O(z, {
489
+ /* @__PURE__ */ A(z, { children: [/* @__PURE__ */ k(B, {
485
490
  value: "runs",
486
491
  "data-testid": "sync-tab-runs",
487
492
  children: "Run history"
488
- }), /* @__PURE__ */ k(z, {
493
+ }), /* @__PURE__ */ A(B, {
489
494
  value: "conflicts",
490
495
  "data-testid": "sync-tab-conflicts",
491
- children: [/* @__PURE__ */ O(w, { className: "mr-1 h-3.5 w-3.5" }), "Conflicts"]
496
+ children: [/* @__PURE__ */ k(T, { className: "mr-1 h-3.5 w-3.5" }), "Conflicts"]
492
497
  })] }),
493
- /* @__PURE__ */ O(L, {
498
+ /* @__PURE__ */ k(R, {
494
499
  value: "runs",
495
500
  className: "mt-4",
496
- children: /* @__PURE__ */ O(G, { syncId: B.id })
501
+ children: /* @__PURE__ */ k(q, { syncId: V.id })
497
502
  }),
498
- /* @__PURE__ */ O(L, {
503
+ /* @__PURE__ */ k(R, {
499
504
  value: "conflicts",
500
505
  className: "mt-4",
501
- children: /* @__PURE__ */ O(q, { syncId: B.id })
506
+ children: /* @__PURE__ */ k(Y, { syncId: V.id })
502
507
  })
503
508
  ]
504
509
  }) })] })]
505
- }), /* @__PURE__ */ k(M, { children: [/* @__PURE__ */ O(P, { children: /* @__PURE__ */ O(F, { children: "Details" }) }), /* @__PURE__ */ k(N, {
510
+ }), /* @__PURE__ */ A(N, { children: [/* @__PURE__ */ k(F, { children: /* @__PURE__ */ k(I, { children: "Details" }) }), /* @__PURE__ */ A(P, {
506
511
  className: "space-y-3 text-sm",
507
512
  children: [
508
- /* @__PURE__ */ k("div", {
513
+ /* @__PURE__ */ A("div", {
509
514
  className: "flex justify-between gap-2",
510
- children: [/* @__PURE__ */ O("span", {
515
+ children: [/* @__PURE__ */ k("span", {
511
516
  className: "text-muted-foreground",
512
517
  children: "External project"
513
- }), B.externalProjectUrl ? /* @__PURE__ */ k("a", {
514
- href: B.externalProjectUrl,
518
+ }), V.externalProjectUrl ? /* @__PURE__ */ A("a", {
519
+ href: V.externalProjectUrl,
515
520
  target: "_blank",
516
521
  rel: "noreferrer noopener",
517
522
  className: "inline-flex items-center gap-1 font-medium text-primary hover:underline",
518
- children: [B.externalProjectId, /* @__PURE__ */ O(x, { className: "h-3 w-3" })]
519
- }) : /* @__PURE__ */ O("span", {
523
+ children: [V.externalProjectId, /* @__PURE__ */ k(S, { className: "h-3 w-3" })]
524
+ }) : /* @__PURE__ */ k("span", {
520
525
  className: "font-medium",
521
- children: B.externalProjectId
526
+ children: V.externalProjectId
522
527
  })]
523
528
  }),
524
- /* @__PURE__ */ k("div", {
529
+ /* @__PURE__ */ A("div", {
525
530
  className: "flex justify-between gap-2",
526
- children: [/* @__PURE__ */ O("span", {
531
+ children: [/* @__PURE__ */ k("span", {
527
532
  className: "text-muted-foreground",
528
533
  children: "Conflict strategy"
529
- }), /* @__PURE__ */ O(A, {
534
+ }), /* @__PURE__ */ k(j, {
530
535
  variant: "outline",
531
536
  className: "text-xs",
532
- children: B.conflictStrategy === "SOURCE_WINS" ? "PlanMagnet wins" : B.conflictStrategy === "TARGET_WINS" ? "Provider wins" : "Manual"
537
+ children: i(V.conflictStrategy)
533
538
  })]
534
539
  }),
535
- /* @__PURE__ */ O("p", {
540
+ /* @__PURE__ */ k("p", {
536
541
  className: "text-xs text-muted-foreground",
537
- children: s[B.conflictStrategy]
542
+ children: c[V.conflictStrategy]
538
543
  }),
539
- B.provider === "GITHUB" && /* @__PURE__ */ k("div", { children: [
540
- /* @__PURE__ */ O("p", {
544
+ V.provider === "GITHUB" && /* @__PURE__ */ A("div", { children: [
545
+ /* @__PURE__ */ k("p", {
541
546
  className: "text-muted-foreground",
542
547
  children: "Field mapping"
543
548
  }),
544
- /* @__PURE__ */ k("p", {
549
+ /* @__PURE__ */ A("p", {
545
550
  className: "font-medium",
546
- children: ["Priority label: ", /* @__PURE__ */ O("code", { children: V.priority || "priority:" })]
551
+ children: ["Priority label: ", /* @__PURE__ */ k("code", { children: H.priority || "priority:" })]
547
552
  }),
548
- /* @__PURE__ */ k("p", {
553
+ /* @__PURE__ */ A("p", {
549
554
  className: "font-medium",
550
- children: ["Due-date label: ", /* @__PURE__ */ O("code", { children: V.dueDate || "due:" })]
555
+ children: ["Due-date label: ", /* @__PURE__ */ k("code", { children: H.dueDate || "due:" })]
551
556
  })
552
557
  ] }),
553
- /* @__PURE__ */ k("div", {
558
+ /* @__PURE__ */ A("div", {
554
559
  className: "flex justify-between",
555
- children: [/* @__PURE__ */ O("span", {
560
+ children: [/* @__PURE__ */ k("span", {
556
561
  className: "text-muted-foreground",
557
562
  children: "Items synced"
558
- }), /* @__PURE__ */ O("span", {
563
+ }), /* @__PURE__ */ k("span", {
559
564
  className: "font-medium",
560
- children: B.totalItemsSynced
565
+ children: V.totalItemsSynced
561
566
  })]
562
567
  }),
563
- /* @__PURE__ */ k("div", {
568
+ /* @__PURE__ */ A("div", {
564
569
  className: "flex justify-between",
565
- children: [/* @__PURE__ */ O("span", {
570
+ children: [/* @__PURE__ */ k("span", {
566
571
  className: "text-muted-foreground",
567
572
  children: "Last synced"
568
- }), /* @__PURE__ */ O("span", { children: B.lastSyncedAt ? new Date(B.lastSyncedAt).toLocaleString() : "Never" })]
573
+ }), /* @__PURE__ */ k("span", { children: V.lastSyncedAt ? new Date(V.lastSyncedAt).toLocaleString() : "Never" })]
569
574
  }),
570
- /* @__PURE__ */ k("div", {
575
+ /* @__PURE__ */ A("div", {
571
576
  className: "flex justify-between",
572
- children: [/* @__PURE__ */ O("span", {
577
+ children: [/* @__PURE__ */ k("span", {
573
578
  className: "text-muted-foreground",
574
579
  children: "Created"
575
- }), /* @__PURE__ */ O("span", { children: new Date(B.createdAt).toLocaleDateString() })]
580
+ }), /* @__PURE__ */ k("span", { children: new Date(V.createdAt).toLocaleDateString() })]
576
581
  }),
577
- /* @__PURE__ */ k("div", {
582
+ /* @__PURE__ */ A("div", {
578
583
  className: "flex justify-between",
579
- children: [/* @__PURE__ */ O("span", {
584
+ children: [/* @__PURE__ */ k("span", {
580
585
  className: "text-muted-foreground",
581
586
  children: "Updated"
582
- }), /* @__PURE__ */ O("span", { children: new Date(B.updatedAt).toLocaleDateString() })]
587
+ }), /* @__PURE__ */ k("span", { children: new Date(V.updatedAt).toLocaleDateString() })]
583
588
  })
584
589
  ]
585
590
  })] })]
@@ -588,6 +593,6 @@ function J() {
588
593
  });
589
594
  }
590
595
  //#endregion
591
- export { J as IntegrationsSyncDetailPagePage };
596
+ export { X as IntegrationsSyncDetailPagePage };
592
597
 
593
598
  //# sourceMappingURL=IntegrationsSyncDetailPagePage.js.map