@burdenoff/microfe-planmagnet 2026.925.14 → 2026.925.16

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 (28) hide show
  1. package/dist/generated/wspace-types.d.ts +21 -0
  2. package/dist/generated/wspace-types.d.ts.map +1 -1
  3. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  4. package/dist/planmagnet/PlanMagnetRoutes.js +67 -59
  5. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  6. package/dist/planmagnet/docs/DocStatusBadge.d.ts +8 -0
  7. package/dist/planmagnet/docs/DocStatusBadge.d.ts.map +1 -0
  8. package/dist/planmagnet/docs/DocStatusBadge.js +28 -0
  9. package/dist/planmagnet/docs/DocStatusBadge.js.map +1 -0
  10. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts +2 -0
  11. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -0
  12. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +410 -0
  13. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -0
  14. package/dist/planmagnet/pages/DocsDocsPagePage.d.ts +3 -0
  15. package/dist/planmagnet/pages/DocsDocsPagePage.d.ts.map +1 -0
  16. package/dist/planmagnet/pages/DocsDocsPagePage.js +224 -0
  17. package/dist/planmagnet/pages/DocsDocsPagePage.js.map +1 -0
  18. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -1
  19. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +100 -94
  20. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +1 -1
  21. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
  22. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +130 -128
  23. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
  24. package/dist/planmagnet/releases/ReleaseGatesCard.d.ts +6 -0
  25. package/dist/planmagnet/releases/ReleaseGatesCard.d.ts.map +1 -0
  26. package/dist/planmagnet/releases/ReleaseGatesCard.js +173 -0
  27. package/dist/planmagnet/releases/ReleaseGatesCard.js.map +1 -0
  28. package/package.json +1 -1
