@mandaitor/react 0.2.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.
Files changed (45) hide show
  1. package/dist/components/APIKeyManager.d.ts +4 -0
  2. package/dist/components/APIKeyManager.d.ts.map +1 -0
  3. package/dist/components/APIKeyManager.js +58 -0
  4. package/dist/components/APIKeyManager.js.map +1 -0
  5. package/dist/components/MandaitorProvider.d.ts +31 -0
  6. package/dist/components/MandaitorProvider.d.ts.map +1 -0
  7. package/dist/components/MandaitorProvider.js +29 -0
  8. package/dist/components/MandaitorProvider.js.map +1 -0
  9. package/dist/components/MandateCreator.d.ts +16 -0
  10. package/dist/components/MandateCreator.d.ts.map +1 -0
  11. package/dist/components/MandateCreator.js +57 -0
  12. package/dist/components/MandateCreator.js.map +1 -0
  13. package/dist/components/MandateManager.d.ts +22 -0
  14. package/dist/components/MandateManager.d.ts.map +1 -0
  15. package/dist/components/MandateManager.js +119 -0
  16. package/dist/components/MandateManager.js.map +1 -0
  17. package/dist/components/MandateVerifier.d.ts +18 -0
  18. package/dist/components/MandateVerifier.d.ts.map +1 -0
  19. package/dist/components/MandateVerifier.js +104 -0
  20. package/dist/components/MandateVerifier.js.map +1 -0
  21. package/dist/components/MandateViewer.d.ts +13 -0
  22. package/dist/components/MandateViewer.d.ts.map +1 -0
  23. package/dist/components/MandateViewer.js +83 -0
  24. package/dist/components/MandateViewer.js.map +1 -0
  25. package/dist/components/WidgetConfigDashboard.d.ts +2 -0
  26. package/dist/components/WidgetConfigDashboard.d.ts.map +1 -0
  27. package/dist/components/WidgetConfigDashboard.js +365 -0
  28. package/dist/components/WidgetConfigDashboard.js.map +1 -0
  29. package/dist/hooks/useMandaitorSDK.d.ts +13 -0
  30. package/dist/hooks/useMandaitorSDK.d.ts.map +1 -0
  31. package/dist/hooks/useMandaitorSDK.js +13 -0
  32. package/dist/hooks/useMandaitorSDK.js.map +1 -0
  33. package/dist/hooks/useMandate.d.ts +16 -0
  34. package/dist/hooks/useMandate.d.ts.map +1 -0
  35. package/dist/hooks/useMandate.js +42 -0
  36. package/dist/hooks/useMandate.js.map +1 -0
  37. package/dist/hooks/useMandates.d.ts +20 -0
  38. package/dist/hooks/useMandates.d.ts.map +1 -0
  39. package/dist/hooks/useMandates.js +69 -0
  40. package/dist/hooks/useMandates.js.map +1 -0
  41. package/dist/index.d.ts +17 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +13 -0
  44. package/dist/index.js.map +1 -0
  45. package/package.json +51 -0
