@mandaitor/react 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +74 -0
- package/dist/components/APIKeyManager.d.ts +4 -0
- package/dist/components/APIKeyManager.d.ts.map +1 -0
- package/dist/components/APIKeyManager.js +58 -0
- package/dist/components/APIKeyManager.js.map +1 -0
- package/dist/components/MandaitorProvider.d.ts +31 -0
- package/dist/components/MandaitorProvider.d.ts.map +1 -0
- package/dist/components/MandaitorProvider.js +29 -0
- package/dist/components/MandaitorProvider.js.map +1 -0
- package/dist/components/MandaitorProvider.stories.d.ts +12 -0
- package/dist/components/MandaitorProvider.stories.d.ts.map +1 -0
- package/dist/components/MandaitorProvider.stories.js +41 -0
- package/dist/components/MandaitorProvider.stories.js.map +1 -0
- package/dist/components/MandateCreator.d.ts +16 -0
- package/dist/components/MandateCreator.d.ts.map +1 -0
- package/dist/components/MandateCreator.js +58 -0
- package/dist/components/MandateCreator.js.map +1 -0
- package/dist/components/MandateCreator.stories.d.ts +14 -0
- package/dist/components/MandateCreator.stories.d.ts.map +1 -0
- package/dist/components/MandateCreator.stories.js +72 -0
- package/dist/components/MandateCreator.stories.js.map +1 -0
- package/dist/components/MandateManager.d.ts +22 -0
- package/dist/components/MandateManager.d.ts.map +1 -0
- package/dist/components/MandateManager.js +119 -0
- package/dist/components/MandateManager.js.map +1 -0
- package/dist/components/MandateManager.stories.d.ts +14 -0
- package/dist/components/MandateManager.stories.d.ts.map +1 -0
- package/dist/components/MandateManager.stories.js +47 -0
- package/dist/components/MandateManager.stories.js.map +1 -0
- package/dist/components/MandateVerifier.d.ts +18 -0
- package/dist/components/MandateVerifier.d.ts.map +1 -0
- package/dist/components/MandateVerifier.js +104 -0
- package/dist/components/MandateVerifier.js.map +1 -0
- package/dist/components/MandateVerifier.stories.d.ts +14 -0
- package/dist/components/MandateVerifier.stories.d.ts.map +1 -0
- package/dist/components/MandateVerifier.stories.js +41 -0
- package/dist/components/MandateVerifier.stories.js.map +1 -0
- package/dist/components/MandateViewer.d.ts +13 -0
- package/dist/components/MandateViewer.d.ts.map +1 -0
- package/dist/components/MandateViewer.js +83 -0
- package/dist/components/MandateViewer.js.map +1 -0
- package/dist/components/MandateViewer.stories.d.ts +14 -0
- package/dist/components/MandateViewer.stories.d.ts.map +1 -0
- package/dist/components/MandateViewer.stories.js +43 -0
- package/dist/components/MandateViewer.stories.js.map +1 -0
- package/dist/components/WidgetConfigDashboard.d.ts +2 -0
- package/dist/components/WidgetConfigDashboard.d.ts.map +1 -0
- package/dist/components/WidgetConfigDashboard.js +365 -0
- package/dist/components/WidgetConfigDashboard.js.map +1 -0
- package/dist/hooks/useMandaitorSDK.d.ts +13 -0
- package/dist/hooks/useMandaitorSDK.d.ts.map +1 -0
- package/dist/hooks/useMandaitorSDK.js +13 -0
- package/dist/hooks/useMandaitorSDK.js.map +1 -0
- package/dist/hooks/useMandate.d.ts +16 -0
- package/dist/hooks/useMandate.d.ts.map +1 -0
- package/dist/hooks/useMandate.js +42 -0
- package/dist/hooks/useMandate.js.map +1 -0
- package/dist/hooks/useMandates.d.ts +20 -0
- package/dist/hooks/useMandates.d.ts.map +1 -0
- package/dist/hooks/useMandates.js +69 -0
- package/dist/hooks/useMandates.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import { useMandaitorSDK } from "../hooks/useMandaitorSDK";
|
|
4
|
+
export function WidgetConfigDashboard() {
|
|
5
|
+
const { sdk } = useMandaitorSDK();
|
|
6
|
+
const [activeTab, setActiveTab] = useState("idps");
|
|
7
|
+
const [config, setConfig] = useState(null);
|
|
8
|
+
const [saving, setSaving] = useState(false);
|
|
9
|
+
const [idpStatuses, setIdpStatuses] = useState([]);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
sdk.getWidgetConfig().then(setConfig);
|
|
12
|
+
}, [sdk]);
|
|
13
|
+
const tabs = [
|
|
14
|
+
{ id: "idps", label: "Identity Providers", icon: "🔐" },
|
|
15
|
+
{ id: "taxonomies", label: "Taxonomies & Templates", icon: "📚" },
|
|
16
|
+
{ id: "branding", label: "Widget Branding", icon: "🎨" },
|
|
17
|
+
{ id: "webhooks", label: "Webhooks & Events", icon: "🔗" },
|
|
18
|
+
{ id: "approval", label: "Approval Workflow", icon: "✅" },
|
|
19
|
+
{ id: "constraints", label: "Default Constraints", icon: "⚙️" },
|
|
20
|
+
];
|
|
21
|
+
const handleSave = async () => {
|
|
22
|
+
if (!config)
|
|
23
|
+
return;
|
|
24
|
+
setSaving(true);
|
|
25
|
+
try {
|
|
26
|
+
await sdk.updateWidgetConfig(config);
|
|
27
|
+
// Show success notification
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Show error notification
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
setSaving(false);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const validateIdP = async (idpType) => {
|
|
37
|
+
if (!config)
|
|
38
|
+
return;
|
|
39
|
+
setIdpStatuses((prev) => prev.map((s) => (s.type === idpType ? { ...s, validating: true } : s)));
|
|
40
|
+
try {
|
|
41
|
+
const result = await sdk.validateIdPConfig(idpType, config.idpConfigs[idpType] ?? {});
|
|
42
|
+
setIdpStatuses((prev) => prev.map((s) => s.type === idpType ? { ...s, validating: false, valid: result.valid } : s));
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
setIdpStatuses((prev) => prev.map((s) => (s.type === idpType ? { ...s, validating: false, valid: false } : s)));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
if (!config)
|
|
49
|
+
return _jsx("div", { children: "Loading configuration..." });
|
|
50
|
+
return (_jsxs("div", { className: "max-w-5xl mx-auto p-6", children: [_jsxs("div", { className: "flex items-center justify-between mb-8", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-bold", children: "Widget Configuration" }), _jsxs("p", { className: "text-muted-foreground mt-1", children: ["Widget ID: ", _jsx("code", { children: config.widgetId }), " \u00B7 Version ", config.configVersion] })] }), _jsx("button", { onClick: handleSave, disabled: saving, className: "px-6 py-2 bg-primary text-primary-foreground rounded-lg font-medium", children: saving ? "Saving..." : "Save Configuration" })] }), _jsx("div", { className: "flex gap-1 border-b border-border mb-6 overflow-x-auto", children: tabs.map((tab) => (_jsxs("button", { onClick: () => setActiveTab(tab.id), className: `px-4 py-3 text-sm font-medium whitespace-nowrap border-b-2 transition-colors ${activeTab === tab.id
|
|
51
|
+
? "border-primary text-primary"
|
|
52
|
+
: "border-transparent text-muted-foreground hover:text-foreground"}`, children: [_jsx("span", { className: "mr-2", children: tab.icon }), tab.label] }, tab.id))) }), activeTab === "idps" && (_jsx(IdPConfigPanel, { config: config, onChange: setConfig, statuses: idpStatuses, onValidate: validateIdP })), activeTab === "taxonomies" && _jsx(TaxonomyConfigPanel, { config: config, onChange: setConfig }), activeTab === "branding" && _jsx(BrandingConfigPanel, { config: config, onChange: setConfig }), activeTab === "webhooks" && _jsx(WebhookConfigPanel, { config: config, onChange: setConfig }), activeTab === "approval" && _jsx(ApprovalConfigPanel, { config: config, onChange: setConfig }), activeTab === "constraints" && (_jsx(ConstraintConfigPanel, { config: config, onChange: setConfig }))] }));
|
|
53
|
+
}
|
|
54
|
+
// ─── Identity Provider Configuration Panel ────────────────────────
|
|
55
|
+
function IdPConfigPanel({ config, onChange, statuses, onValidate }) {
|
|
56
|
+
const idps = [
|
|
57
|
+
{
|
|
58
|
+
type: "eidas_wallet",
|
|
59
|
+
name: "eIDAS 2.0 / EUDI Wallet",
|
|
60
|
+
description: "European Digital Identity Wallet — OpenID4VP verification",
|
|
61
|
+
fields: ["rpRegistration", "requestedAttributes", "verification", "presentationFlow"],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
type: "entra_id",
|
|
65
|
+
name: "Microsoft Entra ID",
|
|
66
|
+
description: "Enterprise IAM — OAuth 2.0, OBO Flow, Workload Identity",
|
|
67
|
+
fields: ["appRegistration", "permissions", "delegationMapping", "agentIdentity"],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
type: "auth0",
|
|
71
|
+
name: "Auth0",
|
|
72
|
+
description: "Customer-facing CIAM — Organizations, Actions, OpenFGA",
|
|
73
|
+
fields: ["tenant", "organization", "rbac", "actions", "openFga", "m2m"],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: "okta",
|
|
77
|
+
name: "Okta",
|
|
78
|
+
description: "Enterprise workforce — Custom Auth Server, SCIM, Event Hooks",
|
|
79
|
+
fields: ["orgConfig", "scopes", "groupMapping", "eventHooks", "scim"],
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
const toggleIdP = (type) => {
|
|
83
|
+
onChange({
|
|
84
|
+
...config,
|
|
85
|
+
idpConfigs: {
|
|
86
|
+
...config.idpConfigs,
|
|
87
|
+
[type]: {
|
|
88
|
+
...config.idpConfigs?.[type],
|
|
89
|
+
type,
|
|
90
|
+
enabled: !config.idpConfigs?.[type]?.enabled,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Enable and configure the Identity Providers your end-users will use to authenticate before creating or receiving delegations. Each IdP requires provider-specific credentials." }), idps.map((idp) => {
|
|
96
|
+
const idpConfig = config.idpConfigs?.[idp.type] || {};
|
|
97
|
+
const status = statuses.find((s) => s.type === idp.type);
|
|
98
|
+
return (_jsxs("div", { className: "border border-border rounded-lg overflow-hidden", children: [_jsxs("div", { className: "flex items-center justify-between p-4 bg-muted/30", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("label", { className: "relative inline-flex items-center cursor-pointer", children: [_jsx("input", { type: "checkbox", checked: idpConfig.enabled || false, onChange: () => toggleIdP(idp.type), className: "sr-only peer" }), _jsx("div", { className: "w-10 h-5 bg-muted rounded-full peer-checked:bg-primary transition-colors" })] }), _jsxs("div", { children: [_jsx("div", { className: "font-medium text-sm", children: idp.name }), _jsx("div", { className: "text-xs text-muted-foreground", children: idp.description })] })] }), idpConfig.enabled && (_jsx("button", { onClick: () => onValidate(idp.type), disabled: status?.validating, className: "text-xs px-3 py-1.5 rounded border border-border hover:bg-muted", children: status?.validating
|
|
99
|
+
? "Validating..."
|
|
100
|
+
: status?.valid === true
|
|
101
|
+
? "✓ Valid"
|
|
102
|
+
: status?.valid === false
|
|
103
|
+
? "✗ Invalid"
|
|
104
|
+
: "Validate" }))] }), idpConfig.enabled && (_jsxs("div", { className: "p-4 border-t border-border space-y-4", children: [idp.type === "entra_id" && (_jsx(EntraIdFields, { config: (config.idpConfigs?.["entra_id"] || {}), onChange: (c) => {
|
|
105
|
+
onChange({
|
|
106
|
+
...config,
|
|
107
|
+
idpConfigs: { ...config.idpConfigs, entra_id: c },
|
|
108
|
+
});
|
|
109
|
+
} })), idp.type === "auth0" && (_jsx(Auth0Fields, { config: (config.idpConfigs?.["auth0"] || {}), onChange: (c) => {
|
|
110
|
+
onChange({
|
|
111
|
+
...config,
|
|
112
|
+
idpConfigs: { ...config.idpConfigs, auth0: c },
|
|
113
|
+
});
|
|
114
|
+
} })), idp.type === "okta" && (_jsx(OktaFields, { config: (config.idpConfigs?.["okta"] || {}), onChange: (c) => {
|
|
115
|
+
onChange({
|
|
116
|
+
...config,
|
|
117
|
+
idpConfigs: { ...config.idpConfigs, okta: c },
|
|
118
|
+
});
|
|
119
|
+
} })), idp.type === "eidas_wallet" && (_jsx(EidasFields, { config: (config.idpConfigs?.["eidas_wallet"] || {}), onChange: (c) => {
|
|
120
|
+
onChange({
|
|
121
|
+
...config,
|
|
122
|
+
idpConfigs: { ...config.idpConfigs, eidas_wallet: c },
|
|
123
|
+
});
|
|
124
|
+
} }))] }))] }, idp.type));
|
|
125
|
+
})] }));
|
|
126
|
+
}
|
|
127
|
+
// ─── Entra ID Configuration Fields ────────────────────────────────
|
|
128
|
+
function EntraIdFields({ config, onChange, }) {
|
|
129
|
+
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Client ID" }), _jsx("input", { type: "text", value: config.appRegistration?.clientId || "", onChange: (e) => onChange({
|
|
130
|
+
...config,
|
|
131
|
+
appRegistration: { ...config.appRegistration, clientId: e.target.value },
|
|
132
|
+
}), placeholder: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Tenant ID" }), _jsx("input", { type: "text", value: config.appRegistration?.tenantId || "", onChange: (e) => onChange({
|
|
133
|
+
...config,
|
|
134
|
+
appRegistration: { ...config.appRegistration, tenantId: e.target.value },
|
|
135
|
+
}), placeholder: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx or 'common'", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { className: "md:col-span-2", children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Client Secret" }), _jsx("input", { type: "password", value: config.appRegistration?.clientSecret || "", onChange: (e) => onChange({
|
|
136
|
+
...config,
|
|
137
|
+
appRegistration: { ...config.appRegistration, clientSecret: e.target.value },
|
|
138
|
+
}), placeholder: "Enter client secret (stored in Secrets Manager)", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" }), _jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "Stored securely in AWS Secrets Manager. Never exposed in API responses." })] }), _jsxs("div", { className: "md:col-span-2", children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Role \u2192 Scope Mapping" }), _jsx("p", { className: "text-xs text-muted-foreground mb-2", children: "Map Entra ID App Roles to Mandaitor delegation scopes" }), _jsx("div", { className: "border border-dashed border-border rounded p-3 text-xs text-muted-foreground", children: "Example: \"Finance Approver\" \u2192 [\"finance:approve\", \"finance:read\"]" })] })] }));
|
|
139
|
+
}
|
|
140
|
+
// ─── Auth0 Configuration Fields ───────────────────────────────────
|
|
141
|
+
function Auth0Fields({ config, onChange, }) {
|
|
142
|
+
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Auth0 Domain" }), _jsx("input", { type: "text", value: config.tenant?.domain || "", onChange: (e) => onChange({
|
|
143
|
+
...config,
|
|
144
|
+
tenant: { ...config.tenant, domain: e.target.value },
|
|
145
|
+
}), placeholder: "your-tenant.eu.auth0.com", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Client ID" }), _jsx("input", { type: "text", value: config.tenant?.clientId || "", onChange: (e) => onChange({
|
|
146
|
+
...config,
|
|
147
|
+
tenant: { ...config.tenant, clientId: e.target.value },
|
|
148
|
+
}), placeholder: "Auth0 Application Client ID", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Organization ID" }), _jsx("input", { type: "text", value: config.organization?.orgId || "", onChange: (e) => onChange({
|
|
149
|
+
...config,
|
|
150
|
+
organization: { ...config.organization, orgId: e.target.value },
|
|
151
|
+
}), placeholder: "org_xxxxxxxxxx", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "API Audience" }), _jsx("input", { type: "text", value: config.tenant?.audience || "", onChange: (e) => onChange({
|
|
152
|
+
...config,
|
|
153
|
+
tenant: { ...config.tenant, audience: e.target.value },
|
|
154
|
+
}), placeholder: "https://api.mandaitor.eu", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { className: "md:col-span-2", children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Client Secret" }), _jsx("input", { type: "password", value: config.tenant?.clientSecret || "", onChange: (e) => onChange({
|
|
155
|
+
...config,
|
|
156
|
+
tenant: { ...config.tenant, clientSecret: e.target.value },
|
|
157
|
+
}), placeholder: "Enter client secret (stored in Secrets Manager)", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsx("div", { className: "md:col-span-2", children: _jsxs("label", { className: "flex items-center gap-2 text-xs font-medium", children: [_jsx("input", { type: "checkbox", checked: config.m2m?.enabled || false, onChange: (e) => onChange({
|
|
158
|
+
...config,
|
|
159
|
+
m2m: { ...config.m2m, enabled: e.target.checked },
|
|
160
|
+
}) }), "Enable M2M (Agent-to-Agent) Authentication"] }) })] }));
|
|
161
|
+
}
|
|
162
|
+
// ─── Okta Configuration Fields ────────────────────────────────────
|
|
163
|
+
function OktaFields({ config, onChange, }) {
|
|
164
|
+
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Okta Org URL" }), _jsx("input", { type: "text", value: config.orgConfig?.orgUrl || "", onChange: (e) => onChange({
|
|
165
|
+
...config,
|
|
166
|
+
orgConfig: { ...config.orgConfig, orgUrl: e.target.value },
|
|
167
|
+
}), placeholder: "https://your-org.okta.com", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Auth Server ID" }), _jsx("input", { type: "text", value: config.orgConfig?.authServerId || "", onChange: (e) => onChange({
|
|
168
|
+
...config,
|
|
169
|
+
orgConfig: { ...config.orgConfig, authServerId: e.target.value },
|
|
170
|
+
}), placeholder: "Custom authorization server ID", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Client ID" }), _jsx("input", { type: "text", value: config.orgConfig?.clientId || "", onChange: (e) => onChange({
|
|
171
|
+
...config,
|
|
172
|
+
orgConfig: { ...config.orgConfig, clientId: e.target.value },
|
|
173
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Client Secret" }), _jsx("input", { type: "password", value: config.orgConfig?.clientSecret || "", onChange: (e) => onChange({
|
|
174
|
+
...config,
|
|
175
|
+
orgConfig: { ...config.orgConfig, clientSecret: e.target.value },
|
|
176
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsx("div", { className: "md:col-span-2", children: _jsxs("label", { className: "flex items-center gap-2 text-xs font-medium", children: [_jsx("input", { type: "checkbox", checked: config.scim?.enabled || false, onChange: (e) => onChange({
|
|
177
|
+
...config,
|
|
178
|
+
scim: { ...config.scim, enabled: e.target.checked },
|
|
179
|
+
}) }), "Enable SCIM 2.0 Provisioning"] }) }), _jsx("div", { className: "md:col-span-2", children: _jsxs("label", { className: "flex items-center gap-2 text-xs font-medium", children: [_jsx("input", { type: "checkbox", checked: config.eventHooks?.enabled || false, onChange: (e) => onChange({
|
|
180
|
+
...config,
|
|
181
|
+
eventHooks: { ...config.eventHooks, enabled: e.target.checked },
|
|
182
|
+
}) }), "Enable Event Hooks (lifecycle sync)"] }) })] }));
|
|
183
|
+
}
|
|
184
|
+
// ─── eIDAS Wallet Configuration Fields ────────────────────────────
|
|
185
|
+
function EidasFields({ config, onChange, }) {
|
|
186
|
+
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Registrar Country" }), _jsxs("select", { value: config.rpRegistration?.registrarCountry || "", onChange: (e) => onChange({
|
|
187
|
+
...config,
|
|
188
|
+
rpRegistration: { ...config.rpRegistration, registrarCountry: e.target.value },
|
|
189
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background", children: [_jsx("option", { value: "", children: "Select country..." }), _jsx("option", { value: "DE", children: "Germany" }), _jsx("option", { value: "FR", children: "France" }), _jsx("option", { value: "NL", children: "Netherlands" }), _jsx("option", { value: "AT", children: "Austria" }), _jsx("option", { value: "ES", children: "Spain" }), _jsx("option", { value: "IT", children: "Italy" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "RP Identifier" }), _jsx("input", { type: "text", value: config.rpRegistration?.rpIdentifier || "", onChange: (e) => onChange({
|
|
190
|
+
...config,
|
|
191
|
+
rpRegistration: { ...config.rpRegistration, rpIdentifier: e.target.value },
|
|
192
|
+
}), placeholder: "Unique RP identifier from Registrar", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Presentation Mode" }), _jsxs("select", { value: config.presentationFlow?.mode || "both", onChange: (e) => onChange({
|
|
193
|
+
...config,
|
|
194
|
+
presentationFlow: { ...config.presentationFlow, mode: e.target.value },
|
|
195
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background", children: [_jsx("option", { value: "cross_device", children: "Cross-device (QR Code)" }), _jsx("option", { value: "same_device", children: "Same-device (Deep Link)" }), _jsx("option", { value: "both", children: "Both" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Trusted List URL" }), _jsx("input", { type: "url", value: config.verification?.trustedListUrl || "", onChange: (e) => onChange({
|
|
196
|
+
...config,
|
|
197
|
+
verification: { ...config.verification, trustedListUrl: e.target.value },
|
|
198
|
+
}), placeholder: "https://trusted-list.example.eu", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { className: "md:col-span-2", children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Requested PID Attributes" }), _jsx("div", { className: "flex flex-wrap gap-2 mt-1", children: ["family_name", "given_name", "birth_date", "nationality", "age_over_18"].map((attr) => (_jsxs("label", { className: "flex items-center gap-1.5 text-xs", children: [_jsx("input", { type: "checkbox", checked: config.requestedAttributes?.pid?.includes(attr) || false, onChange: (e) => {
|
|
199
|
+
const current = config.requestedAttributes?.pid || [];
|
|
200
|
+
const updated = e.target.checked
|
|
201
|
+
? [...current, attr]
|
|
202
|
+
: current.filter((a) => a !== attr);
|
|
203
|
+
onChange({
|
|
204
|
+
...config,
|
|
205
|
+
requestedAttributes: { ...config.requestedAttributes, pid: updated },
|
|
206
|
+
});
|
|
207
|
+
} }), attr] }, attr))) })] })] }));
|
|
208
|
+
}
|
|
209
|
+
// ─── Taxonomy Configuration Panel ─────────────────────────────────
|
|
210
|
+
function TaxonomyConfigPanel({ config, onChange }) {
|
|
211
|
+
const availableTaxonomies = [
|
|
212
|
+
{
|
|
213
|
+
id: "@mandaitor/taxonomy-construction",
|
|
214
|
+
name: "Construction",
|
|
215
|
+
partner: "monco.ai",
|
|
216
|
+
actions: 14,
|
|
217
|
+
description: "BIM access, site management, subcontractor delegation",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
id: "@mandaitor/taxonomy-realestate",
|
|
221
|
+
name: "Real Estate",
|
|
222
|
+
partner: "Mitarbyte",
|
|
223
|
+
actions: 12,
|
|
224
|
+
description: "Property management, tenant communication, listing management",
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
id: "@mandaitor/taxonomy-venture",
|
|
228
|
+
name: "Venture Capital",
|
|
229
|
+
partner: "SouthStarter",
|
|
230
|
+
actions: 10,
|
|
231
|
+
description: "Due diligence, portfolio management, investor relations",
|
|
232
|
+
},
|
|
233
|
+
];
|
|
234
|
+
const toggleTaxonomy = (id) => {
|
|
235
|
+
const current = config.taxonomyLibraries || [];
|
|
236
|
+
const updated = current.includes(id)
|
|
237
|
+
? current.filter((t) => t !== id)
|
|
238
|
+
: [...current, id];
|
|
239
|
+
onChange({ ...config, taxonomyLibraries: updated });
|
|
240
|
+
};
|
|
241
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Select the industry-specific taxonomy libraries that define the available mandate types, scopes, actions, and constraints for your widget." }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4", children: availableTaxonomies.map((tax) => {
|
|
242
|
+
const selected = config.taxonomyLibraries?.includes(tax.id);
|
|
243
|
+
return (_jsxs("div", { onClick: () => toggleTaxonomy(tax.id), className: `border rounded-lg p-4 cursor-pointer transition-all ${selected ? "border-primary bg-primary/5" : "border-border hover:border-primary/50"}`, children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("span", { className: "font-medium text-sm", children: tax.name }), _jsx("input", { type: "checkbox", checked: selected, readOnly: true, className: "pointer-events-none" })] }), _jsx("p", { className: "text-xs text-muted-foreground", children: tax.description }), _jsxs("div", { className: "flex items-center gap-3 mt-3 text-xs text-muted-foreground", children: [_jsxs("span", { children: [tax.actions, " Actions"] }), _jsx("span", { children: "\u00B7" }), _jsxs("span", { children: ["Partner: ", tax.partner] })] })] }, tax.id));
|
|
244
|
+
}) }), _jsxs("div", { className: "mt-8", children: [_jsx("h4", { className: "font-medium text-sm mb-3", children: "Mandate Templates" }), _jsx("p", { className: "text-xs text-muted-foreground mb-3", children: "Pre-configured mandate templates that appear in the delegation widget for quick creation." }), _jsx("div", { className: "border border-dashed border-border rounded p-4 text-center text-xs text-muted-foreground", children: "Templates are auto-populated from selected taxonomy libraries. Custom templates can be added via the API." })] })] }));
|
|
245
|
+
}
|
|
246
|
+
// ─── Branding Configuration Panel ─────────────────────────────────
|
|
247
|
+
function BrandingConfigPanel({ config, onChange }) {
|
|
248
|
+
const branding = config.branding || {};
|
|
249
|
+
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Logo URL" }), _jsx("input", { type: "url", value: branding.logoUrl || "", onChange: (e) => onChange({
|
|
250
|
+
...config,
|
|
251
|
+
branding: { ...branding, logoUrl: e.target.value },
|
|
252
|
+
}), placeholder: "https://your-company.com/logo.svg", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Primary Color" }), _jsxs("div", { className: "flex gap-2", children: [_jsx("input", { type: "color", value: branding.primaryColor || "#1A56DB", onChange: (e) => onChange({
|
|
253
|
+
...config,
|
|
254
|
+
branding: { ...branding, primaryColor: e.target.value },
|
|
255
|
+
}), className: "w-10 h-10 rounded border border-border cursor-pointer" }), _jsx("input", { type: "text", value: branding.primaryColor || "#1A56DB", onChange: (e) => onChange({
|
|
256
|
+
...config,
|
|
257
|
+
branding: { ...branding, primaryColor: e.target.value },
|
|
258
|
+
}), className: "flex-1 px-3 py-2 text-sm border border-border rounded bg-background" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Consent Title" }), _jsx("input", { type: "text", value: branding.consentText?.title || "", onChange: (e) => onChange({
|
|
259
|
+
...config,
|
|
260
|
+
branding: {
|
|
261
|
+
...branding,
|
|
262
|
+
consentText: { ...branding.consentText, title: e.target.value },
|
|
263
|
+
},
|
|
264
|
+
}), placeholder: "Authorize Delegation", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Locale" }), _jsxs("select", { value: branding.consentText?.locale || "de-DE", onChange: (e) => onChange({
|
|
265
|
+
...config,
|
|
266
|
+
branding: {
|
|
267
|
+
...branding,
|
|
268
|
+
consentText: { ...branding.consentText, locale: e.target.value },
|
|
269
|
+
},
|
|
270
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background", children: [_jsx("option", { value: "de-DE", children: "Deutsch (DE)" }), _jsx("option", { value: "en-US", children: "English (US)" }), _jsx("option", { value: "fr-FR", children: "Fran\u00E7ais (FR)" }), _jsx("option", { value: "es-ES", children: "Espa\u00F1ol (ES)" }), _jsx("option", { value: "it-IT", children: "Italiano (IT)" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Border Radius" }), _jsxs("select", { value: branding.borderRadius || "md", onChange: (e) => onChange({
|
|
271
|
+
...config,
|
|
272
|
+
branding: { ...branding, borderRadius: e.target.value },
|
|
273
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background", children: [_jsx("option", { value: "none", children: "None (sharp corners)" }), _jsx("option", { value: "sm", children: "Small (4px)" }), _jsx("option", { value: "md", children: "Medium (8px)" }), _jsx("option", { value: "lg", children: "Large (12px)" })] })] }), _jsx("div", { children: _jsxs("label", { className: "flex items-center gap-2 text-xs font-medium", children: [_jsx("input", { type: "checkbox", checked: branding.darkMode || false, onChange: (e) => onChange({
|
|
274
|
+
...config,
|
|
275
|
+
branding: { ...branding, darkMode: e.target.checked },
|
|
276
|
+
}) }), "Dark Mode Widget"] }) })] }));
|
|
277
|
+
}
|
|
278
|
+
// ─── Webhook Configuration Panel ──────────────────────────────────
|
|
279
|
+
function WebhookConfigPanel({ config, onChange }) {
|
|
280
|
+
const webhooks = config.webhooks || [];
|
|
281
|
+
const addWebhook = () => {
|
|
282
|
+
onChange({
|
|
283
|
+
...config,
|
|
284
|
+
webhooks: [
|
|
285
|
+
...webhooks,
|
|
286
|
+
{
|
|
287
|
+
id: `wh_${Date.now()}`,
|
|
288
|
+
url: "",
|
|
289
|
+
events: [],
|
|
290
|
+
secret: "",
|
|
291
|
+
active: true,
|
|
292
|
+
retryPolicy: { maxRetries: 3, backoffMultiplier: 2 },
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
});
|
|
296
|
+
};
|
|
297
|
+
const allEvents = [
|
|
298
|
+
"mandate.created",
|
|
299
|
+
"mandate.activated",
|
|
300
|
+
"mandate.revoked",
|
|
301
|
+
"mandate.expired",
|
|
302
|
+
"mandate.used",
|
|
303
|
+
"delegation.requested",
|
|
304
|
+
"delegation.approved",
|
|
305
|
+
"delegation.rejected",
|
|
306
|
+
"agent.registered",
|
|
307
|
+
"agent.deactivated",
|
|
308
|
+
];
|
|
309
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Configure webhook endpoints to receive real-time notifications for mandate lifecycle events." }), _jsx("button", { onClick: addWebhook, className: "text-xs px-3 py-1.5 rounded border border-border hover:bg-muted", children: "+ Add Webhook" })] }), webhooks.map((wh, i) => (_jsxs("div", { className: "border border-border rounded-lg p-4 space-y-3", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-3", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Endpoint URL" }), _jsx("input", { type: "url", value: wh.url, onChange: (e) => {
|
|
310
|
+
const updated = [...webhooks];
|
|
311
|
+
updated[i] = { ...wh, url: e.target.value };
|
|
312
|
+
onChange({ ...config, webhooks: updated });
|
|
313
|
+
}, placeholder: "https://your-app.com/webhooks/mandaitor", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Signing Secret" }), _jsx("input", { type: "password", value: wh.secret, onChange: (e) => {
|
|
314
|
+
const updated = [...webhooks];
|
|
315
|
+
updated[i] = { ...wh, secret: e.target.value };
|
|
316
|
+
onChange({ ...config, webhooks: updated });
|
|
317
|
+
}, placeholder: "HMAC signing secret", className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-2", children: "Subscribed Events" }), _jsx("div", { className: "flex flex-wrap gap-2", children: allEvents.map((evt) => (_jsxs("label", { className: "flex items-center gap-1 text-xs", children: [_jsx("input", { type: "checkbox", checked: wh.events?.includes(evt), onChange: (e) => {
|
|
318
|
+
const updated = [...webhooks];
|
|
319
|
+
updated[i] = {
|
|
320
|
+
...wh,
|
|
321
|
+
events: e.target.checked
|
|
322
|
+
? [...(wh.events || []), evt]
|
|
323
|
+
: wh.events.filter((ev) => ev !== evt),
|
|
324
|
+
};
|
|
325
|
+
onChange({ ...config, webhooks: updated });
|
|
326
|
+
} }), evt] }, evt))) })] })] }, wh.id)))] }));
|
|
327
|
+
}
|
|
328
|
+
// ─── Approval Workflow Panel ──────────────────────────────────────
|
|
329
|
+
function ApprovalConfigPanel({ config, onChange }) {
|
|
330
|
+
const workflow = config.approvalWorkflow || {};
|
|
331
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsx("div", { className: "flex items-center gap-3", children: _jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [_jsx("input", { type: "checkbox", checked: workflow.enabled || false, onChange: (e) => onChange({
|
|
332
|
+
...config,
|
|
333
|
+
approvalWorkflow: { ...workflow, enabled: e.target.checked },
|
|
334
|
+
}) }), "Enable Approval Workflow"] }) }), workflow.enabled && (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Approval Mode" }), _jsxs("select", { value: workflow.mode || "manual", onChange: (e) => onChange({
|
|
335
|
+
...config,
|
|
336
|
+
approvalWorkflow: {
|
|
337
|
+
...workflow,
|
|
338
|
+
mode: e.target.value,
|
|
339
|
+
},
|
|
340
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background max-w-xs", children: [_jsx("option", { value: "auto", children: "Auto-approve all" }), _jsx("option", { value: "manual", children: "Manual approval required" }), _jsx("option", { value: "conditional", children: "Conditional (rule-based)" })] })] }), workflow.mode === "conditional" && (_jsx("div", { className: "border border-dashed border-border rounded p-4 text-xs text-muted-foreground", children: "Conditional rules: auto-approve low-risk delegations, require approval for high-value scopes or agent-to-agent chains. Configure rules via the API." })), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Notification Channel" }), _jsxs("select", { value: workflow.notificationChannel || "email", onChange: (e) => onChange({
|
|
341
|
+
...config,
|
|
342
|
+
approvalWorkflow: {
|
|
343
|
+
...workflow,
|
|
344
|
+
notificationChannel: e.target.value,
|
|
345
|
+
},
|
|
346
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background max-w-xs", children: [_jsx("option", { value: "email", children: "Email" }), _jsx("option", { value: "webhook", children: "Webhook" }), _jsx("option", { value: "both", children: "Both" })] })] })] }))] }));
|
|
347
|
+
}
|
|
348
|
+
// ─── Constraint Defaults Panel ────────────────────────────────────
|
|
349
|
+
function ConstraintConfigPanel({ config, onChange }) {
|
|
350
|
+
const constraints = config.constraintDefaults || {};
|
|
351
|
+
return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Max Mandate Duration" }), _jsxs("select", { value: constraints.maxDuration || 86400, onChange: (e) => onChange({
|
|
352
|
+
...config,
|
|
353
|
+
constraintDefaults: { ...constraints, maxDuration: parseInt(e.target.value) },
|
|
354
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background", children: [_jsx("option", { value: 3600, children: "1 hour" }), _jsx("option", { value: 28800, children: "8 hours" }), _jsx("option", { value: 86400, children: "24 hours" }), _jsx("option", { value: 604800, children: "7 days" }), _jsx("option", { value: 2592000, children: "30 days" }), _jsx("option", { value: 31536000, children: "1 year" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium mb-1", children: "Max Delegation Chain Depth" }), _jsx("input", { type: "number", min: 1, max: 10, value: constraints.maxDelegationDepth || 3, onChange: (e) => onChange({
|
|
355
|
+
...config,
|
|
356
|
+
constraintDefaults: { ...constraints, maxDelegationDepth: parseInt(e.target.value) },
|
|
357
|
+
}), className: "w-full px-3 py-2 text-sm border border-border rounded bg-background" }), _jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "How many levels deep can delegations be chained (A \u2192 B \u2192 C = depth 2)" })] }), _jsx("div", { children: _jsxs("label", { className: "flex items-center gap-2 text-xs font-medium", children: [_jsx("input", { type: "checkbox", checked: constraints.requireGeoFence || false, onChange: (e) => onChange({
|
|
358
|
+
...config,
|
|
359
|
+
constraintDefaults: { ...constraints, requireGeoFence: e.target.checked },
|
|
360
|
+
}) }), "Require Geo-Fence for all mandates"] }) }), _jsx("div", { children: _jsxs("label", { className: "flex items-center gap-2 text-xs font-medium", children: [_jsx("input", { type: "checkbox", checked: constraints.requireMfa || false, onChange: (e) => onChange({
|
|
361
|
+
...config,
|
|
362
|
+
constraintDefaults: { ...constraints, requireMfa: e.target.checked },
|
|
363
|
+
}) }), "Require MFA for mandate creation"] }) })] }));
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=WidgetConfigDashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetConfigDashboard.js","sourceRoot":"","sources":["../../src/components/WidgetConfigDashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MandaitorConfigClient } from "@mandaitor/sdk";
|
|
2
|
+
export interface UseMandaitorSDKResult {
|
|
3
|
+
sdk: MandaitorConfigClient;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Hook that provides the {@link MandaitorConfigClient} for widget
|
|
7
|
+
* configuration operations (tenant dashboard).
|
|
8
|
+
*
|
|
9
|
+
* Pass `configAuthToken` (a Cognito JWT) to {@link MandaitorProvider} to
|
|
10
|
+
* authenticate config API requests.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useMandaitorSDK(): UseMandaitorSDKResult;
|
|
13
|
+
//# sourceMappingURL=useMandaitorSDK.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMandaitorSDK.d.ts","sourceRoot":"","sources":["../../src/hooks/useMandaitorSDK.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,qBAAqB,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,qBAAqB,CAGvD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useMandaitorContext } from "../components/MandaitorProvider";
|
|
2
|
+
/**
|
|
3
|
+
* Hook that provides the {@link MandaitorConfigClient} for widget
|
|
4
|
+
* configuration operations (tenant dashboard).
|
|
5
|
+
*
|
|
6
|
+
* Pass `configAuthToken` (a Cognito JWT) to {@link MandaitorProvider} to
|
|
7
|
+
* authenticate config API requests.
|
|
8
|
+
*/
|
|
9
|
+
export function useMandaitorSDK() {
|
|
10
|
+
const { configClient } = useMandaitorContext();
|
|
11
|
+
return { sdk: configClient };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=useMandaitorSDK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMandaitorSDK.js","sourceRoot":"","sources":["../../src/hooks/useMandaitorSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAOtE;;;;;;GAMG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC/C,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Mandate, AuditEvent } from "@mandaitor/sdk";
|
|
2
|
+
export interface UseMandateOptions {
|
|
3
|
+
/** Also fetch audit events for this mandate */
|
|
4
|
+
includeEvents?: boolean;
|
|
5
|
+
/** Auto-refetch interval in milliseconds (0 = disabled) */
|
|
6
|
+
refetchInterval?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface UseMandateResult {
|
|
9
|
+
mandate: Mandate | null;
|
|
10
|
+
events: AuditEvent[];
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
error: string | null;
|
|
13
|
+
refetch: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function useMandate(mandateId: string | null, options?: UseMandateOptions): UseMandateResult;
|
|
16
|
+
//# sourceMappingURL=useMandate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMandate.d.ts","sourceRoot":"","sources":["../../src/hooks/useMandate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAwClB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useState, useEffect, useCallback } from "react";
|
|
2
|
+
import { useMandaitorContext } from "../components/MandaitorProvider";
|
|
3
|
+
export function useMandate(mandateId, options = {}) {
|
|
4
|
+
const { client } = useMandaitorContext();
|
|
5
|
+
const [mandate, setMandate] = useState(null);
|
|
6
|
+
const [events, setEvents] = useState([]);
|
|
7
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
8
|
+
const [error, setError] = useState(null);
|
|
9
|
+
const fetchMandate = useCallback(async () => {
|
|
10
|
+
if (!mandateId)
|
|
11
|
+
return;
|
|
12
|
+
setIsLoading(true);
|
|
13
|
+
setError(null);
|
|
14
|
+
try {
|
|
15
|
+
const m = await client.getMandate(mandateId);
|
|
16
|
+
setMandate(m);
|
|
17
|
+
if (options.includeEvents) {
|
|
18
|
+
const evtResponse = await client.getMandateEvents(mandateId, { limit: 50 });
|
|
19
|
+
setEvents(evtResponse.items);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
setError(err instanceof Error ? err.message : "Failed to fetch mandate");
|
|
24
|
+
setMandate(null);
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
setIsLoading(false);
|
|
28
|
+
}
|
|
29
|
+
}, [client, mandateId, options.includeEvents]);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
fetchMandate();
|
|
32
|
+
}, [fetchMandate]);
|
|
33
|
+
// Auto-refetch interval
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (!options.refetchInterval || options.refetchInterval <= 0)
|
|
36
|
+
return;
|
|
37
|
+
const interval = setInterval(fetchMandate, options.refetchInterval);
|
|
38
|
+
return () => clearInterval(interval);
|
|
39
|
+
}, [fetchMandate, options.refetchInterval]);
|
|
40
|
+
return { mandate, events, isLoading, error, refetch: fetchMandate };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=useMandate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMandate.js","sourceRoot":"","sources":["../../src/hooks/useMandate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAkBtE,MAAM,UAAU,UAAU,CACxB,SAAwB,EACxB,UAA6B,EAAE;IAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC7C,UAAU,CAAC,CAAC,CAAC,CAAC;YAEd,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5E,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACzE,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,wBAAwB;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC;YAAE,OAAO;QACrE,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QACpE,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Mandate } from "@mandaitor/sdk";
|
|
2
|
+
export interface UseMandatesOptions {
|
|
3
|
+
/** Filter by status (comma-separated for multiple) */
|
|
4
|
+
status?: string;
|
|
5
|
+
/** Page size (default: 20) */
|
|
6
|
+
limit?: number;
|
|
7
|
+
/** Auto-refetch interval in milliseconds (0 = disabled) */
|
|
8
|
+
refetchInterval?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface UseMandatesResult {
|
|
11
|
+
mandates: Mandate[];
|
|
12
|
+
isLoading: boolean;
|
|
13
|
+
error: string | null;
|
|
14
|
+
hasMore: boolean;
|
|
15
|
+
loadMore: () => void;
|
|
16
|
+
refetch: () => void;
|
|
17
|
+
totalLoaded: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function useMandates(options?: UseMandatesOptions): UseMandatesResult;
|
|
20
|
+
//# sourceMappingURL=useMandates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMandates.d.ts","sourceRoot":"","sources":["../../src/hooks/useMandates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAyE/E"}
|