@authhero/widget 0.40.2 → 0.41.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.
@@ -135,6 +135,127 @@ form {
135
135
  flex-direction: column;
136
136
  }
137
137
 
138
+ .form-footer,
139
+ .secondary-actions,
140
+ .prompt-partial {
141
+ display: flex;
142
+ flex-direction: column;
143
+ }
144
+
145
+ .prompt-partial .ulp-field {
146
+ display: flex;
147
+ flex-direction: column;
148
+ gap: 6px;
149
+ position: relative;
150
+ margin-top: 8px;
151
+ margin-bottom: 16px;
152
+ }
153
+
154
+ .prompt-partial label {
155
+ font-size: var(--ah-font-size-label, 14px);
156
+ font-weight: var(--ah-font-weight-label, 400);
157
+ color: var(--ah-color-text, #1e212a);
158
+ }
159
+
160
+ .prompt-partial
161
+ .ulp-error
162
+ input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
163
+ .prompt-partial .ulp-error select,
164
+ .prompt-partial .ulp-error textarea {
165
+ border-color: var(--ah-color-error, #d03c38);
166
+ }
167
+
168
+ .prompt-partial
169
+ .ulp-error
170
+ input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):focus,
171
+ .prompt-partial .ulp-error select:focus,
172
+ .prompt-partial .ulp-error textarea:focus {
173
+ box-shadow: inset 0 0 0 1px var(--ah-color-error, #d03c38);
174
+ }
175
+
176
+ /* Matches .error-text on built-in fields (the flex gap supplies the spacing). */
177
+ .prompt-partial .ulp-error-info {
178
+ font-size: 12px;
179
+ color: var(--ah-color-error, #d03c38);
180
+ margin-top: -2px;
181
+ line-height: 1.4;
182
+ }
183
+
184
+ .prompt-partial .required {
185
+ color: var(--ah-color-error, #d03c38);
186
+ margin-left: 2px;
187
+ }
188
+
189
+ .prompt-partial .ulp-field > input + label,
190
+ .prompt-partial .ulp-field > select + label,
191
+ .prompt-partial .ulp-field > textarea + label {
192
+ position: absolute;
193
+ left: 16px;
194
+ top: 50%;
195
+ z-index: 1;
196
+ padding: 0;
197
+ background-color: transparent;
198
+ color: var(--ah-color-text-muted, #65676e);
199
+ pointer-events: none;
200
+ transform: translateY(-50%);
201
+ transition: all 0.15s ease-out;
202
+ }
203
+
204
+ .prompt-partial .ulp-field > input:focus + label,
205
+ .prompt-partial .ulp-field > input:not(:placeholder-shown) + label,
206
+ .prompt-partial .ulp-field > select + label,
207
+ .prompt-partial .ulp-field > textarea:focus + label,
208
+ .prompt-partial .ulp-field > textarea:not(:placeholder-shown) + label {
209
+ top: -8px;
210
+ left: 12px;
211
+ padding: 0 4px;
212
+ background-color: var(--ah-color-bg, #ffffff);
213
+ color: var(--ah-color-text-muted, #65676e);
214
+ font-size: 12px;
215
+ transform: translateY(0);
216
+ }
217
+
218
+ .prompt-partial .ulp-field > input:focus + label,
219
+ .prompt-partial .ulp-field > select:focus + label,
220
+ .prompt-partial .ulp-field > textarea:focus + label {
221
+ color: var(--ah-color-primary, #635dff);
222
+ }
223
+
224
+ .prompt-partial
225
+ input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
226
+ .prompt-partial select,
227
+ .prompt-partial textarea {
228
+ width: 100%;
229
+ padding: 16px;
230
+ font-size: 16px;
231
+ font-family: inherit;
232
+ color: var(--ah-color-input-text, var(--ah-color-text, #1e212a));
233
+ background-color: var(--ah-color-input-bg, #ffffff);
234
+ border: var(--ah-input-border-width, 1px) solid
235
+ var(--ah-color-border, #c9cace);
236
+ border-radius: var(--ah-input-radius, 3px);
237
+ outline: none;
238
+ box-sizing: border-box;
239
+ transition:
240
+ border-color 0.15s ease-out,
241
+ box-shadow 0.15s ease-out;
242
+ }
243
+
244
+ .prompt-partial
245
+ input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):hover,
246
+ .prompt-partial select:hover,
247
+ .prompt-partial textarea:hover {
248
+ border-color: var(--ah-color-border-hover, #65676e);
249
+ }
250
+
251
+ .prompt-partial
252
+ input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):focus,
253
+ .prompt-partial select:focus,
254
+ .prompt-partial textarea:focus {
255
+ border-color: var(--ah-color-primary, #635dff);
256
+ box-shadow: inset 0 0 0 1px var(--ah-color-primary, #635dff);
257
+ }
258
+
138
259
  .form-content {
139
260
  display: flex;
140
261
  flex-direction: column;
@@ -1,4 +1,4 @@
1
- import { h, } from "@stencil/core";
1
+ import { h, Build, } from "@stencil/core";
2
2
  import { mergeThemeVars, applyCssVars } from "../../utils/branding";
3
3
  import { sanitizeHtml } from "../../utils/sanitize-html";
4
4
  import { sanitizeForCssToken } from "../../utils/css-token";
@@ -15,6 +15,19 @@ const CHOICE_LIST_SEARCH_THRESHOLD = 5;
15
15
  * (CARDS, FILE, RECAPTCHA, …) can carry `required` in the schema too, and
16
16
  * gating on them would leave Continue disabled with no way to satisfy it.
17
17
  */
18
+ /**
19
+ * Field types rendered as a single plain text input whose value maps 1:1 to
20
+ * formData. Composite fields (TEL, DATE) and choice/checkbox fields keep
21
+ * internal state, so they're not adopted from pre-hydration markup.
22
+ */
23
+ const PREHYDRATION_TEXT_TYPES = new Set([
24
+ "TEXT",
25
+ "EMAIL",
26
+ "CODE",
27
+ "PASSWORD",
28
+ "NUMBER",
29
+ "URL",
30
+ ]);
18
31
  const FILLABLE_FIELD_TYPES = new Set([
19
32
  "TEXT",
20
33
  "EMAIL",
@@ -385,7 +398,24 @@ export class AuthheroWidget {
385
398
  * actually in the DOM before measuring its height.
386
399
  */
387
400
  pendingRenderResolvers = [];
401
+ /**
402
+ * Number of `swapScreen` calls still running (rendering or animating the
403
+ * card height). A counter rather than a flag because a newer swap can start
404
+ * before a superseded one has settled.
405
+ */
406
+ activeSwaps = 0;
407
+ updateReadyAttribute() {
408
+ if (Build.isBrowser) {
409
+ this.el.toggleAttribute("data-ready", !this.loading && this.activeSwaps === 0);
410
+ }
411
+ }
388
412
  componentDidRender() {
413
+ // `data-ready` marks the widget as interactive: hydrated in the browser
414
+ // (the SSR markup already carries Stencil's `hydrated` class, so that
415
+ // can't tell server and client apart) and not mid-submit or mid-swap.
416
+ // Stencil defers this hook until child nodes have rendered, so the
417
+ // fields are live too. E2E tests wait on `authhero-widget[data-ready]`.
418
+ this.updateReadyAttribute();
389
419
  if (this.pendingRenderResolvers.length === 0)
390
420
  return;
391
421
  const resolvers = this.pendingRenderResolvers;
@@ -433,6 +463,18 @@ export class AuthheroWidget {
433
463
  apply();
434
464
  return;
435
465
  }
466
+ // Hold `data-ready` off until the new screen has rendered and the height
467
+ // animation has finished; `apply()` clears `loading` before either.
468
+ this.activeSwaps++;
469
+ try {
470
+ await this.animateSwap(card, apply);
471
+ }
472
+ finally {
473
+ this.activeSwaps--;
474
+ this.updateReadyAttribute();
475
+ }
476
+ }
477
+ async animateSwap(card, apply) {
436
478
  // Lock the current height and clip, so swapping the content doesn't jump
437
479
  // before the animation runs.
438
480
  const startHeight = card.getBoundingClientRect().height;
@@ -597,6 +639,9 @@ export class AuthheroWidget {
597
639
  if (!this._authParams) {
598
640
  this.watchAuthParams(this.authParams ?? this.readJsonScript("auth-params"));
599
641
  }
642
+ if (Build.isBrowser && this._screen) {
643
+ this.adoptPrehydrationValues(this._screen);
644
+ }
600
645
  // Load persisted state if available
601
646
  this.loadPersistedState();
602
647
  // Fetch screen from API if URL provided and no screen prop
@@ -604,6 +649,41 @@ export class AuthheroWidget {
604
649
  await this.fetchScreen(this.screenId);
605
650
  }
606
651
  }
652
+ /**
653
+ * Carry over text the user (or a password manager, or a test driver) put
654
+ * into the server-rendered inputs before the client bundle loaded. Those
655
+ * inputs had no `onInput` handler yet, so `formData` never saw the value:
656
+ * the first client render would reset them to "" and keep the submit
657
+ * button disabled. The declarative shadow roots are still the SSR ones
658
+ * here — `componentWillLoad` runs before the first client render.
659
+ */
660
+ adoptPrehydrationValues(screen) {
661
+ const root = this.el.shadowRoot;
662
+ if (!root)
663
+ return;
664
+ const roots = [root];
665
+ root.querySelectorAll("authhero-node").forEach((node) => {
666
+ if (node.shadowRoot)
667
+ roots.push(node.shadowRoot);
668
+ });
669
+ const adopted = {};
670
+ for (const component of screen.components ?? []) {
671
+ if (!PREHYDRATION_TEXT_TYPES.has(component.type))
672
+ continue;
673
+ for (const r of roots) {
674
+ const input = Array.from(r.querySelectorAll("input[name]")).find((el) => el.name === component.id && el.type !== "hidden");
675
+ // Adopt "" too: a prefilled default the user cleared before
676
+ // hydration must not be restored by the client render.
677
+ if (input) {
678
+ adopted[component.id] = input.value;
679
+ break;
680
+ }
681
+ }
682
+ }
683
+ if (Object.keys(adopted).length > 0) {
684
+ this.formData = { ...this.formData, ...adopted };
685
+ }
686
+ }
607
687
  /**
608
688
  * Fetch screen configuration from the API
609
689
  * @param screenIdOverride Optional screen ID to fetch (overrides this.screenId)
@@ -705,14 +785,44 @@ export class AuthheroWidget {
705
785
  e.preventDefault();
706
786
  if (!this._screen || this.loading)
707
787
  return;
708
- let submitData = { ...this.formData, ...(overrideData || {}) };
709
- // Merge hidden input values from DOM (may have been set programmatically
710
- // by inline scripts, e.g. passkey management buttons)
711
788
  const form = this.el.shadowRoot?.querySelector("form");
789
+ if (this._screen.partials &&
790
+ form?.reportValidity &&
791
+ !form.reportValidity()) {
792
+ return;
793
+ }
794
+ const submitData = {
795
+ ...this.formData,
796
+ ...(overrideData || {}),
797
+ };
798
+ // Native fields in prompt partials are direct descendants of this form,
799
+ // unlike authhero-node inputs in nested shadow roots. Read them through
800
+ // FormData so standard HTML controls and successful-control semantics are
801
+ // preserved (disabled controls are skipped, repeated names are kept as
802
+ // arrays). FormData also covers enabled hidden inputs for ulp-* names.
803
+ const nativeNames = new Set();
804
+ if (form && this._screen.partials) {
805
+ const nativeValues = {};
806
+ new FormData(form).forEach((value, key) => {
807
+ if (typeof value === "string" && key.startsWith("ulp-")) {
808
+ (nativeValues[key] ??= []).push(value);
809
+ }
810
+ });
811
+ for (const [key, values] of Object.entries(nativeValues)) {
812
+ nativeNames.add(key);
813
+ submitData[key] = values.length > 1 ? values : values[0];
814
+ }
815
+ }
816
+ // Legacy behaviour for inline scripts that fill hidden inputs: merge
817
+ // enabled ones, but never overwrite what FormData already collected.
712
818
  if (form) {
713
- const hiddenInputs = form.querySelectorAll('input[type="hidden"]');
714
- hiddenInputs.forEach((input) => {
715
- if (input.name && input.value) {
819
+ form
820
+ .querySelectorAll('input[type="hidden"]')
821
+ .forEach((input) => {
822
+ if (input.name &&
823
+ input.value &&
824
+ !input.disabled &&
825
+ !nativeNames.has(input.name)) {
716
826
  submitData[input.name] = input.value;
717
827
  }
718
828
  });
@@ -866,6 +976,11 @@ export class AuthheroWidget {
866
976
  if (!form)
867
977
  return;
868
978
  form.submit = () => {
979
+ if (this._screen?.partials &&
980
+ form.reportValidity &&
981
+ !form.reportValidity()) {
982
+ return;
983
+ }
869
984
  const formData = new FormData(form);
870
985
  const data = {};
871
986
  formData.forEach((value, key) => {
@@ -1470,6 +1585,27 @@ export class AuthheroWidget {
1470
1585
  const config = component.config;
1471
1586
  return config?.text ?? "";
1472
1587
  }
1588
+ renderPromptPartial(screen, insertionPoint) {
1589
+ const html = screen.partials?.[insertionPoint];
1590
+ if (!html)
1591
+ return null;
1592
+ // Prompt partials intentionally contain tenant-authored form controls, so
1593
+ // the widget must keep their input attributes intact.
1594
+ return (h("div", { class: `prompt-partial prompt-partial-${insertionPoint}`, part: `prompt-partial prompt-partial-${insertionPoint}`, "data-insertion-point": insertionPoint, innerHTML: html }));
1595
+ }
1596
+ renderScreenLinks(screen) {
1597
+ if (!screen.links?.length)
1598
+ return null;
1599
+ return (h("div", { class: "links", part: "links" }, screen.links.map((link) => (h("span", { class: "link-wrapper", part: "link-wrapper", key: link.id ?? link.href }, link.linkText ? (h("span", null, link.text, " ", h("a", { href: link.href, class: "link", part: "link", onClick: (e) => this.handleLinkClick(e, {
1600
+ id: link.id,
1601
+ href: link.href,
1602
+ text: link.linkText || link.text,
1603
+ }) }, link.linkText))) : (h("a", { href: link.href, class: "link", part: "link", onClick: (e) => this.handleLinkClick(e, {
1604
+ id: link.id,
1605
+ href: link.href,
1606
+ text: link.text,
1607
+ }) }, link.text)))))));
1608
+ }
1473
1609
  render() {
1474
1610
  const screen = this._screen;
1475
1611
  if (this.loading && !screen) {
@@ -1496,13 +1632,20 @@ export class AuthheroWidget {
1496
1632
  ? components.find((c) => this.isDividerComponent(c))
1497
1633
  : undefined;
1498
1634
  const fieldComponents = components.filter((c) => !this.isSocialComponent(c) && c !== dividerComponent);
1635
+ const hasPromptPartials = Object.values(screen.partials ?? {}).some((html) => !!html);
1636
+ const footerComponents = hasPromptPartials
1637
+ ? fieldComponents.filter((component) => component.id === "submit" && component.type === "NEXT_BUTTON")
1638
+ : [];
1639
+ const contentFieldComponents = hasPromptPartials
1640
+ ? fieldComponents.filter((component) => !footerComponents.includes(component))
1641
+ : fieldComponents;
1499
1642
  const hasDivider = !!dividerComponent;
1500
1643
  const dividerText = dividerComponent?.config?.text || "Or";
1501
1644
  // A "choice list" screen is one whose entire field section is pick-one
1502
1645
  // buttons (e.g. tenant selection). When the list is long, render it as a
1503
1646
  // searchable, scrollable list instead of a tall column of buttons.
1504
- const choiceButtons = fieldComponents.filter((c) => c.type === "NEXT_BUTTON");
1505
- const isSearchableChoiceList = choiceButtons.length === fieldComponents.length &&
1647
+ const choiceButtons = contentFieldComponents.filter((c) => c.type === "NEXT_BUTTON");
1648
+ const isSearchableChoiceList = choiceButtons.length === contentFieldComponents.length &&
1506
1649
  choiceButtons.length > CHOICE_LIST_SEARCH_THRESHOLD;
1507
1650
  // Hold the primary action button disabled until every required field has
1508
1651
  // a value.
@@ -1543,7 +1686,7 @@ export class AuthheroWidget {
1543
1686
  };
1544
1687
  // Get logo URL from theme.widget (takes precedence) or branding
1545
1688
  const logoUrl = this._theme?.widget?.logo_url || this._branding?.logo_url;
1546
- return (h("div", { class: "widget-container", part: "container", "data-authstack-container": true }, h("header", { class: "widget-header", part: "header" }, logoUrl && (h("div", { class: "logo-wrapper", part: "logo-wrapper" }, h("img", { class: "logo", part: "logo", src: logoUrl, alt: "Logo" }))), screen.title && (h("h1", { class: "title", part: "title", innerHTML: sanitizeHtml(screen.title) })), screen.description && (h("p", { class: "description", part: "description", innerHTML: sanitizeHtml(screen.description) }))), h("div", { class: "widget-body", part: "body" }, screenErrors.map((err) => (h("div", { class: "message message-error", part: "message message-error", key: err.id ?? err.text }, err.text))), screenSuccesses.map((msg) => (h("div", { class: "message message-success", part: "message message-success", key: msg.id ?? msg.text }, msg.text))), h("form", { onSubmit: this.handleSubmit, action: screen.action, method: screen.method || "POST", part: "form" }, hiddenComponents.map((c) => (h("input", { type: "hidden", name: c.id, id: c.id, key: c.id, value: this.formData[c.id] || "" }))), h("div", { class: "form-content" }, socialComponents.length > 0 && (h("div", { class: "social-section", part: "social-section" }, socialComponents.map((component) => (h("authhero-node", { key: component.id, component: component, locale: this.locale, value: this.formData[component.id], onFieldChange: (e) => this.handleInputChange(e.detail.id, e.detail.value), onButtonClick: (e) => this.handleButtonClick(e.detail), disabled: this.loading, exportparts: getExportParts(component) }))))), socialComponents.length > 0 &&
1689
+ return (h("div", { class: "widget-container", part: "container", "data-authstack-container": true }, h("header", { class: "widget-header", part: "header" }, logoUrl && (h("div", { class: "logo-wrapper", part: "logo-wrapper" }, h("img", { class: "logo", part: "logo", src: logoUrl, alt: "Logo" }))), screen.title && (h("h1", { class: "title", part: "title", innerHTML: sanitizeHtml(screen.title) })), screen.description && (h("p", { class: "description", part: "description", innerHTML: sanitizeHtml(screen.description) }))), h("div", { class: "widget-body", part: "body" }, screenErrors.map((err) => (h("div", { class: "message message-error", part: "message message-error", key: err.id ?? err.text }, err.text))), screenSuccesses.map((msg) => (h("div", { class: "message message-success", part: "message message-success", key: msg.id ?? msg.text }, msg.text))), h("form", { onSubmit: this.handleSubmit, action: screen.action, method: screen.method || "POST", part: "form" }, hiddenComponents.map((c) => (h("input", { type: "hidden", name: c.id, id: c.id, key: c.id, value: this.formData[c.id] || "" }))), h("div", { class: "form-content" }, this.renderPromptPartial(screen, "form-content-start"), socialComponents.length > 0 && (h("div", { class: "social-section", part: "social-section" }, socialComponents.map((component) => (h("authhero-node", { key: component.id, component: component, locale: this.locale, value: this.formData[component.id], onFieldChange: (e) => this.handleInputChange(e.detail.id, e.detail.value), onButtonClick: (e) => this.handleButtonClick(e.detail), disabled: this.loading, exportparts: getExportParts(component) }))))), socialComponents.length > 0 &&
1547
1690
  fieldComponents.length > 0 &&
1548
1691
  hasDivider && (h("div", { class: "divider", part: "divider" }, h("span", { class: "divider-text" }, dividerText))), h("div", { class: "fields-section", part: "fields-section" }, isSearchableChoiceList && (h("input", { type: "text", class: "choice-list-search", part: "choice-list-search", placeholder: "Search", "aria-label": "Search", autocomplete: "off", value: this.listFilter, onInput: (e) => (this.listFilter = e.target.value), onKeyDown: (e) => {
1549
1692
  // The search box lives inside the form; Enter would
@@ -1556,19 +1699,14 @@ export class AuthheroWidget {
1556
1699
  ? "fields-list fields-list-scroll"
1557
1700
  : "fields-list" }, (isSearchableChoiceList
1558
1701
  ? visibleChoiceButtons
1559
- : fieldComponents).map((component) => (h("authhero-node", { key: component.id, component: component, locale: this.locale, value: this.formData[component.id], onFieldChange: (e) => this.handleInputChange(e.detail.id, e.detail.value), onButtonClick: (e) => this.handleButtonClick(e.detail), disabled: this.loading ||
1702
+ : contentFieldComponents).map((component) => (h("authhero-node", { key: component.id, component: component, locale: this.locale, value: this.formData[component.id], onFieldChange: (e) => this.handleInputChange(e.detail.id, e.detail.value), onButtonClick: (e) => this.handleButtonClick(e.detail), disabled: this.loading ||
1560
1703
  (component.type === "NEXT_BUTTON" &&
1561
1704
  component.config?.skip_validation !== true &&
1562
1705
  requiredFieldsMissing) }))), isSearchableChoiceList &&
1563
- visibleChoiceButtons.length === 0 && (h("div", { class: "choice-list-empty", part: "choice-list-empty" }, "No matches")))))), screen.links && screen.links.length > 0 && (h("div", { class: "links", part: "links" }, screen.links.map((link) => (h("span", { class: "link-wrapper", part: "link-wrapper", key: link.id ?? link.href }, link.linkText ? (h("span", null, link.text, " ", h("a", { href: link.href, class: "link", part: "link", onClick: (e) => this.handleLinkClick(e, {
1564
- id: link.id,
1565
- href: link.href,
1566
- text: link.linkText || link.text,
1567
- }) }, link.linkText))) : (h("a", { href: link.href, class: "link", part: "link", onClick: (e) => this.handleLinkClick(e, {
1568
- id: link.id,
1569
- href: link.href,
1570
- text: link.text,
1571
- }) }, link.text))))))), screen.footer && (h("div", { class: "widget-footer", part: "footer", innerHTML: sanitizeHtml(screen.footer) })))));
1706
+ visibleChoiceButtons.length === 0 && (h("div", { class: "choice-list-empty", part: "choice-list-empty" }, "No matches")))), this.renderPromptPartial(screen, "form-content-end"), hasPromptPartials && (h("div", { class: "form-footer", part: "form-footer" }, this.renderPromptPartial(screen, "form-footer-start"), footerComponents.map((component) => (h("authhero-node", { key: component.id, component: component, locale: this.locale, value: this.formData[component.id], onFieldChange: (e) => this.handleInputChange(e.detail.id, e.detail.value), onButtonClick: (e) => this.handleButtonClick(e.detail), disabled: this.loading ||
1707
+ (component.type === "NEXT_BUTTON" &&
1708
+ component.config?.skip_validation !== true &&
1709
+ requiredFieldsMissing) }))), this.renderPromptPartial(screen, "form-footer-end")))), hasPromptPartials && (h("div", { class: "secondary-actions", part: "secondary-actions" }, this.renderPromptPartial(screen, "secondary-actions-start"), this.renderScreenLinks(screen), this.renderPromptPartial(screen, "secondary-actions-end")))), !hasPromptPartials && this.renderScreenLinks(screen), screen.footer && (h("div", { class: "widget-footer", part: "footer", innerHTML: sanitizeHtml(screen.footer) })))));
1572
1710
  }
1573
1711
  static get is() { return "authhero-widget"; }
1574
1712
  static get encapsulation() { return "shadow"; }
@@ -1589,7 +1727,7 @@ export class AuthheroWidget {
1589
1727
  "mutable": false,
1590
1728
  "complexType": {
1591
1729
  "original": "UiScreen | string",
1592
- "resolved": "string | undefined | { action: string; method: \"POST\" | \"GET\"; components: ({ id: string; visible: boolean; type: \"DIVIDER\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { text?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"HTML\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"IMAGE\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { src?: string | undefined; alt?: string | undefined; width?: number | undefined; height?: number | undefined; } | undefined; } | { id: string; visible: boolean; type: \"JUMP_BUTTON\"; config: { text?: string | undefined; target_step?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RESEND_BUTTON\"; config: { text?: string | undefined; resend_action?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"NEXT_BUTTON\"; config: { text?: string | undefined; variant?: \"primary\" | \"secondary\" | undefined; skip_validation?: boolean | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"PREVIOUS_BUTTON\"; config: { text?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RICH_TEXT\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"AUTH0_VERIFIABLE_CREDENTIALS\"; config: { credential_type?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"GMAPS_ADDRESS\"; config: { api_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"RECAPTCHA\"; config: { site_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"BOOLEAN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { default_value?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CARDS\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; description?: string | undefined; image?: string | undefined; }[] | undefined; multi_select?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CHOICE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; display?: \"radio\" | \"checkbox\" | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CODE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { length?: number | undefined; mode?: \"numeric\" | \"alphanumeric\" | undefined; auto_submit?: boolean | undefined; group_size?: number | undefined; separator?: string | undefined; placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"COUNTRY\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CUSTOM\"; config: { component?: string | undefined; props?: Record<string, any> | undefined; schema?: Record<string, any> | undefined; code?: string | undefined; }; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"DATE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { format?: string | undefined; min?: string | undefined; max?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"DROPDOWN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; placeholder?: string | undefined; searchable?: boolean | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"EMAIL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"FILE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { accept?: string | undefined; max_size?: number | undefined; multiple?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"LEGAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { text: string; html?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"NUMBER\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min?: number | undefined; max?: number | undefined; step?: number | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PASSWORD\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min_length?: number | undefined; show_toggle?: boolean | undefined; forgot_password_link?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PAYMENT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { provider?: string | undefined; currency?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"SOCIAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { providers?: string[] | undefined; provider_details?: { name: string; strategy?: string | undefined; display_name?: string | undefined; short_name?: string | undefined; icon_url?: string | undefined; href?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; }[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_country?: string | undefined; default_value?: string | undefined; allow_email?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEXT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; multiline?: boolean | undefined; max_length?: number | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"URL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; })[]; name?: string | undefined; title?: string | undefined; description?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; links?: { text: string; href: string; id?: string | undefined; linkText?: string | undefined; }[] | undefined; footer?: string | undefined; }",
1730
+ "resolved": "string | undefined | { action: string; method: \"POST\" | \"GET\"; components: ({ id: string; visible: boolean; type: \"DIVIDER\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { text?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"HTML\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"IMAGE\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { src?: string | undefined; alt?: string | undefined; width?: number | undefined; height?: number | undefined; } | undefined; } | { id: string; visible: boolean; type: \"JUMP_BUTTON\"; config: { text?: string | undefined; target_step?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RESEND_BUTTON\"; config: { text?: string | undefined; resend_action?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"NEXT_BUTTON\"; config: { text?: string | undefined; variant?: \"primary\" | \"secondary\" | undefined; skip_validation?: boolean | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"PREVIOUS_BUTTON\"; config: { text?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RICH_TEXT\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"AUTH0_VERIFIABLE_CREDENTIALS\"; config: { credential_type?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"GMAPS_ADDRESS\"; config: { api_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"RECAPTCHA\"; config: { site_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"BOOLEAN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { default_value?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CARDS\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; description?: string | undefined; image?: string | undefined; }[] | undefined; multi_select?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CHOICE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; display?: \"radio\" | \"checkbox\" | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CODE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { length?: number | undefined; mode?: \"numeric\" | \"alphanumeric\" | undefined; auto_submit?: boolean | undefined; group_size?: number | undefined; separator?: string | undefined; placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"COUNTRY\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CUSTOM\"; config: { component?: string | undefined; props?: Record<string, any> | undefined; schema?: Record<string, any> | undefined; code?: string | undefined; }; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"DATE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { format?: string | undefined; min?: string | undefined; max?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"DROPDOWN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; placeholder?: string | undefined; searchable?: boolean | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"EMAIL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"FILE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { accept?: string | undefined; max_size?: number | undefined; multiple?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"LEGAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { text: string; html?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"NUMBER\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min?: number | undefined; max?: number | undefined; step?: number | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PASSWORD\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min_length?: number | undefined; show_toggle?: boolean | undefined; forgot_password_link?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PAYMENT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { provider?: string | undefined; currency?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"SOCIAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { providers?: string[] | undefined; provider_details?: { name: string; strategy?: string | undefined; display_name?: string | undefined; short_name?: string | undefined; icon_url?: string | undefined; href?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; }[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_country?: string | undefined; default_value?: string | undefined; allow_email?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEXT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; multiline?: boolean | undefined; max_length?: number | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"URL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; })[]; name?: string | undefined; title?: string | undefined; description?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; links?: { text: string; href: string; id?: string | undefined; linkText?: string | undefined; }[] | undefined; partials?: Partial<Record<\"form-content-start\" | \"form-content-end\" | \"form-footer-start\" | \"form-footer-end\" | \"secondary-actions-start\" | \"secondary-actions-end\", string>> | undefined; footer?: string | undefined; }",
1593
1731
  "references": {
1594
1732
  "UiScreen": {
1595
1733
  "location": "import",
@@ -2050,7 +2188,7 @@ export class AuthheroWidget {
2050
2188
  },
2051
2189
  "complexType": {
2052
2190
  "original": "UiScreen",
2053
- "resolved": "{ action: string; method: \"POST\" | \"GET\"; components: ({ id: string; visible: boolean; type: \"DIVIDER\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { text?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"HTML\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"IMAGE\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { src?: string | undefined; alt?: string | undefined; width?: number | undefined; height?: number | undefined; } | undefined; } | { id: string; visible: boolean; type: \"JUMP_BUTTON\"; config: { text?: string | undefined; target_step?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RESEND_BUTTON\"; config: { text?: string | undefined; resend_action?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"NEXT_BUTTON\"; config: { text?: string | undefined; variant?: \"primary\" | \"secondary\" | undefined; skip_validation?: boolean | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"PREVIOUS_BUTTON\"; config: { text?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RICH_TEXT\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"AUTH0_VERIFIABLE_CREDENTIALS\"; config: { credential_type?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"GMAPS_ADDRESS\"; config: { api_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"RECAPTCHA\"; config: { site_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"BOOLEAN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { default_value?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CARDS\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; description?: string | undefined; image?: string | undefined; }[] | undefined; multi_select?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CHOICE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; display?: \"radio\" | \"checkbox\" | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CODE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { length?: number | undefined; mode?: \"numeric\" | \"alphanumeric\" | undefined; auto_submit?: boolean | undefined; group_size?: number | undefined; separator?: string | undefined; placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"COUNTRY\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CUSTOM\"; config: { component?: string | undefined; props?: Record<string, any> | undefined; schema?: Record<string, any> | undefined; code?: string | undefined; }; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"DATE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { format?: string | undefined; min?: string | undefined; max?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"DROPDOWN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; placeholder?: string | undefined; searchable?: boolean | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"EMAIL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"FILE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { accept?: string | undefined; max_size?: number | undefined; multiple?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"LEGAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { text: string; html?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"NUMBER\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min?: number | undefined; max?: number | undefined; step?: number | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PASSWORD\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min_length?: number | undefined; show_toggle?: boolean | undefined; forgot_password_link?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PAYMENT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { provider?: string | undefined; currency?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"SOCIAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { providers?: string[] | undefined; provider_details?: { name: string; strategy?: string | undefined; display_name?: string | undefined; short_name?: string | undefined; icon_url?: string | undefined; href?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; }[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_country?: string | undefined; default_value?: string | undefined; allow_email?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEXT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; multiline?: boolean | undefined; max_length?: number | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"URL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; })[]; name?: string | undefined; title?: string | undefined; description?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; links?: { text: string; href: string; id?: string | undefined; linkText?: string | undefined; }[] | undefined; footer?: string | undefined; }",
2191
+ "resolved": "{ action: string; method: \"POST\" | \"GET\"; components: ({ id: string; visible: boolean; type: \"DIVIDER\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { text?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"HTML\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"IMAGE\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { src?: string | undefined; alt?: string | undefined; width?: number | undefined; height?: number | undefined; } | undefined; } | { id: string; visible: boolean; type: \"JUMP_BUTTON\"; config: { text?: string | undefined; target_step?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RESEND_BUTTON\"; config: { text?: string | undefined; resend_action?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"NEXT_BUTTON\"; config: { text?: string | undefined; variant?: \"primary\" | \"secondary\" | undefined; skip_validation?: boolean | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"PREVIOUS_BUTTON\"; config: { text?: string | undefined; }; order?: number | undefined; category?: \"BLOCK\" | undefined; } | { id: string; visible: boolean; type: \"RICH_TEXT\"; order?: number | undefined; category?: \"BLOCK\" | undefined; config?: { content?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"AUTH0_VERIFIABLE_CREDENTIALS\"; config: { credential_type?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"GMAPS_ADDRESS\"; config: { api_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"RECAPTCHA\"; config: { site_key?: string | undefined; }; order?: number | undefined; category?: \"WIDGET\" | undefined; label?: string | undefined; hint?: string | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"BOOLEAN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { default_value?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CARDS\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; description?: string | undefined; image?: string | undefined; }[] | undefined; multi_select?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CHOICE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; display?: \"radio\" | \"checkbox\" | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CODE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { length?: number | undefined; mode?: \"numeric\" | \"alphanumeric\" | undefined; auto_submit?: boolean | undefined; group_size?: number | undefined; separator?: string | undefined; placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"COUNTRY\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"CUSTOM\"; config: { component?: string | undefined; props?: Record<string, any> | undefined; schema?: Record<string, any> | undefined; code?: string | undefined; }; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; } | { id: string; visible: boolean; type: \"DATE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { format?: string | undefined; min?: string | undefined; max?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"DROPDOWN\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { options?: { value: string; label: string; }[] | undefined; placeholder?: string | undefined; searchable?: boolean | undefined; multiple?: boolean | undefined; default_value?: string | string[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"EMAIL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"FILE\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { accept?: string | undefined; max_size?: number | undefined; multiple?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"LEGAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { text: string; html?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"NUMBER\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min?: number | undefined; max?: number | undefined; step?: number | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PASSWORD\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; min_length?: number | undefined; show_toggle?: boolean | undefined; forgot_password_link?: string | undefined; default_value?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"PAYMENT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { provider?: string | undefined; currency?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"SOCIAL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { providers?: string[] | undefined; provider_details?: { name: string; strategy?: string | undefined; display_name?: string | undefined; short_name?: string | undefined; icon_url?: string | undefined; href?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; }[] | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_country?: string | undefined; default_value?: string | undefined; allow_email?: boolean | undefined; } | undefined; } | { id: string; visible: boolean; type: \"TEXT\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; multiline?: boolean | undefined; max_length?: number | undefined; default_value?: string | undefined; last_used?: boolean | undefined; last_used_label?: string | undefined; } | undefined; } | { id: string; visible: boolean; type: \"URL\"; order?: number | undefined; category?: \"FIELD\" | undefined; label?: string | undefined; hint?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; required?: boolean | undefined; sensitive?: boolean | undefined; config?: { placeholder?: string | undefined; default_value?: string | undefined; } | undefined; })[]; name?: string | undefined; title?: string | undefined; description?: string | undefined; messages?: { text: string; type: \"error\" | \"success\" | \"info\" | \"warning\"; id?: number | undefined; }[] | undefined; links?: { text: string; href: string; id?: string | undefined; linkText?: string | undefined; }[] | undefined; partials?: Partial<Record<\"form-content-start\" | \"form-content-end\" | \"form-footer-start\" | \"form-footer-end\" | \"secondary-actions-start\" | \"secondary-actions-end\", string>> | undefined; footer?: string | undefined; }",
2054
2192
  "references": {
2055
2193
  "UiScreen": {
2056
2194
  "location": "import",