@burdenoff/microfe-planmagnet 2026.1001.1 → 2026.1001.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  2. package/dist/planmagnet/PlanMagnetRoot.js +163 -150
  3. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  4. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  5. package/dist/planmagnet/PlanMagnetRoutes.js +124 -108
  6. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  7. package/dist/planmagnet/comments/CommentThread.js +36 -36
  8. package/dist/planmagnet/comments/RoadmapComments.js +21 -21
  9. package/dist/planmagnet/controls/AutomationRuleControls.js +24 -24
  10. package/dist/planmagnet/controls/FeatureControls.js +60 -60
  11. package/dist/planmagnet/controls/MilestoneControls.d.ts +2 -0
  12. package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -1
  13. package/dist/planmagnet/controls/MilestoneControls.js +89 -72
  14. package/dist/planmagnet/controls/MilestoneControls.js.map +1 -1
  15. package/dist/planmagnet/controls/SyncControls.js +59 -59
  16. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +15 -15
  17. package/dist/planmagnet/docs/DocSuggestionsPanel.js +12 -12
  18. package/dist/planmagnet/docs/DocVersionCompare.js +3 -3
  19. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts +12 -0
  20. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts.map +1 -0
  21. package/dist/planmagnet/forecast/DeliveryForecastCard.js +208 -0
  22. package/dist/planmagnet/forecast/DeliveryForecastCard.js.map +1 -0
  23. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts +5 -0
  24. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts.map +1 -0
  25. package/dist/planmagnet/forecast/ProjectOutlookCard.js +190 -0
  26. package/dist/planmagnet/forecast/ProjectOutlookCard.js.map +1 -0
  27. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts +5 -0
  28. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts.map +1 -0
  29. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js +99 -0
  30. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js.map +1 -0
  31. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts +8 -0
  32. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts.map +1 -0
  33. package/dist/planmagnet/forecast/ResourceForecastCard.js +185 -0
  34. package/dist/planmagnet/forecast/ResourceForecastCard.js.map +1 -0
  35. package/dist/planmagnet/forecast/riskFlags.d.ts +35 -0
  36. package/dist/planmagnet/forecast/riskFlags.d.ts.map +1 -0
  37. package/dist/planmagnet/forecast/riskFlags.js +37 -0
  38. package/dist/planmagnet/forecast/riskFlags.js.map +1 -0
  39. package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts +17 -0
  40. package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts.map +1 -0
  41. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js +218 -0
  42. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js.map +1 -0
  43. package/dist/planmagnet/meetings/MeetingsCard.d.ts +7 -0
  44. package/dist/planmagnet/meetings/MeetingsCard.d.ts.map +1 -0
  45. package/dist/planmagnet/meetings/MeetingsCard.js +108 -0
  46. package/dist/planmagnet/meetings/MeetingsCard.js.map +1 -0
  47. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts +9 -0
  48. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts.map +1 -0
  49. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js +232 -0
  50. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js.map +1 -0
  51. package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts +19 -0
  52. package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts.map +1 -0
  53. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js +226 -0
  54. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js.map +1 -0
  55. package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts +14 -0
  56. package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts.map +1 -0
  57. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js +81 -0
  58. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js.map +1 -0
  59. package/dist/planmagnet/meetings/meetingActions.d.ts +57 -0
  60. package/dist/planmagnet/meetings/meetingActions.d.ts.map +1 -0
  61. package/dist/planmagnet/meetings/meetingActions.js +51 -0
  62. package/dist/planmagnet/meetings/meetingActions.js.map +1 -0
  63. package/dist/planmagnet/meetings/meetingGraphql.d.ts +29 -0
  64. package/dist/planmagnet/meetings/meetingGraphql.d.ts.map +1 -0
  65. package/dist/planmagnet/meetings/meetingGraphql.js +166 -0
  66. package/dist/planmagnet/meetings/meetingGraphql.js.map +1 -0
  67. package/dist/planmagnet/meetings/meetingModel.d.ts +74 -0
  68. package/dist/planmagnet/meetings/meetingModel.d.ts.map +1 -0
  69. package/dist/planmagnet/meetings/meetingModel.js +88 -0
  70. package/dist/planmagnet/meetings/meetingModel.js.map +1 -0
  71. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
  72. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +216 -182
  73. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  74. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js +11 -11
  75. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js +4 -4
  76. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +163 -163
  77. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
  78. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js +165 -165
  79. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js.map +1 -1
  80. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts +2 -0
  81. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts.map +1 -0
  82. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js +197 -0
  83. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js.map +1 -0
  84. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts +2 -0
  85. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts.map +1 -0
  86. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js +173 -0
  87. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js.map +1 -0
  88. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts +2 -0
  89. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts.map +1 -0
  90. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js +234 -0
  91. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js.map +1 -0
  92. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +1 -1
  93. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +73 -52
  94. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +1 -1
  95. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
  96. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +205 -190
  97. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
  98. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
  99. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +211 -182
  100. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
  101. package/dist/planmagnet/pages/ReportsReportPagePage.js +22 -22
  102. package/dist/planmagnet/pages/ReportsReportPagePage.js.map +1 -1
  103. package/dist/planmagnet/pages/ReportsReportsPagePage.js +21 -21
  104. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +1 -1
  105. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js +88 -83
  106. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +1 -1
  107. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.d.ts.map +1 -1
  108. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js +139 -112
  109. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js.map +1 -1
  110. package/dist/planmagnet/pages/analytics/StatusFlowCard.js +21 -21
  111. package/dist/planmagnet/product/ProductControls.js +91 -91
  112. package/dist/planmagnet/reports/SchedulesPanel.js +33 -33
  113. package/dist/planmagnet/reports/ShareDialog.js +76 -76
  114. package/dist/planmagnet/reports/ShareDialog.js.map +1 -1
  115. package/dist/planmagnet/reports/sharedReportRoute.d.ts +3 -2
  116. package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +1 -1
  117. package/dist/planmagnet/reports/sharedReportRoute.js.map +1 -1
  118. package/dist/planmagnet/roadmaps/RoadmapControls.js +60 -60
  119. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js +30 -30
  120. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js +21 -21
  121. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js +22 -22
  122. package/package.json +1 -1
