@burdenoff/microfe-cosmicintersection 2026.1030.1 → 2026.1030.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.
@@ -9,14 +9,15 @@ import oe from "../../components/LoadingState.js";
9
9
  import i from "../../components/SafeLink.js";
10
10
  import se from "../../components/DiscussionPanel.js";
11
11
  import ce from "../../components/PageLayout.js";
12
- import le, { usePagination as a } from "../../components/Pagination.js";
12
+ import a, { usePagination as le } from "../../components/Pagination.js";
13
13
  import o, { formatEnumLabel as ue } from "../../components/StatusBadge.js";
14
14
  import "../../components/index.js";
15
- import { useSelectedRecord as s } from "../../lib/useSelectedRecord.js";
16
- import { useMemo as c, useState as l } from "react";
17
- import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
18
- import { BookOpen as de, Database as fe, ExternalLink as p, NotebookPen as pe, Plus as me, Rocket as m } from "lucide-react";
19
- import { Button as h, Dialog as g, DialogClose as he, DialogContent as _, DialogDescription as v, DialogFooter as y, DialogHeader as b, DialogTitle as x, Input as ge, Label as _e, Select as ve, SelectContent as ye, SelectItem as S, SelectTrigger as be, SelectValue as xe, Table as Se, TableBody as Ce, TableCell as C, TableHead as w, TableHeader as we, TableRow as T } from "@burdenoff/fe-libs/ui";
15
+ import { useSelectedRecord as de } from "../../lib/useSelectedRecord.js";
16
+ import { ASSISTANT_AWARE_DIALOG_CONTENT_PROPS as fe, ASSISTANT_AWARE_DIALOG_ROOT_PROPS as pe } from "../../lib/assistantAwareDialog.js";
17
+ import { useMemo as s, useState as c } from "react";
18
+ import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
19
+ import { BookOpen as me, Database as he, ExternalLink as f, NotebookPen as ge, Plus as _e, Rocket as p } from "lucide-react";
20
+ import { Button as m, Dialog as h, DialogClose as ve, DialogContent as g, DialogDescription as _, DialogFooter as v, DialogHeader as y, DialogTitle as b, Input as x, Label as ye, Select as be, SelectContent as xe, SelectItem as S, SelectTrigger as Se, SelectValue as Ce, Table as we, TableBody as Te, TableCell as C, TableHead as w, TableHeader as Ee, TableRow as T } from "@burdenoff/fe-libs/ui";
20
21
  //#region src/cosmicintersection/pages/releases/ReleasesPage.tsx
