@burdenoff/microfe-planmagnet 2026.927.3 → 2026.927.5

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 (166) hide show
  1. package/dist/generated/global-types.d.ts +9 -1
  2. package/dist/generated/global-types.d.ts.map +1 -1
  3. package/dist/generated/wspace-operations.d.ts +0 -12
  4. package/dist/generated/wspace-operations.d.ts.map +1 -1
  5. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  6. package/dist/planmagnet/PlanMagnetRoutes.js +14 -10
  7. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  8. package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +1 -1
  9. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +149 -127
  10. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +1 -1
  11. package/dist/planmagnet/controls/FeatureControls.d.ts +26 -0
  12. package/dist/planmagnet/controls/FeatureControls.d.ts.map +1 -0
  13. package/dist/planmagnet/controls/FeatureControls.js +321 -0
  14. package/dist/planmagnet/controls/FeatureControls.js.map +1 -0
  15. package/dist/planmagnet/controls/FeatureTriage.d.ts +21 -0
  16. package/dist/planmagnet/controls/FeatureTriage.d.ts.map +1 -0
  17. package/dist/planmagnet/controls/FeatureTriage.js +398 -0
  18. package/dist/planmagnet/controls/FeatureTriage.js.map +1 -0
  19. package/dist/planmagnet/controls/MilestoneControls.d.ts +17 -0
  20. package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -0
  21. package/dist/planmagnet/controls/MilestoneControls.js +203 -0
  22. package/dist/planmagnet/controls/MilestoneControls.js.map +1 -0
  23. package/dist/planmagnet/controls/ObjectiveControls.d.ts +31 -0
  24. package/dist/planmagnet/controls/ObjectiveControls.d.ts.map +1 -0
  25. package/dist/planmagnet/controls/ObjectiveControls.js +296 -0
  26. package/dist/planmagnet/controls/ObjectiveControls.js.map +1 -0
  27. package/dist/planmagnet/controls/Pickers.d.ts +26 -0
  28. package/dist/planmagnet/controls/Pickers.d.ts.map +1 -0
  29. package/dist/planmagnet/controls/Pickers.js +171 -0
  30. package/dist/planmagnet/controls/Pickers.js.map +1 -0
  31. package/dist/planmagnet/controls/ProjectControls.d.ts.map +1 -1
  32. package/dist/planmagnet/controls/ProjectControls.js +47 -44
  33. package/dist/planmagnet/controls/ProjectControls.js.map +1 -1
  34. package/dist/planmagnet/controls/ReleaseControls.d.ts +14 -0
  35. package/dist/planmagnet/controls/ReleaseControls.d.ts.map +1 -0
  36. package/dist/planmagnet/controls/ReleaseControls.js +111 -0
  37. package/dist/planmagnet/controls/ReleaseControls.js.map +1 -0
  38. package/dist/planmagnet/controls/WorkItemControls.d.ts.map +1 -1
  39. package/dist/planmagnet/controls/WorkItemControls.js +68 -65
  40. package/dist/planmagnet/controls/WorkItemControls.js.map +1 -1
  41. package/dist/planmagnet/hooks/useCounts.d.ts +39 -0
  42. package/dist/planmagnet/hooks/useCounts.d.ts.map +1 -0
  43. package/dist/planmagnet/hooks/useCounts.js +209 -0
  44. package/dist/planmagnet/hooks/useCounts.js.map +1 -0
  45. package/dist/planmagnet/import/exportColumns.d.ts +52 -0
  46. package/dist/planmagnet/import/exportColumns.d.ts.map +1 -0
  47. package/dist/planmagnet/import/exportColumns.js +81 -0
  48. package/dist/planmagnet/import/exportColumns.js.map +1 -0
  49. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
  50. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +255 -242
  51. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  52. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +1 -1
  53. package/dist/planmagnet/pages/DashboardDashboardPagePage.js +199 -160
  54. package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +1 -1
  55. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
  56. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +190 -153
  57. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
  58. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.d.ts.map +1 -1
  59. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js +63 -56
  60. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js.map +1 -1
  61. package/dist/planmagnet/pages/GoalsGoalsPagePage.d.ts.map +1 -1
  62. package/dist/planmagnet/pages/GoalsGoalsPagePage.js +2 -7
  63. package/dist/planmagnet/pages/GoalsGoalsPagePage.js.map +1 -1
  64. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +1 -1
  65. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js +229 -214
  66. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +1 -1
  67. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
  68. package/dist/planmagnet/pages/ProductsEditProductPagePage.js +145 -114
  69. package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
  70. package/dist/planmagnet/pages/ProductsEditReleasePagePage.d.ts.map +1 -1
  71. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js +134 -105
  72. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js.map +1 -1
  73. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts.map +1 -1
  74. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js +97 -117
  75. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +1 -1
  76. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -1
  77. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +169 -110
  78. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +1 -1
  79. package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +1 -1
  80. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +117 -103
  81. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +1 -1
  82. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -1
  83. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +119 -94
  84. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
  85. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
  86. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +4 -8
  87. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
  88. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +1 -1
  89. package/dist/planmagnet/pages/ProductsProductsPagePage.js +85 -90
  90. package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
  91. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -1
  92. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +118 -107
  93. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +1 -1
  94. package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +1 -1
  95. package/dist/planmagnet/pages/ProductsReleasesPagePage.js +4 -2
  96. package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +1 -1
  97. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +1 -1
  98. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +48 -71
  99. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
  100. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -1
  101. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +17 -13
  102. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
  103. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +1 -1
  104. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js +1 -1
  105. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js.map +1 -1
  106. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts.map +1 -1
  107. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js +55 -63
  108. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js.map +1 -1
  109. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
  110. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +11 -8
  111. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
  112. package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +1 -1
  113. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js +1 -1
  114. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js.map +1 -1
  115. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
  116. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +152 -139
  117. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
  118. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +1 -1
  119. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +75 -74
  120. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts +7 -0
  122. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +1 -1
  123. package/dist/planmagnet/pages/ReportsReportsPagePage.js +39 -201
  124. package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +1 -1
  125. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
  126. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +118 -99
  127. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
  128. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +123 -128
  129. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +1 -1
  130. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -1
  131. package/dist/planmagnet/pages/TasksEditTaskPagePage.js +139 -107
  132. package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
  133. package/dist/planmagnet/pages/TasksImportPagePage.d.ts +2 -0
  134. package/dist/planmagnet/pages/TasksImportPagePage.d.ts.map +1 -0
  135. package/dist/planmagnet/pages/TasksImportPagePage.js +309 -0
  136. package/dist/planmagnet/pages/TasksImportPagePage.js.map +1 -0
  137. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
  138. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +173 -126
  139. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
  140. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -1
  141. package/dist/planmagnet/pages/TasksTasksPagePage.js +111 -104
  142. package/dist/planmagnet/pages/TasksTasksPagePage.js.map +1 -1
  143. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
  144. package/dist/planmagnet/pages/TeamTeamPagePage.js +99 -177
  145. package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
  146. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts.map +1 -1
  147. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js +8 -4
  148. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js.map +1 -1
  149. package/dist/planmagnet/releases/ReleaseWorkItemsCard.d.ts.map +1 -1
  150. package/dist/planmagnet/releases/ReleaseWorkItemsCard.js +10 -4
  151. package/dist/planmagnet/releases/ReleaseWorkItemsCard.js.map +1 -1
  152. package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +1 -1
  153. package/dist/planmagnet/roadmaps/RoadmapControls.js +150 -137
  154. package/dist/planmagnet/roadmaps/RoadmapControls.js.map +1 -1
  155. package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
  156. package/dist/planmagnet/sprints/SprintControls.js +32 -30
  157. package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
  158. package/dist/planmagnet/utils/mutationResult.d.ts +10 -0
  159. package/dist/planmagnet/utils/mutationResult.d.ts.map +1 -1
  160. package/dist/planmagnet/utils/mutationResult.js +2 -1
  161. package/dist/planmagnet/utils/mutationResult.js.map +1 -1
  162. package/dist/planmagnet/utils/rowNavigation.d.ts +2 -0
  163. package/dist/planmagnet/utils/rowNavigation.d.ts.map +1 -1
  164. package/dist/planmagnet/utils/rowNavigation.js +9 -8
  165. package/dist/planmagnet/utils/rowNavigation.js.map +1 -1
  166. package/package.json +1 -1
