@burdenoff/microfe-planmagnet 2026.928.4 → 2026.928.6

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 (226) hide show
  1. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  2. package/dist/planmagnet/PlanMagnetRoot.js +130 -97
  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 +256 -156
  6. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  7. package/dist/planmagnet/automation/AutomationExecutionsPanel.d.ts +5 -0
  8. package/dist/planmagnet/automation/AutomationExecutionsPanel.d.ts.map +1 -0
  9. package/dist/planmagnet/automation/AutomationExecutionsPanel.js +107 -0
  10. package/dist/planmagnet/automation/AutomationExecutionsPanel.js.map +1 -0
  11. package/dist/planmagnet/automation/AutomationRuleFields.d.ts +29 -0
  12. package/dist/planmagnet/automation/AutomationRuleFields.d.ts.map +1 -0
  13. package/dist/planmagnet/automation/AutomationRuleFields.js +308 -0
  14. package/dist/planmagnet/automation/AutomationRuleFields.js.map +1 -0
  15. package/dist/planmagnet/automation/automationRuleTypes.d.ts +60 -0
  16. package/dist/planmagnet/automation/automationRuleTypes.d.ts.map +1 -0
  17. package/dist/planmagnet/automation/automationRuleTypes.js +113 -0
  18. package/dist/planmagnet/automation/automationRuleTypes.js.map +1 -0
  19. package/dist/planmagnet/board/BulkActions.d.ts +11 -0
  20. package/dist/planmagnet/board/BulkActions.d.ts.map +1 -0
  21. package/dist/planmagnet/board/BulkActions.js +182 -0
  22. package/dist/planmagnet/board/BulkActions.js.map +1 -0
  23. package/dist/planmagnet/board/ProjectBoard.d.ts.map +1 -1
  24. package/dist/planmagnet/board/ProjectBoard.js +289 -254
  25. package/dist/planmagnet/board/ProjectBoard.js.map +1 -1
  26. package/dist/planmagnet/budgets/BudgetControls.d.ts +30 -0
  27. package/dist/planmagnet/budgets/BudgetControls.d.ts.map +1 -0
  28. package/dist/planmagnet/budgets/BudgetControls.js +470 -0
  29. package/dist/planmagnet/budgets/BudgetControls.js.map +1 -0
  30. package/dist/planmagnet/budgets/ExpenseControls.d.ts +27 -0
  31. package/dist/planmagnet/budgets/ExpenseControls.d.ts.map +1 -0
  32. package/dist/planmagnet/budgets/ExpenseControls.js +366 -0
  33. package/dist/planmagnet/budgets/ExpenseControls.js.map +1 -0
  34. package/dist/planmagnet/budgets/ProjectBudgetsSummary.d.ts +5 -0
  35. package/dist/planmagnet/budgets/ProjectBudgetsSummary.d.ts.map +1 -0
  36. package/dist/planmagnet/budgets/ProjectBudgetsSummary.js +112 -0
  37. package/dist/planmagnet/budgets/ProjectBudgetsSummary.js.map +1 -0
  38. package/dist/planmagnet/budgets/budgetMath.d.ts +26 -0
  39. package/dist/planmagnet/budgets/budgetMath.d.ts.map +1 -0
  40. package/dist/planmagnet/budgets/budgetMath.js +49 -0
  41. package/dist/planmagnet/budgets/budgetMath.js.map +1 -0
  42. package/dist/planmagnet/controls/AutomationRuleControls.d.ts +23 -0
  43. package/dist/planmagnet/controls/AutomationRuleControls.d.ts.map +1 -0
  44. package/dist/planmagnet/controls/AutomationRuleControls.js +172 -0
  45. package/dist/planmagnet/controls/AutomationRuleControls.js.map +1 -0
  46. package/dist/planmagnet/controls/CompetitorControls.js +15 -15
  47. package/dist/planmagnet/controls/CustomFieldControls.d.ts +42 -0
  48. package/dist/planmagnet/controls/CustomFieldControls.d.ts.map +1 -0
  49. package/dist/planmagnet/controls/CustomFieldControls.js +84 -0
  50. package/dist/planmagnet/controls/CustomFieldControls.js.map +1 -0
  51. package/dist/planmagnet/controls/CustomFieldValuesPanel.d.ts +8 -0
  52. package/dist/planmagnet/controls/CustomFieldValuesPanel.d.ts.map +1 -0
  53. package/dist/planmagnet/controls/CustomFieldValuesPanel.js +315 -0
  54. package/dist/planmagnet/controls/CustomFieldValuesPanel.js.map +1 -0
  55. package/dist/planmagnet/controls/FeatureControls.js +54 -54
  56. package/dist/planmagnet/controls/ObjectiveControls.js +15 -15
  57. package/dist/planmagnet/controls/Pickers.d.ts +7 -0
  58. package/dist/planmagnet/controls/Pickers.d.ts.map +1 -1
  59. package/dist/planmagnet/controls/Pickers.js +58 -20
  60. package/dist/planmagnet/controls/Pickers.js.map +1 -1
  61. package/dist/planmagnet/controls/PortfolioControls.js +7 -7
  62. package/dist/planmagnet/controls/ProgramControls.js +19 -19
  63. package/dist/planmagnet/controls/ProjectControls.d.ts.map +1 -1
  64. package/dist/planmagnet/controls/ProjectControls.js +54 -47
  65. package/dist/planmagnet/controls/ProjectControls.js.map +1 -1
  66. package/dist/planmagnet/controls/ReleaseControls.js +7 -7
  67. package/dist/planmagnet/controls/RiskControls.d.ts +27 -0
  68. package/dist/planmagnet/controls/RiskControls.d.ts.map +1 -0
  69. package/dist/planmagnet/controls/RiskControls.js +346 -0
  70. package/dist/planmagnet/controls/RiskControls.js.map +1 -0
  71. package/dist/planmagnet/controls/TemplateControls.d.ts +15 -0
  72. package/dist/planmagnet/controls/TemplateControls.d.ts.map +1 -0
  73. package/dist/planmagnet/controls/TemplateControls.js +55 -0
  74. package/dist/planmagnet/controls/TemplateControls.js.map +1 -0
  75. package/dist/planmagnet/controls/WorkItemControls.d.ts +6 -2
  76. package/dist/planmagnet/controls/WorkItemControls.d.ts.map +1 -1
  77. package/dist/planmagnet/controls/WorkItemControls.js +9 -9
  78. package/dist/planmagnet/controls/WorkItemControls.js.map +1 -1
  79. package/dist/planmagnet/create/CreateDialogs.d.ts +20 -0
  80. package/dist/planmagnet/create/CreateDialogs.d.ts.map +1 -1
  81. package/dist/planmagnet/create/CreateDialogs.js +455 -116
  82. package/dist/planmagnet/create/CreateDialogs.js.map +1 -1
  83. package/dist/planmagnet/dependency/DependencyPanel.d.ts +6 -0
  84. package/dist/planmagnet/dependency/DependencyPanel.d.ts.map +1 -0
  85. package/dist/planmagnet/dependency/DependencyPanel.js +310 -0
  86. package/dist/planmagnet/dependency/DependencyPanel.js.map +1 -0
  87. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.d.ts +2 -0
  88. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.d.ts.map +1 -0
  89. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js +171 -0
  90. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js.map +1 -0
  91. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.d.ts +2 -0
  92. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.d.ts.map +1 -0
  93. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.js +232 -0
  94. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.js.map +1 -0
  95. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.d.ts +2 -0
  96. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.d.ts.map +1 -0
  97. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js +93 -0
  98. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js.map +1 -0
  99. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +1 -1
  100. package/dist/planmagnet/pages/DashboardDashboardPagePage.js +11 -3
  101. package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +1 -1
  102. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js +5 -5
  103. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js +9 -9
  104. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js +6 -6
  105. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js +4 -4
  106. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js +6 -6
  107. package/dist/planmagnet/pages/ProgramsProgramsPagePage.js +5 -5
  108. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.d.ts +2 -0
  109. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.d.ts.map +1 -0
  110. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.js +315 -0
  111. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.js.map +1 -0
  112. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.d.ts +2 -0
  113. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.d.ts.map +1 -0
  114. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js +186 -0
  115. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js.map +1 -0
  116. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.d.ts +2 -0
  117. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.d.ts.map +1 -0
  118. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.js +164 -0
  119. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.js.map +1 -0
  120. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.d.ts +2 -0
  121. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.d.ts.map +1 -0
  122. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.js +348 -0
  123. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.js.map +1 -0
  124. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +10 -10
  125. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js +4 -4
  126. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
  127. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +20 -10
  128. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
  129. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +1 -1
  130. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +13 -8
  131. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +1 -1
  132. package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +1 -1
  133. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js +76 -56
  134. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js.map +1 -1
  135. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
  136. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +372 -203
  137. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
  138. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +1 -1
  139. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +81 -72
  140. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +1 -1
  141. package/dist/planmagnet/pages/RisksRiskDetailPagePage.d.ts +2 -0
  142. package/dist/planmagnet/pages/RisksRiskDetailPagePage.d.ts.map +1 -0
  143. package/dist/planmagnet/pages/RisksRiskDetailPagePage.js +278 -0
  144. package/dist/planmagnet/pages/RisksRiskDetailPagePage.js.map +1 -0
  145. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.d.ts +2 -0
  146. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.d.ts.map +1 -0
  147. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.js +191 -0
  148. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.js.map +1 -0
  149. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
  150. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +168 -122
  151. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
  152. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +5 -5
  153. package/dist/planmagnet/pages/TasksEditTaskPagePage.js +4 -4
  154. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
  155. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +161 -137
  156. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
  157. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -1
  158. package/dist/planmagnet/pages/TasksTasksPagePage.js +124 -113
  159. package/dist/planmagnet/pages/TasksTasksPagePage.js.map +1 -1
  160. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.d.ts +2 -0
  161. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.d.ts.map +1 -0
  162. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js +263 -0
  163. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js.map +1 -0
  164. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.d.ts +2 -0
  165. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.d.ts.map +1 -0
  166. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.js +254 -0
  167. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.js.map +1 -0
  168. package/dist/planmagnet/pages/TasksTimesheetsPagePage.d.ts +2 -0
  169. package/dist/planmagnet/pages/TasksTimesheetsPagePage.d.ts.map +1 -0
  170. package/dist/planmagnet/pages/TasksTimesheetsPagePage.js +165 -0
  171. package/dist/planmagnet/pages/TasksTimesheetsPagePage.js.map +1 -0
  172. package/dist/planmagnet/pages/TeamCreateTeamPagePage.d.ts.map +1 -1
  173. package/dist/planmagnet/pages/TeamCreateTeamPagePage.js +288 -91
  174. package/dist/planmagnet/pages/TeamCreateTeamPagePage.js.map +1 -1
  175. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts +2 -0
  176. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +1 -0
  177. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js +217 -0
  178. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +1 -0
  179. package/dist/planmagnet/pages/TeamTeamEditPagePage.d.ts +2 -0
  180. package/dist/planmagnet/pages/TeamTeamEditPagePage.d.ts.map +1 -0
  181. package/dist/planmagnet/pages/TeamTeamEditPagePage.js +211 -0
  182. package/dist/planmagnet/pages/TeamTeamEditPagePage.js.map +1 -0
  183. package/dist/planmagnet/pages/TeamTeamsListPagePage.d.ts +2 -0
  184. package/dist/planmagnet/pages/TeamTeamsListPagePage.d.ts.map +1 -0
  185. package/dist/planmagnet/pages/TeamTeamsListPagePage.js +118 -0
  186. package/dist/planmagnet/pages/TeamTeamsListPagePage.js.map +1 -0
  187. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.d.ts +2 -0
  188. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.d.ts.map +1 -0
  189. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.js +316 -0
  190. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.js.map +1 -0
  191. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.d.ts +2 -0
  192. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.d.ts.map +1 -0
  193. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.js +208 -0
  194. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.js.map +1 -0
  195. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts +0 -5
  196. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts.map +1 -1
  197. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js +47 -89
  198. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js.map +1 -1
  199. package/dist/planmagnet/roadmaps/RoadmapControls.js +24 -24
  200. package/dist/planmagnet/sprints/SprintControls.d.ts +15 -3
  201. package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
  202. package/dist/planmagnet/sprints/SprintControls.js +293 -190
  203. package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
  204. package/dist/planmagnet/team/TeamControls.d.ts +31 -0
  205. package/dist/planmagnet/team/TeamControls.d.ts.map +1 -0
  206. package/dist/planmagnet/team/TeamControls.js +407 -0
  207. package/dist/planmagnet/team/TeamControls.js.map +1 -0
  208. package/dist/planmagnet/time/TaskTimePanel.d.ts +7 -0
  209. package/dist/planmagnet/time/TaskTimePanel.d.ts.map +1 -0
  210. package/dist/planmagnet/time/TaskTimePanel.js +104 -0
  211. package/dist/planmagnet/time/TaskTimePanel.js.map +1 -0
  212. package/dist/planmagnet/time/TimeEntryControls.d.ts +37 -0
  213. package/dist/planmagnet/time/TimeEntryControls.d.ts.map +1 -0
  214. package/dist/planmagnet/time/TimeEntryControls.js +338 -0
  215. package/dist/planmagnet/time/TimeEntryControls.js.map +1 -0
  216. package/dist/planmagnet/time/TimesheetControls.d.ts +18 -0
  217. package/dist/planmagnet/time/TimesheetControls.d.ts.map +1 -0
  218. package/dist/planmagnet/time/TimesheetControls.js +244 -0
  219. package/dist/planmagnet/time/TimesheetControls.js.map +1 -0
  220. package/dist/planmagnet/time/timeShared.d.ts +29 -0
  221. package/dist/planmagnet/time/timeShared.d.ts.map +1 -0
  222. package/dist/planmagnet/time/timeShared.js +34 -0
  223. package/dist/planmagnet/time/timeShared.js.map +1 -0
  224. package/dist/planmagnet/utils/rowNavigation.js +5 -2
  225. package/dist/planmagnet/utils/rowNavigation.js.map +1 -1
  226. package/package.json +1 -1
