@atlasauth/react 0.4.1 → 0.6.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/CHANGELOG.md +217 -0
- package/dist/AtlasProvider.d.ts +48 -7
- package/dist/AtlasProvider.js +158 -24
- package/dist/AtlasProvider.js.map +1 -1
- package/dist/api-keys.d.ts +63 -0
- package/dist/api-keys.js +227 -0
- package/dist/api-keys.js.map +1 -0
- package/dist/appearance.d.ts +27 -0
- package/dist/appearance.js +58 -1
- package/dist/appearance.js.map +1 -1
- package/dist/captcha.d.ts +43 -0
- package/dist/captcha.js +109 -0
- package/dist/captcha.js.map +1 -0
- package/dist/components.d.ts +2 -0
- package/dist/components.js +4 -1
- package/dist/components.js.map +1 -1
- package/dist/contrast.d.ts +24 -0
- package/dist/contrast.js +76 -0
- package/dist/contrast.js.map +1 -0
- package/dist/flow.d.ts +17 -2
- package/dist/flow.js +88 -9
- package/dist/flow.js.map +1 -1
- package/dist/hooks.d.ts +7 -2
- package/dist/hooks.js.map +1 -1
- package/dist/i18n.js +44 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/instance-settings.d.ts +7 -0
- package/dist/instance-settings.js +12 -0
- package/dist/instance-settings.js.map +1 -0
- package/dist/sign-in.d.ts +2 -0
- package/dist/sign-in.js +8 -3
- package/dist/sign-in.js.map +1 -1
- package/dist/sign-up.d.ts +13 -0
- package/dist/sign-up.js +120 -2
- package/dist/sign-up.js.map +1 -1
- package/dist/styles.d.ts +14 -2
- package/dist/styles.js +30 -13
- package/dist/styles.js.map +1 -1
- package/package.json +4 -3
package/dist/api-keys.js
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useApiKeys = useApiKeys;
|
|
4
|
+
exports.ApiKeys = ApiKeys;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const js_1 = require("@atlasauth/js");
|
|
8
|
+
const reverification_1 = require("./reverification");
|
|
9
|
+
const components_shared_1 = require("./components-shared");
|
|
10
|
+
function useApiKeys(options = {}) {
|
|
11
|
+
const { organizationId } = options;
|
|
12
|
+
const client = (0, components_shared_1.useMeClient)();
|
|
13
|
+
const reverification = (0, reverification_1.useReverification)();
|
|
14
|
+
const { withReverification } = reverification;
|
|
15
|
+
const [status, setStatus] = (0, react_1.useState)('loading');
|
|
16
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
17
|
+
const [list, setList] = (0, react_1.useState)({ data: [], allowedScopes: [], allowedClaims: [], maxActiveKeys: 0, activeCount: 0 });
|
|
18
|
+
const reload = (0, react_1.useCallback)(async () => {
|
|
19
|
+
try {
|
|
20
|
+
const next = await (0, js_1.listApiKeys)(client, { organizationId });
|
|
21
|
+
setList(next);
|
|
22
|
+
setStatus('ready');
|
|
23
|
+
setError(null);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
// A 403 on the LIST means the feature is off (or org keys are, or the role
|
|
27
|
+
// lacks the permission) — render nothing actionable rather than an error.
|
|
28
|
+
if (err instanceof js_1.ApiKeyRequestError && err.status === 403) {
|
|
29
|
+
setStatus('disabled');
|
|
30
|
+
setError(err.message);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
setStatus('error');
|
|
34
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
35
|
+
}
|
|
36
|
+
}, [client, organizationId]);
|
|
37
|
+
(0, react_1.useEffect)(() => {
|
|
38
|
+
void reload();
|
|
39
|
+
}, [reload]);
|
|
40
|
+
const createKey = (0, react_1.useCallback)(async (input = {}) => {
|
|
41
|
+
const created = await withReverification(() => (0, js_1.createApiKey)(client, { ...input, ...(organizationId ? { organizationId } : {}) }));
|
|
42
|
+
await reload();
|
|
43
|
+
return created;
|
|
44
|
+
}, [client, organizationId, reload, withReverification]);
|
|
45
|
+
const renameKey = (0, react_1.useCallback)(async (id, name) => {
|
|
46
|
+
const updated = await (0, js_1.updateApiKey)(client, id, { name });
|
|
47
|
+
await reload();
|
|
48
|
+
return updated;
|
|
49
|
+
}, [client, reload]);
|
|
50
|
+
const revokeKey = (0, react_1.useCallback)(async (id) => {
|
|
51
|
+
await (0, js_1.revokeApiKey)(client, id);
|
|
52
|
+
await reload();
|
|
53
|
+
}, [client, reload]);
|
|
54
|
+
return {
|
|
55
|
+
status,
|
|
56
|
+
keys: list.data,
|
|
57
|
+
allowedScopes: list.allowedScopes,
|
|
58
|
+
allowedClaims: list.allowedClaims,
|
|
59
|
+
maxActiveKeys: list.maxActiveKeys,
|
|
60
|
+
activeCount: list.activeCount,
|
|
61
|
+
error,
|
|
62
|
+
reload,
|
|
63
|
+
createKey,
|
|
64
|
+
renameKey,
|
|
65
|
+
revokeKey,
|
|
66
|
+
reverification,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function formatLimit(value) {
|
|
70
|
+
if (value === null || value === undefined)
|
|
71
|
+
return '—';
|
|
72
|
+
if (typeof value === 'object')
|
|
73
|
+
return JSON.stringify(value);
|
|
74
|
+
return String(value);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Drop-in API key manager: list, create (with the reverification prompt when the
|
|
78
|
+
* session is stale), show the new secret once with a copy button, rename, and
|
|
79
|
+
* revoke with a confirmation step.
|
|
80
|
+
*/
|
|
81
|
+
function ApiKeys(props) {
|
|
82
|
+
const { organizationId, onCreate, expiryOptionsDays = [0, 30, 90, 365] } = props;
|
|
83
|
+
const renderClaims = props.renderClaimsFields ?? props.claimsForm;
|
|
84
|
+
const api = useApiKeys({ organizationId });
|
|
85
|
+
const t = (0, components_shared_1.useText)();
|
|
86
|
+
const cardClass = (0, components_shared_1.useClass)('card', 'atlas-card');
|
|
87
|
+
const cls = (0, components_shared_1.useClasses)();
|
|
88
|
+
const [creating, setCreating] = (0, react_1.useState)(false);
|
|
89
|
+
const [name, setName] = (0, react_1.useState)('');
|
|
90
|
+
const [expiryDays, setExpiryDays] = (0, react_1.useState)(expiryOptionsDays[0] ?? 0);
|
|
91
|
+
const [scopes, setScopes] = (0, react_1.useState)([]);
|
|
92
|
+
const [claims, setClaims] = (0, react_1.useState)({});
|
|
93
|
+
const [busy, setBusy] = (0, react_1.useState)(false);
|
|
94
|
+
const [formError, setFormError] = (0, react_1.useState)(null);
|
|
95
|
+
const [secret, setSecret] = (0, react_1.useState)(null);
|
|
96
|
+
const [copied, setCopied] = (0, react_1.useState)(false);
|
|
97
|
+
const [renaming, setRenaming] = (0, react_1.useState)(null);
|
|
98
|
+
const [confirmRevoke, setConfirmRevoke] = (0, react_1.useState)(null);
|
|
99
|
+
const [password, setPassword] = (0, react_1.useState)('');
|
|
100
|
+
const [reauthError, setReauthError] = (0, react_1.useState)(null);
|
|
101
|
+
const claimsCtx = (0, react_1.useMemo)(() => ({
|
|
102
|
+
claims,
|
|
103
|
+
allowedClaims: api.allowedClaims,
|
|
104
|
+
setClaim: (claim, value) => setClaims((prev) => {
|
|
105
|
+
const next = { ...prev };
|
|
106
|
+
if (value === undefined)
|
|
107
|
+
delete next[claim];
|
|
108
|
+
else
|
|
109
|
+
next[claim] = value;
|
|
110
|
+
return next;
|
|
111
|
+
}),
|
|
112
|
+
}), [claims, api.allowedClaims]);
|
|
113
|
+
if (api.status === 'loading')
|
|
114
|
+
return null;
|
|
115
|
+
if (api.status === 'disabled') {
|
|
116
|
+
return ((0, jsx_runtime_1.jsxs)("section", { className: cardClass, "data-atlas": "api-keys", children: [(0, jsx_runtime_1.jsx)("h2", { className: cls('sectionTitle', 'atlas-section-title'), children: t('apiKeys.title') }), (0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), "data-atlas": "api-keys-disabled", children: t('apiKeys.disabled') })] }));
|
|
117
|
+
}
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
const atCap = api.maxActiveKeys > 0 && api.activeCount >= api.maxActiveKeys;
|
|
120
|
+
const resetForm = () => {
|
|
121
|
+
setCreating(false);
|
|
122
|
+
setName('');
|
|
123
|
+
setExpiryDays(expiryOptionsDays[0] ?? 0);
|
|
124
|
+
setScopes([]);
|
|
125
|
+
setClaims({});
|
|
126
|
+
setFormError(null);
|
|
127
|
+
};
|
|
128
|
+
const submit = async () => {
|
|
129
|
+
setBusy(true);
|
|
130
|
+
setFormError(null);
|
|
131
|
+
try {
|
|
132
|
+
const created = await api.createKey({
|
|
133
|
+
...(name.trim() ? { name: name.trim() } : {}),
|
|
134
|
+
...(expiryDays > 0 ? { expiresInSeconds: expiryDays * 24 * 60 * 60 } : {}),
|
|
135
|
+
...(scopes.length > 0 ? { scopes } : {}),
|
|
136
|
+
...(Object.keys(claims).length > 0 ? { claims } : {}),
|
|
137
|
+
});
|
|
138
|
+
setSecret(created.secret);
|
|
139
|
+
setCopied(false);
|
|
140
|
+
resetForm();
|
|
141
|
+
onCreate?.(created);
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
// A cancelled reverification is not an error worth showing.
|
|
145
|
+
if (!(err instanceof Error && err.message === 'Reverification cancelled.')) {
|
|
146
|
+
setFormError(err instanceof Error ? err.message : t('error.generic'));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
setBusy(false);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const confirmIdentity = async () => {
|
|
154
|
+
setReauthError(null);
|
|
155
|
+
try {
|
|
156
|
+
await api.reverification.completeReverification({ strategy: 'password', password });
|
|
157
|
+
setPassword('');
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
setReauthError(err instanceof Error ? err.message : t('error.generic'));
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const copy = async () => {
|
|
164
|
+
if (!secret)
|
|
165
|
+
return;
|
|
166
|
+
try {
|
|
167
|
+
await navigator.clipboard?.writeText(secret);
|
|
168
|
+
setCopied(true);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
/* the secret stays visible for manual copy */
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
const saveRename = async () => {
|
|
175
|
+
if (!renaming)
|
|
176
|
+
return;
|
|
177
|
+
setBusy(true);
|
|
178
|
+
try {
|
|
179
|
+
await api.renameKey(renaming.id, renaming.name.trim() || null);
|
|
180
|
+
setRenaming(null);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
setFormError(err instanceof Error ? err.message : t('error.generic'));
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
setBusy(false);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
const revoke = async (id) => {
|
|
190
|
+
setBusy(true);
|
|
191
|
+
try {
|
|
192
|
+
await api.revokeKey(id);
|
|
193
|
+
setConfirmRevoke(null);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
setFormError(err instanceof Error ? err.message : t('error.generic'));
|
|
197
|
+
}
|
|
198
|
+
finally {
|
|
199
|
+
setBusy(false);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
const statusOf = (key) => {
|
|
203
|
+
if (key.revoked_at)
|
|
204
|
+
return t('apiKeys.revoked');
|
|
205
|
+
if (key.expires_at && key.expires_at <= now)
|
|
206
|
+
return t('apiKeys.expired');
|
|
207
|
+
return null;
|
|
208
|
+
};
|
|
209
|
+
return ((0, jsx_runtime_1.jsxs)("section", { className: cardClass, "data-atlas": "api-keys", children: [(0, jsx_runtime_1.jsx)("h2", { className: cls('sectionTitle', 'atlas-section-title'), children: t('apiKeys.title') }), (0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t(organizationId ? 'apiKeys.organizationSubtitle' : 'apiKeys.subtitle') }), api.error && api.status === 'error' ? ((0, jsx_runtime_1.jsx)("p", { className: cls('alert', 'atlas-alert'), role: "alert", children: api.error })) : null, secret ? ((0, jsx_runtime_1.jsxs)("div", { "data-atlas": "api-key-secret", role: "status", children: [(0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: (0, jsx_runtime_1.jsx)("strong", { children: t('apiKeys.secretTitle') }) }), (0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('apiKeys.secretHint') }), (0, jsx_runtime_1.jsx)("code", { "data-atlas": "api-key-secret-value", children: secret }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => void copy(), children: copied ? t('apiKeys.copied') : t('apiKeys.copy') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => setSecret(null), children: t('apiKeys.done') })] })) : null, api.reverification.needsReverification ? ((0, jsx_runtime_1.jsxs)("div", { "data-atlas": "api-keys-reverification", role: "dialog", "aria-label": t('reverification.title'), children: [(0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: (0, jsx_runtime_1.jsx)("strong", { children: t('reverification.title') }) }), (0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('reverification.subtitle') }), (0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('reverification.passwordLabel') }), (0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-account-input'), type: "password", autoComplete: "current-password", value: password, onChange: (e) => setPassword(e.target.value) })] }), reauthError ? (0, jsx_runtime_1.jsx)("p", { className: cls('formFieldError', 'atlas-error'), role: "alert", children: reauthError }) : null, (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonPrimary', 'atlas-button'), type: "button", onClick: () => void confirmIdentity(), children: t('reverification.submit') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => {
|
|
210
|
+
setPassword('');
|
|
211
|
+
setReauthError(null);
|
|
212
|
+
api.reverification.cancelReverification();
|
|
213
|
+
}, children: t('reverification.cancel') })] })) : null, api.keys.length === 0 ? ((0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), "data-atlas": "api-keys-empty", children: t('apiKeys.empty') })) : ((0, jsx_runtime_1.jsx)("ul", { className: cls('list', 'atlas-list'), "data-atlas": "api-keys-list", children: api.keys.map((key) => {
|
|
214
|
+
const state = statusOf(key);
|
|
215
|
+
const limits = key.limits && typeof key.limits === 'object' ? Object.entries(key.limits) : [];
|
|
216
|
+
return ((0, jsx_runtime_1.jsxs)("li", { className: cls('listItem', 'atlas-list-item'), "data-atlas": "api-key", children: [renaming?.id === key.id ? ((0, jsx_runtime_1.jsxs)("span", { children: [(0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-account-input'), "aria-label": t('apiKeys.nameLabel'), value: renaming.name, onChange: (e) => setRenaming({ id: key.id, name: e.target.value }) }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", disabled: busy, onClick: () => void saveRename(), children: t('apiKeys.save') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => setRenaming(null), children: t('apiKeys.cancel') })] })) : ((0, jsx_runtime_1.jsx)("strong", { children: key.name ?? t('apiKeys.unnamed') })), ' ', (0, jsx_runtime_1.jsxs)("code", { children: [key.prefix, "\u2026"] }), state ? (0, jsx_runtime_1.jsxs)("em", { children: [" \u2014 ", state] }) : null, (0, jsx_runtime_1.jsx)("div", { className: cls('text', 'atlas-text'), children: [
|
|
217
|
+
key.last_used_at
|
|
218
|
+
? t('apiKeys.lastUsed', { date: new Date(key.last_used_at).toLocaleDateString() })
|
|
219
|
+
: t('apiKeys.neverUsed'),
|
|
220
|
+
key.expires_at ? t('apiKeys.expiresOn', { date: new Date(key.expires_at).toLocaleDateString() }) : null,
|
|
221
|
+
key.scopes && key.scopes.length > 0 ? key.scopes.join(', ') : null,
|
|
222
|
+
]
|
|
223
|
+
.filter(Boolean)
|
|
224
|
+
.join(' · ') }), limits.length > 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: cls('text', 'atlas-text'), "data-atlas": "api-key-limits", children: [t('apiKeys.limits'), ": ", limits.map(([k, v]) => `${k} ${formatLimit(v)}`).join(' · ')] })) : null, !key.revoked_at && renaming?.id !== key.id ? (confirmRevoke === key.id ? ((0, jsx_runtime_1.jsxs)("span", { "data-atlas": "api-key-revoke-confirm", children: [(0, jsx_runtime_1.jsx)("span", { className: cls('text', 'atlas-text'), children: t('apiKeys.revokeConfirm') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", disabled: busy, onClick: () => void revoke(key.id), children: t('apiKeys.revokeConfirmButton') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => setConfirmRevoke(null), children: t('apiKeys.cancel') })] })) : ((0, jsx_runtime_1.jsxs)("span", { children: [(0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => setRenaming({ id: key.id, name: key.name ?? '' }), children: t('apiKeys.rename') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: () => setConfirmRevoke(key.id), children: t('apiKeys.revoke') })] }))) : null] }, key.id));
|
|
225
|
+
}) })), formError ? (0, jsx_runtime_1.jsx)("p", { className: cls('alert', 'atlas-alert'), role: "alert", children: formError }) : null, creating ? ((0, jsx_runtime_1.jsxs)("div", { "data-atlas": "api-key-create", children: [(0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('apiKeys.nameLabel') }), (0, jsx_runtime_1.jsx)("input", { className: cls('formFieldInput', 'atlas-account-input'), value: name, maxLength: 100, placeholder: t('apiKeys.namePlaceholder'), onChange: (e) => setName(e.target.value) })] }), (0, jsx_runtime_1.jsxs)("label", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("span", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('apiKeys.expiresLabel') }), (0, jsx_runtime_1.jsx)("select", { className: cls('formFieldInput', 'atlas-account-input'), value: String(expiryDays), onChange: (e) => setExpiryDays(Number(e.target.value)), children: expiryOptionsDays.map((days) => ((0, jsx_runtime_1.jsx)("option", { value: String(days), children: days > 0 ? t('apiKeys.expiresDays', { days: String(days) }) : t('apiKeys.expiresNever') }, days))) })] }), api.allowedScopes.length > 0 ? ((0, jsx_runtime_1.jsxs)("fieldset", { className: cls('formField', 'atlas-field'), children: [(0, jsx_runtime_1.jsx)("legend", { className: cls('formFieldLabel', 'atlas-field-label'), children: t('apiKeys.scopesLabel') }), api.allowedScopes.map((scope) => ((0, jsx_runtime_1.jsxs)("label", { children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: scopes.includes(scope), onChange: (e) => setScopes((prev) => (e.target.checked ? [...prev, scope] : prev.filter((s) => s !== scope))) }), ' ', scope] }, scope)))] })) : null, renderClaims ? renderClaims(claimsCtx) : null, (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonPrimary', 'atlas-button'), type: "button", disabled: busy, onClick: () => void submit(), children: t('apiKeys.submit') }), (0, jsx_runtime_1.jsx)("button", { className: cls('formButtonSecondary', 'atlas-button-secondary'), type: "button", onClick: resetForm, children: t('apiKeys.cancel') })] })) : atCap ? ((0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), "data-atlas": "api-keys-limit", children: t('apiKeys.limitReached', { max: String(api.maxActiveKeys) }) })) : ((0, jsx_runtime_1.jsx)("button", { className: cls('formButtonPrimary', 'atlas-button'), type: "button", onClick: () => setCreating(true), children: t('apiKeys.create') }))] }));
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=api-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../src/api-keys.tsx"],"names":[],"mappings":"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"}
|
package/dist/appearance.d.ts
CHANGED
|
@@ -29,6 +29,20 @@ export interface DesignTokens {
|
|
|
29
29
|
borderRadius?: string;
|
|
30
30
|
fontFamily?: string;
|
|
31
31
|
spacingUnit?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Text and icon colour on a `colorPrimary` fill (the primary button label,
|
|
34
|
+
* the avatar initials). Defaults to white or near-black, whichever contrasts
|
|
35
|
+
* more with the resolved `colorPrimary`. With a design active, an explicit
|
|
36
|
+
* value overrides the design's primary ink.
|
|
37
|
+
*/
|
|
38
|
+
colorTextOnPrimary?: string;
|
|
39
|
+
/**
|
|
40
|
+
* The keyboard focus ring (a solid 2px outline on `:focus-visible`). Defaults
|
|
41
|
+
* to the resolved `colorPrimary`; pick a colour with at least 3:1 contrast
|
|
42
|
+
* against `colorBackground`. With a design active, an explicit value replaces
|
|
43
|
+
* the design's ring colour.
|
|
44
|
+
*/
|
|
45
|
+
colorFocusRing?: string;
|
|
32
46
|
}
|
|
33
47
|
/**
|
|
34
48
|
* Every element a customer may target. Named for what it IS, not where it sits.
|
|
@@ -134,6 +148,8 @@ export declare const THEMES: {
|
|
|
134
148
|
readonly colorBackground: "#14171c";
|
|
135
149
|
readonly colorBorder: "#242932";
|
|
136
150
|
readonly colorPrimary: "#6ea8fe";
|
|
151
|
+
readonly colorTextOnPrimary: string;
|
|
152
|
+
readonly colorFocusRing: "#6ea8fe";
|
|
137
153
|
readonly colorDanger: string;
|
|
138
154
|
readonly borderRadius: string;
|
|
139
155
|
readonly fontFamily: string;
|
|
@@ -141,6 +157,8 @@ export declare const THEMES: {
|
|
|
141
157
|
};
|
|
142
158
|
readonly neobrutalist: {
|
|
143
159
|
readonly colorPrimary: "#ffe600";
|
|
160
|
+
readonly colorTextOnPrimary: string;
|
|
161
|
+
readonly colorFocusRing: "#000000";
|
|
144
162
|
readonly colorText: "#000000";
|
|
145
163
|
readonly colorBackground: "#ffffff";
|
|
146
164
|
readonly colorBorder: "#000000";
|
|
@@ -156,6 +174,15 @@ export declare const THEMES: {
|
|
|
156
174
|
* Later wins, and `undefined` never overwrites. A customer setting one variable
|
|
157
175
|
* on the dark theme expects the other eleven to stay dark, not silently revert
|
|
158
176
|
* to the light defaults.
|
|
177
|
+
*
|
|
178
|
+
* `colorTextOnPrimary` and `colorFocusRing` follow the RESOLVED `colorPrimary`
|
|
179
|
+
* unless set explicitly in `variables` (a theme's own values are for its own
|
|
180
|
+
* primary): the label flips to whichever of white / near-black contrasts more,
|
|
181
|
+
* and the focus ring takes the primary — adjusted in lightness until it has 3:1
|
|
182
|
+
* contrast against `colorBackground` (WCAG 1.4.11), the way the label is picked
|
|
183
|
+
* for contrast. A base theme whose primary would make a poor ring on its own
|
|
184
|
+
* background (neobrutalist yellow on white) keeps its ring while its primary is
|
|
185
|
+
* unchanged. An explicit `colorFocusRing` is used as given.
|
|
159
186
|
*/
|
|
160
187
|
export declare function resolveTokens(appearance?: Appearance): Required<DesignTokens>;
|
|
161
188
|
/** Tokens as CSS custom properties, for the host DOM to inherit. */
|
package/dist/appearance.js
CHANGED
|
@@ -26,6 +26,7 @@ exports.classFor = classFor;
|
|
|
26
26
|
exports.explicitTokens = explicitTokens;
|
|
27
27
|
exports.renderAppearance = renderAppearance;
|
|
28
28
|
const runtime_1 = require("@atlasauth/design/runtime");
|
|
29
|
+
const contrast_1 = require("./contrast");
|
|
29
30
|
var runtime_2 = require("@atlasauth/design/runtime");
|
|
30
31
|
Object.defineProperty(exports, "instanceDesignFrom", { enumerable: true, get: function () { return runtime_2.instanceDesignFrom; } });
|
|
31
32
|
Object.defineProperty(exports, "warnOnce", { enumerable: true, get: function () { return runtime_2.warnOnce; } });
|
|
@@ -46,6 +47,9 @@ exports.DEFAULT_TOKENS = {
|
|
|
46
47
|
borderRadius: '8px',
|
|
47
48
|
fontFamily: 'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',
|
|
48
49
|
spacingUnit: '4px',
|
|
50
|
+
// Both derived from colorPrimary by resolveTokens unless set explicitly.
|
|
51
|
+
colorTextOnPrimary: '#ffffff',
|
|
52
|
+
colorFocusRing: '#5b5bd6',
|
|
49
53
|
};
|
|
50
54
|
/**
|
|
51
55
|
* §10.3: "prebuilt themes shipped (default, dark, neobrutalist as a demo of the
|
|
@@ -61,10 +65,14 @@ exports.THEMES = {
|
|
|
61
65
|
colorBackground: '#14171c',
|
|
62
66
|
colorBorder: '#242932',
|
|
63
67
|
colorPrimary: '#6ea8fe',
|
|
68
|
+
colorTextOnPrimary: (0, contrast_1.textOnPrimary)('#6ea8fe'),
|
|
69
|
+
colorFocusRing: '#6ea8fe',
|
|
64
70
|
},
|
|
65
71
|
neobrutalist: {
|
|
66
72
|
...exports.DEFAULT_TOKENS,
|
|
67
73
|
colorPrimary: '#ffe600',
|
|
74
|
+
colorTextOnPrimary: (0, contrast_1.textOnPrimary)('#ffe600'),
|
|
75
|
+
colorFocusRing: '#000000',
|
|
68
76
|
colorText: '#000000',
|
|
69
77
|
colorBackground: '#ffffff',
|
|
70
78
|
colorBorder: '#000000',
|
|
@@ -78,6 +86,15 @@ exports.THEMES = {
|
|
|
78
86
|
* Later wins, and `undefined` never overwrites. A customer setting one variable
|
|
79
87
|
* on the dark theme expects the other eleven to stay dark, not silently revert
|
|
80
88
|
* to the light defaults.
|
|
89
|
+
*
|
|
90
|
+
* `colorTextOnPrimary` and `colorFocusRing` follow the RESOLVED `colorPrimary`
|
|
91
|
+
* unless set explicitly in `variables` (a theme's own values are for its own
|
|
92
|
+
* primary): the label flips to whichever of white / near-black contrasts more,
|
|
93
|
+
* and the focus ring takes the primary — adjusted in lightness until it has 3:1
|
|
94
|
+
* contrast against `colorBackground` (WCAG 1.4.11), the way the label is picked
|
|
95
|
+
* for contrast. A base theme whose primary would make a poor ring on its own
|
|
96
|
+
* background (neobrutalist yellow on white) keeps its ring while its primary is
|
|
97
|
+
* unchanged. An explicit `colorFocusRing` is used as given.
|
|
81
98
|
*/
|
|
82
99
|
function resolveTokens(appearance) {
|
|
83
100
|
const base = appearance?.baseTheme ? exports.THEMES[appearance.baseTheme] : exports.DEFAULT_TOKENS;
|
|
@@ -87,6 +104,13 @@ function resolveTokens(appearance) {
|
|
|
87
104
|
if (value !== undefined)
|
|
88
105
|
resolved[key] = value;
|
|
89
106
|
}
|
|
107
|
+
const primaryChanged = resolved.colorPrimary !== base.colorPrimary;
|
|
108
|
+
if (overrides.colorTextOnPrimary === undefined) {
|
|
109
|
+
resolved.colorTextOnPrimary = (0, contrast_1.textOnPrimary)(resolved.colorPrimary);
|
|
110
|
+
}
|
|
111
|
+
if (overrides.colorFocusRing === undefined) {
|
|
112
|
+
resolved.colorFocusRing = (0, contrast_1.focusRingOn)(primaryChanged ? resolved.colorPrimary : base.colorFocusRing, resolved.colorBackground);
|
|
113
|
+
}
|
|
90
114
|
return resolved;
|
|
91
115
|
}
|
|
92
116
|
/** Tokens as CSS custom properties, for the host DOM to inherit. */
|
|
@@ -136,11 +160,44 @@ function explicitTokens(appearance) {
|
|
|
136
160
|
* variables inline, no stylesheet, no attributes.
|
|
137
161
|
*/
|
|
138
162
|
function renderAppearance(appearance, instanceDesign, options = {}) {
|
|
139
|
-
|
|
163
|
+
const out = (0, runtime_1.renderDesignAppearance)(appearance, instanceDesign, {
|
|
140
164
|
tokens: explicitTokens(appearance),
|
|
141
165
|
legacyStyle: () => cssVariables(resolveTokens(appearance)),
|
|
142
166
|
frontendApi: options.frontendApi,
|
|
143
167
|
warn: options.warn,
|
|
144
168
|
});
|
|
169
|
+
if (!out.attributes['data-atlas-design'])
|
|
170
|
+
return out;
|
|
171
|
+
return { ...out, style: { ...out.style, ...designAccessibilityVariables(appearance, options.warn ?? runtime_1.warnOnce) } };
|
|
172
|
+
}
|
|
173
|
+
/** Characters an inline token may never contain (mirrors the design system's raw-token guard). */
|
|
174
|
+
const UNSAFE_INLINE = /[;{}<>\\]|\/\*|url\s*\(|expression\s*\(|@import|javascript:/i;
|
|
175
|
+
/**
|
|
176
|
+
* With a design active, the design supplies the primary ink and the focus ring,
|
|
177
|
+
* and the token defaults are not emitted. An EXPLICIT `colorTextOnPrimary` /
|
|
178
|
+
* `colorFocusRing` in `variables` still wins: they go inline on the root. The
|
|
179
|
+
* ring also sets `--atlas-focus-outline-color`, which the design-mode focus
|
|
180
|
+
* outline reads before falling back to the (solid) primary — the design's own
|
|
181
|
+
* `--atlas-color-focus-ring` is translucent, a glow colour, not an outline one.
|
|
182
|
+
*/
|
|
183
|
+
function designAccessibilityVariables(appearance, warn) {
|
|
184
|
+
const vars = {};
|
|
185
|
+
const safe = (key, value) => {
|
|
186
|
+
if (value === undefined)
|
|
187
|
+
return false;
|
|
188
|
+
if (typeof value === 'string' && value.length <= 200 && !UNSAFE_INLINE.test(value))
|
|
189
|
+
return true;
|
|
190
|
+
warn(`appearance.variables.${key} is not a safe CSS value; ignored.`);
|
|
191
|
+
return false;
|
|
192
|
+
};
|
|
193
|
+
const ink = appearance?.variables?.colorTextOnPrimary;
|
|
194
|
+
if (safe('colorTextOnPrimary', ink))
|
|
195
|
+
vars['--atlas-color-text-on-primary'] = ink;
|
|
196
|
+
const ring = appearance?.variables?.colorFocusRing;
|
|
197
|
+
if (safe('colorFocusRing', ring)) {
|
|
198
|
+
vars['--atlas-color-focus-ring'] = ring;
|
|
199
|
+
vars['--atlas-focus-outline-color'] = ring;
|
|
200
|
+
}
|
|
201
|
+
return vars;
|
|
145
202
|
}
|
|
146
203
|
//# sourceMappingURL=appearance.js.map
|
package/dist/appearance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance.js","sourceRoot":"","sources":["../src/appearance.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;
|
|
1
|
+
{"version":3,"file":"appearance.js","sourceRoot":"","sources":["../src/appearance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type FlowCaptcha } from '@atlasauth/js';
|
|
2
|
+
/**
|
|
3
|
+
* The captcha half of the prebuilt `<SignIn>`/`<SignUp>`.
|
|
4
|
+
*
|
|
5
|
+
* Driven entirely by the instance's settings (`captchaFlows` from
|
|
6
|
+
* `/v1/appearance`), so switching captcha on in the dashboard makes the
|
|
7
|
+
* components render it with no code change. The widget itself is the shared
|
|
8
|
+
* `@atlasauth/js` renderer the embed widget also uses.
|
|
9
|
+
*
|
|
10
|
+
* Lifecycle: a visible/managed widget is drawn as soon as its slot mounts, so
|
|
11
|
+
* the user can solve it while filling in the form; an invisible one is executed
|
|
12
|
+
* only when the form is submitted. Tokens are single-use, so after a submit
|
|
13
|
+
* spent one the caller `reset()`s, which draws a fresh widget.
|
|
14
|
+
*/
|
|
15
|
+
export interface CaptchaController {
|
|
16
|
+
/** Whether this flow renders a widget at all. */
|
|
17
|
+
needed: boolean;
|
|
18
|
+
/** Callback ref for the element the widget draws into. */
|
|
19
|
+
slotRef: (el: HTMLDivElement | null) => void;
|
|
20
|
+
/** The solved token, rendering/executing the widget first if needed. Null when
|
|
21
|
+
* no captcha is needed, or the provider failed (the server then refuses with
|
|
22
|
+
* CAPTCHA_REQUIRED, which the caller turns into a message). */
|
|
23
|
+
getToken(): Promise<string | null>;
|
|
24
|
+
/** Drop the (spent) widget and, for a visible one, draw a fresh one. */
|
|
25
|
+
reset(): void;
|
|
26
|
+
}
|
|
27
|
+
export declare function useCaptcha(flow: FlowCaptcha | undefined, options: {
|
|
28
|
+
/** Render at all — the caller's "this flow requires a token here" decision. */
|
|
29
|
+
active: boolean;
|
|
30
|
+
/** Draw the widget as soon as the slot mounts. Default: unless invisible. */
|
|
31
|
+
eager?: boolean;
|
|
32
|
+
/** Called with the token when an eagerly drawn widget is solved. */
|
|
33
|
+
onSolved?: (token: string) => void;
|
|
34
|
+
}): CaptchaController;
|
|
35
|
+
/** The element the widget draws into. Empty until the provider renders. */
|
|
36
|
+
export declare function CaptchaSlot({ controller }: {
|
|
37
|
+
controller: CaptchaController;
|
|
38
|
+
}): import("react").JSX.Element | null;
|
|
39
|
+
/**
|
|
40
|
+
* Swap the server's captcha refusals (CAPTCHA_REQUIRED / CAPTCHA_FAILED) for a
|
|
41
|
+
* localized, form-level message. Shared with the other framework SDKs.
|
|
42
|
+
*/
|
|
43
|
+
export { localizeCaptchaErrors } from '@atlasauth/js';
|
package/dist/captcha.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.localizeCaptchaErrors = void 0;
|
|
4
|
+
exports.useCaptcha = useCaptcha;
|
|
5
|
+
exports.CaptchaSlot = CaptchaSlot;
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const js_1 = require("@atlasauth/js");
|
|
9
|
+
function useCaptcha(flow, options) {
|
|
10
|
+
const needed = options.active && !!flow && (0, js_1.isRenderableCaptcha)(flow.provider);
|
|
11
|
+
const eager = options.eager ?? flow?.widget !== 'invisible';
|
|
12
|
+
const container = (0, react_1.useRef)(null);
|
|
13
|
+
const handle = (0, react_1.useRef)(null);
|
|
14
|
+
const onSolved = (0, react_1.useRef)(options.onSolved);
|
|
15
|
+
onSolved.current = options.onSolved;
|
|
16
|
+
// The latest flow/needed, read by the stable callbacks below.
|
|
17
|
+
const flowKey = `${needed}|${flow?.provider ?? ''}|${flow?.siteKey ?? ''}|${flow?.widget ?? ''}|${eager}`;
|
|
18
|
+
const live = (0, react_1.useRef)({ flow, needed, eager, flowKey });
|
|
19
|
+
live.current = { flow, needed, eager, flowKey };
|
|
20
|
+
// The settings the current widget was drawn with, so a redraw happens only
|
|
21
|
+
// when they actually change.
|
|
22
|
+
const drawnKey = (0, react_1.useRef)(null);
|
|
23
|
+
const remove = (0, react_1.useCallback)(() => {
|
|
24
|
+
handle.current?.remove();
|
|
25
|
+
handle.current = null;
|
|
26
|
+
drawnKey.current = null;
|
|
27
|
+
}, []);
|
|
28
|
+
const mount = (0, react_1.useCallback)(() => {
|
|
29
|
+
const { flow: f, needed: n } = live.current;
|
|
30
|
+
const el = container.current;
|
|
31
|
+
remove();
|
|
32
|
+
if (!n || !f || !el)
|
|
33
|
+
return null;
|
|
34
|
+
const h = (0, js_1.renderCaptchaWidget)(f, el);
|
|
35
|
+
handle.current = h;
|
|
36
|
+
drawnKey.current = live.current.flowKey;
|
|
37
|
+
// Swallow here so a removed / failed widget is never an unhandled
|
|
38
|
+
// rejection; getToken() reads the same promise and reports it.
|
|
39
|
+
h.token.then((token) => {
|
|
40
|
+
if (handle.current === h)
|
|
41
|
+
onSolved.current?.(token);
|
|
42
|
+
}, () => undefined);
|
|
43
|
+
return h;
|
|
44
|
+
}, [remove]);
|
|
45
|
+
const slotRef = (0, react_1.useCallback)((el) => {
|
|
46
|
+
if (el === container.current)
|
|
47
|
+
return;
|
|
48
|
+
container.current = el;
|
|
49
|
+
if (!el) {
|
|
50
|
+
remove();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (live.current.needed && live.current.eager)
|
|
54
|
+
mount();
|
|
55
|
+
}, [mount, remove]);
|
|
56
|
+
// A settings change (the provider/site key arrived, or the flow switched on)
|
|
57
|
+
// while the slot is already mounted: redraw for the new config.
|
|
58
|
+
(0, react_1.useEffect)(() => {
|
|
59
|
+
if (!container.current)
|
|
60
|
+
return;
|
|
61
|
+
if (!live.current.needed || !live.current.eager)
|
|
62
|
+
remove();
|
|
63
|
+
else if (drawnKey.current !== flowKey)
|
|
64
|
+
mount();
|
|
65
|
+
}, [flowKey, mount, remove]);
|
|
66
|
+
(0, react_1.useEffect)(() => remove, [remove]);
|
|
67
|
+
const reset = (0, react_1.useCallback)(() => {
|
|
68
|
+
remove();
|
|
69
|
+
if (live.current.needed && live.current.eager)
|
|
70
|
+
mount();
|
|
71
|
+
}, [mount, remove]);
|
|
72
|
+
// The handle whose token a submit already took. Tokens are single-use, so the
|
|
73
|
+
// next getToken() draws a fresh widget instead of replaying it.
|
|
74
|
+
const spent = (0, react_1.useRef)(null);
|
|
75
|
+
const getToken = (0, react_1.useCallback)(async () => {
|
|
76
|
+
if (!live.current.needed)
|
|
77
|
+
return null;
|
|
78
|
+
let h = handle.current;
|
|
79
|
+
if (!h || spent.current === h)
|
|
80
|
+
h = mount();
|
|
81
|
+
if (!h)
|
|
82
|
+
return null;
|
|
83
|
+
try {
|
|
84
|
+
const token = await h.token;
|
|
85
|
+
spent.current = h;
|
|
86
|
+
return token;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// The provider errored / timed out: start over with a fresh widget.
|
|
90
|
+
if (handle.current === h)
|
|
91
|
+
reset();
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}, [mount, reset]);
|
|
95
|
+
return { needed, slotRef, getToken, reset };
|
|
96
|
+
}
|
|
97
|
+
/** The element the widget draws into. Empty until the provider renders. */
|
|
98
|
+
function CaptchaSlot({ controller }) {
|
|
99
|
+
if (!controller.needed)
|
|
100
|
+
return null;
|
|
101
|
+
return (0, jsx_runtime_1.jsx)("div", { ref: controller.slotRef, className: "atlas-captcha", "data-atlas-captcha": "" });
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Swap the server's captcha refusals (CAPTCHA_REQUIRED / CAPTCHA_FAILED) for a
|
|
105
|
+
* localized, form-level message. Shared with the other framework SDKs.
|
|
106
|
+
*/
|
|
107
|
+
var js_2 = require("@atlasauth/js");
|
|
108
|
+
Object.defineProperty(exports, "localizeCaptchaErrors", { enumerable: true, get: function () { return js_2.localizeCaptchaErrors; } });
|
|
109
|
+
//# sourceMappingURL=captcha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../src/captcha.tsx"],"names":[],"mappings":"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"}
|
package/dist/components.d.ts
CHANGED
|
@@ -28,5 +28,7 @@ export type { ProfilePageProps, ProfileLinkProps } from './account';
|
|
|
28
28
|
export { ActiveSessions, ProfileCard, ManageMfa, ManagePasskeys, UserProfile, } from './account';
|
|
29
29
|
export { useWaitlist, Waitlist } from './waitlist';
|
|
30
30
|
export { useReverification } from './reverification';
|
|
31
|
+
export type { ApiKeysProps, ApiKeysStatus, ApiKeyClaimsFieldsContext, UseApiKeysResult, CreateUserApiKeyInput, CreatedUserApiKey, UserApiKey, } from './api-keys';
|
|
32
|
+
export { ApiKeys, useApiKeys } from './api-keys';
|
|
31
33
|
export type { CheckoutParams } from './billing';
|
|
32
34
|
export { useBilling, useCheckout, useSubscription, useInvoices, usePaymentMethods, PricingTable, Invoices, EmbeddedCheckout, } from './billing';
|