@burdenoff/microfe-planmagnet 2026.1002.2 → 2026.1002.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 (154) hide show
  1. package/dist/generated/wspace-operations.d.ts +574 -0
  2. package/dist/generated/wspace-operations.d.ts.map +1 -1
  3. package/dist/generated/wspace-types.d.ts +486 -16
  4. package/dist/generated/wspace-types.d.ts.map +1 -1
  5. package/dist/index.js +8 -8
  6. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  7. package/dist/planmagnet/PlanMagnetRoot.js +174 -168
  8. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  9. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  10. package/dist/planmagnet/PlanMagnetRoutes.js +63 -59
  11. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  12. package/dist/planmagnet/board/BulkActions.d.ts.map +1 -1
  13. package/dist/planmagnet/board/BulkActions.js +106 -55
  14. package/dist/planmagnet/board/BulkActions.js.map +1 -1
  15. package/dist/planmagnet/controls/Pickers.d.ts +3 -3
  16. package/dist/planmagnet/controls/Pickers.js.map +1 -1
  17. package/dist/planmagnet/dashboards/DashboardUI.d.ts +0 -4
  18. package/dist/planmagnet/dashboards/DashboardUI.d.ts.map +1 -1
  19. package/dist/planmagnet/dashboards/DashboardUI.js +6 -13
  20. package/dist/planmagnet/dashboards/DashboardUI.js.map +1 -1
  21. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.d.ts.map +1 -1
  22. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.js +70 -59
  23. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.js.map +1 -1
  24. package/dist/planmagnet/forecast/ResourceForecastCard.js +1 -1
  25. package/dist/planmagnet/forecast/ResourceForecastCard.js.map +1 -1
  26. package/dist/planmagnet/index.d.ts +1 -1
  27. package/dist/planmagnet/index.d.ts.map +1 -1
  28. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.d.ts +3 -3
  29. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.d.ts.map +1 -1
  30. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.js +26 -19
  31. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.js.map +1 -1
  32. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.d.ts +2 -2
  33. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.d.ts.map +1 -1
  34. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.js +18 -12
  35. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.js.map +1 -1
  36. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.d.ts +2 -0
  37. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.d.ts.map +1 -0
  38. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.js +251 -0
  39. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.js.map +1 -0
  40. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
  41. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +94 -92
  42. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
  43. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -1
  44. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +116 -114
  45. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +1 -1
  46. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
  47. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +174 -159
  48. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
  49. package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +1 -1
  50. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +159 -145
  51. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +1 -1
  52. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -1
  53. package/dist/planmagnet/pages/TasksEditTaskPagePage.js +161 -143
  54. package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
  55. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
  56. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +157 -155
  57. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
  58. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.d.ts.map +1 -1
  59. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js +97 -99
  60. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js.map +1 -1
  61. package/dist/planmagnet/product/FeatureLinkPanels.js +66 -66
  62. package/dist/planmagnet/product/ProductFeatureControls.js +38 -38
  63. package/dist/planmagnet/product/ProductFeatureLinkCard.js +8 -8
  64. package/dist/planmagnet/product/ProductLineControls.js +83 -83
  65. package/dist/planmagnet/product/ProductTeamsPanel.js +6 -6
  66. package/dist/planmagnet/product/routes.d.ts +6 -0
  67. package/dist/planmagnet/product/routes.d.ts.map +1 -1
  68. package/dist/planmagnet/product/routes.js +2 -2
  69. package/dist/planmagnet/product/routes.js.map +1 -1
  70. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.d.ts +20 -0
  71. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.d.ts.map +1 -0
  72. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.js +55 -0
  73. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.js.map +1 -0
  74. package/dist/planmagnet/satisfaction/SatisfactionFigures.d.ts +30 -0
  75. package/dist/planmagnet/satisfaction/SatisfactionFigures.d.ts.map +1 -0
  76. package/dist/planmagnet/satisfaction/SatisfactionFigures.js +282 -0
  77. package/dist/planmagnet/satisfaction/SatisfactionFigures.js.map +1 -0
  78. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.d.ts +9 -0
  79. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.d.ts.map +1 -0
  80. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.js +390 -0
  81. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.js.map +1 -0
  82. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.d.ts +17 -0
  83. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.d.ts.map +1 -0
  84. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.js +77 -0
  85. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.js.map +1 -0
  86. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.d.ts +18 -0
  87. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.d.ts.map +1 -0
  88. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.js +87 -0
  89. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.js.map +1 -0
  90. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.d.ts +13 -0
  91. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.d.ts.map +1 -0
  92. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.js +326 -0
  93. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.js.map +1 -0
  94. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.d.ts +23 -0
  95. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.d.ts.map +1 -0
  96. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.js +258 -0
  97. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.js.map +1 -0
  98. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.d.ts +6 -0
  99. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.d.ts.map +1 -0
  100. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.js +56 -0
  101. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.js.map +1 -0
  102. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.d.ts +16 -0
  103. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.d.ts.map +1 -0
  104. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.js +102 -0
  105. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.js.map +1 -0
  106. package/dist/planmagnet/satisfaction/satisfaction.d.ts +154 -0
  107. package/dist/planmagnet/satisfaction/satisfaction.d.ts.map +1 -0
  108. package/dist/planmagnet/satisfaction/satisfaction.js +210 -0
  109. package/dist/planmagnet/satisfaction/satisfaction.js.map +1 -0
  110. package/dist/planmagnet/satisfaction/satisfactionCsv.d.ts +108 -0
  111. package/dist/planmagnet/satisfaction/satisfactionCsv.d.ts.map +1 -0
  112. package/dist/planmagnet/satisfaction/satisfactionCsv.js +211 -0
  113. package/dist/planmagnet/satisfaction/satisfactionCsv.js.map +1 -0
  114. package/dist/planmagnet/satisfaction/satisfactionForm.d.ts +90 -0
  115. package/dist/planmagnet/satisfaction/satisfactionForm.d.ts.map +1 -0
  116. package/dist/planmagnet/satisfaction/satisfactionForm.js +90 -0
  117. package/dist/planmagnet/satisfaction/satisfactionForm.js.map +1 -0
  118. package/dist/planmagnet/satisfaction/satisfactionOperations.d.ts +116 -0
  119. package/dist/planmagnet/satisfaction/satisfactionOperations.d.ts.map +1 -0
  120. package/dist/planmagnet/satisfaction/satisfactionOperations.js +86 -0
  121. package/dist/planmagnet/satisfaction/satisfactionOperations.js.map +1 -0
  122. package/dist/planmagnet/satisfaction/useSatisfactionAccess.d.ts +20 -0
  123. package/dist/planmagnet/satisfaction/useSatisfactionAccess.d.ts.map +1 -0
  124. package/dist/planmagnet/satisfaction/useSatisfactionAccess.js +31 -0
  125. package/dist/planmagnet/satisfaction/useSatisfactionAccess.js.map +1 -0
  126. package/dist/planmagnet/skills/RequiredSkillsEditor.d.ts +35 -0
  127. package/dist/planmagnet/skills/RequiredSkillsEditor.d.ts.map +1 -0
  128. package/dist/planmagnet/skills/RequiredSkillsEditor.js +124 -0
  129. package/dist/planmagnet/skills/RequiredSkillsEditor.js.map +1 -0
  130. package/dist/planmagnet/skills/SkillChips.d.ts +30 -0
  131. package/dist/planmagnet/skills/SkillChips.d.ts.map +1 -0
  132. package/dist/planmagnet/skills/SkillChips.js +57 -0
  133. package/dist/planmagnet/skills/SkillChips.js.map +1 -0
  134. package/dist/planmagnet/skills/SkillCoverageCard.d.ts +24 -0
  135. package/dist/planmagnet/skills/SkillCoverageCard.d.ts.map +1 -0
  136. package/dist/planmagnet/skills/SkillCoverageCard.js +256 -0
  137. package/dist/planmagnet/skills/SkillCoverageCard.js.map +1 -0
  138. package/dist/planmagnet/skills/WorkItemRequiredSkills.d.ts +10 -0
  139. package/dist/planmagnet/skills/WorkItemRequiredSkills.d.ts.map +1 -0
  140. package/dist/planmagnet/skills/WorkItemRequiredSkills.js +65 -0
  141. package/dist/planmagnet/skills/WorkItemRequiredSkills.js.map +1 -0
  142. package/dist/planmagnet/skills/skillOperations.d.ts +52 -0
  143. package/dist/planmagnet/skills/skillOperations.d.ts.map +1 -0
  144. package/dist/planmagnet/skills/skillOperations.js +44 -0
  145. package/dist/planmagnet/skills/skillOperations.js.map +1 -0
  146. package/dist/planmagnet/skills/skillTags.d.ts +103 -0
  147. package/dist/planmagnet/skills/skillTags.d.ts.map +1 -0
  148. package/dist/planmagnet/skills/skillTags.js +115 -0
  149. package/dist/planmagnet/skills/skillTags.js.map +1 -0
  150. package/dist/planmagnet/skills/useRequiredSkillsDraft.d.ts +28 -0
  151. package/dist/planmagnet/skills/useRequiredSkillsDraft.d.ts.map +1 -0
  152. package/dist/planmagnet/skills/useRequiredSkillsDraft.js +30 -0
  153. package/dist/planmagnet/skills/useRequiredSkillsDraft.js.map +1 -0
  154. package/package.json +1 -1