@@ -1,147 +1,344 @@
1
1
  import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
2
- import { useState as n } from "react";
3
- import { Save as r, Users as i, X as a } from "lucide-react";
4
- import { gql as o } from "@apollo/client";
5
- import { useQuery as s } from "@apollo/client/react";
6
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
- import { Button as u, Card as d, CardContent as f, CardHeader as p, CardTitle as m, Input as h } from "@burdenoff/fe-libs/ui";
2
+ import { throwOnError as n } from "../utils/mutationResult.js";
3
+ import { AssigneeSelect as r } from "../controls/WorkItemControls.js";
4
+ import { detailPath as ee } from "../utils/rowNavigation.js";
5
+ import { parseIntField as te } from "../utils/formValidation.js";
6
+ import { TEAM_QUERIES as i } from "../team/TeamControls.js";
7
+ import { useDeferredValue as a, useEffect as ne, useState as o } from "react";
8
+ import { ArrowRight as re, FolderKanban as s, Save as c, Users as l, X as ie } from "lucide-react";
9
+ import { gql as u } from "@apollo/client";
10
+ import { useMutation as d, useQuery as f } from "@apollo/client/react";
11
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
12
+ import { Button as h, Card as g, CardContent as _, CardHeader as v, CardTitle as y, Checkbox as b, Input as x } from "@burdenoff/fe-libs/ui";
13
+ import { useWorkspaceDirectory as ae } from "@burdenoff/fe-libs/sharing";
8
14
  //#region src/planmagnet/pages/TeamCreateTeamPagePage.tsx