@@ -1,21 +1,21 @@
1
1
  import { usePlanMagnetNavigate as e } from "../providers/PlanMagnetProvider.js";
2
- import { throwOnError as t } from "../utils/mutationResult.js";
3
- import { ErrorLine as n } from "../controls/ConfirmButton.js";
4
- import { enumLabel as r } from "../controls/WorkItemControls.js";
5
- import { isForbidden as i, mutationErrorMessage as a } from "../utils/graphqlErrors.js";
2
+ import { isForbidden as t, mutationErrorMessage as n } from "../utils/graphqlErrors.js";
3
+ import { throwOnError as r } from "../utils/mutationResult.js";
4
+ import { ErrorLine as i } from "../controls/ConfirmButton.js";
5
+ import { enumLabel as a } from "../controls/WorkItemControls.js";
6
6
  import { detailPath as ee } from "../utils/rowNavigation.js";
7
7
  import { ProjectSelect as te } from "../controls/Pickers.js";
8
- import { useSyncProviderCapabilities as o } from "../integrations/useSyncProviderCapabilities.js";
9
- import { CONFLICT_RESOLUTIONS as s, GITHUB_FIELD_MAPPING_DEFAULTS as c, SYNC_DIRECTIONS as ne, directionLabel as l, directionSupported as re, isValidGithubOwner as ie, isValidGithubRepo as ae, providerIsLive as u, providerLabel as d } from "../integrations/syncTypes.js";
10
- import { CONFLICT_STRATEGY_EXPLANATION as oe, RunNowButton as se, SyncRunResultSummary as ce, TestConnectionButton as f } from "../controls/SyncControls.js";
8
+ import { useSyncProviderCapabilities as ne } from "../integrations/useSyncProviderCapabilities.js";
9
+ import { CONFLICT_RESOLUTIONS as re, GITHUB_FIELD_MAPPING_DEFAULTS as o, SYNC_DIRECTIONS as ie, directionLabel as s, directionSupported as ae, isValidGithubOwner as oe, isValidGithubRepo as c, providerIsLive as l, providerLabel as u } from "../integrations/syncTypes.js";
10
+ import { CONFLICT_STRATEGY_EXPLANATION as d, RunNowButton as se, SyncRunResultSummary as f, TestConnectionButton as ce } from "../controls/SyncControls.js";
11
11
  import { useState as p } from "react";
12
- import { ArrowLeft as le, CheckCircle2 as ue, Github as m, Loader2 as de, Plug as h, ShieldQuestion as fe } from "lucide-react";
13
- import { gql as g } from "@apollo/client";
14
- import { useMutation as pe } from "@apollo/client/react";
15
- import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
16
- import { Button as b, Card as x, CardContent as S, CardHeader as C, CardTitle as w, Checkbox as me, Input as T } from "@burdenoff/fe-libs/ui";
12
+ import { ArrowLeft as le, CheckCircle2 as m, Github as h, Loader2 as ue, Plug as g, ShieldQuestion as de } from "lucide-react";
13
+ import { gql as _ } from "@apollo/client";
14
+ import { useMutation as fe } from "@apollo/client/react";
15
+ import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
16
+ import { Button as x, Card as S, CardContent as C, CardHeader as w, CardTitle as T, Checkbox as pe, Input as E } from "@burdenoff/fe-libs/ui";
17
17
  //#region src/planmagnet/pages/IntegrationsNewSyncPagePage.tsx
