@burdenoff/microfe-cosmicintersection 2026.704.1 → 2026.704.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cosmicintersection/CosmicIntersectionRoutes.js +45 -25
- package/dist/cosmicintersection/CosmicIntersectionRoutes.js.map +1 -1
- package/dist/cosmicintersection/api/cosmicApi.js +137 -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/FacetPanel.js +66 -0
- package/dist/cosmicintersection/components/FacetPanel.js.map +1 -0
- package/dist/cosmicintersection/components/LineageGraph.js +388 -0
- package/dist/cosmicintersection/components/LineageGraph.js.map +1 -0
- package/dist/cosmicintersection/components/ResultsChart.js +329 -0
- package/dist/cosmicintersection/components/ResultsChart.js.map +1 -0
- package/dist/cosmicintersection/components/StepDAG.js +104 -0
- package/dist/cosmicintersection/components/StepDAG.js.map +1 -0
- package/dist/cosmicintersection/components/index.js +5 -3
- package/dist/cosmicintersection/pages/access/AccessPage.js +220 -161
- package/dist/cosmicintersection/pages/access/AccessPage.js.map +1 -1
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js +332 -172
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionDetailPage.js +167 -109
- 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 +31 -18
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js +330 -184
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetFormPage.js +7 -7
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js +321 -163
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js +358 -0
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js.map +1 -0
- package/dist/cosmicintersection/pages/lineage/LineagePage.js +171 -0
- package/dist/cosmicintersection/pages/lineage/LineagePage.js.map +1 -0
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js +339 -260
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js +143 -82
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelineDetailPage.js +286 -142
- package/dist/cosmicintersection/pages/pipelines/PipelineDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelineFormPage.js +305 -103
- package/dist/cosmicintersection/pages/pipelines/PipelineFormPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js +183 -79
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js +346 -204
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js +184 -136
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunsPage.js +182 -120
- package/dist/cosmicintersection/pages/runs/RunsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js +234 -0
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js.map +1 -0
- package/dist/cosmicintersection/pages/sources/SourcesPage.js +250 -133
- 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 {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import a
|
|
10
|
-
import
|
|
11
|
-
import
|
|
3
|
+
import { useCosDatasetsQuery as ee, useCosNotebooksQuery as n, useCosPublishReleaseMutation as te, useCosReleasesQuery as ne } from "../../api/cosmicApi.js";
|
|
4
|
+
import r from "../../components/ActionMenu.js";
|
|
5
|
+
import re from "../../components/EmptyState.js";
|
|
6
|
+
import ie from "../../components/ErrorState.js";
|
|
7
|
+
import ae from "../../components/LoadingState.js";
|
|
8
|
+
import i from "../../components/SafeLink.js";
|
|
9
|
+
import a from "../../components/DiscussionPanel.js";
|
|
10
|
+
import oe from "../../components/PageLayout.js";
|
|
11
|
+
import se, { usePagination as ce } from "../../components/Pagination.js";
|
|
12
|
+
import o, { formatEnumLabel as le } 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 s, useState as c } from "react";
|
|
15
|
+
import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
16
|
+
import { BookOpen as ue, Database as de, 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,391 @@ 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] = c(O), F = ce({
|
|
42
43
|
pageSize: 20,
|
|
43
|
-
resetKey:
|
|
44
|
-
}), { data:
|
|
45
|
-
status:
|
|
44
|
+
resetKey: P
|
|
45
|
+
}), { data: I, loading: L, error: R, refetch: z } = ne({
|
|
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 }] = te(), V = s(() => I?.cosListReleases.items ?? [], [I]), Ce = I?.cosListReleases.pageInfo, H = ee({ pagination: {
|
|
52
|
+
limit: 100,
|
|
53
|
+
offset: 0
|
|
54
|
+
} }), U = n({ pagination: {
|
|
55
|
+
limit: 100,
|
|
56
|
+
offset: 0
|
|
57
|
+
} }), we = s(() => {
|
|
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 = s(() => {
|
|
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] = c(null), q = (e) => {
|
|
66
|
+
K(null), N(e);
|
|
67
|
+
}, [J, Y] = c(null), [X, Z] = c(""), 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__ */ d(g, {
|
|
60
77
|
type: "button",
|
|
61
|
-
onClick: () =>
|
|
62
|
-
children: [/* @__PURE__ */
|
|
78
|
+
onClick: () => N("releases/create"),
|
|
79
|
+
children: [/* @__PURE__ */ u(m, { className: "size-4" }), "New release"]
|
|
63
80
|
});
|
|
64
|
-
return /* @__PURE__ */
|
|
81
|
+
return /* @__PURE__ */ d(oe, {
|
|
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__ */ d("div", {
|
|
70
87
|
className: "space-y-4",
|
|
71
|
-
children: [/* @__PURE__ */
|
|
88
|
+
children: [/* @__PURE__ */ u("div", {
|
|
72
89
|
className: "flex flex-wrap items-center gap-3",
|
|
73
|
-
children: /* @__PURE__ */
|
|
90
|
+
children: /* @__PURE__ */ u("div", {
|
|
74
91
|
className: "w-full max-w-[14rem]",
|
|
75
|
-
children: /* @__PURE__ */
|
|
76
|
-
value:
|
|
77
|
-
onValueChange:
|
|
78
|
-
children: [/* @__PURE__ */
|
|
92
|
+
children: /* @__PURE__ */ d(he, {
|
|
93
|
+
value: P,
|
|
94
|
+
onValueChange: xe,
|
|
95
|
+
children: [/* @__PURE__ */ u(_e, {
|
|
79
96
|
"aria-label": "Filter by status",
|
|
80
|
-
children: /* @__PURE__ */
|
|
81
|
-
}), /* @__PURE__ */
|
|
82
|
-
value:
|
|
97
|
+
children: /* @__PURE__ */ u(ve, { placeholder: "All statuses" })
|
|
98
|
+
}), /* @__PURE__ */ d(ge, { children: [/* @__PURE__ */ u(C, {
|
|
99
|
+
value: O,
|
|
83
100
|
children: "All statuses"
|
|
84
|
-
}),
|
|
101
|
+
}), k.map((e) => /* @__PURE__ */ u(C, {
|
|
85
102
|
value: e,
|
|
86
|
-
children:
|
|
103
|
+
children: le(e)
|
|
87
104
|
}, e))] })]
|
|
88
105
|
})
|
|
89
106
|
})
|
|
90
107
|
}), (() => {
|
|
91
|
-
if (
|
|
108
|
+
if (L) return /* @__PURE__ */ u(ae, {
|
|
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__ */ u(ie, {
|
|
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__ */ u(re, {
|
|
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__ */
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
/* @__PURE__ */
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
] }) }), /* @__PURE__ */ p(fe, { children: G.map((e) => /* @__PURE__ */ m(A, { children: [
|
|
124
|
-
/* @__PURE__ */ p(O, { children: /* @__PURE__ */ p("button", {
|
|
125
|
-
type: "button",
|
|
126
|
-
onClick: () => q(e),
|
|
127
|
-
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
|
-
children: e.title
|
|
129
|
-
}) }),
|
|
130
|
-
/* @__PURE__ */ p(O, {
|
|
131
|
-
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
132
|
-
children: e.version || "—"
|
|
133
|
-
}),
|
|
134
|
-
/* @__PURE__ */ p(O, { children: /* @__PURE__ */ p(c, { status: e.status }) }),
|
|
135
|
-
/* @__PURE__ */ p(O, {
|
|
136
|
-
className: "max-w-[14rem]",
|
|
137
|
-
children: e.doi ? /* @__PURE__ */ m(s, {
|
|
138
|
-
href: F(e.doi),
|
|
139
|
-
className: "inline-flex items-center gap-1 truncate text-sm text-text-primary underline-offset-2 hover:underline",
|
|
140
|
-
fallbackClassName: "block truncate text-sm text-text-secondary",
|
|
141
|
-
children: [/* @__PURE__ */ p("span", {
|
|
142
|
-
className: "truncate",
|
|
143
|
-
children: e.doi
|
|
144
|
-
}), /* @__PURE__ */ p(h, {
|
|
145
|
-
className: "size-3.5 shrink-0",
|
|
146
|
-
"aria-hidden": "true"
|
|
147
|
-
})]
|
|
148
|
-
}) : /* @__PURE__ */ p("span", {
|
|
149
|
-
className: "text-sm text-text-secondary",
|
|
150
|
-
children: "—"
|
|
126
|
+
return /* @__PURE__ */ d(l, { children: [
|
|
127
|
+
/* @__PURE__ */ u("div", {
|
|
128
|
+
className: "hidden rounded-card border border-border-default bg-bg-elevated md:block",
|
|
129
|
+
children: /* @__PURE__ */ d(ye, { children: [/* @__PURE__ */ u(E, { children: /* @__PURE__ */ d(D, { children: [
|
|
130
|
+
/* @__PURE__ */ u(T, { children: "Title" }),
|
|
131
|
+
/* @__PURE__ */ u(T, { children: "Version" }),
|
|
132
|
+
/* @__PURE__ */ u(T, { children: "Status" }),
|
|
133
|
+
/* @__PURE__ */ u(T, { children: "DOI" }),
|
|
134
|
+
/* @__PURE__ */ u(T, { children: "Authors" }),
|
|
135
|
+
/* @__PURE__ */ u(T, { children: "Published" }),
|
|
136
|
+
/* @__PURE__ */ u(T, { children: "License" }),
|
|
137
|
+
/* @__PURE__ */ u(T, {
|
|
138
|
+
className: "text-right",
|
|
139
|
+
children: "Actions"
|
|
151
140
|
})
|
|
152
|
-
}),
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
className: "text-
|
|
157
|
-
children:
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
|
|
141
|
+
] }) }), /* @__PURE__ */ u(be, { children: V.map((e) => /* @__PURE__ */ d(D, { children: [
|
|
142
|
+
/* @__PURE__ */ u(w, { children: /* @__PURE__ */ u("button", {
|
|
143
|
+
type: "button",
|
|
144
|
+
onClick: () => K(e),
|
|
145
|
+
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",
|
|
146
|
+
children: e.title
|
|
147
|
+
}) }),
|
|
148
|
+
/* @__PURE__ */ u(w, {
|
|
149
|
+
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
150
|
+
children: e.version || "—"
|
|
151
|
+
}),
|
|
152
|
+
/* @__PURE__ */ u(w, { children: /* @__PURE__ */ u(o, { status: e.status }) }),
|
|
153
|
+
/* @__PURE__ */ u(w, {
|
|
154
|
+
className: "max-w-[14rem]",
|
|
155
|
+
children: e.doi ? /* @__PURE__ */ d(i, {
|
|
156
|
+
href: M(e.doi),
|
|
157
|
+
className: "inline-flex items-center gap-1 truncate text-sm text-text-primary underline-offset-2 hover:underline",
|
|
158
|
+
fallbackClassName: "block truncate text-sm text-text-secondary",
|
|
159
|
+
children: [/* @__PURE__ */ u("span", {
|
|
160
|
+
className: "truncate",
|
|
161
|
+
children: e.doi
|
|
162
|
+
}), /* @__PURE__ */ u(f, {
|
|
163
|
+
className: "size-3.5 shrink-0",
|
|
164
|
+
"aria-hidden": "true"
|
|
165
|
+
})]
|
|
166
|
+
}) : /* @__PURE__ */ u("span", {
|
|
167
|
+
className: "text-sm text-text-secondary",
|
|
168
|
+
children: "—"
|
|
169
|
+
})
|
|
170
|
+
}),
|
|
171
|
+
/* @__PURE__ */ u(w, {
|
|
172
|
+
className: "max-w-[14rem]",
|
|
173
|
+
children: e.authors.length === 0 ? /* @__PURE__ */ u("span", {
|
|
174
|
+
className: "text-sm text-text-secondary",
|
|
175
|
+
children: "—"
|
|
176
|
+
}) : /* @__PURE__ */ u("span", {
|
|
177
|
+
className: "line-clamp-1 text-sm text-text-secondary",
|
|
178
|
+
children: e.authors.join(", ")
|
|
179
|
+
})
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ u(w, {
|
|
182
|
+
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
183
|
+
children: j(e.publishedAt)
|
|
184
|
+
}),
|
|
185
|
+
/* @__PURE__ */ u(w, {
|
|
186
|
+
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
187
|
+
children: e.license || "—"
|
|
188
|
+
}),
|
|
189
|
+
/* @__PURE__ */ u(w, {
|
|
190
|
+
className: "text-right",
|
|
191
|
+
children: /* @__PURE__ */ u(r, {
|
|
192
|
+
ariaLabel: `Actions for ${e.title}`,
|
|
193
|
+
onView: () => K(e),
|
|
194
|
+
extraItems: A(e.status) ? [{
|
|
195
|
+
key: "publish",
|
|
196
|
+
label: "Publish",
|
|
197
|
+
icon: h,
|
|
198
|
+
onSelect: () => Q(e)
|
|
199
|
+
}] : []
|
|
200
|
+
})
|
|
161
201
|
})
|
|
162
|
-
})
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
202
|
+
] }, e.id)) })] })
|
|
203
|
+
}),
|
|
204
|
+
/* @__PURE__ */ u("ul", {
|
|
205
|
+
className: "space-y-3 md:hidden",
|
|
206
|
+
children: V.map((e) => /* @__PURE__ */ u("li", {
|
|
207
|
+
className: "rounded-card border border-border-default bg-bg-elevated",
|
|
208
|
+
children: /* @__PURE__ */ d("div", {
|
|
209
|
+
className: "flex items-start justify-between gap-2 p-4",
|
|
210
|
+
children: [/* @__PURE__ */ d("div", {
|
|
211
|
+
className: "min-w-0 flex-1 space-y-2",
|
|
212
|
+
children: [
|
|
213
|
+
/* @__PURE__ */ d("div", {
|
|
214
|
+
className: "flex flex-wrap items-center gap-2",
|
|
215
|
+
children: [/* @__PURE__ */ u("button", {
|
|
216
|
+
type: "button",
|
|
217
|
+
onClick: () => K(e),
|
|
218
|
+
className: "truncate text-left font-medium text-text-primary underline-offset-2 hover:underline",
|
|
219
|
+
children: e.title
|
|
220
|
+
}), /* @__PURE__ */ u(o, { status: e.status })]
|
|
221
|
+
}),
|
|
222
|
+
/* @__PURE__ */ d("div", {
|
|
223
|
+
className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-text-secondary",
|
|
224
|
+
children: [
|
|
225
|
+
/* @__PURE__ */ u("span", { children: e.version || "v—" }),
|
|
226
|
+
e.license ? /* @__PURE__ */ u("span", { children: e.license }) : null,
|
|
227
|
+
/* @__PURE__ */ u("span", { children: j(e.publishedAt) })
|
|
228
|
+
]
|
|
229
|
+
}),
|
|
230
|
+
e.authors.length > 0 ? /* @__PURE__ */ u("p", {
|
|
231
|
+
className: "line-clamp-1 text-xs text-text-secondary",
|
|
232
|
+
children: e.authors.join(", ")
|
|
233
|
+
}) : null,
|
|
234
|
+
e.doi ? /* @__PURE__ */ d(i, {
|
|
235
|
+
href: M(e.doi),
|
|
236
|
+
className: "inline-flex items-center gap-1 text-xs text-text-primary underline-offset-2 hover:underline",
|
|
237
|
+
fallbackClassName: "block truncate text-xs text-text-secondary",
|
|
238
|
+
children: [/* @__PURE__ */ d("span", {
|
|
239
|
+
className: "truncate",
|
|
240
|
+
children: ["DOI: ", e.doi]
|
|
241
|
+
}), /* @__PURE__ */ u(f, {
|
|
242
|
+
className: "size-3 shrink-0",
|
|
243
|
+
"aria-hidden": "true"
|
|
244
|
+
})]
|
|
245
|
+
}) : null
|
|
246
|
+
]
|
|
247
|
+
}), /* @__PURE__ */ u(r, {
|
|
248
|
+
ariaLabel: `Actions for ${e.title}`,
|
|
249
|
+
onView: () => K(e),
|
|
250
|
+
extraItems: A(e.status) ? [{
|
|
251
|
+
key: "publish",
|
|
252
|
+
label: "Publish",
|
|
253
|
+
icon: h,
|
|
254
|
+
onSelect: () => Q(e)
|
|
255
|
+
}] : []
|
|
256
|
+
})]
|
|
182
257
|
})
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
258
|
+
}, e.id))
|
|
259
|
+
}),
|
|
260
|
+
/* @__PURE__ */ u(se, {
|
|
261
|
+
offset: F.offset,
|
|
262
|
+
limit: F.limit,
|
|
263
|
+
loadedCount: V.length,
|
|
264
|
+
hasMore: Ce?.hasMore ?? !1,
|
|
265
|
+
onPrev: F.prevPage,
|
|
266
|
+
onNext: F.nextPage,
|
|
267
|
+
itemLabel: "releases",
|
|
268
|
+
loading: L
|
|
269
|
+
})
|
|
270
|
+
] });
|
|
195
271
|
})()]
|
|
196
272
|
}),
|
|
197
|
-
/* @__PURE__ */
|
|
198
|
-
open:
|
|
199
|
-
onOpenChange: (e) => e ? void 0 :
|
|
200
|
-
children: /* @__PURE__ */
|
|
201
|
-
className: "max-w-lg",
|
|
202
|
-
children:
|
|
203
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ u(_, {
|
|
274
|
+
open: G !== null,
|
|
275
|
+
onOpenChange: (e) => e ? void 0 : K(null),
|
|
276
|
+
children: /* @__PURE__ */ u(v, {
|
|
277
|
+
className: "max-h-[85vh] max-w-lg overflow-y-auto",
|
|
278
|
+
children: G ? /* @__PURE__ */ d(l, { children: [
|
|
279
|
+
/* @__PURE__ */ d(x, { children: [/* @__PURE__ */ d(S, {
|
|
204
280
|
className: "flex items-center gap-2",
|
|
205
|
-
children: [/* @__PURE__ */
|
|
281
|
+
children: [/* @__PURE__ */ u(ue, {
|
|
206
282
|
className: "size-5 text-text-secondary",
|
|
207
283
|
"aria-hidden": "true"
|
|
208
|
-
}),
|
|
209
|
-
}), /* @__PURE__ */
|
|
284
|
+
}), G.title]
|
|
285
|
+
}), /* @__PURE__ */ d(y, { children: [
|
|
210
286
|
"Version ",
|
|
211
|
-
|
|
287
|
+
G.version || "—",
|
|
212
288
|
" · ",
|
|
213
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ u(o, { status: G.status })
|
|
214
290
|
] })] }),
|
|
215
|
-
/* @__PURE__ */
|
|
291
|
+
/* @__PURE__ */ d("div", {
|
|
216
292
|
className: "space-y-4 text-sm",
|
|
217
293
|
children: [
|
|
218
|
-
/* @__PURE__ */
|
|
294
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
219
295
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
220
296
|
children: "Abstract"
|
|
221
|
-
}), /* @__PURE__ */
|
|
297
|
+
}), /* @__PURE__ */ u("p", {
|
|
222
298
|
className: "mt-1 whitespace-pre-wrap text-text-primary",
|
|
223
|
-
children:
|
|
299
|
+
children: G.abstract?.trim() || "No abstract provided."
|
|
224
300
|
})] }),
|
|
225
|
-
/* @__PURE__ */
|
|
301
|
+
/* @__PURE__ */ d("div", {
|
|
226
302
|
className: "grid grid-cols-2 gap-4",
|
|
227
303
|
children: [
|
|
228
|
-
/* @__PURE__ */
|
|
304
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
229
305
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
230
306
|
children: "Authors"
|
|
231
|
-
}), /* @__PURE__ */
|
|
307
|
+
}), /* @__PURE__ */ u("p", {
|
|
232
308
|
className: "mt-1 text-text-primary",
|
|
233
|
-
children:
|
|
309
|
+
children: G.authors.length ? G.authors.join(", ") : "—"
|
|
234
310
|
})] }),
|
|
235
|
-
/* @__PURE__ */
|
|
311
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
236
312
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
237
313
|
children: "License"
|
|
238
|
-
}), /* @__PURE__ */
|
|
314
|
+
}), /* @__PURE__ */ u("p", {
|
|
239
315
|
className: "mt-1 text-text-primary",
|
|
240
|
-
children:
|
|
316
|
+
children: G.license || "—"
|
|
241
317
|
})] }),
|
|
242
|
-
/* @__PURE__ */
|
|
318
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
243
319
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
244
320
|
children: "Published"
|
|
245
|
-
}), /* @__PURE__ */
|
|
321
|
+
}), /* @__PURE__ */ u("p", {
|
|
246
322
|
className: "mt-1 text-text-primary",
|
|
247
|
-
children:
|
|
323
|
+
children: j(G.publishedAt)
|
|
248
324
|
})] }),
|
|
249
|
-
/* @__PURE__ */
|
|
325
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
250
326
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
251
327
|
children: "DOI"
|
|
252
|
-
}), /* @__PURE__ */
|
|
328
|
+
}), /* @__PURE__ */ u("p", {
|
|
253
329
|
className: "mt-1",
|
|
254
|
-
children:
|
|
255
|
-
href:
|
|
330
|
+
children: G.doi ? /* @__PURE__ */ d(i, {
|
|
331
|
+
href: M(G.doi),
|
|
256
332
|
className: "inline-flex items-center gap-1 text-text-primary underline-offset-2 hover:underline",
|
|
257
333
|
fallbackClassName: "text-text-secondary",
|
|
258
|
-
children: [
|
|
334
|
+
children: [G.doi, /* @__PURE__ */ u(f, {
|
|
259
335
|
className: "size-3.5",
|
|
260
336
|
"aria-hidden": "true"
|
|
261
337
|
})]
|
|
262
|
-
}) : /* @__PURE__ */
|
|
338
|
+
}) : /* @__PURE__ */ u("span", {
|
|
263
339
|
className: "text-text-secondary",
|
|
264
340
|
children: "Not assigned"
|
|
265
341
|
})
|
|
266
342
|
})] })
|
|
267
343
|
]
|
|
268
344
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
345
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ d("p", {
|
|
270
346
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
271
347
|
children: [
|
|
272
348
|
"Datasets (",
|
|
273
|
-
|
|
349
|
+
G.datasetIds.length,
|
|
274
350
|
")"
|
|
275
351
|
]
|
|
276
|
-
}), /* @__PURE__ */
|
|
277
|
-
className: "mt-1 flex flex-wrap gap-1",
|
|
278
|
-
children:
|
|
352
|
+
}), /* @__PURE__ */ u("div", {
|
|
353
|
+
className: "mt-1 flex flex-wrap gap-1.5",
|
|
354
|
+
children: G.datasetIds.length === 0 ? /* @__PURE__ */ u("span", {
|
|
279
355
|
className: "text-text-secondary",
|
|
280
356
|
children: "None linked."
|
|
281
|
-
}) :
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
357
|
+
}) : G.datasetIds.map((e) => {
|
|
358
|
+
let t = we.get(e);
|
|
359
|
+
return /* @__PURE__ */ d(g, {
|
|
360
|
+
type: "button",
|
|
361
|
+
variant: "outline",
|
|
362
|
+
size: "sm",
|
|
363
|
+
className: "h-auto gap-1 px-2 py-1",
|
|
364
|
+
onClick: () => q(`datasets/${e}`),
|
|
365
|
+
children: [/* @__PURE__ */ u(de, {
|
|
366
|
+
className: "size-3.5",
|
|
367
|
+
"aria-hidden": "true"
|
|
368
|
+
}), /* @__PURE__ */ u("span", {
|
|
369
|
+
className: t ? "" : "font-mono text-xs",
|
|
370
|
+
children: t ?? e
|
|
371
|
+
})]
|
|
372
|
+
}, e);
|
|
373
|
+
})
|
|
286
374
|
})] }),
|
|
287
|
-
/* @__PURE__ */
|
|
375
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
288
376
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
289
377
|
children: "Notebook"
|
|
290
|
-
}), /* @__PURE__ */
|
|
378
|
+
}), /* @__PURE__ */ u("div", {
|
|
291
379
|
className: "mt-1",
|
|
292
|
-
children:
|
|
380
|
+
children: G.notebookId ? /* @__PURE__ */ d(g, {
|
|
381
|
+
type: "button",
|
|
293
382
|
variant: "outline",
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
383
|
+
size: "sm",
|
|
384
|
+
className: "h-auto gap-1 px-2 py-1",
|
|
385
|
+
onClick: () => q(`notebooks/${G.notebookId}`),
|
|
386
|
+
children: [/* @__PURE__ */ u(p, {
|
|
387
|
+
className: "size-3.5",
|
|
388
|
+
"aria-hidden": "true"
|
|
389
|
+
}), /* @__PURE__ */ u("span", {
|
|
390
|
+
className: W.get(G.notebookId) ? "" : "font-mono text-xs",
|
|
391
|
+
children: W.get(G.notebookId) ?? G.notebookId
|
|
392
|
+
})]
|
|
393
|
+
}) : /* @__PURE__ */ u("span", {
|
|
297
394
|
className: "text-text-secondary",
|
|
298
395
|
children: "None linked."
|
|
299
396
|
})
|
|
397
|
+
})] }),
|
|
398
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
399
|
+
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
400
|
+
children: "Discussion"
|
|
401
|
+
}), /* @__PURE__ */ u("div", {
|
|
402
|
+
className: "mt-2",
|
|
403
|
+
children: /* @__PURE__ */ u(a, {
|
|
404
|
+
entityType: "cosmicintersection-release",
|
|
405
|
+
entityId: G.id,
|
|
406
|
+
title: G.title,
|
|
407
|
+
widgetKey: "release-discussion"
|
|
408
|
+
})
|
|
300
409
|
})] })
|
|
301
410
|
]
|
|
302
411
|
}),
|
|
303
|
-
/* @__PURE__ */
|
|
412
|
+
/* @__PURE__ */ d(b, { children: [A(G.status) ? /* @__PURE__ */ d(g, {
|
|
304
413
|
type: "button",
|
|
305
414
|
onClick: () => {
|
|
306
|
-
let e =
|
|
307
|
-
|
|
415
|
+
let e = G;
|
|
416
|
+
K(null), Q(e);
|
|
308
417
|
},
|
|
309
|
-
children: [/* @__PURE__ */
|
|
310
|
-
}) : null, /* @__PURE__ */
|
|
418
|
+
children: [/* @__PURE__ */ u(h, { className: "size-4" }), "Publish"]
|
|
419
|
+
}) : null, /* @__PURE__ */ u(fe, {
|
|
311
420
|
asChild: !0,
|
|
312
|
-
children: /* @__PURE__ */
|
|
421
|
+
children: /* @__PURE__ */ u(g, {
|
|
313
422
|
type: "button",
|
|
314
423
|
variant: "outline",
|
|
315
424
|
children: "Close"
|
|
@@ -318,43 +427,76 @@ function I() {
|
|
|
318
427
|
] }) : null
|
|
319
428
|
})
|
|
320
429
|
}),
|
|
321
|
-
/* @__PURE__ */
|
|
430
|
+
/* @__PURE__ */ u(_, {
|
|
322
431
|
open: J !== null,
|
|
323
|
-
onOpenChange: (e) => e ||
|
|
324
|
-
children: /* @__PURE__ */
|
|
432
|
+
onOpenChange: (e) => e || B ? void 0 : Y(null),
|
|
433
|
+
children: /* @__PURE__ */ d(v, {
|
|
325
434
|
className: "max-w-md",
|
|
326
435
|
children: [
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
/* @__PURE__ */
|
|
436
|
+
/* @__PURE__ */ d(x, { children: [/* @__PURE__ */ u(S, { children: "Publish release" }), /* @__PURE__ */ u(y, { children: J ? `Publish “${J.title}” to make it publicly citable. You can attach a DOI now or later.` : "" })] }),
|
|
437
|
+
J ? /* @__PURE__ */ d("dl", {
|
|
438
|
+
className: "grid grid-cols-3 gap-x-4 gap-y-3 rounded-card border border-border-default bg-bg-sunken p-3",
|
|
439
|
+
children: [
|
|
440
|
+
/* @__PURE__ */ d("div", {
|
|
441
|
+
className: "col-span-2 min-w-0",
|
|
442
|
+
children: [/* @__PURE__ */ u("dt", {
|
|
443
|
+
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
444
|
+
children: "Authors"
|
|
445
|
+
}), /* @__PURE__ */ u("dd", {
|
|
446
|
+
className: "mt-0.5 truncate text-sm text-text-primary",
|
|
447
|
+
title: J.authors.join(", "),
|
|
448
|
+
children: J.authors.length ? J.authors.join(", ") : "—"
|
|
449
|
+
})]
|
|
450
|
+
}),
|
|
451
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("dt", {
|
|
452
|
+
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
453
|
+
children: "Datasets"
|
|
454
|
+
}), /* @__PURE__ */ u("dd", {
|
|
455
|
+
className: "mt-0.5 text-sm tabular-nums text-text-primary",
|
|
456
|
+
children: J.datasetIds.length
|
|
457
|
+
})] }),
|
|
458
|
+
/* @__PURE__ */ d("div", {
|
|
459
|
+
className: "col-span-3 min-w-0",
|
|
460
|
+
children: [/* @__PURE__ */ u("dt", {
|
|
461
|
+
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
462
|
+
children: "License"
|
|
463
|
+
}), /* @__PURE__ */ u("dd", {
|
|
464
|
+
className: "mt-0.5 truncate text-sm text-text-primary",
|
|
465
|
+
children: J.license || "—"
|
|
466
|
+
})]
|
|
467
|
+
})
|
|
468
|
+
]
|
|
469
|
+
}) : null,
|
|
470
|
+
/* @__PURE__ */ d("div", {
|
|
329
471
|
className: "space-y-2",
|
|
330
472
|
children: [
|
|
331
|
-
/* @__PURE__ */
|
|
473
|
+
/* @__PURE__ */ u(me, {
|
|
332
474
|
htmlFor: "release-doi",
|
|
333
475
|
children: "DOI (optional)"
|
|
334
476
|
}),
|
|
335
|
-
/* @__PURE__ */
|
|
477
|
+
/* @__PURE__ */ u(pe, {
|
|
336
478
|
id: "release-doi",
|
|
337
479
|
value: X,
|
|
338
480
|
onChange: (e) => Z(e.target.value),
|
|
339
481
|
placeholder: "10.1234/cosmic.2026.0001"
|
|
340
482
|
}),
|
|
341
|
-
/* @__PURE__ */
|
|
483
|
+
/* @__PURE__ */ u("p", {
|
|
342
484
|
className: "text-xs text-text-secondary",
|
|
343
485
|
children: "A Digital Object Identifier makes the release permanently referenceable."
|
|
344
486
|
})
|
|
345
487
|
]
|
|
346
488
|
}),
|
|
347
|
-
/* @__PURE__ */
|
|
489
|
+
/* @__PURE__ */ d(b, { children: [/* @__PURE__ */ u(g, {
|
|
348
490
|
type: "button",
|
|
349
491
|
variant: "outline",
|
|
350
492
|
onClick: () => Y(null),
|
|
351
|
-
disabled:
|
|
493
|
+
disabled: B,
|
|
352
494
|
children: "Cancel"
|
|
353
|
-
}), /* @__PURE__ */
|
|
495
|
+
}), /* @__PURE__ */ d(g, {
|
|
354
496
|
type: "button",
|
|
355
|
-
onClick: () => void
|
|
356
|
-
disabled:
|
|
357
|
-
children: [/* @__PURE__ */
|
|
497
|
+
onClick: () => void Te(),
|
|
498
|
+
disabled: B,
|
|
499
|
+
children: [/* @__PURE__ */ u(h, { className: "size-4" }), B ? "Publishing…" : "Publish release"]
|
|
358
500
|
})] })
|
|
359
501
|
]
|
|
360
502
|
})
|
|
@@ -363,6 +505,6 @@ function I() {
|
|
|
363
505
|
});
|
|
364
506
|
}
|
|
365
507
|
//#endregion
|
|
366
|
-
export {
|
|
508
|
+
export { N as default };
|
|
367
509
|
|
|
368
510
|
//# sourceMappingURL=ReleasesPage.js.map
|