9
- var g = o`
15
+ var S = u`
10
16
  query GetProjectsForTeamCreation($workspaceId: ID!, $pagination: PlanmagnetPaginationInput) {
11
17
  planmagnetProjects(workspaceId: $workspaceId, pagination: $pagination) {
12
18
  items {
13
19
  id
14
20
  name
15
21
  key
16
- ownerId
17
22
  }
18
23
  totalCount
19
24
  }
20
25
  }
21
- `;
22
- function _() {
23
- let { workspaceId: o } = e(), _ = t(), [v, y] = n({
24
- name: "",
25
- description: "",
26
- lead: "",
27
- projectId: ""
28
- }), { data: b, loading: x, error: S } = s(g, {
26
+ `, oe = u`
27
+ mutation CreateTeam($input: PlanmagnetCreateTeamInput!) {
28
+ planmagnetCreateTeam(input: $input) {
29
+ id
30
+ name
31
+ }
32
+ }
33
+ `, se = u`
34
+ mutation CreateTeamAddProjects($id: ID!, $input: PlanmagnetTeamProjectsInput!) {
35
+ planmagnetAddTeamProjects(id: $id, input: $input) {
36
+ id
37
+ }
38
+ }
39
+ `, ce = u`
40
+ mutation CreateTeamAddMembers($id: ID!, $input: PlanmagnetTeamMembersInput!) {
41
+ planmagnetAddTeamMembers(id: $id, input: $input) {
42
+ id
43
+ }
44
+ }
45
+ `, C = {
46
+ name: "",
47
+ description: "",
48
+ leadId: "",
49
+ capacity: ""
50
+ };
51
+ function w() {
52
+ let { workspaceId: u, authToken: w, apiGatewayUrl: T } = e(), E = t(), [D, O] = o(C), [k, A] = o(/* @__PURE__ */ new Set()), [j, M] = o(/* @__PURE__ */ new Set()), [N, P] = o(""), F = a(N.trim()), { data: I, loading: L, error: R } = f(S, {
29
53
  variables: {
30
- workspaceId: o,
54
+ workspaceId: u ?? "",
31
55
  pagination: { first: 100 }
32
56
  },
33
- skip: !o
34
- }), C = b?.planmagnetProjects?.items ?? [];
35
- return x && !b ? /* @__PURE__ */ c("div", {
57
+ skip: !u
58
+ }), z = I?.planmagnetProjects.items ?? [], B = ae({
59
+ workspaceId: u ?? "",
60
+ authToken: w ?? void 0,
61
+ apiGatewayUrl: T ?? void 0
62
+ }), { search: V } = B;
63
+ ne(() => {
64
+ V(F);
65
+ }, [F, V]);
66
+ let [H, { loading: U }] = d(oe, { refetchQueries: i }), [W] = d(se, { refetchQueries: i }), [le] = d(ce, { refetchQueries: i }), [G, K] = o(null), [q, J] = o([]), [Y, X] = o(null), Z = te(D.capacity, { min: 0 }), Q = D.name.trim() === "", ue = U, $ = !Q && !Z.invalid && !ue && !!u, de = (e, t) => A((n) => {
67
+ let r = new Set(n);
68
+ return t ? r.add(e) : r.delete(e), r;
69
+ }), fe = (e, t) => M((n) => {
70
+ let r = new Set(n);
71
+ return t ? r.add(e) : r.delete(e), r;
72
+ });
73
+ return L && !I ? /* @__PURE__ */ p("div", {
36
74
  className: "flex items-center justify-center p-12",
37
- children: /* @__PURE__ */ c("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
38
- }) : S ? /* @__PURE__ */ l("div", {
39
- className: "p-6 text-red-500",
40
- children: ["Error: ", S.message]
41
- }) : /* @__PURE__ */ l("div", {
75
+ children: /* @__PURE__ */ p("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
76
+ }) : R ? /* @__PURE__ */ m("div", {
77
+ className: "p-6 text-destructive",
78
+ children: ["Error: ", R.message]
79
+ }) : /* @__PURE__ */ m("div", {
42
80
  className: "space-y-6 p-6 max-w-4xl",
43
81
  children: [
44
- /* @__PURE__ */ l("div", {
82
+ /* @__PURE__ */ m("div", {
45
83
  className: "flex items-center justify-between",
46
- children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h1", {
84
+ children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("h1", {
47
85
  className: "text-2xl font-semibold",
48
86
  children: "Create Team"
49
- }), /* @__PURE__ */ c("p", {
87
+ }), /* @__PURE__ */ p("p", {
50
88
  className: "text-sm text-muted-foreground",
51
- children: "Set up a new team with members and a lead."
52
- })] }), /* @__PURE__ */ l("div", {
89
+ children: "A team can own its own cross-project sprints. Adding someone here does not grant them access to the team's projects — that stays controlled by each person's own workspace role."
90
+ })] }), /* @__PURE__ */ m("div", {
53
91
  className: "flex gap-2",
54
- children: [/* @__PURE__ */ l(u, {
92
+ children: [/* @__PURE__ */ m(h, {
55
93
  variant: "outline",
56
94
  size: "sm",
57
- onClick: () => _("/team/team-page"),
58
- children: [/* @__PURE__ */ c(a, { className: "mr-1 h-4 w-4" }), "Cancel"]
59
- }), /* @__PURE__ */ l(u, {
95
+ onClick: () => E("/team/teams-page"),
96
+ children: [/* @__PURE__ */ p(ie, { className: "mr-1 h-4 w-4" }), "Cancel"]
97
+ }), /* @__PURE__ */ m(h, {
60
98
  size: "sm",
61
- disabled: !0,
62
- title: "Not available yet — see the notice below",
63
- children: [/* @__PURE__ */ c(r, { className: "mr-1 h-4 w-4" }), "Create Team"]
99
+ onClick: async () => {
100
+ if (!$) return;
101
+ K(null), J([]), X(null);
102
+ let e;
103
+ try {
104
+ let t = await n(H({ variables: { input: {
105
+ name: D.name.trim(),
106
+ description: D.description.trim() || void 0,
107
+ leadId: D.leadId || void 0,
108
+ capacity: Z.value
109
+ } } }));
110
+ if (!t.data) throw Error("The team was not created.");
111
+ e = t.data.planmagnetCreateTeam;
112
+ } catch (e) {
113
+ K(e instanceof Error ? e.message : "The team could not be created.");
114
+ return;
115
+ }
116
+ let t = [];
117
+ if (k.size > 0) try {
118
+ await n(W({ variables: {
119
+ id: e.id,
120
+ input: { projectIds: [...k] }
121
+ } }));
122
+ } catch (e) {
123
+ t.push(`Projects could not be added: ${e instanceof Error ? e.message : "unknown error"}`);
124
+ }
125
+ if (j.size > 0) try {
126
+ await n(le({ variables: {
127
+ id: e.id,
128
+ input: { actorIds: [...j] }
129
+ } }));
130
+ } catch (e) {
131
+ t.push(`Members could not be added: ${e instanceof Error ? e.message : "unknown error"}`);
132
+ }
133
+ X(e), J(t), O(C), A(/* @__PURE__ */ new Set()), M(/* @__PURE__ */ new Set()), P("");
134
+ },
135
+ disabled: !$,
136
+ "data-testid": "team-create-submit",
137
+ children: [/* @__PURE__ */ p(c, { className: "mr-1 h-4 w-4" }), U ? "Creating…" : "Create Team"]
64
138
  })]
65
139
  })]
66
140
  }),
67
- /* @__PURE__ */ l("div", {
68
- className: "rounded-md border border-border bg-muted p-4 text-sm text-muted-foreground",
69
- children: [/* @__PURE__ */ c("strong", {
70
- className: "text-foreground",
71
- children: "Not available yet."
72
- }), " Teams cannot be saved — there is no team model behind this form. It is shown so the fields and options are visible, but nothing entered here is stored. This page previously returned you to the list on submit, which looked like it had saved."]
141
+ Y && /* @__PURE__ */ m("div", {
142
+ role: "status",
143
+ className: "rounded-md border border-border bg-muted p-3 text-sm text-status-success-text flex items-center justify-between gap-3",
144
+ "data-testid": "team-created",
145
+ children: [/* @__PURE__ */ m("span", { children: [
146
+ "Team \"",
147
+ Y.name,
148
+ "\" created."
149
+ ] }), /* @__PURE__ */ m(h, {
150
+ size: "sm",
151
+ variant: "outline",
152
+ onClick: () => E(ee("/team/team-detail-page", Y.id)),
153
+ children: ["View team", /* @__PURE__ */ p(re, { className: "ml-1 h-4 w-4" })]
154
+ })]
155
+ }),
156
+ q.length > 0 && /* @__PURE__ */ p("div", {
157
+ role: "alert",
158
+ className: "space-y-1",
159
+ children: q.map((e) => /* @__PURE__ */ p("p", {
160
+ className: "text-sm text-destructive",
161
+ children: e
162
+ }, e))
163
+ }),
164
+ G && /* @__PURE__ */ p("p", {
165
+ role: "alert",
166
+ className: "text-sm text-destructive",
167
+ children: G
73
168
  }),
74
- /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ l(m, {
169
+ /* @__PURE__ */ m(g, { children: [/* @__PURE__ */ p(v, { children: /* @__PURE__ */ m(y, {
75
170
  className: "flex items-center gap-2",
76
- children: [/* @__PURE__ */ c(i, { className: "h-4 w-4" }), "Team Details"]
77
- }) }), /* @__PURE__ */ l(f, {
171
+ children: [/* @__PURE__ */ p(l, { className: "h-4 w-4" }), "Team Details"]
172
+ }) }), /* @__PURE__ */ m(_, {
78
173
  className: "space-y-4",
79
174
  children: [
80
- /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
175
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
176
+ htmlFor: "new-team-name",
81
177
  className: "text-sm font-medium",
82
178
  children: "Team Name"
83
- }), /* @__PURE__ */ c(h, {
84
- value: v.name,
85
- onChange: (e) => y({
86
- ...v,
179
+ }), /* @__PURE__ */ p(x, {
180
+ id: "new-team-name",
181
+ value: D.name,
182
+ onChange: (e) => O({
183
+ ...D,
87
184
  name: e.target.value
88
185
  }),
186
+ "aria-invalid": Q,
89
187
  className: "mt-1",
90
188
  placeholder: "e.g. Platform Engineering"
91
189
  })] }),
92
- /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
190
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
191
+ htmlFor: "new-team-description",
93
192
  className: "text-sm font-medium",
94
193
  children: "Description"
95
- }), /* @__PURE__ */ c("textarea", {
194
+ }), /* @__PURE__ */ p("textarea", {
195
+ id: "new-team-description",
96
196
  className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]",
97
- value: v.description,
98
- onChange: (e) => y({
99
- ...v,
197
+ value: D.description,
198
+ onChange: (e) => O({
199
+ ...D,
100
200
  description: e.target.value
101
201
  }),
102
202
  placeholder: "Describe the team's mission and responsibilities..."
103
203
  })] }),
104
- /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
105
- className: "text-sm font-medium",
106
- children: "Team Lead"
107
- }), /* @__PURE__ */ c(h, {
108
- value: v.lead,
109
- onChange: (e) => y({
110
- ...v,
111
- lead: e.target.value
204
+ /* @__PURE__ */ m("div", {
205
+ className: "grid grid-cols-2 gap-4",
206
+ children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
207
+ htmlFor: "new-team-lead",
208
+ className: "text-sm font-medium",
209
+ children: "Team Lead"
210
+ }), /* @__PURE__ */ p("div", {
211
+ className: "mt-1",
212
+ children: /* @__PURE__ */ p(r, {
213
+ id: "new-team-lead",
214
+ value: D.leadId,
215
+ onChange: (e) => O({
216
+ ...D,
217
+ leadId: e
218
+ }),
219
+ noneLabel: "No lead"
220
+ })
221
+ })] }), /* @__PURE__ */ m("div", { children: [
222
+ /* @__PURE__ */ p("label", {
223
+ htmlFor: "new-team-capacity",
224
+ className: "text-sm font-medium",
225
+ children: "Capacity (story points)"
226
+ }),
227
+ /* @__PURE__ */ p(x, {
228
+ id: "new-team-capacity",
229
+ type: "number",
230
+ min: 0,
231
+ step: 1,
232
+ value: D.capacity,
233
+ onChange: (e) => O({
234
+ ...D,
235
+ capacity: e.target.value
236
+ }),
237
+ "aria-invalid": Z.invalid,
238
+ className: "mt-1",
239
+ placeholder: "e.g. 60"
240
+ }),
241
+ Z.invalid && /* @__PURE__ */ p("p", {
242
+ role: "alert",
243
+ className: "mt-1 text-xs text-destructive",
244
+ children: "Capacity must be a whole number, 0 or more."
245
+ })
246
+ ] })]
247
+ })
248
+ ]
249
+ })] }),
250
+ /* @__PURE__ */ m(g, { children: [/* @__PURE__ */ p(v, { children: /* @__PURE__ */ m(y, {
251
+ className: "flex items-center gap-2",
252
+ children: [
253
+ /* @__PURE__ */ p(s, { className: "h-4 w-4" }),
254
+ "Projects (",
255
+ k.size,
256
+ " selected)"
257
+ ]
258
+ }) }), /* @__PURE__ */ m(_, { children: [/* @__PURE__ */ p("p", {
259
+ className: "text-xs text-muted-foreground mb-2",
260
+ children: "A team sprint can only hold work items from a project checked here. More can be added later from the team page."
261
+ }), /* @__PURE__ */ m("div", {
262
+ className: "max-h-56 overflow-y-auto space-y-1",
263
+ children: [z.length === 0 && /* @__PURE__ */ p("p", {
264
+ className: "text-sm text-muted-foreground py-2",
265
+ children: "No projects in this workspace yet."
266
+ }), z.map((e) => {
267
+ let t = `new-team-project-${e.id}`;
268
+ return /* @__PURE__ */ m("label", {
269
+ htmlFor: t,
270
+ className: "flex items-center gap-3 border rounded-md p-2 text-sm cursor-pointer hover:bg-muted",
271
+ children: [/* @__PURE__ */ p(b, {
272
+ id: t,
273
+ checked: k.has(e.id),
274
+ onCheckedChange: (t) => de(e.id, t === !0)
275
+ }), /* @__PURE__ */ m("span", {
276
+ className: "min-w-0 flex-1 truncate",
277
+ children: [/* @__PURE__ */ p("span", {
278
+ className: "text-muted-foreground mr-2",
279
+ children: e.key
280
+ }), e.name]
281
+ })]
282
+ }, e.id);
283
+ })]
284
+ })] })] }),
285
+ /* @__PURE__ */ m(g, { children: [/* @__PURE__ */ p(v, { children: /* @__PURE__ */ m(y, {
286
+ className: "flex items-center gap-2",
287
+ children: [
288
+ /* @__PURE__ */ p(l, { className: "h-4 w-4" }),
289
+ "Members (",
290
+ j.size,
291
+ " selected)"
292
+ ]
293
+ }) }), /* @__PURE__ */ m(_, {
294
+ className: "space-y-2",
295
+ children: [/* @__PURE__ */ p(x, {
296
+ value: N,
297
+ onChange: (e) => P(e.target.value),
298
+ placeholder: "Search workspace members",
299
+ "aria-label": "Search workspace members"
300
+ }), /* @__PURE__ */ m("div", {
301
+ className: "max-h-56 overflow-y-auto space-y-1",
302
+ children: [
303
+ B.loading && B.members.length === 0 && /* @__PURE__ */ p("p", {
304
+ className: "text-sm text-muted-foreground py-2",
305
+ children: "Loading members…"
112
306
  }),
113
- className: "mt-1",
114
- placeholder: "Team lead name or email"
115
- })] }),
116
- /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
117
- className: "text-sm font-medium",
118
- children: "Associated Project (optional)"
119
- }), /* @__PURE__ */ l("select", {
120
- className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
121
- value: v.projectId,
122
- onChange: (e) => y({
123
- ...v,
124
- projectId: e.target.value
307
+ !B.loading && B.members.length === 0 && /* @__PURE__ */ p("p", {
308
+ className: "text-sm text-muted-foreground py-2",
309
+ children: "No matching members."
125
310
  }),
126
- children: [/* @__PURE__ */ c("option", {
127
- value: "",
128
- children: "No project"
129
- }), C.map((e) => /* @__PURE__ */ l("option", {
130
- value: e.id,
131
- children: [
132
- e.name,
133
- " (",
134
- e.key,
135
- ")"
136
- ]
137
- }, e.id))]
138
- })] })
139
- ]
311
+ B.members.map((e) => {
312
+ let t = `new-team-member-${e.id}`;
313
+ return /* @__PURE__ */ m("label", {
314
+ htmlFor: t,
315
+ className: "flex items-center gap-3 border rounded-md p-2 text-sm cursor-pointer hover:bg-muted",
316
+ children: [/* @__PURE__ */ p(b, {
317
+ id: t,
318
+ checked: j.has(e.id),
319
+ onCheckedChange: (t) => fe(e.id, t === !0)
320
+ }), /* @__PURE__ */ m("span", {
321
+ className: "min-w-0 flex-1 truncate",
322
+ children: [e.name, e.email && /* @__PURE__ */ m("span", {
323
+ className: "text-muted-foreground",
324
+ children: [" · ", e.email]
325
+ })]
326
+ })]
327
+ }, e.id);
328
+ }),
329
+ B.hasMore && /* @__PURE__ */ p("button", {
330
+ type: "button",
331
+ className: "w-full py-1 text-xs text-primary hover:underline",
332
+ onClick: B.fetchMore,
333
+ children: "Show more members"
334
+ })
335
+ ]
336
+ })]
140
337
  })] })