18
- var E = "text-sm font-medium", he = g`
18
+ var D = "text-sm font-medium", me = _`
19
19
  mutation NewSyncCreate($input: PlanmagnetCreateExternalSyncInput!) {
20
20
  planmagnetCreateExternalSync(input: $input) {
21
21
  id
@@ -28,29 +28,29 @@ var E = "text-sm font-medium", he = g`
28
28
  }
29
29
  }
30
30
  `;
31
- function ge({ capabilities: e, capabilitiesLoading: t, provider: n, onSelect: r }) {
32
- return /* @__PURE__ */ y(x, {
31
+ function he({ capabilities: e, capabilitiesLoading: t, provider: n, onSelect: r }) {
32
+ return /* @__PURE__ */ b(S, {
33
33
  "data-testid": "sync-wizard-step",
34
- children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(w, { children: "1. Provider" }) }), /* @__PURE__ */ y(S, {
34
+ children: [/* @__PURE__ */ y(w, { children: /* @__PURE__ */ y(T, { children: "1. Provider" }) }), /* @__PURE__ */ b(C, {
35
35
  className: "space-y-2",
36
- children: [t && /* @__PURE__ */ v("p", {
36
+ children: [t && /* @__PURE__ */ y("p", {
37
37
  className: "text-sm text-muted-foreground",
38
38
  children: "Loading providers…"
39
- }), /* @__PURE__ */ v("div", {
39
+ }), /* @__PURE__ */ y("div", {
40
40
  className: "grid grid-cols-1 sm:grid-cols-2 gap-2",
41
41
  children: e.map((e) => {
42
- let t = u(e), i = n === e.provider;
43
- return /* @__PURE__ */ y("button", {
42
+ let t = l(e), i = n === e.provider;
43
+ return /* @__PURE__ */ b("button", {
44
44
  type: "button",
45
45
  disabled: !t,
46
46
  "aria-pressed": i,
47
47
  "data-testid": `sync-wizard-provider-${e.provider}`,
48
48
  onClick: () => t && r(e.provider),
49
49
  className: `flex items-start gap-2 rounded-md border p-3 text-left text-sm transition-colors ${i ? "border-primary bg-primary/5" : "border-input"} ${t ? "hover:bg-muted" : "cursor-not-allowed opacity-50"}`,
50
- children: [e.provider === "GITHUB" ? /* @__PURE__ */ v(m, { className: "mt-0.5 h-4 w-4 shrink-0" }) : /* @__PURE__ */ v(h, { className: "mt-0.5 h-4 w-4 shrink-0" }), /* @__PURE__ */ y("span", { children: [/* @__PURE__ */ v("span", {
50
+ children: [e.provider === "GITHUB" ? /* @__PURE__ */ y(h, { className: "mt-0.5 h-4 w-4 shrink-0" }) : /* @__PURE__ */ y(g, { className: "mt-0.5 h-4 w-4 shrink-0" }), /* @__PURE__ */ b("span", { children: [/* @__PURE__ */ y("span", {
51
51
  className: "block font-medium",
52
- children: d(e.provider)
53
- }), /* @__PURE__ */ v("span", {
52
+ children: u(e.provider)
53
+ }), /* @__PURE__ */ y("span", {
54
54
  className: "block text-xs text-muted-foreground",
55
55
  children: t ? [
56
56
  e.supportsImport && "inbound",
@@ -64,339 +64,339 @@ function ge({ capabilities: e, capabilitiesLoading: t, provider: n, onSelect: r
64
64
  })]
65
65
  });
66
66
  }
67
- function D() {
68
- let u = e(), { capabilities: m, loading: h } = o(), [g, D] = p(""), [O, _e] = p(""), [k, A] = p(""), [j, M] = p(""), [N, P] = p(""), [F, I] = p(""), [L, ve] = p("MANUAL"), [R, ye] = p(""), [z, be] = p(""), [B, xe] = p(!0), [V, H] = p(null), [U, Se] = p(null), [W, Ce] = p(null), [G, K] = pe(he, { refetchQueries: ["SyncsList"] }), q = m.find((e) => e.provider === g), J = g === "GITHUB", Y = q ? ne.filter((e) => re(q, e)) : [], X = k.trim() !== "" && ie(k), Z = j.trim() !== "" && ae(j), Q = !!g && !!O && (!J || X && Z) && !!N, $ = Q && F.trim() !== "", we = () => {
67
+ function O() {
68
+ let l = e(), { capabilities: h, loading: g } = ne(), [_, O] = p(""), [k, ge] = p(""), [A, j] = p(""), [M, N] = p(""), [P, F] = p(""), [I, L] = p(""), [R, _e] = p("MANUAL"), [z, ve] = p(""), [B, ye] = p(""), [V, be] = p(!0), [H, U] = p(null), [W, xe] = p(null), [G, Se] = p(null), [Ce, K] = fe(me, { refetchQueries: ["SyncsList"] }), q = h.find((e) => e.provider === _), J = _ === "GITHUB", Y = q ? ie.filter((e) => ae(q, e)) : [], X = A.trim() !== "" && oe(A), Z = M.trim() !== "" && c(M), Q = !!_ && !!k && (!J || X && Z) && !!P, $ = Q && I.trim() !== "", we = () => {
69
69
  let e = {};
70
- return R.trim() && (e.priority = R.trim()), z.trim() && (e.dueDate = z.trim()), {
71
- projectId: O,
72
- provider: g,
73
- direction: N,
74
- externalProjectId: J ? `${k.trim()}/${j.trim()}` : "",
75
- externalProjectUrl: J ? `https://github.com/${k.trim()}/${j.trim()}` : void 0,
70
+ return z.trim() && (e.priority = z.trim()), B.trim() && (e.dueDate = B.trim()), {
71
+ projectId: k,
72
+ provider: _,
73
+ direction: P,
74
+ externalProjectId: J ? `${A.trim()}/${M.trim()}` : "",
75
+ externalProjectUrl: J ? `https://github.com/${A.trim()}/${M.trim()}` : void 0,
76
76
  connectionConfig: J ? {
77
- token: F.trim(),
78
- owner: k.trim(),
79
- repo: j.trim()
77
+ token: I.trim(),
78
+ owner: A.trim(),
79
+ repo: M.trim()
80
80
  } : {},
81
- conflictStrategy: L,
81
+ conflictStrategy: R,
82
82
  ...Object.keys(e).length > 0 ? { fieldMapping: e } : {},
83
- testConnection: B
83
+ testConnection: V
84
84
  };
85
85
  }, Te = async () => {
86
- if (H(null), !$) {
87
- H("Fill in the project, external project and credentials above before creating the sync.");
86
+ if (U(null), !$) {
87
+ U("Fill in the project, external project and credentials above before creating the sync.");
88
88
  return;
89
89
  }
90
90
  try {
91
- let e = await t(G({ variables: { input: we() } }));
92
- e.data && Se(e.data.planmagnetCreateExternalSync);
91
+ let e = await r(Ce({ variables: { input: we() } }));
92
+ e.data && xe(e.data.planmagnetCreateExternalSync);
93
93
  } catch (e) {
94
- H(i(e) ? "Your role can view integrations but not set them up." : a(e, "The sync could not be created."));
94
+ U(t(e) ? "Your role can view integrations but not set them up." : n(e, "The sync could not be created."));
95
95
  }
96
96
  };
97
- return U ? /* @__PURE__ */ v("div", {
97
+ return W ? /* @__PURE__ */ y("div", {
98
98
  className: "space-y-6 p-6 max-w-2xl",
99
- children: /* @__PURE__ */ y(x, {
99
+ children: /* @__PURE__ */ b(S, {
100
100
  "data-testid": "sync-wizard-created",
101
- children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ y(w, {
101
+ children: [/* @__PURE__ */ y(w, { children: /* @__PURE__ */ b(T, {
102
102
  className: "flex items-center gap-2",
103
- children: [/* @__PURE__ */ v(ue, { className: "h-5 w-5 text-status-success-text" }), "Sync created"]
104
- }) }), /* @__PURE__ */ y(S, {
103
+ children: [/* @__PURE__ */ y(m, { className: "h-5 w-5 text-status-success-text" }), "Sync created"]
104
+ }) }), /* @__PURE__ */ b(C, {
105
105
  className: "space-y-4",
106
106
  children: [
107
- /* @__PURE__ */ y("p", {
107
+ /* @__PURE__ */ b("p", {
108
108
  className: "text-sm text-muted-foreground",
109
109
  children: [
110
- d(U.provider),
110
+ u(W.provider),
111
111
  " sync for ",
112
- U.project?.name ?? "the project",
112
+ W.project?.name ?? "the project",
113
113
  " is set up and idle. Test the connection and run the first sync now, or do either later from the sync's own page."
114
114
  ]
115
115
  }),
116
- /* @__PURE__ */ y("div", {
116
+ /* @__PURE__ */ b("div", {
117
117
  className: "flex flex-wrap items-center gap-3",
118
- children: [/* @__PURE__ */ v(f, { syncId: U.id }), /* @__PURE__ */ v(se, {
119
- syncId: U.id,
120
- onResult: Ce
118
+ children: [/* @__PURE__ */ y(ce, { syncId: W.id }), /* @__PURE__ */ y(se, {
119
+ syncId: W.id,
120
+ onResult: Se
121
121
  })]
122
122
  }),
123
- W && /* @__PURE__ */ v(ce, { result: W }),
124
- /* @__PURE__ */ v(b, {
125
- onClick: () => u(ee("/integrations/sync-detail-page", U.id)),
123
+ G && /* @__PURE__ */ y(f, { result: G }),
124
+ /* @__PURE__ */ y(x, {
125
+ onClick: () => l(ee("/integrations/sync-detail-page", W.id)),
126
126
  "data-testid": "sync-wizard-view",
127
127
  children: "View sync"
128
128
  })
129
129
  ]
130
130
  })]
131
131
  })
132
- }) : /* @__PURE__ */ y("div", {
132
+ }) : /* @__PURE__ */ b("div", {
133
133
  className: "space-y-6 p-6 max-w-2xl",
134
134
  children: [
135
- /* @__PURE__ */ y("div", {
135
+ /* @__PURE__ */ b("div", {
136
136
  className: "flex items-start gap-3",
137
- children: [/* @__PURE__ */ v(b, {
137
+ children: [/* @__PURE__ */ y(x, {
138
138
  variant: "ghost",
139
139
  size: "icon",
140
140
  "aria-label": "Back to Integrations",
141
- onClick: () => u("/integrations/syncs-page"),
142
- children: /* @__PURE__ */ v(le, { className: "h-4 w-4" })
143
- }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
141
+ onClick: () => l("/integrations/syncs-page"),
142
+ children: /* @__PURE__ */ y(le, { className: "h-4 w-4" })
143
+ }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h1", {
144
144
  className: "text-2xl font-semibold",
145
145
  children: "Set up a sync"
146
- }), /* @__PURE__ */ v("p", {
146
+ }), /* @__PURE__ */ y("p", {
147
147
  className: "text-sm text-muted-foreground",
148
148
  children: "Connect a PlanMagnet project to an external issue tracker so work items stay in step on both sides."
149
149
  })] })]
150
150
  }),
151
- /* @__PURE__ */ v(ge, {
152
- capabilities: m,
153
- capabilitiesLoading: h,
154
- provider: g,
151
+ /* @__PURE__ */ y(he, {
152
+ capabilities: h,
153
+ capabilitiesLoading: g,
154
+ provider: _,
155
155
  onSelect: (e) => {
156
- D(e), P(""), A(""), M(""), I("");
156
+ O(e), F(""), j(""), N(""), L("");
157
157
  }
158
158
  }),
159
- g && /* @__PURE__ */ y(x, {
159
+ _ && /* @__PURE__ */ b(S, {
160
160
  "data-testid": "sync-wizard-step",
161
- children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(w, { children: "2. Project, external project and direction" }) }), /* @__PURE__ */ y(S, {
161
+ children: [/* @__PURE__ */ y(w, { children: /* @__PURE__ */ y(T, { children: "2. Project, external project and direction" }) }), /* @__PURE__ */ b(C, {
162
162
  className: "space-y-4",
163
163
  children: [
164
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
164
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("label", {
165
165
  htmlFor: "sync-wizard-project",
166
- className: E,
166
+ className: D,
167
167
  children: "PlanMagnet project"
168
- }), /* @__PURE__ */ v("div", {
168
+ }), /* @__PURE__ */ y("div", {
169
169
  className: "mt-1",
170
- children: /* @__PURE__ */ v(te, {
170
+ children: /* @__PURE__ */ y(te, {
171
171
  id: "sync-wizard-project",
172
- value: O,
172
+ value: k,
173
173
  noneLabel: "Choose a project",
174
- onChange: _e
174
+ onChange: ge
175
175
  })
176
176
  })] }),
177
- J && /* @__PURE__ */ y("div", {
177
+ J && /* @__PURE__ */ b("div", {
178
178
  className: "grid grid-cols-1 sm:grid-cols-2 gap-3",
179
- children: [/* @__PURE__ */ y("div", { children: [
180
- /* @__PURE__ */ v("label", {
179
+ children: [/* @__PURE__ */ b("div", { children: [
180
+ /* @__PURE__ */ y("label", {
181
181
  htmlFor: "sync-wizard-owner",
182
- className: E,
182
+ className: D,
183
183
  children: "GitHub owner (user or org)"
184
184
  }),
185
- /* @__PURE__ */ v(T, {
185
+ /* @__PURE__ */ y(E, {
186
186
  id: "sync-wizard-owner",
187
187
  className: "mt-1",
188
188
  placeholder: "e.g. algoshred",
189
- value: k,
189
+ value: A,
190
190
  "data-testid": "sync-wizard-owner",
191
- onChange: (e) => A(e.target.value)
191
+ onChange: (e) => j(e.target.value)
192
192
  }),
193
- k.trim() !== "" && !X && /* @__PURE__ */ v(n, { message: "Not a valid GitHub owner name." })
194
- ] }), /* @__PURE__ */ y("div", { children: [
195
- /* @__PURE__ */ v("label", {
193
+ A.trim() !== "" && !X && /* @__PURE__ */ y(i, { message: "Not a valid GitHub owner name." })
194
+ ] }), /* @__PURE__ */ b("div", { children: [
195
+ /* @__PURE__ */ y("label", {
196
196
  htmlFor: "sync-wizard-repo",
197
- className: E,
197
+ className: D,
198
198
  children: "Repository"
199
199
  }),
200
- /* @__PURE__ */ v(T, {
200
+ /* @__PURE__ */ y(E, {
201
201
  id: "sync-wizard-repo",
202
202
  className: "mt-1",
203
203
  placeholder: "e.g. wspace-planmagnet-svc",
204
- value: j,
204
+ value: M,
205
205
  "data-testid": "sync-wizard-repo",
206
- onChange: (e) => M(e.target.value)
206
+ onChange: (e) => N(e.target.value)
207
207
  }),
208
- j.trim() !== "" && !Z && /* @__PURE__ */ v(n, { message: "Not a valid repository name." })
208
+ M.trim() !== "" && !Z && /* @__PURE__ */ y(i, { message: "Not a valid repository name." })
209
209
  ] })]
210
210
  }),
211
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("span", {
212
- className: E,
211
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("span", {
212
+ className: D,
213
213
  children: "Direction"
214
- }), Y.length === 0 ? /* @__PURE__ */ v("p", {
214
+ }), Y.length === 0 ? /* @__PURE__ */ y("p", {
215
215
  className: "mt-1 text-sm text-muted-foreground",
216
216
  children: "This provider offers no live sync direction yet."
217
- }) : /* @__PURE__ */ v("div", {
217
+ }) : /* @__PURE__ */ y("div", {
218
218
  className: "mt-1 flex flex-col gap-1",
219
219
  role: "radiogroup",
220
220
  "aria-label": "Direction",
221
- children: Y.map((e) => /* @__PURE__ */ y("label", {
221
+ children: Y.map((e) => /* @__PURE__ */ b("label", {
222
222
  className: "flex items-center gap-2 text-sm",
223
- children: [/* @__PURE__ */ v("input", {
223
+ children: [/* @__PURE__ */ y("input", {
224
224
  type: "radio",
225
225
  name: "sync-wizard-direction",
226
- checked: N === e,
226
+ checked: P === e,
227
227
  "data-testid": `sync-wizard-direction-${e}`,
228
- onChange: () => P(e)
229
- }), l(e)]
228
+ onChange: () => F(e)
229
+ }), s(e)]
230
230
  }, e))
231
231
  })] })
232
232
  ]
233
233
  })]
234
234
  }),
235
- Q && /* @__PURE__ */ y(x, {
235
+ Q && /* @__PURE__ */ b(S, {
236
236
  "data-testid": "sync-wizard-step",
237
- children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(w, { children: "3. Credentials" }) }), /* @__PURE__ */ v(S, {
237
+ children: [/* @__PURE__ */ y(w, { children: /* @__PURE__ */ y(T, { children: "3. Credentials" }) }), /* @__PURE__ */ y(C, {
238
238
  className: "space-y-3",
239
- children: J && /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ y("p", {
239
+ children: J && /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ b("p", {
240
240
  className: "text-sm text-muted-foreground",
241
241
  children: [
242
242
  "Use a GitHub fine-grained personal access token scoped to",
243
243
  " ",
244
- /* @__PURE__ */ y("strong", { children: [
245
- k,
244
+ /* @__PURE__ */ b("strong", { children: [
245
+ A,
246
246
  "/",
247
- j
247
+ M
248
248
  ] }),
249
249
  ", with Issues set to ",
250
- /* @__PURE__ */ v("strong", { children: "Read and write" }),
250
+ /* @__PURE__ */ y("strong", { children: "Read and write" }),
251
251
  " — no other repository permission is needed."
252
252
  ]
253
- }), /* @__PURE__ */ y("div", {
253
+ }), /* @__PURE__ */ b("div", {
254
254
  className: "max-w-sm",
255
- children: [/* @__PURE__ */ v("label", {
255
+ children: [/* @__PURE__ */ y("label", {
256
256
  htmlFor: "sync-wizard-token",
257
- className: E,
257
+ className: D,
258
258
  children: "Personal access token"
259
- }), /* @__PURE__ */ v(T, {
259
+ }), /* @__PURE__ */ y(E, {
260
260
  id: "sync-wizard-token",
261
261
  type: "password",
262
262
  autoComplete: "off",
263
263
  className: "mt-1",
264
- value: F,
264
+ value: I,
265
265
  "data-testid": "sync-wizard-token",
266
- onChange: (e) => I(e.target.value)
266
+ onChange: (e) => L(e.target.value)
267
267
  })]
268
268
  })] })
269
269
  })]
270
270
  }),
271
- $ && /* @__PURE__ */ y(_, { children: [
272
- /* @__PURE__ */ y(x, {
271
+ $ && /* @__PURE__ */ b(v, { children: [
272
+ /* @__PURE__ */ b(S, {
273
273
  "data-testid": "sync-wizard-step",
274
- children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(w, { children: "4. Conflict strategy" }) }), /* @__PURE__ */ y(S, {
274
+ children: [/* @__PURE__ */ y(w, { children: /* @__PURE__ */ y(T, { children: "4. Conflict strategy" }) }), /* @__PURE__ */ b(C, {
275
275
  className: "space-y-2",
276
- children: [/* @__PURE__ */ v("p", {
276
+ children: [/* @__PURE__ */ y("p", {
277
277
  className: "text-sm text-muted-foreground",
278
278
  children: "What happens when the same item changed on both sides since the last sync."
279
- }), /* @__PURE__ */ v("div", {
279
+ }), /* @__PURE__ */ y("div", {
280
280
  className: "flex flex-col gap-1",
281
281
  role: "radiogroup",
282
282
  "aria-label": "Conflict strategy",
283
- children: s.map((e) => /* @__PURE__ */ y("label", {
283
+ children: re.map((e) => /* @__PURE__ */ b("label", {
284
284
  className: "flex items-start gap-2 text-sm",
285
- children: [/* @__PURE__ */ v("input", {
285
+ children: [/* @__PURE__ */ y("input", {
286
286
  type: "radio",
287
287
  name: "sync-wizard-strategy",
288
288
  className: "mt-0.5",
289
- checked: L === e,
289
+ checked: R === e,
290
290
  "data-testid": `sync-wizard-strategy-${e}`,
291
- onChange: () => ve(e)
292
- }), /* @__PURE__ */ y("span", { children: [/* @__PURE__ */ v("span", {
291
+ onChange: () => _e(e)
292
+ }), /* @__PURE__ */ b("span", { children: [/* @__PURE__ */ y("span", {
293
293
  className: "font-medium",
294
- children: r(e)
295
- }), /* @__PURE__ */ v("span", {
294
+ children: a(e)
295
+ }), /* @__PURE__ */ y("span", {
296
296
  className: "block text-xs text-muted-foreground",
297
- children: oe[e]
297
+ children: d[e]
298
298
  })] })]
299
299
  }, e))
300
300
  })]
301
301
  })]
302
302
  }),
303
- J && /* @__PURE__ */ y(x, {
303
+ J && /* @__PURE__ */ b(S, {
304
304
  "data-testid": "sync-wizard-step",
305
- children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(w, { children: "5. Field mapping (optional)" }) }), /* @__PURE__ */ y(S, {
305
+ children: [/* @__PURE__ */ y(w, { children: /* @__PURE__ */ y(T, { children: "5. Field mapping (optional)" }) }), /* @__PURE__ */ b(C, {
306
306
  className: "space-y-3",
307
- children: [/* @__PURE__ */ y("p", {
307
+ children: [/* @__PURE__ */ b("p", {
308
308
  className: "text-sm text-muted-foreground",
309
309
  children: [
310
310
  "GitHub issues have no native priority or due-date field — PlanMagnet encodes each as a label of the form ",
311
- /* @__PURE__ */ v("code", { children: "prefix+value" }),
311
+ /* @__PURE__ */ y("code", { children: "prefix+value" }),
312
312
  " (e.g. ",
313
- /* @__PURE__ */ v("code", { children: "priority:HIGH" }),
313
+ /* @__PURE__ */ y("code", { children: "priority:HIGH" }),
314
314
  ",",
315
315
  " ",
316
- /* @__PURE__ */ v("code", { children: "due:2026-10-01" }),
316
+ /* @__PURE__ */ y("code", { children: "due:2026-10-01" }),
317
317
  "). Leave both blank to use the built-in prefixes."
318
318
  ]
319
- }), /* @__PURE__ */ y("div", {
319
+ }), /* @__PURE__ */ b("div", {
320
320
  className: "grid grid-cols-1 sm:grid-cols-2 gap-3",
321
- children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("label", {
321
+ children: [/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ b("label", {
322
322
  htmlFor: "sync-wizard-priority-prefix",
323
323
  className: "text-xs text-muted-foreground",
324
324
  children: [
325
325
  "Priority label prefix (default \"",
326
- c.priority,
326
+ o.priority,
327
327
  "\")"
328
328
  ]
329
- }), /* @__PURE__ */ v(T, {
329
+ }), /* @__PURE__ */ y(E, {
330
330
  id: "sync-wizard-priority-prefix",
331
331
  className: "mt-1",
332
- placeholder: c.priority,
333
- value: R,
334
- onChange: (e) => ye(e.target.value)
335
- })] }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("label", {
332
+ placeholder: o.priority,
333
+ value: z,
334
+ onChange: (e) => ve(e.target.value)
335
+ })] }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ b("label", {
336
336
  htmlFor: "sync-wizard-duedate-prefix",
337
337
  className: "text-xs text-muted-foreground",
338
338
  children: [
339
339
  "Due-date label prefix (default \"",
340
- c.dueDate,
340
+ o.dueDate,
341
341
  "\")"
342
342
  ]
343
- }), /* @__PURE__ */ v(T, {
343
+ }), /* @__PURE__ */ y(E, {
344
344
  id: "sync-wizard-duedate-prefix",
345
345
  className: "mt-1",
346
- placeholder: c.dueDate,
347
- value: z,
348
- onChange: (e) => be(e.target.value)
346
+ placeholder: o.dueDate,
347
+ value: B,
348
+ onChange: (e) => ye(e.target.value)
349
349
  })] })]
350
350
  })]
351
351
  })]
352
352
  }),
353
- /* @__PURE__ */ y(x, {
353
+ /* @__PURE__ */ b(S, {
354
354
  "data-testid": "sync-wizard-step",
355
- children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ v(w, { children: "6. Review & create" }) }), /* @__PURE__ */ y(S, {
355
+ children: [/* @__PURE__ */ y(w, { children: /* @__PURE__ */ y(T, { children: "6. Review & create" }) }), /* @__PURE__ */ b(C, {
356
356
  className: "space-y-3",
357
357
  children: [
358
- /* @__PURE__ */ y("dl", {
358
+ /* @__PURE__ */ b("dl", {
359
359
  className: "grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-1 text-sm",
360
360
  children: [
361
- /* @__PURE__ */ v("dt", {
361
+ /* @__PURE__ */ y("dt", {
362
362
  className: "text-muted-foreground",
363
363
  children: "Provider"
364
364
  }),
365
- /* @__PURE__ */ v("dd", { children: d(g) }),
366
- /* @__PURE__ */ v("dt", {
365
+ /* @__PURE__ */ y("dd", { children: u(_) }),
366
+ /* @__PURE__ */ y("dt", {
367
367
  className: "text-muted-foreground",
368
368
  children: "Direction"
369
369
  }),
370
- /* @__PURE__ */ v("dd", { children: N ? l(N) : "—" }),
371
- /* @__PURE__ */ v("dt", {
370
+ /* @__PURE__ */ y("dd", { children: P ? s(P) : "—" }),
371
+ /* @__PURE__ */ y("dt", {
372
372
  className: "text-muted-foreground",
373
373
  children: "External project"
374
374
  }),
375
- /* @__PURE__ */ v("dd", { children: J ? `${k}/${j}` : "—" }),
376
- /* @__PURE__ */ v("dt", {
375
+ /* @__PURE__ */ y("dd", { children: J ? `${A}/${M}` : "—" }),
376
+ /* @__PURE__ */ y("dt", {
377
377
  className: "text-muted-foreground",
378
378
  children: "Conflict strategy"
379
379
  }),
380
- /* @__PURE__ */ v("dd", { children: r(L) })
380
+ /* @__PURE__ */ y("dd", { children: a(R) })
381
381
  ]
382
382
  }),
383
- /* @__PURE__ */ y("label", {
383
+ /* @__PURE__ */ b("label", {
384
384
  className: "flex items-start gap-2 text-sm",
385
- children: [/* @__PURE__ */ v(me, {
386
- checked: B,
387
- onCheckedChange: (e) => xe(e === !0),
385
+ children: [/* @__PURE__ */ y(pe, {
386
+ checked: V,
387
+ onCheckedChange: (e) => be(e === !0),
388
388
  "data-testid": "sync-wizard-verify"
389
- }), /* @__PURE__ */ y("span", { children: ["Verify the connection before creating (recommended)", /* @__PURE__ */ v("span", {
389
+ }), /* @__PURE__ */ b("span", { children: ["Verify the connection before creating (recommended)", /* @__PURE__ */ y("span", {
390
390
  className: "block text-xs text-muted-foreground",
391
391
  children: "Probes the credentials first; the sync is not created if the probe fails."
392
392
  })] })]
393
393
  }),
394
- V && /* @__PURE__ */ v(n, { message: V }),
395
- /* @__PURE__ */ y(b, {
394
+ H && /* @__PURE__ */ y(i, { message: H }),
395
+ /* @__PURE__ */ b(x, {
396
396
  onClick: () => void Te(),
397
397
  disabled: K.loading,
398
398
  "data-testid": "sync-wizard-create",
399
- children: [K.loading ? /* @__PURE__ */ v(de, { className: "mr-1 h-4 w-4 animate-spin" }) : /* @__PURE__ */ v(fe, { className: "mr-1 h-4 w-4" }), "Create sync"]
399
+ children: [K.loading ? /* @__PURE__ */ y(ue, { className: "mr-1 h-4 w-4 animate-spin" }) : /* @__PURE__ */ y(de, { className: "mr-1 h-4 w-4" }), "Create sync"]
400
400
  })
401
401
  ]
402
402
  })]
@@ -406,6 +406,6 @@ function D() {
406
406
  });
407
407
  }
408
408
  //#endregion
409
- export { D as IntegrationsNewSyncPagePage };
409
+ export { O as IntegrationsNewSyncPagePage };
410
410
 
411
411
  //# sourceMappingURL=IntegrationsNewSyncPagePage.js.map