@@ -1,19 +1,20 @@
1
1
  import { usePlanMagnetNavigate as e } from "../providers/PlanMagnetProvider.js";
2
2
  import { PersonName as t } from "../people/People.js";
3
- import { throwOnError as n } from "../utils/mutationResult.js";
4
- import { MarkdownEditor as ee } from "../../components/MarkdownEditor.js";
5
- import { DOC_STATUSES as te, DocStatusBadge as ne } from "../docs/DocStatusBadge.js";
3
+ import { LEAVES_PAGE_CONTEXT as n, throwOnError as ee } from "../utils/mutationResult.js";
4
+ import { WorkItemSearchSelect as te } from "../controls/Pickers.js";
5
+ import { MarkdownEditor as ne } from "../../components/MarkdownEditor.js";
6
+ import { DOC_STATUSES as re, DocStatusBadge as ie } from "../docs/DocStatusBadge.js";
6
7
  import { useState as r } from "react";
7
- import { ArrowLeft as re, History as ie, Link2 as ae, X as oe } from "lucide-react";
8
- import { useSearchParams as se } from "react-router";
9
- import { gql as i } from "@apollo/client";
10
- import { useApolloClient as ce, useMutation as a, useQuery as le } from "@apollo/client/react";
11
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
12
- import { AlertDialog as c, AlertDialogAction as l, AlertDialogCancel as u, AlertDialogContent as d, AlertDialogDescription as f, AlertDialogFooter as p, AlertDialogHeader as m, AlertDialogTitle as h, AlertDialogTrigger as g, Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x, Input as S } from "@burdenoff/fe-libs/ui";
13
- import { Markdown as C } from "@burdenoff/fe-libs/shared/components";
14
- import { clearGraphqlFetchResponseCache as ue } from "@burdenoff/fe-libs/shared/graphql";
8
+ import { ArrowLeft as ae, History as oe, Link2 as i, X as se } from "lucide-react";
9
+ import { useSearchParams as ce } from "react-router";
10
+ import { gql as a } from "@apollo/client";
11
+ import { useApolloClient as le, useMutation as o, useQuery as ue } from "@apollo/client/react";
12
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
13
+ import { AlertDialog as l, AlertDialogAction as u, AlertDialogCancel as d, AlertDialogContent as f, AlertDialogDescription as p, AlertDialogFooter as m, AlertDialogHeader as h, AlertDialogTitle as g, AlertDialogTrigger as _, Button as v, Card as y, CardContent as b, CardHeader as x, CardTitle as S, Input as C } from "@burdenoff/fe-libs/ui";
14
+ import { Markdown as w } from "@burdenoff/fe-libs/shared/components";
15
+ import { clearGraphqlFetchResponseCache as de } from "@burdenoff/fe-libs/shared/graphql";
15
16
  //#region src/planmagnet/pages/DocsDocDetailPagePage.tsx
