react-native-usesense 2.1.0 → 2.2.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.
@@ -41,7 +41,7 @@ dependencies {
41
41
  // the iOS SDK 4.3.0 the plugin's podspec depends on). mavenCentral()
42
42
  // is already in the `repositories` block above, so no custom
43
43
  // repository declaration is needed.
44
- implementation "ai.usesense:sdk:4.3.0"
44
+ implementation "ai.usesense:sdk:4.5.0"
45
45
 
46
46
  implementation "org.jetbrains.kotlin:kotlin-stdlib:${safeExtGet('kotlinVersion', '2.0.0')}"
47
47
  }
@@ -5,12 +5,16 @@ import com.facebook.react.bridge.Promise
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.bridge.ReactContextBaseJavaModule
7
7
  import com.facebook.react.bridge.ReactMethod
8
+ import com.facebook.react.bridge.ReadableMap
9
+ import com.usesense.sdk.flows.FlowAppearance
10
+ import com.usesense.sdk.flows.FlowCopy
8
11
  import com.usesense.sdk.flows.FlowError
9
12
  import com.usesense.sdk.flows.FlowOutcome
10
13
  import com.usesense.sdk.flows.FlowRunResult
11
14
  import com.usesense.sdk.flows.FlowRunState
12
15
  import com.usesense.sdk.flows.FlowsCallback
13
16
  import com.usesense.sdk.flows.UseSenseFlows
17
+ import org.json.JSONObject
14
18
 
15
19
  /**
16
20
  * React Native bridge for the UseSense Android Flows runner.
@@ -30,7 +34,14 @@ class UseSenseFlowsModule(private val reactContext: ReactApplicationContext) :
30
34
  override fun getName(): String = "UseSenseFlowsModule"
31
35
 
32
36
  @ReactMethod
33
- fun runFlow(flowRunId: String?, sdkToken: String?, apiBaseUrl: String?, promise: Promise) {
37
+ fun runFlow(
38
+ flowRunId: String?,
39
+ sdkToken: String?,
40
+ apiBaseUrl: String?,
41
+ appearance: ReadableMap?,
42
+ copy: ReadableMap?,
43
+ promise: Promise,
44
+ ) {
34
45
  if (flowRunId.isNullOrEmpty() || sdkToken.isNullOrEmpty()) {
35
46
  promise.reject("unknown", "flowRunId and sdkToken are required")
36
47
  return
@@ -41,6 +52,12 @@ class UseSenseFlowsModule(private val reactContext: ReactApplicationContext) :
41
52
  }
42
53
  val baseUrl = apiBaseUrl ?: "https://api.usesense.ai"
43
54
 
55
+ // White-label maps are forwarded raw from JS (camelCase, matching the
56
+ // web contract). Decode them via the SDK; a malformed payload degrades
57
+ // to null (built-in tokens) rather than failing the run.
58
+ val resolvedAppearance = appearance?.let { runCatching { FlowAppearance.decode(it.toJSONObject()) }.getOrNull() }
59
+ val resolvedCopy = copy?.let { runCatching { FlowCopy.decode(it.toJSONObject()) }.getOrNull() }
60
+
44
61
  val callback = object : FlowsCallback {
45
62
  override fun onResult(result: FlowRunResult) {
46
63
  val map = Arguments.createMap().apply {
@@ -64,9 +81,18 @@ class UseSenseFlowsModule(private val reactContext: ReactApplicationContext) :
64
81
  sdkToken = sdkToken,
65
82
  callback = callback,
66
83
  apiBaseUrl = baseUrl,
84
+ appearance = resolvedAppearance,
85
+ copy = resolvedCopy,
67
86
  )
68
87
  }
69
88
 
70
89
  private fun stateWire(state: FlowRunState): String = state.wire
71
90
  private fun outcomeWire(outcome: FlowOutcome): String = outcome.wire
91
+
92
+ /**
93
+ * Convert a React Native [ReadableMap] to an [org.json.JSONObject] so the
94
+ * SDK's `decode(JSONObject)` can read it. `toHashMap()` yields nested
95
+ * HashMap / ArrayList values, which `JSONObject(Map)` walks recursively.
96
+ */
97
+ private fun ReadableMap.toJSONObject(): JSONObject = JSONObject(this.toHashMap() as Map<*, *>)
72
98
  }
@@ -1,14 +1,18 @@
1
1
  #import <React/RCTBridgeModule.h>
2
2
 
3
3
  // Bridging header for the Flows runner module. Single JS-callable method:
4
- // runFlow(flowRunId, sdkToken, apiBaseUrl?). The apiBaseUrl parameter is
5
- // nullable from JS — pass `null` (or omit, since the JS wrapper supplies a
6
- // default) and the native side falls back to https://api.usesense.ai.
4
+ // runFlow(flowRunId, sdkToken, apiBaseUrl?, appearance?, copy?). The apiBaseUrl
5
+ // parameter is nullable from JS — pass `null` (or omit, since the JS wrapper
6
+ // supplies a default) and the native side falls back to https://api.usesense.ai.
7
+ // `appearance` / `copy` are nullable JS objects (the white-label contract);
8
+ // when non-null they're decoded by FlowAppearance/FlowCopy.decodeFromJSONObject.
7
9
  @interface RCT_EXTERN_MODULE(UseSenseFlowsModule, NSObject)
8
10
 
9
11
  RCT_EXTERN_METHOD(runFlow:(NSString *)flowRunId
10
12
  sdkToken:(NSString *)sdkToken
11
13
  apiBaseUrl:(NSString * _Nullable)apiBaseUrl
14
+ appearance:(NSDictionary * _Nullable)appearance
15
+ copy:(NSDictionary * _Nullable)copy
12
16
  resolver:(RCTPromiseResolveBlock)resolve
13
17
  rejecter:(RCTPromiseRejectBlock)reject)
14
18
 
@@ -23,13 +23,20 @@ class UseSenseFlowsModule: NSObject {
23
23
  return false
24
24
  }
25
25
 
26
- /// `runFlow(flowRunId, sdkToken, apiBaseUrl?, resolve, reject)` — Promise.
27
- /// The SDK takes care of presentation; we just resolve when the run
28
- /// reaches a terminal state.
26
+ /// `runFlow(flowRunId, sdkToken, apiBaseUrl?, appearance?, copy?, resolve,
27
+ /// reject)` — Promise. The SDK takes care of presentation; we just resolve
28
+ /// when the run reaches a terminal state.
29
+ ///
30
+ /// `appearance` / `copy` are the optional white-label maps forwarded raw
31
+ /// from JS (camelCase, matching the web contract). We decode them via the
32
+ /// SDK's `decodeFromJSONObject`, which degrades a malformed payload to nil
33
+ /// (built-in tokens) rather than failing the run.
29
34
  @objc
