@incodetech/web 0.0.0-dev-20260928-d24f59d8 → 0.0.0-dev-20260928-e8e00ca9

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.
@@ -1,2 +1,2 @@
1
- import { t as EkycModule } from "../ekycModule-szfkUWtN.js";
1
+ import { t as EkycModule } from "../ekycModule-LPocoxh5.js";
2
2
  export { EkycModule };
@@ -34,7 +34,7 @@
34
34
  }
35
35
  }
36
36
 
37
- .IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {
37
+ .IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePasswordInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {
38
38
  margin-inline: auto;
39
39
  }
40
40
 
@@ -1 +1 @@
1
- export default "/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n.IncodeEkycPage {\n animation: fadeIn var(--motion-fade-in-duration, .7s) ease-out;\n margin-inline: auto;\n animation-fill-mode: both;\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage .IncodePageInner {\n height: 100%;\n padding-inline: var(--spacing-0, var(--spacing-none, 0px));\n padding-block: var(--spacing-0, var(--spacing-none, 0px));\n }\n}\n\n.IncodeEkycPage .IncodeEkycSpinner {\n flex: 1;\n}\n\n.IncodeEkycPage .IncodeEkycForm {\n margin-top: var(--spacing-32, var(--spacing-32, 32px));\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage .IncodeEkycForm {\n min-height: var(--spacing-0, var(--spacing-none, 0px));\n padding-bottom: var(--spacing-8, var(--spacing-8, 8px));\n overflow-y: auto;\n }\n}\n\n.IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {\n margin-inline: auto;\n}\n\n.IncodeEkycPage .IncodeEkycForm .IncodeFormField {\n margin-bottom: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeEkycPage .IncodeEkycSectionHeader {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h3-size);\n font-weight: var(--typography-headline-h3-weight);\n line-height: var(--typography-headline-h3-line-height);\n letter-spacing: var(--typography-headline-h3-letter-spacing);\n color: var(--color-input-text-label-default, var(--input-text-label-default));\n margin-inline: auto;\n margin-top: var(--spacing-16, var(--spacing-16, 16px));\n width: 100%;\n max-width: var(--incode-form-max-w);\n padding-block: var(--spacing-12, var(--spacing-12, 12px));\n}\n\n.IncodeEkycPage .IncodeEkycRadioGroup {\n width: 100%;\n max-width: var(--incode-form-max-w);\n margin-inline: auto;\n}\n\n.IncodeEkycPage .IncodeEkycFooter {\n margin-top: var(--spacing-24, var(--spacing-24, 24px));\n align-items: center;\n gap: var(--spacing-12, var(--spacing-12, 12px));\n flex-direction: column;\n display: flex;\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage .IncodeEkycFooter {\n flex-shrink: 0;\n }\n}\n\n.IncodeEkycPage .IncodeEkycFooter .IncodeEkycSubmitError {\n margin-bottom: var(--spacing-12, var(--spacing-12, 12px));\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-input-text-helper-negative, var(--input-text-helper-negative));\n margin-top: 0;\n}\n\n.IncodeEkycPage .IncodeEkycFooter button {\n margin-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage.IncodePageContainer {\n margin-top: var(--spacing-0, var(--spacing-none, 0px));\n height: 100%;\n max-height: none;\n }\n\n .IncodeEkycPage.IncodeEkycPageScrollable {\n max-width: var(--ekyb-scrollable-page);\n }\n\n .IncodeEkycPage .IncodePageContent {\n min-height: var(--spacing-0, var(--spacing-none, 0px));\n }\n}\n";
1
+ export default "/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n.IncodeEkycPage {\n animation: fadeIn var(--motion-fade-in-duration, .7s) ease-out;\n margin-inline: auto;\n animation-fill-mode: both;\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage .IncodePageInner {\n height: 100%;\n padding-inline: var(--spacing-0, var(--spacing-none, 0px));\n padding-block: var(--spacing-0, var(--spacing-none, 0px));\n }\n}\n\n.IncodeEkycPage .IncodeEkycSpinner {\n flex: 1;\n}\n\n.IncodeEkycPage .IncodeEkycForm {\n margin-top: var(--spacing-32, var(--spacing-32, 32px));\n gap: var(--spacing-16, var(--spacing-16, 16px));\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage .IncodeEkycForm {\n min-height: var(--spacing-0, var(--spacing-none, 0px));\n padding-bottom: var(--spacing-8, var(--spacing-8, 8px));\n overflow-y: auto;\n }\n}\n\n.IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePasswordInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {\n margin-inline: auto;\n}\n\n.IncodeEkycPage .IncodeEkycForm .IncodeFormField {\n margin-bottom: var(--spacing-0, var(--spacing-none, 0px));\n}\n\n.IncodeEkycPage .IncodeEkycSectionHeader {\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h3-size);\n font-weight: var(--typography-headline-h3-weight);\n line-height: var(--typography-headline-h3-line-height);\n letter-spacing: var(--typography-headline-h3-letter-spacing);\n color: var(--color-input-text-label-default, var(--input-text-label-default));\n margin-inline: auto;\n margin-top: var(--spacing-16, var(--spacing-16, 16px));\n width: 100%;\n max-width: var(--incode-form-max-w);\n padding-block: var(--spacing-12, var(--spacing-12, 12px));\n}\n\n.IncodeEkycPage .IncodeEkycRadioGroup {\n width: 100%;\n max-width: var(--incode-form-max-w);\n margin-inline: auto;\n}\n\n.IncodeEkycPage .IncodeEkycFooter {\n margin-top: var(--spacing-24, var(--spacing-24, 24px));\n align-items: center;\n gap: var(--spacing-12, var(--spacing-12, 12px));\n flex-direction: column;\n display: flex;\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage .IncodeEkycFooter {\n flex-shrink: 0;\n }\n}\n\n.IncodeEkycPage .IncodeEkycFooter .IncodeEkycSubmitError {\n margin-bottom: var(--spacing-12, var(--spacing-12, 12px));\n text-align: center;\n font-family: var(--typography-headline-family);\n font-size: var(--typography-headline-h5-size);\n font-weight: var(--typography-headline-h5-weight);\n line-height: var(--typography-headline-h5-line-height);\n letter-spacing: var(--typography-headline-h5-letter-spacing);\n color: var(--color-input-text-helper-negative, var(--input-text-helper-negative));\n margin-top: 0;\n}\n\n.IncodeEkycPage .IncodeEkycFooter button {\n margin-bottom: var(--spacing-16, var(--spacing-16, 16px));\n}\n\n@media (min-width: 48rem) {\n .IncodeEkycPage.IncodePageContainer {\n margin-top: var(--spacing-0, var(--spacing-none, 0px));\n height: 100%;\n max-height: none;\n }\n\n .IncodeEkycPage.IncodeEkycPageScrollable {\n max-width: var(--ekyb-scrollable-page);\n }\n\n .IncodeEkycPage .IncodePageContent {\n min-height: var(--spacing-0, var(--spacing-none, 0px));\n }\n}\n";
@@ -0,0 +1,2 @@
1
+ import { t as EkycModule } from "./ekycModule-LPocoxh5.js";
2
+ export { EkycModule };
@@ -4,6 +4,7 @@ import { C as useManager, c as Page, i as withStandaloneModuleBootstrap, t as In
4
4
  import { t as Spinner } from "./spinner-Gnctncvs.js";
5
5
  import { x as Button } from "./icons-DrOzoEs-.js";
6
6
  import { t as VerificationResult } from "./verificationResult-BiQ5T8yF.js";
7
+ import { t as PasswordInputComposed } from "./passwordInputComposed-BMTrYSW5.js";
7
8
  import { n as translateError, t as FormField } from "./formField--i2tg0RO.js";
8
9
  import { t as PhoneInputComposed } from "./phoneInputComposed-De-TAUKY.js";
9
10
  import { t as DropdownComposed } from "./dropdownComposed--ujBqTic.js";
@@ -32,6 +33,12 @@ var EKYC_AUTOCOMPLETE_TOKENS = {
32
33
  dateOfBirth: "bday"
33
34
  };
34
35
  var getEkycAutocomplete = (name) => EKYC_AUTOCOMPLETE_TOKENS[name];
36
+ /**
37
+ * Sensitive ID fields rendered as a masked input with a show/hide toggle,
38
+ * keyed by `fieldsCountry`.
39
+ */
40
+ var EKYC_MASKED_FIELDS = { US: ["ssn"] };
41
+ var isMaskedEkycField = (name, country) => EKYC_MASKED_FIELDS[country]?.includes(name) ?? false;
35
42
  var EkycContent = ({ config, manager: externalManager, onFinish }) => {
36
43
  const { t } = useTranslation();
37
44
  const [state, manager] = useManager(() => {
@@ -210,6 +217,30 @@ var EkycForm = ({ state, manager }) => {
210
217
  onChange: (next) => manager.setField(field.name, next),
211
218
  onBlur: () => manager.validateField(field.name)
212
219
  })] }, field.name);
220
+ if (isMaskedEkycField(field.name, fieldsCountry)) return /* @__PURE__ */ u("div", { children: [sectionHeader, /* @__PURE__ */ u("div", {
221
+ className: "IncodeFormField",
222
+ children: /* @__PURE__ */ u(PasswordInputComposed, {
223
+ id: field.name,
224
+ name: field.name,
225
+ label: field.displayLabel ?? t(field.label),
226
+ value: fieldValue,
227
+ placeholder: field.placeholder ? t(field.placeholder, field.placeholderParams) : void 0,
228
+ inputMode: "numeric",
229
+ autoComplete: "off",
230
+ readOnly: isReadonly,
231
+ required: isFieldRequired,
232
+ maxLength: field.maxLength,
233
+ error: translateError$1(fieldError),
234
+ showPasswordAriaLabel: t("verification.labels.showSsn"),
235
+ hidePasswordAriaLabel: t("verification.labels.hideSsn"),
236
+ onInput: (e) => {
237
+ const target = e.target;
238
+ manager.setField(field.name, target.value);
239
+ },
240
+ onBlur: () => manager.validateField(field.name),
241
+ "data-testid": `form-field-${field.name}`
242
+ })
243
+ })] }, field.name);
213
244
  return /* @__PURE__ */ u("div", {
214
245
  ref: field.name === "postalCode" ? postalCodeFieldRef : void 0,
215
246
  children: [sectionHeader, /* @__PURE__ */ u(FormField, {
@@ -4,7 +4,7 @@ import { C as useManager, a as ResolvedConfigProvider, d as TransitionSpinner, s
4
4
  import { b as ErrorIcon } from "../icons-DrOzoEs-.js";
5
5
  import { t as StatusPage } from "../statusPage-D9r5USJx.js";
6
6
  import { t as registerIncodeModuleElement } from "../incodeModule-CODDnk9s.js";
7
- import { a as LAZY_UI_MODULES, c as initializeFlowManager, f as warmupWasmIfNeeded, i as HEADLESS_FLOW_MODULE_KEYS, l as preloadFirstModule, m as resolveSessionLanguage, n as extractIncodeStatus, o as createFlowManager, r as UnsupportedModule, s as fetchTheme, t as resolveApiKey, u as preloadHomeScreen } from "../resolveApiKey-D7KeErCo.js";
7
+ import { a as LAZY_UI_MODULES, c as initializeFlowManager, f as warmupWasmIfNeeded, i as HEADLESS_FLOW_MODULE_KEYS, l as preloadFirstModule, m as resolveSessionLanguage, n as extractIncodeStatus, o as createFlowManager, r as UnsupportedModule, s as fetchTheme, t as resolveApiKey, u as preloadHomeScreen } from "../resolveApiKey-71Rwnhgy.js";
8
8
  import { i as usePrefetchNextModule, n as useModuleLoader, r as useModulePreloader } from "../useModuleLoader-DpcbSKBH.js";
9
9
  import { bootstrapSession, refreshQrUrlUuid } from "@incodetech/core/session";
10
10
  import { getNextRequiredWasmPipelines } from "@incodetech/core/flow";
@@ -3148,7 +3148,7 @@
3148
3148
  }
3149
3149
  }
3150
3150
 
3151
- .IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {
3151
+ .IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePasswordInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {
3152
3152
  margin-inline: auto;
3153
3153
  }
3154
3154
 
@@ -102,7 +102,7 @@ var LAZY_UI_MODULES = {
102
102
  GOVT_VALIDATION_PROVISIONING: () => import("./government-validation/government-validation.es.js").then((m) => m.GovernmentValidation),
103
103
  INE_VALIDATION: () => import("./government-validation/government-validation.es.js").then((m) => m.GovernmentValidation),
104
104
  GEOLOCATION: () => import("./geolocation/geolocation.es.js").then((m) => m.Geolocation),
105
- EXTERNAL_VERIFICATION: () => import("./ekycModule-DMHPh6n8.js").then((m) => m.EkycModule),
105
+ EXTERNAL_VERIFICATION: () => import("./ekycModule-CiDUWz-q.js").then((m) => m.EkycModule),
106
106
  EKYB: () => import("./ekybModule-XTatnIX9.js").then((m) => m.EkybModule),
107
107
  DOCUMENT_CAPTURE: () => import("./documentCapture-CbmHY_9J.js").then((m) => m.DocumentCapture),
108
108
  ADDRESS: () => import("./documentCapture-CbmHY_9J.js").then((m) => m.DocumentCapture),
@@ -3611,7 +3611,7 @@
3611
3611
  }
3612
3612
  }
3613
3613
 
3614
- .IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {
3614
+ .IncodeEkycPage .IncodeEkycForm .IncodeInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDropdownComposed, .IncodeEkycPage .IncodeEkycForm .IncodeDateInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePhoneInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodePasswordInputComposed, .IncodeEkycPage .IncodeEkycForm .IncodeAddressAutocomplete {
3615
3615
  margin-inline: auto;
3616
3616
  }
3617
3617
 
@@ -4,7 +4,7 @@ import { i as fetchAndApplyTheme } from "../dashboardTheme-CFpHx2RR.js";
4
4
  import { C as useManager, a as ResolvedConfigProvider, c as Page, d as TransitionSpinner, s as TerminalErrorPage, t as IncodeComponent, w as withSessionExpiry } from "../incodeComponent-BlRJfZjh.js";
5
5
  import { t as AutoFocusTitle } from "../autoFocusTitle-Mhw9ii46.js";
6
6
  import { t as registerIncodeModuleElement } from "../incodeModule-CODDnk9s.js";
7
- import { a as LAZY_UI_MODULES, d as setupSDK, m as resolveSessionLanguage, n as extractIncodeStatus, p as isDesktopOrEmulated, r as UnsupportedModule, t as resolveApiKey } from "../resolveApiKey-D7KeErCo.js";
7
+ import { a as LAZY_UI_MODULES, d as setupSDK, m as resolveSessionLanguage, n as extractIncodeStatus, p as isDesktopOrEmulated, r as UnsupportedModule, t as resolveApiKey } from "../resolveApiKey-71Rwnhgy.js";
8
8
  import { a as HEADLESS_WORKFLOW_MODULE_KEYS, n as useModuleLoader } from "../useModuleLoader-DpcbSKBH.js";
9
9
  import { resolveWasmConfigForPipelines, setWasmConfig, upgradeToWasmHttpClient, warmupWasm } from "@incodetech/core/wasm";
10
10
  import { bootstrapSession, getFinishStatus, refreshQrUrlUuid } from "@incodetech/core/session";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@incodetech/web",
3
- "version": "0.0.0-dev-20260928-d24f59d8",
3
+ "version": "0.0.0-dev-20260928-e8e00ca9",
4
4
  "license": "ISC",
5
5
  "repository": {
6
6
  "type": "git",
@@ -287,7 +287,7 @@
287
287
  ],
288
288
  "dependencies": {
289
289
  "preact": "^10.27.2",
290
- "@incodetech/core": "0.0.0-dev-20260928-d24f59d8"
290
+ "@incodetech/core": "0.0.0-dev-20260928-e8e00ca9"
291
291
  },
292
292
  "devDependencies": {
293
293
  "@fontsource/dm-sans": "^5.2.8",
@@ -1,2 +0,0 @@
1
- import { t as EkycModule } from "./ekycModule-szfkUWtN.js";
2
- export { EkycModule };