@@ -0,0 +1,224 @@
1
+ import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
2
+ import { PersonName as n } from "../people/People.js";
3
+ import { MarkdownEditor as r } from "../../components/MarkdownEditor.js";
4
+ import { throwOnError as i } from "../utils/mutationResult.js";
5
+ import { DOC_STATUSES as a, DOC_STATUS_LABEL as o, DocStatusBadge as s } from "../docs/DocStatusBadge.js";
6
+ import { useDeferredValue as c, useState as l } from "react";
7
+ import { FileText as u, Plus as d, Search as f } from "lucide-react";
8
+ import { gql as p } from "@apollo/client";
9
+ import { useMutation as m, useQuery as h } from "@apollo/client/react";
10
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
11
+ import { Button as v, Card as y, CardContent as b, Input as x } from "@burdenoff/fe-libs/ui";
12
+ //#region src/planmagnet/pages/DocsDocsPagePage.tsx
13
+ var S = 50, C = p`
14
+ query DocsList(
15
+ $workspaceId: String
16
+ $filter: PlanmagnetDocFilter
17
+ $pagination: PlanmagnetPaginationInput
18
+ ) {
19
+ planmagnetDocs(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {
20
+ totalCount
21
+ pageInfo {
22
+ hasNextPage
23
+ endCursor
24
+ }
25
+ items {
26
+ id
27
+ title
28
+ status
29
+ version
30
+ updatedAt
31
+ updatedBy
32
+ createdBy
33
+ }
34
+ }
35
+ }
36
+ `, w = p`
37
+ mutation DocsCreate($input: PlanmagnetCreateDocInput!) {
38
+ planmagnetCreateDoc(input: $input) {
39
+ id
40
+ }
41
+ }
42
+ `, T = (e) => `/docs/doc-detail-page?docId=${encodeURIComponent(e)}`;
43
+ function E() {
44
+ let { workspaceId: p } = e(), E = t(), [D, O] = l(""), [k, A] = l("ALL"), [j, M] = l(!1), [N, P] = l(""), [F, I] = l(""), [L, R] = l(null), [z, B] = l(!1), V = c(D.trim()), { data: H, loading: U, error: W, fetchMore: G } = h(C, {
45
+ variables: {
46
+ workspaceId: p,
47
+ filter: {
48
+ ...V ? { search: V } : {},
49
+ ...k === "ALL" ? {} : { status: k }
50
+ },
51
+ pagination: { first: S }
52
+ },
53
+ skip: !p,
54
+ fetchPolicy: "cache-and-network"
55
+ }), [K, q] = m(w, { refetchQueries: ["DocsList"] }), J = H?.planmagnetDocs, Y = J?.items ?? [], X = async () => {
56
+ R(null);
57
+ try {
58
+ let e = (await i(K({ variables: { input: {
59
+ title: N.trim(),
60
+ content: F
61
+ } } }))).data?.planmagnetCreateDoc.id;
62
+ M(!1), P(""), I(""), e && E(T(e));
63
+ } catch (e) {
64
+ R(e instanceof Error ? e.message : "The doc could not be created.");
65
+ }
66
+ }, Z = async () => {
67
+ let e = J?.pageInfo.endCursor;
68
+ if (e) {
69
+ B(!0);
70
+ try {
71
+ await G({
72
+ variables: { pagination: {
73
+ first: S,
74
+ after: e
75
+ } },
76
+ updateQuery: (e, { fetchMoreResult: t }) => ({ planmagnetDocs: {
77
+ ...t.planmagnetDocs,
78
+ items: [...e.planmagnetDocs.items, ...t.planmagnetDocs.items]
79
+ } })
80
+ });
81
+ } finally {
82
+ B(!1);
83
+ }
84
+ }
85
+ };
86
+ return /* @__PURE__ */ _("div", {
87
+ className: "space-y-6 p-6",
88
+ "data-testid": "docs-page",
89
+ children: [
90
+ /* @__PURE__ */ _("div", {
91
+ className: "flex flex-wrap items-center justify-between gap-3",
92
+ children: [/* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h1", {
93
+ className: "text-2xl font-semibold",
94
+ children: "Docs"
95
+ }), /* @__PURE__ */ g("p", {
96
+ className: "text-sm text-muted-foreground",
97
+ children: J ? `${J.totalCount} doc${J.totalCount === 1 ? "" : "s"}${V || k !== "ALL" ? " match" : " in this workspace"}` : "Specs and documents, with full version history"
98
+ })] }), !j && /* @__PURE__ */ _(v, {
99
+ size: "sm",
100
+ onClick: () => M(!0),
101
+ "data-testid": "doc-new",
102
+ children: [/* @__PURE__ */ g(d, { className: "mr-1 h-4 w-4" }), "New doc"]
103
+ })]
104
+ }),
105
+ L && /* @__PURE__ */ g("p", {
106
+ role: "alert",
107
+ className: "text-sm text-destructive",
108
+ children: L
109
+ }),
110
+ j && /* @__PURE__ */ g(y, { children: /* @__PURE__ */ _(b, {
111
+ className: "space-y-3 pt-6",
112
+ children: [
113
+ /* @__PURE__ */ g(x, {
114
+ "aria-label": "Doc title",
115
+ placeholder: "Doc title",
116
+ value: N,
117
+ onChange: (e) => P(e.target.value)
118
+ }),
119
+ /* @__PURE__ */ g(r, {
120
+ value: F,
121
+ onChange: I,
122
+ placeholder: "Write the doc…",
123
+ minHeight: 160
124
+ }),
125
+ /* @__PURE__ */ _("div", {
126
+ className: "flex justify-end gap-2",
127
+ children: [/* @__PURE__ */ g(v, {
128
+ size: "sm",
129
+ variant: "ghost",
130
+ onClick: () => {
131
+ M(!1), R(null);
132
+ },
133
+ children: "Cancel"
134
+ }), /* @__PURE__ */ g(v, {
135
+ size: "sm",
136
+ onClick: X,
137
+ disabled: q.loading,
138
+ "data-testid": "doc-create",
139
+ children: q.loading ? "Creating…" : "Create doc"
140
+ })]
141
+ })
142
+ ]
143
+ }) }),
144
+ /* @__PURE__ */ _("div", {
145
+ className: "flex flex-wrap items-center gap-3",
146
+ children: [/* @__PURE__ */ _("div", {
147
+ className: "relative w-full max-w-sm",
148
+ children: [/* @__PURE__ */ g(f, { className: "absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ g(x, {
149
+ "aria-label": "Search docs",
150
+ placeholder: "Search titles and content",
151
+ className: "pl-8",
152
+ value: D,
153
+ onChange: (e) => O(e.target.value)
154
+ })]
155
+ }), /* @__PURE__ */ g("div", {
156
+ className: "flex gap-1",
157
+ role: "group",
158
+ "aria-label": "Filter by status",
159
+ children: ["ALL", ...a].map((e) => /* @__PURE__ */ g("button", {
160
+ type: "button",
161
+ "aria-pressed": k === e,
162
+ onClick: () => A(e),
163
+ className: `px-3 py-1.5 text-sm rounded-md ${k === e ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-muted"}`,
164
+ children: e === "ALL" ? "All" : o[e]
165
+ }, e))
166
+ })]
167
+ }),
168
+ W && /* @__PURE__ */ _("p", {
169
+ role: "alert",
170
+ className: "text-sm text-destructive",
171
+ children: ["Docs could not be loaded: ", W.message]
172
+ }),
173
+ U && !H && /* @__PURE__ */ g("p", {
174
+ className: "text-sm text-muted-foreground",
175
+ children: "Loading docs…"
176
+ }),
177
+ J && Y.length === 0 && /* @__PURE__ */ g("p", {
178
+ className: "text-sm text-muted-foreground",
179
+ children: V || k !== "ALL" ? "No docs match." : "No docs yet. Create the first one."
180
+ }),
181
+ /* @__PURE__ */ g("ul", {
182
+ className: "space-y-2",
183
+ children: Y.map((e) => /* @__PURE__ */ g("li", { children: /* @__PURE__ */ _("button", {
184
+ type: "button",
185
+ "data-testid": "doc-row",
186
+ onClick: () => E(T(e.id)),
187
+ className: "flex w-full items-center justify-between gap-3 rounded-md border p-3 text-left hover:border-primary transition-colors",
188
+ children: [/* @__PURE__ */ _("span", {
189
+ className: "flex min-w-0 items-center gap-2",
190
+ children: [/* @__PURE__ */ g(u, { className: "h-4 w-4 shrink-0 text-muted-foreground" }), /* @__PURE__ */ _("span", {
191
+ className: "min-w-0",
192
+ children: [/* @__PURE__ */ g("span", {
193
+ className: "block truncate text-sm font-medium",
194
+ children: e.title
195
+ }), /* @__PURE__ */ _("span", {
196
+ className: "block text-xs text-muted-foreground",
197
+ children: [
198
+ "v",
199
+ e.version,
200
+ " · updated ",
201
+ new Date(e.updatedAt).toLocaleString(),
202
+ " by",
203
+ " ",
204
+ /* @__PURE__ */ g(n, { id: e.updatedBy ?? e.createdBy })
205
+ ]
206
+ })]
207
+ })]
208
+ }), /* @__PURE__ */ g(s, { status: e.status })]
209
+ }) }, e.id))
210
+ }),
211
+ J?.pageInfo.hasNextPage && /* @__PURE__ */ g(v, {
212
+ size: "sm",
213
+ variant: "outline",
214
+ onClick: Z,
215
+ disabled: z,
216
+ children: z ? "Loading…" : `Show more (${Y.length} of ${J.totalCount})`
217
+ })
218
+ ]
219
+ });
220
+ }
221
+ //#endregion
222
+ export { E as DocsDocsPagePage };
223
+
224
+ //# sourceMappingURL=DocsDocsPagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsDocsPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/DocsDocsPagePage.tsx"],"sourcesContent":["import { useDeferredValue, useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { Button, Card, CardContent, Input } from '@burdenoff/fe-libs/ui';\nimport { FileText, Plus, Search } from 'lucide-react';\nimport { MarkdownEditor } from '#src/components/MarkdownEditor';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { PersonName } from '../people/People';\nimport { throwOnError } from '../utils/mutationResult';\nimport {\n DOC_STATUSES,\n DOC_STATUS_LABEL,\n DocStatusBadge,\n type DocStatus,\n} from '../docs/DocStatusBadge';\n\n/**\n * Docs browse surface (P1.4). Before this, a doc could only be created from a\n * work item's \"Linked Docs\" panel and never opened again: there was no list,\n * no detail view and no history UI, although the service kept every revision.\n */\n\nconst PAGE = 50;\n\nconst DOCS = gql`\n query DocsList(\n $workspaceId: String\n $filter: PlanmagnetDocFilter\n $pagination: PlanmagnetPaginationInput\n ) {\n planmagnetDocs(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n totalCount\n pageInfo {\n hasNextPage\n endCursor\n }\n items {\n id\n title\n status\n version\n updatedAt\n updatedBy\n createdBy\n }\n }\n }\n`;\n\nconst CREATE_DOC = gql`\n mutation DocsCreate($input: PlanmagnetCreateDocInput!) {\n planmagnetCreateDoc(input: $input) {\n id\n }\n }\n`;\n\ninterface DocRow {\n id: string;\n title: string;\n status: string;\n version: number;\n updatedAt: string;\n updatedBy: string | null;\n createdBy: string;\n}\n\ninterface DocsData {\n planmagnetDocs: {\n totalCount: number;\n pageInfo: { hasNextPage: boolean; endCursor: string | null };\n items: DocRow[];\n };\n}\n\nexport const docDetailPath = (id: string) =>\n `/docs/doc-detail-page?docId=${encodeURIComponent(id)}`;\n\nexport function DocsDocsPagePage() {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n const [search, setSearch] = useState('');\n const [status, setStatus] = useState<DocStatus | 'ALL'>('ALL');\n const [composing, setComposing] = useState(false);\n const [title, setTitle] = useState('');\n const [content, setContent] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [loadingMore, setLoadingMore] = useState(false);\n const term = useDeferredValue(search.trim());\n\n const filter = {\n ...(term ? { search: term } : {}),\n ...(status !== 'ALL' ? { status } : {}),\n };\n const {\n data,\n loading,\n error: loadError,\n fetchMore,\n } = useQuery<DocsData>(DOCS, {\n variables: { workspaceId, filter, pagination: { first: PAGE } },\n skip: !workspaceId,\n // Cached copies go stale here: a deleted doc, or someone else's newer version.\n fetchPolicy: 'cache-and-network',\n });\n const [create, createState] = useMutation<{ planmagnetCreateDoc: { id: string } }>(CREATE_DOC, {\n refetchQueries: ['DocsList'],\n });\n\n const list = data?.planmagnetDocs;\n const docs = list?.items ?? [];\n\n const submit = async () => {\n setError(null);\n try {\n const result = await throwOnError(\n create({ variables: { input: { title: title.trim(), content } } })\n );\n const id = result.data?.planmagnetCreateDoc.id;\n setComposing(false);\n setTitle('');\n setContent('');\n if (id) navigate(docDetailPath(id));\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The doc could not be created.');\n }\n };\n\n const loadMore = async () => {\n const after = list?.pageInfo.endCursor;\n if (!after) return;\n setLoadingMore(true);\n try {\n await fetchMore({\n variables: { pagination: { first: PAGE, after } },\n updateQuery: (prev, { fetchMoreResult }) => ({\n planmagnetDocs: {\n ...fetchMoreResult.planmagnetDocs,\n items: [...prev.planmagnetDocs.items, ...fetchMoreResult.planmagnetDocs.items],\n },\n }),\n });\n } finally {\n setLoadingMore(false);\n }\n };\n\n return (\n <div className=\"space-y-6 p-6\" data-testid=\"docs-page\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Docs</h1>\n <p className=\"text-sm text-muted-foreground\">\n {list\n ? `${list.totalCount} doc${list.totalCount === 1 ? '' : 's'}${term || status !== 'ALL' ? ' match' : ' in this workspace'}`\n : 'Specs and documents, with full version history'}\n </p>\n </div>\n {!composing && (\n <Button size=\"sm\" onClick={() => setComposing(true)} data-testid=\"doc-new\">\n <Plus className=\"mr-1 h-4 w-4\" />\n New doc\n </Button>\n )}\n </div>\n\n {error && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n {error}\n </p>\n )}\n\n {composing && (\n <Card>\n <CardContent className=\"space-y-3 pt-6\">\n <Input\n aria-label=\"Doc title\"\n placeholder=\"Doc title\"\n value={title}\n onChange={(e) => setTitle(e.target.value)}\n />\n <MarkdownEditor\n value={content}\n onChange={setContent}\n placeholder=\"Write the doc…\"\n minHeight={160}\n />\n <div className=\"flex justify-end gap-2\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n setComposing(false);\n setError(null);\n }}\n >\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={submit}\n disabled={createState.loading}\n data-testid=\"doc-create\"\n >\n {createState.loading ? 'Creating…' : 'Create doc'}\n </Button>\n </div>\n </CardContent>\n </Card>\n )}\n\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"relative w-full max-w-sm\">\n <Search className=\"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n aria-label=\"Search docs\"\n placeholder=\"Search titles and content\"\n className=\"pl-8\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n </div>\n <div className=\"flex gap-1\" role=\"group\" aria-label=\"Filter by status\">\n {(['ALL', ...DOC_STATUSES] as const).map((s) => (\n <button\n key={s}\n type=\"button\"\n aria-pressed={status === s}\n onClick={() => setStatus(s)}\n className={`px-3 py-1.5 text-sm rounded-md ${status === s ? 'bg-primary text-primary-foreground' : 'text-muted-foreground hover:bg-muted'}`}\n >\n {s === 'ALL' ? 'All' : DOC_STATUS_LABEL[s]}\n </button>\n ))}\n </div>\n </div>\n\n {loadError && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n Docs could not be loaded: {loadError.message}\n </p>\n )}\n {loading && !data && <p className=\"text-sm text-muted-foreground\">Loading docs…</p>}\n {list && docs.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n {term || status !== 'ALL' ? 'No docs match.' : 'No docs yet. Create the first one.'}\n </p>\n )}\n\n <ul className=\"space-y-2\">\n {docs.map((doc) => (\n <li key={doc.id}>\n <button\n type=\"button\"\n data-testid=\"doc-row\"\n onClick={() => navigate(docDetailPath(doc.id))}\n className=\"flex w-full items-center justify-between gap-3 rounded-md border p-3 text-left hover:border-primary transition-colors\"\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <FileText className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n <span className=\"min-w-0\">\n <span className=\"block truncate text-sm font-medium\">{doc.title}</span>\n <span className=\"block text-xs text-muted-foreground\">\n v{doc.version} · updated {new Date(doc.updatedAt).toLocaleString()} by{' '}\n <PersonName id={doc.updatedBy ?? doc.createdBy} />\n </span>\n </span>\n </span>\n <DocStatusBadge status={doc.status} />\n </button>\n </li>\n ))}\n </ul>\n {list?.pageInfo.hasNextPage && (\n <Button size=\"sm\" variant=\"outline\" onClick={loadMore} disabled={loadingMore}>\n {loadingMore ? 'Loading…' : `Show more (${docs.length} of ${list.totalCount})`}\n </Button>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsReleaseDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsReleaseDetailPagePage.tsx"],"names":[],"mappings":"AA2DA,wBAAgB,6BAA6B,4CAoM5C"}
1
+ {"version":3,"file":"ProductsReleaseDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsReleaseDetailPagePage.tsx"],"names":[],"mappings":"AA4DA,wBAAgB,6BAA6B,4CAyM5C"}
@@ -1,15 +1,16 @@
1
1
  import { usePlanMagnet as e } from "../providers/PlanMagnetProvider.js";