@@ -0,0 +1,4 @@
1
+ export declare function ApiKeyManager({ tenantId }: {
2
+ tenantId: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=APIKeyManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIKeyManager.d.ts","sourceRoot":"","sources":["../../src/components/APIKeyManager.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,2CAiL/D"}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ export function ApiKeyManager({ tenantId }) {
4
+ const [keys, setKeys] = useState([]);
5
+ const [newKey, setNewKey] = useState(null);
6
+ const [creating, setCreating] = useState(false);
7
+ const [keyName, setKeyName] = useState("");
8
+ const [keyEnv, setKeyEnv] = useState("test");
9
+ useEffect(() => {
10
+ fetchKeys();
11
+ }, []);
12
+ async function fetchKeys() {
13
+ const res = await fetch("/v1/tenant/api-keys", {
14
+ headers: { Authorization: `Bearer ${getToken()}` },
15
+ });
16
+ const data = (await res.json());
17
+ setKeys(data.keys || []);
18
+ }
19
+ async function createKey() {
20
+ setCreating(true);
21
+ try {
22
+ const res = await fetch("/v1/tenant/api-keys", {
23
+ method: "POST",
24
+ headers: {
25
+ "Content-Type": "application/json",
26
+ Authorization: `Bearer ${getToken()}`,
27
+ },
28
+ body: JSON.stringify({ name: keyName || "default", environment: keyEnv }),
29
+ });
30
+ const data = await res.json();
31
+ setNewKey(data);
32
+ setKeyName("");
33
+ fetchKeys();
34
+ }
35
+ finally {
36
+ setCreating(false);
37
+ }
38
+ }
39
+ async function revokeKey(keyId) {
40
+ if (!confirm("Are you sure? This action cannot be undone."))
41
+ return;
42
+ await fetch(`/v1/tenant/api-keys/${keyId}`, {
43
+ method: "DELETE",
44
+ headers: { Authorization: `Bearer ${getToken()}` },
45
+ });
46
+ fetchKeys();
47
+ }
48
+ return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h2", { className: "text-xl font-bold", children: "API Keys" }), _jsxs("span", { className: "text-sm text-muted-foreground", children: ["Tenant: ", tenantId] })] }), _jsxs("div", { className: "p-4 rounded border border-border bg-card", children: [_jsx("h3", { className: "font-semibold mb-3", children: "Generate New Key" }), _jsxs("div", { className: "flex gap-3 items-end", children: [_jsxs("div", { className: "flex-1", children: [_jsx("label", { className: "text-sm text-muted-foreground", children: "Key Name" }), _jsx("input", { value: keyName, onChange: (e) => setKeyName(e.target.value), placeholder: "e.g., production-backend", className: "w-full mt-1 px-3 py-2 rounded border border-border bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-sm text-muted-foreground", children: "Environment" }), _jsxs("select", { value: keyEnv, onChange: (e) => setKeyEnv(e.target.value), className: "w-full mt-1 px-3 py-2 rounded border border-border bg-background", children: [_jsx("option", { value: "test", children: "Test" }), _jsx("option", { value: "live", children: "Live" })] })] }), _jsx("button", { onClick: createKey, disabled: creating, className: "px-4 py-2 rounded font-semibold text-sm", style: { background: "#F5A623", color: "#0A1628" }, children: creating ? "Generating..." : "Generate Key" })] })] }), newKey && (_jsxs("div", { className: "p-4 rounded border-2 border-amber-500 bg-amber-500/5", children: [_jsx("div", { className: "flex items-center gap-2 mb-2", children: _jsx("span", { className: "font-bold text-amber-400", children: "New API Key Created" }) }), _jsx("p", { className: "text-sm text-red-400 font-semibold mb-2", children: "Copy this key now. It will not be shown again." }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { className: "flex-1 p-3 rounded bg-background font-mono text-sm break-all", children: newKey.api_key }), _jsx("button", { onClick: () => navigator.clipboard.writeText(newKey.api_key), className: "px-3 py-2 rounded border border-border text-sm", children: "Copy" })] }), _jsx("button", { onClick: () => setNewKey(null), className: "mt-3 text-sm text-muted-foreground underline", children: "I have saved my key" })] })), _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border", children: [_jsx("th", { className: "text-left py-2 px-3", children: "Name" }), _jsx("th", { className: "text-left py-2 px-3", children: "Key" }), _jsx("th", { className: "text-left py-2 px-3", children: "Environment" }), _jsx("th", { className: "text-left py-2 px-3", children: "Status" }), _jsx("th", { className: "text-left py-2 px-3", children: "Created" }), _jsx("th", { className: "text-left py-2 px-3", children: "Actions" })] }) }), _jsx("tbody", { children: keys.map((key) => (_jsxs("tr", { className: "border-b border-border/50", children: [_jsx("td", { className: "py-2 px-3", children: key.name }), _jsxs("td", { className: "py-2 px-3 font-mono", children: ["****", key.last_four] }), _jsx("td", { className: "py-2 px-3", children: _jsx("span", { className: `px-2 py-0.5 rounded text-xs ${key.environment === "live"
49
+ ? "bg-green-500/10 text-green-400"
50
+ : "bg-blue-500/10 text-blue-400"}`, children: key.environment }) }), _jsx("td", { className: "py-2 px-3", children: _jsx("span", { className: `px-2 py-0.5 rounded text-xs ${key.status === "ACTIVE"
51
+ ? "bg-green-500/10 text-green-400"
52
+ : "bg-red-500/10 text-red-400"}`, children: key.status }) }), _jsx("td", { className: "py-2 px-3 text-muted-foreground", children: new Date(key.created_at).toLocaleDateString() }), _jsx("td", { className: "py-2 px-3", children: key.status === "ACTIVE" && (_jsx("button", { onClick: () => revokeKey(key.key_id), className: "text-red-400 text-xs underline", children: "Revoke" })) })] }, key.key_id))) })] })] }));
53
+ }
54
+ function getToken() {
55
+ // In production: retrieve from Cognito session
56
+ return localStorage.getItem("mandata_token") || "";
57
+ }
58
+ //# sourceMappingURL=APIKeyManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIKeyManager.js","sourceRoot":"","sources":["../../src/components/APIKeyManager.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import { MandaitorClient } from "@mandaitor/sdk";
3
+ import { MandaitorConfigClient } from "@mandaitor/sdk";
4
+ export interface MandaitorContextValue {
5
+ client: MandaitorClient;
6
+ configClient: MandaitorConfigClient;
7
+ tenantId: string;
8
+ theme: MandaitorTheme;
9
+ }
10
+ export interface MandaitorTheme {
11
+ primaryColor: string;
12
+ fontFamily: string;
13
+ borderRadius: string;
14
+ mode: "light" | "dark";
15
+ }
16
+ export declare function useMandaitorContext(): MandaitorContextValue;
17
+ export interface MandaitorProviderProps {
18
+ tenantId: string;
19
+ apiUrl?: string;
20
+ apiKey?: string;
21
+ configAuthToken?: string;
22
+ auth?: {
23
+ type: "oidc" | "api_key";
24
+ issuer?: string;
25
+ clientId?: string;
26
+ };
27
+ theme?: Partial<MandaitorTheme>;
28
+ children: React.ReactNode;
29
+ }
30
+ export declare function MandaitorProvider({ tenantId, apiUrl, apiKey, configAuthToken, theme: themeOverrides, children, }: MandaitorProviderProps): import("react/jsx-runtime").JSX.Element;
31
+ //# sourceMappingURL=MandaitorProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandaitorProvider.d.ts","sourceRoot":"","sources":["../../src/components/MandaitorProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,qBAAqB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CACxB;AAID,wBAAgB,mBAAmB,0BAIlC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EAAE,cAAc,EACrB,QAAQ,GACT,EAAE,sBAAsB,2CA+BxB"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useMemo } from "react";
3
+ import { MandaitorClient } from "@mandaitor/sdk";
4
+ import { MandaitorConfigClient } from "@mandaitor/sdk";
5
+ const MandataContext = createContext(null);
6
+ export function useMandaitorContext() {
7
+ const ctx = useContext(MandataContext);
8
+ if (!ctx)
9
+ throw new Error("useMandaitorContext must be used within MandaitorProvider");
10
+ return ctx;
11
+ }
12
+ export function MandaitorProvider({ tenantId, apiUrl, apiKey, configAuthToken, theme: themeOverrides, children, }) {
13
+ const resolvedBaseUrl = apiUrl || "https://api.mandaitor.io/v1";
14
+ const client = useMemo(() => new MandaitorClient({
15
+ apiKey: apiKey || "",
16
+ tenantId,
17
+ baseUrl: resolvedBaseUrl,
18
+ }), [apiKey, tenantId, resolvedBaseUrl]);
19
+ const configClient = useMemo(() => new MandaitorConfigClient(resolvedBaseUrl, configAuthToken || ""), [resolvedBaseUrl, configAuthToken]);
20
+ const theme = {
21
+ primaryColor: "#F5A623",
22
+ fontFamily: "DM Sans, sans-serif",
23
+ borderRadius: "4px",
24
+ mode: "dark",
25
+ ...themeOverrides,
26
+ };
27
+ return (_jsx(MandataContext.Provider, { value: { client, configClient, tenantId, theme }, children: children }));
28
+ }
29
+ //# sourceMappingURL=MandaitorProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandaitorProvider.js","sourceRoot":"","sources":["../../src/components/MandaitorProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAgBvD,MAAM,cAAc,GAAG,aAAa,CAA+B,IAAI,CAAC,CAAC;AAEzE,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACvF,OAAO,GAAG,CAAC;AACb,CAAC;AAgBD,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EAAE,cAAc,EACrB,QAAQ,GACe;IACvB,MAAM,eAAe,GAAG,MAAM,IAAI,6BAA6B,CAAC;IAEhE,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,IAAI,eAAe,CAAC;QAClB,MAAM,EAAE,MAAM,IAAI,EAAE;QACpB,QAAQ;QACR,OAAO,EAAE,eAAe;KACzB,CAAC,EACJ,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC,CACpC,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,IAAI,qBAAqB,CAAC,eAAe,EAAE,eAAe,IAAI,EAAE,CAAC,EACvE,CAAC,eAAe,EAAE,eAAe,CAAC,CACnC,CAAC;IAEF,MAAM,KAAK,GAAmB;QAC5B,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,qBAAqB;QACjC,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE,MAAM;QACZ,GAAG,cAAc;KAClB,CAAC;IAEF,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,YACtE,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Subject, Mandate } from "@mandaitor/sdk";
2
+ export interface ActionOption {
3
+ id: string;
4
+ label: string;
5
+ description?: string;
6
+ }
7
+ export interface MandateCreatorProps {
8
+ defaultDelegate?: Subject;
9
+ defaultResources?: string[];
10
+ availableActions: ActionOption[];
11
+ onMandateCreated?: (mandate: Mandate) => void;
12
+ onError?: (error: Error) => void;
13
+ className?: string;
14
+ }
15
+ export declare function MandateCreator({ defaultDelegate, defaultResources, availableActions, onMandateCreated, onError, className, }: MandateCreatorProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=MandateCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandateCreator.d.ts","sourceRoot":"","sources":["../../src/components/MandateCreator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,eAAe,EACf,gBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,SAAS,GACV,EAAE,mBAAmB,2CA0FrB"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from "react";
3
+ import { useMandaitorContext } from "./MandaitorProvider";
4
+ export function MandateCreator({ defaultDelegate, defaultResources = [], availableActions, onMandateCreated, onError, className, }) {
5
+ const { client, theme } = useMandaitorContext();
6
+ const [selectedActions, setSelectedActions] = useState([]);
7
+ const [expiresAt, setExpiresAt] = useState("");
8
+ const [isSubmitting, setIsSubmitting] = useState(false);
9
+ const handleSubmit = useCallback(async () => {
10
+ if (selectedActions.length === 0)
11
+ return;
12
+ setIsSubmitting(true);
13
+ try {
14
+ const mandate = await client.createMandate({
15
+ principal: {
16
+ type: "NATURAL_PERSON",
17
+ subject_id: "current_user", // Resolved from auth context
18
+ },
19
+ delegate: defaultDelegate || {
20
+ type: "AGENT",
21
+ subject_id: "agent:default",
22
+ },
23
+ scope: {
24
+ actions: selectedActions,
25
+ resources: defaultResources,
26
+ effect: "ALLOW",
27
+ },
28
+ constraints: {
29
+ time: expiresAt ? { expires_at: expiresAt } : undefined,
30
+ },
31
+ });
32
+ onMandateCreated?.(mandate);
33
+ }
34
+ catch (err) {
35
+ onError?.(err instanceof Error ? err : new Error(String(err)));
36
+ }
37
+ finally {
38
+ setIsSubmitting(false);
39
+ }
40
+ }, [client, selectedActions, defaultDelegate, defaultResources, expiresAt]);
41
+ // Render a form with action checkboxes, expiry date picker, and submit button
42
+ // Styled according to the theme from MandaitorProvider
43
+ return (_jsxs("div", { className: className, style: {
44
+ fontFamily: theme.fontFamily,
45
+ borderRadius: theme.borderRadius,
46
+ }, children: [_jsx("div", { style: { color: theme.primaryColor, fontWeight: 600, marginBottom: 12 }, children: "Create Delegation Mandate" }), availableActions.map((action) => (_jsxs("label", { style: { display: "block", marginBottom: 8 }, children: [_jsx("input", { type: "checkbox", checked: selectedActions.includes(action.id), onChange: (e) => setSelectedActions((prev) => e.currentTarget.checked
47
+ ? [...prev, action.id]
48
+ : prev.filter((a) => a !== action.id)) }), _jsx("span", { style: { marginLeft: 8 }, children: action.label })] }, action.id))), _jsx("input", { type: "datetime-local", value: expiresAt, onChange: (e) => setExpiresAt(e.target.value), placeholder: "Expiry date (optional)", style: { display: "block", marginTop: 12, marginBottom: 12 } }), _jsx("button", { onClick: handleSubmit, disabled: isSubmitting || selectedActions.length === 0, style: {
49
+ background: theme.primaryColor,
50
+ color: "#0A1628",
51
+ padding: "8px 16px",
52
+ borderRadius: theme.borderRadius,
53
+ fontWeight: 600,
54
+ opacity: isSubmitting ? 0.6 : 1,
55
+ }, children: isSubmitting ? "Creating..." : "Create Mandate" })] }));
56
+ }
57
+ //# sourceMappingURL=MandateCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandateCreator.js","sourceRoot":"","sources":["../../src/components/MandateCreator.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Mandate, MandateStatus } from "@mandaitor/sdk";
2
+ export interface MandateManagerProps {
3
+ /** Filter mandates by status, resource, or delegate */
4
+ filter?: {
5
+ status?: MandateStatus[];
6
+ resources?: string[];
7
+ delegate_id?: string;
8
+ };
9
+ /** Allow revoking mandates */
10
+ allowRevoke?: boolean;
11
+ /** Allow suspending mandates */
12
+ allowSuspend?: boolean;
13
+ /** Allow reactivating suspended mandates */
14
+ allowReactivate?: boolean;
15
+ /** Callback when a mandate is selected */
16
+ onMandateSelect?: (mandate: Mandate) => void;
17
+ /** Callback after any status change */
18
+ onStatusChange?: (mandate: Mandate, newStatus: MandateStatus) => void;
19
+ className?: string;
20
+ }
21
+ export declare function MandateManager({ filter, allowRevoke, allowSuspend, allowReactivate, onMandateSelect, onStatusChange, className, }: MandateManagerProps): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=MandateManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandateManager.d.ts","sourceRoot":"","sources":["../../src/components/MandateManager.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,8BAA8B;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0CAA0C;IAC1C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,uCAAuC;IACvC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,WAAkB,EAClB,YAAmB,EACnB,eAAsB,EACtB,eAAe,EACf,cAAc,EACd,SAAS,GACV,EAAE,mBAAmB,2CAoOrB"}
@@ -0,0 +1,119 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from "react";
3
+ import { useMandaitorContext } from "./MandaitorProvider";
4
+ import { useMandates } from "../hooks/useMandates";
5
+ export function MandateManager({ filter, allowRevoke = true, allowSuspend = true, allowReactivate = true, onMandateSelect, onStatusChange, className, }) {
6
+ const { client, theme } = useMandaitorContext();
7
+ const { mandates, isLoading, error, hasMore, loadMore, refetch } = useMandates({
8
+ status: filter?.status?.join(","),
9
+ limit: 20,
10
+ });
11
+ const [actionLoading, setActionLoading] = useState(null);
12
+ const handleAction = useCallback(async (mandateId, action) => {
13
+ setActionLoading(mandateId);
14
+ try {
15
+ let updated;
16
+ switch (action) {
17
+ case "revoke":
18
+ updated = await client.revokeMandate(mandateId, "Revoked via dashboard");
19
+ break;
20
+ case "suspend":
21
+ updated = await client.suspendMandate(mandateId, "Suspended via dashboard");
22
+ break;
23
+ case "reactivate":
24
+ updated = await client.reactivateMandate(mandateId);
25
+ break;
26
+ }
27
+ onStatusChange?.(updated, updated.status);
28
+ refetch();
29
+ }
30
+ catch (err) {
31
+ console.error(`Failed to ${action} mandate:`, err);
32
+ }
33
+ finally {
34
+ setActionLoading(null);
35
+ }
36
+ }, [client, onStatusChange, refetch]);
37
+ const statusColor = (status) => {
38
+ switch (status) {
39
+ case "ACTIVE":
40
+ return "#22c55e";
41
+ case "SUSPENDED":
42
+ return "#f59e0b";
43
+ case "REVOKED":
44
+ return "#ef4444";
45
+ case "EXPIRED":
46
+ return "#6b7280";
47
+ }
48
+ };
49
+ const cellStyle = {
50
+ padding: "10px 14px",
51
+ fontSize: 13,
52
+ textAlign: "left",
53
+ borderBottom: "1px solid " + (theme.mode === "dark" ? "#1e2d42" : "#e2e8f0"),
54
+ };
55
+ return (_jsxs("div", { className: className, style: { fontFamily: theme.fontFamily }, children: [_jsx("div", { style: { color: theme.primaryColor, fontWeight: 600, fontSize: 16, marginBottom: 12 }, children: "Active Delegations" }), isLoading && !mandates.length && (_jsx("div", { style: { padding: 20, textAlign: "center", opacity: 0.6 }, children: "Loading mandates..." })), error && (_jsx("div", { style: {
56
+ padding: 12,
57
+ background: "#ef444415",
58
+ borderRadius: theme.borderRadius,
59
+ color: "#ef4444",
60
+ fontSize: 13,
61
+ }, children: error })), mandates.length > 0 && (_jsx("div", { style: {
62
+ overflowX: "auto",
63
+ borderRadius: theme.borderRadius,
64
+ border: "1px solid " + (theme.mode === "dark" ? "#1e2d42" : "#e2e8f0"),
65
+ }, children: _jsxs("table", { style: { width: "100%", borderCollapse: "collapse" }, children: [_jsx("thead", { children: _jsxs("tr", { style: { background: theme.mode === "dark" ? "#0f1d30" : "#f8fafc" }, children: [_jsx("th", { style: cellStyle, children: "Mandate ID" }), _jsx("th", { style: cellStyle, children: "Delegate" }), _jsx("th", { style: cellStyle, children: "Actions" }), _jsx("th", { style: cellStyle, children: "Status" }), _jsx("th", { style: cellStyle, children: "Expires" }), _jsx("th", { style: cellStyle, children: "Actions" })] }) }), _jsx("tbody", { children: mandates.map((m) => (_jsxs("tr", { onClick: () => onMandateSelect?.(m), style: { cursor: onMandateSelect ? "pointer" : "default" }, children: [_jsx("td", { style: cellStyle, children: _jsxs("code", { style: { fontSize: 11 }, children: [m.mandate_id.slice(0, 16), "..."] }) }), _jsxs("td", { style: cellStyle, children: [_jsx("div", { style: { fontSize: 12 }, children: m.delegate.display_name || m.delegate.subject_id }), _jsx("div", { style: { fontSize: 10, opacity: 0.5 }, children: m.delegate.type })] }), _jsx("td", { style: cellStyle, children: _jsxs("div", { style: { fontSize: 12 }, children: [m.scope.actions.length, " action(s)"] }) }), _jsx("td", { style: cellStyle, children: _jsx("span", { style: {
66
+ fontSize: 11,
67
+ fontWeight: 600,
68
+ padding: "2px 8px",
69
+ borderRadius: "3px",
70
+ background: statusColor(m.status) + "20",
71
+ color: statusColor(m.status),
72
+ }, children: m.status }) }), _jsx("td", { style: cellStyle, children: _jsx("span", { style: { fontSize: 12 }, children: m.constraints.time?.expires_at
73
+ ? new Date(m.constraints.time.expires_at).toLocaleDateString()
74
+ : "—" }) }), _jsxs("td", { style: { ...cellStyle, display: "flex", gap: 6 }, children: [m.status === "ACTIVE" && allowSuspend && (_jsx("button", { onClick: (e) => {
75
+ e.stopPropagation();
76
+ handleAction(m.mandate_id, "suspend");
77
+ }, disabled: actionLoading === m.mandate_id, style: {
78
+ fontSize: 11,
79
+ padding: "4px 8px",
80
+ borderRadius: "3px",
81
+ border: "1px solid #f59e0b40",
82
+ background: "#f59e0b15",
83
+ color: "#f59e0b",
84
+ cursor: "pointer",
85
+ }, children: "Suspend" })), m.status === "ACTIVE" && allowRevoke && (_jsx("button", { onClick: (e) => {
86
+ e.stopPropagation();
87
+ handleAction(m.mandate_id, "revoke");
88
+ }, disabled: actionLoading === m.mandate_id, style: {
89
+ fontSize: 11,
90
+ padding: "4px 8px",
91
+ borderRadius: "3px",
92
+ border: "1px solid #ef444440",
93
+ background: "#ef444415",
94
+ color: "#ef4444",
95
+ cursor: "pointer",
96
+ }, children: "Revoke" })), m.status === "SUSPENDED" && allowReactivate && (_jsx("button", { onClick: (e) => {
97
+ e.stopPropagation();
98
+ handleAction(m.mandate_id, "reactivate");
99
+ }, disabled: actionLoading === m.mandate_id, style: {
100
+ fontSize: 11,
101
+ padding: "4px 8px",
102
+ borderRadius: "3px",
103
+ border: "1px solid #22c55e40",
104
+ background: "#22c55e15",
105
+ color: "#22c55e",
106
+ cursor: "pointer",
107
+ }, children: "Reactivate" }))] })] }, m.mandate_id))) })] }) })), hasMore && (_jsx("button", { onClick: loadMore, disabled: isLoading, style: {
108
+ marginTop: 12,
109
+ padding: "8px 16px",
110
+ fontSize: 13,
111
+ fontWeight: 500,
112
+ borderRadius: theme.borderRadius,
113
+ border: "1px solid " + theme.primaryColor + "40",
114
+ background: "transparent",
115
+ color: theme.primaryColor,
116
+ cursor: "pointer",
117
+ }, children: isLoading ? "Loading..." : "Load More" }))] }));
118
+ }
119
+ //# sourceMappingURL=MandateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandateManager.js","sourceRoot":"","sources":["../../src/components/MandateManager.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAuBnD,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,EACN,WAAW,GAAG,IAAI,EAClB,YAAY,GAAG,IAAI,EACnB,eAAe,GAAG,IAAI,EACtB,eAAe,EACf,cAAc,EACd,SAAS,GACW;IACpB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAChD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;QAC7E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;QACjC,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,SAAiB,EAAE,MAA2C,EAAE,EAAE;QACvE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,OAAgB,CAAC;YACrB,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,QAAQ;oBACX,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;oBACzE,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;oBAC5E,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;oBACpD,MAAM;YACV,CAAC;YACD,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,WAAW,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;gBAAS,CAAC;YACT,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAClC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAqB,EAAE,EAAE;QAC5C,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC;YACnB,KAAK,WAAW;gBACd,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAwB;QACrC,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,YAAY,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;KAC7E,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,aAChE,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,mCAEpF,EAEL,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAChC,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,oCAA2B,CAC1F,EAEA,KAAK,IAAI,CACR,cACE,KAAK,EAAE;oBACL,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,WAAW;oBACvB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,EAAE;iBACb,YAEA,KAAK,GACF,CACP,EAEA,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,cACE,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM;oBACjB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,MAAM,EAAE,YAAY,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;iBACvE,YAED,iBAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,aACzD,0BACE,cAAI,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,aACtE,aAAI,KAAK,EAAE,SAAS,2BAAiB,EACrC,aAAI,KAAK,EAAE,SAAS,yBAAe,EACnC,aAAI,KAAK,EAAE,SAAS,wBAAc,EAClC,aAAI,KAAK,EAAE,SAAS,uBAAa,EACjC,aAAI,KAAK,EAAE,SAAS,wBAAc,EAClC,aAAI,KAAK,EAAE,SAAS,wBAAc,IAC/B,GACC,EACR,0BACG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACnB,cAEE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EACnC,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,aAE1D,aAAI,KAAK,EAAE,SAAS,YAClB,gBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,GACjE,EACL,cAAI,KAAK,EAAE,SAAS,aAClB,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YACzB,CAAC,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,GAC7C,EACN,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,YAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAO,IAChE,EACL,aAAI,KAAK,EAAE,SAAS,YAClB,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,kBAAiB,GACnE,EACL,aAAI,KAAK,EAAE,SAAS,YAClB,eACE,KAAK,EAAE;gDACL,QAAQ,EAAE,EAAE;gDACZ,UAAU,EAAE,GAAG;gDACf,OAAO,EAAE,SAAS;gDAClB,YAAY,EAAE,KAAK;gDACnB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI;gDACxC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;6CAC7B,YAEA,CAAC,CAAC,MAAM,GACJ,GACJ,EACL,aAAI,KAAK,EAAE,SAAS,YAClB,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU;gDAC7B,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE;gDAC9D,CAAC,CAAC,GAAG,GACF,GACJ,EACL,cAAI,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,aACjD,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,YAAY,IAAI,CACxC,iBACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oDACb,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gDACxC,CAAC,EACD,QAAQ,EAAE,aAAa,KAAK,CAAC,CAAC,UAAU,EACxC,KAAK,EAAE;oDACL,QAAQ,EAAE,EAAE;oDACZ,OAAO,EAAE,SAAS;oDAClB,YAAY,EAAE,KAAK;oDACnB,MAAM,EAAE,qBAAqB;oDAC7B,UAAU,EAAE,WAAW;oDACvB,KAAK,EAAE,SAAS;oDAChB,MAAM,EAAE,SAAS;iDAClB,wBAGM,CACV,EACA,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,WAAW,IAAI,CACvC,iBACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oDACb,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gDACvC,CAAC,EACD,QAAQ,EAAE,aAAa,KAAK,CAAC,CAAC,UAAU,EACxC,KAAK,EAAE;oDACL,QAAQ,EAAE,EAAE;oDACZ,OAAO,EAAE,SAAS;oDAClB,YAAY,EAAE,KAAK;oDACnB,MAAM,EAAE,qBAAqB;oDAC7B,UAAU,EAAE,WAAW;oDACvB,KAAK,EAAE,SAAS;oDAChB,MAAM,EAAE,SAAS;iDAClB,uBAGM,CACV,EACA,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,eAAe,IAAI,CAC9C,iBACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oDACb,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gDAC3C,CAAC,EACD,QAAQ,EAAE,aAAa,KAAK,CAAC,CAAC,UAAU,EACxC,KAAK,EAAE;oDACL,QAAQ,EAAE,EAAE;oDACZ,OAAO,EAAE,SAAS;oDAClB,YAAY,EAAE,KAAK;oDACnB,MAAM,EAAE,qBAAqB;oDAC7B,UAAU,EAAE,WAAW;oDACvB,KAAK,EAAE,SAAS;oDAChB,MAAM,EAAE,SAAS;iDAClB,2BAGM,CACV,IACE,KAlGA,CAAC,CAAC,UAAU,CAmGd,CACN,CAAC,GACI,IACF,GACJ,CACP,EAEA,OAAO,IAAI,CACV,iBACE,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE;oBACL,SAAS,EAAE,EAAE;oBACb,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,GAAG;oBACf,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,MAAM,EAAE,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI;oBAChD,UAAU,EAAE,aAAa;oBACzB,KAAK,EAAE,KAAK,CAAC,YAAY;oBACzB,MAAM,EAAE,SAAS;iBAClB,YAEA,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,GAChC,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { VerifyResponse } from "@mandaitor/sdk";
2
+ export interface MandateVerifierProps {
3
+ /** Pre-fill the mandate ID */
4
+ defaultMandateId?: string;
5
+ /** Pre-fill the action to verify */
6
+ defaultAction?: string;
7
+ /** Pre-fill the resource URI */
8
+ defaultResource?: string;
9
+ /** Auto-verify on mount (useful for inline status indicators) */
10
+ autoVerify?: boolean;
11
+ /** Compact mode — shows only the result badge, no form */
12
+ compact?: boolean;
13
+ /** Callback with verification result */
14
+ onResult?: (result: VerifyResponse) => void;
15
+ className?: string;
16
+ }
17
+ export declare function MandateVerifier({ defaultMandateId, defaultAction, defaultResource, autoVerify, compact, onResult, className, }: MandateVerifierProps): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=MandateVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandateVerifier.d.ts","sourceRoot":"","sources":["../../src/components/MandateVerifier.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAC9B,gBAAqB,EACrB,aAAkB,EAClB,eAAoB,EACpB,UAAkB,EAClB,OAAe,EACf,QAAQ,EACR,SAAS,GACV,EAAE,oBAAoB,2CAoLtB"}
@@ -0,0 +1,104 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useState, useCallback } from "react";
3
+ import { useMandaitorContext } from "./MandaitorProvider";
4
+ export function MandateVerifier({ defaultMandateId = "", defaultAction = "", defaultResource = "", autoVerify = false, compact = false, onResult, className, }) {
5
+ const { client, theme } = useMandaitorContext();
6
+ const [mandateId, setMandateId] = useState(defaultMandateId);
7
+ const [action, setAction] = useState(defaultAction);
8
+ const [resource, setResource] = useState(defaultResource);
9
+ const [result, setResult] = useState(null);
10
+ const [isVerifying, setIsVerifying] = useState(false);
11
+ const [error, setError] = useState(null);
12
+ const [latencyMs, setLatencyMs] = useState(null);
13
+ const verify = useCallback(async () => {
14
+ if (!mandateId || !action || !resource)
15
+ return;
16
+ setIsVerifying(true);
17
+ setError(null);
18
+ const start = performance.now();
19
+ try {
20
+ const res = await client.verify({ mandate_id: mandateId, action, resource });
21
+ const elapsed = Math.round(performance.now() - start);
22
+ setLatencyMs(elapsed);
23
+ setResult(res);
24
+ onResult?.(res);
25
+ }
26
+ catch (err) {
27
+ setError(err instanceof Error ? err.message : "Verification failed");
28
+ setResult(null);
29
+ }
30
+ finally {
31
+ setIsVerifying(false);
32
+ }
33
+ }, [client, mandateId, action, resource, onResult]);
34
+ // Auto-verify on mount — intentionally run only once
35
+ React.useEffect(() => {
36
+ if (autoVerify && mandateId && action && resource) {
37
+ verify();
38
+ }
39
+ }, []);
40
+ // Compact mode — just a badge
41
+ if (compact && result) {
42
+ return (_jsxs("span", { className: className, style: {
43
+ display: "inline-flex",
44
+ alignItems: "center",
45
+ gap: 6,
46
+ fontSize: 12,
47
+ fontWeight: 600,
48
+ padding: "3px 10px",
49
+ borderRadius: "4px",
50
+ fontFamily: theme.fontFamily,
51
+ background: result.allowed ? "#22c55e20" : "#ef444420",
52
+ color: result.allowed ? "#22c55e" : "#ef4444",
53
+ }, children: [result.allowed ? "✓ Authorized" : "✗ Denied", latencyMs !== null && _jsxs("span", { style: { opacity: 0.6, fontSize: 10 }, children: ["(", latencyMs, "ms)"] })] }));
54
+ }
55
+ const inputStyle = {
56
+ display: "block",
57
+ width: "100%",
58
+ padding: "8px 12px",
59
+ marginTop: 4,
60
+ marginBottom: 12,
61
+ borderRadius: theme.borderRadius,
62
+ fontSize: 13,
63
+ fontFamily: "monospace",
64
+ border: "1px solid " + (theme.mode === "dark" ? "#2a3a4e" : "#e2e8f0"),
65
+ background: theme.mode === "dark" ? "#0a1628" : "#f8fafc",
66
+ color: theme.mode === "dark" ? "#e2e8f0" : "#1e293b",
67
+ };
68
+ return (_jsxs("div", { className: className, style: {
69
+ fontFamily: theme.fontFamily,
70
+ padding: 20,
71
+ borderRadius: theme.borderRadius,
72
+ border: "1px solid " + (theme.mode === "dark" ? "#2a3a4e" : "#e2e8f0"),
73
+ }, children: [_jsx("div", { style: { color: theme.primaryColor, fontWeight: 600, fontSize: 16, marginBottom: 16 }, children: "Verify Authorization" }), _jsx("label", { style: { fontSize: 12, fontWeight: 500, opacity: 0.7 }, children: "Mandate ID" }), _jsx("input", { value: mandateId, onChange: (e) => setMandateId(e.target.value), placeholder: "mnd_...", style: inputStyle }), _jsx("label", { style: { fontSize: 12, fontWeight: 500, opacity: 0.7 }, children: "Action" }), _jsx("input", { value: action, onChange: (e) => setAction(e.target.value), placeholder: "construction.validation.approve", style: inputStyle }), _jsx("label", { style: { fontSize: 12, fontWeight: 500, opacity: 0.7 }, children: "Resource" }), _jsx("input", { value: resource, onChange: (e) => setResource(e.target.value), placeholder: "monco:project:proj_123/*", style: inputStyle }), _jsx("button", { onClick: verify, disabled: isVerifying || !mandateId || !action || !resource, style: {
74
+ width: "100%",
75
+ padding: "10px 16px",
76
+ fontWeight: 600,
77
+ fontSize: 14,
78
+ borderRadius: theme.borderRadius,
79
+ border: "none",
80
+ cursor: "pointer",
81
+ background: theme.primaryColor,
82
+ color: "#0A1628",
83
+ opacity: isVerifying || !mandateId ? 0.5 : 1,
84
+ }, children: isVerifying ? "Verifying..." : "Verify Now" }), result && (_jsxs("div", { style: {
85
+ marginTop: 16,
86
+ padding: 16,
87
+ borderRadius: theme.borderRadius,
88
+ background: result.allowed ? "#22c55e10" : "#ef444410",
89
+ border: "1px solid " + (result.allowed ? "#22c55e30" : "#ef444430"),
90
+ }, children: [_jsx("div", { style: {
91
+ fontSize: 18,
92
+ fontWeight: 700,
93
+ color: result.allowed ? "#22c55e" : "#ef4444",
94
+ marginBottom: 8,
95
+ }, children: result.allowed ? "✓ AUTHORIZED" : "✗ DENIED" }), !result.allowed && result.denial_reason && (_jsxs("div", { style: { fontSize: 13, opacity: 0.8 }, children: ["Reason: ", result.denial_reason] })), latencyMs !== null && (_jsxs("div", { style: { fontSize: 12, opacity: 0.5, marginTop: 4 }, children: ["Verified in ", latencyMs, "ms | ", new Date(result.verified_at).toLocaleString()] }))] })), error && (_jsx("div", { style: {
96
+ marginTop: 12,
97
+ padding: 12,
98
+ background: "#ef444415",
99
+ borderRadius: theme.borderRadius,
100
+ color: "#ef4444",
101
+ fontSize: 13,
102
+ }, children: error }))] }));
103
+ }
104
+ //# sourceMappingURL=MandateVerifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandateVerifier.js","sourceRoot":"","sources":["../../src/components/MandateVerifier.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface MandateViewerProps {
2
+ /** Mandate ID to display */
3
+ mandateId: string;
4
+ /** Show the audit event trail */
5
+ showAuditTrail?: boolean;
6
+ /** Show the cryptographic proof details */
7
+ showProof?: boolean;
8
+ /** Callback when back/close is clicked */
9
+ onClose?: () => void;
10
+ className?: string;
11
+ }
12
+ export declare function MandateViewer({ mandateId, showAuditTrail, showProof, onClose, className, }: MandateViewerProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=MandateViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandateViewer.d.ts","sourceRoot":"","sources":["../../src/components/MandateViewer.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,cAAqB,EACrB,SAAiB,EACjB,OAAO,EACP,SAAS,GACV,EAAE,kBAAkB,2CAyPpB"}