16
- var w = i`
17
+ var T = a`
17
18
  query DocDetail($id: ID!) {
18
19
  planmagnetDoc(id: $id) {
19
20
  id
@@ -41,7 +42,7 @@ var w = i`
41
42
  }
42
43
  }
43
44
  }
44
- `, T = i`
45
+ `, fe = a`
45
46
  mutation DocUpdate($id: ID!, $input: PlanmagnetUpdateDocInput!) {
46
47
  planmagnetUpdateDoc(id: $id, input: $input) {
47
48
  id
@@ -49,119 +50,131 @@ var w = i`
49
50
  status
50
51
  }
51
52
  }
52
- `, E = i`
53
+ `, pe = a`
53
54
  mutation DocRevert($id: ID!, $toVersion: Int!, $expectedVersion: Int) {
54
55
  planmagnetRevertDoc(id: $id, toVersion: $toVersion, expectedVersion: $expectedVersion) {
55
56
  id
56
57
  version
57
58
  }
58
59
  }
59
- `, D = i`
60
+ `, me = a`
60
61
  mutation DocDelete($id: ID!) {
61
62
  planmagnetDeleteDoc(id: $id)
62
63
  }
63
- `, de = i`
64
+ `, he = a`
65
+ mutation DocLinkWorkItem($docId: ID!, $workItemId: ID!) {
66
+ planmagnetLinkDocToWorkItem(docId: $docId, workItemId: $workItemId) {
67
+ id
68
+ }
69
+ }
70
+ `, ge = a`
64
71
  mutation DocUnlinkWorkItem($docId: ID!, $workItemId: ID!) {
65
72
  planmagnetUnlinkDocFromWorkItem(docId: $docId, workItemId: $workItemId)
66
73
  }
