@stigmer/react 3.32.0 → 3.33.0
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/api-key/ApiKeyListPanel.js +2 -4
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/internal/LastUsedLabel.d.ts +20 -0
- package/internal/LastUsedLabel.d.ts.map +1 -0
- package/internal/LastUsedLabel.js +23 -0
- package/internal/LastUsedLabel.js.map +1 -0
- package/package.json +5 -5
- package/platform-client/PlatformClientDetailPanel.d.ts +13 -3
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +21 -8
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.d.ts +19 -3
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +11 -7
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/copy.d.ts +14 -0
- package/platform-client/copy.d.ts.map +1 -0
- package/platform-client/copy.js +14 -0
- package/platform-client/copy.js.map +1 -0
- package/settings/PlatformClientsSection.d.ts +7 -0
- package/settings/PlatformClientsSection.d.ts.map +1 -1
- package/settings/PlatformClientsSection.js +18 -2
- package/settings/PlatformClientsSection.js.map +1 -1
- package/src/api-key/ApiKeyListPanel.tsx +2 -6
- package/src/internal/LastUsedLabel.tsx +41 -0
- package/src/platform-client/PlatformClientDetailPanel.tsx +41 -7
- package/src/platform-client/PlatformClientListPanel.tsx +55 -20
- package/src/platform-client/__tests__/PlatformClientDetailPanel.test.tsx +99 -6
- package/src/platform-client/__tests__/PlatformClientListPanel.test.tsx +140 -0
- package/src/platform-client/copy.ts +15 -0
- package/src/settings/PlatformClientsSection.tsx +23 -2
- package/src/settings/__tests__/PlatformClientsSection.test.tsx +92 -5
|
@@ -8,7 +8,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js"
|
|
|
8
8
|
import { useApiKeyList } from "./useApiKeyList.js";
|
|
9
9
|
import { useDeleteApiKey } from "./useDeleteApiKey.js";
|
|
10
10
|
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
11
|
-
import {
|
|
11
|
+
import { LastUsedLabel } from "../internal/LastUsedLabel.js";
|
|
12
12
|
/**
|
|
13
13
|
* Displays a list of {@link ApiKey} resources for the authenticated
|
|
14
14
|
* identity with inline delete confirmation.
|
|
@@ -83,9 +83,7 @@ function ApiKeyRow({ apiKey, now, isConfirming, onConfirmDelete, onCancelDelete,
|
|
|
83
83
|
? "No expiry"
|
|
84
84
|
: expiresAt
|
|
85
85
|
? `Expires ${formatShortDate(timestampDate(expiresAt))}`
|
|
86
|
-
: "No expiry" }), _jsx("
|
|
87
|
-
? formatRelativeTime(timestampDate(lastUsedAt), now)
|
|
88
|
-
: "Never used" })] }), _jsx("button", { type: "button", onClick: onConfirmDelete, "aria-label": `Delete ${name}`, className: cn("stg:shrink-0 stg:rounded stg:p-1", "stg:text-muted-foreground stg:hover:text-destructive stg:hover:bg-destructive-subtle", "stg:transition-colors"), children: _jsx(TrashIcon, {}) })] }));
|
|
86
|
+
: "No expiry" }), _jsx(LastUsedLabel, { at: lastUsedAt, now: now })] }), _jsx("button", { type: "button", onClick: onConfirmDelete, "aria-label": `Delete ${name}`, className: cn("stg:shrink-0 stg:rounded stg:p-1", "stg:text-muted-foreground stg:hover:text-destructive stg:hover:bg-destructive-subtle", "stg:transition-colors"), children: _jsx(TrashIcon, {}) })] }));
|
|
89
87
|
}
|
|
90
88
|
// ---------------------------------------------------------------------------
|
|
91
89
|
// Formatting helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiKeyListPanel.js","sourceRoot":"","sources":["../../src/api-key/ApiKeyListPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ApiKeyListPanel.js","sourceRoot":"","sources":["../../src/api-key/ApiKeyListPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
2
|
+
/** Props for {@link LastUsedLabel}. */
|
|
3
|
+
export interface LastUsedLabelProps {
|
|
4
|
+
/** The credential's `status.last_used_at`; absent means it was never used. */
|
|
5
|
+
readonly at: Timestamp | undefined;
|
|
6
|
+
/** Frozen clock for tests; defaults to the wall clock. */
|
|
7
|
+
readonly now?: Date;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* When a credential was last used, said one way on every surface that
|
|
11
|
+
* lists credentials (API keys, platform clients): "Used 5m" in the SDK's
|
|
12
|
+
* compact relative vocabulary, with the exact instant in a tooltip, or
|
|
13
|
+
* "Never used". The label names what the time is, because it sits beside
|
|
14
|
+
* other dates (created, expires) in the same row.
|
|
15
|
+
*
|
|
16
|
+
* The server records a use at most once a minute, so "Used now" means
|
|
17
|
+
* within the last minute or so.
|
|
18
|
+
*/
|
|
19
|
+
export declare function LastUsedLabel({ at, now }: LastUsedLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=LastUsedLabel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LastUsedLabel.d.ts","sourceRoot":"","sources":["../../src/internal/LastUsedLabel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIxD,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAAC;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,kBAAkB,2CAe5D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
4
|
+
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
5
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
|
|
6
|
+
/**
|
|
7
|
+
* When a credential was last used, said one way on every surface that
|
|
8
|
+
* lists credentials (API keys, platform clients): "Used 5m" in the SDK's
|
|
9
|
+
* compact relative vocabulary, with the exact instant in a tooltip, or
|
|
10
|
+
* "Never used". The label names what the time is, because it sits beside
|
|
11
|
+
* other dates (created, expires) in the same row.
|
|
12
|
+
*
|
|
13
|
+
* The server records a use at most once a minute, so "Used now" means
|
|
14
|
+
* within the last minute or so.
|
|
15
|
+
*/
|
|
16
|
+
export function LastUsedLabel({ at, now }) {
|
|
17
|
+
if (at === undefined) {
|
|
18
|
+
return _jsx("span", { children: "Never used" });
|
|
19
|
+
}
|
|
20
|
+
const date = timestampDate(at);
|
|
21
|
+
return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { render: _jsx("time", { dateTime: date.toISOString() }), children: `Used ${formatRelativeTime(date, now)}` }), _jsx(TooltipContent, { side: "top", children: `Last used ${date.toISOString()}` })] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=LastUsedLabel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LastUsedLabel.js","sourceRoot":"","sources":["../../src/internal/LastUsedLabel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUvE;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,EAAsB;IAC3D,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,wCAAuB,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,CACL,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,MAAM,EAAE,eAAM,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,GAAI,YAC3D,QAAQ,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GACzB,EACjB,KAAC,cAAc,IAAC,IAAI,EAAC,KAAK,YACvB,aAAa,IAAI,CAAC,WAAW,EAAE,EAAE,GACnB,IACT,CACX,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stigmer/react",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.33.0",
|
|
4
4
|
"description": "React provider and client hook for the Stigmer platform SDK",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@bufbuild/protovalidate": "^1.1.1",
|
|
39
39
|
"@dagrejs/dagre": "^1.1.4",
|
|
40
|
-
"@stigmer/plugin-package": "3.
|
|
41
|
-
"@stigmer/theme": "3.
|
|
40
|
+
"@stigmer/plugin-package": "3.33.0",
|
|
41
|
+
"@stigmer/theme": "3.33.0",
|
|
42
42
|
"diff": "^8.0.3",
|
|
43
43
|
"fflate": "^0.8.2",
|
|
44
44
|
"hast-util-to-jsx-runtime": "^2.3.6",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
"@codemirror/state": "^6.0.0",
|
|
62
62
|
"@codemirror/view": "^6.0.0",
|
|
63
63
|
"@lezer/highlight": "^1.0.0",
|
|
64
|
-
"@stigmer/protos": "3.
|
|
65
|
-
"@stigmer/sdk": "3.
|
|
64
|
+
"@stigmer/protos": "3.33.0",
|
|
65
|
+
"@stigmer/sdk": "3.33.0",
|
|
66
66
|
"@tanstack/react-table": "^8.20.0",
|
|
67
67
|
"@xyflow/react": "^12.0.0",
|
|
68
68
|
"elkjs": "^0.9.0",
|
|
@@ -17,13 +17,23 @@ export interface PlatformClientDetailPanelProps {
|
|
|
17
17
|
readonly onBack?: () => void;
|
|
18
18
|
/** Additional CSS class names for the root container. */
|
|
19
19
|
readonly className?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Reference instant for the "last used" relative stamp. Defaults to
|
|
22
|
+
* the live clock. **Deterministic hosts (documentation embeds, video
|
|
23
|
+
* export) must pass a frozen instant** — otherwise a depicted client's
|
|
24
|
+
* "2h ago" drifts with every replay.
|
|
25
|
+
*/
|
|
26
|
+
readonly now?: Date;
|
|
20
27
|
}
|
|
21
28
|
/**
|
|
22
29
|
* View and edit panel for an existing platform client.
|
|
23
30
|
*
|
|
24
31
|
* In **view mode**, displays all configuration fields in a structured
|
|
25
|
-
* label/value layout with
|
|
26
|
-
* actions
|
|
32
|
+
* label/value layout, with when the client last minted a token, and
|
|
33
|
+
* "Edit", "Rotate Secret", and "Delete" actions offered only to a caller
|
|
34
|
+
* the server allows: `can_edit` for Edit and Rotate, `can_delete` for
|
|
35
|
+
* Delete. The organization's admins may view a client they did not
|
|
36
|
+
* create, and see no actions on it.
|
|
27
37
|
*
|
|
28
38
|
* In **edit mode**, mutable spec fields become editable: JIT
|
|
29
39
|
* provisioning toggles, expiry, auto-grant role, and allowed
|
|
@@ -47,5 +57,5 @@ export interface PlatformClientDetailPanelProps {
|
|
|
47
57
|
* />
|
|
48
58
|
* ```
|
|
49
59
|
*/
|
|
50
|
-
export declare function PlatformClientDetailPanel({ platformClient, onUpdated, onSecretRotated, onDeleted, onBack, className, }: PlatformClientDetailPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
export declare function PlatformClientDetailPanel({ platformClient, onUpdated, onSecretRotated, onDeleted, onBack, className, now, }: PlatformClientDetailPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
51
61
|
//# sourceMappingURL=PlatformClientDetailPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformClientDetailPanel.d.ts","sourceRoot":"","sources":["../../src/platform-client/PlatformClientDetailPanel.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAC9F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"PlatformClientDetailPanel.d.ts","sourceRoot":"","sources":["../../src/platform-client/PlatformClientDetailPanel.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAC9F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AAS3G,mDAAmD;AACnD,MAAM,WAAW,8BAA8B;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,QAAQ,EAAE,4BAA4B,KACnC,IAAI,CAAC;IACV,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,SAAS,EACT,eAAe,EACf,SAAS,EACT,MAAM,EACN,SAAS,EACT,GAAG,GACJ,EAAE,8BAA8B,2CAyjBhC"}
|
|
@@ -9,14 +9,19 @@ import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
|
9
9
|
import { useUpdatePlatformClient } from "./useUpdatePlatformClient.js";
|
|
10
10
|
import { useRotatePlatformClientSecret } from "./useRotatePlatformClientSecret.js";
|
|
11
11
|
import { useDeletePlatformClient } from "./useDeletePlatformClient.js";
|
|
12
|
+
import { formatRelativeTime } from "../activity/format-relative-time.js";
|
|
13
|
+
import { useCheckPermission } from "../iam-policy/useCheckPermission.js";
|
|
12
14
|
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
13
15
|
import { isPlatformClientExpired } from "./expiry.js";
|
|
14
16
|
/**
|
|
15
17
|
* View and edit panel for an existing platform client.
|
|
16
18
|
*
|
|
17
19
|
* In **view mode**, displays all configuration fields in a structured
|
|
18
|
-
* label/value layout with
|
|
19
|
-
* actions
|
|
20
|
+
* label/value layout, with when the client last minted a token, and
|
|
21
|
+
* "Edit", "Rotate Secret", and "Delete" actions offered only to a caller
|
|
22
|
+
* the server allows: `can_edit` for Edit and Rotate, `can_delete` for
|
|
23
|
+
* Delete. The organization's admins may view a client they did not
|
|
24
|
+
* create, and see no actions on it.
|
|
20
25
|
*
|
|
21
26
|
* In **edit mode**, mutable spec fields become editable: JIT
|
|
22
27
|
* provisioning toggles, expiry, auto-grant role, and allowed
|
|
@@ -40,10 +45,15 @@ import { isPlatformClientExpired } from "./expiry.js";
|
|
|
40
45
|
* />
|
|
41
46
|
* ```
|
|
42
47
|
*/
|
|
43
|
-
export function PlatformClientDetailPanel({ platformClient, onUpdated, onSecretRotated, onDeleted, onBack, className, }) {
|
|
48
|
+
export function PlatformClientDetailPanel({ platformClient, onUpdated, onSecretRotated, onDeleted, onBack, className, now, }) {
|
|
44
49
|
const baseId = useId();
|
|
45
50
|
const spec = platformClient.spec;
|
|
46
51
|
const meta = platformClient.metadata;
|
|
52
|
+
const resource = meta?.id ? { kind: "platform_client", id: meta.id } : null;
|
|
53
|
+
const editCheck = useCheckPermission(resource, "can_edit");
|
|
54
|
+
const deleteCheck = useCheckPermission(resource, "can_delete");
|
|
55
|
+
const canEdit = !editCheck.isLoading && editCheck.allowed;
|
|
56
|
+
const canDelete = !deleteCheck.isLoading && deleteCheck.allowed;
|
|
47
57
|
const { update, isUpdating, error: updateError, clearError: clearUpdateError } = useUpdatePlatformClient();
|
|
48
58
|
const { rotateSecret, isRotating, error: rotateError, clearError: clearRotateError } = useRotatePlatformClientSecret();
|
|
49
59
|
const { deletePlatformClient, isDeleting, error: deleteError } = useDeletePlatformClient();
|
|
@@ -173,21 +183,24 @@ export function PlatformClientDetailPanel({ platformClient, onUpdated, onSecretR
|
|
|
173
183
|
}, [meta?.id, deletePlatformClient, onDeleted]);
|
|
174
184
|
const createdAt = platformClient.status?.audit?.specAudit?.createdAt;
|
|
175
185
|
const updatedAt = platformClient.status?.audit?.specAudit?.updatedAt;
|
|
176
|
-
|
|
186
|
+
const lastUsedAt = platformClient.status?.lastUsedAt;
|
|
187
|
+
return (_jsxs("div", { className: cn("stg:space-y-4", className), children: [_jsxs("div", { className: "stg:flex stg:items-start stg:justify-between stg:gap-3", children: [_jsxs("div", { className: "stg:min-w-0", children: [onBack && (_jsxs("button", { type: "button", onClick: onBack, className: "stg:text-muted-foreground stg:hover:text-foreground stg:mb-1 stg:flex stg:items-center stg:gap-1 stg:text-xs stg:transition-colors", children: [_jsx(ArrowLeftIcon, {}), "Back to list"] })), _jsx("h3", { className: "stg:text-foreground stg:truncate stg:text-sm stg:font-semibold", children: meta?.name ?? "Platform Client" }), _jsxs("div", { className: "stg:flex stg:items-center stg:gap-2", children: [meta?.slug && (_jsx("span", { className: "stg:text-muted-foreground stg:font-mono stg:text-xs", children: meta.slug })), spec?.autoProvisionAccounts && (_jsx("span", { className: "stg:inline-flex stg:items-center stg:rounded-full stg:border stg:border-primary/30 stg:bg-primary-subtle stg:px-2 stg:py-0.5 stg:text-[0.65rem] stg:font-medium stg:text-primary", children: "JIT" }))] })] }), mode === "view" && canEdit && (_jsx("button", { type: "button", onClick: enterEdit, className: cn("stg:shrink-0 stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs stg:font-medium", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:transition-colors"), children: "Edit" }))] }), mode === "view" ? (_jsx(ViewMode, { spec: spec, createdAt: createdAt, updatedAt: updatedAt, lastUsedAt: lastUsedAt, now: now })) : (_jsxs("form", { onSubmit: handleSave, className: "stg:space-y-3", children: [_jsxs("div", { className: "stg:rounded-md stg:border stg:border-border-muted stg:bg-muted-faint stg:px-3 stg:py-2 stg:space-y-1", children: [_jsx("p", { className: "stg:text-[0.65rem] stg:font-medium stg:text-muted-foreground", children: "Client ID" }), _jsx("p", { className: "stg:font-mono stg:text-xs stg:text-foreground", children: spec?.clientId ?? "—" })] }), _jsxs("fieldset", { className: cn(UNSTYLED_FIELDSET, "stg:space-y-2"), disabled: isUpdating, children: [_jsx("legend", { className: "stg:text-xs stg:font-medium stg:text-foreground", children: "Expiry" }), _jsx(ToggleSwitch, { checked: neverExpires, onChange: setNeverExpires, label: "Never expires", disabled: isUpdating }), !neverExpires && (_jsxs("div", { className: "stg:space-y-1", children: [_jsx("label", { htmlFor: `${baseId}-expires-at`, className: "stg:text-xs stg:font-medium stg:text-foreground", children: "Expires at" }), _jsx("input", { id: `${baseId}-expires-at`, type: "datetime-local", value: expiresAt, onChange: (e) => setExpiresAt(e.target.value), disabled: isUpdating, className: cn("stg:w-full stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50") })] }))] }), _jsxs("fieldset", { className: cn(UNSTYLED_FIELDSET, "stg:space-y-2.5"), disabled: isUpdating, children: [_jsx("hr", { className: "stg:border-border-muted" }), _jsx("legend", { className: "stg:text-xs stg:font-medium stg:text-foreground", children: "JIT provisioning" }), _jsx(ToggleSwitch, { checked: autoProvision, onChange: handleAutoProvisionChange, label: "Auto-provision accounts", hint: "Create a Stigmer identity account automatically on first token mint", disabled: isUpdating }), _jsx(ToggleSwitch, { checked: autoGrant, onChange: handleAutoGrantChange, label: "Auto-grant on organization", hint: "Grant a role on the owning organization when an account is provisioned", disabled: isUpdating || !autoProvision }), autoGrant && (_jsxs("div", { className: "stg:space-y-1", children: [_jsx("label", { htmlFor: `${baseId}-grant-role`, className: "stg:text-xs stg:font-medium stg:text-foreground", children: "Auto-grant role" }), _jsx("select", { id: `${baseId}-grant-role`, value: String(autoGrantRole), onChange: (e) => setAutoGrantRole(Number(e.target.value)), disabled: isUpdating, className: cn("stg:w-full stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: JIT_ROLE_OPTIONS.map((opt) => (_jsx("option", { value: opt.value, children: opt.label }, opt.value))) })] }))] }), _jsxs("fieldset", { className: cn(UNSTYLED_FIELDSET, "stg:space-y-2"), disabled: isUpdating, children: [_jsx("hr", { className: "stg:border-border-muted" }), _jsx("legend", { className: "stg:text-xs stg:font-medium stg:text-foreground", children: "Allowed origins" }), _jsx("p", { className: "stg:text-[0.65rem] stg:text-muted-foreground", children: "Browser origins permitted to use tokens minted by this client. Leave empty to allow all origins." }), _jsxs("div", { className: "stg:flex stg:items-center stg:gap-2", children: [_jsx("input", { type: "text", value: originInput, onChange: (e) => setOriginInput(e.target.value), onKeyDown: handleOriginKeyDown, onBlur: () => {
|
|
177
188
|
if (originInput.trim())
|
|
178
189
|
addOrigin();
|
|
179
|
-
}, placeholder: "https://example.com", disabled: isUpdating, className: cn("stg:min-w-0 stg:flex-1 stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-foreground", "stg:placeholder:text-muted-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50") }), _jsx("button", { type: "button", onClick: addOrigin, disabled: isUpdating || !originInput.trim(), className: cn("stg:shrink-0 stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs stg:font-medium", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50", "stg:transition-colors"), children: "Add" })] }), origins.length > 0 && (_jsx("div", { className: "stg:flex stg:flex-wrap stg:gap-1.5", children: origins.map((origin) => (_jsxs("span", { className: "stg:inline-flex stg:items-center stg:gap-1 stg:rounded-full stg:border stg:border-border-muted stg:bg-muted-subtle stg:px-2 stg:py-0.5 stg:text-[0.65rem] stg:font-mono stg:text-foreground", children: [origin, _jsx("button", { type: "button", onClick: () => removeOrigin(origin), disabled: isUpdating, "aria-label": `Remove ${origin}`, className: "stg:text-muted-foreground stg:hover:text-destructive stg:transition-colors", children: _jsx(XIcon, {}) })] }, origin))) }))] }), updateError && (_jsx("p", { className: "stg:text-destructive stg:text-[0.65rem]", role: "alert", children: getUserMessage(updateError) })), _jsxs("div", { className: "stg:flex stg:items-center stg:gap-2 stg:pt-1", children: [_jsxs("button", { type: "submit", disabled: isUpdating, className: cn("stg:inline-flex stg:items-center stg:gap-1.5 stg:rounded-md stg:px-3 stg:py-1.5 stg:text-xs stg:font-medium", "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-40"), children: [isUpdating && _jsx(SpinnerIcon, { size: 12 }), "Save changes"] }), _jsx("button", { type: "button", onClick: cancelEdit, disabled: isUpdating, className: cn("stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] })), mode === "view" && (_jsxs("div", { className: "stg:space-y-2 stg:pt-2", children: [_jsx("hr", { className: "stg:border-border-muted" }), confirmingRotate ? (_jsxs("div", { className: "stg:flex stg:items-center stg:justify-between stg:rounded-md stg:border stg:border-warning/30 stg:bg-warning/5 stg:px-3 stg:py-2", children: [_jsxs("p", { className: "stg:text-xs stg:text-foreground", children: ["Rotate secret? The current secret will be", _jsx("span", { className: "stg:font-medium", children: " permanently invalidated" }), ".", expired && (_jsx("span", { className: "stg:mt-1 stg:block stg:text-destructive", children: "This client has expired. Rotating does not extend it; edit its expiry instead." }))] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1.5", children: [_jsxs("button", { type: "button", onClick: handleRotateSecret, disabled: isBusy, className: cn("stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium", "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isRotating && _jsx(SpinnerIcon, { size: 12 }), "Rotate"] }), _jsx("button", { type: "button", onClick: () => {
|
|
190
|
+
}, placeholder: "https://example.com", disabled: isUpdating, className: cn("stg:min-w-0 stg:flex-1 stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-foreground", "stg:placeholder:text-muted-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50") }), _jsx("button", { type: "button", onClick: addOrigin, disabled: isUpdating || !originInput.trim(), className: cn("stg:shrink-0 stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs stg:font-medium", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50", "stg:transition-colors"), children: "Add" })] }), origins.length > 0 && (_jsx("div", { className: "stg:flex stg:flex-wrap stg:gap-1.5", children: origins.map((origin) => (_jsxs("span", { className: "stg:inline-flex stg:items-center stg:gap-1 stg:rounded-full stg:border stg:border-border-muted stg:bg-muted-subtle stg:px-2 stg:py-0.5 stg:text-[0.65rem] stg:font-mono stg:text-foreground", children: [origin, _jsx("button", { type: "button", onClick: () => removeOrigin(origin), disabled: isUpdating, "aria-label": `Remove ${origin}`, className: "stg:text-muted-foreground stg:hover:text-destructive stg:transition-colors", children: _jsx(XIcon, {}) })] }, origin))) }))] }), updateError && (_jsx("p", { className: "stg:text-destructive stg:text-[0.65rem]", role: "alert", children: getUserMessage(updateError) })), _jsxs("div", { className: "stg:flex stg:items-center stg:gap-2 stg:pt-1", children: [_jsxs("button", { type: "submit", disabled: isUpdating, className: cn("stg:inline-flex stg:items-center stg:gap-1.5 stg:rounded-md stg:px-3 stg:py-1.5 stg:text-xs stg:font-medium", "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-40"), children: [isUpdating && _jsx(SpinnerIcon, { size: 12 }), "Save changes"] }), _jsx("button", { type: "button", onClick: cancelEdit, disabled: isUpdating, className: cn("stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] })), mode === "view" && (canEdit || canDelete) && (_jsxs("div", { className: "stg:space-y-2 stg:pt-2", children: [_jsx("hr", { className: "stg:border-border-muted" }), !canEdit ? null : confirmingRotate ? (_jsxs("div", { className: "stg:flex stg:items-center stg:justify-between stg:rounded-md stg:border stg:border-warning/30 stg:bg-warning/5 stg:px-3 stg:py-2", children: [_jsxs("p", { className: "stg:text-xs stg:text-foreground", children: ["Rotate secret? The current secret will be", _jsx("span", { className: "stg:font-medium", children: " permanently invalidated" }), ".", expired && (_jsx("span", { className: "stg:mt-1 stg:block stg:text-destructive", children: "This client has expired. Rotating does not extend it; edit its expiry instead." }))] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1.5", children: [_jsxs("button", { type: "button", onClick: handleRotateSecret, disabled: isBusy, className: cn("stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium", "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isRotating && _jsx(SpinnerIcon, { size: 12 }), "Rotate"] }), _jsx("button", { type: "button", onClick: () => {
|
|
180
191
|
setConfirmingRotate(false);
|
|
181
192
|
clearRotateError();
|
|
182
|
-
}, disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] })) : (_jsx("button", { type: "button", onClick: () => setConfirmingRotate(true), disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs stg:font-medium", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50", "stg:transition-colors"), children: "Rotate secret" })), rotateError && (_jsx("p", { className: "stg:text-destructive stg:text-[0.65rem]", role: "alert", children: getUserMessage(rotateError) })), confirmingDelete ? (_jsxs("div", { className: "stg:flex stg:items-center stg:justify-between stg:rounded-md stg:border stg:border-destructive/30 stg:bg-destructive-subtle stg:px-3 stg:py-2", children: [_jsxs("div", { className: "stg:min-w-0 stg:flex-1", children: [_jsxs("p", { className: "stg:text-xs stg:text-foreground", children: ["Delete", " ", _jsx("span", { className: "stg:font-medium", children: meta?.name }), "? This action is permanent."] }), deleteError && (_jsx("p", { className: "stg:mt-0.5 stg:text-[0.65rem] stg:text-destructive", children: getUserMessage(deleteError) }))] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1.5", children: [_jsxs("button", { type: "button", onClick: handleDelete, disabled: isBusy, className: cn("stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium", "stg:bg-destructive stg:text-destructive-foreground stg:hover:bg-destructive-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isDeleting && _jsx(SpinnerIcon, { size: 12 }), "Delete"] }), _jsx("button", { type: "button", onClick: () => setConfirmingDelete(false), disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] })) : (_jsx("button", { type: "button", onClick: () => setConfirmingDelete(true), disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs stg:font-medium", "stg:text-destructive stg:hover:text-destructive-foreground stg:hover:bg-destructive-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50", "stg:transition-colors"), children: "Delete platform client" }))] }))] }));
|
|
193
|
+
}, disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] })) : (_jsx("button", { type: "button", onClick: () => setConfirmingRotate(true), disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs stg:font-medium", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50", "stg:transition-colors"), children: "Rotate secret" })), rotateError && (_jsx("p", { className: "stg:text-destructive stg:text-[0.65rem]", role: "alert", children: getUserMessage(rotateError) })), !canDelete ? null : confirmingDelete ? (_jsxs("div", { className: "stg:flex stg:items-center stg:justify-between stg:rounded-md stg:border stg:border-destructive/30 stg:bg-destructive-subtle stg:px-3 stg:py-2", children: [_jsxs("div", { className: "stg:min-w-0 stg:flex-1", children: [_jsxs("p", { className: "stg:text-xs stg:text-foreground", children: ["Delete", " ", _jsx("span", { className: "stg:font-medium", children: meta?.name }), "? This action is permanent."] }), deleteError && (_jsx("p", { className: "stg:mt-0.5 stg:text-[0.65rem] stg:text-destructive", children: getUserMessage(deleteError) }))] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1.5", children: [_jsxs("button", { type: "button", onClick: handleDelete, disabled: isBusy, className: cn("stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium", "stg:bg-destructive stg:text-destructive-foreground stg:hover:bg-destructive-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isDeleting && _jsx(SpinnerIcon, { size: 12 }), "Delete"] }), _jsx("button", { type: "button", onClick: () => setConfirmingDelete(false), disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] })) : (_jsx("button", { type: "button", onClick: () => setConfirmingDelete(true), disabled: isBusy, className: cn("stg:rounded-md stg:px-2.5 stg:py-1.5 stg:text-xs stg:font-medium", "stg:text-destructive stg:hover:text-destructive-foreground stg:hover:bg-destructive-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50", "stg:transition-colors"), children: "Delete platform client" }))] }))] }));
|
|
183
194
|
}
|
|
184
195
|
// ---------------------------------------------------------------------------
|
|
185
196
|
// View mode
|
|
186
197
|
// ---------------------------------------------------------------------------
|
|
187
|
-
function ViewMode({ spec, createdAt, updatedAt, }) {
|
|
198
|
+
function ViewMode({ spec, createdAt, updatedAt, lastUsedAt, now, }) {
|
|
188
199
|
return (_jsxs("dl", { className: "stg:space-y-2.5", children: [_jsx(Field, { label: "Client ID", value: spec?.clientId, mono: true }), _jsx(Field, { label: "Secret fingerprint", value: spec?.secretFingerprint
|
|
189
200
|
? `••••${spec.secretFingerprint.slice(-4)}`
|
|
190
|
-
: undefined, mono: true }), spec?.neverExpires ? (_jsx(Field, { label: "Expiry", value: "Never expires" })) : spec?.expiresAt ? (isPlatformClientExpired(spec) ? (_jsx(Field, { label: "Expired", value: formatDate(timestampDate(spec.expiresAt)), tone: "destructive" })) : (_jsx(Field, { label: "Expires", value: formatDate(timestampDate(spec.expiresAt)) }))) : null, _jsx("hr", { className: "stg:border-border-muted" }), _jsx(Field, { label: "Auto-provision accounts", value: spec?.autoProvisionAccounts ? "Enabled" : "Disabled" }), _jsx(Field, { label: "Auto-grant on organization", value: spec?.autoGrantOnOrg ? "Enabled" : "Disabled" }), spec?.autoGrantOnOrg && (_jsx(Field, { label: "Auto-grant role", value: formatIamRole(spec.autoGrantRole) })), (spec?.allowedOrigins.length ?? 0) > 0 && (_jsxs(_Fragment, { children: [_jsx("hr", { className: "stg:border-border-muted" }), _jsxs("div", { children: [_jsx("dt", { className: "stg:text-muted-foreground stg:text-[0.65rem] stg:font-medium", children: "Allowed origins" }), _jsx("dd", { className: "stg:mt-0.5 stg:flex stg:flex-wrap stg:gap-1.5", children: spec.allowedOrigins.map((origin) => (_jsx("span", { className: "stg:inline-block stg:rounded-full stg:border stg:border-border-muted stg:bg-muted-subtle stg:px-2 stg:py-0.5 stg:text-[0.65rem] stg:font-mono stg:text-foreground", children: origin }, origin))) })] })] })), _jsxs("div", { className: "stg:flex stg:gap-6", children: [createdAt && (_jsx(Field, { label: "Created", value: formatDate(timestampDate(createdAt)) })), updatedAt && (_jsx(Field, { label: "Updated", value: formatDate(timestampDate(updatedAt)) }))
|
|
201
|
+
: undefined, mono: true }), spec?.neverExpires ? (_jsx(Field, { label: "Expiry", value: "Never expires" })) : spec?.expiresAt ? (isPlatformClientExpired(spec) ? (_jsx(Field, { label: "Expired", value: formatDate(timestampDate(spec.expiresAt)), tone: "destructive" })) : (_jsx(Field, { label: "Expires", value: formatDate(timestampDate(spec.expiresAt)) }))) : null, _jsx("hr", { className: "stg:border-border-muted" }), _jsx(Field, { label: "Auto-provision accounts", value: spec?.autoProvisionAccounts ? "Enabled" : "Disabled" }), _jsx(Field, { label: "Auto-grant on organization", value: spec?.autoGrantOnOrg ? "Enabled" : "Disabled" }), spec?.autoGrantOnOrg && (_jsx(Field, { label: "Auto-grant role", value: formatIamRole(spec.autoGrantRole) })), (spec?.allowedOrigins.length ?? 0) > 0 && (_jsxs(_Fragment, { children: [_jsx("hr", { className: "stg:border-border-muted" }), _jsxs("div", { children: [_jsx("dt", { className: "stg:text-muted-foreground stg:text-[0.65rem] stg:font-medium", children: "Allowed origins" }), _jsx("dd", { className: "stg:mt-0.5 stg:flex stg:flex-wrap stg:gap-1.5", children: spec.allowedOrigins.map((origin) => (_jsx("span", { className: "stg:inline-block stg:rounded-full stg:border stg:border-border-muted stg:bg-muted-subtle stg:px-2 stg:py-0.5 stg:text-[0.65rem] stg:font-mono stg:text-foreground", children: origin }, origin))) })] })] })), _jsxs("div", { className: "stg:flex stg:gap-6", children: [createdAt && (_jsx(Field, { label: "Created", value: formatDate(timestampDate(createdAt)) })), updatedAt && (_jsx(Field, { label: "Updated", value: formatDate(timestampDate(updatedAt)) })), _jsx(Field, { label: "Last used", value: lastUsedAt
|
|
202
|
+
? formatRelativeTime(timestampDate(lastUsedAt), now)
|
|
203
|
+
: "Never" })] })] }));
|
|
191
204
|
}
|
|
192
205
|
// ---------------------------------------------------------------------------
|
|
193
206
|
// Shared primitives
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformClientDetailPanel.js","sourceRoot":"","sources":["../../src/platform-client/PlatformClientDetailPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlatformClientDetailPanel.js","sourceRoot":"","sources":["../../src/platform-client/PlatformClientDetailPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
1
2
|
import type { PlatformClient } from "@stigmer/protos/ai/stigmer/iam/platformclient/v1/api_pb";
|
|
2
3
|
/** Props for {@link PlatformClientListPanel}. */
|
|
3
4
|
export interface PlatformClientListPanelProps {
|
|
@@ -7,16 +8,31 @@ export interface PlatformClientListPanelProps {
|
|
|
7
8
|
readonly onEdit?: (pc: PlatformClient) => void;
|
|
8
9
|
/** Expose the refetch function so parents can trigger a list refresh. */
|
|
9
10
|
readonly onRefetchRef?: (refetch: () => void) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Shown when the list is empty. Defaults to "No platform clients
|
|
13
|
+
* configured." The list holds only the clients the caller may view (each
|
|
14
|
+
* client's creator and the organization's admins), so a host that knows
|
|
15
|
+
* the caller may not manage platform clients should say who does instead.
|
|
16
|
+
*/
|
|
17
|
+
readonly emptyState?: ReactNode;
|
|
10
18
|
/** Additional CSS class names for the root container. */
|
|
11
19
|
readonly className?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Reference instant for the "last used" relative stamp. Defaults to
|
|
22
|
+
* the live clock. **Deterministic hosts (documentation embeds, video
|
|
23
|
+
* export) must pass a frozen instant** — otherwise a depicted client's
|
|
24
|
+
* "2h ago" drifts with every replay.
|
|
25
|
+
*/
|
|
26
|
+
readonly now?: Date;
|
|
12
27
|
}
|
|
13
28
|
/**
|
|
14
29
|
* Displays a list of {@link PlatformClient} resources for an
|
|
15
30
|
* organization with inline delete confirmation.
|
|
16
31
|
*
|
|
17
32
|
* Each row shows the client name, `client_id` (monospace), secret
|
|
18
|
-
* fingerprint, expiry status,
|
|
19
|
-
*
|
|
33
|
+
* fingerprint, expiry status, creation date and when the client last
|
|
34
|
+
* minted a token. Edit and delete are offered only to a caller the
|
|
35
|
+
* server allows (`can_edit`, `can_delete`); delete confirms inline.
|
|
20
36
|
*
|
|
21
37
|
* Platform clients are admin-level resources with small cardinality
|
|
22
38
|
* (typically 1–5 per org), so the list is rendered without pagination.
|
|
@@ -37,5 +53,5 @@ export interface PlatformClientListPanelProps {
|
|
|
37
53
|
* />
|
|
38
54
|
* ```
|
|
39
55
|
*/
|
|
40
|
-
export declare function PlatformClientListPanel({ org, onEdit, onRefetchRef, className, }: PlatformClientListPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
export declare function PlatformClientListPanel({ org, onEdit, onRefetchRef, emptyState, className, now, }: PlatformClientListPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
41
57
|
//# sourceMappingURL=PlatformClientListPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformClientListPanel.d.ts","sourceRoot":"","sources":["../../src/platform-client/PlatformClientListPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlatformClientListPanel.d.ts","sourceRoot":"","sources":["../../src/platform-client/PlatformClientListPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAS9F,iDAAiD;AACjD,MAAM,WAAW,4BAA4B;IAC3C,iEAAiE;IACjE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACtD;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,GAAG,EACH,MAAM,EACN,YAAY,EACZ,UAA8C,EAC9C,SAAS,EACT,GAAG,GACJ,EAAE,4BAA4B,2CAyE9B"}
|
|
@@ -4,6 +4,8 @@ import { useCallback, useState } from "react";
|
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import { getUserMessage } from "@stigmer/sdk";
|
|
6
6
|
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
7
|
+
import { PermissionGate } from "../iam-policy/PermissionGate.js";
|
|
8
|
+
import { LastUsedLabel } from "../internal/LastUsedLabel.js";
|
|
7
9
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
8
10
|
import { usePlatformClientList } from "./usePlatformClientList.js";
|
|
9
11
|
import { useDeletePlatformClient } from "./useDeletePlatformClient.js";
|
|
@@ -14,8 +16,9 @@ import { isPlatformClientExpired } from "./expiry.js";
|
|
|
14
16
|
* organization with inline delete confirmation.
|
|
15
17
|
*
|
|
16
18
|
* Each row shows the client name, `client_id` (monospace), secret
|
|
17
|
-
* fingerprint, expiry status,
|
|
18
|
-
*
|
|
19
|
+
* fingerprint, expiry status, creation date and when the client last
|
|
20
|
+
* minted a token. Edit and delete are offered only to a caller the
|
|
21
|
+
* server allows (`can_edit`, `can_delete`); delete confirms inline.
|
|
19
22
|
*
|
|
20
23
|
* Platform clients are admin-level resources with small cardinality
|
|
21
24
|
* (typically 1–5 per org), so the list is rendered without pagination.
|
|
@@ -36,7 +39,7 @@ import { isPlatformClientExpired } from "./expiry.js";
|
|
|
36
39
|
* />
|
|
37
40
|
* ```
|
|
38
41
|
*/
|
|
39
|
-
export function PlatformClientListPanel({ org, onEdit, onRefetchRef, className, }) {
|
|
42
|
+
export function PlatformClientListPanel({ org, onEdit, onRefetchRef, emptyState = "No platform clients configured.", className, now, }) {
|
|
40
43
|
const { platformClients, isLoading, error, refetch } = usePlatformClientList(org);
|
|
41
44
|
const [confirmingId, setConfirmingId] = useState(null);
|
|
42
45
|
if (onRefetchRef) {
|
|
@@ -49,11 +52,11 @@ export function PlatformClientListPanel({ org, onEdit, onRefetchRef, className,
|
|
|
49
52
|
return (_jsx("p", { className: cn("stg:text-destructive stg:text-xs", className), role: "alert", children: getUserMessage(error) }));
|
|
50
53
|
}
|
|
51
54
|
if (platformClients.length === 0) {
|
|
52
|
-
return (_jsx("p", { className: cn("stg:text-muted-foreground stg:py-4 stg:text-center stg:text-xs", className), children:
|
|
55
|
+
return (_jsx("p", { className: cn("stg:text-muted-foreground stg:py-4 stg:text-center stg:text-xs", className), children: emptyState }));
|
|
53
56
|
}
|
|
54
57
|
return (_jsx("div", { className: cn("stg:space-y-2", className), role: "list", "aria-label": "Platform clients", children: platformClients.map((pc) => {
|
|
55
58
|
const id = pc.metadata?.id ?? "";
|
|
56
|
-
return (_jsx(PlatformClientRow, { platformClient: pc, isConfirming: confirmingId === id, onEdit: onEdit ? () => onEdit(pc) : undefined, onConfirmDelete: () => setConfirmingId(id), onCancelDelete: () => setConfirmingId(null), onDeleted: () => {
|
|
59
|
+
return (_jsx(PlatformClientRow, { platformClient: pc, isConfirming: confirmingId === id, now: now, onEdit: onEdit ? () => onEdit(pc) : undefined, onConfirmDelete: () => setConfirmingId(id), onCancelDelete: () => setConfirmingId(null), onDeleted: () => {
|
|
57
60
|
setConfirmingId(null);
|
|
58
61
|
refetch();
|
|
59
62
|
} }, id));
|
|
@@ -62,7 +65,7 @@ export function PlatformClientListPanel({ org, onEdit, onRefetchRef, className,
|
|
|
62
65
|
// ---------------------------------------------------------------------------
|
|
63
66
|
// PlatformClientRow (internal)
|
|
64
67
|
// ---------------------------------------------------------------------------
|
|
65
|
-
function PlatformClientRow({ platformClient, isConfirming, onEdit, onConfirmDelete, onCancelDelete, onDeleted, }) {
|
|
68
|
+
function PlatformClientRow({ platformClient, isConfirming, now, onEdit, onConfirmDelete, onCancelDelete, onDeleted, }) {
|
|
66
69
|
const { deletePlatformClient, isDeleting, error } = useDeletePlatformClient();
|
|
67
70
|
const id = platformClient.metadata?.id ?? "";
|
|
68
71
|
const spec = platformClient.spec;
|
|
@@ -70,6 +73,7 @@ function PlatformClientRow({ platformClient, isConfirming, onEdit, onConfirmDele
|
|
|
70
73
|
const clientId = spec?.clientId ?? "";
|
|
71
74
|
const fingerprint = spec?.secretFingerprint ?? "";
|
|
72
75
|
const createdAt = platformClient.status?.audit?.specAudit?.createdAt;
|
|
76
|
+
const lastUsedAt = platformClient.status?.lastUsedAt;
|
|
73
77
|
const handleDelete = useCallback(async () => {
|
|
74
78
|
try {
|
|
75
79
|
await deletePlatformClient({ resourceId: id });
|
|
@@ -82,7 +86,7 @@ function PlatformClientRow({ platformClient, isConfirming, onEdit, onConfirmDele
|
|
|
82
86
|
if (isConfirming) {
|
|
83
87
|
return (_jsxs("div", { role: "listitem", className: "stg:flex stg:items-center stg:justify-between stg:rounded-lg stg:border stg:border-destructive/30 stg:bg-destructive-subtle stg:px-3 stg:py-2.5", children: [_jsxs("div", { className: "stg:min-w-0 stg:flex-1", children: [_jsxs("p", { className: "stg:text-xs stg:text-foreground", children: ["Delete ", _jsx("span", { className: "stg:font-medium", children: name }), "?", clientId && (_jsxs("span", { className: "stg:ml-1 stg:text-muted-foreground", children: ["This will invalidate client ID", " ", _jsx("code", { className: "stg:font-mono", children: clientId }), "."] }))] }), error && (_jsx("p", { className: "stg:mt-0.5 stg:text-[0.65rem] stg:text-destructive", children: getUserMessage(error) }))] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1.5", children: [_jsxs("button", { type: "button", onClick: handleDelete, disabled: isDeleting, className: cn("stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium", "stg:bg-destructive stg:text-destructive-foreground stg:hover:bg-destructive-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isDeleting && _jsx(SpinnerIcon, { size: 12 }), "Delete"] }), _jsx("button", { type: "button", onClick: onCancelDelete, disabled: isDeleting, className: cn("stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] }));
|
|
84
88
|
}
|
|
85
|
-
return (_jsxs("div", { role: "listitem", className: "stg:flex stg:items-center stg:gap-3 stg:rounded-lg stg:border stg:border-border-muted stg:px-3 stg:py-2.5 stg:hover:border-border stg:transition-colors", children: [_jsx(KeyIcon, {}), _jsxs("div", { className: "stg:min-w-0 stg:flex-1", children: [_jsx("span", { className: "stg:block stg:truncate stg:text-sm stg:font-medium stg:text-foreground", children: name }), clientId && (_jsx("span", { className: "stg:block stg:truncate stg:text-xs stg:text-muted-foreground stg:font-mono", children: clientId }))] }), _jsxs("div", { className: "stg:hidden stg:sm:flex stg:shrink-0 stg:items-center stg:gap-3 stg:text-xs stg:text-muted-foreground", children: [fingerprint && (_jsxs(Tooltip, { children: [_jsxs(TooltipTrigger, { render: _jsx("span", { className: "stg:font-mono" }), children: ["\u2022\u2022\u2022\u2022", fingerprint.slice(-4)] }), _jsx(TooltipContent, { side: "top", className: "stg:break-all", children: `Secret fingerprint: ${fingerprint}` })] })), _jsx(ExpiryBadge, { spec: spec }), spec?.autoProvisionAccounts && (_jsx("span", { className: "stg:inline-flex stg:items-center stg:rounded-full stg:border stg:border-primary/30 stg:bg-primary-subtle stg:px-2 stg:py-0.5 stg:text-[0.65rem] stg:font-medium stg:text-primary", children: "JIT" })), createdAt && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { render: _jsx("time", { dateTime: timestampDate(createdAt).toISOString() }), children: formatShortDate(timestampDate(createdAt)) }), _jsx(TooltipContent, { side: "top", children: `Created ${timestampDate(createdAt).toISOString()}` })] }))] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1", children: [onEdit && (_jsx("button", { type: "button", onClick: onEdit, "aria-label": `Edit ${name}`, className: cn("stg:shrink-0 stg:rounded stg:p-1", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:transition-colors"), children: _jsx(PencilIcon, {}) })), _jsx("button", { type: "button", onClick: onConfirmDelete, "aria-label": `Delete ${name}`, className: cn("stg:shrink-0 stg:rounded stg:p-1", "stg:text-muted-foreground stg:hover:text-destructive stg:hover:bg-destructive-subtle", "stg:transition-colors"), children: _jsx(TrashIcon, {}) })] })] }));
|
|
89
|
+
return (_jsxs("div", { role: "listitem", className: "stg:flex stg:items-center stg:gap-3 stg:rounded-lg stg:border stg:border-border-muted stg:px-3 stg:py-2.5 stg:hover:border-border stg:transition-colors", children: [_jsx(KeyIcon, {}), _jsxs("div", { className: "stg:min-w-0 stg:flex-1", children: [_jsx("span", { className: "stg:block stg:truncate stg:text-sm stg:font-medium stg:text-foreground", children: name }), clientId && (_jsx("span", { className: "stg:block stg:truncate stg:text-xs stg:text-muted-foreground stg:font-mono", children: clientId }))] }), _jsxs("div", { className: "stg:hidden stg:sm:flex stg:shrink-0 stg:items-center stg:gap-3 stg:text-xs stg:text-muted-foreground", children: [fingerprint && (_jsxs(Tooltip, { children: [_jsxs(TooltipTrigger, { render: _jsx("span", { className: "stg:font-mono" }), children: ["\u2022\u2022\u2022\u2022", fingerprint.slice(-4)] }), _jsx(TooltipContent, { side: "top", className: "stg:break-all", children: `Secret fingerprint: ${fingerprint}` })] })), _jsx(ExpiryBadge, { spec: spec }), spec?.autoProvisionAccounts && (_jsx("span", { className: "stg:inline-flex stg:items-center stg:rounded-full stg:border stg:border-primary/30 stg:bg-primary-subtle stg:px-2 stg:py-0.5 stg:text-[0.65rem] stg:font-medium stg:text-primary", children: "JIT" })), createdAt && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { render: _jsx("time", { dateTime: timestampDate(createdAt).toISOString() }), children: formatShortDate(timestampDate(createdAt)) }), _jsx(TooltipContent, { side: "top", children: `Created ${timestampDate(createdAt).toISOString()}` })] })), _jsx(LastUsedLabel, { at: lastUsedAt, now: now })] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1", children: [onEdit && (_jsx(PermissionGate, { resource: { kind: "platform_client", id }, relation: "can_edit", children: _jsx("button", { type: "button", onClick: onEdit, "aria-label": `Edit ${name}`, className: cn("stg:shrink-0 stg:rounded stg:p-1", "stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover", "stg:transition-colors"), children: _jsx(PencilIcon, {}) }) })), _jsx(PermissionGate, { resource: { kind: "platform_client", id }, relation: "can_delete", children: _jsx("button", { type: "button", onClick: onConfirmDelete, "aria-label": `Delete ${name}`, className: cn("stg:shrink-0 stg:rounded stg:p-1", "stg:text-muted-foreground stg:hover:text-destructive stg:hover:bg-destructive-subtle", "stg:transition-colors"), children: _jsx(TrashIcon, {}) }) })] })] }));
|
|
86
90
|
}
|
|
87
91
|
// ---------------------------------------------------------------------------
|
|
88
92
|
// ExpiryBadge (internal)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformClientListPanel.js","sourceRoot":"","sources":["../../src/platform-client/PlatformClientListPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PlatformClientListPanel.js","sourceRoot":"","sources":["../../src/platform-client/PlatformClientListPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-client copy shared by more than one surface, so the settings
|
|
3
|
+
* section and anything else that lists an organization's platform clients
|
|
4
|
+
* say the same thing.
|
|
5
|
+
*
|
|
6
|
+
* A platform client is a credential: its creator and the organization's
|
|
7
|
+
* admins see it, and other members may not see it at all. An empty list is
|
|
8
|
+
* therefore not evidence that none exists, so a caller who may not create
|
|
9
|
+
* platform clients is told who manages them instead of being told that
|
|
10
|
+
* nothing is configured (stigmer/stigmer#1302).
|
|
11
|
+
*/
|
|
12
|
+
/** Shown in place of the empty state to a caller who may not create platform clients. */
|
|
13
|
+
export declare const PLATFORM_CLIENTS_MANAGED_BY_ADMINS = "Platform clients are managed by your organization's admins.";
|
|
14
|
+
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/platform-client/copy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yFAAyF;AACzF,eAAO,MAAM,kCAAkC,gEACgB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-client copy shared by more than one surface, so the settings
|
|
3
|
+
* section and anything else that lists an organization's platform clients
|
|
4
|
+
* say the same thing.
|
|
5
|
+
*
|
|
6
|
+
* A platform client is a credential: its creator and the organization's
|
|
7
|
+
* admins see it, and other members may not see it at all. An empty list is
|
|
8
|
+
* therefore not evidence that none exists, so a caller who may not create
|
|
9
|
+
* platform clients is told who manages them instead of being told that
|
|
10
|
+
* nothing is configured (stigmer/stigmer#1302).
|
|
11
|
+
*/
|
|
12
|
+
/** Shown in place of the empty state to a caller who may not create platform clients. */
|
|
13
|
+
export const PLATFORM_CLIENTS_MANAGED_BY_ADMINS = "Platform clients are managed by your organization's admins.";
|
|
14
|
+
//# sourceMappingURL=copy.js.map
|