21
22
  var E = "ALL", D = [
22
23
  "DRAFT",
@@ -41,7 +42,7 @@ function A(e) {
41
42
  return /^https?:\/\//i.test(t) ? t : `https://doi.org/${t.replace(/^doi:/i, "")}`;
42
43
  }
43
44
  function j() {
44
- let { navigate: j } = e(), M = re(), [N, Te] = l(E), P = a({
45
+ let { navigate: j } = e(), M = re(), [N, De] = c(E), P = le({
45
46
  pageSize: 20,
46
47
  resetKey: N
47
48
  }), { data: F, loading: I, error: L, refetch: R } = ne({
@@ -50,220 +51,220 @@ function j() {
50
51
  limit: P.limit,
51
52
  offset: P.offset
52
53
  }
53
- }), [Ee, { loading: z }] = n(), B = c(() => F?.cosListReleases.items ?? [], [F]), De = F?.cosListReleases.pageInfo, V = ee({ pagination: {
54
+ }), [Oe, { loading: z }] = n(), B = s(() => F?.cosListReleases.items ?? [], [F]), ke = F?.cosListReleases.pageInfo, V = ee({ pagination: {
54
55
  limit: 100,
55
56
  offset: 0
56
57
  } }), H = te({ pagination: {
57
58
  limit: 100,
58
59
  offset: 0
59
- } }), Oe = c(() => {
60
+ } }), Ae = s(() => {
60
61
  let e = /* @__PURE__ */ new Map();
61
62
  for (let t of V.data?.cosListDatasets.items ?? []) e.set(t.id, t.name);
62
63
  return e;
63
- }, [V.data]), U = c(() => {
64
+ }, [V.data]), U = s(() => {
64
65
  let e = /* @__PURE__ */ new Map();
65
66
  for (let t of H.data?.cosListNotebooks.items ?? []) e.set(t.id, t.title);
66
67
  return e;
67
- }, [H.data]), { selectedId: W, select: ke } = s(), G = c(() => W ? B.find((e) => e.id === W) ?? null : null, [B, W]), K = (e) => ke(e ? e.id : null), q = (e) => {
68
+ }, [H.data]), { selectedId: W, select: je } = de(), G = s(() => W ? B.find((e) => e.id === W) ?? null : null, [B, W]), K = (e) => je(e ? e.id : null), q = (e) => {
68
69
  K(null), j(e);
69
- }, [J, Y] = l(null), [X, Z] = l(""), Q = (e) => {
70
+ }, [J, Y] = c(null), [X, Z] = c(""), Q = (e) => {
70
71
  Z(e.doi ?? ""), Y(e);
71
- }, Ae = async () => {
72
+ }, Me = async () => {
72
73
  if (!J) return;
73
74
  let e = X.trim();
74
- (await Ee({ variables: {
75
+ (await Oe({ variables: {
75
76
  id: J.id,
76
77
  doi: e || void 0
77
78
  } })).data?.cosPublishRelease?.id && (t.success(M("cosmicintersection.pages.releases.publishSuccess", "Release published"), M("cosmicintersection.pages.releases.publishSuccessDescription", "“{{name}}” is now public.", { name: J.title })), Y(null), Z(""), await R());
78
- }, $ = /* @__PURE__ */ f(h, {
79
+ }, $ = /* @__PURE__ */ d(m, {
79
80
  type: "button",
80
81
  onClick: () => j("releases/create"),
81
- children: [/* @__PURE__ */ d(me, { className: "size-4" }), M("cosmicintersection.pages.releases.create", "New release")]
82
+ children: [/* @__PURE__ */ u(_e, { className: "size-4" }), M("cosmicintersection.pages.releases.create", "New release")]
82
83
  });
83
- return /* @__PURE__ */ f(ce, {
84
+ return /* @__PURE__ */ d(ce, {
84
85
  title: M("cosmicintersection.pages.releases.title", "Releases"),
85
86
  description: M("cosmicintersection.pages.releases.description", "Citable, versioned publications that bundle datasets and notebooks for the community."),
86
87
  actions: $,
87
88
  children: [
88
- /* @__PURE__ */ f("div", {
89
+ /* @__PURE__ */ d("div", {
89
90
  className: "space-y-4",
90
- children: [/* @__PURE__ */ d("div", {
91
+ children: [/* @__PURE__ */ u("div", {
91
92
  className: "flex flex-wrap items-center gap-3",
92
- children: /* @__PURE__ */ d("div", {
93
+ children: /* @__PURE__ */ u("div", {
93
94
  className: "w-full max-w-[14rem]",
94
- children: /* @__PURE__ */ f(ve, {
95
+ children: /* @__PURE__ */ d(be, {
95
96
  value: N,
96
- onValueChange: Te,
97
- children: [/* @__PURE__ */ d(be, {
97
+ onValueChange: De,
98
+ children: [/* @__PURE__ */ u(Se, {
98
99
  "aria-label": "Filter by status",
99
- children: /* @__PURE__ */ d(xe, { placeholder: "All statuses" })
100
- }), /* @__PURE__ */ f(ye, { children: [/* @__PURE__ */ d(S, {
100
+ children: /* @__PURE__ */ u(Ce, { placeholder: "All statuses" })
101
+ }), /* @__PURE__ */ d(xe, { children: [/* @__PURE__ */ u(S, {
101
102
  value: E,
102
103
  children: "All statuses"
103
- }), D.map((e) => /* @__PURE__ */ d(S, {
104
+ }), D.map((e) => /* @__PURE__ */ u(S, {
104
105
  value: e,
105
106
  children: ue(e)
106
107
  }, e))] })]
107
108
  })
108
109
  })
109
110
  }), (() => {
110
- if (I) return /* @__PURE__ */ d(oe, {
111
+ if (I) return /* @__PURE__ */ u(oe, {
111
112
  variant: "rows",
112
113
  rows: 6,
113
114
  label: M("cosmicintersection.pages.releases.loading", "Loading releases…")
114
115
  });
115
- if (L) return /* @__PURE__ */ d(ae, {
116
+ if (L) return /* @__PURE__ */ u(ae, {
116
117
  message: L.message,
117
118
  onRetry: () => void R()
118
119
  });
119
120
  if (B.length === 0) {
120
121
  let e = N !== E;
121
- return /* @__PURE__ */ d(ie, {
122
- icon: m,
122
+ return /* @__PURE__ */ u(ie, {
123
+ icon: p,
123
124
  title: e ? M("cosmicintersection.pages.releases.emptyFilterTitle", "No releases match this filter") : M("cosmicintersection.pages.releases.emptyTitle", "No releases yet"),
124
125
  description: e ? M("cosmicintersection.pages.releases.emptyFilterDescription", "Try clearing the status filter to see more releases.") : M("cosmicintersection.pages.releases.emptyDescription", "Package datasets and notebooks into a citable, versioned release for publication."),
125
126
  action: e ? void 0 : $
126
127
  });
127
128
  }
128
- return /* @__PURE__ */ f(u, { children: [
129
- /* @__PURE__ */ d("div", {
129
+ return /* @__PURE__ */ d(l, { children: [
130
+ /* @__PURE__ */ u("div", {
130
131
  className: "hidden rounded-card border border-border-default bg-bg-elevated md:block",
131
- children: /* @__PURE__ */ f(Se, { children: [/* @__PURE__ */ d(we, { children: /* @__PURE__ */ f(T, { children: [
132
- /* @__PURE__ */ d(w, { children: "Title" }),
133
- /* @__PURE__ */ d(w, { children: "Version" }),
134
- /* @__PURE__ */ d(w, { children: "Status" }),
135
- /* @__PURE__ */ d(w, { children: "DOI" }),
136
- /* @__PURE__ */ d(w, { children: "Authors" }),
137
- /* @__PURE__ */ d(w, { children: "Published" }),
138
- /* @__PURE__ */ d(w, { children: "License" }),
139
- /* @__PURE__ */ d(w, {
132
+ children: /* @__PURE__ */ d(we, { children: [/* @__PURE__ */ u(Ee, { children: /* @__PURE__ */ d(T, { children: [
133
+ /* @__PURE__ */ u(w, { children: "Title" }),
134
+ /* @__PURE__ */ u(w, { children: "Version" }),
135
+ /* @__PURE__ */ u(w, { children: "Status" }),
136
+ /* @__PURE__ */ u(w, { children: "DOI" }),
137
+ /* @__PURE__ */ u(w, { children: "Authors" }),
138
+ /* @__PURE__ */ u(w, { children: "Published" }),
139
+ /* @__PURE__ */ u(w, { children: "License" }),
140
+ /* @__PURE__ */ u(w, {
140
141
  className: "text-right",
141
142
  children: "Actions"
142
143
  })
143
- ] }) }), /* @__PURE__ */ d(Ce, { children: B.map((e) => /* @__PURE__ */ f(T, { children: [
144
- /* @__PURE__ */ d(C, { children: /* @__PURE__ */ d("button", {
144
+ ] }) }), /* @__PURE__ */ u(Te, { children: B.map((e) => /* @__PURE__ */ d(T, { children: [
145
+ /* @__PURE__ */ u(C, { children: /* @__PURE__ */ u("button", {
145
146
  type: "button",
146
147
  onClick: () => K(e),
147
148
  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",
148
149
  children: e.title
149
150
  }) }),
150
- /* @__PURE__ */ d(C, {
151
+ /* @__PURE__ */ u(C, {
151
152
  className: "whitespace-nowrap text-sm text-text-secondary",
152
153
  children: e.version || "—"
153
154
  }),
154
- /* @__PURE__ */ d(C, { children: /* @__PURE__ */ d(o, { status: e.status }) }),
155
- /* @__PURE__ */ d(C, {
155
+ /* @__PURE__ */ u(C, { children: /* @__PURE__ */ u(o, { status: e.status }) }),
156
+ /* @__PURE__ */ u(C, {
156
157
  className: "max-w-[14rem]",
157
- children: e.doi ? /* @__PURE__ */ f(i, {
158
+ children: e.doi ? /* @__PURE__ */ d(i, {
158
159
  href: A(e.doi),
159
160
  className: "inline-flex items-center gap-1 truncate text-sm text-text-primary underline-offset-2 hover:underline",
160
161
  fallbackClassName: "block truncate text-sm text-text-secondary",
161
- children: [/* @__PURE__ */ d("span", {
162
+ children: [/* @__PURE__ */ u("span", {
162
163
  className: "truncate",
163
164
  children: e.doi
164
- }), /* @__PURE__ */ d(p, {
165
+ }), /* @__PURE__ */ u(f, {
165
166
  className: "size-3.5 shrink-0",
166
167
  "aria-hidden": "true"
167
168
  })]
168
- }) : /* @__PURE__ */ d("span", {
169
+ }) : /* @__PURE__ */ u("span", {
169
170
  className: "text-sm text-text-secondary",
170
171
  children: "—"
171
172
  })
172
173
  }),
173
- /* @__PURE__ */ d(C, {
174
+ /* @__PURE__ */ u(C, {
174
175
  className: "max-w-[14rem]",
175
- children: e.authors.length === 0 ? /* @__PURE__ */ d("span", {
176
+ children: e.authors.length === 0 ? /* @__PURE__ */ u("span", {
176
177
  className: "text-sm text-text-secondary",
177
178
  children: "—"
178
- }) : /* @__PURE__ */ d("span", {
179
+ }) : /* @__PURE__ */ u("span", {
179
180
  className: "line-clamp-1 text-sm text-text-secondary",
180
181
  children: e.authors.join(", ")
181
182
  })
182
183
  }),
183
- /* @__PURE__ */ d(C, {
184
+ /* @__PURE__ */ u(C, {
184
185
  className: "whitespace-nowrap text-sm text-text-secondary",
185
186
  children: k(e.publishedAt)
186
187
  }),
187
- /* @__PURE__ */ d(C, {
188
+ /* @__PURE__ */ u(C, {
188
189
  className: "whitespace-nowrap text-sm text-text-secondary",
189
190
  children: e.license || "—"
190
191
  }),
191
- /* @__PURE__ */ d(C, {
192
+ /* @__PURE__ */ u(C, {
192
193
  className: "text-right",
193
- children: /* @__PURE__ */ d(r, {
194
+ children: /* @__PURE__ */ u(r, {
194
195
  ariaLabel: `Actions for ${e.title}`,
195
196
  onView: () => K(e),
196
197
  extraItems: O(e.status) ? [{
197
198
  key: "publish",
198
199
  label: M("cosmicintersection.pages.releases.publish", "Publish"),
199
- icon: m,
200
+ icon: p,
200
201
  onSelect: () => Q(e)
201
202
  }] : []
202
203
  })
203
204
  })
204
205
  ] }, e.id)) })] })
205
206
  }),
206
- /* @__PURE__ */ d("ul", {
207
+ /* @__PURE__ */ u("ul", {
207
208
  className: "space-y-3 md:hidden",
208
- children: B.map((e) => /* @__PURE__ */ d("li", {
209
+ children: B.map((e) => /* @__PURE__ */ u("li", {
209
210
  className: "rounded-card border border-border-default bg-bg-elevated",
210
- children: /* @__PURE__ */ f("div", {
211
+ children: /* @__PURE__ */ d("div", {
211
212
  className: "flex items-start justify-between gap-2 p-4",
212
- children: [/* @__PURE__ */ f("div", {
213
+ children: [/* @__PURE__ */ d("div", {
213
214
  className: "min-w-0 flex-1 space-y-2",
214
215
  children: [
215
- /* @__PURE__ */ f("div", {
216
+ /* @__PURE__ */ d("div", {
216
217
  className: "flex flex-wrap items-center gap-2",
217
- children: [/* @__PURE__ */ d("button", {
218
+ children: [/* @__PURE__ */ u("button", {
218
219
  type: "button",
219
220
  onClick: () => K(e),
220
221
  className: "truncate text-left font-medium text-text-primary underline-offset-2 hover:underline",
221
222
  children: e.title
222
- }), /* @__PURE__ */ d(o, { status: e.status })]
223
+ }), /* @__PURE__ */ u(o, { status: e.status })]
223
224
  }),
224
- /* @__PURE__ */ f("div", {
225
+ /* @__PURE__ */ d("div", {
225
226
  className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-text-secondary",
226
227
  children: [
227
- /* @__PURE__ */ d("span", { children: e.version || "v—" }),
228
- e.license ? /* @__PURE__ */ d("span", { children: e.license }) : null,
229
- /* @__PURE__ */ d("span", { children: k(e.publishedAt) })
228
+ /* @__PURE__ */ u("span", { children: e.version || "v—" }),
229
+ e.license ? /* @__PURE__ */ u("span", { children: e.license }) : null,
230
+ /* @__PURE__ */ u("span", { children: k(e.publishedAt) })
230
231
  ]
231
232
  }),
232
- e.authors.length > 0 ? /* @__PURE__ */ d("p", {
233
+ e.authors.length > 0 ? /* @__PURE__ */ u("p", {
233
234
  className: "line-clamp-1 text-xs text-text-secondary",
234
235
  children: e.authors.join(", ")
235
236
  }) : null,
236
- e.doi ? /* @__PURE__ */ f(i, {
237
+ e.doi ? /* @__PURE__ */ d(i, {
237
238
  href: A(e.doi),
238
239
  className: "inline-flex items-center gap-1 text-xs text-text-primary underline-offset-2 hover:underline",
239
240
  fallbackClassName: "block truncate text-xs text-text-secondary",
240
- children: [/* @__PURE__ */ f("span", {
241
+ children: [/* @__PURE__ */ d("span", {
241
242
  className: "truncate",
242
243
  children: ["DOI: ", e.doi]
243
- }), /* @__PURE__ */ d(p, {
244
+ }), /* @__PURE__ */ u(f, {
244
245
  className: "size-3 shrink-0",
245
246
  "aria-hidden": "true"
246
247
  })]
247
248
  }) : null
248
249
  ]
249
- }), /* @__PURE__ */ d(r, {
250
+ }), /* @__PURE__ */ u(r, {
250
251
  ariaLabel: `Actions for ${e.title}`,
251
252
  onView: () => K(e),
252
253
  extraItems: O(e.status) ? [{
253
254
  key: "publish",
254
255
  label: M("cosmicintersection.pages.releases.publish", "Publish"),
255
- icon: m,
256
+ icon: p,
256
257
  onSelect: () => Q(e)
257
258
  }] : []
258
259
  })]
259
260
  })
260
261
  }, e.id))
261
262
  }),
262
- /* @__PURE__ */ d(le, {
263
+ /* @__PURE__ */ u(a, {
263
264
  offset: P.offset,
264
265
  limit: P.limit,
265
266
  loadedCount: B.length,
266
- hasMore: De?.hasMore ?? !1,
267
+ hasMore: ke?.hasMore ?? !1,
267
268
  onPrev: P.prevPage,
268
269
  onNext: P.nextPage,
269
270
  itemLabel: M("cosmicintersection.pages.releases.itemLabel", "releases"),
@@ -272,137 +273,139 @@ function j() {
272
273
  ] });
273
274
  })()]
274
275
  }),
275
- /* @__PURE__ */ d(g, {
276
+ /* @__PURE__ */ u(h, {
277
+ ...pe,
276
278
  open: G !== null,
277
279
  onOpenChange: (e) => e ? void 0 : K(null),
278
- children: /* @__PURE__ */ d(_, {
280
+ children: /* @__PURE__ */ u(g, {
281
+ ...fe,
279
282
  className: "max-h-[85vh] max-w-lg overflow-y-auto",
280
- children: G ? /* @__PURE__ */ f(u, { children: [
281
- /* @__PURE__ */ f(b, { children: [/* @__PURE__ */ f(x, {
283
+ children: G ? /* @__PURE__ */ d(l, { children: [
284
+ /* @__PURE__ */ d(y, { children: [/* @__PURE__ */ d(b, {
282
285
  className: "flex items-center gap-2",
283
- children: [/* @__PURE__ */ d(de, {
286
+ children: [/* @__PURE__ */ u(me, {
284
287
  className: "size-5 text-text-secondary",
285
288
  "aria-hidden": "true"
286
289
  }), G.title]
287
- }), /* @__PURE__ */ f(v, { children: [
290
+ }), /* @__PURE__ */ d(_, { children: [
288
291
  "Version ",
289
292
  G.version || "—",
290
293
  " · ",
291
- /* @__PURE__ */ d(o, { status: G.status })
294
+ /* @__PURE__ */ u(o, { status: G.status })
292
295
  ] })] }),
293
- /* @__PURE__ */ f("div", {
296
+ /* @__PURE__ */ d("div", {
294
297
  className: "space-y-4 text-sm",
295
298
  children: [
296
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
299
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
297
300
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
298
301
  children: "Abstract"
299
- }), /* @__PURE__ */ d("p", {
302
+ }), /* @__PURE__ */ u("p", {
300
303
  className: "mt-1 whitespace-pre-wrap text-text-primary",
301
304
  children: G.abstract?.trim() || "No abstract provided."
302
305
  })] }),
303
- /* @__PURE__ */ f("div", {
306
+ /* @__PURE__ */ d("div", {
304
307
  className: "grid grid-cols-2 gap-4",
305
308
  children: [
306
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
309
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
307
310
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
308
311
  children: "Authors"
309
- }), /* @__PURE__ */ d("p", {
312
+ }), /* @__PURE__ */ u("p", {
310
313
  className: "mt-1 text-text-primary",
311
314
  children: G.authors.length ? G.authors.join(", ") : "—"
312
315
  })] }),
313
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
316
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
314
317
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
315
318
  children: "License"
316
- }), /* @__PURE__ */ d("p", {
319
+ }), /* @__PURE__ */ u("p", {
317
320
  className: "mt-1 text-text-primary",
318
321
  children: G.license || "—"
319
322
  })] }),
320
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
323
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
321
324
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
322
325
  children: "Published"
323
- }), /* @__PURE__ */ d("p", {
326
+ }), /* @__PURE__ */ u("p", {
324
327
  className: "mt-1 text-text-primary",
325
328
  children: k(G.publishedAt)
326
329
  })] }),
327
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
330
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
328
331
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
329
332
  children: "DOI"
330
- }), /* @__PURE__ */ d("p", {
333
+ }), /* @__PURE__ */ u("p", {
331
334
  className: "mt-1",
332
- children: G.doi ? /* @__PURE__ */ f(i, {
335
+ children: G.doi ? /* @__PURE__ */ d(i, {
333
336
  href: A(G.doi),
334
337
  className: "inline-flex items-center gap-1 text-text-primary underline-offset-2 hover:underline",
335
338
  fallbackClassName: "text-text-secondary",
336
- children: [G.doi, /* @__PURE__ */ d(p, {
339
+ children: [G.doi, /* @__PURE__ */ u(f, {
337
340
  className: "size-3.5",
338
341
  "aria-hidden": "true"
339
342
  })]
340
- }) : /* @__PURE__ */ d("span", {
343
+ }) : /* @__PURE__ */ u("span", {
341
344
  className: "text-text-secondary",
342
345
  children: "Not assigned"
343
346
  })
344
347
  })] })
345
348
  ]
346
349
  }),
347
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ f("p", {
350
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ d("p", {
348
351
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
349
352
  children: [
350
353
  "Datasets (",
351
354
  G.datasetIds.length,
352
355
  ")"
353
356
  ]
354
- }), /* @__PURE__ */ d("div", {
357
+ }), /* @__PURE__ */ u("div", {
355
358
  className: "mt-1 flex flex-wrap gap-1.5",
356
- children: G.datasetIds.length === 0 ? /* @__PURE__ */ d("span", {
359
+ children: G.datasetIds.length === 0 ? /* @__PURE__ */ u("span", {
357
360
  className: "text-text-secondary",
358
361
  children: "None linked."
359
362
  }) : G.datasetIds.map((e) => {
360
- let t = Oe.get(e);
361
- return /* @__PURE__ */ f(h, {
363
+ let t = Ae.get(e);
364
+ return /* @__PURE__ */ d(m, {
362
365
  type: "button",
363
366
  variant: "outline",
364
367
  size: "sm",
365
368
  className: "h-auto gap-1 px-2 py-1",
366
369
  onClick: () => q(`datasets/${e}`),
367
- children: [/* @__PURE__ */ d(fe, {
370
+ children: [/* @__PURE__ */ u(he, {
368
371
  className: "size-3.5",
369
372
  "aria-hidden": "true"
370
- }), /* @__PURE__ */ d("span", {
373
+ }), /* @__PURE__ */ u("span", {
371
374
  className: t ? "" : "font-mono text-xs",
372
375
  children: t ?? e
373
376
  })]
374
377
  }, e);
375
378
  })
376
379
  })] }),
377
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
380
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
378
381
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
379
382
  children: "Notebook"
380
- }), /* @__PURE__ */ d("div", {
383
+ }), /* @__PURE__ */ u("div", {
381
384
  className: "mt-1",
382
- children: G.notebookId ? /* @__PURE__ */ f(h, {
385
+ children: G.notebookId ? /* @__PURE__ */ d(m, {
383
386
  type: "button",
384
387
  variant: "outline",
385
388
  size: "sm",
386
389
  className: "h-auto gap-1 px-2 py-1",
387
390
  onClick: () => q(`notebooks/${G.notebookId}`),
388
- children: [/* @__PURE__ */ d(pe, {
391
+ children: [/* @__PURE__ */ u(ge, {
389
392
  className: "size-3.5",
390
393
  "aria-hidden": "true"
391
- }), /* @__PURE__ */ d("span", {
394
+ }), /* @__PURE__ */ u("span", {
392
395
  className: U.get(G.notebookId) ? "" : "font-mono text-xs",
393
396
  children: U.get(G.notebookId) ?? G.notebookId
394
397
  })]
395
- }) : /* @__PURE__ */ d("span", {
398
+ }) : /* @__PURE__ */ u("span", {
396
399
  className: "text-text-secondary",
397
400
  children: "None linked."
398
401
  })
399
402
  })] }),
400
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
403
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
401
404
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
402
405
  children: "Discussion"
403
- }), /* @__PURE__ */ d("div", {
406
+ }), /* @__PURE__ */ u("div", {
404
407
  className: "mt-2",
405
- children: /* @__PURE__ */ d(se, {
408
+ children: /* @__PURE__ */ u(se, {
406
409
  entityType: "cosmicintersection-release",
407
410
  entityId: G.id,
408
411
  title: G.title,
@@ -411,16 +414,16 @@ function j() {
411
414
  })] })
412
415
  ]
413
416
  }),
414
- /* @__PURE__ */ f(y, { children: [O(G.status) ? /* @__PURE__ */ f(h, {
417
+ /* @__PURE__ */ d(v, { children: [O(G.status) ? /* @__PURE__ */ d(m, {
415
418
  type: "button",
416
419
  onClick: () => {
417
420
  let e = G;
418
421
  K(null), Q(e);
419
422
  },
420
- children: [/* @__PURE__ */ d(m, { className: "size-4" }), "Publish"]
421
- }) : null, /* @__PURE__ */ d(he, {
423
+ children: [/* @__PURE__ */ u(p, { className: "size-4" }), "Publish"]
424
+ }) : null, /* @__PURE__ */ u(ve, {
422
425
  asChild: !0,
423
- children: /* @__PURE__ */ d(h, {
426
+ children: /* @__PURE__ */ u(m, {
424
427
  type: "button",
425
428
  variant: "outline",
426
429
  children: "Close"
@@ -429,76 +432,76 @@ function j() {
429
432
  ] }) : null
430
433
  })
431
434
  }),
432
- /* @__PURE__ */ d(g, {
435
+ /* @__PURE__ */ u(h, {
433
436
  open: J !== null,
434
437
  onOpenChange: (e) => e || z ? void 0 : Y(null),
435
- children: /* @__PURE__ */ f(_, {
438
+ children: /* @__PURE__ */ d(g, {
436
439
  className: "max-w-md",
437
440
  children: [
438
- /* @__PURE__ */ f(b, { children: [/* @__PURE__ */ d(x, { children: M("cosmicintersection.pages.releases.publishRelease", "Publish release") }), /* @__PURE__ */ d(v, { children: J ? M("cosmicintersection.pages.releases.publishDescription", "Publish “{{name}}” to make it publicly citable. You can attach a DOI now or later.", { name: J.title }) : "" })] }),
439
- J ? /* @__PURE__ */ f("dl", {
441
+ /* @__PURE__ */ d(y, { children: [/* @__PURE__ */ u(b, { children: M("cosmicintersection.pages.releases.publishRelease", "Publish release") }), /* @__PURE__ */ u(_, { children: J ? M("cosmicintersection.pages.releases.publishDescription", "Publish “{{name}}” to make it publicly citable. You can attach a DOI now or later.", { name: J.title }) : "" })] }),
442
+ J ? /* @__PURE__ */ d("dl", {
440
443
  className: "grid grid-cols-3 gap-x-4 gap-y-3 rounded-card border border-border-default bg-bg-sunken p-3",
441
444
  children: [
442
- /* @__PURE__ */ f("div", {
445
+ /* @__PURE__ */ d("div", {
443
446
  className: "col-span-2 min-w-0",
444
- children: [/* @__PURE__ */ d("dt", {
447
+ children: [/* @__PURE__ */ u("dt", {
445
448
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
446
449
  children: "Authors"
447
- }), /* @__PURE__ */ d("dd", {
450
+ }), /* @__PURE__ */ u("dd", {
448
451
  className: "mt-0.5 truncate text-sm text-text-primary",
449
452
  title: J.authors.join(", "),
450
453
  children: J.authors.length ? J.authors.join(", ") : "—"
451
454
  })]
452
455
  }),
453
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("dt", {
456
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("dt", {
454
457
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
455
458
  children: "Datasets"
456
- }), /* @__PURE__ */ d("dd", {
459
+ }), /* @__PURE__ */ u("dd", {
457
460
  className: "mt-0.5 text-sm tabular-nums text-text-primary",
458
461
  children: J.datasetIds.length
459
462
  })] }),
460
- /* @__PURE__ */ f("div", {
463
+ /* @__PURE__ */ d("div", {
461
464
  className: "col-span-3 min-w-0",
462
- children: [/* @__PURE__ */ d("dt", {
465
+ children: [/* @__PURE__ */ u("dt", {
463
466
  className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
464
467
  children: "License"
465
- }), /* @__PURE__ */ d("dd", {
468
+ }), /* @__PURE__ */ u("dd", {
466
469
  className: "mt-0.5 truncate text-sm text-text-primary",
467
470
  children: J.license || "—"
468
471
  })]
469
472
  })
470
473
  ]
471
474
  }) : null,
472
- /* @__PURE__ */ f("div", {
475
+ /* @__PURE__ */ d("div", {
473
476
  className: "space-y-2",
474
477
  children: [
475
- /* @__PURE__ */ d(_e, {
478
+ /* @__PURE__ */ u(ye, {
476
479
  htmlFor: "release-doi",
477
480
  children: M("cosmicintersection.pages.releases.doiOptional", "DOI (optional)")
478
481
  }),
479
- /* @__PURE__ */ d(ge, {
482
+ /* @__PURE__ */ u(x, {
480
483
  id: "release-doi",
481
484
  value: X,
482
485
  onChange: (e) => Z(e.target.value),
483
486
  placeholder: "10.1234/cosmic.2026.0001"
484
487
  }),
485
- /* @__PURE__ */ d("p", {
488
+ /* @__PURE__ */ u("p", {
486
489
  className: "text-xs text-text-secondary",
487
490
  children: M("cosmicintersection.pages.releases.doiHint", "A Digital Object Identifier makes the release permanently referenceable.")
488
491
  })
489
492
  ]
490
493
  }),
491
- /* @__PURE__ */ f(y, { children: [/* @__PURE__ */ d(h, {
494
+ /* @__PURE__ */ d(v, { children: [/* @__PURE__ */ u(m, {
492
495
  type: "button",
493
496
  variant: "outline",
494
497
  onClick: () => Y(null),
495
498
  disabled: z,
496
499
  children: M("cosmicintersection.common.cancel", "Cancel")
497
- }), /* @__PURE__ */ f(h, {
500
+ }), /* @__PURE__ */ d(m, {
498
501
  type: "button",
499
- onClick: () => void Ae(),
502
+ onClick: () => void Me(),
500
503
  disabled: z,
501
- children: [/* @__PURE__ */ d(m, { className: "size-4" }), z ? M("cosmicintersection.pages.releases.publishing", "Publishing…") : M("cosmicintersection.pages.releases.publishRelease", "Publish release")]
504
+ children: [/* @__PURE__ */ u(p, { className: "size-4" }), z ? M("cosmicintersection.pages.releases.publishing", "Publishing…") : M("cosmicintersection.pages.releases.publishRelease", "Publish release")]
502
505
  })] })
503
506
  ]
504
507
  })