@atlasauth/embed 0.10.0 → 0.12.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 +12 -0
- package/dist/embed.js +47 -21
- package/dist/styles.d.ts +1 -15
- package/dist/styles.js +27 -15
- package/dist/styles.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/widget/dom.js +5 -0
- package/dist/widget/dom.js.map +1 -1
- package/dist/widget/flow.js +23 -4
- package/dist/widget/flow.js.map +1 -1
- package/dist/widget/forms.js +28 -4
- package/dist/widget/forms.js.map +1 -1
- package/dist/widget/policies.d.ts +29 -0
- package/dist/widget/policies.js +118 -0
- package/dist/widget/policies.js.map +1 -0
- package/dist/widget/render.js +11 -1
- package/dist/widget/render.js.map +1 -1
- package/dist/widget.d.ts +10 -1
- package/dist/widget.js +12 -0
- package/dist/widget.js.map +1 -1
- package/package.json +3 -3
package/dist/styles.d.ts
CHANGED
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal, scoped stylesheet for the widget.
|
|
3
|
-
*
|
|
4
|
-
* Injected once into the document head (keyed by a data attribute so mounting
|
|
5
|
-
* two widgets does not duplicate it) rather than an inline `style` per element —
|
|
6
|
-
* a single sheet is what a tenant can override with their own CSS, which is the
|
|
7
|
-
* whole reason the widget renders in the host DOM instead of an iframe.
|
|
8
|
-
*
|
|
9
|
-
* Every class is namespaced `atlas-embed-*` so it cannot collide with the host
|
|
10
|
-
* page, and every colour/radius/font reads a `--atlas-embed-*` custom property
|
|
11
|
-
* with a hard-coded fallback, so the widget looks right the instant it mounts —
|
|
12
|
-
* before `GET /v1/appearance` resolves — and re-themes when it does.
|
|
13
|
-
*/
|
|
14
1
|
export declare const STYLE_MARKER = "atlas-embed-styles";
|
|
15
|
-
export declare const EMBED_CSS = "\n.atlas-embed-root {\n --_bg: var(--atlas-embed-color-background, #ffffff);\n --_card: var(--atlas-embed-color-card, #ffffff);\n --_text: var(--atlas-embed-color-text, #1c1c1f);\n --_primary: var(--atlas-embed-color-primary, #5b5bd6);\n --_on-primary: var(--atlas-embed-color-text-on-primary, #ffffff);\n /* Keyboard focus ring \u2014 a solid outline. The widget sets it to the primary\n adjusted to 3:1 on the card/background (or the page's explicit ring). */\n --_focus: var(--atlas-embed-color-focus-ring, var(--_primary));\n --_border: var(--atlas-embed-color-border, #e4e4e9);\n --_radius: var(--atlas-embed-border-radius, 10px);\n /* Transition tempo \u2014 the widget sets --atlas-embed-motion from motionSpeed and\n to 0s when animations are off; reduced-motion forces 0s below regardless. */\n --_motion: var(--atlas-embed-motion, 0.16s);\n font-family: var(--atlas-embed-font-family, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif);\n color: var(--_text);\n box-sizing: border-box;\n display: block;\n}\n.atlas-embed-root *, .atlas-embed-root *::before, .atlas-embed-root *::after { box-sizing: border-box; }\n.atlas-embed-card {\n max-width: 400px;\n margin: 0 auto;\n padding: 28px 26px;\n background: var(--_card);\n border: 1px solid var(--_border);\n border-radius: calc(var(--_radius) + 4px);\n box-shadow: 0 1px 2px rgba(0,0,0,0.04), 0 8px 28px rgba(0,0,0,0.06);\n}\n.atlas-embed-logo { display: block; max-height: 40px; margin: 0 auto 16px; }\n.atlas-embed-title { font-size: 20px; font-weight: 650; text-align: center; margin: 0 0 4px; }\n.atlas-embed-subtitle { font-size: 14px; color: #6b7280; text-align: center; margin: 0 0 20px; }\n.atlas-embed-social { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }\n.atlas-embed-social-button {\n display: flex; align-items: center; justify-content: center; gap: 8px;\n width: 100%; padding: 10px 12px; font-size: 14px; font-weight: 550; cursor: pointer;\n color: var(--_text); background: var(--_card);\n border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-social-button:hover { filter: brightness(0.97); }\n.atlas-embed-social-icon { display: inline-flex; flex: none; line-height: 0; }\n.atlas-embed-social-icon svg { width: 18px; height: 18px; display: block; }\n.atlas-embed-social-label { display: inline-block; }\n\n/* Size \u2014 button scale and icon size together. */\n.atlas-embed-social[data-size=\"sm\"] .atlas-embed-social-button { padding: 8px 10px; font-size: 13px; }\n.atlas-embed-social[data-size=\"sm\"] .atlas-embed-social-icon svg { width: 16px; height: 16px; }\n.atlas-embed-social[data-size=\"lg\"] .atlas-embed-social-button { padding: 13px 16px; font-size: 15px; }\n.atlas-embed-social[data-size=\"lg\"] .atlas-embed-social-icon svg { width: 22px; height: 22px; }\n\n/* Icon-only variant: a square button, name in the tooltip. Always laid out as a\n centred wrap (or a carousel), never a full-width bar. */\n.atlas-embed-social-button[data-variant=\"icon\"] { width: auto; padding: 10px; aspect-ratio: 1; }\n.atlas-embed-social[data-size=\"sm\"] .atlas-embed-social-button[data-variant=\"icon\"] { padding: 8px; }\n.atlas-embed-social[data-size=\"lg\"] .atlas-embed-social-button[data-variant=\"icon\"] { padding: 13px; }\n.atlas-embed-social[data-variant=\"icon\"]:not([data-layout=\"carousel\"]) {\n flex-direction: row; flex-wrap: wrap; justify-content: center;\n}\n\n/* Grid \u2014 bars share a row and wrap. */\n.atlas-embed-social[data-layout=\"grid\"] { flex-direction: row; flex-wrap: wrap; }\n.atlas-embed-social[data-layout=\"grid\"] .atlas-embed-social-button { width: auto; flex: 1 1 auto; }\n.atlas-embed-social[data-layout=\"grid\"] .atlas-embed-social-button[data-variant=\"icon\"] { flex: 0 0 auto; }\n\n/* Carousel \u2014 one swipeable, scroll-snapped row. The raw scrollbar is hidden; the\n arrow buttons (below) are the affordance instead. */\n.atlas-embed-social[data-layout=\"carousel\"] {\n flex-direction: row; flex-wrap: nowrap; overflow-x: auto;\n scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scroll-behavior: smooth;\n scrollbar-width: none;\n}\n.atlas-embed-social[data-layout=\"carousel\"]::-webkit-scrollbar { display: none; }\n.atlas-embed-social[data-layout=\"carousel\"] .atlas-embed-social-button { width: auto; flex: 0 0 auto; scroll-snap-align: start; }\n.atlas-embed-social[data-layout=\"carousel\"] .atlas-embed-social-button[data-variant=\"block\"] { min-width: 60%; }\n\n/* Carousel shell \u2014 prev/next controls flanking the scroll row. */\n.atlas-embed-carousel { position: relative; display: flex; align-items: center; gap: 4px; margin-bottom: 16px; }\n.atlas-embed-carousel .atlas-embed-social { flex: 1 1 auto; min-width: 0; margin-bottom: 0; }\n.atlas-embed-carousel-nav {\n flex: none; display: inline-flex; align-items: center; justify-content: center;\n width: 30px; height: 30px; padding: 0; cursor: pointer;\n color: var(--_text); background: var(--_card);\n border: 1px solid var(--_border); border-radius: 999px; transition: opacity 0.15s;\n}\n.atlas-embed-carousel-nav svg { width: 16px; height: 16px; display: block; }\n.atlas-embed-carousel-nav:hover:not(:disabled) { filter: brightness(0.97); }\n.atlas-embed-carousel-nav:disabled { opacity: 0.35; cursor: default; }\n/* Nothing overflows \u2192 no controls at all. */\n.atlas-embed-carousel[data-overflow=\"false\"] .atlas-embed-carousel-nav { display: none; }\n/* When the carousel sits inside a search field, the field owns the bottom margin. */\n.atlas-embed-social-field .atlas-embed-carousel { margin-bottom: 0; }\n\n/* Search \u2014 a filter box above a long provider list (socialButtons.search). The\n field wraps the button container so its own margin replaces the button block's. */\n.atlas-embed-social-field { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }\n.atlas-embed-social-field .atlas-embed-social { margin-bottom: 0; }\n.atlas-embed-social-search {\n width: 100%; padding: 9px 12px; font-size: 16px; color: var(--_text);\n background: var(--_bg); border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-social-search:focus { outline: 2px solid var(--_focus); outline-offset: -1px; }\n.atlas-embed-social-button[hidden] { display: none; }\n.atlas-embed-social-empty { font-size: 13px; color: #9ca3af; text-align: center; padding: 6px 0; }\n.atlas-embed-social-empty[hidden] { display: none; }\n.atlas-embed-divider {\n display: flex; align-items: center; text-align: center; gap: 10px;\n color: #9ca3af; font-size: 12px; margin: 14px 0;\n}\n.atlas-embed-divider::before, .atlas-embed-divider::after {\n content: \"\"; flex: 1; height: 1px; background: var(--_border);\n}\n.atlas-embed-field { display: block; margin: 0 0 12px; }\n.atlas-embed-label { display: block; font-size: 13px; margin: 0 0 5px; color: var(--_text); }\n.atlas-embed-input {\n /* 16px: iOS Safari zooms the page when a smaller field takes focus. */\n width: 100%; padding: 10px 12px; font-size: 16px; color: var(--_text);\n background: var(--_bg); border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-input:focus { outline: 2px solid var(--_focus); outline-offset: -1px; }\n/* Password field with a show/hide toggle. */\n.atlas-embed-password { position: relative; display: flex; align-items: center; }\n.atlas-embed-password .atlas-embed-input { width: 100%; padding-right: 54px; }\n.atlas-embed-password-toggle {\n position: absolute; right: 6px; padding: 4px 7px; font: inherit; font-size: 12px; font-weight: 600;\n cursor: pointer; color: var(--_primary); background: none; border: 0; border-radius: 6px;\n}\n.atlas-embed-password-toggle:hover { text-decoration: underline; }\nselect.atlas-embed-input { appearance: auto; }\n.atlas-embed-field-checkbox { display: flex; flex-direction: row-reverse; align-items: center; justify-content: flex-end; gap: 8px; }\n.atlas-embed-field-checkbox .atlas-embed-label { margin: 0; }\n.atlas-embed-checkbox { width: 16px; height: 16px; margin: 0; flex: none; }\ntextarea.atlas-embed-input { min-height: 72px; resize: vertical; font-family: inherit; }\nfieldset.atlas-embed-field { border: 0; padding: 0; margin: 0 0 12px; }\n.atlas-embed-choices { display: flex; flex-direction: column; gap: 6px; }\n.atlas-embed-choice { display: flex; flex-direction: row; align-items: center; gap: 8px; font-size: 14px; cursor: pointer; }\n.atlas-embed-choice input { width: 16px; height: 16px; margin: 0; flex: none; accent-color: var(--_primary); }\n.atlas-embed-button {\n width: 100%; margin-top: 6px; padding: 11px 12px; font-size: 14px; font-weight: 650;\n cursor: pointer; color: var(--_on-primary); background: var(--_primary);\n border: 0; border-radius: var(--_radius);\n}\n.atlas-embed-button:disabled { opacity: 0.6; cursor: default; }\n.atlas-embed-button:focus-visible, .atlas-embed-social-button:focus-visible,\n.atlas-embed-handle-back:focus-visible, .atlas-embed-step-back:focus-visible,\n.atlas-embed-password-toggle:focus-visible, .atlas-embed-carousel-nav:focus-visible {\n outline: 2px solid var(--_focus); outline-offset: 2px;\n}\n.atlas-embed-handle-back {\n width: 100%; margin-top: 8px; padding: 6px; font-size: 13px; font-weight: 550;\n cursor: pointer; color: #6b7280; background: none; border: 0;\n}\n.atlas-embed-handle-back:hover { color: #374151; }\n.atlas-embed-error { display: block; font-size: 13px; color: #d64545; margin: 6px 0 0; }\n.atlas-embed-form-error { font-size: 13px; color: #d64545; margin: 0 0 12px; min-height: 0; }\n/* A success/confirmation banner (e.g. after a force-login password reset). */\n.atlas-embed-flash {\n font-size: 13px; color: #0f7a4d; background: rgba(16,163,101,0.08);\n border: 1px solid rgba(16,163,101,0.25); border-radius: var(--_radius);\n padding: 9px 11px; margin: 0 0 14px; text-align: center;\n}\n.atlas-embed-footer { font-size: 13px; color: #6b7280; text-align: center; margin: 16px 0 0; }\n/* \u00A75.1 legal consent row on sign-up. */\n.atlas-embed-consent { display: flex; align-items: flex-start; gap: 8px; margin: 2px 0 14px; font-size: 13px; color: #6b7280; }\n.atlas-embed-consent-check { margin: 2px 0 0; width: 15px; height: 15px; flex: none; accent-color: var(--_primary); cursor: pointer; }\n.atlas-embed-consent-link { color: var(--_primary); text-decoration: underline; }\n/* \u00A77.5 Remember-me row. */\n.atlas-embed-remember { display: flex; align-items: center; gap: 8px; margin: -2px 0 14px; font-size: 13px; color: var(--_text); cursor: pointer; }\n.atlas-embed-remember-check { width: 15px; height: 15px; flex: none; accent-color: var(--_primary); cursor: pointer; }\n.atlas-embed-note { font-size: 14px; color: #6b7280; text-align: center; margin: 8px 0; }\n.atlas-embed-mfa-qr { display: block; margin: 8px auto; width: 180px; height: 180px; image-rendering: pixelated; }\n.atlas-embed-mfa-key { font-family: ui-monospace, monospace; letter-spacing: 0.05em; }\n\n/* Verification step \u2014 a continuation of the email panel, not a new screen: the\n context line (\"Enter the code we sent to \u2026\") + a way back, then a segmented\n one-box-per-digit code input that spawns in. */\n.atlas-embed-step-context { text-align: center; margin: 0 0 20px; }\n.atlas-embed-step-context .atlas-embed-subtitle { margin: 0 0 6px; }\n.atlas-embed-step-back {\n display: inline-block; padding: 2px 4px; font: inherit; font-size: 13px; font-weight: 550;\n cursor: pointer; color: var(--_primary); background: none; border: 0;\n}\n.atlas-embed-step-back:hover { text-decoration: underline; }\n/* A standalone action under the submit button (Forgot password?, Back to sign in,\n the 2FA toggle) reads as a centred link, not a left-aligned fragment. */\nform > .atlas-embed-step-back { display: block; width: 100%; text-align: center; margin-top: 10px; }\n.atlas-embed-code { display: flex; gap: 8px; justify-content: space-between; }\n.atlas-embed-code-box {\n flex: 1 1 0; min-width: 0; aspect-ratio: 1 / 1.15; padding: 0; text-align: center;\n font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--_text);\n background: var(--_bg); border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-code-box:focus { outline: 2px solid var(--_focus); outline-offset: -1px; }\n/* A real step change eases its content in; error/busy re-renders (same step) do\n not, and a reduced-motion viewer gets no animation at all. */\n@media (prefers-reduced-motion: no-preference) {\n .atlas-embed-card[data-enter] > form,\n .atlas-embed-card[data-enter] > .atlas-embed-step-context {\n animation: atlas-embed-spawn 0.26s cubic-bezier(0.22, 0.61, 0.36, 1) both;\n }\n}\n@keyframes atlas-embed-spawn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Interaction / polish layer \u2014 how controls FEEL. Driven by data-attributes on\n the root (data-button-style / -button-effect / -shadow / -density /\n -input-style) that the widget sets from the resolved interaction config, plus\n the --_motion tempo var. Every rule is additive: with no attributes set the\n widget looks exactly as it did before this layer existed.\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* Smooth every interactive control at the configured tempo. */\n.atlas-embed-button, .atlas-embed-social-button, .atlas-embed-carousel-nav,\n.atlas-embed-handle-back, .atlas-embed-step-back, .atlas-embed-password-toggle,\n.atlas-embed-input, .atlas-embed-code-box {\n transition:\n transform var(--_motion) ease, box-shadow var(--_motion) ease,\n background-color var(--_motion) ease, border-color var(--_motion) ease,\n color var(--_motion) ease, filter var(--_motion) ease, outline-color var(--_motion) ease;\n}\n\n/* Primary CTA \u2014 a subtle hover darken by default (was static). */\n.atlas-embed-button:hover:not(:disabled) { filter: brightness(1.06); }\n\n/* Button fill style (primary CTA only \u2014 social buttons keep provider styling). */\n.atlas-embed-root[data-button-style=\"outline\"] .atlas-embed-button {\n background: transparent; color: var(--_primary); border: 1px solid var(--_primary);\n}\n.atlas-embed-root[data-button-style=\"outline\"] .atlas-embed-button:hover:not(:disabled) {\n filter: none; background: color-mix(in srgb, var(--_primary) 10%, transparent);\n}\n.atlas-embed-root[data-button-style=\"soft\"] .atlas-embed-button {\n background: color-mix(in srgb, var(--_primary) 14%, transparent); color: var(--_primary);\n}\n.atlas-embed-root[data-button-style=\"soft\"] .atlas-embed-button:hover:not(:disabled) {\n filter: none; background: color-mix(in srgb, var(--_primary) 22%, transparent);\n}\n.atlas-embed-root[data-button-style=\"ghost\"] .atlas-embed-button {\n background: transparent; color: var(--_primary);\n}\n.atlas-embed-root[data-button-style=\"ghost\"] .atlas-embed-button:hover:not(:disabled) {\n filter: none; background: color-mix(in srgb, var(--_primary) 12%, transparent);\n}\n\n/* Press/hover effect \u2014 applies to every button. */\n.atlas-embed-root[data-button-effect=\"scale\"] .atlas-embed-button:active:not(:disabled),\n.atlas-embed-root[data-button-effect=\"scale\"] .atlas-embed-social-button:active,\n.atlas-embed-root[data-button-effect=\"scale\"] .atlas-embed-carousel-nav:active:not(:disabled) {\n transform: scale(0.97);\n}\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-button:hover:not(:disabled),\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-social-button:hover {\n transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,0.14); filter: none;\n}\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-button:active:not(:disabled),\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-social-button:active { transform: translateY(0); }\n.atlas-embed-root[data-button-effect=\"glow\"] .atlas-embed-button:hover:not(:disabled),\n.atlas-embed-root[data-button-effect=\"glow\"] .atlas-embed-social-button:hover {\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--_primary) 35%, transparent); filter: none;\n}\n/* Ripple \u2014 the widget appends a span on pointer-down; buttons must clip it. */\n.atlas-embed-root[data-button-effect=\"ripple\"] .atlas-embed-button,\n.atlas-embed-root[data-button-effect=\"ripple\"] .atlas-embed-social-button {\n position: relative; overflow: hidden;\n}\n.atlas-embed-ripple {\n position: absolute; border-radius: 50%; transform: scale(0);\n background: currentColor; opacity: 0.28; pointer-events: none;\n animation: atlas-embed-ripple 0.55s ease-out;\n}\n@keyframes atlas-embed-ripple { to { transform: scale(2.6); opacity: 0; } }\n\n/* Card + solid-button elevation. */\n.atlas-embed-root[data-shadow=\"none\"] .atlas-embed-card { box-shadow: none; }\n.atlas-embed-root[data-shadow=\"sm\"] .atlas-embed-card { box-shadow: 0 1px 2px rgba(0,0,0,0.05); }\n.atlas-embed-root[data-shadow=\"lg\"] .atlas-embed-card {\n box-shadow: 0 4px 12px rgba(0,0,0,0.08), 0 16px 48px rgba(0,0,0,0.12);\n}\n\n/* Density \u2014 compact tightens padding and gaps. */\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-card { padding: 20px 18px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-social { gap: 6px; margin-bottom: 12px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-field { margin-bottom: 9px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-button { padding: 9px 12px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-social-button { padding: 8px 10px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-subtitle { margin-bottom: 14px; }\n\n/* Input style \u2014 filled and underline treatments (default is the outlined field). */\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-input,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-code-box,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-social-search {\n background: color-mix(in srgb, var(--_border) 24%, transparent); border-color: transparent;\n}\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-input:focus,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-code-box:focus,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-social-search:focus {\n background: var(--_bg); border-color: var(--_primary);\n}\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-input,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-code-box,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-social-search {\n background: transparent; border: 0; border-bottom: 1.5px solid var(--_border);\n border-radius: 0; padding-left: 2px; padding-right: 2px;\n}\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-input:focus,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-code-box:focus,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-social-search:focus {\n outline: none; border-bottom-color: var(--_primary);\n}\n\n/* \u2500\u2500 Loading states \u2014 spinner / skeleton / dots / bar (interaction.loading).\n Shown while appearance resolves, while a redirect ticket is exchanged, and the\n button spinner while a form submits \u2014 so the widget never flashes blank. \u2500\u2500 */\n.atlas-embed-button { display: flex; align-items: center; justify-content: center; gap: 8px; }\n.atlas-embed-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; min-height: 168px; padding: 12px 0; }\n.atlas-embed-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }\n\n/* Spinner (default) + the in-button spinner. */\n.atlas-embed-spinner, .atlas-embed-btn-spinner {\n border-radius: 50%; border-style: solid; flex: none;\n animation: atlas-embed-spin 0.7s linear infinite;\n}\n.atlas-embed-spinner { width: 30px; height: 30px; border-width: 3px;\n border-color: color-mix(in srgb, var(--_primary) 22%, transparent); border-top-color: var(--_primary); }\n.atlas-embed-btn-spinner { width: 17px; height: 17px; border-width: 2px;\n border-color: color-mix(in srgb, currentColor 35%, transparent); border-top-color: currentColor; }\n@keyframes atlas-embed-spin { to { transform: rotate(360deg); } }\n\n/* Dots. */\n.atlas-embed-loading[data-loading=\"dots\"] { flex-direction: row; }\n.atlas-embed-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--_primary);\n animation: atlas-embed-bounce 1.2s ease-in-out infinite; }\n.atlas-embed-dot:nth-child(2) { animation-delay: 0.15s; }\n.atlas-embed-dot:nth-child(3) { animation-delay: 0.30s; }\n@keyframes atlas-embed-bounce { 0%,80%,100% { transform: scale(0.5); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } }\n\n/* Indeterminate bar. */\n.atlas-embed-loading[data-loading=\"bar\"] { min-height: 132px; }\n.atlas-embed-loadbar { position: relative; width: 64%; height: 4px; border-radius: 999px; overflow: hidden;\n background: color-mix(in srgb, var(--_border) 60%, transparent); }\n.atlas-embed-loadbar::before { content: \"\"; position: absolute; top: 0; bottom: 0; width: 40%; border-radius: 999px;\n background: var(--_primary); animation: atlas-embed-slide 1.1s ease-in-out infinite; }\n@keyframes atlas-embed-slide { 0% { left: -45%; } 100% { left: 105%; } }\n\n/* Skeleton \u2014 placeholders shaped like the form. */\n.atlas-embed-loading[data-loading=\"skeleton\"] { align-items: stretch; min-height: 0; gap: 12px; }\n.atlas-embed-skel { border-radius: var(--_radius); position: relative; overflow: hidden;\n background: color-mix(in srgb, var(--_border) 55%, transparent); }\n.atlas-embed-skel::after { content: \"\"; position: absolute; inset: 0; transform: translateX(-100%);\n background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--_text) 8%, transparent), transparent);\n animation: atlas-embed-shimmer 1.3s infinite; }\n.atlas-embed-skel-title { height: 22px; width: 55%; margin: 2px auto 2px; }\n.atlas-embed-skel-sub { height: 13px; width: 75%; margin: 0 auto 8px; }\n.atlas-embed-skel-input { height: 42px; }\n.atlas-embed-skel-button { height: 44px; margin-top: 6px; }\n@keyframes atlas-embed-shimmer { to { transform: translateX(100%); } }\n\n/* Reduced motion always wins \u2014 no transitions, presses, ripples, or spawn; and\n loaders swap their spin/bounce/slide/shimmer for a minimal opacity pulse. */\n@media (prefers-reduced-motion: reduce) {\n .atlas-embed-root { --_motion: 0s; }\n .atlas-embed-root [class^=\"atlas-embed-\"] { transition: none !important; }\n .atlas-embed-root .atlas-embed-button:active,\n .atlas-embed-root .atlas-embed-social-button:active { transform: none !important; }\n .atlas-embed-ripple { display: none; }\n .atlas-embed-spinner, .atlas-embed-btn-spinner, .atlas-embed-dot,\n .atlas-embed-loadbar::before, .atlas-embed-skel::after {\n animation: atlas-embed-pulse 1.4s ease-in-out infinite !important;\n }\n .atlas-embed-loadbar::before { position: static; width: 100%; }\n}\n@keyframes atlas-embed-pulse { 0%,100% { opacity: 0.4; } 50% { opacity: 1; } }\n";
|
|
16
|
-
/** Inject the sheet once per document. Safe to call on every mount. */
|
|
2
|
+
export declare const EMBED_CSS = "\n/* The host page's --atlas-host-* variables (shared UI-kit names) restyle the widget\n where the page sets them; explicit --atlas-embed-* settings still win. */\n.atlas-embed-root {\n --_bg: var(--atlas-embed-color-background, var(--atlas-host-surface, #ffffff));\n --_card: var(--atlas-embed-color-card, var(--atlas-host-surface, #ffffff));\n --_text: var(--atlas-embed-color-text, var(--atlas-host-ink, #1c1c1f));\n --_primary: var(--atlas-embed-color-primary, var(--atlas-host-accent, #5b5bd6));\n --_on-primary: var(--atlas-embed-color-text-on-primary, var(--atlas-host-accent-ink, #ffffff));\n /* Keyboard focus ring \u2014 a solid outline. The widget sets it to the primary\n adjusted to 3:1 on the card/background (or the page's explicit ring). */\n --_focus: var(--atlas-embed-color-focus-ring, var(--atlas-host-focus-ring, var(--_primary)));\n --_border: var(--atlas-embed-color-border, var(--atlas-host-line, #e4e4e9));\n --_radius: var(--atlas-embed-border-radius, var(--atlas-host-radius, 10px));\n /* Transition tempo \u2014 the widget sets --atlas-embed-motion from motionSpeed and\n to 0s when animations are off; reduced-motion forces 0s below regardless. */\n --_motion: var(--atlas-embed-motion, 0.16s);\n font-family: var(--atlas-embed-font-family, var(--atlas-host-font, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif));\n color: var(--_text);\n box-sizing: border-box;\n display: block;\n}\n.atlas-embed-root *, .atlas-embed-root *::before, .atlas-embed-root *::after { box-sizing: border-box; }\n.atlas-embed-card {\n max-width: 400px;\n margin: 0 auto;\n padding: 28px 26px;\n background: var(--_card);\n border: 1px solid var(--_border);\n border-radius: calc(var(--_radius) + 4px);\n box-shadow: 0 1px 2px rgba(0,0,0,0.04), 0 8px 28px rgba(0,0,0,0.06);\n}\n.atlas-embed-logo { display: block; max-height: 40px; margin: 0 auto 16px; }\n.atlas-embed-title { font-size: 20px; font-weight: 650; text-align: center; margin: 0 0 4px; }\n.atlas-embed-subtitle { font-size: 14px; color: #6b7280; text-align: center; margin: 0 0 20px; }\n.atlas-embed-social { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }\n.atlas-embed-social-button {\n display: flex; align-items: center; justify-content: center; gap: 8px;\n width: 100%; padding: 10px 12px; font-size: 14px; font-weight: 550; cursor: pointer;\n color: var(--_text); background: var(--_card);\n border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-social-button:hover { filter: brightness(0.97); }\n.atlas-embed-social-icon { display: inline-flex; flex: none; line-height: 0; }\n.atlas-embed-social-icon svg { width: 18px; height: 18px; display: block; }\n.atlas-embed-social-label { display: inline-block; }\n\n/* Size \u2014 button scale and icon size together. */\n.atlas-embed-social[data-size=\"sm\"] .atlas-embed-social-button { padding: 8px 10px; font-size: 13px; }\n.atlas-embed-social[data-size=\"sm\"] .atlas-embed-social-icon svg { width: 16px; height: 16px; }\n.atlas-embed-social[data-size=\"lg\"] .atlas-embed-social-button { padding: 13px 16px; font-size: 15px; }\n.atlas-embed-social[data-size=\"lg\"] .atlas-embed-social-icon svg { width: 22px; height: 22px; }\n\n/* Icon-only variant: a square button, name in the tooltip. Always laid out as a\n centred wrap (or a carousel), never a full-width bar. */\n.atlas-embed-social-button[data-variant=\"icon\"] { width: auto; padding: 10px; aspect-ratio: 1; }\n.atlas-embed-social[data-size=\"sm\"] .atlas-embed-social-button[data-variant=\"icon\"] { padding: 8px; }\n.atlas-embed-social[data-size=\"lg\"] .atlas-embed-social-button[data-variant=\"icon\"] { padding: 13px; }\n.atlas-embed-social[data-variant=\"icon\"]:not([data-layout=\"carousel\"]) {\n flex-direction: row; flex-wrap: wrap; justify-content: center;\n}\n\n/* Grid \u2014 bars share a row and wrap. */\n.atlas-embed-social[data-layout=\"grid\"] { flex-direction: row; flex-wrap: wrap; }\n.atlas-embed-social[data-layout=\"grid\"] .atlas-embed-social-button { width: auto; flex: 1 1 auto; }\n.atlas-embed-social[data-layout=\"grid\"] .atlas-embed-social-button[data-variant=\"icon\"] { flex: 0 0 auto; }\n\n/* Carousel \u2014 one swipeable, scroll-snapped row. The raw scrollbar is hidden; the\n arrow buttons (below) are the affordance instead. */\n.atlas-embed-social[data-layout=\"carousel\"] {\n flex-direction: row; flex-wrap: nowrap; overflow-x: auto;\n scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scroll-behavior: smooth;\n scrollbar-width: none;\n}\n.atlas-embed-social[data-layout=\"carousel\"]::-webkit-scrollbar { display: none; }\n.atlas-embed-social[data-layout=\"carousel\"] .atlas-embed-social-button { width: auto; flex: 0 0 auto; scroll-snap-align: start; }\n.atlas-embed-social[data-layout=\"carousel\"] .atlas-embed-social-button[data-variant=\"block\"] { min-width: 60%; }\n\n/* Carousel shell \u2014 prev/next controls flanking the scroll row. */\n.atlas-embed-carousel { position: relative; display: flex; align-items: center; gap: 4px; margin-bottom: 16px; }\n.atlas-embed-carousel .atlas-embed-social { flex: 1 1 auto; min-width: 0; margin-bottom: 0; }\n.atlas-embed-carousel-nav {\n flex: none; display: inline-flex; align-items: center; justify-content: center;\n width: 30px; height: 30px; padding: 0; cursor: pointer;\n color: var(--_text); background: var(--_card);\n border: 1px solid var(--_border); border-radius: 999px; transition: opacity 0.15s;\n}\n.atlas-embed-carousel-nav svg { width: 16px; height: 16px; display: block; }\n.atlas-embed-carousel-nav:hover:not(:disabled) { filter: brightness(0.97); }\n.atlas-embed-carousel-nav:disabled { opacity: 0.35; cursor: default; }\n/* Nothing overflows \u2192 no controls at all. */\n.atlas-embed-carousel[data-overflow=\"false\"] .atlas-embed-carousel-nav { display: none; }\n/* When the carousel sits inside a search field, the field owns the bottom margin. */\n.atlas-embed-social-field .atlas-embed-carousel { margin-bottom: 0; }\n\n/* Search \u2014 a filter box above a long provider list (socialButtons.search). The\n field wraps the button container so its own margin replaces the button block's. */\n.atlas-embed-social-field { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }\n.atlas-embed-social-field .atlas-embed-social { margin-bottom: 0; }\n.atlas-embed-social-search {\n width: 100%; padding: 9px 12px; font-size: 16px; color: var(--_text);\n background: var(--_bg); border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-social-search:focus { outline: 2px solid var(--_focus); outline-offset: -1px; }\n.atlas-embed-social-button[hidden] { display: none; }\n.atlas-embed-social-empty { font-size: 13px; color: #6b7280; color: color-mix(in srgb, var(--_text) 72%, transparent); text-align: center; padding: 6px 0; }\n.atlas-embed-social-empty[hidden] { display: none; }\n.atlas-embed-divider {\n display: flex; align-items: center; text-align: center; gap: 10px;\n /* 4.5:1 on the card (WCAG 1.4.3); follows the theme's text colour. */\n color: #6b7280; color: color-mix(in srgb, var(--_text) 72%, transparent); font-size: 12px; margin: 14px 0;\n}\n.atlas-embed-divider::before, .atlas-embed-divider::after {\n content: \"\"; flex: 1; height: 1px; background: var(--_border);\n}\n.atlas-embed-field { display: block; margin: 0 0 12px; }\n.atlas-embed-label { display: block; font-size: 13px; margin: 0 0 5px; color: var(--_text); }\n.atlas-embed-input {\n /* 16px: iOS Safari zooms the page when a smaller field takes focus. */\n width: 100%; padding: 10px 12px; font-size: 16px; color: var(--_text);\n background: var(--_bg); border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-input:focus { outline: 2px solid var(--_focus); outline-offset: -1px; }\n/* Password field with a show/hide toggle. */\n.atlas-embed-password { position: relative; display: flex; align-items: center; }\n.atlas-embed-password .atlas-embed-input { width: 100%; padding-right: 54px; }\n.atlas-embed-password-toggle {\n position: absolute; right: 6px; padding: 4px 7px; min-height: 24px; min-width: 24px; font: inherit; font-size: 12px; font-weight: 600;\n cursor: pointer; color: var(--_primary); background: none; border: 0; border-radius: 6px;\n}\n.atlas-embed-password-toggle:hover { text-decoration: underline; }\nselect.atlas-embed-input { appearance: auto; }\n.atlas-embed-field-checkbox { display: flex; flex-direction: row-reverse; align-items: center; justify-content: flex-end; gap: 8px; }\n.atlas-embed-field-checkbox .atlas-embed-label { margin: 0; }\n.atlas-embed-checkbox { width: 16px; height: 16px; margin: 0; flex: none; }\ntextarea.atlas-embed-input { min-height: 72px; resize: vertical; font-family: inherit; }\nfieldset.atlas-embed-field { border: 0; padding: 0; margin: 0 0 12px; }\n.atlas-embed-choices { display: flex; flex-direction: column; gap: 6px; }\n.atlas-embed-choice { display: flex; flex-direction: row; align-items: center; gap: 8px; font-size: 14px; cursor: pointer; }\n.atlas-embed-choice input { width: 16px; height: 16px; margin: 0; flex: none; accent-color: var(--_primary); }\n.atlas-embed-button {\n width: 100%; margin-top: 6px; padding: 11px 12px; font-size: 14px; font-weight: 650;\n cursor: pointer; color: var(--_on-primary); background: var(--_primary);\n border: 0; border-radius: var(--_radius);\n}\n.atlas-embed-button:disabled { opacity: 0.6; cursor: default; }\n.atlas-embed-button:focus-visible, .atlas-embed-social-button:focus-visible,\n.atlas-embed-handle-back:focus-visible, .atlas-embed-step-back:focus-visible,\n.atlas-embed-password-toggle:focus-visible, .atlas-embed-carousel-nav:focus-visible {\n outline: 2px solid var(--_focus); outline-offset: 2px;\n}\n.atlas-embed-handle-back {\n width: 100%; margin-top: 8px; padding: 6px; font-size: 13px; font-weight: 550;\n cursor: pointer; color: #6b7280; background: none; border: 0;\n}\n.atlas-embed-handle-back:hover { color: #374151; }\n.atlas-embed-error { display: block; font-size: 13px; color: #c53030; margin: 6px 0 0; }\n.atlas-embed-form-error { font-size: 13px; color: #c53030; margin: 0 0 12px; min-height: 0; }\n/* A success/confirmation banner (e.g. after a force-login password reset). */\n.atlas-embed-flash {\n font-size: 13px; color: #0f7a4d; background: rgba(16,163,101,0.08);\n border: 1px solid rgba(16,163,101,0.25); border-radius: var(--_radius);\n padding: 9px 11px; margin: 0 0 14px; text-align: center;\n}\n.atlas-embed-footer { font-size: 13px; color: #6b7280; text-align: center; margin: 16px 0 0; }\n/* \u00A75.1 legal consent row on sign-up. */\n.atlas-embed-consent { display: flex; align-items: flex-start; gap: 8px; margin: 2px 0 14px; font-size: 13px; color: #6b7280; }\n.atlas-embed-consent-check { margin: 2px 0 0; width: 15px; height: 15px; flex: none; accent-color: var(--_primary); cursor: pointer; }\n.atlas-embed-consent-link { color: var(--_primary); text-decoration: underline; }\n/* \u00A77.5 Remember-me row. */\n.atlas-embed-remember { display: flex; align-items: center; gap: 8px; margin: -2px 0 14px; font-size: 13px; color: var(--_text); cursor: pointer; }\n.atlas-embed-remember-check { width: 15px; height: 15px; flex: none; accent-color: var(--_primary); cursor: pointer; }\n.atlas-embed-note { font-size: 14px; color: #6b7280; text-align: center; margin: 8px 0; }\n.atlas-embed-mfa-qr { display: block; margin: 8px auto; width: 180px; height: 180px; image-rendering: pixelated; }\n.atlas-embed-mfa-key { font-family: ui-monospace, monospace; letter-spacing: 0.05em; }\n\n/* Verification step \u2014 a continuation of the email panel, not a new screen: the\n context line (\"Enter the code we sent to \u2026\") + a way back, then a segmented\n one-box-per-digit code input that spawns in. */\n.atlas-embed-step-context { text-align: center; margin: 0 0 20px; }\n.atlas-embed-step-context .atlas-embed-subtitle { margin: 0 0 6px; }\n.atlas-embed-step-back {\n display: inline-block; padding: 2px 4px; font: inherit; font-size: 13px; font-weight: 550;\n cursor: pointer; color: var(--_primary); background: none; border: 0;\n}\n.atlas-embed-step-back:hover { text-decoration: underline; }\n/* A standalone action under the submit button (Forgot password?, Back to sign in,\n the 2FA toggle) reads as a centred link, not a left-aligned fragment. */\nform > .atlas-embed-step-back { display: block; width: 100%; text-align: center; margin-top: 10px; }\n.atlas-embed-code { display: flex; gap: 8px; justify-content: space-between; }\n.atlas-embed-code-box {\n flex: 1 1 0; min-width: 0; aspect-ratio: 1 / 1.15; padding: 0; text-align: center;\n font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--_text);\n background: var(--_bg); border: 1px solid var(--_border); border-radius: var(--_radius);\n}\n.atlas-embed-code-box:focus { outline: 2px solid var(--_focus); outline-offset: -1px; }\n/* A real step change eases its content in; error/busy re-renders (same step) do\n not, and a reduced-motion viewer gets no animation at all. */\n@media (prefers-reduced-motion: no-preference) {\n .atlas-embed-card[data-enter] > form,\n .atlas-embed-card[data-enter] > .atlas-embed-step-context {\n animation: atlas-embed-spawn 0.26s cubic-bezier(0.22, 0.61, 0.36, 1) both;\n }\n}\n@keyframes atlas-embed-spawn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Interaction / polish layer \u2014 how controls FEEL. Driven by data-attributes on\n the root (data-button-style / -button-effect / -shadow / -density /\n -input-style) that the widget sets from the resolved interaction config, plus\n the --_motion tempo var. Every rule is additive: with no attributes set the\n widget looks exactly as it did before this layer existed.\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* Smooth every interactive control at the configured tempo. */\n.atlas-embed-button, .atlas-embed-social-button, .atlas-embed-carousel-nav,\n.atlas-embed-handle-back, .atlas-embed-step-back, .atlas-embed-password-toggle,\n.atlas-embed-input, .atlas-embed-code-box {\n transition:\n transform var(--_motion) ease, box-shadow var(--_motion) ease,\n background-color var(--_motion) ease, border-color var(--_motion) ease,\n color var(--_motion) ease, filter var(--_motion) ease, outline-color var(--_motion) ease;\n}\n\n/* Primary CTA \u2014 a subtle hover darken by default (was static). */\n.atlas-embed-button:hover:not(:disabled) { filter: brightness(1.06); }\n\n/* Button fill style (primary CTA only \u2014 social buttons keep provider styling). */\n.atlas-embed-root[data-button-style=\"outline\"] .atlas-embed-button {\n background: transparent; color: var(--_primary); border: 1px solid var(--_primary);\n}\n.atlas-embed-root[data-button-style=\"outline\"] .atlas-embed-button:hover:not(:disabled) {\n filter: none; background: color-mix(in srgb, var(--_primary) 10%, transparent);\n}\n.atlas-embed-root[data-button-style=\"soft\"] .atlas-embed-button {\n background: color-mix(in srgb, var(--_primary) 14%, transparent); color: var(--_primary);\n}\n.atlas-embed-root[data-button-style=\"soft\"] .atlas-embed-button:hover:not(:disabled) {\n filter: none; background: color-mix(in srgb, var(--_primary) 22%, transparent);\n}\n.atlas-embed-root[data-button-style=\"ghost\"] .atlas-embed-button {\n background: transparent; color: var(--_primary);\n}\n.atlas-embed-root[data-button-style=\"ghost\"] .atlas-embed-button:hover:not(:disabled) {\n filter: none; background: color-mix(in srgb, var(--_primary) 12%, transparent);\n}\n\n/* Press/hover effect \u2014 applies to every button. */\n.atlas-embed-root[data-button-effect=\"scale\"] .atlas-embed-button:active:not(:disabled),\n.atlas-embed-root[data-button-effect=\"scale\"] .atlas-embed-social-button:active,\n.atlas-embed-root[data-button-effect=\"scale\"] .atlas-embed-carousel-nav:active:not(:disabled) {\n transform: scale(0.97);\n}\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-button:hover:not(:disabled),\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-social-button:hover {\n transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,0.14); filter: none;\n}\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-button:active:not(:disabled),\n.atlas-embed-root[data-button-effect=\"lift\"] .atlas-embed-social-button:active { transform: translateY(0); }\n.atlas-embed-root[data-button-effect=\"glow\"] .atlas-embed-button:hover:not(:disabled),\n.atlas-embed-root[data-button-effect=\"glow\"] .atlas-embed-social-button:hover {\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--_primary) 35%, transparent); filter: none;\n}\n/* Ripple \u2014 the widget appends a span on pointer-down; buttons must clip it. */\n.atlas-embed-root[data-button-effect=\"ripple\"] .atlas-embed-button,\n.atlas-embed-root[data-button-effect=\"ripple\"] .atlas-embed-social-button {\n position: relative; overflow: hidden;\n}\n.atlas-embed-ripple {\n position: absolute; border-radius: 50%; transform: scale(0);\n background: currentColor; opacity: 0.28; pointer-events: none;\n animation: atlas-embed-ripple 0.55s ease-out;\n}\n@keyframes atlas-embed-ripple { to { transform: scale(2.6); opacity: 0; } }\n\n/* Card + solid-button elevation. */\n.atlas-embed-root[data-shadow=\"none\"] .atlas-embed-card { box-shadow: none; }\n.atlas-embed-root[data-shadow=\"sm\"] .atlas-embed-card { box-shadow: 0 1px 2px rgba(0,0,0,0.05); }\n.atlas-embed-root[data-shadow=\"lg\"] .atlas-embed-card {\n box-shadow: 0 4px 12px rgba(0,0,0,0.08), 0 16px 48px rgba(0,0,0,0.12);\n}\n\n/* Density \u2014 compact tightens padding and gaps. */\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-card { padding: 20px 18px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-social { gap: 6px; margin-bottom: 12px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-field { margin-bottom: 9px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-button { padding: 9px 12px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-social-button { padding: 8px 10px; }\n.atlas-embed-root[data-density=\"compact\"] .atlas-embed-subtitle { margin-bottom: 14px; }\n\n/* Input style \u2014 filled and underline treatments (default is the outlined field). */\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-input,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-code-box,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-social-search {\n background: color-mix(in srgb, var(--_border) 24%, transparent); border-color: transparent;\n}\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-input:focus,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-code-box:focus,\n.atlas-embed-root[data-input-style=\"filled\"] .atlas-embed-social-search:focus {\n background: var(--_bg); border-color: var(--_primary);\n}\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-input,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-code-box,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-social-search {\n background: transparent; border: 0; border-bottom: 1.5px solid var(--_border);\n border-radius: 0; padding-left: 2px; padding-right: 2px;\n}\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-input:focus,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-code-box:focus,\n.atlas-embed-root[data-input-style=\"underline\"] .atlas-embed-social-search:focus {\n outline: none; border-bottom-color: var(--_primary);\n}\n\n/* \u2500\u2500 Loading states \u2014 spinner / skeleton / dots / bar (interaction.loading).\n Shown while appearance resolves, while a redirect ticket is exchanged, and the\n button spinner while a form submits \u2014 so the widget never flashes blank. \u2500\u2500 */\n.atlas-embed-button { display: flex; align-items: center; justify-content: center; gap: 8px; }\n.atlas-embed-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; min-height: 168px; padding: 12px 0; }\n.atlas-embed-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }\n\n/* Spinner (default) + the in-button spinner. */\n.atlas-embed-spinner, .atlas-embed-btn-spinner {\n border-radius: 50%; border-style: solid; flex: none;\n animation: atlas-embed-spin 0.7s linear infinite;\n}\n.atlas-embed-spinner { width: 30px; height: 30px; border-width: 3px;\n border-color: color-mix(in srgb, var(--_primary) 22%, transparent); border-top-color: var(--_primary); }\n.atlas-embed-btn-spinner { width: 17px; height: 17px; border-width: 2px;\n border-color: color-mix(in srgb, currentColor 35%, transparent); border-top-color: currentColor; }\n@keyframes atlas-embed-spin { to { transform: rotate(360deg); } }\n\n/* Dots. */\n.atlas-embed-loading[data-loading=\"dots\"] { flex-direction: row; }\n.atlas-embed-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--_primary);\n animation: atlas-embed-bounce 1.2s ease-in-out infinite; }\n.atlas-embed-dot:nth-child(2) { animation-delay: 0.15s; }\n.atlas-embed-dot:nth-child(3) { animation-delay: 0.30s; }\n@keyframes atlas-embed-bounce { 0%,80%,100% { transform: scale(0.5); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } }\n\n/* Indeterminate bar. */\n.atlas-embed-loading[data-loading=\"bar\"] { min-height: 132px; }\n.atlas-embed-loadbar { position: relative; width: 64%; height: 4px; border-radius: 999px; overflow: hidden;\n background: color-mix(in srgb, var(--_border) 60%, transparent); }\n.atlas-embed-loadbar::before { content: \"\"; position: absolute; top: 0; bottom: 0; width: 40%; border-radius: 999px;\n background: var(--_primary); animation: atlas-embed-slide 1.1s ease-in-out infinite; }\n@keyframes atlas-embed-slide { 0% { left: -45%; } 100% { left: 105%; } }\n\n/* Skeleton \u2014 placeholders shaped like the form. */\n.atlas-embed-loading[data-loading=\"skeleton\"] { align-items: stretch; min-height: 0; gap: 12px; }\n.atlas-embed-skel { border-radius: var(--_radius); position: relative; overflow: hidden;\n background: color-mix(in srgb, var(--_border) 55%, transparent); }\n.atlas-embed-skel::after { content: \"\"; position: absolute; inset: 0; transform: translateX(-100%);\n background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--_text) 8%, transparent), transparent);\n animation: atlas-embed-shimmer 1.3s infinite; }\n.atlas-embed-skel-title { height: 22px; width: 55%; margin: 2px auto 2px; }\n.atlas-embed-skel-sub { height: 13px; width: 75%; margin: 0 auto 8px; }\n.atlas-embed-skel-input { height: 42px; }\n.atlas-embed-skel-button { height: 44px; margin-top: 6px; }\n@keyframes atlas-embed-shimmer { to { transform: translateX(100%); } }\n\n/* Reduced motion always wins \u2014 no transitions, presses, ripples, or spawn; and\n loaders swap their spin/bounce/slide/shimmer for a minimal opacity pulse. */\n@media (prefers-reduced-motion: reduce) {\n .atlas-embed-root { --_motion: 0s; }\n .atlas-embed-root [class^=\"atlas-embed-\"] { transition: none !important; }\n .atlas-embed-root .atlas-embed-button:active,\n .atlas-embed-root .atlas-embed-social-button:active { transform: none !important; }\n .atlas-embed-ripple { display: none; }\n .atlas-embed-spinner, .atlas-embed-btn-spinner, .atlas-embed-dot,\n .atlas-embed-loadbar::before, .atlas-embed-skel::after {\n animation: atlas-embed-pulse 1.4s ease-in-out infinite !important;\n }\n .atlas-embed-loadbar::before { position: static; width: 100%; }\n}\n@keyframes atlas-embed-pulse { 0%,100% { opacity: 0.4; } 50% { opacity: 1; } }\n";
|
|
17
3
|
export declare function injectStyles(doc?: Document): void;
|
package/dist/styles.js
CHANGED
|
@@ -15,23 +15,26 @@ exports.injectStyles = injectStyles;
|
|
|
15
15
|
* with a hard-coded fallback, so the widget looks right the instant it mounts —
|
|
16
16
|
* before `GET /v1/appearance` resolves — and re-themes when it does.
|
|
17
17
|
*/
|
|
18
|
+
const runtime_1 = require("@atlasauth/design/runtime");
|
|
18
19
|
exports.STYLE_MARKER = 'atlas-embed-styles';
|
|
19
20
|
exports.EMBED_CSS = `
|
|
21
|
+
/* The host page's --atlas-host-* variables (shared UI-kit names) restyle the widget
|
|
22
|
+
where the page sets them; explicit --atlas-embed-* settings still win. */
|
|
20
23
|
.atlas-embed-root {
|
|
21
|
-
--_bg: var(--atlas-embed-color-background, #ffffff);
|
|
22
|
-
--_card: var(--atlas-embed-color-card, #ffffff);
|
|
23
|
-
--_text: var(--atlas-embed-color-text, #1c1c1f);
|
|
24
|
-
--_primary: var(--atlas-embed-color-primary, #5b5bd6);
|
|
25
|
-
--_on-primary: var(--atlas-embed-color-text-on-primary, #ffffff);
|
|
24
|
+
--_bg: var(--atlas-embed-color-background, var(--atlas-host-surface, #ffffff));
|
|
25
|
+
--_card: var(--atlas-embed-color-card, var(--atlas-host-surface, #ffffff));
|
|
26
|
+
--_text: var(--atlas-embed-color-text, var(--atlas-host-ink, #1c1c1f));
|
|
27
|
+
--_primary: var(--atlas-embed-color-primary, var(--atlas-host-accent, #5b5bd6));
|
|
28
|
+
--_on-primary: var(--atlas-embed-color-text-on-primary, var(--atlas-host-accent-ink, #ffffff));
|
|
26
29
|
/* Keyboard focus ring — a solid outline. The widget sets it to the primary
|
|
27
30
|
adjusted to 3:1 on the card/background (or the page's explicit ring). */
|
|
28
|
-
--_focus: var(--atlas-embed-color-focus-ring, var(--_primary));
|
|
29
|
-
--_border: var(--atlas-embed-color-border, #e4e4e9);
|
|
30
|
-
--_radius: var(--atlas-embed-border-radius, 10px);
|
|
31
|
+
--_focus: var(--atlas-embed-color-focus-ring, var(--atlas-host-focus-ring, var(--_primary)));
|
|
32
|
+
--_border: var(--atlas-embed-color-border, var(--atlas-host-line, #e4e4e9));
|
|
33
|
+
--_radius: var(--atlas-embed-border-radius, var(--atlas-host-radius, 10px));
|
|
31
34
|
/* Transition tempo — the widget sets --atlas-embed-motion from motionSpeed and
|
|
32
35
|
to 0s when animations are off; reduced-motion forces 0s below regardless. */
|
|
33
36
|
--_motion: var(--atlas-embed-motion, 0.16s);
|
|
34
|
-
font-family: var(--atlas-embed-font-family, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
|
|
37
|
+
font-family: var(--atlas-embed-font-family, var(--atlas-host-font, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif));
|
|
35
38
|
color: var(--_text);
|
|
36
39
|
box-sizing: border-box;
|
|
37
40
|
display: block;
|
|
@@ -119,11 +122,12 @@ exports.EMBED_CSS = `
|
|
|
119
122
|
}
|
|
120
123
|
.atlas-embed-social-search:focus { outline: 2px solid var(--_focus); outline-offset: -1px; }
|
|
121
124
|
.atlas-embed-social-button[hidden] { display: none; }
|
|
122
|
-
.atlas-embed-social-empty { font-size: 13px; color: #
|
|
125
|
+
.atlas-embed-social-empty { font-size: 13px; color: #6b7280; color: color-mix(in srgb, var(--_text) 72%, transparent); text-align: center; padding: 6px 0; }
|
|
123
126
|
.atlas-embed-social-empty[hidden] { display: none; }
|
|
124
127
|
.atlas-embed-divider {
|
|
125
128
|
display: flex; align-items: center; text-align: center; gap: 10px;
|
|
126
|
-
|
|
129
|
+
/* 4.5:1 on the card (WCAG 1.4.3); follows the theme's text colour. */
|
|
130
|
+
color: #6b7280; color: color-mix(in srgb, var(--_text) 72%, transparent); font-size: 12px; margin: 14px 0;
|
|
127
131
|
}
|
|
128
132
|
.atlas-embed-divider::before, .atlas-embed-divider::after {
|
|
129
133
|
content: ""; flex: 1; height: 1px; background: var(--_border);
|
|
@@ -140,7 +144,7 @@ exports.EMBED_CSS = `
|
|
|
140
144
|
.atlas-embed-password { position: relative; display: flex; align-items: center; }
|
|
141
145
|
.atlas-embed-password .atlas-embed-input { width: 100%; padding-right: 54px; }
|
|
142
146
|
.atlas-embed-password-toggle {
|
|
143
|
-
position: absolute; right: 6px; padding: 4px 7px; font: inherit; font-size: 12px; font-weight: 600;
|
|
147
|
+
position: absolute; right: 6px; padding: 4px 7px; min-height: 24px; min-width: 24px; font: inherit; font-size: 12px; font-weight: 600;
|
|
144
148
|
cursor: pointer; color: var(--_primary); background: none; border: 0; border-radius: 6px;
|
|
145
149
|
}
|
|
146
150
|
.atlas-embed-password-toggle:hover { text-decoration: underline; }
|
|
@@ -169,8 +173,8 @@ fieldset.atlas-embed-field { border: 0; padding: 0; margin: 0 0 12px; }
|
|
|
169
173
|
cursor: pointer; color: #6b7280; background: none; border: 0;
|
|
170
174
|
}
|
|
171
175
|
.atlas-embed-handle-back:hover { color: #374151; }
|
|
172
|
-
.atlas-embed-error { display: block; font-size: 13px; color: #
|
|
173
|
-
.atlas-embed-form-error { font-size: 13px; color: #
|
|
176
|
+
.atlas-embed-error { display: block; font-size: 13px; color: #c53030; margin: 6px 0 0; }
|
|
177
|
+
.atlas-embed-form-error { font-size: 13px; color: #c53030; margin: 0 0 12px; min-height: 0; }
|
|
174
178
|
/* A success/confirmation banner (e.g. after a force-login password reset). */
|
|
175
179
|
.atlas-embed-flash {
|
|
176
180
|
font-size: 13px; color: #0f7a4d; background: rgba(16,163,101,0.08);
|
|
@@ -390,11 +394,19 @@ form > .atlas-embed-step-back { display: block; width: 100%; text-align: center;
|
|
|
390
394
|
@keyframes atlas-embed-pulse { 0%,100% { opacity: 0.4; } 50% { opacity: 1; } }
|
|
391
395
|
`;
|
|
392
396
|
/** Inject the sheet once per document. Safe to call on every mount. */
|
|
397
|
+
const adoptedDocs = new WeakSet();
|
|
393
398
|
function injectStyles(doc = document) {
|
|
394
|
-
if (doc.querySelector(`style[data-${exports.STYLE_MARKER}]`))
|
|
399
|
+
if (adoptedDocs.has(doc) || doc.querySelector(`style[data-${exports.STYLE_MARKER}]`))
|
|
395
400
|
return;
|
|
401
|
+
// A constructable stylesheet needs no style-src under a strict CSP; else a
|
|
402
|
+
// <style> carrying the page's CSP nonce.
|
|
403
|
+
if ((0, runtime_1.adoptConstructable)(doc, exports.STYLE_MARKER, exports.EMBED_CSS)) {
|
|
404
|
+
adoptedDocs.add(doc);
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
396
407
|
const style = doc.createElement('style');
|
|
397
408
|
style.setAttribute(`data-${exports.STYLE_MARKER}`, '');
|
|
409
|
+
(0, runtime_1.applyStyleNonce)(doc, style);
|
|
398
410
|
style.textContent = exports.EMBED_CSS;
|
|
399
411
|
(doc.head ?? doc.documentElement).appendChild(style);
|
|
400
412
|
}
|
package/dist/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":";;;AA4YA,oCAaC;AAzZD;;;;;;;;;;;;GAYG;AACH,uDAAgF;AACnE,QAAA,YAAY,GAAG,oBAAoB,CAAC;AAEpC,QAAA,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuXxB,CAAC;AAEF,uEAAuE;AACvE,MAAM,WAAW,GAAG,IAAI,OAAO,EAAY,CAAC;AAE5C,SAAgB,YAAY,CAAC,MAAgB,QAAQ;IACnD,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,cAAc,oBAAY,GAAG,CAAC;QAAE,OAAO;IACrF,2EAA2E;IAC3E,yCAAyC;IACzC,IAAI,IAAA,4BAAkB,EAAC,GAAG,EAAE,oBAAY,EAAE,iBAAS,CAAC,EAAE,CAAC;QACrD,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,YAAY,CAAC,QAAQ,oBAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAA,yBAAe,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,KAAK,CAAC,WAAW,GAAG,iBAAS,CAAC;IAC9B,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { AtlasSdkInfo } from '@atlasauth/js';
|
|
2
2
|
/** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
|
|
3
|
-
export declare const ATLAS_EMBED_VERSION = "0.
|
|
3
|
+
export declare const ATLAS_EMBED_VERSION = "0.11.0";
|
|
4
4
|
export declare const ATLAS_EMBED_SDK: AtlasSdkInfo;
|
package/dist/version.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ATLAS_EMBED_SDK = exports.ATLAS_EMBED_VERSION = void 0;
|
|
4
4
|
/** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
|
|
5
|
-
exports.ATLAS_EMBED_VERSION = '0.
|
|
5
|
+
exports.ATLAS_EMBED_VERSION = '0.11.0';
|
|
6
6
|
exports.ATLAS_EMBED_SDK = { name: '@atlasauth/embed', version: exports.ATLAS_EMBED_VERSION };
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/dist/widget/dom.js
CHANGED
|
@@ -15,6 +15,11 @@ function el(w, tag, className, text) {
|
|
|
15
15
|
node.className = className;
|
|
16
16
|
if (text != null)
|
|
17
17
|
node.textContent = text;
|
|
18
|
+
// Validation and server errors are announced the moment they appear (WCAG 4.1.3).
|
|
19
|
+
if (node.classList.contains('atlas-embed-form-error') ||
|
|
20
|
+
node.classList.contains('atlas-embed-error')) {
|
|
21
|
+
node.setAttribute('role', 'alert');
|
|
22
|
+
}
|
|
18
23
|
// The two button classes the ripple stylesheet clips — bind the tap ripple
|
|
19
24
|
// here so every submit/social button gets it without touching each call site.
|
|
20
25
|
if (node.classList.contains('atlas-embed-button') ||
|
package/dist/widget/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/widget/dom.ts"],"names":[],"mappings":";;AAGA,kBAEC;AAED,
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/widget/dom.ts"],"names":[],"mappings":"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"}
|
package/dist/widget/flow.js
CHANGED
|
@@ -19,6 +19,7 @@ const js_1 = require("@atlasauth/js");
|
|
|
19
19
|
const redirect_1 = require("../redirect");
|
|
20
20
|
const captcha_1 = require("./captcha");
|
|
21
21
|
const render_1 = require("./render");
|
|
22
|
+
const policies_1 = require("./policies");
|
|
22
23
|
/**
|
|
23
24
|
* §5 obtain a captcha token for a flow, mounting the challenge OUTSIDE `w.root`
|
|
24
25
|
* (render() wipes root on every paint, so a host inside it would vanish). The
|
|
@@ -111,7 +112,7 @@ async function handleRedirectLanding(w) {
|
|
|
111
112
|
// A redirect that carries a status but no ticket owes a second factor:
|
|
112
113
|
// resume the flow AT that step, bound to the same attempt.
|
|
113
114
|
if (result.status) {
|
|
114
|
-
w.state = (0, js_1.flowFromPending)({ id: result.attemptId, status: result.status });
|
|
115
|
+
w.state = (0, js_1.flowFromPending)({ id: result.attemptId, status: result.status, ...(result.policyToken ? { policyToken: result.policyToken } : {}) });
|
|
115
116
|
scrubUrl(w, win);
|
|
116
117
|
}
|
|
117
118
|
return false;
|
|
@@ -456,7 +457,11 @@ async function startSsoPopup(w, connectionId, win, baseRedirect) {
|
|
|
456
457
|
}
|
|
457
458
|
// Owes a second factor — resume the flow in THIS window at that step.
|
|
458
459
|
if (data.attempt_id && data.status) {
|
|
459
|
-
w.state = (0, js_1.flowFromPending)({
|
|
460
|
+
w.state = (0, js_1.flowFromPending)({
|
|
461
|
+
id: data.attempt_id,
|
|
462
|
+
status: data.status,
|
|
463
|
+
...(typeof data.policy_token === 'string' ? { policyToken: data.policy_token } : {}),
|
|
464
|
+
});
|
|
460
465
|
(0, render_1.render)(w);
|
|
461
466
|
}
|
|
462
467
|
};
|
|
@@ -509,8 +514,19 @@ async function completeIdToken(w, provider, idToken) {
|
|
|
509
514
|
await complete(w, parsed.attemptId);
|
|
510
515
|
return;
|
|
511
516
|
}
|
|
512
|
-
// Owes a second factor — resume at that step, bound
|
|
513
|
-
|
|
517
|
+
// Owes a second factor (or policy acceptance) — resume at that step, bound
|
|
518
|
+
// to the same attempt. A held attempt's response carries what it waits on
|
|
519
|
+
// and the one-time token for accepting.
|
|
520
|
+
const held = res.data;
|
|
521
|
+
const seeded = (0, js_1.flowFromPending)({
|
|
522
|
+
id: parsed.attemptId,
|
|
523
|
+
status: parsed.status,
|
|
524
|
+
...(typeof held?.policy_acceptance_token === 'string' ? { policyToken: held.policy_acceptance_token } : {}),
|
|
525
|
+
});
|
|
526
|
+
w.state =
|
|
527
|
+
parsed.status === 'needs_policy_acceptance' && seeded.attempt && Array.isArray(held?.pending_policies)
|
|
528
|
+
? { ...seeded, attempt: { ...seeded.attempt, pending_policies: held.pending_policies } }
|
|
529
|
+
: seeded;
|
|
514
530
|
(0, render_1.render)(w);
|
|
515
531
|
}
|
|
516
532
|
/** §5.4 enter the "forgot password" sub-flow. */
|
|
@@ -613,8 +629,11 @@ async function submitSignUp(w, values, consent = true) {
|
|
|
613
629
|
fields,
|
|
614
630
|
consent,
|
|
615
631
|
captchaToken: token ?? undefined,
|
|
632
|
+
policyAcceptances: w.policies.build(),
|
|
616
633
|
});
|
|
617
634
|
w.busy = false;
|
|
635
|
+
// A policy changed while the form was open: reload them so the form asks again.
|
|
636
|
+
await (0, policies_1.refreshAfterRefusal)(w);
|
|
618
637
|
const attempt = w.state.attempt;
|
|
619
638
|
if (attempt?.status === 'complete') {
|
|
620
639
|
const attemptId = attempt.id ?? null;
|
package/dist/widget/flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/widget/flow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/widget/flow.ts"],"names":[],"mappings":"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"}
|
package/dist/widget/forms.js
CHANGED
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "EMAIL_UNAVAILABLE_MESSAGE", { enumerable: true,
|
|
|
12
12
|
const constants_1 = require("./constants");
|
|
13
13
|
const dom_1 = require("./dom");
|
|
14
14
|
const render_1 = require("./render");
|
|
15
|
+
const policies_1 = require("./policies");
|
|
15
16
|
const flow_1 = require("./flow");
|
|
16
17
|
const mfa_1 = require("./mfa");
|
|
17
18
|
/**
|
|
@@ -609,23 +610,46 @@ function renderSignUpForm(w) {
|
|
|
609
610
|
addField('password', 'Password', { type: 'password', required: true, autocomplete: 'new-password' });
|
|
610
611
|
// §5.1 legal consent — links, and a checkbox that gates the button when
|
|
611
612
|
// agreement is required (no re-render, so typed values are never lost).
|
|
612
|
-
|
|
613
|
+
// Instance policies (terms, privacy, …) replace the legacy single consent row.
|
|
614
|
+
let button;
|
|
615
|
+
const policies = (0, policies_1.mountSignUpPolicies)(w, () => {
|
|
616
|
+
if (button)
|
|
617
|
+
button.disabled = w.busy || !policies?.canSubmit();
|
|
618
|
+
});
|
|
619
|
+
const consent = policies ? null : renderLegalConsent(w);
|
|
613
620
|
if (consent)
|
|
614
621
|
form.appendChild(consent.row);
|
|
615
|
-
|
|
616
|
-
|
|
622
|
+
if (policies)
|
|
623
|
+
form.appendChild(policies.consent);
|
|
624
|
+
button = (0, dom_1.submitButton)(w, constants_1.COPY[w.mode].submit);
|
|
625
|
+
const consentOk = () => (policies ? policies.canSubmit() : !consent?.checkbox || consent.checkbox.checked);
|
|
617
626
|
button.disabled = w.busy || !consentOk();
|
|
618
627
|
consent?.checkbox?.addEventListener('change', () => {
|
|
619
628
|
button.disabled = w.busy || !consentOk();
|
|
620
629
|
});
|
|
621
630
|
form.appendChild(button);
|
|
631
|
+
if (policies)
|
|
632
|
+
form.appendChild(policies.clickwrap);
|
|
622
633
|
form.addEventListener('submit', (event) => {
|
|
623
634
|
event.preventDefault();
|
|
624
635
|
const values = {};
|
|
625
636
|
for (const [name, read] of readers)
|
|
626
637
|
values[name] = read();
|
|
627
638
|
// §5.1 carry the consent tick to the server (true when there is no gate).
|
|
628
|
-
|
|
639
|
+
if (!policies) {
|
|
640
|
+
void (0, flow_1.submitSignUp)(w, values, consentOk());
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
643
|
+
// Scroll-mode policies are read in their dialog first; declining cancels the sign-up.
|
|
644
|
+
void policies.read().then((ok) => {
|
|
645
|
+
if (ok) {
|
|
646
|
+
void (0, flow_1.submitSignUp)(w, values, true);
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
const declined = w.policies.policies.find((p) => !w.policies.isChecked(p.key))?.title ?? '';
|
|
650
|
+
w.state = { ...w.state, errors: [{ code: 'POLICY_DECLINED', message: (0, policies_1.policyT)(w)('policy.declined', { policy: declined }) }] };
|
|
651
|
+
(0, render_1.render)(w);
|
|
652
|
+
});
|
|
629
653
|
});
|
|
630
654
|
return form;
|
|
631
655
|
}
|