@@ -1,16 +1,19 @@
1
1
  import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
2
- import { throwOnError as n } from "../utils/mutationResult.js";
3
- import { AssigneeSelect as r, WORK_ITEM_PRIORITIES as i } from "../controls/WorkItemControls.js";
4
- import { parseEstimateHours as a, parseIntField as o } from "../utils/formValidation.js";
5
- import { MilestoneSelect as s } from "../milestones/MilestoneControls.js";
6
- import { useState as c } from "react";
7
- import { CheckSquare as l, Save as u, X as d } from "lucide-react";
8
- import { gql as f } from "@apollo/client";
9
- import { useMutation as p, useQuery as m } from "@apollo/client/react";
10
- import { jsx as h, jsxs as g } from "react/jsx-runtime";
11
- import { Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x, Input as S } from "@burdenoff/fe-libs/ui";
2
+ import { useTr as n } from "../../shared/hooks/useTr.js";
3
+ import { throwOnError as r } from "../utils/mutationResult.js";
4
+ import { AssigneeSelect as i, WORK_ITEM_PRIORITIES as a } from "../controls/WorkItemControls.js";
5
+ import { parseEstimateHours as o, parseIntField as s } from "../utils/formValidation.js";
6
+ import { requiredSkillsRefusal as c } from "../skills/skillTags.js";
7
+ import { MilestoneSelect as l } from "../milestones/MilestoneControls.js";
8
+ import { RequiredSkillsField as u } from "../skills/RequiredSkillsEditor.js";
9
+ import { useState as d } from "react";
10
+ import { CheckSquare as f, Save as p, X as m } from "lucide-react";
11
+ import { gql as h } from "@apollo/client";
12
+ import { useMutation as g, useQuery as _ } from "@apollo/client/react";
13
+ import { jsx as v, jsxs as y } from "react/jsx-runtime";
14
+ import { Button as b, Card as x, CardContent as S, CardHeader as C, CardTitle as w, Input as T } from "@burdenoff/fe-libs/ui";
12
15
  //#region src/planmagnet/pages/TasksCreateTaskPagePage.tsx
