@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.
- package/dist/cosmicintersection/components/ActionMenu.d.ts +1 -1
- package/dist/cosmicintersection/components/ActionMenu.d.ts.map +1 -1
- package/dist/cosmicintersection/components/ActionMenu.js +51 -54
- package/dist/cosmicintersection/components/ActionMenu.js.map +1 -1
- package/dist/cosmicintersection/components/EntityFormShell.d.ts +1 -1
- package/dist/cosmicintersection/components/EntityFormShell.d.ts.map +1 -1
- package/dist/cosmicintersection/components/EntityFormShell.js +29 -27
- package/dist/cosmicintersection/components/EntityFormShell.js.map +1 -1
- package/dist/cosmicintersection/components/ErrorState.d.ts +1 -1
- package/dist/cosmicintersection/components/ErrorState.d.ts.map +1 -1
- package/dist/cosmicintersection/components/ErrorState.js +19 -17
- package/dist/cosmicintersection/components/ErrorState.js.map +1 -1
- package/dist/cosmicintersection/components/FileUploadField.d.ts.map +1 -1
- package/dist/cosmicintersection/components/FileUploadField.js +61 -60
- package/dist/cosmicintersection/components/FileUploadField.js.map +1 -1
- package/dist/cosmicintersection/components/LoadingState.d.ts +1 -1
- package/dist/cosmicintersection/components/LoadingState.d.ts.map +1 -1
- package/dist/cosmicintersection/components/LoadingState.js +15 -13
- package/dist/cosmicintersection/components/LoadingState.js.map +1 -1
- package/dist/cosmicintersection/components/PageLayout.d.ts.map +1 -1
- package/dist/cosmicintersection/components/PageLayout.js +28 -27
- package/dist/cosmicintersection/components/PageLayout.js.map +1 -1
- package/dist/cosmicintersection/components/Pagination.d.ts.map +1 -1
- package/dist/cosmicintersection/components/Pagination.js +38 -35
- package/dist/cosmicintersection/components/Pagination.js.map +1 -1
- package/dist/cosmicintersection/components/StatusBadge.d.ts.map +1 -1
- package/dist/cosmicintersection/components/StatusBadge.js +30 -9
- package/dist/cosmicintersection/components/StatusBadge.js.map +1 -1
- package/dist/cosmicintersection/pages/access/AccessPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/access/AccessPage.js +147 -146
- package/dist/cosmicintersection/pages/access/AccessPage.js.map +1 -1
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js +260 -259
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionsPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js +63 -62
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js +132 -131
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js +178 -177
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js +138 -145
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js.map +1 -1
- package/dist/cosmicintersection/pages/lineage/LineagePage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/lineage/LineagePage.js +78 -88
- package/dist/cosmicintersection/pages/lineage/LineagePage.js.map +1 -1
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js +125 -124
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js +152 -151
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/releases/ReleasesPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js +175 -174
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunsPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunsPage.js +197 -188
- package/dist/cosmicintersection/pages/runs/RunsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/sources/SourcesPage.d.ts.map +1 -1
- package/dist/cosmicintersection/pages/sources/SourcesPage.js +65 -64
- package/dist/cosmicintersection/pages/sources/SourcesPage.js.map +1 -1
- package/dist/dev/main.d.ts.map +1 -1
- package/dist/shared/hooks/useTr.d.ts +12 -0
- package/dist/shared/hooks/useTr.d.ts.map +1 -0
- package/dist/shared/hooks/useTr.js +16 -0
- package/dist/shared/hooks/useTr.js.map +1 -0
- 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
|
|
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
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
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
|
|
12
|
-
import { Fragment as
|
|
13
|
-
import { KeyRound as
|
|
14
|
-
import { Badge as
|
|
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",
|
|
17
|
+
var A = "ALL", pe = [
|
|
17
18
|
"PENDING",
|
|
18
19
|
"ACTIVE",
|
|
19
20
|
"EXPIRED",
|
|
20
21
|
"REVOKED"
|
|
21
22
|
];
|
|
22
|
-
function
|
|
23
|
+
function j(e) {
|
|
23
24
|
return e === "ACTIVE" || e === "PENDING";
|
|
24
25
|
}
|
|
25
|
-
function
|
|
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
|
|
35
|
+
var N = {
|
|
35
36
|
datasetId: "",
|
|
36
37
|
granteeId: "",
|
|
37
38
|
scopes: [],
|
|
38
39
|
reason: "",
|
|
39
40
|
expiresAt: ""
|
|
40
41
|
};
|
|
41
|
-
function
|
|
42
|
-
let [F, I] =
|
|
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 =
|
|
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:
|
|
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 =
|
|
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
|
-
...
|
|
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
|
-
},
|
|
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
|
|
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(
|
|
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
|
|
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__ */
|
|
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:
|
|
95
|
-
children: [/* @__PURE__ */ d
|
|
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__ */
|
|
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__ */
|
|
102
|
+
children: [/* @__PURE__ */ u("div", {
|
|
102
103
|
className: "space-y-4",
|
|
103
|
-
children: [/* @__PURE__ */
|
|
104
|
+
children: [/* @__PURE__ */ u("div", {
|
|
104
105
|
className: "flex flex-wrap items-center gap-3",
|
|
105
|
-
children: [/* @__PURE__ */
|
|
106
|
+
children: [/* @__PURE__ */ l("div", {
|
|
106
107
|
className: "w-full max-w-[18rem]",
|
|
107
|
-
children: /* @__PURE__ */
|
|
108
|
+
children: /* @__PURE__ */ u(x, {
|
|
108
109
|
value: F,
|
|
109
110
|
onValueChange: I,
|
|
110
|
-
children: [/* @__PURE__ */
|
|
111
|
+
children: [/* @__PURE__ */ l(w, {
|
|
111
112
|
"aria-label": "Filter by dataset",
|
|
112
|
-
children: /* @__PURE__ */
|
|
113
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
122
|
+
}), /* @__PURE__ */ l("div", {
|
|
122
123
|
className: "w-full max-w-[14rem]",
|
|
123
|
-
children: /* @__PURE__ */
|
|
124
|
+
children: /* @__PURE__ */ u(x, {
|
|
124
125
|
value: L,
|
|
125
126
|
onValueChange: R,
|
|
126
|
-
children: [/* @__PURE__ */
|
|
127
|
+
children: [/* @__PURE__ */ l(w, {
|
|
127
128
|
"aria-label": "Filter by status",
|
|
128
|
-
children: /* @__PURE__ */
|
|
129
|
-
}), /* @__PURE__ */
|
|
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
|
-
}),
|
|
133
|
+
}), pe.map((e) => /* @__PURE__ */ l(C, {
|
|
133
134
|
value: e,
|
|
134
|
-
children:
|
|
135
|
+
children: o(e)
|
|
135
136
|
}, e))] })]
|
|
136
137
|
})
|
|
137
138
|
})]
|
|
138
139
|
}), (() => {
|
|
139
|
-
if (
|
|
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__ */
|
|
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__ */
|
|
151
|
-
icon:
|
|
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__ */
|
|
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__ */
|
|
160
|
-
$ ? /* @__PURE__ */
|
|
161
|
-
/* @__PURE__ */
|
|
162
|
-
/* @__PURE__ */
|
|
163
|
-
/* @__PURE__ */
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
-
/* @__PURE__ */
|
|
166
|
-
/* @__PURE__ */
|
|
167
|
-
/* @__PURE__ */
|
|
168
|
-
/* @__PURE__ */
|
|
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__ */
|
|
173
|
-
$ ? /* @__PURE__ */
|
|
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__ */
|
|
176
|
+
children: /* @__PURE__ */ l("span", {
|
|
176
177
|
className: "line-clamp-1 text-sm text-text-primary",
|
|
177
|
-
children: V.get(e.datasetId) ?? /* @__PURE__ */
|
|
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__ */
|
|
184
|
+
/* @__PURE__ */ l(E, {
|
|
184
185
|
className: "max-w-[12rem]",
|
|
185
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
191
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
203
|
+
/* @__PURE__ */ l(E, {
|
|
203
204
|
className: "max-w-[14rem]",
|
|
204
|
-
children: e.reason ? /* @__PURE__ */
|
|
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__ */
|
|
208
|
+
}) : /* @__PURE__ */ l("span", {
|
|
208
209
|
className: "text-sm text-text-secondary",
|
|
209
210
|
children: "—"
|
|
210
211
|
})
|
|
211
212
|
}),
|
|
212
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ l(E, {
|
|
213
214
|
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
214
|
-
children:
|
|
215
|
+
children: M(e.grantedAt)
|
|
215
216
|
}),
|
|
216
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ l(E, {
|
|
217
218
|
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
218
|
-
children:
|
|
219
|
+
children: M(e.expiresAt)
|
|
219
220
|
}),
|
|
220
|
-
/* @__PURE__ */
|
|
221
|
+
/* @__PURE__ */ l(E, {
|
|
221
222
|
className: "whitespace-nowrap text-sm text-text-secondary",
|
|
222
|
-
children:
|
|
223
|
+
children: M(e.revokedAt)
|
|
223
224
|
}),
|
|
224
|
-
/* @__PURE__ */
|
|
225
|
+
/* @__PURE__ */ l(E, {
|
|
225
226
|
className: "text-right",
|
|
226
|
-
children:
|
|
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__ */
|
|
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__ */
|
|
238
|
+
}), /* @__PURE__ */ l("ul", {
|
|
238
239
|
className: "space-y-3 md:hidden",
|
|
239
|
-
children: G.map((e) => /* @__PURE__ */
|
|
240
|
+
children: G.map((e) => /* @__PURE__ */ l("li", {
|
|
240
241
|
className: "rounded-card border border-border-default bg-bg-elevated",
|
|
241
|
-
children: /* @__PURE__ */
|
|
242
|
+
children: /* @__PURE__ */ u("div", {
|
|
242
243
|
className: "flex items-start justify-between gap-2 p-4",
|
|
243
|
-
children: [/* @__PURE__ */
|
|
244
|
+
children: [/* @__PURE__ */ u("div", {
|
|
244
245
|
className: "min-w-0 flex-1 space-y-2",
|
|
245
246
|
children: [
|
|
246
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ u("div", {
|
|
247
248
|
className: "flex flex-wrap items-center gap-2",
|
|
248
|
-
children: [$ ? /* @__PURE__ */
|
|
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__ */
|
|
252
|
+
}) : null, /* @__PURE__ */ l(a, { status: e.status })]
|
|
252
253
|
}),
|
|
253
|
-
/* @__PURE__ */
|
|
254
|
+
/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
|
|
254
255
|
className: "text-xs text-text-secondary",
|
|
255
256
|
children: "Grantee (User ID)"
|
|
256
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
261
|
+
e.scopes.length > 0 ? /* @__PURE__ */ l("div", {
|
|
261
262
|
className: "flex flex-wrap gap-1",
|
|
262
|
-
children: e.scopes.map((e) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
276
|
-
/* @__PURE__ */
|
|
277
|
-
e.revokedAt ? /* @__PURE__ */
|
|
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
|
-
}),
|
|
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__ */
|
|
292
|
-
open:
|
|
292
|
+
}), /* @__PURE__ */ l(le, {
|
|
293
|
+
open: _e,
|
|
293
294
|
onOpenChange: (e) => q(e || K ? e : !1),
|
|
294
|
-
children: /* @__PURE__ */
|
|
295
|
+
children: /* @__PURE__ */ u(m, {
|
|
295
296
|
className: "max-h-[85vh] max-w-md overflow-y-auto",
|
|
296
297
|
children: [
|
|
297
|
-
/* @__PURE__ */
|
|
298
|
-
/* @__PURE__ */
|
|
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__ */
|
|
302
|
+
/* @__PURE__ */ u("div", {
|
|
302
303
|
className: "space-y-1.5",
|
|
303
|
-
children: [/* @__PURE__ */
|
|
304
|
+
children: [/* @__PURE__ */ l(b, {
|
|
304
305
|
htmlFor: "grant-dataset",
|
|
305
|
-
children: "Dataset"
|
|
306
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
310
|
+
children: [/* @__PURE__ */ l(w, {
|
|
310
311
|
id: "grant-dataset",
|
|
311
|
-
"aria-label": "Dataset",
|
|
312
|
-
children: /* @__PURE__ */
|
|
313
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
320
|
+
/* @__PURE__ */ u("div", {
|
|
320
321
|
className: "space-y-1.5",
|
|
321
322
|
children: [
|
|
322
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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 (
|
|
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__ */
|
|
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__ */
|
|
346
|
+
/* @__PURE__ */ u("div", {
|
|
346
347
|
className: "space-y-1.5",
|
|
347
|
-
children: [/* @__PURE__ */
|
|
348
|
+
children: [/* @__PURE__ */ l(b, {
|
|
348
349
|
htmlFor: "grant-reason",
|
|
349
|
-
children: "Reason"
|
|
350
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
359
|
+
/* @__PURE__ */ u("div", {
|
|
359
360
|
className: "space-y-1.5",
|
|
360
361
|
children: [
|
|
361
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
385
|
+
children: P("cosmicintersection.common.cancel", "Cancel")
|
|
386
|
+
}), /* @__PURE__ */ u(p, {
|
|
386
387
|
type: "button",
|
|
387
|
-
onClick: () => void
|
|
388
|
+
onClick: () => void ye(),
|
|
388
389
|
disabled: K,
|
|
389
|
-
children: [/* @__PURE__ */ d
|
|
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 {
|
|
398
|
+
export { P as default };
|
|
398
399
|
|
|
399
400
|
//# sourceMappingURL=AccessPage.js.map
|