67
- `, O = (e, t) => e instanceof Error ? e.message : t, k = (e) => new Date(e).toLocaleString();
68
- function A() {
69
- let [i] = se(), A = i.get("docId") ?? "", j = e(), [M, N] = r(!1), [P, F] = r(""), [I, L] = r(""), [R, z] = r(""), [B, V] = r(null), [H, fe] = r(null), [U, pe] = r(null), { data: W, loading: me, error: G } = le(w, {
70
- variables: { id: A },
71
- skip: !A,
74
+ `, _e = (e, t) => e instanceof Error ? e.message : t, E = (e) => new Date(e).toLocaleString();
75
+ function D() {
76
+ let [a] = ce(), D = a.get("docId") ?? "", O = e(), [k, A] = r(!1), [j, M] = r(""), [N, P] = r(""), [F, I] = r(""), [L, R] = r(null), [z, ve] = r(null), [B, ye] = r(null), { data: V, loading: be, error: H } = ue(T, {
77
+ variables: { id: D },
78
+ skip: !D,
72
79
  fetchPolicy: "cache-and-network"
73
- }), he = ce(), K = {
80
+ }), xe = le(), U = {
74
81
  refetchQueries: ["DocDetail"],
75
82
  awaitRefetchQueries: !0
76
- }, [q, J] = a(T, K), [ge, _e] = a(E, K), [ve, ye] = a(D, { refetchQueries: ["DocsList"] }), [be, xe] = a(de, K), Y = W?.planmagnetDoc, X = J.loading || _e.loading || ye.loading, Z = async (e, t) => {
77
- V(null);
83
+ }, [W, G] = o(fe, U), [Se, Ce] = o(pe, U), [we, Te] = o(me, {
84
+ refetchQueries: ["DocsList"],
85
+ context: n
86
+ }), [Ee, De] = o(ge, U), [K, Oe] = o(he, {
87
+ ...U,
88
+ refetchQueries: ["DocDetail", "GetWorkItemDocs"]
89
+ }), [q, J] = r(""), Y = V?.planmagnetDoc, X = G.loading || Ce.loading || Te.loading, Z = async (e, t) => {
90
+ R(null);
78
91
  try {
79
- return await n(e()), !0;
92
+ return await ee(e()), !0;
80
93
  } catch (e) {
81
- return V(O(e, t)), ue(), await he.query({
82
- query: w,
83
- variables: { id: A },
94
+ return R(_e(e, t)), de(), await xe.query({
95
+ query: T,
96
+ variables: { id: D },
84
97
  fetchPolicy: "network-only"
85
98
  }).catch(() => void 0), !1;
86
99
  }
87
100
  };
88
- if (!A) return /* @__PURE__ */ o("div", {
101
+ if (!D) return /* @__PURE__ */ s("div", {
89
102
  className: "p-6 text-sm text-muted-foreground",
90
103
  children: "No doc selected."
91
104
  });
92
- if (me && !W) return /* @__PURE__ */ o("div", {
105
+ if (be && !V) return /* @__PURE__ */ s("div", {
93
106
  className: "p-6 text-sm text-muted-foreground",
94
107
  children: "Loading doc…"
95
108
  });
96
- if (G && !Y) return /* @__PURE__ */ s("p", {
109
+ if (H && !Y) return /* @__PURE__ */ c("p", {
97
110
  role: "alert",
98
111
  className: "p-6 text-sm text-destructive",
99
- children: ["The doc could not be loaded: ", G.message]
112
+ children: ["The doc could not be loaded: ", H.message]
100
113
  });
101
- if (!Y) return /* @__PURE__ */ s("div", {
114
+ if (!Y) return /* @__PURE__ */ c("div", {
102
115
  className: "space-y-3 p-6",
103
- children: [/* @__PURE__ */ o("p", {
116
+ children: [/* @__PURE__ */ s("p", {
104
117
  className: "text-sm text-muted-foreground",
105
118
  children: "This doc does not exist in this workspace, or it was deleted."
106
- }), /* @__PURE__ */ o(_, {
119
+ }), /* @__PURE__ */ s(v, {
107
120
  size: "sm",
108
121
  variant: "outline",
109
- onClick: () => j("/docs/docs-page"),
122
+ onClick: () => O("/docs/docs-page"),
110
123
  children: "Back to docs"
111
124
  })]
112
125
  });
113
- let Se = () => {
114
- F(Y.title), L(Y.content), z(""), V(null), pe(Y.version), N(!0);
115
- }, Ce = async () => {
116
- await Z(() => q({ variables: {
126
+ let ke = () => {
127
+ M(Y.title), P(Y.content), I(""), R(null), ye(Y.version), A(!0);
128
+ }, Ae = async () => {
129
+ await Z(() => W({ variables: {
117
130
  id: Y.id,
118
131
  input: {
119
- title: P.trim(),
120
- content: I,
121
- ...R.trim() ? { changeNote: R.trim() } : {},
122
- expectedVersion: U
132
+ title: j.trim(),
133
+ content: N,
134
+ ...F.trim() ? { changeNote: F.trim() } : {},
135
+ expectedVersion: B
123
136
  }
124
- } }), "The doc could not be saved.") && N(!1);
125
- }, Q = [...Y.revisions].sort((e, t) => t.version - e.version), $ = H === null ? null : Q.find((e) => e.version === H);
126
- return /* @__PURE__ */ s("div", {
137
+ } }), "The doc could not be saved.") && A(!1);
138
+ }, Q = [...Y.revisions].sort((e, t) => t.version - e.version), $ = z === null ? null : Q.find((e) => e.version === z);
139
+ return /* @__PURE__ */ c("div", {
127
140
  className: "space-y-6 p-6",
128
141
  "data-testid": "doc-detail",
129
142
  children: [
130
- /* @__PURE__ */ s(_, {
143
+ /* @__PURE__ */ c(v, {
131
144
  size: "sm",
132
145
  variant: "ghost",
133
- onClick: () => j("/docs/docs-page"),
134
- children: [/* @__PURE__ */ o(re, { className: "mr-1 h-4 w-4" }), "All docs"]
146
+ onClick: () => O("/docs/docs-page"),
147
+ children: [/* @__PURE__ */ s(ae, { className: "mr-1 h-4 w-4" }), "All docs"]
135
148
  }),
136
- /* @__PURE__ */ s("div", {
149
+ /* @__PURE__ */ c("div", {
137
150
  className: "flex flex-wrap items-start justify-between gap-3",
138
- children: [/* @__PURE__ */ s("div", {
151
+ children: [/* @__PURE__ */ c("div", {
139
152
  className: "min-w-0 space-y-1",
140
- children: [/* @__PURE__ */ o("h1", {
153
+ children: [/* @__PURE__ */ s("h1", {
141
154
  className: "text-2xl font-semibold break-words",
142
155
  "data-testid": "doc-title",
143
156
  children: Y.title
144
- }), /* @__PURE__ */ s("p", {
157
+ }), /* @__PURE__ */ c("p", {
145
158
  className: "text-xs text-muted-foreground",
146
159
  children: [
147
- /* @__PURE__ */ o(ne, { status: Y.status }),
160
+ /* @__PURE__ */ s(ie, { status: Y.status }),
148
161
  " · version ",
149
162
  Y.version,
150
163
  " · updated",
151
164
  " ",
152
- k(Y.updatedAt),
165
+ E(Y.updatedAt),
153
166
  " by ",
154
- /* @__PURE__ */ o(t, { id: Y.updatedBy ?? Y.createdBy })
167
+ /* @__PURE__ */ s(t, { id: Y.updatedBy ?? Y.createdBy })
155
168
  ]
156
169
  })]
157
- }), !M && /* @__PURE__ */ s("div", {
170
+ }), !k && /* @__PURE__ */ c("div", {
158
171
  className: "flex flex-wrap gap-2",
159
172
  children: [
160
- te.filter((e) => e !== Y.status).map((e) => /* @__PURE__ */ o(_, {
173
+ re.filter((e) => e !== Y.status).map((e) => /* @__PURE__ */ s(v, {
161
174
  size: "sm",
162
175
  variant: "outline",
163
176
  disabled: X,
164
- onClick: () => Z(() => q({ variables: {
177
+ onClick: () => Z(() => W({ variables: {
165
178
  id: Y.id,
166
179
  input: {
167
180
  status: e,
@@ -170,144 +183,144 @@ function A() {
170
183
  } }), "The status could not be changed."),
171
184
  children: e === "PUBLISHED" ? "Publish" : e === "ARCHIVED" ? "Archive" : "Back to draft"
172
185
  }, e)),
173
- /* @__PURE__ */ o(_, {
186
+ /* @__PURE__ */ s(v, {
174
187
  size: "sm",
175
- onClick: Se,
188
+ onClick: ke,
176
189
  "data-testid": "doc-edit",
177
190
  children: "Edit"
178
191
  }),
179
- /* @__PURE__ */ s(c, { children: [/* @__PURE__ */ o(g, {
192
+ /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ s(_, {
180
193
  asChild: !0,
181
- children: /* @__PURE__ */ o(_, {
194
+ children: /* @__PURE__ */ s(v, {
182
195
  size: "sm",
183
196
  variant: "outline",
184
197
  disabled: X,
185
198
  children: "Delete"
186
199
  })
187
- }), /* @__PURE__ */ s(d, { children: [/* @__PURE__ */ s(m, { children: [/* @__PURE__ */ s(h, { children: [
200
+ }), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ c(h, { children: [/* @__PURE__ */ c(g, { children: [
188
201
  "Delete “",
189
202
  Y.title,
190
203
  "”?"
191
- ] }), /* @__PURE__ */ s(f, { children: [
204
+ ] }), /* @__PURE__ */ c(p, { children: [
192
205
  "The doc and its history are removed for everyone, and it is unlinked from",
193
206
  " ",
194
207
  Y.linkedWorkItems.length,
195
208
  " work item",
196
209
  Y.linkedWorkItems.length === 1 ? "" : "s",
197
210
  "."
198
- ] })] }), /* @__PURE__ */ s(p, { children: [/* @__PURE__ */ o(u, { children: "Keep it" }), /* @__PURE__ */ o(l, {
211
+ ] })] }), /* @__PURE__ */ c(m, { children: [/* @__PURE__ */ s(d, { children: "Keep it" }), /* @__PURE__ */ s(u, {
199
212
  className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
200
213
  onClick: async () => {
201
- await Z(() => ve({ variables: { id: Y.id } }), "The doc could not be deleted.") && j("/docs/docs-page");
214
+ await Z(() => we({ variables: { id: Y.id } }), "The doc could not be deleted.") && O("/docs/docs-page");
202
215
  },
203
216
  children: "Delete"
204
217
  })] })] })] })
205
218
  ]
206
219
  })]
207
220
  }),
208
- B && /* @__PURE__ */ o("p", {
221
+ L && /* @__PURE__ */ s("p", {
209
222
  role: "alert",
210
223
  className: "text-sm text-destructive",
211
224
  "data-testid": "doc-error",
212
- children: B
225
+ children: L
213
226
  }),
214
- M && U !== Y.version && /* @__PURE__ */ s("p", {
227
+ k && B !== Y.version && /* @__PURE__ */ c("p", {
215
228
  className: "text-sm text-status-warning-text",
216
229
  "data-testid": "doc-moved-on",
217
230
  children: [
218
231
  "Someone saved version ",
219
232
  Y.version,
220
233
  " after you started editing version ",
221
- U,
234
+ B,
222
235
  ". Your text is kept below; copy what you need, then discard and edit the latest."
223
236
  ]
224
237
  }),
225
- M ? /* @__PURE__ */ o(v, { children: /* @__PURE__ */ s(y, {
238
+ k ? /* @__PURE__ */ s(y, { children: /* @__PURE__ */ c(b, {
226
239
  className: "space-y-3 pt-6",
227
240
  children: [
228
- /* @__PURE__ */ o(S, {
241
+ /* @__PURE__ */ s(C, {
229
242
  "aria-label": "Doc title",
230
- value: P,
231
- onChange: (e) => F(e.target.value)
243
+ value: j,
244
+ onChange: (e) => M(e.target.value)
232
245
  }),
233
- /* @__PURE__ */ o(ee, {
234
- value: I,
235
- onChange: L,
246
+ /* @__PURE__ */ s(ne, {
247
+ value: N,
248
+ onChange: P,
236
249
  minHeight: 240
237
250
  }),
238
- /* @__PURE__ */ o(S, {
251
+ /* @__PURE__ */ s(C, {
239
252
  "aria-label": "Change note",
240
253
  placeholder: "What changed? (optional, shown in the history)",
241
- value: R,
242
- onChange: (e) => z(e.target.value)
254
+ value: F,
255
+ onChange: (e) => I(e.target.value)
243
256
  }),
244
- /* @__PURE__ */ s("div", {
257
+ /* @__PURE__ */ c("div", {
245
258
  className: "flex justify-end gap-2",
246
- children: [/* @__PURE__ */ o(_, {
259
+ children: [/* @__PURE__ */ s(v, {
247
260
  size: "sm",
248
261
  variant: "ghost",
249
262
  onClick: () => {
250
- N(!1), V(null);
263
+ A(!1), R(null);
251
264
  },
252
- children: U === Y.version ? "Cancel" : "Discard my edits"
253
- }), /* @__PURE__ */ o(_, {
265
+ children: B === Y.version ? "Cancel" : "Discard my edits"
266
+ }), /* @__PURE__ */ s(v, {
254
267
  size: "sm",
255
- onClick: Ce,
256
- disabled: J.loading || U !== Y.version,
268
+ onClick: Ae,
269
+ disabled: G.loading || B !== Y.version,
257
270
  "data-testid": "doc-save",
258
- children: J.loading ? "Saving…" : "Save new version"
271
+ children: G.loading ? "Saving…" : "Save new version"
259
272
  })]
260
273
  })
261
274
  ]
262
- }) }) : /* @__PURE__ */ o(v, { children: /* @__PURE__ */ o(y, {
275
+ }) }) : /* @__PURE__ */ s(y, { children: /* @__PURE__ */ s(b, {
263
276
  className: "prose prose-sm max-w-none pt-6 dark:prose-invert",
264
- children: Y.content.trim() ? /* @__PURE__ */ o(C, { children: Y.content }) : /* @__PURE__ */ o("p", {
277
+ children: Y.content.trim() ? /* @__PURE__ */ s(w, { children: Y.content }) : /* @__PURE__ */ s("p", {
265
278
  className: "text-sm text-muted-foreground",
266
279
  children: "This doc is empty."
267
280
  })
268
281
  }) }),
269
- /* @__PURE__ */ s("div", {
282
+ /* @__PURE__ */ c("div", {
270
283
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
271
- children: [/* @__PURE__ */ s(v, {
284
+ children: [/* @__PURE__ */ c(y, {
272
285
  "data-testid": "doc-history",
273
- children: [/* @__PURE__ */ o(b, { children: /* @__PURE__ */ s(x, {
286
+ children: [/* @__PURE__ */ s(x, { children: /* @__PURE__ */ c(S, {
274
287
  className: "flex items-center gap-2",
275
288
  children: [
276
- /* @__PURE__ */ o(ie, { className: "h-4 w-4" }),
289
+ /* @__PURE__ */ s(oe, { className: "h-4 w-4" }),
277
290
  " History (",
278
291
  Q.length,
279
292
  ")"
280
293
  ]
281
- }) }), /* @__PURE__ */ s(y, {
294
+ }) }), /* @__PURE__ */ c(b, {
282
295
  className: "space-y-2",
283
- children: [/* @__PURE__ */ o("ol", {
296
+ children: [/* @__PURE__ */ s("ol", {
284
297
  className: "space-y-2",
285
298
  children: Q.map((e) => {
286
299
  let n = e.version === Y.version;
287
- return /* @__PURE__ */ s("li", {
300
+ return /* @__PURE__ */ c("li", {
288
301
  className: "space-y-1 rounded-md border p-2",
289
302
  "data-testid": "doc-revision",
290
- children: [/* @__PURE__ */ s("div", {
303
+ children: [/* @__PURE__ */ c("div", {
291
304
  className: "flex flex-wrap items-center justify-between gap-2",
292
- children: [/* @__PURE__ */ s("span", {
305
+ children: [/* @__PURE__ */ c("span", {
293
306
  className: "text-sm font-medium",
294
307
  children: [
295
308
  "Version ",
296
309
  e.version,
297
310
  n ? " (current)" : ""
298
311
  ]
299
- }), /* @__PURE__ */ s("span", {
312
+ }), /* @__PURE__ */ c("span", {
300
313
  className: "flex gap-1",
301
- children: [/* @__PURE__ */ o(_, {
314
+ children: [/* @__PURE__ */ s(v, {
302
315
  size: "sm",
303
316
  variant: "ghost",
304
317
  className: "h-7 text-xs",
305
- "aria-expanded": H === e.version,
306
- onClick: () => fe(H === e.version ? null : e.version),
307
- children: H === e.version ? "Hide" : "View"
308
- }), !n && !M && /* @__PURE__ */ s(c, { children: [/* @__PURE__ */ o(g, {
318
+ "aria-expanded": z === e.version,
319
+ onClick: () => ve(z === e.version ? null : e.version),
320
+ children: z === e.version ? "Hide" : "View"
321
+ }), !n && !k && /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ s(_, {
309
322
  asChild: !0,
310
- children: /* @__PURE__ */ o(_, {
323
+ children: /* @__PURE__ */ s(v, {
311
324
  size: "sm",
312
325
  variant: "outline",
313
326
  className: "h-7 text-xs",
@@ -315,18 +328,18 @@ function A() {
315
328
  "data-testid": "doc-restore",
316
329
  children: "Restore"
317
330
  })
318
- }), /* @__PURE__ */ s(d, { children: [/* @__PURE__ */ s(m, { children: [/* @__PURE__ */ s(h, { children: [
331
+ }), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ c(h, { children: [/* @__PURE__ */ c(g, { children: [
319
332
  "Restore version ",
320
333
  e.version,
321
334
  "?"
322
- ] }), /* @__PURE__ */ s(f, { children: [
335
+ ] }), /* @__PURE__ */ c(p, { children: [
323
336
  "Its title and text become version ",
324
337
  Y.version + 1,
325
338
  ". Nothing is deleted: version ",
326
339
  Y.version,
327
340
  " stays in the history."
328
- ] })] }), /* @__PURE__ */ s(p, { children: [/* @__PURE__ */ o(u, { children: "Cancel" }), /* @__PURE__ */ o(l, {
329
- onClick: () => Z(() => ge({ variables: {
341
+ ] })] }), /* @__PURE__ */ c(m, { children: [/* @__PURE__ */ s(d, { children: "Cancel" }), /* @__PURE__ */ s(u, {
342
+ onClick: () => Z(() => Se({ variables: {
330
343
  id: Y.id,
331
344
  toVersion: e.version,
332
345
  expectedVersion: Y.version
@@ -334,21 +347,21 @@ function A() {
334
347
  children: "Restore"
335
348
  })] })] })] })]
336
349
  })]
337
- }), /* @__PURE__ */ s("p", {
350
+ }), /* @__PURE__ */ c("p", {
338
351
  className: "text-xs text-muted-foreground",
339
352
  children: [
340
- k(e.createdAt),
353
+ E(e.createdAt),
341
354
  " · ",
342
- /* @__PURE__ */ o(t, { id: e.createdBy }),
355
+ /* @__PURE__ */ s(t, { id: e.createdBy }),
343
356
  e.changeNote ? ` · ${e.changeNote}` : ""
344
357
  ]
345
358
  })]
346
359
  }, e.id);
347
360
  })
348
- }), $ && /* @__PURE__ */ s("div", {
361
+ }), $ && /* @__PURE__ */ c("div", {
349
362
  className: "space-y-1 rounded-md border bg-muted/40 p-3",
350
363
  "data-testid": "doc-revision-view",
351
- children: [/* @__PURE__ */ s("p", {
364
+ children: [/* @__PURE__ */ c("p", {
352
365
  className: "text-sm font-medium",
353
366
  children: [
354
367
  "Version ",
@@ -356,53 +369,77 @@ function A() {
356
369
  ": ",
357
370
  $.title
358
371
  ]
359
- }), /* @__PURE__ */ o("div", {
372
+ }), /* @__PURE__ */ s("div", {
360
373
  className: "prose prose-sm max-w-none dark:prose-invert",
361
- children: /* @__PURE__ */ o(C, { children: $.content })
374
+ children: /* @__PURE__ */ s(w, { children: $.content })
362
375
  })]
363
376
  })]
364
377
  })]
365
- }), /* @__PURE__ */ s(v, {
378
+ }), /* @__PURE__ */ c(y, {
366
379
  "data-testid": "doc-linked-items",
367
- children: [/* @__PURE__ */ o(b, { children: /* @__PURE__ */ s(x, {
380
+ children: [/* @__PURE__ */ s(x, { children: /* @__PURE__ */ c(S, {
368
381
  className: "flex items-center gap-2",
369
382
  children: [
370
- /* @__PURE__ */ o(ae, { className: "h-4 w-4" }),
383
+ /* @__PURE__ */ s(i, { className: "h-4 w-4" }),
371
384
  " Linked work items (",
372
385
  Y.linkedWorkItems.length,
373
386
  ")"
374
387
  ]
375
- }) }), /* @__PURE__ */ s(y, {
388
+ }) }), /* @__PURE__ */ c(b, {
376
389
  className: "space-y-2",
377
- children: [Y.linkedWorkItems.length === 0 && /* @__PURE__ */ o("p", {
378
- className: "text-sm text-muted-foreground",
379
- children: "Not linked to any work item. A doc created from a task's “Linked Docs” panel is linked to that task; linking an existing doc is not available yet."
380
- }), Y.linkedWorkItems.map((e) => /* @__PURE__ */ s("div", {
381
- className: "flex items-center justify-between gap-2 rounded-md border p-2",
382
- children: [/* @__PURE__ */ s("button", {
383
- type: "button",
384
- className: "min-w-0 truncate text-left text-sm hover:underline",
385
- onClick: () => j(`/tasks/task-detail-page?taskId=${encodeURIComponent(e.id)}`),
386
- children: [
387
- /* @__PURE__ */ o("span", {
388
- className: "text-muted-foreground",
389
- children: e.key
390
- }),
391
- " ",
392
- e.title
393
- ]
394
- }), /* @__PURE__ */ o(_, {
395
- size: "icon",
396
- variant: "ghost",
397
- disabled: xe.loading,
398
- "aria-label": `Unlink ${e.title}`,
399
- onClick: () => Z(() => be({ variables: {
400
- docId: Y.id,
401
- workItemId: e.id
402
- } }), "The work item could not be unlinked."),
403
- children: /* @__PURE__ */ o(oe, { className: "h-4 w-4" })
404
- })]
405
- }, e.id))]
390
+ children: [
391
+ Y.linkedWorkItems.length === 0 && /* @__PURE__ */ s("p", {
392
+ className: "text-sm text-muted-foreground",
393
+ children: "Not linked to any work item yet. Pick one below, or use “Link existing doc” on the task."
394
+ }),
395
+ Y.linkedWorkItems.map((e) => /* @__PURE__ */ c("div", {
396
+ className: "flex items-center justify-between gap-2 rounded-md border p-2",
397
+ children: [/* @__PURE__ */ c("button", {
398
+ type: "button",
399
+ className: "min-w-0 truncate text-left text-sm hover:underline",
400
+ onClick: () => O(`/tasks/task-detail-page?taskId=${encodeURIComponent(e.id)}`),
401
+ children: [
402
+ /* @__PURE__ */ s("span", {
403
+ className: "text-muted-foreground",
404
+ children: e.key
405
+ }),
406
+ " ",
407
+ e.title
408
+ ]
409
+ }), /* @__PURE__ */ s(v, {
410
+ size: "icon",
411
+ variant: "ghost",
412
+ disabled: De.loading,
413
+ "aria-label": `Unlink ${e.title}`,
414
+ onClick: () => Z(() => Ee({ variables: {
415
+ docId: Y.id,
416
+ workItemId: e.id
417
+ } }), "The work item could not be unlinked."),
418
+ children: /* @__PURE__ */ s(se, { className: "h-4 w-4" })
419
+ })]
420
+ }, e.id)),
421
+ /* @__PURE__ */ c("div", {
422
+ className: "space-y-2 pt-2",
423
+ "data-testid": "doc-link-work-item",
424
+ children: [/* @__PURE__ */ s(te, {
425
+ id: "doc-link-work-item-select",
426
+ value: q,
427
+ onChange: J,
428
+ exclude: Y.linkedWorkItems.map((e) => e.id)
429
+ }), /* @__PURE__ */ c(v, {
430
+ size: "sm",
431
+ variant: "outline",
432
+ disabled: !q || Oe.loading,
433
+ onClick: async () => {
434
+ await Z(() => K({ variables: {
435
+ docId: Y.id,
436
+ workItemId: q
437
+ } }), "The work item could not be linked.") && J("");
438
+ },
439
+ children: [/* @__PURE__ */ s(i, { className: "mr-1 h-4 w-4" }), "Link work item"]
440
+ })]
441
+ })
442
+ ]
406
443
  })]
407
444
  })]
408
445
  })
@@ -410,6 +447,6 @@ function A() {
410
447
  });
411
448
  }
412
449
  //#endregion
413
- export { A as DocsDocDetailPagePage };
450
+ export { D as DocsDocDetailPagePage };
414
451
 
415
452
  //# sourceMappingURL=DocsDocDetailPagePage.js.map