@burdenoff/microfe-cosmicintersection 2026.827.1 → 2026.830.1

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 (70) hide show
  1. package/dist/cosmicintersection/components/ActionMenu.d.ts +1 -1
  2. package/dist/cosmicintersection/components/ActionMenu.d.ts.map +1 -1
  3. package/dist/cosmicintersection/components/ActionMenu.js +51 -54
  4. package/dist/cosmicintersection/components/ActionMenu.js.map +1 -1
  5. package/dist/cosmicintersection/components/EntityFormShell.d.ts +1 -1
  6. package/dist/cosmicintersection/components/EntityFormShell.d.ts.map +1 -1
  7. package/dist/cosmicintersection/components/EntityFormShell.js +29 -27
  8. package/dist/cosmicintersection/components/EntityFormShell.js.map +1 -1
  9. package/dist/cosmicintersection/components/ErrorState.d.ts +1 -1
  10. package/dist/cosmicintersection/components/ErrorState.d.ts.map +1 -1
  11. package/dist/cosmicintersection/components/ErrorState.js +19 -17
  12. package/dist/cosmicintersection/components/ErrorState.js.map +1 -1
  13. package/dist/cosmicintersection/components/FileUploadField.d.ts.map +1 -1
  14. package/dist/cosmicintersection/components/FileUploadField.js +61 -60
  15. package/dist/cosmicintersection/components/FileUploadField.js.map +1 -1
  16. package/dist/cosmicintersection/components/LoadingState.d.ts +1 -1
  17. package/dist/cosmicintersection/components/LoadingState.d.ts.map +1 -1
  18. package/dist/cosmicintersection/components/LoadingState.js +15 -13
  19. package/dist/cosmicintersection/components/LoadingState.js.map +1 -1
  20. package/dist/cosmicintersection/components/PageLayout.d.ts.map +1 -1
  21. package/dist/cosmicintersection/components/PageLayout.js +28 -27
  22. package/dist/cosmicintersection/components/PageLayout.js.map +1 -1
  23. package/dist/cosmicintersection/components/Pagination.d.ts.map +1 -1
  24. package/dist/cosmicintersection/components/Pagination.js +38 -35
  25. package/dist/cosmicintersection/components/Pagination.js.map +1 -1
  26. package/dist/cosmicintersection/components/StatusBadge.d.ts.map +1 -1
  27. package/dist/cosmicintersection/components/StatusBadge.js +30 -9
  28. package/dist/cosmicintersection/components/StatusBadge.js.map +1 -1
  29. package/dist/cosmicintersection/pages/access/AccessPage.d.ts.map +1 -1
  30. package/dist/cosmicintersection/pages/access/AccessPage.js +147 -146
  31. package/dist/cosmicintersection/pages/access/AccessPage.js.map +1 -1
  32. package/dist/cosmicintersection/pages/analyses/AnalysesPage.d.ts.map +1 -1
  33. package/dist/cosmicintersection/pages/analyses/AnalysesPage.js +260 -259
  34. package/dist/cosmicintersection/pages/analyses/AnalysesPage.js.map +1 -1
  35. package/dist/cosmicintersection/pages/collections/CollectionsPage.d.ts.map +1 -1
  36. package/dist/cosmicintersection/pages/collections/CollectionsPage.js +63 -62
  37. package/dist/cosmicintersection/pages/collections/CollectionsPage.js.map +1 -1
  38. package/dist/cosmicintersection/pages/dashboard/DashboardPage.d.ts.map +1 -1
  39. package/dist/cosmicintersection/pages/dashboard/DashboardPage.js +132 -131
  40. package/dist/cosmicintersection/pages/dashboard/DashboardPage.js.map +1 -1
  41. package/dist/cosmicintersection/pages/datasets/DatasetsPage.d.ts.map +1 -1
  42. package/dist/cosmicintersection/pages/datasets/DatasetsPage.js +178 -177
  43. package/dist/cosmicintersection/pages/datasets/DatasetsPage.js.map +1 -1
  44. package/dist/cosmicintersection/pages/discovery/DiscoveryPage.d.ts.map +1 -1
  45. package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js +138 -145
  46. package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js.map +1 -1
  47. package/dist/cosmicintersection/pages/lineage/LineagePage.d.ts.map +1 -1
  48. package/dist/cosmicintersection/pages/lineage/LineagePage.js +78 -88
  49. package/dist/cosmicintersection/pages/lineage/LineagePage.js.map +1 -1
  50. package/dist/cosmicintersection/pages/notebooks/NotebooksPage.d.ts.map +1 -1
  51. package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js +125 -124
  52. package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js.map +1 -1
  53. package/dist/cosmicintersection/pages/pipelines/PipelinesPage.d.ts.map +1 -1
  54. package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js +152 -151
  55. package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js.map +1 -1
  56. package/dist/cosmicintersection/pages/releases/ReleasesPage.d.ts.map +1 -1
  57. package/dist/cosmicintersection/pages/releases/ReleasesPage.js +175 -174
  58. package/dist/cosmicintersection/pages/releases/ReleasesPage.js.map +1 -1
  59. package/dist/cosmicintersection/pages/runs/RunsPage.d.ts.map +1 -1
  60. package/dist/cosmicintersection/pages/runs/RunsPage.js +197 -188
  61. package/dist/cosmicintersection/pages/runs/RunsPage.js.map +1 -1
  62. package/dist/cosmicintersection/pages/sources/SourcesPage.d.ts.map +1 -1
  63. package/dist/cosmicintersection/pages/sources/SourcesPage.js +65 -64
  64. package/dist/cosmicintersection/pages/sources/SourcesPage.js.map +1 -1
  65. package/dist/dev/main.d.ts.map +1 -1
  66. package/dist/shared/hooks/useTr.d.ts +12 -0
  67. package/dist/shared/hooks/useTr.d.ts.map +1 -0
  68. package/dist/shared/hooks/useTr.js +16 -0
  69. package/dist/shared/hooks/useTr.js.map +1 -0
  70. package/package.json +1 -1
