@atlasauth/react 0.15.0 → 0.17.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.
@@ -0,0 +1,324 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.usePolicyText = usePolicyText;
5
+ exports.usePolicyState = usePolicyState;
6
+ exports.usePolicies = usePolicies;
7
+ exports.PolicyViewer = PolicyViewer;
8
+ exports.PolicyConsent = PolicyConsent;
9
+ exports.PolicyClickwrap = PolicyClickwrap;
10
+ exports.PolicyModal = PolicyModal;
11
+ exports.PolicyScrollQueue = PolicyScrollQueue;
12
+ exports.PolicyAcceptStep = PolicyAcceptStep;
13
+ exports.PolicyGate = PolicyGate;
14
+ const jsx_runtime_1 = require("react/jsx-runtime");
15
+ const react_1 = require("react");
16
+ const js_1 = require("@atlasauth/js");
17
+ const AtlasProvider_1 = require("./AtlasProvider");
18
+ const components_shared_1 = require("./components-shared");
19
+ /**
20
+ * Policy acceptance (terms of service, privacy, any policy) — the React half.
21
+ *
22
+ * `<SignUp/>` and `<SignIn/>` use these themselves; they are exported for
23
+ * custom forms and for in-app re-acceptance:
24
+ * - {@link usePolicies}: load the instance's policies into a controller;
25
+ * - {@link PolicyConsent} / {@link PolicyClickwrap}: the checkbox block (with
26
+ * an in-page document viewer) and the clickwrap sentence;
27
+ * - {@link PolicyModal}: the unskippable scroll-to-accept dialog;
28
+ * - {@link PolicyGate}: a signed-in banner for policies that need
29
+ * re-acceptance, opening the modal / checkboxes on demand.
30
+ */
31
+ /** A translator over the catalog that falls back to the English policy strings. */
32
+ function usePolicyText() {
33
+ const t = (0, components_shared_1.useText)();
34
+ return (0, react_1.useMemo)(() => (0, js_1.policyTranslator)((key, vars) => t(key, vars)), [t]);
35
+ }
36
+ /** Subscribe a component to a controller's state. */
37
+ function usePolicyState(controller) {
38
+ const cache = (0, react_1.useRef)(null);
39
+ const get = (0, react_1.useCallback)(() => {
40
+ const snap = controller.snapshot();
41
+ const key = `${snap.viewing}|${snap.combinedChecked}|${snap.policies.map((p) => `${p.key}:${p.versionId}:${controller.isChecked(p.key)}`).join(',')}`;
42
+ if (cache.current?.key === key)
43
+ return cache.current.snap;
44
+ cache.current = { key, snap };
45
+ return snap;
46
+ }, [controller]);
47
+ return (0, react_1.useSyncExternalStore)((cb) => controller.subscribe(cb), get, get);
48
+ }
49
+ /**
50
+ * Load the instance's policies (`GET /v1/client/policies`) into a controller.
51
+ * Resolves to an empty list when the instance defines none — render nothing.
52
+ */
53
+ function usePolicies(options = {}, clientOverride) {
54
+ const own = (0, components_shared_1.useFapiClient)();
55
+ const client = clientOverride ?? own;
56
+ const { locale } = (0, AtlasProvider_1.useAtlas)();
57
+ const enabled = options.enabled !== false;
58
+ const controller = (0, react_1.useMemo)(() => new js_1.PolicyAcceptanceController([], { combined: options.combined }), [options.combined]);
59
+ const [loading, setLoading] = (0, react_1.useState)(enabled);
60
+ const refresh = (0, react_1.useCallback)(async () => {
61
+ const list = await (0, js_1.loadPolicies)(client, { locale: locale ?? undefined, signIn: options.signIn });
62
+ controller.setPolicies(list);
63
+ setLoading(false);
64
+ }, [client, controller, locale, options.signIn]);
65
+ (0, react_1.useEffect)(() => {
66
+ if (!enabled)
67
+ return;
68
+ let alive = true;
69
+ void (0, js_1.loadPolicies)(client, { locale: locale ?? undefined, signIn: options.signIn }).then((list) => {
70
+ if (!alive)
71
+ return;
72
+ controller.setPolicies(list);
73
+ setLoading(false);
74
+ });
75
+ return () => {
76
+ alive = false;
77
+ };
78
+ }, [client, controller, enabled, locale, options.signIn]);
79
+ const state = usePolicyState(controller);
80
+ return { controller, policies: state.policies, loading, refresh, build: () => controller.build() };
81
+ }
82
+ function PolicyContent({ policy, onEnd }) {
83
+ const bodyRef = (0, react_1.useRef)(null);
84
+ const sentinelRef = (0, react_1.useRef)(null);
85
+ const html = (0, react_1.useMemo)(() => (0, js_1.sanitizePolicyHtml)((0, js_1.policyHtml)(policy)), [policy]);
86
+ const cls = (0, components_shared_1.useClass)('text', 'atlas-policy-body');
87
+ (0, react_1.useEffect)(() => {
88
+ if (!onEnd || !bodyRef.current)
89
+ return;
90
+ return (0, js_1.observeScrollEnd)(bodyRef.current, sentinelRef.current, onEnd);
91
+ }, [html, onEnd]);
92
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: bodyRef, className: cls, tabIndex: 0, role: "region", "aria-label": policy.title, "data-atlas-policy-content": "", children: [(0, jsx_runtime_1.jsx)("div", { dangerouslySetInnerHTML: { __html: html } }), (0, jsx_runtime_1.jsx)("span", { ref: sentinelRef, className: "atlas-policy-sentinel", "aria-hidden": "true", "data-atlas-policy-end": "" })] }));
93
+ }
94
+ /** The in-page document viewer: the exact version the user is agreeing to. */
95
+ function PolicyViewer({ policy, controller }) {
96
+ const t = usePolicyText();
97
+ const cls = (0, components_shared_1.useClasses)();
98
+ const onEnd = (0, react_1.useCallback)(() => controller.markScrolledToEnd(policy.key), [controller, policy.key]);
99
+ const meta = [
100
+ policy.version ? t('policy.version', { version: policy.version }) : '',
101
+ policy.effectiveAt ? t('policy.effective', { date: (0, js_1.formatPolicyDate)(policy.effectiveAt) }) : '',
102
+ ]
103
+ .filter(Boolean)
104
+ .join(' · ');
105
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "atlas-policy-viewer", role: "region", "aria-label": policy.title, "data-atlas-policy-viewer": policy.key, children: [(0, jsx_runtime_1.jsxs)("div", { className: "atlas-policy-viewer-head", children: [(0, jsx_runtime_1.jsx)("strong", { children: policy.title }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('link', 'atlas-policy-link'), "data-atlas-policy-back": "", onClick: () => controller.closeDocument(), children: t('policy.viewerBack') })] }), meta ? (0, jsx_runtime_1.jsx)("p", { className: "atlas-policy-meta", children: meta }) : null, (0, jsx_runtime_1.jsx)(PolicyContent, { policy: policy, onEnd: onEnd })] }));
106
+ }
107
+ function PolicyLink({ policy, controller }) {
108
+ const cls = (0, components_shared_1.useClasses)();
109
+ return ((0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('link', 'atlas-policy-link'), "data-atlas-policy-open": policy.key, "aria-haspopup": "dialog", onClick: () => controller.openDocument(policy.key), children: policy.title }));
110
+ }
111
+ function Sentence({ template, name, nodes, and }) {
112
+ const [before, after] = (0, js_1.splitTemplate)(template, name);
113
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [before, nodes.map((node, i) => ((0, jsx_runtime_1.jsxs)("span", { children: [i > 0 ? (i === nodes.length - 1 ? ` ${and} ` : ', ') : null, node] }, i))), after] }));
114
+ }
115
+ /**
116
+ * The checkbox-mode policies: one combined checkbox ("I agree to the Terms of
117
+ * Service and Privacy Policy") or one each, the names opening the in-page
118
+ * viewer. While a document is open it replaces the checkboxes.
119
+ */
120
+ function PolicyConsent({ controller, errors = [] }) {
121
+ const t = usePolicyText();
122
+ const cls = (0, components_shared_1.useClasses)();
123
+ const state = usePolicyState(controller);
124
+ const id = (0, react_1.useId)();
125
+ const viewing = state.viewing ? state.policies.find((p) => p.key === state.viewing) : null;
126
+ if (viewing)
127
+ return (0, jsx_runtime_1.jsx)(PolicyViewer, { policy: viewing, controller: controller });
128
+ const boxes = state.policies.filter((p) => p.display === 'checkbox');
129
+ if (boxes.length === 0)
130
+ return null;
131
+ const and = t('policy.and');
132
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "atlas-policy-consent", "data-atlas-policies": "", children: [controller.combined ? ((0, jsx_runtime_1.jsxs)("div", { className: "atlas-policy-row atlas-consent", children: [(0, jsx_runtime_1.jsx)("input", { id: `${id}-all`, type: "checkbox", name: "policies", "data-atlas-policy-all": "", checked: state.combinedChecked, onChange: (e) => controller.setAllChecked(e.target.checked) }), (0, jsx_runtime_1.jsx)("label", { htmlFor: `${id}-all`, className: cls('text', 'atlas-text'), children: (0, jsx_runtime_1.jsx)(Sentence, { template: t('policy.agreeCombined'), name: "policies", and: and, nodes: boxes.map((p) => (0, jsx_runtime_1.jsx)(PolicyLink, { policy: p, controller: controller }, p.key)) }) })] })) : (boxes.map((p) => {
133
+ const [before, after] = (0, js_1.splitTemplate)(t('policy.agreeOne'), 'policy');
134
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "atlas-policy-row atlas-consent", children: [(0, jsx_runtime_1.jsx)("input", { id: `${id}-${p.key}`, type: "checkbox", name: `policy_${p.key}`, "data-atlas-policy-box": p.key, checked: controller.isChecked(p.key), onChange: (e) => controller.setChecked(p.key, e.target.checked) }), (0, jsx_runtime_1.jsxs)("label", { htmlFor: `${id}-${p.key}`, className: cls('text', 'atlas-text'), children: [before, (0, jsx_runtime_1.jsx)(PolicyLink, { policy: p, controller: controller }), after] })] }, p.key));
135
+ })), errors
136
+ .filter((e) => e.param === 'policy_acceptances' || e.param === 'consent')
137
+ .map((e) => ((0, jsx_runtime_1.jsx)("span", { className: cls('formFieldError', 'atlas-error'), children: e.message }, e.code)))] }));
138
+ }
139
+ /** The clickwrap sentence under the submit button for `link`-mode policies. */
140
+ function PolicyClickwrap({ controller }) {
141
+ const t = usePolicyText();
142
+ const cls = (0, components_shared_1.useClasses)();
143
+ const state = usePolicyState(controller);
144
+ const links = state.policies.filter((p) => p.display === 'link');
145
+ if (links.length === 0)
146
+ return null;
147
+ return ((0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-policy-clickwrap'), "data-atlas-policy-clickwrap": "", children: (0, jsx_runtime_1.jsx)(Sentence, { template: t('policy.clickwrap'), name: "policies", and: t('policy.and'), nodes: links.map((p) => (0, jsx_runtime_1.jsx)(PolicyLink, { policy: p, controller: controller }, p.key)) }) }));
148
+ }
149
+ /**
150
+ * The unskippable scroll-mode dialog: `role="dialog" aria-modal="true"`, focus
151
+ * trapped, no close button, Escape disabled. Accept enables only once the end of
152
+ * the text has been seen (an IntersectionObserver on an end sentinel) or the
153
+ * text fits; Decline calls `onDecline`.
154
+ */
155
+ function PolicyModal({ policy, reaccept = false, controller, onAccept, onDecline }) {
156
+ const t = usePolicyText();
157
+ const cls = (0, components_shared_1.useClasses)();
158
+ const uid = (0, react_1.useId)();
159
+ const modalRef = (0, react_1.useRef)(null);
160
+ const bodyRef = (0, react_1.useRef)(null);
161
+ const [ready, setReady] = (0, react_1.useState)(false);
162
+ const html = (0, react_1.useMemo)(() => (0, js_1.sanitizePolicyHtml)((0, js_1.policyHtml)(policy)), [policy]);
163
+ const sentinelRef = (0, react_1.useRef)(null);
164
+ (0, react_1.useEffect)(() => {
165
+ setReady(false);
166
+ const body = bodyRef.current;
167
+ if (!body)
168
+ return;
169
+ return (0, js_1.observeScrollEnd)(body, sentinelRef.current, () => {
170
+ setReady(true);
171
+ controller?.markScrolledToEnd(policy.key);
172
+ });
173
+ }, [html, controller, policy.key]);
174
+ (0, react_1.useEffect)(() => {
175
+ const modal = modalRef.current;
176
+ if (!modal)
177
+ return;
178
+ controller?.startClock(policy.key);
179
+ const release = (0, js_1.trapFocus)(modal, { initialFocus: bodyRef.current });
180
+ return () => {
181
+ release();
182
+ controller?.stopClock(policy.key);
183
+ };
184
+ }, [controller, policy.key]);
185
+ const titleId = `${uid}-title`;
186
+ const hintId = `${uid}-hint`;
187
+ return ((0, jsx_runtime_1.jsx)("div", { className: "atlas-policy-overlay", "data-atlas-policy-modal": policy.key, children: (0, jsx_runtime_1.jsxs)("div", { ref: modalRef, className: "atlas-policy-modal", role: "dialog", "aria-modal": "true", "aria-labelledby": titleId, "aria-describedby": hintId, tabIndex: -1, children: [(0, jsx_runtime_1.jsx)("h2", { id: titleId, children: reaccept && policy.reaccept !== false ? t('policy.reacceptTitle', { policy: policy.title }) : policy.title }), reaccept && policy.reaccept !== false && policy.summaryOfChanges ? ((0, jsx_runtime_1.jsxs)("div", { className: "atlas-policy-summary", "data-atlas-policy-summary": "", children: [(0, jsx_runtime_1.jsx)("strong", { children: t('policy.summaryTitle') }), (0, jsx_runtime_1.jsx)("span", { children: policy.summaryOfChanges })] })) : null, (0, jsx_runtime_1.jsxs)("div", { ref: bodyRef, className: "atlas-policy-body", tabIndex: 0, role: "region", "aria-label": policy.title, "data-atlas-policy-content": "", children: [(0, jsx_runtime_1.jsx)("div", { dangerouslySetInnerHTML: { __html: html } }), (0, jsx_runtime_1.jsx)("span", { ref: sentinelRef, className: "atlas-policy-sentinel", "aria-hidden": "true", "data-atlas-policy-end": "" })] }), (0, jsx_runtime_1.jsx)("p", { id: hintId, className: "atlas-policy-hint", "aria-live": "polite", children: ready ? '' : t('policy.scrollHint') }), (0, jsx_runtime_1.jsxs)("div", { className: "atlas-policy-actions", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('formButtonSecondary', ''), "data-atlas-policy-decline": "", onClick: onDecline, children: t('policy.decline') }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('formButtonPrimary', 'atlas-policy-accept'), "data-atlas-policy-accept": "", disabled: !ready, "aria-disabled": !ready, onClick: () => ready && onAccept(), children: t('policy.accept') })] })] }) }));
188
+ }
189
+ /**
190
+ * Walk the controller's unread scroll-mode policies one dialog at a time while
191
+ * `running`. `onDone` fires once when the last one is accepted;
192
+ * `onDecline(policy)` when the user declines one.
193
+ */
194
+ function PolicyScrollQueue({ controller, running, reaccept = false, onDone, onDecline, }) {
195
+ usePolicyState(controller);
196
+ const pending = controller.pendingScroll();
197
+ const policy = running ? pending : null;
198
+ const hadPolicy = (0, react_1.useRef)(false);
199
+ const doneRef = (0, react_1.useRef)(onDone);
200
+ doneRef.current = onDone;
201
+ (0, react_1.useEffect)(() => {
202
+ if (policy)
203
+ hadPolicy.current = true;
204
+ // Done only when the queue emptied because the user accepted the last one — not because it stopped (a decline).
205
+ else if (hadPolicy.current && running && pending === null) {
206
+ hadPolicy.current = false;
207
+ doneRef.current();
208
+ }
209
+ else if (!running)
210
+ hadPolicy.current = false;
211
+ }, [policy, running, pending]);
212
+ if (!policy)
213
+ return null;
214
+ return ((0, jsx_runtime_1.jsx)(PolicyModal, { policy: policy, reaccept: reaccept, controller: controller, onAccept: () => controller.acceptScroll(policy.key), onDecline: () => onDecline(policy) }, policy.versionId));
215
+ }
216
+ /**
217
+ * The sign-in step for a `needs_policy_acceptance` attempt: scroll-mode policies
218
+ * in their dialog, the rest as checkboxes / a clickwrap sentence, then
219
+ * "Accept and continue", which hands the `policy_acceptances` JSON to `onSubmit`.
220
+ */
221
+ function PolicyAcceptStep({ attempt, busy, onSubmit, onDecline, }) {
222
+ const t = usePolicyText();
223
+ const cls = (0, components_shared_1.useClasses)();
224
+ const client = (0, components_shared_1.useFapiClient)();
225
+ const { locale } = (0, AtlasProvider_1.useAtlas)();
226
+ const [controller, setController] = (0, react_1.useState)(null);
227
+ (0, react_1.useEffect)(() => {
228
+ let alive = true;
229
+ void (0, js_1.controllerForPending)(client, attempt, { locale: locale ?? undefined, combined: true }).then((c) => alive && setController(c));
230
+ return () => {
231
+ alive = false;
232
+ };
233
+ }, [client, attempt, locale]);
234
+ if (!controller)
235
+ return (0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('policy.loading') });
236
+ return (0, jsx_runtime_1.jsx)(PolicyAcceptStepBody, { controller: controller, busy: busy, onSubmit: onSubmit, onDecline: onDecline });
237
+ }
238
+ function PolicyAcceptStepBody({ controller, busy, onSubmit, onDecline, }) {
239
+ const t = usePolicyText();
240
+ const cls = (0, components_shared_1.useClasses)();
241
+ const state = usePolicyState(controller);
242
+ const [declined, setDeclined] = (0, react_1.useState)(false);
243
+ const send = (0, react_1.useCallback)(() => onSubmit({ policy_acceptances: JSON.stringify(controller.build()) }), [controller, onSubmit]);
244
+ const hasOthers = state.policies.some((p) => p.display !== 'scroll');
245
+ return ((0, jsx_runtime_1.jsxs)("div", { "data-atlas-policy-step": "", children: [(0, jsx_runtime_1.jsx)("p", { className: cls('text', 'atlas-text'), children: t('policy.pendingIntro') }), (0, jsx_runtime_1.jsx)(PolicyConsent, { controller: controller }), (0, jsx_runtime_1.jsx)(PolicyClickwrap, { controller: controller }), hasOthers ? ((0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('formButtonPrimary', 'atlas-button'), "data-atlas-policy-continue": "", disabled: busy || !controller.canSubmit() || controller.pendingScroll() !== null, onClick: send, children: t('policy.submit') })) : null, (0, jsx_runtime_1.jsx)(PolicyScrollQueue, { controller: controller, running: !declined, reaccept: true, onDone: () => {
246
+ if (!hasOthers)
247
+ send();
248
+ }, onDecline: (p) => {
249
+ setDeclined(true);
250
+ onDecline?.(p);
251
+ } })] }));
252
+ }
253
+ /**
254
+ * In-app re-acceptance. For a signed-in user it checks
255
+ * `GET /v1/client/me/policies`; when a policy needs re-acceptance it shows a
256
+ * banner (or, with `blocking`, the dialog at once). Accepting posts to
257
+ * `/v1/client/me/policies/accept`. Renders `children` (if any) always.
258
+ */
259
+ function PolicyGate({ onAccepted, blocking = false, children }) {
260
+ const { status } = (0, AtlasProvider_1.useAtlas)();
261
+ const client = (0, components_shared_1.useFapiClient)();
262
+ const t = usePolicyText();
263
+ const cls = (0, components_shared_1.useClasses)();
264
+ const [pending, setPending] = (0, react_1.useState)([]);
265
+ const [controller, setController] = (0, react_1.useState)(null);
266
+ const [open, setOpen] = (0, react_1.useState)(false);
267
+ const [error, setError] = (0, react_1.useState)('');
268
+ const [busy, setBusy] = (0, react_1.useState)(false);
269
+ (0, react_1.useEffect)(() => {
270
+ if (status !== 'signed_in')
271
+ return;
272
+ let alive = true;
273
+ void (0, js_1.loadMyPolicies)(client).then((all) => {
274
+ if (alive)
275
+ setPending(all.filter((p) => p.needsReaccept));
276
+ });
277
+ return () => {
278
+ alive = false;
279
+ };
280
+ }, [client, status]);
281
+ const begin = (0, react_1.useCallback)(async () => {
282
+ const all = await (0, js_1.loadPolicies)(client, {});
283
+ const wanted = new Set(pending.map((p) => p.key));
284
+ const c = new js_1.PolicyAcceptanceController(all.filter((p) => wanted.has(p.key)).map((p) => ({ ...p, required: true })));
285
+ setController(c);
286
+ setOpen(true);
287
+ }, [client, pending]);
288
+ (0, react_1.useEffect)(() => {
289
+ if (blocking && pending.length > 0 && !controller)
290
+ void begin();
291
+ }, [blocking, pending, controller, begin]);
292
+ const submit = (0, react_1.useCallback)(async () => {
293
+ if (!controller)
294
+ return;
295
+ setBusy(true);
296
+ const res = await (0, js_1.acceptMyPolicies)(client, controller.build());
297
+ setBusy(false);
298
+ if (!res.ok) {
299
+ setError(res.errors[0]?.message ?? t('policy.requiredGeneric'));
300
+ return;
301
+ }
302
+ setPending([]);
303
+ setOpen(false);
304
+ setController(null);
305
+ onAccepted?.();
306
+ }, [client, controller, onAccepted, t]);
307
+ const titles = pending.map((p) => p.title);
308
+ const soonest = pending.map((p) => p.graceEndsAt).filter((x) => !!x).sort()[0];
309
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [pending.length > 0 && !open ? ((0, jsx_runtime_1.jsxs)("div", { className: cls('alert', 'atlas-policy-banner'), role: "status", "data-atlas-policy-banner": "", children: [(0, jsx_runtime_1.jsxs)("span", { children: [(0, jsx_runtime_1.jsxs)("strong", { children: [t('policy.bannerTitle'), ". "] }), t('policy.bannerBody', { policies: (0, js_1.joinTitles)(titles, t('policy.and')) }), soonest ? ` ${t('policy.bannerGrace', { date: (0, js_1.formatPolicyDate)(soonest) })}` : ''] }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('link', 'atlas-policy-link'), onClick: () => void begin(), children: t('policy.bannerReview') })] })) : null, open && controller ? ((0, jsx_runtime_1.jsx)(PolicyGateDialog, { controller: controller, busy: busy, error: error, onSubmit: () => void submit(), onCancel: () => { setOpen(false); setController(null); }, blocking: blocking })) : null, children] }));
310
+ }
311
+ function PolicyGateDialog({ controller, busy, error, onSubmit, onCancel, blocking, }) {
312
+ const t = usePolicyText();
313
+ const cls = (0, components_shared_1.useClasses)();
314
+ const state = usePolicyState(controller);
315
+ const hasOthers = state.policies.some((p) => p.display !== 'scroll');
316
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [hasOthers ? ((0, jsx_runtime_1.jsxs)("div", { className: cls('card', 'atlas-card'), "data-atlas-policy-gate": "", children: [(0, jsx_runtime_1.jsx)(PolicyConsent, { controller: controller }), (0, jsx_runtime_1.jsx)(PolicyClickwrap, { controller: controller }), error ? (0, jsx_runtime_1.jsx)("p", { className: cls('formFieldError', 'atlas-error'), role: "alert", children: error }) : null, (0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('formButtonPrimary', 'atlas-button'), disabled: busy || !controller.canSubmit() || controller.pendingScroll() !== null, onClick: onSubmit, children: t('policy.submit') }), blocking ? null : ((0, jsx_runtime_1.jsx)("button", { type: "button", className: cls('link', 'atlas-link'), onClick: onCancel, children: t('policy.decline') }))] })) : null, (0, jsx_runtime_1.jsx)(PolicyScrollQueue, { controller: controller, running: true, reaccept: true, onDone: () => {
317
+ if (!hasOthers)
318
+ onSubmit();
319
+ }, onDecline: () => {
320
+ if (!blocking)
321
+ onCancel();
322
+ } })] }));
323
+ }
324
+ //# sourceMappingURL=policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../src/policies.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAkDb,sCAGC;AAGD,wCAUC;AA0BD,kCA0BC;AAoBD,oCAsBC;AAsCD,sCAyDC;AAGD,0CAWC;AAiBD,kCA4EC;AAOD,8CAsCC;AAOD,4CAyBC;AA2DD,gCAuEC;;AAvjBD,iCASe;AACf,sCAmBuB;AACvB,mDAA2C;AAC3C,2DAAmF;AAGnF;;;;;;;;;;;GAWG;AAEH,mFAAmF;AACnF,SAAgB,aAAa;IAC3B,MAAM,CAAC,GAAG,IAAA,2BAAO,GAAE,CAAC;IACpB,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,qBAAgB,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,qDAAqD;AACrD,SAAgB,cAAc,CAAC,UAAsC;IACnE,MAAM,KAAK,GAAG,IAAA,cAAM,EAA+C,IAAI,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtJ,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1D,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjB,OAAO,IAAA,4BAAoB,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1E,CAAC;AAsBD;;;GAGG;AACH,SAAgB,WAAW,CAAC,UAA8B,EAAE,EAAE,cAA2B;IACvF,MAAM,GAAG,GAAG,IAAA,iCAAa,GAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,cAAc,IAAI,GAAG,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,wBAAQ,GAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,+BAA0B,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAY,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAA,iBAAY,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/F,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7B,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;AACrG,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAA0C;IAC9E,MAAM,OAAO,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAA,cAAM,EAAkB,IAAI,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,uBAAkB,EAAC,IAAA,eAAU,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,IAAA,4BAAQ,EAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAClD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QACvC,OAAO,IAAA,qBAAgB,EAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAClB,OAAO,CACL,iCAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,gBAAa,MAAM,CAAC,KAAK,+BAA4B,EAAE,aAClH,gCAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAI,EAClD,iCAAM,GAAG,EAAE,WAAW,EAAE,SAAS,EAAC,uBAAuB,iBAAa,MAAM,2BAAuB,EAAE,GAAG,IACpG,CACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAA8D;IAC7G,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACpG,MAAM,IAAI,GAAG;QACX,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QACtE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAA,qBAAgB,EAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;KAChG;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,OAAO,CACL,iCAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,QAAQ,gBAAa,MAAM,CAAC,KAAK,8BAA4B,MAAM,CAAC,GAAG,aAC/G,iCAAK,SAAS,EAAC,0BAA0B,aACvC,6CAAS,MAAM,CAAC,KAAK,GAAU,EAC/B,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,4BAAyB,EAAE,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,YACnI,CAAC,CAAC,mBAAmB,CAAC,GAChB,IACL,EACL,IAAI,CAAC,CAAC,CAAC,8BAAG,SAAS,EAAC,mBAAmB,YAAE,IAAI,GAAK,CAAC,CAAC,CAAC,IAAI,EAC1D,uBAAC,aAAa,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAI,IAC3C,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,EAA8D;IACpG,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,OAAO,CACL,mCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,4BACnB,MAAM,CAAC,GAAG,mBACpB,QAAQ,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,YAEjD,MAAM,CAAC,KAAK,GACN,CACV,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAuE;IACnH,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,OAAO,CACL,6DACG,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,6CACG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAC3D,IAAI,KAFI,CAAC,CAGL,CACR,CAAC,EACD,KAAK,IACL,CACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,EAAqE;IAC1H,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAA,aAAK,GAAE,CAAC;IACnB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,IAAI,OAAO;QAAE,OAAO,uBAAC,YAAY,IAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAI,CAAC;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IAC5B,OAAO,CACL,iCAAK,SAAS,EAAC,sBAAsB,yBAAqB,EAAE,aACzD,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CACrB,iCAAK,SAAS,EAAC,gCAAgC,aAC7C,kCACE,EAAE,EAAE,GAAG,EAAE,MAAM,EACf,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,UAAU,2BACO,EAAE,EACxB,OAAO,EAAE,KAAK,CAAC,eAAe,EAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAC3D,EACF,kCAAO,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,YAC/D,uBAAC,QAAQ,IAAC,QAAQ,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAC,UAAU,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAC,UAAU,IAAa,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,IAAxC,CAAC,CAAC,GAAG,CAAuC,CAAC,GAAI,GAC7J,IACJ,CACP,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAA,kBAAa,EAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACtE,OAAO,CACL,iCAAiB,SAAS,EAAC,gCAAgC,aACzD,kCACE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EACpB,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,EAAE,2BACA,CAAC,CAAC,GAAG,EAC5B,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAC/D,EACF,mCAAO,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,aACnE,MAAM,EACP,uBAAC,UAAU,IAAC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,GAAI,EAChD,KAAK,IACA,KAbA,CAAC,CAAC,GAAG,CAcT,CACP,CAAC;YACJ,CAAC,CAAC,CACH,EACA,MAAM;iBACJ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,oBAAoB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;iBACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACV,iCAAmB,SAAS,EAAE,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,YAC/D,CAAC,CAAC,OAAO,IADD,CAAC,CAAC,IAAI,CAEV,CACR,CAAC,IACA,CACP,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAgB,eAAe,CAAC,EAAE,UAAU,EAA8C;IACxF,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,CACL,8BAAG,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,iCAA8B,EAAE,YACjF,uBAAC,QAAQ,IAAC,QAAQ,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAC,UAAU,EAAC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAC,UAAU,IAAa,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,IAAxC,CAAC,CAAC,GAAG,CAAuC,CAAC,GAAI,GACzK,CACL,CAAC;AACJ,CAAC;AAWD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAoB;IACzG,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,GAAG,GAAG,IAAA,aAAK,GAAE,CAAC;IACpB,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,uBAAkB,EAAC,IAAA,eAAU,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAA,cAAM,EAAkB,IAAI,CAAC,CAAC;IAElD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,OAAO,IAAA,qBAAgB,EAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE;YACtD,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAA,cAAS,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,OAAO,GAAG,EAAE;YACV,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG,GAAG,GAAG,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;IAC7B,OAAO,CACL,gCAAK,SAAS,EAAC,sBAAsB,6BAA0B,MAAM,CAAC,GAAG,YACvE,iCACE,GAAG,EAAE,QAAQ,EACb,SAAS,EAAC,oBAAoB,EAC9B,IAAI,EAAC,QAAQ,gBACF,MAAM,qBACA,OAAO,sBACN,MAAM,EACxB,QAAQ,EAAE,CAAC,CAAC,aAEZ,+BAAI,EAAE,EAAE,OAAO,YAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAM,EACjI,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAClE,iCAAK,SAAS,EAAC,sBAAsB,+BAA2B,EAAE,aAChE,6CAAS,CAAC,CAAC,qBAAqB,CAAC,GAAU,EAC3C,2CAAO,MAAM,CAAC,gBAAgB,GAAQ,IAClC,CACP,CAAC,CAAC,CAAC,IAAI,EACR,iCAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAC,mBAAmB,EAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,gBAAa,MAAM,CAAC,KAAK,+BAA4B,EAAE,aAChI,gCAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAI,EAClD,iCAAM,GAAG,EAAE,WAAW,EAAE,SAAS,EAAC,uBAAuB,iBAAa,MAAM,2BAAuB,EAAE,GAAG,IACpG,EACN,8BAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,mBAAmB,eAAW,QAAQ,YAC5D,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAClC,EACJ,iCAAK,SAAS,EAAC,sBAAsB,aACnC,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC,+BAA4B,EAAE,EAAC,OAAO,EAAE,SAAS,YAC7G,CAAC,CAAC,gBAAgB,CAAC,GACb,EACT,mCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,8BACjC,EAAE,EAC3B,QAAQ,EAAE,CAAC,KAAK,mBACD,CAAC,KAAK,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,QAAQ,EAAE,YAEjC,CAAC,CAAC,eAAe,CAAC,GACZ,IACL,IACF,GACF,CACP,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,MAAM,EACN,SAAS,GAOV;IACC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IACzB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM;YAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACrC,gHAAgH;aAC3G,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1D,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;YAC1B,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,OAAO;YAAE,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;IACjD,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,CACL,uBAAC,WAAW,IAEV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EACnD,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAL7B,MAAM,CAAC,SAAS,CAMrB,CACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,SAAS,GAMV;IACC,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,MAAM,GAAG,IAAA,iCAAa,GAAE,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,wBAAQ,GAAE,CAAC;IAC9B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAoC,IAAI,CAAC,CAAC;IACtF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAA,yBAAoB,EAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACnI,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU;QAAE,OAAO,8BAAG,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,YAAG,CAAC,CAAC,gBAAgB,CAAC,GAAK,CAAC;IAC3F,OAAO,uBAAC,oBAAoB,IAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;AAChH,CAAC;AAED,SAAS,oBAAoB,CAAC,EAC5B,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,GAMV;IACC,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7H,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;IACrE,OAAO,CACL,2DAA4B,EAAE,aAC5B,8BAAG,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,YAAG,CAAC,CAAC,qBAAqB,CAAC,GAAK,EACvE,uBAAC,aAAa,IAAC,UAAU,EAAE,UAAU,GAAI,EACzC,uBAAC,eAAe,IAAC,UAAU,EAAE,UAAU,GAAI,EAC1C,SAAS,CAAC,CAAC,CAAC,CACX,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,gCAA6B,EAAE,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,IAAI,YACrM,CAAC,CAAC,eAAe,CAAC,GACZ,CACV,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,iBAAiB,IAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,CAAC,QAAQ,EAClB,QAAQ,QACR,MAAM,EAAE,GAAG,EAAE;oBACX,IAAI,CAAC,SAAS;wBAAE,IAAI,EAAE,CAAC;gBACzB,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,WAAW,CAAC,IAAI,CAAC,CAAC;oBAClB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,GACD,IACE,CACP,CAAC;AACJ,CAAC;AAUD;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAmB;IACpF,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,wBAAQ,GAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAA,iCAAa,GAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAmB,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAoC,IAAI,CAAC,CAAC;IACtF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,WAAW;YAAE,OAAO;QACnC,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAA,mBAAc,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACvC,IAAI,KAAK;gBAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAErB,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACnC,MAAM,GAAG,GAAG,MAAM,IAAA,iBAAY,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,IAAI,+BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtH,aAAa,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU;YAAE,KAAK,KAAK,EAAE,CAAC;IAClE,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,MAAM,IAAA,qBAAgB,EAAC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,UAAU,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,UAAU,EAAE,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,CACL,6DACG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7B,iCAAK,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAAE,IAAI,EAAC,QAAQ,8BAA0B,EAAE,aAC5F,6CACE,+CAAS,CAAC,CAAC,oBAAoB,CAAC,UAAY,EAC3C,CAAC,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAA,eAAU,EAAC,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EACzE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAA,qBAAgB,EAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAC7E,EACP,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,YAC3F,CAAC,CAAC,qBAAqB,CAAC,GAClB,IACL,CACP,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CACpB,uBAAC,gBAAgB,IAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAI,CACpL,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACR,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,UAAU,EACV,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,GAQT;IACC,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAA,8BAAU,GAAE,CAAC;IACzB,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;IACrE,OAAO,CACL,6DACG,SAAS,CAAC,CAAC,CAAC,CACX,iCAAK,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,4BAAyB,EAAE,aAClE,uBAAC,aAAa,IAAC,UAAU,EAAE,UAAU,GAAI,EACzC,uBAAC,eAAe,IAAC,UAAU,EAAE,UAAU,GAAI,EAC1C,KAAK,CAAC,CAAC,CAAC,8BAAG,SAAS,EAAE,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAE,IAAI,EAAC,OAAO,YAAE,KAAK,GAAK,CAAC,CAAC,CAAC,IAAI,EAC5F,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,QAAQ,YAC3K,CAAC,CAAC,eAAe,CAAC,GACZ,EACR,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjB,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,YAC1E,CAAC,CAAC,gBAAgB,CAAC,GACb,CACV,IACG,CACP,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,iBAAiB,IAChB,UAAU,EAAE,UAAU,EACtB,OAAO,QACP,QAAQ,QACR,MAAM,EAAE,GAAG,EAAE;oBACX,IAAI,CAAC,SAAS;wBAAE,QAAQ,EAAE,CAAC;gBAC7B,CAAC,EACD,SAAS,EAAE,GAAG,EAAE;oBACd,IAAI,CAAC,QAAQ;wBAAE,QAAQ,EAAE,CAAC;gBAC5B,CAAC,GACD,IACD,CACJ,CAAC;AACJ,CAAC"}
@@ -52,6 +52,71 @@ export declare function completeSignInWithAtlas(opts?: {
52
52
  export declare function signInWithAtlasPopup(opts: AtlasIdOptions & {
53
53
  fetch?: typeof fetch;
54
54
  }): Promise<AtlasIdResult>;
55
+ declare const LABELS: {
56
+ readonly signin: "Sign in with Atlas";
57
+ readonly signup: "Sign up with Atlas";
58
+ readonly continue: "Continue with Atlas";
59
+ };
60
+ /** The labels for a BCP 47 tag (`es-MX` → es, `pt` → pt-BR), English when unknown. */
61
+ export declare function atlasIdLabels(locale?: string | null): Record<keyof typeof LABELS, string>;
62
+ /**
63
+ * The `atlasid:*` DOM events the button (this component and the hosted
64
+ * script's) dispatches on its element, bubbling:
65
+ * atlasid:ready rendered ({ version })
66
+ * atlasid:signin a popup / One Tap sign-in finished (the AtlasIdResult)
67
+ * atlasid:error { error } (popup_closed is a cancel)
68
+ * atlasid:onetap { outcome: signed_in | dismissed | unavailable | error }
69
+ * and keeps `data-atlasid-state` on it: ready | pending | signed-in | error.
70
+ */
71
+ export declare const ATLASID_EVENTS: readonly ["atlasid:ready", "atlasid:signin", "atlasid:error", "atlasid:onetap"];
72
+ export type AtlasIdEventName = (typeof ATLASID_EVENTS)[number];
73
+ export interface AtlasIdEventHandlers {
74
+ onReady?: (detail: {
75
+ version?: string;
76
+ issuer?: string;
77
+ }) => void;
78
+ onSignIn?: (result: AtlasIdResult | Record<string, unknown>) => void;
79
+ onError?: (detail: {
80
+ error: string;
81
+ directive?: string;
82
+ origin?: string;
83
+ }) => void;
84
+ onOneTap?: (detail: {
85
+ outcome: 'signed_in' | 'dismissed' | 'unavailable' | 'error';
86
+ error?: string;
87
+ }) => void;
88
+ }
89
+ /**
90
+ * Subscribe to the `atlasid:*` events of a button element (this component, or
91
+ * a `[data-atlas-signin]` host the hosted script upgrades). Returns the
92
+ * unsubscribe function. SSR-safe: a no-op without an element.
93
+ */
94
+ export declare function listenAtlasIdEvents(el: EventTarget | null | undefined, handlers: AtlasIdEventHandlers): () => void;
95
+ /** React hook form of {@link listenAtlasIdEvents} for a ref to the button or host element. */
96
+ export declare function useAtlasIdEvents(ref: {
97
+ current: EventTarget | null;
98
+ }, handlers: AtlasIdEventHandlers): void;
99
+ /**
100
+ * One Tap: the browser's own FedCM account prompt for Sign in with Atlas (no
101
+ * third-party cookies, no popup). Rejects with `fedcm_unavailable` where the
102
+ * browser has no FedCM, and with the browser's error when the user is signed
103
+ * out of Atlas or dismisses it — keep the button as the fallback.
104
+ */
105
+ export declare function oneTapWithAtlas(opts: {
106
+ clientId: string;
107
+ issuer?: string;
108
+ nonce?: string;
109
+ scope?: string;
110
+ context?: 'signin' | 'signup' | 'use' | 'continue';
111
+ loginHint?: string;
112
+ signal?: AbortSignal;
113
+ mediation?: 'optional' | 'required' | 'silent';
114
+ }): Promise<{
115
+ credential: string;
116
+ idToken: string;
117
+ claims: Record<string, unknown>;
118
+ via: 'fedcm';
119
+ }>;
55
120
  interface ButtonLook {
56
121
  /**
57
122
  * `redirect` (default) sends the whole page to Atlas. `popup` signs in inside
@@ -66,6 +131,20 @@ interface ButtonLook {
66
131
  text?: 'signin' | 'signup' | 'continue';
67
132
  className?: string;
68
133
  onError?: (e: Error) => void;
134
+ /** Label language (BCP 47). Default: the page's <html lang>, else English. */
135
+ locale?: string;
136
+ /** Accessible name override; default the visible label. */
137
+ ariaLabel?: string;
138
+ /** Called once the button is in the DOM (also dispatched as atlasid:ready). */
139
+ onReady?: (detail: {
140
+ version: string;
141
+ }) => void;
142
+ /**
143
+ * One Tap: offer the browser's FedCM account prompt when the button mounts
144
+ * (browser mode). The result goes to onSuccess; where FedCM is unavailable
145
+ * or the user dismisses it, nothing changes and the button stays.
146
+ */
147
+ oneTap?: boolean;
69
148
  }
70
149
  /**
71
150
  * Browser mode (PKCE in the browser): pass clientId + redirectUri.
@@ -81,7 +160,11 @@ export declare function SignInWithAtlasButton(props: SignInWithAtlasButtonProps)
81
160
  type: string;
82
161
  className: string | undefined;
83
162
  style: CSSProperties;
84
- onClick: () => void;
163
+ onClick: (ev?: {
164
+ currentTarget?: unknown;
165
+ }) => void;
166
+ ref: (node: HTMLButtonElement | null) => void;
167
+ 'aria-label': string;
85
168
  'data-atlas': string;
86
- }, HTMLElement>;
169
+ }, HTMLButtonElement>;
87
170
  export {};