13
- var C = f`
16
+ var E = h`
14
17
  mutation CreateWorkItem($input: PlanmagnetCreateWorkItemInput!) {
15
18
  planmagnetCreateWorkItem(input: $input) {
16
19
  id
@@ -26,7 +29,7 @@ var C = f`
26
29
  createdAt
27
30
  }
28
31
  }
29
- `, w = f`
32
+ `, D = h`
30
33
  query GetProjectsForTaskCreate($workspaceId: ID!) {
31
34
  planmagnetProjects(workspaceId: $workspaceId, pagination: { first: 100 }) {
32
35
  items {
@@ -36,7 +39,7 @@ var C = f`
36
39
  }
37
40
  }
38
41
  }
39
- `, T = f`
42
+ `, O = h`
40
43
  query GetSprintsForTaskCreate($workspaceId: ID!, $projectId: String) {
41
44
  planmagnetSprints(
42
45
  workspaceId: $workspaceId
@@ -50,13 +53,13 @@ var C = f`
50
53
  }
51
54
  }
52
55
  }
53
- `, E = new Set([
56
+ `, k = new Set([
54
57
  "PLANNING",
55
58
  "ACTIVE",
56
59
  "REVIEW"
57
60
  ]);
58
- function D() {
59
- let { workspaceId: f } = e(), [D, O] = c({
61
+ function A() {
62
+ let { workspaceId: h } = e(), A = n(), [j, M] = d({
60
63
  title: "",
61
64
  description: "",
62
65
  projectId: "",
@@ -69,122 +72,124 @@ function D() {
69
72
  assigneeId: "",
70
73
  dueDate: "",
71
74
  estimateHours: ""
72
- }), { data: k, loading: A, error: j, refetch: M } = m(w, {
73
- variables: { workspaceId: f ?? "default" },
74
- skip: !f
75
- }), N = k?.planmagnetProjects?.items ?? [], P = D.projectId || N[0]?.id || "", { data: F, loading: I } = m(T, {
75
+ }), { data: N, loading: P, error: F, refetch: I } = _(D, {
76
+ variables: { workspaceId: h ?? "default" },
77
+ skip: !h
78
+ }), L = N?.planmagnetProjects?.items ?? [], R = j.projectId || L[0]?.id || "", { data: z, loading: B } = _(O, {
76
79
  variables: {
77
- workspaceId: f ?? "default",
78
- projectId: P
80
+ workspaceId: h ?? "default",
81
+ projectId: R
79
82
  },
80
- skip: !f || !P
81
- }), L = (F?.planmagnetSprints?.items ?? []).filter((e) => E.has(e.status)), R = t(), [z, { loading: B }] = p(C, { refetchQueries: ["GetWorkItems"] }), [V, H] = c(null), U = o(D.storyPoints, { min: 0 }), W = a(D.estimateHours);
82
- return /* @__PURE__ */ g("div", {
83
+ skip: !h || !R
84
+ }), V = (z?.planmagnetSprints?.items ?? []).filter((e) => k.has(e.status)), H = t(), [U, { loading: W }] = g(E, { refetchQueries: ["GetWorkItems"] }), [G, K] = d(null), [q, J] = d([]), [Y, X] = d(null), Z = s(j.storyPoints, { min: 0 }), Q = o(j.estimateHours);
85
+ return /* @__PURE__ */ y("div", {
83
86
  className: "space-y-6 p-6 max-w-4xl",
84
87
  children: [
85
- /* @__PURE__ */ g("div", {
88
+ /* @__PURE__ */ y("div", {
86
89
  className: "flex items-center justify-between",
87
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h1", {
90
+ children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
88
91
  className: "text-2xl font-semibold",
89
92
  children: "Create Task"
90
- }), /* @__PURE__ */ h("p", {
93
+ }), /* @__PURE__ */ v("p", {
91
94
  className: "text-sm text-muted-foreground",
92
95
  children: "Add a new task to the project backlog."
93
- })] }), /* @__PURE__ */ g("div", {
96
+ })] }), /* @__PURE__ */ y("div", {
94
97
  className: "flex gap-2",
95
- children: [/* @__PURE__ */ g(_, {
98
+ children: [/* @__PURE__ */ y(b, {
96
99
  variant: "outline",
97
100
  size: "sm",
98
- onClick: () => R("/tasks/tasks-page"),
99
- children: [/* @__PURE__ */ h(d, { className: "mr-1 h-4 w-4" }), "Cancel"]
100
- }), /* @__PURE__ */ g(_, {
101
+ onClick: () => H("/tasks/tasks-page"),
102
+ children: [/* @__PURE__ */ v(m, { className: "mr-1 h-4 w-4" }), "Cancel"]
103
+ }), /* @__PURE__ */ y(b, {
101
104
  size: "sm",
102
105
  onClick: async () => {
103
- if (!(!D.title.trim() || !P || !f || U.invalid || W.invalid)) {
104
- H(null);
106
+ if (!(!j.title.trim() || !R || !h || Z.invalid || Q.invalid)) {
107
+ K(null), X(null);
105
108
  try {
106
- let e = (await n(z({ variables: { input: {
107
- projectId: P,
108
- title: D.title,
109
- description: D.description || void 0,
110
- type: D.type,
111
- priority: D.priority,
112
- storyPoints: U.value,
113
- labels: D.labels ? D.labels.split(",").map((e) => e.trim()).filter(Boolean) : void 0,
114
- sprintId: D.sprintId || void 0,
115
- milestoneId: D.milestoneId || void 0,
116
- assigneeId: D.assigneeId || void 0,
117
- dueDate: D.dueDate || void 0,
118
- estimateMinutes: W.minutes
109
+ let e = (await r(U({ variables: { input: {
110
+ projectId: R,
111
+ title: j.title,
112
+ description: j.description || void 0,
113
+ type: j.type,
114
+ priority: j.priority,
115
+ storyPoints: Z.value,
116
+ labels: j.labels ? j.labels.split(",").map((e) => e.trim()).filter(Boolean) : void 0,
117
+ sprintId: j.sprintId || void 0,
118
+ milestoneId: j.milestoneId || void 0,
119
+ assigneeId: j.assigneeId || void 0,
120
+ dueDate: j.dueDate || void 0,
121
+ estimateMinutes: Q.minutes,
122
+ requiredSkills: q.length > 0 ? q : void 0
119
123
  } } }))).data?.planmagnetCreateWorkItem?.id;
120
- R(e ? `/tasks/task-detail-page?taskId=${encodeURIComponent(e)}` : "/tasks/tasks-page");
124
+ H(e ? `/tasks/task-detail-page?taskId=${encodeURIComponent(e)}` : "/tasks/tasks-page");
121
125
  } catch (e) {
122
- H(e instanceof Error ? e.message : "The task could not be created.");
126
+ let t = c(e);
127
+ t ? (X(t), K(A("planmagnet.skills.editor.createRefused", "The task was not created: see Required skills below."))) : K(e instanceof Error ? e.message : "The task could not be created.");
123
128
  }
124
129
  }
125
130
  },
126
- disabled: B || !D.title.trim() || !P || U.invalid || W.invalid,
127
- children: [/* @__PURE__ */ h(u, { className: "mr-1 h-4 w-4" }), B ? "Creating..." : "Create Task"]
131
+ disabled: W || !j.title.trim() || !R || Z.invalid || Q.invalid,
132
+ children: [/* @__PURE__ */ v(p, { className: "mr-1 h-4 w-4" }), W ? "Creating..." : "Create Task"]
128
133
  })]
129
134
  })]
130
135
  }),
131
- V && /* @__PURE__ */ h("div", {
136
+ G && /* @__PURE__ */ v("div", {
132
137
  role: "alert",
133
138
  className: "p-3 bg-destructive/10 text-destructive rounded-md text-sm",
134
- children: V
139
+ children: G
135
140
  }),
136
- /* @__PURE__ */ g(v, { children: [/* @__PURE__ */ h(b, { children: /* @__PURE__ */ g(x, {
141
+ /* @__PURE__ */ y(x, { children: [/* @__PURE__ */ v(C, { children: /* @__PURE__ */ y(w, {
137
142
  className: "flex items-center gap-2",
138
- children: [/* @__PURE__ */ h(l, { className: "h-4 w-4" }), "Task Details"]
139
- }) }), /* @__PURE__ */ g(y, {
143
+ children: [/* @__PURE__ */ v(f, { className: "h-4 w-4" }), "Task Details"]
144
+ }) }), /* @__PURE__ */ y(S, {
140
145
  className: "space-y-4",
141
146
  children: [
142
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
147
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
143
148
  className: "text-sm font-medium",
144
149
  children: "Title"
145
- }), /* @__PURE__ */ h(S, {
146
- value: D.title,
147
- onChange: (e) => O({
148
- ...D,
150
+ }), /* @__PURE__ */ v(T, {
151
+ value: j.title,
152
+ onChange: (e) => M({
153
+ ...j,
149
154
  title: e.target.value
150
155
  }),
151
156
  className: "mt-1",
152
157
  placeholder: "e.g. Implement search query parser"
153
158
  })] }),
154
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
159
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
155
160
  className: "text-sm font-medium",
156
161
  children: "Description"
157
- }), /* @__PURE__ */ h("textarea", {
162
+ }), /* @__PURE__ */ v("textarea", {
158
163
  className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[100px]",
159
- value: D.description,
160
- onChange: (e) => O({
161
- ...D,
164
+ value: j.description,
165
+ onChange: (e) => M({
166
+ ...j,
162
167
  description: e.target.value
163
168
  }),
164
169
  placeholder: "Describe the task requirements..."
165
170
  })] }),
166
- /* @__PURE__ */ g("div", {
171
+ /* @__PURE__ */ y("div", {
167
172
  className: "grid grid-cols-3 gap-4",
168
173
  children: [
169
- /* @__PURE__ */ g("div", { children: [
170
- /* @__PURE__ */ h("label", {
174
+ /* @__PURE__ */ y("div", { children: [
175
+ /* @__PURE__ */ v("label", {
171
176
  className: "text-sm font-medium",
172
177
  children: "Project"
173
178
  }),
174
- /* @__PURE__ */ g("select", {
179
+ /* @__PURE__ */ y("select", {
175
180
  className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
176
- value: P,
177
- onChange: (e) => O({
178
- ...D,
181
+ value: R,
182
+ onChange: (e) => M({
183
+ ...j,
179
184
  projectId: e.target.value,
180
185
  sprintId: "",
181
186
  milestoneId: ""
182
187
  }),
183
- children: [N.length === 0 && /* @__PURE__ */ h("option", {
188
+ children: [L.length === 0 && /* @__PURE__ */ v("option", {
184
189
  value: "",
185
190
  disabled: !0,
186
- children: A && !k ? "Loading projects…" : j ? "Projects could not be loaded" : "No projects yet"
187
- }), N.map((e) => /* @__PURE__ */ g("option", {
191
+ children: P && !N ? "Loading projects…" : F ? "Projects could not be loaded" : "No projects yet"
192
+ }), L.map((e) => /* @__PURE__ */ y("option", {
188
193
  value: e.id,
189
194
  children: [
190
195
  e.key,
@@ -193,48 +198,48 @@ function D() {
193
198
  ]
194
199
  }, e.id))]
195
200
  }),
196
- j && /* @__PURE__ */ g("p", {
201
+ F && /* @__PURE__ */ y("p", {
197
202
  role: "alert",
198
203
  className: "mt-1 flex items-center gap-2 text-xs text-destructive",
199
- children: [j.message, /* @__PURE__ */ h(_, {
204
+ children: [F.message, /* @__PURE__ */ v(b, {
200
205
  type: "button",
201
206
  size: "sm",
202
207
  variant: "ghost",
203
208
  className: "h-6 px-2 text-xs",
204
- onClick: () => void M(),
209
+ onClick: () => void I(),
205
210
  children: "Retry"
206
211
  })]
207
212
  }),
208
- !A && !j && k && N.length === 0 && /* @__PURE__ */ h("button", {
213
+ !P && !F && N && L.length === 0 && /* @__PURE__ */ v("button", {
209
214
  type: "button",
210
215
  className: "mt-1 text-xs text-muted-foreground underline",
211
- onClick: () => R("/projects/create-project-page"),
216
+ onClick: () => H("/projects/create-project-page"),
212
217
  children: "Create a project first"
213
218
  })
214
219
  ] }),
215
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
220
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
216
221
  className: "text-sm font-medium",
217
222
  children: "Priority"
218
- }), /* @__PURE__ */ h("select", {
223
+ }), /* @__PURE__ */ v("select", {
219
224
  className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
220
- value: D.priority,
221
- onChange: (e) => O({
222
- ...D,
225
+ value: j.priority,
226
+ onChange: (e) => M({
227
+ ...j,
223
228
  priority: e.target.value
224
229
  }),
225
- children: i.map((e) => /* @__PURE__ */ h("option", {
230
+ children: a.map((e) => /* @__PURE__ */ v("option", {
226
231
  value: e,
227
232
  children: e.toLowerCase()
228
233
  }, e))
229
234
  })] }),
230
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
235
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
231
236
  className: "text-sm font-medium",
232
237
  children: "Type"
233
- }), /* @__PURE__ */ h("select", {
238
+ }), /* @__PURE__ */ v("select", {
234
239
  className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
235
- value: D.type,
236
- onChange: (e) => O({
237
- ...D,
240
+ value: j.type,
241
+ onChange: (e) => M({
242
+ ...j,
238
243
  type: e.target.value
239
244
  }),
240
245
  children: [
@@ -243,70 +248,70 @@ function D() {
243
248
  "TASK",
244
249
  "EPIC",
245
250
  "SUB_TASK"
246
- ].map((e) => /* @__PURE__ */ h("option", {
251
+ ].map((e) => /* @__PURE__ */ v("option", {
247
252
  value: e,
248
253
  children: e.toLowerCase().replace("_", " ")
249
254
  }, e))
250
255
  })] })
251
256
  ]
252
257
  }),
253
- /* @__PURE__ */ g("div", {
258
+ /* @__PURE__ */ y("div", {
254
259
  className: "grid grid-cols-3 gap-4",
255
260
  children: [
256
- /* @__PURE__ */ g("div", { children: [
257
- /* @__PURE__ */ h("label", {
261
+ /* @__PURE__ */ y("div", { children: [
262
+ /* @__PURE__ */ v("label", {
258
263
  htmlFor: "task-story-points",
259
264
  className: "text-sm font-medium",
260
265
  children: "Story Points"
261
266
  }),
262
- /* @__PURE__ */ h(S, {
267
+ /* @__PURE__ */ v(T, {
263
268
  id: "task-story-points",
264
269
  type: "number",
265
270
  min: 0,
266
271
  step: 1,
267
- value: D.storyPoints,
268
- onChange: (e) => O({
269
- ...D,
272
+ value: j.storyPoints,
273
+ onChange: (e) => M({
274
+ ...j,
270
275
  storyPoints: e.target.value
271
276
  }),
272
- "aria-invalid": U.invalid,
277
+ "aria-invalid": Z.invalid,
273
278
  className: "mt-1"
274
279
  }),
275
- U.invalid && /* @__PURE__ */ h("p", {
280
+ Z.invalid && /* @__PURE__ */ v("p", {
276
281
  role: "alert",
277
282
  className: "mt-1 text-xs text-destructive",
278
283
  children: "Story points must be a whole number, 0 or more."
279
284
  })
280
285
  ] }),
281
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
286
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
282
287
  htmlFor: "task-milestone",
283
288
  className: "text-sm font-medium",
284
289
  children: "Milestone"
285
- }), /* @__PURE__ */ h(s, {
290
+ }), /* @__PURE__ */ v(l, {
286
291
  id: "task-milestone",
287
- projectId: P,
288
- value: D.milestoneId,
289
- onChange: (e) => O({
290
- ...D,
292
+ projectId: R,
293
+ value: j.milestoneId,
294
+ onChange: (e) => M({
295
+ ...j,
291
296
  milestoneId: e
292
297
  })
293
298
  })] }),
294
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
299
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
295
300
  htmlFor: "task-sprint",
296
301
  className: "text-sm font-medium",
297
302
  children: "Sprint"
298
- }), /* @__PURE__ */ g("select", {
303
+ }), /* @__PURE__ */ y("select", {
299
304
  id: "task-sprint",
300
305
  className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
301
- value: D.sprintId,
302
- onChange: (e) => O({
303
- ...D,
306
+ value: j.sprintId,
307
+ onChange: (e) => M({
308
+ ...j,
304
309
  sprintId: e.target.value
305
310
  }),
306
- children: [/* @__PURE__ */ h("option", {
311
+ children: [/* @__PURE__ */ v("option", {
307
312
  value: "",
308
- children: I && !F ? "Loading sprints…" : "No sprint"
309
- }), L.map((e) => /* @__PURE__ */ g("option", {
313
+ children: B && !z ? "Loading sprints…" : "No sprint"
314
+ }), V.map((e) => /* @__PURE__ */ y("option", {
310
315
  value: e.id,
311
316
  children: [
312
317
  e.name,
@@ -316,86 +321,95 @@ function D() {
316
321
  ]
317
322
  }, e.id))]
318
323
  })] }),
319
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
324
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
320
325
  className: "text-sm font-medium",
321
326
  children: "Due Date"
322
- }), /* @__PURE__ */ h(S, {
327
+ }), /* @__PURE__ */ v(T, {
323
328
  type: "date",
324
- value: D.dueDate,
325
- onChange: (e) => O({
326
- ...D,
329
+ value: j.dueDate,
330
+ onChange: (e) => M({
331
+ ...j,
327
332
  dueDate: e.target.value
328
333
  }),
329
334
  className: "mt-1"
330
335
  })] })
331
336
  ]
332
337
  }),
333
- /* @__PURE__ */ h("div", {
338
+ /* @__PURE__ */ v("div", {
334
339
  className: "grid grid-cols-3 gap-4",
335
- children: /* @__PURE__ */ g("div", { children: [
336
- /* @__PURE__ */ h("label", {
340
+ children: /* @__PURE__ */ y("div", { children: [
341
+ /* @__PURE__ */ v("label", {
337
342
  htmlFor: "task-estimate-hours",
338
343
  className: "text-sm font-medium",
339
344
  children: "Estimate (hours)"
340
345
  }),
341
- /* @__PURE__ */ h(S, {
346
+ /* @__PURE__ */ v(T, {
342
347
  id: "task-estimate-hours",
343
348
  type: "number",
344
349
  min: 0,
345
350
  step: .25,
346
- value: D.estimateHours,
347
- onChange: (e) => O({
348
- ...D,
351
+ value: j.estimateHours,
352
+ onChange: (e) => M({
353
+ ...j,
349
354
  estimateHours: e.target.value
350
355
  }),
351
- "aria-invalid": W.invalid,
356
+ "aria-invalid": Q.invalid,
352
357
  "aria-describedby": "task-estimate-hint",
353
358
  className: "mt-1"
354
359
  }),
355
- W.invalid ? /* @__PURE__ */ h("p", {
360
+ Q.invalid ? /* @__PURE__ */ v("p", {
356
361
  role: "alert",
357
362
  className: "mt-1 text-xs text-destructive",
358
363
  children: "The estimate must be a number of hours, 0 or more."
359
- }) : /* @__PURE__ */ h("p", {
364
+ }) : /* @__PURE__ */ v("p", {
360
365
  id: "task-estimate-hint",
361
366
  className: "mt-1 text-xs text-muted-foreground",
362
367
  children: "Used as the task's duration on the critical path."
363
368
  })
364
369
  ] })
365
370
  }),
366
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
371
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
367
372
  htmlFor: "task-assignee",
368
373
  className: "text-sm font-medium",
369
374
  children: "Assignee"
370
- }), /* @__PURE__ */ h("div", {
375
+ }), /* @__PURE__ */ v("div", {
371
376
  className: "mt-1",
372
- children: /* @__PURE__ */ h(r, {
377
+ children: /* @__PURE__ */ v(i, {
373
378
  id: "task-assignee",
374
- value: D.assigneeId,
375
- onChange: (e) => O({
376
- ...D,
379
+ value: j.assigneeId,
380
+ onChange: (e) => M({
381
+ ...j,
377
382
  assigneeId: e
378
383
  })
379
384
  })
380
385
  })] }),
381
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
386
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
382
387
  className: "text-sm font-medium",
383
388
  children: "Labels (comma-separated)"
384
- }), /* @__PURE__ */ h(S, {
385
- value: D.labels,
386
- onChange: (e) => O({
387
- ...D,
389
+ }), /* @__PURE__ */ v(T, {
390
+ value: j.labels,
391
+ onChange: (e) => M({
392
+ ...j,
388
393
  labels: e.target.value
389
394
  }),
390
395
  className: "mt-1",
391
396
  placeholder: "backend, search, performance"
392
- })] })
397
+ })] }),
398
+ /* @__PURE__ */ v(u, {
399
+ id: "task-required-skills",
400
+ value: q,
401
+ onChange: (e) => {
402
+ J(e), X(null);
403
+ },
404
+ disabled: W,
405
+ serverError: Y
406
+ })
393
407
  ]
394
408
  })] })
395
409
  ]
396
410
  });
397
411
  }
398
412
  //#endregion
399
- export { D as TasksCreateTaskPagePage };
413
+ export { A as TasksCreateTaskPagePage };
400
414
 
401
415
  //# sourceMappingURL=TasksCreateTaskPagePage.js.map