@@ -1,28 +1,29 @@
1
1
  import { notify as e } from "../../lib/toast.js";
2
- import { useCosAccessGrantsQuery as t, useCosDatasetsQuery as n, useCosGrantAccessMutation as r, useCosRevokeAccessMutation as ee } from "../../api/cosmicApi.js";
2
+ import { useCosAccessGrantsQuery as t, useCosDatasetsQuery as n, useCosGrantAccessMutation as ee, useCosRevokeAccessMutation as r } from "../../api/cosmicApi.js";
3
+ import { useTr as te } from "../../../shared/hooks/useTr.js";
3
4
  import i from "../../components/ActionMenu.js";
4
- import a from "../../components/EmptyState.js";
5
- import te from "../../components/ErrorState.js";
6
- import ne from "../../components/LoadingState.js";
7
- import re from "../../components/EntityTagsField.js";
8
- import ie from "../../components/PageLayout.js";
9
- import o, { formatEnumLabel as s } from "../../components/StatusBadge.js";
5
+ import ne from "../../components/EmptyState.js";
6
+ import re from "../../components/ErrorState.js";
7
+ import ie from "../../components/LoadingState.js";
8
+ import ae from "../../components/EntityTagsField.js";
9
+ import oe from "../../components/PageLayout.js";
10
+ import a, { formatEnumLabel as o } from "../../components/StatusBadge.js";
10
11
  import "../../components/index.js";
11
- import { useMemo as c, useState as l } from "react";
12
- import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
13
- import { KeyRound as p, ShieldCheck as ae } from "lucide-react";
14
- import { Badge as m, Button as h, Dialog as oe, DialogContent as se, DialogDescription as g, DialogFooter as _, DialogHeader as v, DialogTitle as y, Input as b, Label as x, Select as S, SelectContent as C, SelectItem as w, SelectTrigger as T, SelectValue as E, Table as ce, TableBody as le, TableCell as D, TableHead as O, TableHeader as ue, TableRow as k, Textarea as de } from "@burdenoff/fe-libs/ui";
12
+ import { useMemo as s, useState as c } from "react";
13
+ import { Fragment as se, jsx as l, jsxs as u } from "react/jsx-runtime";
14
+ import { KeyRound as d, ShieldCheck as ce } from "lucide-react";
15
+ import { Badge as f, Button as p, Dialog as le, DialogContent as m, DialogDescription as h, DialogFooter as g, DialogHeader as _, DialogTitle as v, Input as y, Label as b, Select as x, SelectContent as S, SelectItem as C, SelectTrigger as w, SelectValue as T, Table as ue, TableBody as de, TableCell as E, TableHead as D, TableHeader as O, TableRow as k, Textarea as fe } from "@burdenoff/fe-libs/ui";
15
16
  //#region src/cosmicintersection/pages/access/AccessPage.tsx