30
35
  func runFlow(_ flowRunId: String,
31
36
  sdkToken: String,
32
37
  apiBaseUrl: String?,
38
+ appearance: NSDictionary?,
39
+ copy: NSDictionary?,
33
40
  resolver resolve: @escaping RCTPromiseResolveBlock,
34
41
  rejecter reject: @escaping RCTPromiseRejectBlock) {
35
42
  let baseString = apiBaseUrl ?? "https://api.usesense.ai"
@@ -37,6 +44,8 @@ class UseSenseFlowsModule: NSObject {
37
44
  reject("unknown", "Invalid apiBaseUrl: \(baseString)", nil)
38
45
  return
39
46
  }
47
+ let resolvedAppearance = (appearance as? [String: Any]).flatMap(FlowAppearance.decodeFromJSONObject)
48
+ let resolvedCopy = (copy as? [String: Any]).flatMap(FlowCopy.decodeFromJSONObject)
40
49
  DispatchQueue.main.async {
41
50
  guard let presenter = Self.topViewController() else {
42
51
  reject("unknown", "No view controller to present from", nil)
@@ -46,6 +55,8 @@ class UseSenseFlowsModule: NSObject {
46
55
  flowRunId: flowRunId,
47
56
  sdkToken: sdkToken,
48
57
  apiBaseURL: baseURL,
58
+ appearance: resolvedAppearance,
59
+ copy: resolvedCopy,
49
60
  from: presenter
50
61
  ) { runResult in
51
62
  switch runResult {
@@ -72,6 +72,34 @@ class FlowError extends Error {
72
72
  }
73
73
  }
74
74
 
75
+ // ─── White-label contract (mirrors the web SDK) ───────────────────────────
76
+ //
77
+ // FlowAppearance + FlowCopy are the shared customization schemas (Phase 1 +
78
+ // Phase 2 of the white-label initiative). They mirror the web SDK contract
79
+ // (packages/sdk/src/flows/theme.ts + copy.ts) one-to-one with camelCase keys.
80
+ // The RN bridge forwards the raw object across to the native iOS/Android
81
+ // runner, which decodes it (FlowAppearance/FlowCopy.decodeFromJSONObject).
82
+ // Everything is optional; an omitted key falls back to the hosted-page tokens.
83
+
84
+ /** A palette layer. `dark` overrides apply only in dark mode. */
85
+
86
+ /** Custom illustration/icon overrides (image URLs replacing built-in glyphs). */
87
+
88
+ /** Loading animation: a built-in preset or a custom asset. */
89
+
90
+ /**
91
+ * White-label appearance overrides for the Flow runner. Supplied at SDK init
92
+ * (this option) and merged over the operator's server-delivered branding by
93
+ * the native runner. Mirrors `FlowAppearance` in the web SDK.
94
+ */
95
+
96
+ /**
97
+ * White-label copy overrides for the Flow runner. Every subject-facing string
98
+ * can be overridden; an omitted key keeps the built-in copy. Supplied at SDK
99
+ * init and merged over the operator's server-delivered copy by the native
100
+ * runner. Mirrors `FlowCopy` in the web SDK.
101
+ */
102
+
75
103
  /** Options for `UseSenseFlows.runFlow`. */
76
104
  exports.FlowError = FlowError;
77
105
  /**
@@ -87,7 +115,7 @@ const UseSenseFlows = exports.UseSenseFlows = {
87
115
  */
88
116
  async runFlow(options) {
89
117
  try {
90
- const native = await nativeModule().runFlow(options.flowRunId, options.sdkToken, options.apiBaseUrl ?? null);
118
+ const native = await nativeModule().runFlow(options.flowRunId, options.sdkToken, options.apiBaseUrl ?? null, options.appearance ?? null, options.copy ?? null);
91
119
  return {
92
120
  flowRunId: native.flowRunId,
93
121
  state: native.state,
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","android","default","nativeModule","m","NativeModules","UseSenseFlowsModule","Error","FLOW_ERROR_CODES","normaliseCode","code","includes","FlowError","constructor","message","name","exports","UseSenseFlows","runFlow","options","native","flowRunId","sdkToken","apiBaseUrl","state","outcome","e"],"sourceRoot":"../../src","sources":["flows.ts"],"mappings":";;;;;;AAqBA,IAAAA,YAAA,GAAAC,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMC,aAAa,GACjB,0EAA0E,GAC1EC,qBAAQ,CAACC,MAAM,CAAC;EACdC,GAAG,EAAE,yDAAyD;EAC9DC,OAAO,EAAE,wDAAwD;EACjEC,OAAO,EAAE;AACX,CAAC,CAAC;;AAEJ;AACA;AACA,SAASC,YAAYA,CAAA,EAAG;EACtB,MAAMC,CAAC,GAAGC,0BAAa,CAACC,mBAAmB;EAC3C,IAAI,CAACF,CAAC,EAAE,MAAM,IAAIG,KAAK,CAACV,aAAa,CAAC;EACtC,OAAOO,CAAC;AACV;;AAEA;AACA;AACA;AACA;;AAWA;;AAGA;AACA;AACA;AACA;;AAeA,MAAMI,gBAA0C,GAAG,CACjD,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,SAAS,CACD;AAEV,SAASC,aAAaA,CAACC,IAAa,EAAiB;EACnD,OAAO,OAAOA,IAAI,KAAK,QAAQ,IAAKF,gBAAgB,CAAuBG,QAAQ,CAACD,IAAI,CAAC,GACpFA,IAAI,GACL,SAAS;AACf;;AAEA;;AAaA;AACA;AACA;AACA;AACA;AACO,MAAME,SAAS,SAASL,KAAK,CAAC;EAEnCM,WAAWA,CAACH,IAAmB,EAAEI,OAAe,EAAE;IAChD,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,WAAW;IACvB,IAAI,CAACL,IAAI,GAAGA,IAAI;EAClB;AACF;;AAEA;AAAAM,OAAA,CAAAJ,SAAA,GAAAA,SAAA;AAQA;AACA;AACA;AACA;AACO,MAAMK,aAAa,GAAAD,OAAA,CAAAC,aAAA,GAAG;EAC3B;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,OAAOA,CAACC,OAAuB,EAA0B;IAC7D,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMjB,YAAY,CAAC,CAAC,CAACe,OAAO,CACzCC,OAAO,CAACE,SAAS,EACjBF,OAAO,CAACG,QAAQ,EAChBH,OAAO,CAACI,UAAU,IAAI,IACxB,CAAC;MACD,OAAO;QACLF,SAAS,EAAED,MAAM,CAACC,SAAS;QAC3BG,KAAK,EAAEJ,MAAM,CAACI,KAAK;QACnBC,OAAO,EAAEL,MAAM,CAACK;MAClB,CAAC;IACH,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV;MACA;MACA,MAAMhB,IAAI,GAAGD,aAAa,CAAEiB,CAAC,CAAuBhB,IAAI,CAAC;MACzD,MAAMI,OAAO,GAAIY,CAAC,CAA0BZ,OAAO,IAAI,aAAa;MACpE,MAAM,IAAIF,SAAS,CAACF,IAAI,EAAEI,OAAO,CAAC;IACpC;EACF;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","android","default","nativeModule","m","NativeModules","UseSenseFlowsModule","Error","FLOW_ERROR_CODES","normaliseCode","code","includes","FlowError","constructor","message","name","exports","UseSenseFlows","runFlow","options","native","flowRunId","sdkToken","apiBaseUrl","appearance","copy","state","outcome","e"],"sourceRoot":"../../src","sources":["flows.ts"],"mappings":";;;;;;AAqBA,IAAAA,YAAA,GAAAC,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMC,aAAa,GACjB,0EAA0E,GAC1EC,qBAAQ,CAACC,MAAM,CAAC;EACdC,GAAG,EAAE,yDAAyD;EAC9DC,OAAO,EAAE,wDAAwD;EACjEC,OAAO,EAAE;AACX,CAAC,CAAC;;AAEJ;AACA;AACA,SAASC,YAAYA,CAAA,EAAG;EACtB,MAAMC,CAAC,GAAGC,0BAAa,CAACC,mBAAmB;EAC3C,IAAI,CAACF,CAAC,EAAE,MAAM,IAAIG,KAAK,CAACV,aAAa,CAAC;EACtC,OAAOO,CAAC;AASV;;AAEA;AACA;AACA;AACA;;AAWA;;AAGA;AACA;AACA;AACA;;AAeA,MAAMI,gBAA0C,GAAG,CACjD,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,SAAS,CACD;AAEV,SAASC,aAAaA,CAACC,IAAa,EAAiB;EACnD,OAAO,OAAOA,IAAI,KAAK,QAAQ,IAAKF,gBAAgB,CAAuBG,QAAQ,CAACD,IAAI,CAAC,GACpFA,IAAI,GACL,SAAS;AACf;;AAEA;;AAaA;AACA;AACA;AACA;AACA;AACO,MAAME,SAAS,SAASL,KAAK,CAAC;EAEnCM,WAAWA,CAACH,IAAmB,EAAEI,OAAe,EAAE;IAChD,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,WAAW;IACvB,IAAI,CAACL,IAAI,GAAGA,IAAI;EAClB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAkCA;;AASA;;AAQA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;;AA8CA;AAAAM,OAAA,CAAAJ,SAAA,GAAAA,SAAA;AAoBA;AACA;AACA;AACA;AACO,MAAMK,aAAa,GAAAD,OAAA,CAAAC,aAAA,GAAG;EAC3B;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,OAAOA,CAACC,OAAuB,EAA0B;IAC7D,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMjB,YAAY,CAAC,CAAC,CAACe,OAAO,CACzCC,OAAO,CAACE,SAAS,EACjBF,OAAO,CAACG,QAAQ,EAChBH,OAAO,CAACI,UAAU,IAAI,IAAI,EAC1BJ,OAAO,CAACK,UAAU,IAAI,IAAI,EAC1BL,OAAO,CAACM,IAAI,IAAI,IAClB,CAAC;MACD,OAAO;QACLJ,SAAS,EAAED,MAAM,CAACC,SAAS;QAC3BK,KAAK,EAAEN,MAAM,CAACM,KAAK;QACnBC,OAAO,EAAEP,MAAM,CAACO;MAClB,CAAC;IACH,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV;MACA;MACA,MAAMlB,IAAI,GAAGD,aAAa,CAAEmB,CAAC,CAAuBlB,IAAI,CAAC;MACzD,MAAMI,OAAO,GAAIc,CAAC,CAA0Bd,OAAO,IAAI,aAAa;MACpE,MAAM,IAAIF,SAAS,CAACF,IAAI,EAAEI,OAAO,CAAC;IACpC;EACF;AACF,CAAC","ignoreList":[]}
@@ -66,6 +66,34 @@ export class FlowError extends Error {
66
66
  }
67
67
  }
68
68
 
69
+ // ─── White-label contract (mirrors the web SDK) ───────────────────────────
70
+ //
71
+ // FlowAppearance + FlowCopy are the shared customization schemas (Phase 1 +
72
+ // Phase 2 of the white-label initiative). They mirror the web SDK contract
73
+ // (packages/sdk/src/flows/theme.ts + copy.ts) one-to-one with camelCase keys.
74
+ // The RN bridge forwards the raw object across to the native iOS/Android
75
+ // runner, which decodes it (FlowAppearance/FlowCopy.decodeFromJSONObject).
76
+ // Everything is optional; an omitted key falls back to the hosted-page tokens.
77
+
78
+ /** A palette layer. `dark` overrides apply only in dark mode. */
79
+
80
+ /** Custom illustration/icon overrides (image URLs replacing built-in glyphs). */
81
+
82
+ /** Loading animation: a built-in preset or a custom asset. */
83
+
84
+ /**
85
+ * White-label appearance overrides for the Flow runner. Supplied at SDK init
86
+ * (this option) and merged over the operator's server-delivered branding by
87
+ * the native runner. Mirrors `FlowAppearance` in the web SDK.
88
+ */
89
+
90
+ /**
91
+ * White-label copy overrides for the Flow runner. Every subject-facing string
92
+ * can be overridden; an omitted key keeps the built-in copy. Supplied at SDK
93
+ * init and merged over the operator's server-delivered copy by the native
94
+ * runner. Mirrors `FlowCopy` in the web SDK.
95
+ */
96
+
69
97
  /** Options for `UseSenseFlows.runFlow`. */
70
98
 
71
99
  /**
@@ -81,7 +109,7 @@ export const UseSenseFlows = {
81
109
  */
82
110
  async runFlow(options) {
83
111
  try {
84
- const native = await nativeModule().runFlow(options.flowRunId, options.sdkToken, options.apiBaseUrl ?? null);
112
+ const native = await nativeModule().runFlow(options.flowRunId, options.sdkToken, options.apiBaseUrl ?? null, options.appearance ?? null, options.copy ?? null);
85
113
  return {
86
114
  flowRunId: native.flowRunId,
87
115
  state: native.state,
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","android","default","nativeModule","m","UseSenseFlowsModule","Error","FLOW_ERROR_CODES","normaliseCode","code","includes","FlowError","constructor","message","name","UseSenseFlows","runFlow","options","native","flowRunId","sdkToken","apiBaseUrl","state","outcome","e"],"sourceRoot":"../../src","sources":["flows.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,0EAA0E,GAC1ED,QAAQ,CAACE,MAAM,CAAC;EACdC,GAAG,EAAE,yDAAyD;EAC9DC,OAAO,EAAE,wDAAwD;EACjEC,OAAO,EAAE;AACX,CAAC,CAAC;;AAEJ;AACA;AACA,SAASC,YAAYA,CAAA,EAAG;EACtB,MAAMC,CAAC,GAAGR,aAAa,CAACS,mBAAmB;EAC3C,IAAI,CAACD,CAAC,EAAE,MAAM,IAAIE,KAAK,CAACR,aAAa,CAAC;EACtC,OAAOM,CAAC;AACV;;AAEA;AACA;AACA;AACA;;AAWA;;AAGA;AACA;AACA;AACA;;AAeA,MAAMG,gBAA0C,GAAG,CACjD,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,SAAS,CACD;AAEV,SAASC,aAAaA,CAACC,IAAa,EAAiB;EACnD,OAAO,OAAOA,IAAI,KAAK,QAAQ,IAAKF,gBAAgB,CAAuBG,QAAQ,CAACD,IAAI,CAAC,GACpFA,IAAI,GACL,SAAS;AACf;;AAEA;;AAaA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,SAAS,SAASL,KAAK,CAAC;EAEnCM,WAAWA,CAACH,IAAmB,EAAEI,OAAe,EAAE;IAChD,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,WAAW;IACvB,IAAI,CAACL,IAAI,GAAGA,IAAI;EAClB;AACF;;AAEA;;AAQA;AACA;AACA;AACA;AACA,OAAO,MAAMM,aAAa,GAAG;EAC3B;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,OAAOA,CAACC,OAAuB,EAA0B;IAC7D,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMf,YAAY,CAAC,CAAC,CAACa,OAAO,CACzCC,OAAO,CAACE,SAAS,EACjBF,OAAO,CAACG,QAAQ,EAChBH,OAAO,CAACI,UAAU,IAAI,IACxB,CAAC;MACD,OAAO;QACLF,SAAS,EAAED,MAAM,CAACC,SAAS;QAC3BG,KAAK,EAAEJ,MAAM,CAACI,KAAK;QACnBC,OAAO,EAAEL,MAAM,CAACK;MAClB,CAAC;IACH,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV;MACA;MACA,MAAMf,IAAI,GAAGD,aAAa,CAAEgB,CAAC,CAAuBf,IAAI,CAAC;MACzD,MAAMI,OAAO,GAAIW,CAAC,CAA0BX,OAAO,IAAI,aAAa;MACpE,MAAM,IAAIF,SAAS,CAACF,IAAI,EAAEI,OAAO,CAAC;IACpC;EACF;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","android","default","nativeModule","m","UseSenseFlowsModule","Error","FLOW_ERROR_CODES","normaliseCode","code","includes","FlowError","constructor","message","name","UseSenseFlows","runFlow","options","native","flowRunId","sdkToken","apiBaseUrl","appearance","copy","state","outcome","e"],"sourceRoot":"../../src","sources":["flows.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,0EAA0E,GAC1ED,QAAQ,CAACE,MAAM,CAAC;EACdC,GAAG,EAAE,yDAAyD;EAC9DC,OAAO,EAAE,wDAAwD;EACjEC,OAAO,EAAE;AACX,CAAC,CAAC;;AAEJ;AACA;AACA,SAASC,YAAYA,CAAA,EAAG;EACtB,MAAMC,CAAC,GAAGR,aAAa,CAACS,mBAAmB;EAC3C,IAAI,CAACD,CAAC,EAAE,MAAM,IAAIE,KAAK,CAACR,aAAa,CAAC;EACtC,OAAOM,CAAC;AASV;;AAEA;AACA;AACA;AACA;;AAWA;;AAGA;AACA;AACA;AACA;;AAeA,MAAMG,gBAA0C,GAAG,CACjD,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,SAAS,CACD;AAEV,SAASC,aAAaA,CAACC,IAAa,EAAiB;EACnD,OAAO,OAAOA,IAAI,KAAK,QAAQ,IAAKF,gBAAgB,CAAuBG,QAAQ,CAACD,IAAI,CAAC,GACpFA,IAAI,GACL,SAAS;AACf;;AAEA;;AAaA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,SAAS,SAASL,KAAK,CAAC;EAEnCM,WAAWA,CAACH,IAAmB,EAAEI,OAAe,EAAE;IAChD,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,WAAW;IACvB,IAAI,CAACL,IAAI,GAAGA,IAAI;EAClB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAkCA;;AASA;;AAQA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;;AA8CA;;AAoBA;AACA;AACA;AACA;AACA,OAAO,MAAMM,aAAa,GAAG;EAC3B;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,OAAOA,CAACC,OAAuB,EAA0B;IAC7D,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMf,YAAY,CAAC,CAAC,CAACa,OAAO,CACzCC,OAAO,CAACE,SAAS,EACjBF,OAAO,CAACG,QAAQ,EAChBH,OAAO,CAACI,UAAU,IAAI,IAAI,EAC1BJ,OAAO,CAACK,UAAU,IAAI,IAAI,EAC1BL,OAAO,CAACM,IAAI,IAAI,IAClB,CAAC;MACD,OAAO;QACLJ,SAAS,EAAED,MAAM,CAACC,SAAS;QAC3BK,KAAK,EAAEN,MAAM,CAACM,KAAK;QACnBC,OAAO,EAAEP,MAAM,CAACO;MAClB,CAAC;IACH,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV;MACA;MACA,MAAMjB,IAAI,GAAGD,aAAa,CAAEkB,CAAC,CAAuBjB,IAAI,CAAC;MACzD,MAAMI,OAAO,GAAIa,CAAC,CAA0Bb,OAAO,IAAI,aAAa;MACpE,MAAM,IAAIF,SAAS,CAACF,IAAI,EAAEI,OAAO,CAAC;IACpC;EACF;AACF,CAAC","ignoreList":[]}
@@ -231,5 +231,9 @@ export default UseSense;
231
231
 
232
232
  // Slice 5d: Flows. A parallel surface to Sessions — host apps choose one
233
233
  // per call. See guides/flows/sessions-vs-flows in the API docs.
234
- export { UseSenseFlows, FlowError } from './flows';
234
+ export { UseSenseFlows, FlowError
235
+
236
+ // White-label contract (Phase 1 appearance + Phase 2 copy). Forwarded to the
237
+ // native runner via the bridge.
238
+ } from './flows';
235
239
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","NativeEventEmitter","Platform","LINKING_ERROR","select","ios","android","default","UseSenseModule","Error","eventEmitter","UseSense","initialize","config","apiKey","err","code","message","isRetryable","environment","apiEndpoint","branding","antispoofOnDeviceEnabled","liveSenseV4Enabled","startVerification","request","sessionType","externalUserId","identityId","metadata","addListener","callback","subscription","raw","remove","reset","isInitialized","startV4Verification","sessionId","sessionToken","nonce","apiBaseUrl","displayName","brandPrimaryColor","UseSenseFlows","FlowError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;AAE1E,MAAMC,aAAa,GACjB,kEAAkE,GAClED,QAAQ,CAACE,MAAM,CAAC;EACdC,GAAG,EAAE,yDAAyD;EAC9DC,OAAO,EAAE,wDAAwD;EACjEC,OAAO,EAAE;AACX,CAAC,CAAC,GACF,sJAAsJ;AAExJ,MAAMC,cAAc,GAAGR,aAAa,CAACQ,cAAc;AAEnD,IAAI,CAACA,cAAc,EAAE;EACnB,MAAM,IAAIC,KAAK,CAACN,aAAa,CAAC;AAChC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAGA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;;AAsCA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;;AAwBA;AACA;AACA;AACA;;AAsBA;;AASA;;AAKA;;AAEA,MAAMO,YAAY,GAAG,IAAIT,kBAAkB,CAACO,cAAc,CAAC;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,QAAQ,CAAC;EACpB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,UAAUA,CAACC,MAAsB,EAAiB;IAC7D,IAAI,CAACA,MAAM,CAACC,MAAM,EAAE;MAClB,MAAMC,GAAkB,GAAG;QACzBC,IAAI,EAAE,gBAAgB;QACtBC,OAAO,EAAE,oBAAoB;QAC7BC,WAAW,EAAE;MACf,CAAC;MACD,MAAMH,GAAG;IACX;IACA,OAAOP,cAAc,CAACI,UAAU,CAAC;MAC/BE,MAAM,EAAED,MAAM,CAACC,MAAM;MACrBK,WAAW,EAAEN,MAAM,CAACM,WAAW,IAAI,MAAM;MACzCC,WAAW,EAAEP,MAAM,CAACO,WAAW;MAC/BC,QAAQ,EAAER,MAAM,CAACQ,QAAQ;MACzBC,wBAAwB,EAAET,MAAM,CAACS,wBAAwB,IAAI,KAAK;MAClEC,kBAAkB,EAAEV,MAAM,CAACU,kBAAkB,IAAI;IACnD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,iBAAiBA,CAC5BC,OAA4B,EACH;IACzB,OAAOjB,cAAc,CAACgB,iBAAiB,CAAC;MACtCE,WAAW,EAAED,OAAO,CAACC,WAAW;MAChCC,cAAc,EAAEF,OAAO,CAACE,cAAc;MACtCC,UAAU,EAAEH,OAAO,CAACG,UAAU;MAC9BC,QAAQ,EAAEJ,OAAO,CAACI;IACpB,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,WAAWA,CAChBC,QAAwC,EAClB;IACtB,MAAMC,YAAY,GAAGtB,YAAY,CAACoB,WAAW,CAC3C,eAAe,EACdG,GAAkB,IAAK;MACtBF,QAAQ,CAACE,GAAG,CAAC;IACf,CACF,CAAC;IACD,OAAO;MACLC,MAAM,EAAEA,CAAA,KAAMF,YAAY,CAACE,MAAM,CAAC;IACpC,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,aAAaC,KAAKA,CAAA,EAAkB;IAClC,OAAO3B,cAAc,CAAC2B,KAAK,CAAC,CAAC;EAC/B;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,aAAaC,aAAaA,CAAA,EAAqB;IAC7C,OAAO5B,cAAc,CAAC4B,aAAa,CAAC,CAAC;EACvC;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,mBAAmBA,CAC9BZ,OAA8B,EACV;IACpB,OAAOjB,cAAc,CAAC6B,mBAAmB,CAAC;MACxCC,SAAS,EAAEb,OAAO,CAACa,SAAS;MAC5BC,YAAY,EAAEd,OAAO,CAACc,YAAY;MAClCC,KAAK,EAAEf,OAAO,CAACe,KAAK;MACpBC,UAAU,EAAEhB,OAAO,CAACgB,UAAU;MAC9BtB,WAAW,EAAEM,OAAO,CAACN,WAAW,IAAI,YAAY;MAChDuB,WAAW,EAAEjB,OAAO,CAACiB,WAAW;MAChCC,iBAAiB,EAAElB,OAAO,CAACkB;IAC7B,CAAC,CAAC;EACJ;AACF;;AAEA;;AAiBA;AACA;AACA;AACA;;AAWA,eAAehC,QAAQ;;AAEvB;AACA;AACA,SACEiC,aAAa,EACbC,SAAS,QAMJ,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","NativeEventEmitter","Platform","LINKING_ERROR","select","ios","android","default","UseSenseModule","Error","eventEmitter","UseSense","initialize","config","apiKey","err","code","message","isRetryable","environment","apiEndpoint","branding","antispoofOnDeviceEnabled","liveSenseV4Enabled","startVerification","request","sessionType","externalUserId","identityId","metadata","addListener","callback","subscription","raw","remove","reset","isInitialized","startV4Verification","sessionId","sessionToken","nonce","apiBaseUrl","displayName","brandPrimaryColor","UseSenseFlows","FlowError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -49,12 +49,178 @@ export declare class FlowError extends Error {
49
49
  readonly code: FlowErrorCode;
50
50
  constructor(code: FlowErrorCode, message: string);
51
51
  }
52
+ /** A palette layer. `dark` overrides apply only in dark mode. */
53
+ export interface AppearanceColors {
54
+ primary?: string;
55
+ primaryForeground?: string;
56
+ background?: string;
57
+ surface?: string;
58
+ foreground?: string;
59
+ muted?: string;
60
+ border?: string;
61
+ success?: string;
62
+ error?: string;
63
+ warning?: string;
64
+ /** Overrides applied on top of the dark base (e.g. a darker background). */
65
+ dark?: Omit<AppearanceColors, 'dark'>;
66
+ }
67
+ export interface AppearanceTypography {
68
+ /** Body font-family name (e.g. "DM Sans"). */
69
+ fontFamily?: string;
70
+ /** Heading/display font-family; defaults to fontFamily when omitted. */
71
+ displayFamily?: string;
72
+ /** A stylesheet URL or @font-face block to load custom fonts (web only;
73
+ * ignored by the native runners, which load fonts from app resources). */
74
+ fontCss?: string;
75
+ }
76
+ export interface AppearanceShape {
77
+ /** Base corner radius (cards, inputs). */
78
+ radius?: number;
79
+ /** Button corner radius; defaults to radius. */
80
+ buttonRadius?: number;
81
+ buttonStyle?: 'filled' | 'outline';
82
+ }
83
+ /** Custom illustration/icon overrides (image URLs replacing built-in glyphs). */
84
+ export interface AppearanceIcons {
85
+ /** Success result screen. */ success?: string;
86
+ /** Under-review result screen. */ review?: string;
87
+ /** Not-verified result screen. */ notVerified?: string;
88
+ /** Any other named slot by URL. */
89
+ [slot: string]: string | undefined;
90
+ }
91
+ /** Loading animation: a built-in preset or a custom asset. */
92
+ export interface AppearanceLoader {
93
+ /** Built-in preset. Default 'spinner'. */
94
+ style?: 'spinner' | 'dots' | 'bar';
95
+ /** Custom loader asset URL; overrides style. */
96
+ imageUrl?: string;
97
+ }
98
+ /**
99
+ * White-label appearance overrides for the Flow runner. Supplied at SDK init
100
+ * (this option) and merged over the operator's server-delivered branding by
101
+ * the native runner. Mirrors `FlowAppearance` in the web SDK.
102
+ */
103
+ export interface FlowAppearance {
104
+ colors?: AppearanceColors;
105
+ typography?: AppearanceTypography;
106
+ shape?: AppearanceShape;
107
+ logo?: {
108
+ url?: string;
109
+ placement?: 'header' | 'center' | 'none';
110
+ height?: number;
111
+ };
112
+ background?: {
113
+ color?: string;
114
+ imageUrl?: string;
115
+ };
116
+ /** Custom illustrations for result screens / icon slots. */
117
+ icons?: AppearanceIcons;
118
+ /** Loading-animation preset or custom asset. */
119
+ loader?: AppearanceLoader;
120
+ /** Force a palette or follow the OS (default 'auto'). */
121
+ mode?: 'light' | 'dark' | 'auto';
122
+ }
123
+ /**
124
+ * White-label copy overrides for the Flow runner. Every subject-facing string
125
+ * can be overridden; an omitted key keeps the built-in copy. Supplied at SDK
126
+ * init and merged over the operator's server-delivered copy by the native
127
+ * runner. Mirrors `FlowCopy` in the web SDK.
128
+ */
129
+ export interface FlowCopy {
130
+ /** Optional welcome/intro shown before the first step (when set). */
131
+ welcome?: {
132
+ title?: string;
133
+ body?: string;
134
+ };
135
+ /** Shared button labels. */
136
+ buttons?: {
137
+ continue?: string;
138
+ cancel?: string;
139
+ tryAgain?: string;
140
+ retake?: string;
141
+ useThisPhoto?: string;
142
+ uploadInstead?: string;
143
+ scan?: string;
144
+ upload?: string;
145
+ submitting?: string;
146
+ };
147
+ /** Titles shown under the loader for each transient state. */
148
+ loading?: {
149
+ default?: string;
150
+ verifying?: string;
151
+ submittingDocument?: string;
152
+ checkingQuality?: string;
153
+ };
154
+ /** Face capture primer. */
155
+ face?: {
156
+ title?: string;
157
+ body?: string;
158
+ start?: string;
159
+ };
160
+ /** Document capture surfaces. */
161
+ document?: {
162
+ selectTitle?: string;
163
+ selectBody?: string;
164
+ primerTitle?: string;
165
+ primerBody?: string;
166
+ uploadTitle?: string;
167
+ uploadBody?: string;
168
+ scanTitle?: string;
169
+ scanBody?: string;
170
+ confirmTitle?: string;
171
+ confirmBody?: string;
172
+ };
173
+ /** Form + ID-number surfaces. */
174
+ form?: {
175
+ title?: string;
176
+ };
177
+ idNumber?: {
178
+ title?: string;
179
+ body?: string;
180
+ };
181
+ /** Terminal result screens. */
182
+ result?: {
183
+ successTitle?: string;
184
+ successBody?: string;
185
+ reviewTitle?: string;
186
+ reviewBody?: string;
187
+ notVerifiedTitle?: string;
188
+ notVerifiedBody?: string;
189
+ cancelledTitle?: string;
190
+ };
191
+ /** Error copy (provider failure vs unreadable capture vs generic). */
192
+ errors?: {
193
+ generic?: string;
194
+ providerUnavailable?: string;
195
+ documentUnreadable?: string;
196
+ };
197
+ /** Privacy / consent disclosures shown to the subject. */
198
+ privacy?: {
199
+ disclosure?: string;
200
+ consentTitle?: string;
201
+ consentBody?: string;
202
+ };
203
+ /** Free-form help text / tooltips keyed by an SDK-defined slot id. */
204
+ help?: Record<string, string>;
205
+ }
52
206
  /** Options for `UseSenseFlows.runFlow`. */
53
207
  export interface RunFlowOptions {
54
208
  flowRunId: string;
55
209
  sdkToken: string;
56
210
  /** Defaults to `https://api.usesense.ai`. */
57
211
  apiBaseUrl?: string;
212
+ /**
213
+ * SDK-init white-label appearance. Forwarded to the native runner, which
214
+ * decodes it and merges it over the operator's server-delivered branding
215
+ * (SDK-init takes precedence). Omit to use the hosted-page tokens.
216
+ */
217
+ appearance?: FlowAppearance;
218
+ /**
219
+ * SDK-init white-label copy. Forwarded to the native runner, which decodes
220
+ * it and merges it over the operator's server-delivered copy (SDK-init takes
221
+ * precedence). Omit to keep the built-in subject-facing strings.
222
+ */
223
+ copy?: FlowCopy;
58
224
  }
59
225
  /**
60
226
  * Public entry point for the Flows runner. Sessions APIs are untouched;
@@ -1 +1 @@
1
- {"version":3,"file":"flows.d.ts","sourceRoot":"","sources":["../../../src/flows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAoBH;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,aAAa,GACb,SAAS,GACT,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,WAAW,GACX,WAAW,CAAC;AAEhB,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,eAAe,GACf,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,GACtB,WAAW,GACX,oBAAoB;AACtB;;4EAE4E;GAC1E,eAAe,GACf,SAAS,CAAC;AAoBd,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAQD;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;gBACjB,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;CAKjD;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa;IACxB;;;;;OAKG;qBACoB,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAoB/D,CAAC"}
1
+ {"version":3,"file":"flows.d.ts","sourceRoot":"","sources":["../../../src/flows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA4BH;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,aAAa,GACb,SAAS,GACT,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,WAAW,GACX,WAAW,CAAC;AAEhB,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,eAAe,GACf,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,GACtB,WAAW,GACX,oBAAoB;AACtB;;4EAE4E;GAC1E,eAAe,GACf,SAAS,CAAC;AAoBd,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAQD;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;gBACjB,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;CAKjD;AAWD,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;+EAC2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACpC;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,6BAA6B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC/C,kCAAkC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACnD,kCAAkC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACxD,mCAAmC;IACnC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,4DAA4D;IAC5D,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,gDAAgD;IAChD,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,yDAAyD;IACzD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,qEAAqE;IACrE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,4BAA4B;IAC5B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,8DAA8D;IAC9D,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1G,2BAA2B;IAC3B,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,iCAAiC;IACjC,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QACtC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC7C,CAAC;IACF,iCAAiC;IACjC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,+BAA+B;IAC/B,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QACpD,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,sEAAsE;IACtE,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzF,0DAA0D;IAC1D,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa;IACxB;;;;;OAKG;qBACoB,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAsB/D,CAAC"}
@@ -264,5 +264,5 @@ export interface V4Verdict {
264
264
  timestamp: string;
265
265
  }
266
266
  export default UseSense;
267
- export { UseSenseFlows, FlowError, type FlowErrorCode, type FlowOutcome, type FlowRunResult, type FlowRunState, type RunFlowOptions, } from './flows';
267
+ export { UseSenseFlows, FlowError, type FlowErrorCode, type FlowOutcome, type FlowRunResult, type FlowRunState, type RunFlowOptions, type FlowAppearance, type FlowCopy, type AppearanceColors, type AppearanceTypography, type AppearanceShape, type AppearanceIcons, type AppearanceLoader, } from './flows';
268
268
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC;AAEpE,oCAAoC;AACpC,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;;;OAOG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,CAAC;IACzB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACtD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,uBAAuB,GACvB,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,sBAAsB,GACtB,wBAAwB,GACxB,mBAAmB,GACnB,qBAAqB,GACrB,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,OAAO,GACP,SAAS,CAAC;AAEd,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,MAAM,IAAI,IAAI,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,QAAQ;IACnB;;;;;;;OAOG;WACU,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB9D;;;;;;OAMG;WACU,iBAAiB,CAC5B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC;IAS1B;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GACvC,oBAAoB;IAYvB;;;;;OAKG;WACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;;OAKG;WACU,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAY9C;;;;;;;OAOG;WACU,mBAAmB,CAC9B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC;CAWtB;AAID,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,CAAC;AACrF,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,YAAY,CAAC;IACzB,wBAAwB,EAAE,gBAAgB,CAAC;IAC3C,eAAe,EAAE,gBAAgB,CAAC;IAClC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAe,QAAQ,CAAC;AAIxB,OAAO,EACL,aAAa,EACb,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EAGnB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-usesense",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "React Native plugin for human presence verification. Wraps the native UseSense iOS and Android SDKs.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -26,5 +26,5 @@ Pod::Spec.new do |s|
26
26
  # redaction result type with a completely different UseSenseConfig
27
27
  # init signature. See CHANGELOG [2.0.0] for the full rewrite
28
28
  # rationale.
29
- s.dependency "UseSenseSDK", "~> 4.3"
29
+ s.dependency "UseSenseSDK", "~> 4.5"
30
30
  end
package/src/flows.ts CHANGED
@@ -34,7 +34,15 @@ const LINKING_ERROR =
34
34
  function nativeModule() {
35
35
  const m = NativeModules.UseSenseFlowsModule;
36
36
  if (!m) throw new Error(LINKING_ERROR);
37
- return m as { runFlow: (flowRunId: string, sdkToken: string, apiBaseUrl: string | null) => Promise<NativeFlowRunResult> };
37
+ return m as {
38
+ runFlow: (
39
+ flowRunId: string,
40
+ sdkToken: string,
41
+ apiBaseUrl: string | null,
42
+ appearance: FlowAppearance | null,
43
+ copy: FlowCopy | null,
44
+ ) => Promise<NativeFlowRunResult>;
45
+ };
38
46
  }
39
47
 
40
48
  /**
@@ -117,12 +125,154 @@ export class FlowError extends Error {
117
125
  }
118
126
  }
119
127
 
128
+ // ─── White-label contract (mirrors the web SDK) ───────────────────────────
129
+ //
130
+ // FlowAppearance + FlowCopy are the shared customization schemas (Phase 1 +
131
+ // Phase 2 of the white-label initiative). They mirror the web SDK contract
132
+ // (packages/sdk/src/flows/theme.ts + copy.ts) one-to-one with camelCase keys.
133
+ // The RN bridge forwards the raw object across to the native iOS/Android
134
+ // runner, which decodes it (FlowAppearance/FlowCopy.decodeFromJSONObject).
135
+ // Everything is optional; an omitted key falls back to the hosted-page tokens.
136
+
137
+ /** A palette layer. `dark` overrides apply only in dark mode. */
138
+ export interface AppearanceColors {
139
+ primary?: string;
140
+ primaryForeground?: string;
141
+ background?: string;
142
+ surface?: string;
143
+ foreground?: string;
144
+ muted?: string;
145
+ border?: string;
146
+ success?: string;
147
+ error?: string;
148
+ warning?: string;
149
+ /** Overrides applied on top of the dark base (e.g. a darker background). */
150
+ dark?: Omit<AppearanceColors, 'dark'>;
151
+ }
152
+
153
+ export interface AppearanceTypography {
154
+ /** Body font-family name (e.g. "DM Sans"). */
155
+ fontFamily?: string;
156
+ /** Heading/display font-family; defaults to fontFamily when omitted. */
157
+ displayFamily?: string;
158
+ /** A stylesheet URL or @font-face block to load custom fonts (web only;
159
+ * ignored by the native runners, which load fonts from app resources). */
160
+ fontCss?: string;
161
+ }
162
+
163
+ export interface AppearanceShape {
164
+ /** Base corner radius (cards, inputs). */
165
+ radius?: number;
166
+ /** Button corner radius; defaults to radius. */
167
+ buttonRadius?: number;
168
+ buttonStyle?: 'filled' | 'outline';
169
+ }
170
+
171
+ /** Custom illustration/icon overrides (image URLs replacing built-in glyphs). */
172
+ export interface AppearanceIcons {
173
+ /** Success result screen. */ success?: string;
174
+ /** Under-review result screen. */ review?: string;
175
+ /** Not-verified result screen. */ notVerified?: string;
176
+ /** Any other named slot by URL. */
177
+ [slot: string]: string | undefined;
178
+ }
179
+
180
+ /** Loading animation: a built-in preset or a custom asset. */
181
+ export interface AppearanceLoader {
182
+ /** Built-in preset. Default 'spinner'. */
183
+ style?: 'spinner' | 'dots' | 'bar';
184
+ /** Custom loader asset URL; overrides style. */
185
+ imageUrl?: string;
186
+ }
187
+
188
+ /**
189
+ * White-label appearance overrides for the Flow runner. Supplied at SDK init
190
+ * (this option) and merged over the operator's server-delivered branding by
191
+ * the native runner. Mirrors `FlowAppearance` in the web SDK.
192
+ */
193
+ export interface FlowAppearance {
194
+ colors?: AppearanceColors;
195
+ typography?: AppearanceTypography;
196
+ shape?: AppearanceShape;
197
+ logo?: { url?: string; placement?: 'header' | 'center' | 'none'; height?: number };
198
+ background?: { color?: string; imageUrl?: string };
199
+ /** Custom illustrations for result screens / icon slots. */
200
+ icons?: AppearanceIcons;
201
+ /** Loading-animation preset or custom asset. */
202
+ loader?: AppearanceLoader;
203
+ /** Force a palette or follow the OS (default 'auto'). */
204
+ mode?: 'light' | 'dark' | 'auto';
205
+ }
206
+
207
+ /**
208
+ * White-label copy overrides for the Flow runner. Every subject-facing string
209
+ * can be overridden; an omitted key keeps the built-in copy. Supplied at SDK
210
+ * init and merged over the operator's server-delivered copy by the native
211
+ * runner. Mirrors `FlowCopy` in the web SDK.
212
+ */
213
+ export interface FlowCopy {
214
+ /** Optional welcome/intro shown before the first step (when set). */
215
+ welcome?: { title?: string; body?: string };
216
+ /** Shared button labels. */
217
+ buttons?: {
218
+ continue?: string;
219
+ cancel?: string;
220
+ tryAgain?: string;
221
+ retake?: string;
222
+ useThisPhoto?: string;
223
+ uploadInstead?: string;
224
+ scan?: string;
225
+ upload?: string;
226
+ submitting?: string;
227
+ };
228
+ /** Titles shown under the loader for each transient state. */
229
+ loading?: { default?: string; verifying?: string; submittingDocument?: string; checkingQuality?: string };
230
+ /** Face capture primer. */
231
+ face?: { title?: string; body?: string; start?: string };
232
+ /** Document capture surfaces. */
233
+ document?: {
234
+ selectTitle?: string; selectBody?: string;
235
+ primerTitle?: string; primerBody?: string;
236
+ uploadTitle?: string; uploadBody?: string;
237
+ scanTitle?: string; scanBody?: string;
238
+ confirmTitle?: string; confirmBody?: string;
239
+ };
240
+ /** Form + ID-number surfaces. */
241
+ form?: { title?: string };
242
+ idNumber?: { title?: string; body?: string };
243
+ /** Terminal result screens. */
244
+ result?: {
245
+ successTitle?: string; successBody?: string;
246
+ reviewTitle?: string; reviewBody?: string;
247
+ notVerifiedTitle?: string; notVerifiedBody?: string;
248
+ cancelledTitle?: string;
249
+ };
250
+ /** Error copy (provider failure vs unreadable capture vs generic). */
251
+ errors?: { generic?: string; providerUnavailable?: string; documentUnreadable?: string };
252
+ /** Privacy / consent disclosures shown to the subject. */
253
+ privacy?: { disclosure?: string; consentTitle?: string; consentBody?: string };
254
+ /** Free-form help text / tooltips keyed by an SDK-defined slot id. */
255
+ help?: Record<string, string>;
256
+ }
257
+
120
258
  /** Options for `UseSenseFlows.runFlow`. */
121
259
  export interface RunFlowOptions {
122
260
  flowRunId: string;
123
261
  sdkToken: string;
124
262
  /** Defaults to `https://api.usesense.ai`. */
125
263
  apiBaseUrl?: string;
264
+ /**
265
+ * SDK-init white-label appearance. Forwarded to the native runner, which
266
+ * decodes it and merges it over the operator's server-delivered branding
267
+ * (SDK-init takes precedence). Omit to use the hosted-page tokens.
268
+ */
269
+ appearance?: FlowAppearance;
270
+ /**
271
+ * SDK-init white-label copy. Forwarded to the native runner, which decodes
272
+ * it and merges it over the operator's server-delivered copy (SDK-init takes
273
+ * precedence). Omit to keep the built-in subject-facing strings.
274
+ */
275
+ copy?: FlowCopy;
126
276
  }
127
277
 
128
278
  /**
@@ -142,6 +292,8 @@ export const UseSenseFlows = {
142
292
  options.flowRunId,
143
293
  options.sdkToken,
144
294
  options.apiBaseUrl ?? null,
295
+ options.appearance ?? null,
296
+ options.copy ?? null,
145
297
  );
146
298
  return {
147
299
  flowRunId: native.flowRunId,
package/src/index.ts CHANGED
@@ -402,4 +402,13 @@ export {
402
402
  type FlowRunResult,
403
403
  type FlowRunState,
404
404
  type RunFlowOptions,
405
+ // White-label contract (Phase 1 appearance + Phase 2 copy). Forwarded to the
406
+ // native runner via the bridge.
407
+ type FlowAppearance,
408
+ type FlowCopy,
409
+ type AppearanceColors,
410
+ type AppearanceTypography,
411
+ type AppearanceShape,
412
+ type AppearanceIcons,
413
+ type AppearanceLoader,
405
414
  } from './flows';