@burdenoff/microfe-cosmicintersection 2026.704.1 → 2026.704.2
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.
- package/dist/cosmicintersection/CosmicIntersectionRoutes.js +31 -23
- package/dist/cosmicintersection/CosmicIntersectionRoutes.js.map +1 -1
- package/dist/cosmicintersection/api/cosmicApi.js +131 -66
- package/dist/cosmicintersection/api/cosmicApi.js.map +1 -1
- package/dist/cosmicintersection/components/ActivityFeedPanel.js +68 -0
- package/dist/cosmicintersection/components/ActivityFeedPanel.js.map +1 -0
- package/dist/cosmicintersection/components/DiscussionPanel.js +57 -0
- package/dist/cosmicintersection/components/DiscussionPanel.js.map +1 -0
- package/dist/cosmicintersection/components/index.js +5 -3
- package/dist/cosmicintersection/pages/access/AccessPage.js +24 -17
- package/dist/cosmicintersection/pages/access/AccessPage.js.map +1 -1
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js +12 -12
- package/dist/cosmicintersection/pages/collections/CollectionDetailPage.js +109 -96
- package/dist/cosmicintersection/pages/collections/CollectionDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionFormPage.js +87 -61
- package/dist/cosmicintersection/pages/collections/CollectionFormPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js +51 -42
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js +5 -3
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js +172 -152
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetFormPage.js +7 -7
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js +205 -196
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js +211 -161
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js +113 -108
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunsPage.js +86 -101
- package/dist/cosmicintersection/pages/runs/RunsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js +205 -0
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js.map +1 -0
- package/dist/cosmicintersection/pages/sources/SourcesPage.js +110 -104
- package/dist/cosmicintersection/pages/sources/SourcesPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
import { useCosmicIntersection as e } from "../../context/CosmicIntersectionContext.js";
|
|
2
2
|
import { notify as t } from "../../lib/toast.js";
|
|
3
|
-
import { useCosPublishReleaseMutation as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
3
|
+
import { useCosDatasetsQuery as ee, useCosNotebooksQuery as te, useCosPublishReleaseMutation as ne, useCosReleasesQuery as re } from "../../api/cosmicApi.js";
|
|
4
|
+
import ie from "../../components/ActionMenu.js";
|
|
5
|
+
import ae from "../../components/EmptyState.js";
|
|
6
|
+
import oe from "../../components/ErrorState.js";
|
|
7
|
+
import n from "../../components/LoadingState.js";
|
|
8
|
+
import r from "../../components/SafeLink.js";
|
|
9
|
+
import se from "../../components/DiscussionPanel.js";
|
|
10
|
+
import ce from "../../components/PageLayout.js";
|
|
11
|
+
import le, { usePagination as ue } from "../../components/Pagination.js";
|
|
12
|
+
import i, { formatEnumLabel as de } from "../../components/StatusBadge.js";
|
|
12
13
|
import "../../components/index.js";
|
|
13
|
-
import { useMemo as
|
|
14
|
-
import { Fragment as
|
|
15
|
-
import { BookOpen as
|
|
16
|
-
import {
|
|
14
|
+
import { useMemo as a, useState as o } from "react";
|
|
15
|
+
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
16
|
+
import { BookOpen as u, Database as d, ExternalLink as f, NotebookPen as p, Plus as m, Rocket as h } from "lucide-react";
|
|
17
|
+
import { Button as g, Dialog as _, DialogClose as fe, DialogContent as v, DialogDescription as y, DialogFooter as b, DialogHeader as x, DialogTitle as S, Input as pe, Label as me, Select as he, SelectContent as ge, SelectItem as C, SelectTrigger as _e, SelectValue as ve, Table as ye, TableBody as be, TableCell as w, TableHead as T, TableHeader as E, TableRow as D } from "@burdenoff/fe-libs/ui";
|
|
17
18
|
//#region src/cosmicintersection/pages/releases/ReleasesPage.tsx
|
|
18
|
-
var
|
|
19
|
+
var O = "ALL", k = [
|
|
19
20
|
"DRAFT",
|
|
20
21
|
"UNDER_REVIEW",
|
|
21
22
|
"PUBLISHED",
|
|
22
23
|
"RETRACTED"
|
|
23
24
|
];
|
|
24
|
-
function
|
|
25
|
+
function A(e) {
|
|
25
26
|
return e === "DRAFT" || e === "UNDER_REVIEW";
|
|
26
27
|
}
|
|
27
|
-
function
|
|
28
|
+
function j(e) {
|
|
28
29
|
if (!e) return "—";
|
|
29
30
|
let t = new Date(e);
|
|
30
31
|
return Number.isNaN(t.getTime()) ? "—" : t.toLocaleDateString(void 0, {
|
|
@@ -33,283 +34,332 @@ function P(e) {
|
|
|
33
34
|
day: "numeric"
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
|
-
function
|
|
37
|
+
function M(e) {
|
|
37
38
|
let t = e.trim();
|
|
38
39
|
return /^https?:\/\//i.test(t) ? t : `https://doi.org/${t.replace(/^doi:/i, "")}`;
|
|
39
40
|
}
|
|
40
|
-
function
|
|
41
|
-
let { navigate:
|
|
41
|
+
function N() {
|
|
42
|
+
let { navigate: N } = e(), [P, xe] = o(O), F = ue({
|
|
42
43
|
pageSize: 20,
|
|
43
|
-
resetKey:
|
|
44
|
-
}), { data:
|
|
45
|
-
status:
|
|
44
|
+
resetKey: P
|
|
45
|
+
}), { data: I, loading: L, error: R, refetch: z } = re({
|
|
46
|
+
status: P === O ? void 0 : P,
|
|
46
47
|
pagination: {
|
|
47
|
-
limit:
|
|
48
|
-
offset:
|
|
48
|
+
limit: F.limit,
|
|
49
|
+
offset: F.offset
|
|
49
50
|
}
|
|
50
|
-
}), [
|
|
51
|
+
}), [Se, { loading: B }] = ne(), V = a(() => I?.cosListReleases.items ?? [], [I]), Ce = I?.cosListReleases.pageInfo, H = ee({ pagination: {
|
|
52
|
+
limit: 100,
|
|
53
|
+
offset: 0
|
|
54
|
+
} }), U = te({ pagination: {
|
|
55
|
+
limit: 100,
|
|
56
|
+
offset: 0
|
|
57
|
+
} }), we = a(() => {
|
|
58
|
+
let e = /* @__PURE__ */ new Map();
|
|
59
|
+
for (let t of H.data?.cosListDatasets.items ?? []) e.set(t.id, t.name);
|
|
60
|
+
return e;
|
|
61
|
+
}, [H.data]), W = a(() => {
|
|
62
|
+
let e = /* @__PURE__ */ new Map();
|
|
63
|
+
for (let t of U.data?.cosListNotebooks.items ?? []) e.set(t.id, t.title);
|
|
64
|
+
return e;
|
|
65
|
+
}, [U.data]), [G, K] = o(null), q = (e) => {
|
|
66
|
+
K(null), N(e);
|
|
67
|
+
}, [J, Y] = o(null), [X, Z] = o(""), Q = (e) => {
|
|
51
68
|
Z(e.doi ?? ""), Y(e);
|
|
52
|
-
},
|
|
69
|
+
}, Te = async () => {
|
|
53
70
|
if (!J) return;
|
|
54
71
|
let e = X.trim();
|
|
55
|
-
(await
|
|
72
|
+
(await Se({ variables: {
|
|
56
73
|
id: J.id,
|
|
57
74
|
doi: e || void 0
|
|
58
|
-
} })).data?.cosPublishRelease?.id && (t.success("Release published", `“${J.title}” is now public.`), Y(null), Z(""), await
|
|
59
|
-
}, $ = /* @__PURE__ */
|
|
75
|
+
} })).data?.cosPublishRelease?.id && (t.success("Release published", `“${J.title}” is now public.`), Y(null), Z(""), await z());
|
|
76
|
+
}, $ = /* @__PURE__ */ l(g, {
|
|
60
77
|
type: "button",
|
|
61
|
-
onClick: () =>
|
|
62
|
-
children: [/* @__PURE__ */
|
|
78
|
+
onClick: () => N("releases/create"),
|
|
79
|
+
children: [/* @__PURE__ */ c(m, { className: "size-4" }), "New release"]
|
|
63
80
|
});
|
|
64
|
-
return /* @__PURE__ */
|
|
81
|
+
return /* @__PURE__ */ l(ce, {
|
|
65
82
|
title: "Releases",
|
|
66
83
|
description: "Citable, versioned publications that bundle datasets and notebooks for the community.",
|
|
67
84
|
actions: $,
|
|
68
85
|
children: [
|
|
69
|
-
/* @__PURE__ */
|
|
86
|
+
/* @__PURE__ */ l("div", {
|
|
70
87
|
className: "space-y-4",
|
|
71
|
-
children: [/* @__PURE__ */
|
|
88
|
+
children: [/* @__PURE__ */ c("div", {
|
|
72
89
|
className: "flex flex-wrap items-center gap-3",
|
|
73
|
-
children: /* @__PURE__ */
|
|
90
|
+
children: /* @__PURE__ */ c("div", {
|
|
74
91
|
className: "w-full max-w-[14rem]",
|
|
75
|
-
children: /* @__PURE__ */
|
|
76
|
-
value:
|
|
77
|
-
onValueChange:
|
|
78
|
-
children: [/* @__PURE__ */
|
|
92
|
+
children: /* @__PURE__ */ l(he, {
|
|
93
|
+
value: P,
|
|
94
|
+
onValueChange: xe,
|
|
95
|
+
children: [/* @__PURE__ */ c(_e, {
|
|
79
96
|
"aria-label": "Filter by status",
|
|
80
|
-
children: /* @__PURE__ */
|
|
81
|
-
}), /* @__PURE__ */
|
|
82
|
-
value:
|
|
97
|
+
children: /* @__PURE__ */ c(ve, { placeholder: "All statuses" })
|
|
98
|
+
}), /* @__PURE__ */ l(ge, { children: [/* @__PURE__ */ c(C, {
|
|
99
|
+
value: O,
|
|
83
100
|
children: "All statuses"
|
|
84
|
-
}),
|
|
101
|
+
}), k.map((e) => /* @__PURE__ */ c(C, {
|
|
85
102
|
value: e,
|
|
86
|
-
children:
|
|
103
|
+
children: de(e)
|
|
87
104
|
}, e))] })]
|
|
88
105
|
})
|
|
89
106
|
})
|
|
90
107
|
}), (() => {
|
|
91
|
-
if (
|
|
108
|
+
if (L) return /* @__PURE__ */ c(n, {
|
|
92
109
|
variant: "rows",
|
|
93
110
|
rows: 6,
|
|
94
111
|
label: "Loading releases…"
|
|
95
112
|
});
|
|
96
|
-
if (
|
|
97
|
-
message:
|
|
98
|
-
onRetry: () => void
|
|
113
|
+
if (R) return /* @__PURE__ */ c(oe, {
|
|
114
|
+
message: R.message,
|
|
115
|
+
onRetry: () => void z()
|
|
99
116
|
});
|
|
100
|
-
if (
|
|
101
|
-
let e =
|
|
102
|
-
return /* @__PURE__ */
|
|
103
|
-
icon:
|
|
117
|
+
if (V.length === 0) {
|
|
118
|
+
let e = P !== O;
|
|
119
|
+
return /* @__PURE__ */ c(ae, {
|
|
120
|
+
icon: h,
|
|
104
121
|
title: e ? "No releases match this filter" : "No releases yet",
|
|
105
122
|
description: e ? "Try clearing the status filter to see more releases." : "Package datasets and notebooks into a citable, versioned release for publication.",
|
|
106
123
|
action: e ? void 0 : $
|
|
107
124
|
});
|
|
108
125
|
}
|
|
109
|
-
return /* @__PURE__ */
|
|
126
|
+
return /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c("div", {
|
|
110
127
|
className: "overflow-x-auto rounded-card border border-border-default bg-bg-elevated",
|
|
111
|
-
children: /* @__PURE__ */
|
|
112
|
-
/* @__PURE__ */
|
|
113
|
-
/* @__PURE__ */
|
|
114
|
-
/* @__PURE__ */
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
/* @__PURE__ */
|
|
117
|
-
/* @__PURE__ */
|
|
118
|
-
/* @__PURE__ */
|
|
119
|
-
/* @__PURE__ */
|
|
128
|
+
children: /* @__PURE__ */ l(ye, { children: [/* @__PURE__ */ c(E, { children: /* @__PURE__ */ l(D, { children: [
|
|
129
|
+
/* @__PURE__ */ c(T, { children: "Title" }),
|
|
130
|
+
/* @__PURE__ */ c(T, { children: "Version" }),
|
|
131
|
+
/* @__PURE__ */ c(T, { children: "Status" }),
|
|
132
|
+
/* @__PURE__ */ c(T, { children: "DOI" }),
|
|
133
|
+
/* @__PURE__ */ c(T, { children: "Authors" }),
|
|
134
|
+
/* @__PURE__ */ c(T, { children: "Published" }),
|
|
135
|
+
/* @__PURE__ */ c(T, { children: "License" }),
|
|
136
|
+
/* @__PURE__ */ c(T, {
|
|
120
137
|
className: "text-right",
|
|
121
138
|
children: "Actions"
|
|
122
139
|
})
|
|
123
|
-
] }) }), /* @__PURE__ */
|
|
124
|
-
/* @__PURE__ */
|
|
140
|
+
] }) }), /* @__PURE__ */ c(be, { children: V.map((e) => /* @__PURE__ */ l(D, { children: [
|
|
141
|
+
/* @__PURE__ */ c(w, { children: /* @__PURE__ */ c("button", {
|
|
125
142
|
type: "button",
|
|
126
|
-
onClick: () =>
|
|
143
|
+
onClick: () => K(e),
|
|
127
144
|
className: "text-left font-medium text-text-primary underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-focus",
|
|
128
145
|
children: e.title
|
|
129
146
|
}) }),
|
|
130
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ c(w, {
|
|
131
148
|
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
132
149
|
children: e.version || "—"
|
|
133
150
|
}),
|
|
134
|
-
/* @__PURE__ */
|
|
135
|
-
/* @__PURE__ */
|
|
151
|
+
/* @__PURE__ */ c(w, { children: /* @__PURE__ */ c(i, { status: e.status }) }),
|
|
152
|
+
/* @__PURE__ */ c(w, {
|
|
136
153
|
className: "max-w-[14rem]",
|
|
137
|
-
children: e.doi ? /* @__PURE__ */
|
|
138
|
-
href:
|
|
154
|
+
children: e.doi ? /* @__PURE__ */ l(r, {
|
|
155
|
+
href: M(e.doi),
|
|
139
156
|
className: "inline-flex items-center gap-1 truncate text-sm text-text-primary underline-offset-2 hover:underline",
|
|
140
157
|
fallbackClassName: "block truncate text-sm text-text-secondary",
|
|
141
|
-
children: [/* @__PURE__ */
|
|
158
|
+
children: [/* @__PURE__ */ c("span", {
|
|
142
159
|
className: "truncate",
|
|
143
160
|
children: e.doi
|
|
144
|
-
}), /* @__PURE__ */
|
|
161
|
+
}), /* @__PURE__ */ c(f, {
|
|
145
162
|
className: "size-3.5 shrink-0",
|
|
146
163
|
"aria-hidden": "true"
|
|
147
164
|
})]
|
|
148
|
-
}) : /* @__PURE__ */
|
|
165
|
+
}) : /* @__PURE__ */ c("span", {
|
|
149
166
|
className: "text-sm text-text-secondary",
|
|
150
167
|
children: "—"
|
|
151
168
|
})
|
|
152
169
|
}),
|
|
153
|
-
/* @__PURE__ */
|
|
170
|
+
/* @__PURE__ */ c(w, {
|
|
154
171
|
className: "max-w-[14rem]",
|
|
155
|
-
children: e.authors.length === 0 ? /* @__PURE__ */
|
|
172
|
+
children: e.authors.length === 0 ? /* @__PURE__ */ c("span", {
|
|
156
173
|
className: "text-sm text-text-secondary",
|
|
157
174
|
children: "—"
|
|
158
|
-
}) : /* @__PURE__ */
|
|
175
|
+
}) : /* @__PURE__ */ c("span", {
|
|
159
176
|
className: "line-clamp-1 text-sm text-text-secondary",
|
|
160
177
|
children: e.authors.join(", ")
|
|
161
178
|
})
|
|
162
179
|
}),
|
|
163
|
-
/* @__PURE__ */
|
|
180
|
+
/* @__PURE__ */ c(w, {
|
|
164
181
|
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
165
|
-
children:
|
|
182
|
+
children: j(e.publishedAt)
|
|
166
183
|
}),
|
|
167
|
-
/* @__PURE__ */
|
|
184
|
+
/* @__PURE__ */ c(w, {
|
|
168
185
|
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
169
186
|
children: e.license || "—"
|
|
170
187
|
}),
|
|
171
|
-
/* @__PURE__ */
|
|
188
|
+
/* @__PURE__ */ c(w, {
|
|
172
189
|
className: "text-right",
|
|
173
|
-
children: /* @__PURE__ */
|
|
190
|
+
children: /* @__PURE__ */ c(ie, {
|
|
174
191
|
ariaLabel: `Actions for ${e.title}`,
|
|
175
|
-
onView: () =>
|
|
176
|
-
extraItems:
|
|
192
|
+
onView: () => K(e),
|
|
193
|
+
extraItems: A(e.status) ? [{
|
|
177
194
|
key: "publish",
|
|
178
195
|
label: "Publish",
|
|
179
|
-
icon:
|
|
196
|
+
icon: h,
|
|
180
197
|
onSelect: () => Q(e)
|
|
181
198
|
}] : []
|
|
182
199
|
})
|
|
183
200
|
})
|
|
184
201
|
] }, e.id)) })] })
|
|
185
|
-
}), /* @__PURE__ */
|
|
186
|
-
offset:
|
|
187
|
-
limit:
|
|
188
|
-
loadedCount:
|
|
189
|
-
hasMore:
|
|
190
|
-
onPrev:
|
|
191
|
-
onNext:
|
|
202
|
+
}), /* @__PURE__ */ c(le, {
|
|
203
|
+
offset: F.offset,
|
|
204
|
+
limit: F.limit,
|
|
205
|
+
loadedCount: V.length,
|
|
206
|
+
hasMore: Ce?.hasMore ?? !1,
|
|
207
|
+
onPrev: F.prevPage,
|
|
208
|
+
onNext: F.nextPage,
|
|
192
209
|
itemLabel: "releases",
|
|
193
|
-
loading:
|
|
210
|
+
loading: L
|
|
194
211
|
})] });
|
|
195
212
|
})()]
|
|
196
213
|
}),
|
|
197
|
-
/* @__PURE__ */
|
|
198
|
-
open:
|
|
199
|
-
onOpenChange: (e) => e ? void 0 :
|
|
200
|
-
children: /* @__PURE__ */
|
|
201
|
-
className: "max-w-lg",
|
|
202
|
-
children:
|
|
203
|
-
/* @__PURE__ */
|
|
214
|
+
/* @__PURE__ */ c(_, {
|
|
215
|
+
open: G !== null,
|
|
216
|
+
onOpenChange: (e) => e ? void 0 : K(null),
|
|
217
|
+
children: /* @__PURE__ */ c(v, {
|
|
218
|
+
className: "max-h-[85vh] max-w-lg overflow-y-auto",
|
|
219
|
+
children: G ? /* @__PURE__ */ l(s, { children: [
|
|
220
|
+
/* @__PURE__ */ l(x, { children: [/* @__PURE__ */ l(S, {
|
|
204
221
|
className: "flex items-center gap-2",
|
|
205
|
-
children: [/* @__PURE__ */
|
|
222
|
+
children: [/* @__PURE__ */ c(u, {
|
|
206
223
|
className: "size-5 text-text-secondary",
|
|
207
224
|
"aria-hidden": "true"
|
|
208
|
-
}),
|
|
209
|
-
}), /* @__PURE__ */
|
|
225
|
+
}), G.title]
|
|
226
|
+
}), /* @__PURE__ */ l(y, { children: [
|
|
210
227
|
"Version ",
|
|
211
|
-
|
|
228
|
+
G.version || "—",
|
|
212
229
|
" · ",
|
|
213
|
-
/* @__PURE__ */
|
|
230
|
+
/* @__PURE__ */ c(i, { status: G.status })
|
|
214
231
|
] })] }),
|
|
215
|
-
/* @__PURE__ */
|
|
232
|
+
/* @__PURE__ */ l("div", {
|
|
216
233
|
className: "space-y-4 text-sm",
|
|
217
234
|
children: [
|
|
218
|
-
/* @__PURE__ */
|
|
235
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
|
|
219
236
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
220
237
|
children: "Abstract"
|
|
221
|
-
}), /* @__PURE__ */
|
|
238
|
+
}), /* @__PURE__ */ c("p", {
|
|
222
239
|
className: "mt-1 whitespace-pre-wrap text-text-primary",
|
|
223
|
-
children:
|
|
240
|
+
children: G.abstract?.trim() || "No abstract provided."
|
|
224
241
|
})] }),
|
|
225
|
-
/* @__PURE__ */
|
|
242
|
+
/* @__PURE__ */ l("div", {
|
|
226
243
|
className: "grid grid-cols-2 gap-4",
|
|
227
244
|
children: [
|
|
228
|
-
/* @__PURE__ */
|
|
245
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
|
|
229
246
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
230
247
|
children: "Authors"
|
|
231
|
-
}), /* @__PURE__ */
|
|
248
|
+
}), /* @__PURE__ */ c("p", {
|
|
232
249
|
className: "mt-1 text-text-primary",
|
|
233
|
-
children:
|
|
250
|
+
children: G.authors.length ? G.authors.join(", ") : "—"
|
|
234
251
|
})] }),
|
|
235
|
-
/* @__PURE__ */
|
|
252
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
|
|
236
253
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
237
254
|
children: "License"
|
|
238
|
-
}), /* @__PURE__ */
|
|
255
|
+
}), /* @__PURE__ */ c("p", {
|
|
239
256
|
className: "mt-1 text-text-primary",
|
|
240
|
-
children:
|
|
257
|
+
children: G.license || "—"
|
|
241
258
|
})] }),
|
|
242
|
-
/* @__PURE__ */
|
|
259
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
|
|
243
260
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
244
261
|
children: "Published"
|
|
245
|
-
}), /* @__PURE__ */
|
|
262
|
+
}), /* @__PURE__ */ c("p", {
|
|
246
263
|
className: "mt-1 text-text-primary",
|
|
247
|
-
children:
|
|
264
|
+
children: j(G.publishedAt)
|
|
248
265
|
})] }),
|
|
249
|
-
/* @__PURE__ */
|
|
266
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
|
|
250
267
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
251
268
|
children: "DOI"
|
|
252
|
-
}), /* @__PURE__ */
|
|
269
|
+
}), /* @__PURE__ */ c("p", {
|
|
253
270
|
className: "mt-1",
|
|
254
|
-
children:
|
|
255
|
-
href:
|
|
271
|
+
children: G.doi ? /* @__PURE__ */ l(r, {
|
|
272
|
+
href: M(G.doi),
|
|
256
273
|
className: "inline-flex items-center gap-1 text-text-primary underline-offset-2 hover:underline",
|
|
257
274
|
fallbackClassName: "text-text-secondary",
|
|
258
|
-
children: [
|
|
275
|
+
children: [G.doi, /* @__PURE__ */ c(f, {
|
|
259
276
|
className: "size-3.5",
|
|
260
277
|
"aria-hidden": "true"
|
|
261
278
|
})]
|
|
262
|
-
}) : /* @__PURE__ */
|
|
279
|
+
}) : /* @__PURE__ */ c("span", {
|
|
263
280
|
className: "text-text-secondary",
|
|
264
281
|
children: "Not assigned"
|
|
265
282
|
})
|
|
266
283
|
})] })
|
|
267
284
|
]
|
|
268
285
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
286
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ l("p", {
|
|
270
287
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
271
288
|
children: [
|
|
272
289
|
"Datasets (",
|
|
273
|
-
|
|
290
|
+
G.datasetIds.length,
|
|
274
291
|
")"
|
|
275
292
|
]
|
|
276
|
-
}), /* @__PURE__ */
|
|
277
|
-
className: "mt-1 flex flex-wrap gap-1",
|
|
278
|
-
children:
|
|
293
|
+
}), /* @__PURE__ */ c("div", {
|
|
294
|
+
className: "mt-1 flex flex-wrap gap-1.5",
|
|
295
|
+
children: G.datasetIds.length === 0 ? /* @__PURE__ */ c("span", {
|
|
279
296
|
className: "text-text-secondary",
|
|
280
297
|
children: "None linked."
|
|
281
|
-
}) :
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
298
|
+
}) : G.datasetIds.map((e) => {
|
|
299
|
+
let t = we.get(e);
|
|
300
|
+
return /* @__PURE__ */ l(g, {
|
|
301
|
+
type: "button",
|
|
302
|
+
variant: "outline",
|
|
303
|
+
size: "sm",
|
|
304
|
+
className: "h-auto gap-1 px-2 py-1",
|
|
305
|
+
onClick: () => q(`datasets/${e}`),
|
|
306
|
+
children: [/* @__PURE__ */ c(d, {
|
|
307
|
+
className: "size-3.5",
|
|
308
|
+
"aria-hidden": "true"
|
|
309
|
+
}), /* @__PURE__ */ c("span", {
|
|
310
|
+
className: t ? "" : "font-mono text-xs",
|
|
311
|
+
children: t ?? e
|
|
312
|
+
})]
|
|
313
|
+
}, e);
|
|
314
|
+
})
|
|
286
315
|
})] }),
|
|
287
|
-
/* @__PURE__ */
|
|
316
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
|
|
288
317
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
289
318
|
children: "Notebook"
|
|
290
|
-
}), /* @__PURE__ */
|
|
319
|
+
}), /* @__PURE__ */ c("div", {
|
|
291
320
|
className: "mt-1",
|
|
292
|
-
children:
|
|
321
|
+
children: G.notebookId ? /* @__PURE__ */ l(g, {
|
|
322
|
+
type: "button",
|
|
293
323
|
variant: "outline",
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
324
|
+
size: "sm",
|
|
325
|
+
className: "h-auto gap-1 px-2 py-1",
|
|
326
|
+
onClick: () => q(`notebooks/${G.notebookId}`),
|
|
327
|
+
children: [/* @__PURE__ */ c(p, {
|
|
328
|
+
className: "size-3.5",
|
|
329
|
+
"aria-hidden": "true"
|
|
330
|
+
}), /* @__PURE__ */ c("span", {
|
|
331
|
+
className: W.get(G.notebookId) ? "" : "font-mono text-xs",
|
|
332
|
+
children: W.get(G.notebookId) ?? G.notebookId
|
|
333
|
+
})]
|
|
334
|
+
}) : /* @__PURE__ */ c("span", {
|
|
297
335
|
className: "text-text-secondary",
|
|
298
336
|
children: "None linked."
|
|
299
337
|
})
|
|
338
|
+
})] }),
|
|
339
|
+
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
|
|
340
|
+
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
341
|
+
children: "Discussion"
|
|
342
|
+
}), /* @__PURE__ */ c("div", {
|
|
343
|
+
className: "mt-2",
|
|
344
|
+
children: /* @__PURE__ */ c(se, {
|
|
345
|
+
entityType: "cosmicintersection-release",
|
|
346
|
+
entityId: G.id,
|
|
347
|
+
title: G.title,
|
|
348
|
+
widgetKey: "release-discussion"
|
|
349
|
+
})
|
|
300
350
|
})] })
|
|
301
351
|
]
|
|
302
352
|
}),
|
|
303
|
-
/* @__PURE__ */
|
|
353
|
+
/* @__PURE__ */ l(b, { children: [A(G.status) ? /* @__PURE__ */ l(g, {
|
|
304
354
|
type: "button",
|
|
305
355
|
onClick: () => {
|
|
306
|
-
let e =
|
|
307
|
-
|
|
356
|
+
let e = G;
|
|
357
|
+
K(null), Q(e);
|
|
308
358
|
},
|
|
309
|
-
children: [/* @__PURE__ */
|
|
310
|
-
}) : null, /* @__PURE__ */
|
|
359
|
+
children: [/* @__PURE__ */ c(h, { className: "size-4" }), "Publish"]
|
|
360
|
+
}) : null, /* @__PURE__ */ c(fe, {
|
|
311
361
|
asChild: !0,
|
|
312
|
-
children: /* @__PURE__ */
|
|
362
|
+
children: /* @__PURE__ */ c(g, {
|
|
313
363
|
type: "button",
|
|
314
364
|
variant: "outline",
|
|
315
365
|
children: "Close"
|
|
@@ -318,43 +368,43 @@ function I() {
|
|
|
318
368
|
] }) : null
|
|
319
369
|
})
|
|
320
370
|
}),
|
|
321
|
-
/* @__PURE__ */
|
|
371
|
+
/* @__PURE__ */ c(_, {
|
|
322
372
|
open: J !== null,
|
|
323
|
-
onOpenChange: (e) => e ||
|
|
324
|
-
children: /* @__PURE__ */
|
|
373
|
+
onOpenChange: (e) => e || B ? void 0 : Y(null),
|
|
374
|
+
children: /* @__PURE__ */ l(v, {
|
|
325
375
|
className: "max-w-md",
|
|
326
376
|
children: [
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
/* @__PURE__ */
|
|
377
|
+
/* @__PURE__ */ l(x, { children: [/* @__PURE__ */ c(S, { children: "Publish release" }), /* @__PURE__ */ c(y, { children: J ? `Publish “${J.title}” to make it publicly citable. You can attach a DOI now or later.` : "" })] }),
|
|
378
|
+
/* @__PURE__ */ l("div", {
|
|
329
379
|
className: "space-y-2",
|
|
330
380
|
children: [
|
|
331
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ c(me, {
|
|
332
382
|
htmlFor: "release-doi",
|
|
333
383
|
children: "DOI (optional)"
|
|
334
384
|
}),
|
|
335
|
-
/* @__PURE__ */
|
|
385
|
+
/* @__PURE__ */ c(pe, {
|
|
336
386
|
id: "release-doi",
|
|
337
387
|
value: X,
|
|
338
388
|
onChange: (e) => Z(e.target.value),
|
|
339
389
|
placeholder: "10.1234/cosmic.2026.0001"
|
|
340
390
|
}),
|
|
341
|
-
/* @__PURE__ */
|
|
391
|
+
/* @__PURE__ */ c("p", {
|
|
342
392
|
className: "text-xs text-text-secondary",
|
|
343
393
|
children: "A Digital Object Identifier makes the release permanently referenceable."
|
|
344
394
|
})
|
|
345
395
|
]
|
|
346
396
|
}),
|
|
347
|
-
/* @__PURE__ */
|
|
397
|
+
/* @__PURE__ */ l(b, { children: [/* @__PURE__ */ c(g, {
|
|
348
398
|
type: "button",
|
|
349
399
|
variant: "outline",
|
|
350
400
|
onClick: () => Y(null),
|
|
351
|
-
disabled:
|
|
401
|
+
disabled: B,
|
|
352
402
|
children: "Cancel"
|
|
353
|
-
}), /* @__PURE__ */
|
|
403
|
+
}), /* @__PURE__ */ l(g, {
|
|
354
404
|
type: "button",
|
|
355
|
-
onClick: () => void
|
|
356
|
-
disabled:
|
|
357
|
-
children: [/* @__PURE__ */
|
|
405
|
+
onClick: () => void Te(),
|
|
406
|
+
disabled: B,
|
|
407
|
+
children: [/* @__PURE__ */ c(h, { className: "size-4" }), B ? "Publishing…" : "Publish release"]
|
|
358
408
|
})] })
|
|
359
409
|
]
|
|
360
410
|
})
|
|
@@ -363,6 +413,6 @@ function I() {
|
|
|
363
413
|
});
|
|
364
414
|
}
|
|
365
415
|
//#endregion
|
|
366
|
-
export {
|
|
416
|
+
export { N as default };
|
|
367
417
|
|
|
368
418
|
//# sourceMappingURL=ReleasesPage.js.map
|