16
- var A = "ALL", j = [
17
+ var A = "ALL", pe = [
17
18
  "PENDING",
18
19
  "ACTIVE",
19
20
  "EXPIRED",
20
21
  "REVOKED"
21
22
  ];
22
- function M(e) {
23
+ function j(e) {
23
24
  return e === "ACTIVE" || e === "PENDING";
24
25
  }
25
- function N(e) {
26
+ function M(e) {
26
27
  if (!e) return "—";
27
28
  let t = new Date(e);
28
29
  return Number.isNaN(t.getTime()) ? "—" : t.toLocaleDateString(void 0, {
@@ -31,27 +32,27 @@ function N(e) {
31
32
  day: "numeric"
32
33
  });
33
34
  }
34
- var P = {
35
+ var N = {
35
36
  datasetId: "",
36
37
  granteeId: "",
37
38
  scopes: [],
38
39
  reason: "",
39
40
  expiresAt: ""
40
41
  };
41
- function F() {
42
- let [F, I] = l(A), [L, R] = l(A), z = n({ pagination: {
42
+ function P() {
43
+ let P = te(), [F, I] = c(A), [L, R] = c(A), z = n({ pagination: {
43
44
  limit: 50,
44
45
  offset: 0
45
- } }), B = c(() => z.data?.cosListDatasets.items ?? [], [z.data]), V = c(() => {
46
+ } }), B = s(() => z.data?.cosListDatasets.items ?? [], [z.data]), V = s(() => {
46
47
  let e = /* @__PURE__ */ new Map();
47
48
  for (let t of B) e.set(t.id, t.name);
48
49
  return e;
49
- }, [B]), { data: H, loading: fe, error: U, refetch: W } = t({
50
+ }, [B]), { data: H, loading: me, error: U, refetch: W } = t({
50
51
  datasetId: F === A ? void 0 : F,
51
52
  status: L === A ? void 0 : L
52
- }), G = c(() => H?.cosListAccessGrants ?? [], [H]), [pe, { loading: K }] = r(), [me] = ee(), [he, q] = l(!1), [J, Y] = l(P), ge = () => {
53
+ }), G = s(() => H?.cosListAccessGrants ?? [], [H]), [he, { loading: K }] = ee(), [ge] = r(), [_e, q] = c(!1), [J, Y] = c(N), ve = () => {
53
54
  Y({
54
- ...P,
55
+ ...N,
55
56
  datasetId: F === A ? "" : F
56
57
  }), q(!0);
57
58
  }, X = (e, t) => {
@@ -59,226 +60,226 @@ function F() {
59
60
  ...n,
60
61
  [e]: t
61
62
  }));
62
- }, _e = async () => {
63
+ }, ye = async () => {
63
64
  if (!J.datasetId) {
64
- e.error("Dataset is required", "Choose which dataset this grant applies to.");
65
+ e.error(P("cosmicintersection.pages.access.datasetRequired", "Dataset is required"), P("cosmicintersection.pages.access.datasetRequiredDescription", "Choose which dataset this grant applies to."));
65
66
  return;
66
67
  }
67
68
  if (!J.granteeId.trim()) {
68
- e.error("Grantee is required", "Enter the workspace User ID to grant access to.");
69
+ e.error(P("cosmicintersection.pages.access.granteeRequired", "Grantee is required"), P("cosmicintersection.pages.access.granteeRequiredDescription", "Enter the workspace User ID to grant access to."));
69
70
  return;
70
71
  }
71
72
  let t;
72
73
  if (J.expiresAt) {
73
74
  let n = new Date(J.expiresAt);
74
75
  if (Number.isNaN(n.getTime())) {
75
- e.error("Invalid expiry", "Enter a valid expiry date or leave it blank.");
76
+ e.error(P("cosmicintersection.pages.access.invalidExpiry", "Invalid expiry"), P("cosmicintersection.pages.access.invalidExpiryDescription", "Enter a valid expiry date or leave it blank."));
76
77
  return;
77
78
  }
78
79
  t = n.toISOString();
79
80
  }
80
- (await pe({ variables: { input: {
81
+ (await he({ variables: { input: {
81
82
  datasetId: J.datasetId,
82
83
  granteeId: J.granteeId.trim(),
83
84
  scopes: J.scopes.length ? J.scopes : void 0,
84
85
  reason: J.reason.trim() || void 0,
85
86
  expiresAt: t
86
- } } })).data?.cosGrantAccess?.id && (e.success("Access granted"), q(!1), Y(P), await W());
87
+ } } })).data?.cosGrantAccess?.id && (e.success(P("cosmicintersection.pages.access.accessGranted", "Access granted")), q(!1), Y(N), await W());
87
88
  }, Z = async (t) => {
88
- let n = await me({ variables: { id: t.id } });
89
+ let n = await ge({ variables: { id: t.id } });
89
90
  if (n.error) throw Error(n.error.message);
90
- if (!n.data?.cosRevokeAccess?.id) throw e.error("Could not revoke grant", "The server did not confirm the change."), Error("Revoke not confirmed");
91
- e.success("Access revoked"), await W();
92
- }, Q = /* @__PURE__ */ f(h, {
91
+ if (!n.data?.cosRevokeAccess?.id) throw e.error(P("cosmicintersection.pages.access.revokeError", "Could not revoke grant"), P("cosmicintersection.pages.access.revokeErrorDescription", "The server did not confirm the change.")), Error("Revoke not confirmed");
92
+ e.success(P("cosmicintersection.pages.access.accessRevoked", "Access revoked")), await W();
93
+ }, Q = /* @__PURE__ */ u(p, {
93
94
  type: "button",
94
- onClick: ge,
95
- children: [/* @__PURE__ */ d(p, { className: "size-4" }), "Grant access"]
95
+ onClick: ve,
96
+ children: [/* @__PURE__ */ l(d, { className: "size-4" }), P("cosmicintersection.pages.access.grantAccess", "Grant access")]
96
97
  }), $ = F === A;
97
- return /* @__PURE__ */ f(ie, {
98
- title: "Data access",
99
- description: "Govern who can reach restricted and embargoed datasets, with scoped, expiring grants.",
98
+ return /* @__PURE__ */ u(oe, {
99
+ title: P("cosmicintersection.pages.access.title", "Data access"),
100
+ description: P("cosmicintersection.pages.access.description", "Govern who can reach restricted and embargoed datasets, with scoped, expiring grants."),
100
101
  actions: Q,
101
- children: [/* @__PURE__ */ f("div", {
102
+ children: [/* @__PURE__ */ u("div", {
102
103
  className: "space-y-4",
103
- children: [/* @__PURE__ */ f("div", {
104
+ children: [/* @__PURE__ */ u("div", {
104
105
  className: "flex flex-wrap items-center gap-3",
105
- children: [/* @__PURE__ */ d("div", {
106
+ children: [/* @__PURE__ */ l("div", {
106
107
  className: "w-full max-w-[18rem]",
107
- children: /* @__PURE__ */ f(S, {
108
+ children: /* @__PURE__ */ u(x, {
108
109
  value: F,
109
110
  onValueChange: I,
110
- children: [/* @__PURE__ */ d(T, {
111
+ children: [/* @__PURE__ */ l(w, {
111
112
  "aria-label": "Filter by dataset",
112
- children: /* @__PURE__ */ d(E, { placeholder: "All datasets" })
113
- }), /* @__PURE__ */ f(C, { children: [/* @__PURE__ */ d(w, {
113
+ children: /* @__PURE__ */ l(T, { placeholder: "All datasets" })
114
+ }), /* @__PURE__ */ u(S, { children: [/* @__PURE__ */ l(C, {
114
115
  value: A,
115
116
  children: "All datasets"
116
- }), B.map((e) => /* @__PURE__ */ d(w, {
117
+ }), B.map((e) => /* @__PURE__ */ l(C, {
117
118
  value: e.id,
118
119
  children: e.name
119
120
  }, e.id))] })]
120
121
  })
121
- }), /* @__PURE__ */ d("div", {
122
+ }), /* @__PURE__ */ l("div", {
122
123
  className: "w-full max-w-[14rem]",
123
- children: /* @__PURE__ */ f(S, {
124
+ children: /* @__PURE__ */ u(x, {
124
125
  value: L,
125
126
  onValueChange: R,
126
- children: [/* @__PURE__ */ d(T, {
127
+ children: [/* @__PURE__ */ l(w, {
127
128
  "aria-label": "Filter by status",
128
- children: /* @__PURE__ */ d(E, { placeholder: "All statuses" })
129
- }), /* @__PURE__ */ f(C, { children: [/* @__PURE__ */ d(w, {
129
+ children: /* @__PURE__ */ l(T, { placeholder: "All statuses" })
130
+ }), /* @__PURE__ */ u(S, { children: [/* @__PURE__ */ l(C, {
130
131
  value: A,
131
132
  children: "All statuses"
132
- }), j.map((e) => /* @__PURE__ */ d(w, {
133
+ }), pe.map((e) => /* @__PURE__ */ l(C, {
133
134
  value: e,
134
- children: s(e)
135
+ children: o(e)
135
136
  }, e))] })]
136
137
  })
137
138
  })]
138
139
  }), (() => {
139
- if (fe) return /* @__PURE__ */ d(ne, {
140
+ if (me) return /* @__PURE__ */ l(ie, {
140
141
  variant: "rows",
141
142
  rows: 6,
142
- label: "Loading access grants…"
143
+ label: P("cosmicintersection.pages.access.loading", "Loading access grants…")
143
144
  });
144
- if (U) return /* @__PURE__ */ d(te, {
145
+ if (U) return /* @__PURE__ */ l(re, {
145
146
  message: U.message,
146
147
  onRetry: () => void W()
147
148
  });
148
149
  if (G.length === 0) {
149
150
  let e = F !== A || L !== A;
150
- return /* @__PURE__ */ d(a, {
151
- icon: ae,
152
- title: e ? "No grants match these filters" : "No access grants yet",
153
- description: e ? "Try clearing the dataset or status filter to see more grants." : "Grant a workspace member scoped access to a restricted or embargoed dataset.",
151
+ return /* @__PURE__ */ l(ne, {
152
+ icon: ce,
153
+ title: e ? P("cosmicintersection.pages.access.emptyFilterTitle", "No grants match these filters") : P("cosmicintersection.pages.access.emptyTitle", "No access grants yet"),
154
+ description: e ? P("cosmicintersection.pages.access.emptyFilterDescription", "Try clearing the dataset or status filter to see more grants.") : P("cosmicintersection.pages.access.emptyDescription", "Grant a workspace member scoped access to a restricted or embargoed dataset."),
154
155
  action: e ? void 0 : Q
155
156
  });
156
157
  }
157
- return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("div", {
158
+ return /* @__PURE__ */ u(se, { children: [/* @__PURE__ */ l("div", {
158
159
  className: "hidden rounded-card border border-border-default bg-bg-elevated md:block",
159
- children: /* @__PURE__ */ f(ce, { children: [/* @__PURE__ */ d(ue, { children: /* @__PURE__ */ f(k, { children: [
160
- $ ? /* @__PURE__ */ d(O, { children: "Dataset" }) : null,
161
- /* @__PURE__ */ d(O, { children: "Grantee" }),
162
- /* @__PURE__ */ d(O, { children: "Status" }),
163
- /* @__PURE__ */ d(O, { children: "Scopes" }),
164
- /* @__PURE__ */ d(O, { children: "Reason" }),
165
- /* @__PURE__ */ d(O, { children: "Granted" }),
166
- /* @__PURE__ */ d(O, { children: "Expires" }),
167
- /* @__PURE__ */ d(O, { children: "Revoked" }),
168
- /* @__PURE__ */ d(O, {
160
+ children: /* @__PURE__ */ u(ue, { children: [/* @__PURE__ */ l(O, { children: /* @__PURE__ */ u(k, { children: [
161
+ $ ? /* @__PURE__ */ l(D, { children: "Dataset" }) : null,
162
+ /* @__PURE__ */ l(D, { children: "Grantee" }),
163
+ /* @__PURE__ */ l(D, { children: "Status" }),
164
+ /* @__PURE__ */ l(D, { children: "Scopes" }),
165
+ /* @__PURE__ */ l(D, { children: "Reason" }),
166
+ /* @__PURE__ */ l(D, { children: "Granted" }),
167
+ /* @__PURE__ */ l(D, { children: "Expires" }),
168
+ /* @__PURE__ */ l(D, { children: "Revoked" }),
169
+ /* @__PURE__ */ l(D, {
169
170
  className: "text-right",
170
171
  children: "Actions"
171
172
  })
172
- ] }) }), /* @__PURE__ */ d(le, { children: G.map((e) => /* @__PURE__ */ f(k, { children: [
173
- $ ? /* @__PURE__ */ d(D, {
173
+ ] }) }), /* @__PURE__ */ l(de, { children: G.map((e) => /* @__PURE__ */ u(k, { children: [
174
+ $ ? /* @__PURE__ */ l(E, {
174
175
  className: "max-w-[12rem]",
175
- children: /* @__PURE__ */ d("span", {
176
+ children: /* @__PURE__ */ l("span", {
176
177
  className: "line-clamp-1 text-sm text-text-primary",
177
- children: V.get(e.datasetId) ?? /* @__PURE__ */ d("span", {
178
+ children: V.get(e.datasetId) ?? /* @__PURE__ */ l("span", {
178
179
  className: "font-mono text-xs text-text-secondary",
179
180
  children: e.datasetId
180
181
  })
181
182
  })
182
183
  }) : null,
183
- /* @__PURE__ */ d(D, {
184
+ /* @__PURE__ */ l(E, {
184
185
  className: "max-w-[12rem]",
185
- children: /* @__PURE__ */ d("span", {
186
+ children: /* @__PURE__ */ l("span", {
186
187
  className: "block truncate font-mono text-xs text-text-primary",
187
188
  children: e.granteeId
188
189
  })
189
190
  }),
190
- /* @__PURE__ */ d(D, { children: /* @__PURE__ */ d(o, { status: e.status }) }),
191
- /* @__PURE__ */ d(D, { children: /* @__PURE__ */ d("div", {
191
+ /* @__PURE__ */ l(E, { children: /* @__PURE__ */ l(a, { status: e.status }) }),
192
+ /* @__PURE__ */ l(E, { children: /* @__PURE__ */ l("div", {
192
193
  className: "flex max-w-[12rem] flex-wrap gap-1",
193
- children: e.scopes.length === 0 ? /* @__PURE__ */ d("span", {
194
+ children: e.scopes.length === 0 ? /* @__PURE__ */ l("span", {
194
195
  className: "text-xs text-text-secondary",
195
196
  children: "—"
196
- }) : e.scopes.map((e) => /* @__PURE__ */ d(m, {
197
+ }) : e.scopes.map((e) => /* @__PURE__ */ l(f, {
197
198
  variant: "outline",
198
199
  className: "text-xs",
199
200
  children: e
200
201
  }, e))
201
202
  }) }),
202
- /* @__PURE__ */ d(D, {
203
+ /* @__PURE__ */ l(E, {
203
204
  className: "max-w-[14rem]",
204
- children: e.reason ? /* @__PURE__ */ d("span", {
205
+ children: e.reason ? /* @__PURE__ */ l("span", {
205
206
  className: "line-clamp-1 text-sm text-text-secondary",
206
207
  children: e.reason
207
- }) : /* @__PURE__ */ d("span", {
208
+ }) : /* @__PURE__ */ l("span", {
208
209
  className: "text-sm text-text-secondary",
209
210
  children: "—"
210
211
  })
211
212
  }),
212
- /* @__PURE__ */ d(D, {
213
+ /* @__PURE__ */ l(E, {
213
214
  className: "whitespace-nowrap text-sm text-text-secondary",
214
- children: N(e.grantedAt)
215
+ children: M(e.grantedAt)
215
216
  }),
216
- /* @__PURE__ */ d(D, {
217
+ /* @__PURE__ */ l(E, {
217
218
  className: "whitespace-nowrap text-sm text-text-secondary",
218
- children: N(e.expiresAt)
219
+ children: M(e.expiresAt)
219
220
  }),
220
- /* @__PURE__ */ d(D, {
221
+ /* @__PURE__ */ l(E, {
221
222
  className: "whitespace-nowrap text-sm text-text-secondary",
222
- children: N(e.revokedAt)
223
+ children: M(e.revokedAt)
223
224
  }),
224
- /* @__PURE__ */ d(D, {
225
+ /* @__PURE__ */ l(E, {
225
226
  className: "text-right",
226
- children: M(e.status) ? /* @__PURE__ */ d(i, {
227
+ children: j(e.status) ? /* @__PURE__ */ l(i, {
227
228
  ariaLabel: `Actions for grant to ${e.granteeId}`,
228
229
  entityName: e.granteeId,
229
230
  onDelete: () => Z(e),
230
231
  deleteLabel: "Revoke grant"
231
- }) : /* @__PURE__ */ d("span", {
232
+ }) : /* @__PURE__ */ l("span", {
232
233
  className: "text-xs text-text-secondary",
233
234
  children: "—"
234
235
  })
235
236
  })
236
237
  ] }, e.id)) })] })
237
- }), /* @__PURE__ */ d("ul", {
238
+ }), /* @__PURE__ */ l("ul", {
238
239
  className: "space-y-3 md:hidden",
239
- children: G.map((e) => /* @__PURE__ */ d("li", {
240
+ children: G.map((e) => /* @__PURE__ */ l("li", {
240
241
  className: "rounded-card border border-border-default bg-bg-elevated",
241
- children: /* @__PURE__ */ f("div", {
242
+ children: /* @__PURE__ */ u("div", {
242
243
  className: "flex items-start justify-between gap-2 p-4",
243
- children: [/* @__PURE__ */ f("div", {
244
+ children: [/* @__PURE__ */ u("div", {
244
245
  className: "min-w-0 flex-1 space-y-2",
245
246
  children: [
246
- /* @__PURE__ */ f("div", {
247
+ /* @__PURE__ */ u("div", {
247
248
  className: "flex flex-wrap items-center gap-2",
248
- children: [$ ? /* @__PURE__ */ d("span", {
249
+ children: [$ ? /* @__PURE__ */ l("span", {
249
250
  className: "truncate text-sm font-medium text-text-primary",
250
251
  children: V.get(e.datasetId) ?? "Dataset"
251
- }) : null, /* @__PURE__ */ d(o, { status: e.status })]
252
+ }) : null, /* @__PURE__ */ l(a, { status: e.status })]
252
253
  }),
253
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
254
+ /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
254
255
  className: "text-xs text-text-secondary",
255
256
  children: "Grantee (User ID)"
256
- }), /* @__PURE__ */ d("p", {
257
+ }), /* @__PURE__ */ l("p", {
257
258
  className: "truncate font-mono text-xs text-text-primary",
258
259
  children: e.granteeId
259
260
  })] }),
260
- e.scopes.length > 0 ? /* @__PURE__ */ d("div", {
261
+ e.scopes.length > 0 ? /* @__PURE__ */ l("div", {
261
262
  className: "flex flex-wrap gap-1",
262
- children: e.scopes.map((e) => /* @__PURE__ */ d(m, {
263
+ children: e.scopes.map((e) => /* @__PURE__ */ l(f, {
263
264
  variant: "outline",
264
265
  className: "text-xs",
265
266
  children: e
266
267
  }, e))
267
268
  }) : null,
268
- e.reason ? /* @__PURE__ */ d("p", {
269
+ e.reason ? /* @__PURE__ */ l("p", {
269
270
  className: "line-clamp-2 text-xs text-text-secondary",
270
271
  children: e.reason
271
272
  }) : null,
272
- /* @__PURE__ */ f("div", {
273
+ /* @__PURE__ */ u("div", {
273
274
  className: "flex flex-wrap gap-x-3 gap-y-1 text-xs text-text-secondary",
274
275
  children: [
275
- /* @__PURE__ */ f("span", { children: ["Granted ", N(e.grantedAt)] }),
276
- /* @__PURE__ */ f("span", { children: ["Expires ", N(e.expiresAt)] }),
277
- e.revokedAt ? /* @__PURE__ */ f("span", { children: ["Revoked ", N(e.revokedAt)] }) : null
276
+ /* @__PURE__ */ u("span", { children: ["Granted ", M(e.grantedAt)] }),
277
+ /* @__PURE__ */ u("span", { children: ["Expires ", M(e.expiresAt)] }),
278
+ e.revokedAt ? /* @__PURE__ */ u("span", { children: ["Revoked ", M(e.revokedAt)] }) : null
278
279
  ]
279
280
  })
280
281
  ]
281
- }), M(e.status) ? /* @__PURE__ */ d(i, {
282
+ }), j(e.status) ? /* @__PURE__ */ l(i, {
282
283
  ariaLabel: `Actions for grant to ${e.granteeId}`,
283
284
  entityName: e.granteeId,
284
285
  onDelete: () => Z(e),
@@ -288,105 +289,105 @@ function F() {
288
289
  }, e.id))
289
290
  })] });
290
291
  })()]
291
- }), /* @__PURE__ */ d(oe, {
292
- open: he,
292
+ }), /* @__PURE__ */ l(le, {
293
+ open: _e,
293
294
  onOpenChange: (e) => q(e || K ? e : !1),
294
- children: /* @__PURE__ */ f(se, {
295
+ children: /* @__PURE__ */ u(m, {
295
296
  className: "max-h-[85vh] max-w-md overflow-y-auto",
296
297
  children: [
297
- /* @__PURE__ */ f(v, { children: [/* @__PURE__ */ d(y, { children: "Grant data access" }), /* @__PURE__ */ d(g, { children: "Give a workspace member scoped access to a dataset. Access is identified by the member's User ID." })] }),
298
- /* @__PURE__ */ f("div", {
298
+ /* @__PURE__ */ u(_, { children: [/* @__PURE__ */ l(v, { children: P("cosmicintersection.pages.access.grantDataAccess", "Grant data access") }), /* @__PURE__ */ l(h, { children: P("cosmicintersection.pages.access.grantDataAccessDescription", "Give a workspace member scoped access to a dataset. Access is identified by the member's User ID.") })] }),
299
+ /* @__PURE__ */ u("div", {
299
300
  className: "space-y-4",
300
301
  children: [
301
- /* @__PURE__ */ f("div", {
302
+ /* @__PURE__ */ u("div", {
302
303
  className: "space-y-1.5",
303
- children: [/* @__PURE__ */ d(x, {
304
+ children: [/* @__PURE__ */ l(b, {
304
305
  htmlFor: "grant-dataset",
305
- children: "Dataset"
306
- }), /* @__PURE__ */ f(S, {
306
+ children: P("cosmicintersection.pages.access.dataset", "Dataset")
307
+ }), /* @__PURE__ */ u(x, {
307
308
  value: J.datasetId || void 0,
308
309
  onValueChange: (e) => X("datasetId", e),
309
- children: [/* @__PURE__ */ d(T, {
310
+ children: [/* @__PURE__ */ l(w, {
310
311
  id: "grant-dataset",
311
- "aria-label": "Dataset",
312
- children: /* @__PURE__ */ d(E, { placeholder: "Select a dataset" })
313
- }), /* @__PURE__ */ d(C, { children: B.map((e) => /* @__PURE__ */ d(w, {
312
+ "aria-label": P("cosmicintersection.pages.access.dataset", "Dataset"),
313
+ children: /* @__PURE__ */ l(T, { placeholder: P("cosmicintersection.pages.access.selectDataset", "Select a dataset") })
314
+ }), /* @__PURE__ */ l(S, { children: B.map((e) => /* @__PURE__ */ l(C, {
314
315
  value: e.id,
315
316
  children: e.name
316
317
  }, e.id)) })]
317
318
  })]
318
319
  }),
319
- /* @__PURE__ */ f("div", {
320
+ /* @__PURE__ */ u("div", {
320
321
  className: "space-y-1.5",
321
322
  children: [
322
- /* @__PURE__ */ d(x, {
323
+ /* @__PURE__ */ l(b, {
323
324
  htmlFor: "grant-grantee",
324
- children: "Grantee (User ID)"
325
+ children: P("cosmicintersection.pages.access.grantee", "Grantee (User ID)")
325
326
  }),
326
- /* @__PURE__ */ d(b, {
327
+ /* @__PURE__ */ l(y, {
327
328
  id: "grant-grantee",
328
329
  value: J.granteeId,
329
330
  onChange: (e) => X("granteeId", e.target.value),
330
331
  placeholder: "e.g. 4fe35990-…",
331
332
  className: "font-mono"
332
333
  }),
333
- /* @__PURE__ */ d("p", {
334
+ /* @__PURE__ */ l("p", {
334
335
  className: "text-xs text-text-secondary",
335
- children: "Paste the workspace member's User ID. You can copy it from the member's profile (“Get ID”) or the workspace member directory."
336
+ children: P("cosmicintersection.pages.access.granteeHint", "Paste the workspace member's User ID. You can copy it from the member's profile (\"Get ID\") or the workspace member directory.")
336
337
  })
337
338
  ]
338
339
  }),
339
- /* @__PURE__ */ d(re, {
340
+ /* @__PURE__ */ l(ae, {
340
341
  value: J.scopes,
341
342
  onChange: (e) => X("scopes", e),
342
- label: "Scopes",
343
+ label: P("cosmicintersection.pages.access.scopes", "Scopes"),
343
344
  placeholder: "e.g. read, download"
344
345
  }),
345
- /* @__PURE__ */ f("div", {
346
+ /* @__PURE__ */ u("div", {
346
347
  className: "space-y-1.5",
347
- children: [/* @__PURE__ */ d(x, {
348
+ children: [/* @__PURE__ */ l(b, {
348
349
  htmlFor: "grant-reason",
349
- children: "Reason"
350
- }), /* @__PURE__ */ d(de, {
350
+ children: P("cosmicintersection.pages.access.reason", "Reason")
351
+ }), /* @__PURE__ */ l(fe, {
351
352
  id: "grant-reason",
352
353
  value: J.reason,
353
354
  onChange: (e) => X("reason", e.target.value),
354
355
  rows: 2,
355
- placeholder: "Why this member needs access."
356
+ placeholder: P("cosmicintersection.pages.access.reasonPlaceholder", "Why this member needs access.")
356
357
  })]
357
358
  }),
358
- /* @__PURE__ */ f("div", {
359
+ /* @__PURE__ */ u("div", {
359
360
  className: "space-y-1.5",
360
361
  children: [
361
- /* @__PURE__ */ d(x, {
362
+ /* @__PURE__ */ l(b, {
362
363
  htmlFor: "grant-expires",
363
- children: "Expires (optional)"
364
+ children: P("cosmicintersection.pages.access.expiresOptional", "Expires (optional)")
364
365
  }),
365
- /* @__PURE__ */ d(b, {
366
+ /* @__PURE__ */ l(y, {
366
367
  id: "grant-expires",
367
368
  type: "datetime-local",
368
369
  value: J.expiresAt,
369
370
  onChange: (e) => X("expiresAt", e.target.value)
370
371
  }),
371
- /* @__PURE__ */ d("p", {
372
+ /* @__PURE__ */ l("p", {
372
373
  className: "text-xs text-text-secondary",
373
- children: "Leave blank for an open-ended grant."
374
+ children: P("cosmicintersection.pages.access.expiresHint", "Leave blank for an open-ended grant.")
374
375
  })
375
376
  ]
376
377
  })
377
378
  ]
378
379
  }),
379
- /* @__PURE__ */ f(_, { children: [/* @__PURE__ */ d(h, {
380
+ /* @__PURE__ */ u(g, { children: [/* @__PURE__ */ l(p, {
380
381
  type: "button",
381
382
  variant: "outline",
382
383
  onClick: () => q(!1),
383
384
  disabled: K,
384
- children: "Cancel"
385
- }), /* @__PURE__ */ f(h, {
385
+ children: P("cosmicintersection.common.cancel", "Cancel")
386
+ }), /* @__PURE__ */ u(p, {
386
387
  type: "button",
387
- onClick: () => void _e(),
388
+ onClick: () => void ye(),
388
389
  disabled: K,
389
- children: [/* @__PURE__ */ d(p, { className: "size-4" }), K ? "Granting…" : "Grant access"]
390
+ children: [/* @__PURE__ */ l(d, { className: "size-4" }), K ? P("cosmicintersection.pages.access.granting", "Granting…") : P("cosmicintersection.pages.access.grantAccess", "Grant access")]
390
391
  })] })
391
392
  ]
392
393
  })
@@ -394,6 +395,6 @@ function F() {
394
395
  });
395
396
  }
396
397
  //#endregion
397
- export { F as default };
398
+ export { P as default };
398
399
 
399
400
  //# sourceMappingURL=AccessPage.js.map