2
2
  import { PersonName as t } from "../people/People.js";
3
3
  import { ReleaseNotesCard as n } from "../releases/ReleaseNotesCard.js";
4
- import { Calendar as r, Clock as i, GitBranch as a, Loader2 as o } from "lucide-react";
5
- import { useParams as s } from "react-router";
6
- import { gql as c } from "@apollo/client";
7
- import { useQuery as l } from "@apollo/client/react";
8
- import { jsx as u, jsxs as d } from "react/jsx-runtime";
9
- import { Badge as f, Card as p, CardContent as m, CardHeader as h, CardTitle as g } from "@burdenoff/fe-libs/ui";
10
- import { Markdown as _ } from "@burdenoff/fe-libs/shared/components";
4
+ import { ReleaseGatesCard as r } from "../releases/ReleaseGatesCard.js";
5
+ import { Calendar as i, Clock as a, GitBranch as o, Loader2 as s } from "lucide-react";
6
+ import { useParams as c } from "react-router";
7
+ import { gql as l } from "@apollo/client";
8
+ import { useQuery as u } from "@apollo/client/react";
9
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
10
+ import { Badge as p, Card as m, CardContent as h, CardHeader as g, CardTitle as _ } from "@burdenoff/fe-libs/ui";
11
+ import { Markdown as v } from "@burdenoff/fe-libs/shared/components";
11
12
  //#region src/planmagnet/pages/ProductsReleaseDetailPagePage.tsx
