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