141
338
  ]
142
339
  });
143
340
  }
144
341
  //#endregion
145
- export { _ as TeamCreateTeamPagePage };
342
+ export { w as TeamCreateTeamPagePage };
146
343
 
147
344
  //# sourceMappingURL=TeamCreateTeamPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TeamCreateTeamPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/TeamCreateTeamPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, X, Users } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\n\nconst GET_PROJECTS_FOR_TEAM = gql`\n query GetProjectsForTeamCreation($workspaceId: ID!, $pagination: PlanmagnetPaginationInput) {\n planmagnetProjects(workspaceId: $workspaceId, pagination: $pagination) {\n items {\n id\n name\n key\n ownerId\n }\n totalCount\n }\n }\n`;\n\ninterface ProjectNode {\n id: string;\n name: string;\n key: string;\n ownerId: string | null;\n}\n\ninterface ProjectsData {\n projects: { items: ProjectNode[]; totalCount: number };\n}\n\nexport function TeamCreateTeamPagePage() {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n const [form, setForm] = useState({ name: '', description: '', lead: '', projectId: '' });\n\n const { data, loading, error } = useQuery<ProjectsData>(GET_PROJECTS_FOR_TEAM, {\n variables: {\n workspaceId,\n pagination: { first: 100 },\n },\n skip: !workspaceId,\n });\n\n const projects = data?.planmagnetProjects?.items ?? [];\n\n // NOTE: there is no Team model in wspace-planmagnet-svc, so this form has nothing\n // to save to. It previously had a handler that navigated to '/team' on submit,\n // which read as a successful save — the user filled the form, was redirected, and\n // nothing was persisted. The submit control is disabled until the model exists\n // (BOFF-7822); the notice above the form says so.\n\n // Only before the first load: a refetch must not blank the page (it\n\n // unmounts every component on it and loses their state).\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-red-500\">Error: {error.message}</div>;\n }\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Create Team</h1>\n <p className=\"text-sm text-muted-foreground\">\n Set up a new team with members and a lead.\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/team/team-page')}>\n <X className=\"mr-1 h-4 w-4\" />\n Cancel\n </Button>\n <Button size=\"sm\" disabled title=\"Not available yet — see the notice below\">\n <Save className=\"mr-1 h-4 w-4\" />\n Create Team\n </Button>\n </div>\n </div>\n <div className=\"rounded-md border border-border bg-muted p-4 text-sm text-muted-foreground\">\n <strong className=\"text-foreground\">Not available yet.</strong> Teams cannot be saved —\n there is no team model behind this form. It is shown so the fields and options are visible,\n but nothing entered here is stored. This page previously returned you to the list on submit,\n which looked like it had saved.\n </div>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Users className=\"h-4 w-4\" />\n Team Details\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Team Name</label>\n <Input\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n className=\"mt-1\"\n placeholder=\"e.g. Platform Engineering\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Description</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n placeholder=\"Describe the team's mission and responsibilities...\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Team Lead</label>\n <Input\n value={form.lead}\n onChange={(e) => setForm({ ...form, lead: e.target.value })}\n className=\"mt-1\"\n placeholder=\"Team lead name or email\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Associated Project (optional)</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n value={form.projectId}\n onChange={(e) => setForm({ ...form, projectId: e.target.value })}\n >\n <option value=\"\">No project</option>\n {projects.map((p) => (\n <option key={p.id} value={p.id}>\n {p.name} ({p.key})\n </option>\n ))}\n </select>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TeamCreateTeamPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/TeamCreateTeamPagePage.tsx"],"sourcesContent":["import { useDeferredValue, useEffect, useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { useWorkspaceDirectory } from '@burdenoff/fe-libs/sharing';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Button,\n Input,\n Checkbox,\n} from '@burdenoff/fe-libs/ui';\nimport { Save, X, Users, FolderKanban, ArrowRight } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { detailPath } from '../utils/rowNavigation';\nimport { throwOnError } from '../utils/mutationResult';\nimport { parseIntField } from '../utils/formValidation';\nimport { AssigneeSelect } from '../controls/WorkItemControls';\nimport { TEAM_QUERIES } from '../team/TeamControls';\n\n/**\n * Create Team (BOFF-8044). Rebuilt: there was no Team model behind this form (BOFF-7822), so it could not save\n * anything — Submit was disabled and the page said so. The model now exists; this wires the real mutation, plus\n * inline member and project pickers so a team can start populated instead of being created empty every time.\n */\n\nconst GET_PROJECTS_FOR_TEAM = gql`\n query GetProjectsForTeamCreation($workspaceId: ID!, $pagination: PlanmagnetPaginationInput) {\n planmagnetProjects(workspaceId: $workspaceId, pagination: $pagination) {\n items {\n id\n name\n key\n }\n totalCount\n }\n }\n`;\n\nconst CREATE_TEAM = gql`\n mutation CreateTeam($input: PlanmagnetCreateTeamInput!) {\n planmagnetCreateTeam(input: $input) {\n id\n name\n }\n }\n`;\nconst ADD_TEAM_PROJECTS = gql`\n mutation CreateTeamAddProjects($id: ID!, $input: PlanmagnetTeamProjectsInput!) {\n planmagnetAddTeamProjects(id: $id, input: $input) {\n id\n }\n }\n`;\nconst ADD_TEAM_MEMBERS = gql`\n mutation CreateTeamAddMembers($id: ID!, $input: PlanmagnetTeamMembersInput!) {\n planmagnetAddTeamMembers(id: $id, input: $input) {\n id\n }\n }\n`;\n\ninterface ProjectOption {\n id: string;\n name: string;\n key: string;\n}\n\nconst EMPTY_FORM = { name: '', description: '', leadId: '', capacity: '' };\n\nexport function TeamCreateTeamPagePage() {\n const { workspaceId, authToken, apiGatewayUrl } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n\n const [form, setForm] = useState(EMPTY_FORM);\n const [projectIds, setProjectIds] = useState<Set<string>>(new Set());\n const [memberIds, setMemberIds] = useState<Set<string>>(new Set());\n const [memberSearch, setMemberSearch] = useState('');\n const deferredMemberSearch = useDeferredValue(memberSearch.trim());\n\n const { data, loading, error } = useQuery<{\n planmagnetProjects: { items: ProjectOption[]; totalCount: number };\n }>(GET_PROJECTS_FOR_TEAM, {\n variables: { workspaceId: workspaceId ?? '', pagination: { first: 100 } },\n skip: !workspaceId,\n });\n const projects = data?.planmagnetProjects.items ?? [];\n\n const directory = useWorkspaceDirectory({\n workspaceId: workspaceId ?? '',\n authToken: authToken ?? undefined,\n apiGatewayUrl: apiGatewayUrl ?? undefined,\n });\n const { search: setDirectoryFilter } = directory;\n useEffect(() => {\n setDirectoryFilter(deferredMemberSearch);\n }, [deferredMemberSearch, setDirectoryFilter]);\n\n const [createTeam, { loading: creating }] = useMutation<{\n planmagnetCreateTeam: { id: string; name: string };\n }>(CREATE_TEAM, { refetchQueries: TEAM_QUERIES });\n const [addProjects] = useMutation(ADD_TEAM_PROJECTS, { refetchQueries: TEAM_QUERIES });\n const [addMembers] = useMutation(ADD_TEAM_MEMBERS, { refetchQueries: TEAM_QUERIES });\n\n const [formError, setFormError] = useState<string | null>(null);\n const [attachWarnings, setAttachWarnings] = useState<string[]>([]);\n const [created, setCreated] = useState<{ id: string; name: string } | null>(null);\n\n const capacity = parseIntField(form.capacity, { min: 0 });\n const nameInvalid = form.name.trim() === '';\n const busy = creating;\n const canSubmit = !nameInvalid && !capacity.invalid && !busy && !!workspaceId;\n\n const toggleProject = (id: string, checked: boolean) =>\n setProjectIds((prev) => {\n const next = new Set(prev);\n if (checked) next.add(id);\n else next.delete(id);\n return next;\n });\n const toggleMember = (id: string, checked: boolean) =>\n setMemberIds((prev) => {\n const next = new Set(prev);\n if (checked) next.add(id);\n else next.delete(id);\n return next;\n });\n\n const handleCreate = async () => {\n if (!canSubmit) return;\n setFormError(null);\n setAttachWarnings([]);\n setCreated(null);\n let team: { id: string; name: string };\n try {\n const result = await throwOnError(\n createTeam({\n variables: {\n input: {\n name: form.name.trim(),\n description: form.description.trim() || undefined,\n leadId: form.leadId || undefined,\n capacity: capacity.value,\n },\n },\n })\n );\n if (!result.data) throw new Error('The team was not created.');\n team = result.data.planmagnetCreateTeam;\n } catch (e) {\n setFormError(e instanceof Error ? e.message : 'The team could not be created.');\n return;\n }\n\n // The team exists now — a project or member that fails to attach is fixable from the team's\n // own detail page, so it is reported here, not treated as the create having failed.\n const warnings: string[] = [];\n if (projectIds.size > 0) {\n try {\n await throwOnError(\n addProjects({ variables: { id: team.id, input: { projectIds: [...projectIds] } } })\n );\n } catch (e) {\n warnings.push(\n `Projects could not be added: ${e instanceof Error ? e.message : 'unknown error'}`\n );\n }\n }\n if (memberIds.size > 0) {\n try {\n await throwOnError(\n addMembers({ variables: { id: team.id, input: { actorIds: [...memberIds] } } })\n );\n } catch (e) {\n warnings.push(\n `Members could not be added: ${e instanceof Error ? e.message : 'unknown error'}`\n );\n }\n }\n\n setCreated(team);\n setAttachWarnings(warnings);\n setForm(EMPTY_FORM);\n setProjectIds(new Set());\n setMemberIds(new Set());\n setMemberSearch('');\n };\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n );\n }\n if (error) {\n return <div className=\"p-6 text-destructive\">Error: {error.message}</div>;\n }\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Create Team</h1>\n <p className=\"text-sm text-muted-foreground\">\n A team can own its own cross-project sprints. Adding someone here does not grant them\n access to the team&apos;s projects — that stays controlled by each person&apos;s own\n workspace role.\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/team/teams-page')}>\n <X className=\"mr-1 h-4 w-4\" />\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={handleCreate}\n disabled={!canSubmit}\n data-testid=\"team-create-submit\"\n >\n <Save className=\"mr-1 h-4 w-4\" />\n {creating ? 'Creating…' : 'Create Team'}\n </Button>\n </div>\n </div>\n\n {created && (\n <div\n role=\"status\"\n className=\"rounded-md border border-border bg-muted p-3 text-sm text-status-success-text flex items-center justify-between gap-3\"\n data-testid=\"team-created\"\n >\n <span>Team &quot;{created.name}&quot; created.</span>\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => navigate(detailPath('/team/team-detail-page', created.id))}\n >\n View team\n <ArrowRight className=\"ml-1 h-4 w-4\" />\n </Button>\n </div>\n )}\n {attachWarnings.length > 0 && (\n <div role=\"alert\" className=\"space-y-1\">\n {attachWarnings.map((w) => (\n <p key={w} className=\"text-sm text-destructive\">\n {w}\n </p>\n ))}\n </div>\n )}\n {formError && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n {formError}\n </p>\n )}\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Users className=\"h-4 w-4\" />\n Team Details\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label htmlFor=\"new-team-name\" className=\"text-sm font-medium\">\n Team Name\n </label>\n <Input\n id=\"new-team-name\"\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n aria-invalid={nameInvalid}\n className=\"mt-1\"\n placeholder=\"e.g. Platform Engineering\"\n />\n </div>\n <div>\n <label htmlFor=\"new-team-description\" className=\"text-sm font-medium\">\n Description\n </label>\n <textarea\n id=\"new-team-description\"\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n placeholder=\"Describe the team's mission and responsibilities...\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label htmlFor=\"new-team-lead\" className=\"text-sm font-medium\">\n Team Lead\n </label>\n <div className=\"mt-1\">\n <AssigneeSelect\n id=\"new-team-lead\"\n value={form.leadId}\n onChange={(next) => setForm({ ...form, leadId: next })}\n noneLabel=\"No lead\"\n />\n </div>\n </div>\n <div>\n <label htmlFor=\"new-team-capacity\" className=\"text-sm font-medium\">\n Capacity (story points)\n </label>\n <Input\n id=\"new-team-capacity\"\n type=\"number\"\n min={0}\n step={1}\n value={form.capacity}\n onChange={(e) => setForm({ ...form, capacity: e.target.value })}\n aria-invalid={capacity.invalid}\n className=\"mt-1\"\n placeholder=\"e.g. 60\"\n />\n {capacity.invalid && (\n <p role=\"alert\" className=\"mt-1 text-xs text-destructive\">\n Capacity must be a whole number, 0 or more.\n </p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FolderKanban className=\"h-4 w-4\" />\n Projects ({projectIds.size} selected)\n </CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-xs text-muted-foreground mb-2\">\n A team sprint can only hold work items from a project checked here. More can be added\n later from the team page.\n </p>\n <div className=\"max-h-56 overflow-y-auto space-y-1\">\n {projects.length === 0 && (\n <p className=\"text-sm text-muted-foreground py-2\">\n No projects in this workspace yet.\n </p>\n )}\n {projects.map((p) => {\n const inputId = `new-team-project-${p.id}`;\n return (\n <label\n key={p.id}\n htmlFor={inputId}\n className=\"flex items-center gap-3 border rounded-md p-2 text-sm cursor-pointer hover:bg-muted\"\n >\n <Checkbox\n id={inputId}\n checked={projectIds.has(p.id)}\n onCheckedChange={(checked) => toggleProject(p.id, checked === true)}\n />\n <span className=\"min-w-0 flex-1 truncate\">\n <span className=\"text-muted-foreground mr-2\">{p.key}</span>\n {p.name}\n </span>\n </label>\n );\n })}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Users className=\"h-4 w-4\" />\n Members ({memberIds.size} selected)\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <Input\n value={memberSearch}\n onChange={(e) => setMemberSearch(e.target.value)}\n placeholder=\"Search workspace members\"\n aria-label=\"Search workspace members\"\n />\n <div className=\"max-h-56 overflow-y-auto space-y-1\">\n {directory.loading && directory.members.length === 0 && (\n <p className=\"text-sm text-muted-foreground py-2\">Loading members…</p>\n )}\n {!directory.loading && directory.members.length === 0 && (\n <p className=\"text-sm text-muted-foreground py-2\">No matching members.</p>\n )}\n {directory.members.map((m) => {\n const inputId = `new-team-member-${m.id}`;\n return (\n <label\n key={m.id}\n htmlFor={inputId}\n className=\"flex items-center gap-3 border rounded-md p-2 text-sm cursor-pointer hover:bg-muted\"\n >\n <Checkbox\n id={inputId}\n checked={memberIds.has(m.id)}\n onCheckedChange={(checked) => toggleMember(m.id, checked === true)}\n />\n <span className=\"min-w-0 flex-1 truncate\">\n {m.name}\n {m.email && <span className=\"text-muted-foreground\"> &middot; {m.email}</span>}\n </span>\n </label>\n );\n })}\n {directory.hasMore && (\n <button\n type=\"button\"\n className=\"w-full py-1 text-xs text-primary hover:underline\"\n onClick={directory.fetchMore}\n >\n Show more members\n </button>\n )}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function TeamTeamDetailPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TeamTeamDetailPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamTeamDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/TeamTeamDetailPagePage.tsx"],"names":[],"mappings":"AA2FA,wBAAgB,sBAAsB,4CAqLrC"}