12
- var v = c`
13
+ var y = l`
13
14
  query GetRelease($id: ID!) {
14
15
  planmagnetRelease(id: $id) {
15
16
  id
@@ -36,7 +37,7 @@ var v = c`
36
37
  }
37
38
  }
38
39
  }
39
- `, y = {
40
+ `, b = {
40
41
  DRAFT: "bg-gray-100 text-gray-800",
41
42
  PLANNING: "bg-yellow-100 text-yellow-800",
42
43
  IN_PROGRESS: "bg-blue-100 text-blue-800",
@@ -45,89 +46,89 @@ var v = c`
45
46
  CANCELLED: "bg-red-100 text-red-800",
46
47
  ROLLED_BACK: "bg-red-100 text-red-800"
47
48
  };
48
- function b() {
49
- let { workspaceId: c } = e(), b = s().id ?? "", { data: x, loading: S, error: C } = l(v, {
50
- variables: { id: b },
51
- skip: !b
49
+ function x() {
50
+ let { workspaceId: l } = e(), x = c().id ?? "", { data: S, loading: C, error: w } = u(y, {
51
+ variables: { id: x },
52
+ skip: !x
52
53
  });
53
- if (S && !x) return /* @__PURE__ */ u("div", {
54
+ if (C && !S) return /* @__PURE__ */ d("div", {
54
55
  className: "flex items-center justify-center p-12",
55
- children: /* @__PURE__ */ u(o, { className: "h-8 w-8 animate-spin text-muted-foreground" })
56
+ children: /* @__PURE__ */ d(s, { className: "h-8 w-8 animate-spin text-muted-foreground" })
56
57
  });
57
- if (C) return /* @__PURE__ */ d("div", {
58
+ if (w) return /* @__PURE__ */ f("div", {
58
59
  className: "p-6 text-destructive",
59
- children: ["Failed to load release: ", C.message]
60
+ children: ["Failed to load release: ", w.message]
60
61
  });
61
- let w = x?.planmagnetRelease;
62
- if (!w) return /* @__PURE__ */ u("div", {
62
+ let T = S?.planmagnetRelease;
63
+ if (!T) return /* @__PURE__ */ d("div", {
63
64
  className: "p-6 text-muted-foreground",
64
65
  children: "Release not found."
65
66
  });
66
- let T = w.workItems ?? [], E = T.filter((e) => e.type === "STORY" || e.type === "FEATURE"), D = T.filter((e) => e.type === "BUG");
67
- return /* @__PURE__ */ d("div", {
67
+ let E = T.workItems ?? [], D = E.filter((e) => e.type === "STORY" || e.type === "FEATURE"), O = E.filter((e) => e.type === "BUG");
68
+ return /* @__PURE__ */ f("div", {
68
69
  className: "space-y-6 p-6",
69
- children: [/* @__PURE__ */ d("div", {
70
+ children: [/* @__PURE__ */ f("div", {
70
71
  className: "flex items-center justify-between",
71
- children: [/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ d("div", {
72
+ children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ f("div", {
72
73
  className: "flex items-center gap-2",
73
74
  children: [
74
- /* @__PURE__ */ u(a, { className: "h-5 w-5 text-primary" }),
75
- /* @__PURE__ */ u("h1", {
75
+ /* @__PURE__ */ d(o, { className: "h-5 w-5 text-primary" }),
76
+ /* @__PURE__ */ d("h1", {
76
77
  className: "text-2xl font-semibold",
77
- children: w.version
78
+ children: T.version
78
79
  }),
79
- /* @__PURE__ */ u("span", {
80
- className: `text-xs px-2 py-0.5 rounded-full capitalize ${y[w.status] ?? "bg-gray-100"}`,
81
- children: w.status.toLowerCase().replace("_", " ")
80
+ /* @__PURE__ */ d("span", {
81
+ className: `text-xs px-2 py-0.5 rounded-full capitalize ${b[T.status] ?? "bg-gray-100"}`,
82
+ children: T.status.toLowerCase().replace("_", " ")
82
83
  })
83
84
  ]
84
- }), /* @__PURE__ */ u("p", {
85
+ }), /* @__PURE__ */ d("p", {
85
86
  className: "text-sm text-muted-foreground mt-1",
86
- children: w.name
87
- })] }), /* @__PURE__ */ u(f, {
87
+ children: T.name
88
+ })] }), /* @__PURE__ */ d(p, {
88
89
  variant: "outline",
89
90
  className: "capitalize",
90
- children: w.status.toLowerCase().replace("_", " ")
91
+ children: T.status.toLowerCase().replace("_", " ")
91
92
  })]
92
- }), /* @__PURE__ */ d("div", {
93
+ }), /* @__PURE__ */ f("div", {
93
94
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
94
- children: [/* @__PURE__ */ d("div", {
95
+ children: [/* @__PURE__ */ f("div", {
95
96
  className: "lg:col-span-2 space-y-6",
96
97
  children: [
97
- /* @__PURE__ */ d(p, { children: [/* @__PURE__ */ u(h, { children: /* @__PURE__ */ u(g, { children: "Overview" }) }), /* @__PURE__ */ d(m, {
98
+ /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(g, { children: /* @__PURE__ */ d(_, { children: "Overview" }) }), /* @__PURE__ */ f(h, {
98
99
  className: "space-y-4",
99
- children: [/* @__PURE__ */ u("div", {
100
+ children: [/* @__PURE__ */ d("div", {
100
101
  className: "text-sm prose prose-sm dark:prose-invert max-w-none",
101
- children: w.description ? /* @__PURE__ */ u(_, { children: w.description }) : /* @__PURE__ */ u("p", { children: "No description provided." })
102
- }), /* @__PURE__ */ d("div", {
102
+ children: T.description ? /* @__PURE__ */ d(v, { children: T.description }) : /* @__PURE__ */ d("p", { children: "No description provided." })
103
+ }), /* @__PURE__ */ f("div", {
103
104
  className: "grid grid-cols-3 gap-4",
104
105
  children: [
105
- /* @__PURE__ */ d("div", {
106
+ /* @__PURE__ */ f("div", {
106
107
  className: "text-center p-3 bg-muted rounded-md",
107
- children: [/* @__PURE__ */ u("p", {
108
+ children: [/* @__PURE__ */ d("p", {
108
109
  className: "text-lg font-semibold mt-1",
109
- children: E.length
110
- }), /* @__PURE__ */ u("p", {
110
+ children: D.length
111
+ }), /* @__PURE__ */ d("p", {
111
112
  className: "text-xs text-muted-foreground",
112
113
  children: "Features"
113
114
  })]
114
115
  }),
115
- /* @__PURE__ */ d("div", {
116
+ /* @__PURE__ */ f("div", {
116
117
  className: "text-center p-3 bg-muted rounded-md",
117
- children: [/* @__PURE__ */ u("p", {
118
+ children: [/* @__PURE__ */ d("p", {
118
119
  className: "text-lg font-semibold mt-1",
119
- children: D.length
120
- }), /* @__PURE__ */ u("p", {
120
+ children: O.length
121
+ }), /* @__PURE__ */ d("p", {
121
122
  className: "text-xs text-muted-foreground",
122
123
  children: "Bug Fixes"
123
124
  })]
124
125
  }),
125
- /* @__PURE__ */ d("div", {
126
+ /* @__PURE__ */ f("div", {
126
127
  className: "text-center p-3 bg-muted rounded-md",
127
- children: [/* @__PURE__ */ u("p", {
128
+ children: [/* @__PURE__ */ d("p", {
128
129
  className: "text-lg font-semibold mt-1",
129
- children: T.length
130
- }), /* @__PURE__ */ u("p", {
130
+ children: E.length
131
+ }), /* @__PURE__ */ d("p", {
131
132
  className: "text-xs text-muted-foreground",
132
133
  children: "Total Items"
133
134
  })]
@@ -135,22 +136,27 @@ function b() {
135
136
  ]
136
137
  })]
137
138
  })] }),
138
- /* @__PURE__ */ u(n, {
139
- releaseId: w.id,
140
- notes: w.releaseNotes ?? null
139
+ /* @__PURE__ */ d(r, {
140
+ releaseId: T.id,
141
+ projectId: T.projectId ?? null,
142
+ releaseStatus: T.status
143
+ }),
144
+ /* @__PURE__ */ d(n, {
145
+ releaseId: T.id,
146
+ notes: T.releaseNotes ?? null
141
147
  }),
142
- T.length > 0 && /* @__PURE__ */ d(p, { children: [/* @__PURE__ */ u(h, { children: /* @__PURE__ */ d(g, { children: [
148
+ E.length > 0 && /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(g, { children: /* @__PURE__ */ f(_, { children: [
143
149
  "Work Items (",
144
- T.length,
150
+ E.length,
145
151
  ")"
146
- ] }) }), /* @__PURE__ */ u(m, {
152
+ ] }) }), /* @__PURE__ */ d(h, {
147
153
  className: "space-y-2",
148
- children: T.map((e) => /* @__PURE__ */ d("div", {
154
+ children: E.map((e) => /* @__PURE__ */ f("div", {
149
155
  className: "flex items-center justify-between border rounded-md p-3",
150
- children: [/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
156
+ children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
151
157
  className: "text-sm font-medium",
152
158
  children: e.title
153
- }), /* @__PURE__ */ d("p", {
159
+ }), /* @__PURE__ */ f("p", {
154
160
  className: "text-xs text-muted-foreground capitalize",
155
161
  children: [
156
162
  e.type.toLowerCase(),
@@ -158,7 +164,7 @@ function b() {
158
164
  e.priority.toLowerCase(),
159
165
  " priority"
160
166
  ]
161
- })] }), /* @__PURE__ */ u(f, {
167
+ })] }), /* @__PURE__ */ d(p, {
162
168
  variant: "outline",
163
169
  className: "text-xs capitalize",
164
170
  children: e.status.toLowerCase().replace("_", " ")
@@ -166,89 +172,89 @@ function b() {
166
172
  }, e.id))
167
173
  })] })
168
174
  ]
169
- }), /* @__PURE__ */ d("div", {
175
+ }), /* @__PURE__ */ f("div", {
170
176
  className: "space-y-6",
171
177
  children: [
172
- /* @__PURE__ */ d(p, { children: [/* @__PURE__ */ u(h, { children: /* @__PURE__ */ u(g, { children: "Timeline" }) }), /* @__PURE__ */ d(m, {
178
+ /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(g, { children: /* @__PURE__ */ d(_, { children: "Timeline" }) }), /* @__PURE__ */ f(h, {
173
179
  className: "space-y-3 text-sm",
174
- children: [/* @__PURE__ */ d("div", {
180
+ children: [/* @__PURE__ */ f("div", {
175
181
  className: "flex items-center gap-2",
176
182
  children: [
177
- /* @__PURE__ */ u(r, { className: "h-4 w-4 text-muted-foreground" }),
178
- /* @__PURE__ */ u("span", {
183
+ /* @__PURE__ */ d(i, { className: "h-4 w-4 text-muted-foreground" }),
184
+ /* @__PURE__ */ d("span", {
179
185
  className: "text-muted-foreground",
180
186
  children: "Planned:"
181
187
  }),
182
- /* @__PURE__ */ u("span", {
188
+ /* @__PURE__ */ d("span", {
183
189
  className: "font-medium",
184
- children: w.plannedDate ? new Date(w.plannedDate).toLocaleDateString() : "Not set"
190
+ children: T.plannedDate ? new Date(T.plannedDate).toLocaleDateString() : "Not set"
185
191
  })
186
192
  ]
187
- }), w.releasedAt && /* @__PURE__ */ d("div", {
193
+ }), T.releasedAt && /* @__PURE__ */ f("div", {
188
194
  className: "flex items-center gap-2",
189
195
  children: [
190
- /* @__PURE__ */ u(i, { className: "h-4 w-4 text-green-500" }),
191
- /* @__PURE__ */ u("span", {
196
+ /* @__PURE__ */ d(a, { className: "h-4 w-4 text-green-500" }),
197
+ /* @__PURE__ */ d("span", {
192
198
  className: "text-muted-foreground",
193
199
  children: "Released:"
194
200
  }),
195
- /* @__PURE__ */ u("span", {
201
+ /* @__PURE__ */ d("span", {
196
202
  className: "font-medium",
197
- children: new Date(w.releasedAt).toLocaleDateString()
203
+ children: new Date(T.releasedAt).toLocaleDateString()
198
204
  })
199
205
  ]
200
206
  })]
201
207
  })] }),
202
- /* @__PURE__ */ d(p, { children: [/* @__PURE__ */ u(h, { children: /* @__PURE__ */ u(g, { children: "Details" }) }), /* @__PURE__ */ d(m, {
208
+ /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(g, { children: /* @__PURE__ */ d(_, { children: "Details" }) }), /* @__PURE__ */ f(h, {
203
209
  className: "space-y-2 text-sm",
204
210
  children: [
205
- /* @__PURE__ */ d("div", {
211
+ /* @__PURE__ */ f("div", {
206
212
  className: "flex justify-between",
207
- children: [/* @__PURE__ */ u("span", {
213
+ children: [/* @__PURE__ */ d("span", {
208
214
  className: "text-muted-foreground",
209
215
  children: "Version"
210
- }), /* @__PURE__ */ u("span", {
216
+ }), /* @__PURE__ */ d("span", {
211
217
  className: "font-medium",
212
- children: w.version
218
+ children: T.version
213
219
  })]
214
220
  }),
215
- /* @__PURE__ */ d("div", {
221
+ /* @__PURE__ */ f("div", {
216
222
  className: "flex justify-between",
217
- children: [/* @__PURE__ */ u("span", {
223
+ children: [/* @__PURE__ */ d("span", {
218
224
  className: "text-muted-foreground",
219
225
  children: "Status"
220
- }), /* @__PURE__ */ u(f, {
226
+ }), /* @__PURE__ */ d(p, {
221
227
  variant: "outline",
222
228
  className: "text-xs capitalize",
223
- children: w.status.toLowerCase().replace("_", " ")
229
+ children: T.status.toLowerCase().replace("_", " ")
224
230
  })]
225
231
  }),
226
- /* @__PURE__ */ d("div", {
232
+ /* @__PURE__ */ f("div", {
227
233
  className: "flex justify-between",
228
- children: [/* @__PURE__ */ u("span", {
234
+ children: [/* @__PURE__ */ d("span", {
229
235
  className: "text-muted-foreground",
230
236
  children: "Owner"
231
- }), /* @__PURE__ */ u("span", { children: /* @__PURE__ */ u(t, { id: w.ownerId }) })]
237
+ }), /* @__PURE__ */ d("span", { children: /* @__PURE__ */ d(t, { id: T.ownerId }) })]
232
238
  }),
233
- /* @__PURE__ */ d("div", {
239
+ /* @__PURE__ */ f("div", {
234
240
  className: "flex justify-between",
235
- children: [/* @__PURE__ */ u("span", {
241
+ children: [/* @__PURE__ */ d("span", {
236
242
  className: "text-muted-foreground",
237
243
  children: "Created"
238
- }), /* @__PURE__ */ u("span", { children: new Date(w.createdAt).toLocaleDateString() })]
244
+ }), /* @__PURE__ */ d("span", { children: new Date(T.createdAt).toLocaleDateString() })]
239
245
  }),
240
- /* @__PURE__ */ d("div", {
246
+ /* @__PURE__ */ f("div", {
241
247
  className: "flex justify-between",
242
- children: [/* @__PURE__ */ u("span", {
248
+ children: [/* @__PURE__ */ d("span", {
243
249
  className: "text-muted-foreground",
244
250
  children: "Updated"
245
- }), /* @__PURE__ */ u("span", { children: new Date(w.updatedAt).toLocaleDateString() })]
251
+ }), /* @__PURE__ */ d("span", { children: new Date(T.updatedAt).toLocaleDateString() })]
246
252
  })
247
253
  ]
248
254
  })] }),
249
- w.tags?.length > 0 && /* @__PURE__ */ d(p, { children: [/* @__PURE__ */ u(h, { children: /* @__PURE__ */ u(g, { children: "Tags" }) }), /* @__PURE__ */ u(m, {
255
+ T.tags?.length > 0 && /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(g, { children: /* @__PURE__ */ d(_, { children: "Tags" }) }), /* @__PURE__ */ d(h, {
250
256
  className: "flex flex-wrap gap-1",
251
- children: w.tags.map((e) => /* @__PURE__ */ u(f, {
257
+ children: T.tags.map((e) => /* @__PURE__ */ d(p, {
252
258
  variant: "outline",
253
259
  className: "text-xs",
254
260
  children: e
@@ -260,6 +266,6 @@ function b() {
260
266
  });
261
267
  }
262
268
  //#endregion
263
- export { b as ProductsReleaseDetailPagePage };
269
+ export { x as ProductsReleaseDetailPagePage };
264
270
 
265
271
  //# sourceMappingURL=ProductsReleaseDetailPagePage.js.map