@thunderid/react 0.3.0 → 0.3.3

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.
Files changed (475) hide show
  1. package/dist/ThunderIDReactClient.d.ts +4 -4
  2. package/dist/ThunderIDReactClient.d.ts.map +1 -1
  3. package/dist/ThunderIDReactClient.js +6 -6
  4. package/dist/ThunderIDReactClient.js.map +1 -1
  5. package/dist/cjs/ThunderIDReactClient.cjs +5 -5
  6. package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
  7. package/dist/cjs/components/actions/SignInButton/SignInButton.cjs.map +1 -1
  8. package/dist/cjs/components/adapters/Consent.cjs.map +1 -1
  9. package/dist/cjs/components/adapters/ConsentCheckboxList.cjs +1 -1
  10. package/dist/cjs/components/adapters/ConsentCheckboxList.cjs.map +1 -1
  11. package/dist/cjs/components/auth/Callback/Callback.cjs +1 -1
  12. package/dist/cjs/components/auth/Callback/Callback.cjs.map +1 -1
  13. package/dist/cjs/components/auth/Callback/TokenCallback.cjs +3 -3
  14. package/dist/cjs/components/auth/Callback/TokenCallback.cjs.map +1 -1
  15. package/dist/cjs/components/factories/FieldFactory.cjs +2 -2
  16. package/dist/cjs/components/factories/FieldFactory.cjs.map +1 -1
  17. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs +1 -1
  18. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs +1 -1
  19. package/dist/cjs/components/presentation/UserProfile/BaseUserProfile.cjs +3 -3
  20. package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.cjs → AcceptInvite.cjs} +2 -2
  21. package/dist/cjs/components/presentation/auth/AcceptInvite/AcceptInvite.cjs.map +1 -0
  22. package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.cjs → BaseAcceptInvite.cjs} +47 -18
  23. package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.cjs.map +1 -0
  24. package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.cjs → BaseAcceptInvite.styles.cjs} +2 -2
  25. package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.cjs.map +1 -0
  26. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs +50 -32
  27. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
  28. package/dist/cjs/components/presentation/auth/InviteUser/{v2/BaseInviteUser.cjs → BaseInviteUser.cjs} +44 -15
  29. package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.cjs.map +1 -0
  30. package/dist/cjs/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.cjs → BaseInviteUser.styles.cjs} +2 -2
  31. package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.styles.cjs.map +1 -0
  32. package/dist/cjs/components/presentation/auth/InviteUser/{v2/InviteUser.cjs → InviteUser.cjs} +3 -3
  33. package/dist/cjs/components/presentation/auth/InviteUser/InviteUser.cjs.map +1 -0
  34. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.cjs → OrganizationUnitPicker.cjs} +3 -3
  35. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs.map +1 -0
  36. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.styles.cjs → OrganizationUnitPicker.styles.cjs} +2 -2
  37. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs.map +1 -0
  38. package/dist/cjs/components/presentation/auth/Recovery/BaseRecovery.cjs +389 -8
  39. package/dist/cjs/components/presentation/auth/Recovery/BaseRecovery.cjs.map +1 -1
  40. package/dist/cjs/components/presentation/auth/Recovery/Recovery.cjs +51 -22
  41. package/dist/cjs/components/presentation/auth/Recovery/Recovery.cjs.map +1 -1
  42. package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.cjs +346 -8
  43. package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.cjs.map +1 -1
  44. package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs +547 -36
  45. package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs.map +1 -1
  46. package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.cjs +691 -8
  47. package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.cjs.map +1 -1
  48. package/dist/cjs/components/presentation/auth/SignUp/SignUp.cjs +66 -76
  49. package/dist/cjs/components/presentation/auth/SignUp/SignUp.cjs.map +1 -1
  50. package/dist/cjs/components/primitives/Alert/Alert.cjs +1 -1
  51. package/dist/cjs/components/primitives/Checkbox/Checkbox.cjs +1 -1
  52. package/dist/cjs/components/primitives/FormControl/FormControl.cjs +1 -1
  53. package/dist/cjs/components/primitives/Toggle/Toggle.cjs +1 -1
  54. package/dist/cjs/contexts/ComponentRenderer/ComponentRendererContext.cjs.map +1 -1
  55. package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs +5 -7
  56. package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs.map +1 -1
  57. package/dist/cjs/contexts/Theme/ThemeProvider.cjs +76 -37
  58. package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
  59. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +0 -1
  60. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
  61. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +0 -3
  62. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  63. package/dist/cjs/hooks/{v2/useOAuthCallback.cjs → useOAuthCallback.cjs} +2 -2
  64. package/dist/cjs/hooks/useOAuthCallback.cjs.map +1 -0
  65. package/dist/cjs/index.cjs +47 -50
  66. package/dist/cjs/utils/{v2/buildThemeConfigFromFlowMeta.cjs → buildThemeConfigFromFlowMeta.cjs} +1 -1
  67. package/dist/cjs/utils/buildThemeConfigFromFlowMeta.cjs.map +1 -0
  68. package/dist/cjs/utils/{v2/flowTransformer.cjs → flowTransformer.cjs} +1 -1
  69. package/dist/cjs/utils/flowTransformer.cjs.map +1 -0
  70. package/dist/cjs/utils/{v2/getAuthComponentHeadings.cjs → getAuthComponentHeadings.cjs} +1 -1
  71. package/dist/cjs/utils/getAuthComponentHeadings.cjs.map +1 -0
  72. package/dist/cjs/utils/{v2/passkey.cjs → passkey.cjs} +2 -2
  73. package/dist/cjs/utils/passkey.cjs.map +1 -0
  74. package/dist/cjs/utils/{v2/resolveTranslationsInArray.cjs → resolveTranslationsInArray.cjs} +1 -1
  75. package/dist/cjs/utils/resolveTranslationsInArray.cjs.map +1 -0
  76. package/dist/cjs/utils/{v2/resolveTranslationsInObject.cjs → resolveTranslationsInObject.cjs} +2 -2
  77. package/dist/cjs/utils/resolveTranslationsInObject.cjs.map +1 -0
  78. package/dist/components/actions/SignInButton/SignInButton.d.ts.map +1 -1
  79. package/dist/components/actions/SignInButton/SignInButton.js.map +1 -1
  80. package/dist/components/adapters/Consent.d.ts +1 -1
  81. package/dist/components/adapters/Consent.d.ts.map +1 -1
  82. package/dist/components/adapters/Consent.js.map +1 -1
  83. package/dist/components/adapters/ConsentCheckboxList.d.ts +1 -1
  84. package/dist/components/adapters/ConsentCheckboxList.d.ts.map +1 -1
  85. package/dist/components/adapters/ConsentCheckboxList.js +1 -1
  86. package/dist/components/adapters/ConsentCheckboxList.js.map +1 -1
  87. package/dist/components/auth/Callback/Callback.d.ts +1 -1
  88. package/dist/components/auth/Callback/Callback.js +1 -1
  89. package/dist/components/auth/Callback/Callback.js.map +1 -1
  90. package/dist/components/auth/Callback/TokenCallback.js +4 -4
  91. package/dist/components/auth/Callback/TokenCallback.js.map +1 -1
  92. package/dist/components/factories/FieldFactory.d.ts +2 -2
  93. package/dist/components/factories/FieldFactory.js +2 -2
  94. package/dist/components/factories/FieldFactory.js.map +1 -1
  95. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js +1 -1
  96. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js +1 -1
  97. package/dist/components/presentation/UserProfile/BaseUserProfile.js +3 -3
  98. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.d.ts.map +1 -0
  99. package/dist/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.js → AcceptInvite.js} +1 -1
  100. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.js.map +1 -0
  101. package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.d.ts → BaseAcceptInvite.d.ts} +3 -2
  102. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.d.ts.map +1 -0
  103. package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.js → BaseAcceptInvite.js} +45 -17
  104. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.js.map +1 -0
  105. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.d.ts.map +1 -0
  106. package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.js → BaseAcceptInvite.styles.js} +1 -1
  107. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.js.map +1 -0
  108. package/dist/components/presentation/auth/AcceptInvite/index.d.ts +4 -4
  109. package/dist/components/presentation/auth/AcceptInvite/index.d.ts.map +1 -1
  110. package/dist/components/presentation/auth/AuthOptionFactory.d.ts +1 -1
  111. package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
  112. package/dist/components/presentation/auth/AuthOptionFactory.js +51 -33
  113. package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
  114. package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.d.ts → BaseInviteUser.d.ts} +3 -2
  115. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.d.ts.map +1 -0
  116. package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.js → BaseInviteUser.js} +44 -15
  117. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.js.map +1 -0
  118. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.d.ts.map +1 -0
  119. package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.js → BaseInviteUser.styles.js} +1 -1
  120. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.js.map +1 -0
  121. package/dist/components/presentation/auth/InviteUser/InviteUser.d.ts.map +1 -0
  122. package/dist/components/presentation/auth/InviteUser/{v2/InviteUser.js → InviteUser.js} +2 -2
  123. package/dist/components/presentation/auth/InviteUser/InviteUser.js.map +1 -0
  124. package/dist/components/presentation/auth/InviteUser/index.d.ts +4 -4
  125. package/dist/components/presentation/auth/InviteUser/index.d.ts.map +1 -1
  126. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts.map +1 -0
  127. package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.js → OrganizationUnitPicker.js} +2 -2
  128. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js.map +1 -0
  129. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts.map +1 -0
  130. package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.styles.js → OrganizationUnitPicker.styles.js} +1 -1
  131. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js.map +1 -0
  132. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts +2 -2
  133. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts.map +1 -1
  134. package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts +63 -4
  135. package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts.map +1 -1
  136. package/dist/components/presentation/auth/Recovery/BaseRecovery.js +389 -10
  137. package/dist/components/presentation/auth/Recovery/BaseRecovery.js.map +1 -1
  138. package/dist/components/presentation/auth/Recovery/Recovery.d.ts +21 -22
  139. package/dist/components/presentation/auth/Recovery/Recovery.d.ts.map +1 -1
  140. package/dist/components/presentation/auth/Recovery/Recovery.js +51 -23
  141. package/dist/components/presentation/auth/Recovery/Recovery.js.map +1 -1
  142. package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts +213 -6
  143. package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts.map +1 -1
  144. package/dist/components/presentation/auth/SignIn/BaseSignIn.js +346 -10
  145. package/dist/components/presentation/auth/SignIn/BaseSignIn.js.map +1 -1
  146. package/dist/components/presentation/auth/SignIn/SignIn.d.ts +122 -13
  147. package/dist/components/presentation/auth/SignIn/SignIn.d.ts.map +1 -1
  148. package/dist/components/presentation/auth/SignIn/SignIn.js +548 -38
  149. package/dist/components/presentation/auth/SignIn/SignIn.js.map +1 -1
  150. package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts +164 -6
  151. package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts.map +1 -1
  152. package/dist/components/presentation/auth/SignUp/BaseSignUp.js +691 -10
  153. package/dist/components/presentation/auth/SignUp/BaseSignUp.js.map +1 -1
  154. package/dist/components/presentation/auth/SignUp/SignUp.d.ts +15 -74
  155. package/dist/components/presentation/auth/SignUp/SignUp.d.ts.map +1 -1
  156. package/dist/components/presentation/auth/SignUp/SignUp.js +67 -77
  157. package/dist/components/presentation/auth/SignUp/SignUp.js.map +1 -1
  158. package/dist/components/primitives/Alert/Alert.js +1 -1
  159. package/dist/components/primitives/Checkbox/Checkbox.js +1 -1
  160. package/dist/components/primitives/FormControl/FormControl.js +1 -1
  161. package/dist/components/primitives/Toggle/Toggle.js +1 -1
  162. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts +1 -1
  163. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts.map +1 -1
  164. package/dist/contexts/ComponentRenderer/ComponentRendererContext.js.map +1 -1
  165. package/dist/contexts/FlowMeta/FlowMetaProvider.d.ts.map +1 -1
  166. package/dist/contexts/FlowMeta/FlowMetaProvider.js +6 -8
  167. package/dist/contexts/FlowMeta/FlowMetaProvider.js.map +1 -1
  168. package/dist/contexts/Theme/ThemeProvider.d.ts +19 -39
  169. package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
  170. package/dist/contexts/Theme/ThemeProvider.js +76 -38
  171. package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
  172. package/dist/contexts/ThunderID/ThunderIDContext.d.ts +1 -2
  173. package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
  174. package/dist/contexts/ThunderID/ThunderIDContext.js +0 -1
  175. package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
  176. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  177. package/dist/contexts/ThunderID/ThunderIDProvider.js +1 -4
  178. package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  179. package/dist/hooks/useOAuthCallback.d.ts.map +1 -0
  180. package/dist/hooks/{v2/useOAuthCallback.js → useOAuthCallback.js} +1 -1
  181. package/dist/hooks/useOAuthCallback.js.map +1 -0
  182. package/dist/index.d.ts +3 -9
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.js +28 -35
  185. package/dist/utils/buildThemeConfigFromFlowMeta.d.ts.map +1 -0
  186. package/dist/utils/{v2/buildThemeConfigFromFlowMeta.js → buildThemeConfigFromFlowMeta.js} +1 -1
  187. package/dist/utils/buildThemeConfigFromFlowMeta.js.map +1 -0
  188. package/dist/utils/{v2/flowTransformer.d.ts → flowTransformer.d.ts} +3 -3
  189. package/dist/utils/flowTransformer.d.ts.map +1 -0
  190. package/dist/utils/{v2/flowTransformer.js → flowTransformer.js} +1 -1
  191. package/dist/utils/flowTransformer.js.map +1 -0
  192. package/dist/utils/{v2/getAuthComponentHeadings.d.ts → getAuthComponentHeadings.d.ts} +1 -1
  193. package/dist/utils/getAuthComponentHeadings.d.ts.map +1 -0
  194. package/dist/utils/{v2/getAuthComponentHeadings.js → getAuthComponentHeadings.js} +1 -1
  195. package/dist/utils/getAuthComponentHeadings.js.map +1 -0
  196. package/dist/utils/passkey.d.ts.map +1 -0
  197. package/dist/utils/{v2/passkey.js → passkey.js} +1 -1
  198. package/dist/utils/passkey.js.map +1 -0
  199. package/dist/utils/{v2/resolveTranslationsInArray.d.ts → resolveTranslationsInArray.d.ts} +1 -1
  200. package/dist/utils/resolveTranslationsInArray.d.ts.map +1 -0
  201. package/dist/utils/{v2/resolveTranslationsInArray.js → resolveTranslationsInArray.js} +1 -1
  202. package/dist/utils/resolveTranslationsInArray.js.map +1 -0
  203. package/dist/utils/{v2/resolveTranslationsInObject.d.ts → resolveTranslationsInObject.d.ts} +1 -1
  204. package/dist/utils/resolveTranslationsInObject.d.ts.map +1 -0
  205. package/dist/utils/{v2/resolveTranslationsInObject.js → resolveTranslationsInObject.js} +1 -1
  206. package/dist/utils/resolveTranslationsInObject.js.map +1 -0
  207. package/package.json +10 -10
  208. package/dist/cjs/components/adapters/CheckboxInput.cjs +0 -30
  209. package/dist/cjs/components/adapters/CheckboxInput.cjs.map +0 -1
  210. package/dist/cjs/components/adapters/DateInput.cjs +0 -30
  211. package/dist/cjs/components/adapters/DateInput.cjs.map +0 -1
  212. package/dist/cjs/components/adapters/DividerComponent.cjs +0 -24
  213. package/dist/cjs/components/adapters/DividerComponent.cjs.map +0 -1
  214. package/dist/cjs/components/adapters/EmailInput.cjs +0 -30
  215. package/dist/cjs/components/adapters/EmailInput.cjs.map +0 -1
  216. package/dist/cjs/components/adapters/FormContainer.cjs +0 -36
  217. package/dist/cjs/components/adapters/FormContainer.cjs.map +0 -1
  218. package/dist/cjs/components/adapters/NumberInput.cjs +0 -30
  219. package/dist/cjs/components/adapters/NumberInput.cjs.map +0 -1
  220. package/dist/cjs/components/adapters/PasswordInput.cjs +0 -52
  221. package/dist/cjs/components/adapters/PasswordInput.cjs.map +0 -1
  222. package/dist/cjs/components/adapters/SelectInput.cjs +0 -36
  223. package/dist/cjs/components/adapters/SelectInput.cjs.map +0 -1
  224. package/dist/cjs/components/adapters/SubmitButton.cjs +0 -61
  225. package/dist/cjs/components/adapters/SubmitButton.cjs.map +0 -1
  226. package/dist/cjs/components/adapters/TelephoneInput.cjs +0 -32
  227. package/dist/cjs/components/adapters/TelephoneInput.cjs.map +0 -1
  228. package/dist/cjs/components/adapters/TextInput.cjs +0 -30
  229. package/dist/cjs/components/adapters/TextInput.cjs.map +0 -1
  230. package/dist/cjs/components/adapters/Typography.cjs +0 -60
  231. package/dist/cjs/components/adapters/Typography.cjs.map +0 -1
  232. package/dist/cjs/components/presentation/auth/AcceptInvite/v2/AcceptInvite.cjs.map +0 -1
  233. package/dist/cjs/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.cjs.map +0 -1
  234. package/dist/cjs/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.cjs.map +0 -1
  235. package/dist/cjs/components/presentation/auth/InviteUser/v2/BaseInviteUser.cjs.map +0 -1
  236. package/dist/cjs/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.cjs.map +0 -1
  237. package/dist/cjs/components/presentation/auth/InviteUser/v2/InviteUser.cjs.map +0 -1
  238. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.cjs.map +0 -1
  239. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.cjs.map +0 -1
  240. package/dist/cjs/components/presentation/auth/Recovery/v1/BaseRecovery.cjs +0 -293
  241. package/dist/cjs/components/presentation/auth/Recovery/v1/BaseRecovery.cjs.map +0 -1
  242. package/dist/cjs/components/presentation/auth/Recovery/v1/Recovery.cjs +0 -43
  243. package/dist/cjs/components/presentation/auth/Recovery/v1/Recovery.cjs.map +0 -1
  244. package/dist/cjs/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.cjs +0 -163
  245. package/dist/cjs/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.cjs.map +0 -1
  246. package/dist/cjs/components/presentation/auth/Recovery/v2/BaseRecovery.cjs +0 -378
  247. package/dist/cjs/components/presentation/auth/Recovery/v2/BaseRecovery.cjs.map +0 -1
  248. package/dist/cjs/components/presentation/auth/Recovery/v2/Recovery.cjs +0 -78
  249. package/dist/cjs/components/presentation/auth/Recovery/v2/Recovery.cjs.map +0 -1
  250. package/dist/cjs/components/presentation/auth/SignIn/v1/BaseSignIn.cjs +0 -734
  251. package/dist/cjs/components/presentation/auth/SignIn/v1/BaseSignIn.cjs.map +0 -1
  252. package/dist/cjs/components/presentation/auth/SignIn/v1/options/EmailOtp.cjs +0 -68
  253. package/dist/cjs/components/presentation/auth/SignIn/v1/options/EmailOtp.cjs.map +0 -1
  254. package/dist/cjs/components/presentation/auth/SignIn/v1/options/IdentifierFirst.cjs +0 -59
  255. package/dist/cjs/components/presentation/auth/SignIn/v1/options/IdentifierFirst.cjs.map +0 -1
  256. package/dist/cjs/components/presentation/auth/SignIn/v1/options/MultiOptionButton.cjs +0 -139
  257. package/dist/cjs/components/presentation/auth/SignIn/v1/options/MultiOptionButton.cjs.map +0 -1
  258. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.cjs +0 -147
  259. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.cjs.map +0 -1
  260. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SmsOtp.cjs +0 -68
  261. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SmsOtp.cjs.map +0 -1
  262. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SocialButton.cjs +0 -38
  263. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SocialButton.cjs.map +0 -1
  264. package/dist/cjs/components/presentation/auth/SignIn/v1/options/Totp.cjs +0 -68
  265. package/dist/cjs/components/presentation/auth/SignIn/v1/options/Totp.cjs.map +0 -1
  266. package/dist/cjs/components/presentation/auth/SignIn/v1/options/UsernamePassword.cjs +0 -60
  267. package/dist/cjs/components/presentation/auth/SignIn/v1/options/UsernamePassword.cjs.map +0 -1
  268. package/dist/cjs/components/presentation/auth/SignIn/v2/BaseSignIn.cjs +0 -330
  269. package/dist/cjs/components/presentation/auth/SignIn/v2/BaseSignIn.cjs.map +0 -1
  270. package/dist/cjs/components/presentation/auth/SignIn/v2/SignIn.cjs +0 -560
  271. package/dist/cjs/components/presentation/auth/SignIn/v2/SignIn.cjs.map +0 -1
  272. package/dist/cjs/components/presentation/auth/SignUp/v1/BaseSignUp.cjs +0 -451
  273. package/dist/cjs/components/presentation/auth/SignUp/v1/BaseSignUp.cjs.map +0 -1
  274. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUp.cjs +0 -54
  275. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUp.cjs.map +0 -1
  276. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUpOptionFactory.cjs +0 -164
  277. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUpOptionFactory.cjs.map +0 -1
  278. package/dist/cjs/components/presentation/auth/SignUp/v2/BaseSignUp.cjs +0 -679
  279. package/dist/cjs/components/presentation/auth/SignUp/v2/BaseSignUp.cjs.map +0 -1
  280. package/dist/cjs/components/presentation/auth/SignUp/v2/SignUp.cjs +0 -80
  281. package/dist/cjs/components/presentation/auth/SignUp/v2/SignUp.cjs.map +0 -1
  282. package/dist/cjs/contexts/Theme/v1/ThemeProvider.cjs +0 -190
  283. package/dist/cjs/contexts/Theme/v1/ThemeProvider.cjs.map +0 -1
  284. package/dist/cjs/contexts/Theme/v2/ThemeProvider.cjs +0 -108
  285. package/dist/cjs/contexts/Theme/v2/ThemeProvider.cjs.map +0 -1
  286. package/dist/cjs/hooks/v2/useOAuthCallback.cjs.map +0 -1
  287. package/dist/cjs/utils/v2/buildThemeConfigFromFlowMeta.cjs.map +0 -1
  288. package/dist/cjs/utils/v2/flowTransformer.cjs.map +0 -1
  289. package/dist/cjs/utils/v2/getAuthComponentHeadings.cjs.map +0 -1
  290. package/dist/cjs/utils/v2/passkey.cjs.map +0 -1
  291. package/dist/cjs/utils/v2/resolveTranslationsInArray.cjs.map +0 -1
  292. package/dist/cjs/utils/v2/resolveTranslationsInObject.cjs.map +0 -1
  293. package/dist/components/adapters/CheckboxInput.d.ts +0 -25
  294. package/dist/components/adapters/CheckboxInput.d.ts.map +0 -1
  295. package/dist/components/adapters/CheckboxInput.js +0 -28
  296. package/dist/components/adapters/CheckboxInput.js.map +0 -1
  297. package/dist/components/adapters/DateInput.d.ts +0 -25
  298. package/dist/components/adapters/DateInput.d.ts.map +0 -1
  299. package/dist/components/adapters/DateInput.js +0 -28
  300. package/dist/components/adapters/DateInput.js.map +0 -1
  301. package/dist/components/adapters/DividerComponent.d.ts +0 -25
  302. package/dist/components/adapters/DividerComponent.d.ts.map +0 -1
  303. package/dist/components/adapters/DividerComponent.js +0 -22
  304. package/dist/components/adapters/DividerComponent.js.map +0 -1
  305. package/dist/components/adapters/EmailInput.d.ts +0 -25
  306. package/dist/components/adapters/EmailInput.d.ts.map +0 -1
  307. package/dist/components/adapters/EmailInput.js +0 -28
  308. package/dist/components/adapters/EmailInput.js.map +0 -1
  309. package/dist/components/adapters/FormContainer.d.ts +0 -25
  310. package/dist/components/adapters/FormContainer.d.ts.map +0 -1
  311. package/dist/components/adapters/FormContainer.js +0 -34
  312. package/dist/components/adapters/FormContainer.js.map +0 -1
  313. package/dist/components/adapters/NumberInput.d.ts +0 -25
  314. package/dist/components/adapters/NumberInput.d.ts.map +0 -1
  315. package/dist/components/adapters/NumberInput.js +0 -28
  316. package/dist/components/adapters/NumberInput.js.map +0 -1
  317. package/dist/components/adapters/PasswordInput.d.ts +0 -25
  318. package/dist/components/adapters/PasswordInput.d.ts.map +0 -1
  319. package/dist/components/adapters/PasswordInput.js +0 -50
  320. package/dist/components/adapters/PasswordInput.js.map +0 -1
  321. package/dist/components/adapters/SelectInput.d.ts +0 -25
  322. package/dist/components/adapters/SelectInput.d.ts.map +0 -1
  323. package/dist/components/adapters/SelectInput.js +0 -34
  324. package/dist/components/adapters/SelectInput.js.map +0 -1
  325. package/dist/components/adapters/SocialButton.d.ts +0 -25
  326. package/dist/components/adapters/SocialButton.d.ts.map +0 -1
  327. package/dist/components/adapters/SubmitButton.d.ts +0 -25
  328. package/dist/components/adapters/SubmitButton.d.ts.map +0 -1
  329. package/dist/components/adapters/SubmitButton.js +0 -59
  330. package/dist/components/adapters/SubmitButton.js.map +0 -1
  331. package/dist/components/adapters/TelephoneInput.d.ts +0 -25
  332. package/dist/components/adapters/TelephoneInput.d.ts.map +0 -1
  333. package/dist/components/adapters/TelephoneInput.js +0 -30
  334. package/dist/components/adapters/TelephoneInput.js.map +0 -1
  335. package/dist/components/adapters/TextInput.d.ts +0 -25
  336. package/dist/components/adapters/TextInput.d.ts.map +0 -1
  337. package/dist/components/adapters/TextInput.js +0 -28
  338. package/dist/components/adapters/TextInput.js.map +0 -1
  339. package/dist/components/adapters/Typography.d.ts +0 -25
  340. package/dist/components/adapters/Typography.d.ts.map +0 -1
  341. package/dist/components/adapters/Typography.js +0 -58
  342. package/dist/components/adapters/Typography.js.map +0 -1
  343. package/dist/components/presentation/auth/AcceptInvite/v2/AcceptInvite.d.ts.map +0 -1
  344. package/dist/components/presentation/auth/AcceptInvite/v2/AcceptInvite.js.map +0 -1
  345. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.d.ts.map +0 -1
  346. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.js.map +0 -1
  347. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.d.ts.map +0 -1
  348. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.js.map +0 -1
  349. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.d.ts.map +0 -1
  350. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.js.map +0 -1
  351. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.d.ts.map +0 -1
  352. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.js.map +0 -1
  353. package/dist/components/presentation/auth/InviteUser/v2/InviteUser.d.ts.map +0 -1
  354. package/dist/components/presentation/auth/InviteUser/v2/InviteUser.js.map +0 -1
  355. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.d.ts.map +0 -1
  356. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.js.map +0 -1
  357. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.d.ts.map +0 -1
  358. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.js.map +0 -1
  359. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.d.ts +0 -74
  360. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.d.ts.map +0 -1
  361. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.js +0 -288
  362. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.js.map +0 -1
  363. package/dist/components/presentation/auth/Recovery/v1/Recovery.d.ts +0 -26
  364. package/dist/components/presentation/auth/Recovery/v1/Recovery.d.ts.map +0 -1
  365. package/dist/components/presentation/auth/Recovery/v1/Recovery.js +0 -40
  366. package/dist/components/presentation/auth/Recovery/v1/Recovery.js.map +0 -1
  367. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.d.ts +0 -46
  368. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.d.ts.map +0 -1
  369. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.js +0 -160
  370. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.js.map +0 -1
  371. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.d.ts +0 -83
  372. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.d.ts.map +0 -1
  373. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.js +0 -373
  374. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.js.map +0 -1
  375. package/dist/components/presentation/auth/Recovery/v2/Recovery.d.ts +0 -56
  376. package/dist/components/presentation/auth/Recovery/v2/Recovery.d.ts.map +0 -1
  377. package/dist/components/presentation/auth/Recovery/v2/Recovery.js +0 -74
  378. package/dist/components/presentation/auth/Recovery/v2/Recovery.js.map +0 -1
  379. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.d.ts +0 -131
  380. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.d.ts.map +0 -1
  381. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.js +0 -729
  382. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.js.map +0 -1
  383. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.d.ts +0 -26
  384. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.d.ts.map +0 -1
  385. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.js +0 -64
  386. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.js.map +0 -1
  387. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.d.ts +0 -26
  388. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.d.ts.map +0 -1
  389. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.js +0 -55
  390. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.js.map +0 -1
  391. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.d.ts +0 -27
  392. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.d.ts.map +0 -1
  393. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.js +0 -136
  394. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.js.map +0 -1
  395. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.d.ts +0 -77
  396. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.d.ts.map +0 -1
  397. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.js +0 -143
  398. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.js.map +0 -1
  399. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.d.ts +0 -26
  400. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.d.ts.map +0 -1
  401. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.js +0 -64
  402. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.js.map +0 -1
  403. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.d.ts +0 -26
  404. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.d.ts.map +0 -1
  405. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.js +0 -36
  406. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.js.map +0 -1
  407. package/dist/components/presentation/auth/SignIn/v1/options/Totp.d.ts +0 -26
  408. package/dist/components/presentation/auth/SignIn/v1/options/Totp.d.ts.map +0 -1
  409. package/dist/components/presentation/auth/SignIn/v1/options/Totp.js +0 -64
  410. package/dist/components/presentation/auth/SignIn/v1/options/Totp.js.map +0 -1
  411. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.d.ts +0 -26
  412. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.d.ts.map +0 -1
  413. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.js +0 -56
  414. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.js.map +0 -1
  415. package/dist/components/presentation/auth/SignIn/v1/types.d.ts +0 -125
  416. package/dist/components/presentation/auth/SignIn/v1/types.d.ts.map +0 -1
  417. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.d.ts +0 -222
  418. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.d.ts.map +0 -1
  419. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.js +0 -325
  420. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.js.map +0 -1
  421. package/dist/components/presentation/auth/SignIn/v2/SignIn.d.ts +0 -165
  422. package/dist/components/presentation/auth/SignIn/v2/SignIn.d.ts.map +0 -1
  423. package/dist/components/presentation/auth/SignIn/v2/SignIn.js +0 -556
  424. package/dist/components/presentation/auth/SignIn/v2/SignIn.js.map +0 -1
  425. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.d.ts +0 -174
  426. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.d.ts.map +0 -1
  427. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.js +0 -446
  428. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.js.map +0 -1
  429. package/dist/components/presentation/auth/SignUp/v1/SignUp.d.ts +0 -39
  430. package/dist/components/presentation/auth/SignUp/v1/SignUp.d.ts.map +0 -1
  431. package/dist/components/presentation/auth/SignUp/v1/SignUp.js +0 -51
  432. package/dist/components/presentation/auth/SignUp/v1/SignUp.js.map +0 -1
  433. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.d.ts +0 -46
  434. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.d.ts.map +0 -1
  435. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.js +0 -160
  436. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.js.map +0 -1
  437. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.d.ts +0 -186
  438. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.d.ts.map +0 -1
  439. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.js +0 -674
  440. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.js.map +0 -1
  441. package/dist/components/presentation/auth/SignUp/v2/SignUp.d.ts +0 -39
  442. package/dist/components/presentation/auth/SignUp/v2/SignUp.d.ts.map +0 -1
  443. package/dist/components/presentation/auth/SignUp/v2/SignUp.js +0 -77
  444. package/dist/components/presentation/auth/SignUp/v2/SignUp.js.map +0 -1
  445. package/dist/contexts/Theme/v1/ThemeProvider.d.ts +0 -89
  446. package/dist/contexts/Theme/v1/ThemeProvider.d.ts.map +0 -1
  447. package/dist/contexts/Theme/v1/ThemeProvider.js +0 -186
  448. package/dist/contexts/Theme/v1/ThemeProvider.js.map +0 -1
  449. package/dist/contexts/Theme/v2/ThemeProvider.d.ts +0 -58
  450. package/dist/contexts/Theme/v2/ThemeProvider.d.ts.map +0 -1
  451. package/dist/contexts/Theme/v2/ThemeProvider.js +0 -104
  452. package/dist/contexts/Theme/v2/ThemeProvider.js.map +0 -1
  453. package/dist/hooks/v2/useOAuthCallback.d.ts.map +0 -1
  454. package/dist/hooks/v2/useOAuthCallback.js.map +0 -1
  455. package/dist/utils/v2/buildThemeConfigFromFlowMeta.d.ts.map +0 -1
  456. package/dist/utils/v2/buildThemeConfigFromFlowMeta.js.map +0 -1
  457. package/dist/utils/v2/flowTransformer.d.ts.map +0 -1
  458. package/dist/utils/v2/flowTransformer.js.map +0 -1
  459. package/dist/utils/v2/getAuthComponentHeadings.d.ts.map +0 -1
  460. package/dist/utils/v2/getAuthComponentHeadings.js.map +0 -1
  461. package/dist/utils/v2/passkey.d.ts.map +0 -1
  462. package/dist/utils/v2/passkey.js.map +0 -1
  463. package/dist/utils/v2/resolveTranslationsInArray.d.ts.map +0 -1
  464. package/dist/utils/v2/resolveTranslationsInArray.js.map +0 -1
  465. package/dist/utils/v2/resolveTranslationsInObject.d.ts.map +0 -1
  466. package/dist/utils/v2/resolveTranslationsInObject.js.map +0 -1
  467. /package/dist/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.d.ts → AcceptInvite.d.ts} +0 -0
  468. /package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.d.ts → BaseAcceptInvite.styles.d.ts} +0 -0
  469. /package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.d.ts → BaseInviteUser.styles.d.ts} +0 -0
  470. /package/dist/components/presentation/auth/InviteUser/{v2/InviteUser.d.ts → InviteUser.d.ts} +0 -0
  471. /package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.d.ts → OrganizationUnitPicker.d.ts} +0 -0
  472. /package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.styles.d.ts → OrganizationUnitPicker.styles.d.ts} +0 -0
  473. /package/dist/hooks/{v2/useOAuthCallback.d.ts → useOAuthCallback.d.ts} +0 -0
  474. /package/dist/utils/{v2/buildThemeConfigFromFlowMeta.d.ts → buildThemeConfigFromFlowMeta.d.ts} +0 -0
  475. /package/dist/utils/{v2/passkey.d.ts → passkey.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseSignUp.cjs","names":["logger: ReturnType<typeof createPackageComponentLogger>","BaseSignUpContent: FC<BaseSignUpProps>","useTheme","customRenderers: ComponentRendererMap","ComponentRendererContext","useTranslation","useFlow","useThunderID","styles: any","useStyles","challengeTokenRef: any","initializationAttemptedRef: any","passkeyProcessedRef: any","tempData: any","storageManager: any","handleError: any","errorMessage: string","extractErrorMessage","normalizeFlowResponseLocal: any","normalizeFlowResponse","extractFormFields: any","fields: FormField[]","EmbeddedFlowComponentType","fieldName: any","useForm","setupFormFields: any","fields: any","initialValues: Record<string, string>","data: any","components: unknown[] | undefined","EmbeddedSignUpFlowStatusV2","normalized: any","EmbeddedSignUpFlowTypeV2","redirectUrl: any","popup: any","hasProcessedCallback: any","popupMonitor: ReturnType<typeof setInterval> | null","messageHandler: ((event: MessageEvent) => Promise<void>) | null","expectedOrigin: any","payload: EmbeddedSignUpFlowRequestV2","continueResponse: any","normalizedContinueResponse: any","popupUrl: any","url: any","code: any","state: any","filteredInputs: Record<string, any>","response: any","effectiveExecutionIdForPasskey: any","passkeyResponse: any","handlePasskeyRegistration","passkeyResponseObj: any","inputs: any","processedResponse: any","containerClasses: any","inputClasses: any","buttonClasses: any","errorClasses: any","messageClasses: any","renderComponents: any","renderSignUpComponents","urlParams: any","payload: any","url: URL","result: any","CardPrimitive","Spinner","AlertPrimitive","getAuthComponentHeadings","Typography","BaseSignUp: FC<BaseSignUpProps>","content: ReactElement","Logo","FlowProvider","ComponentPreferencesContext"],"sources":["../../../../../../../src/components/presentation/auth/SignUp/v2/BaseSignUp.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {cx} from '@emotion/css';\nimport {\n EmbeddedSignUpFlowRequestV2,\n EmbeddedSignUpFlowResponseV2,\n EmbeddedSignUpFlowStatusV2,\n EmbeddedSignUpFlowTypeV2,\n withVendorCSSClassPrefix,\n EmbeddedFlowComponentTypeV2 as EmbeddedFlowComponentType,\n createPackageComponentLogger,\n Preferences,\n} from '@thunderid/browser';\nimport {FC, ReactElement, ReactNode, useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport ComponentRendererContext, {\n ComponentRendererMap,\n} from '../../../../../contexts/ComponentRenderer/ComponentRendererContext';\nimport FlowProvider from '../../../../../contexts/Flow/FlowProvider';\nimport useFlow from '../../../../../contexts/Flow/useFlow';\nimport ComponentPreferencesContext from '../../../../../contexts/I18n/ComponentPreferencesContext';\nimport useTheme from '../../../../../contexts/Theme/useTheme';\nimport useThunderID from '../../../../../contexts/ThunderID/useThunderID';\nimport {useForm, FormField} from '../../../../../hooks/useForm';\nimport useTranslation from '../../../../../hooks/useTranslation';\nimport {normalizeFlowResponse, extractErrorMessage} from '../../../../../utils/v2/flowTransformer';\nimport getAuthComponentHeadings from '../../../../../utils/v2/getAuthComponentHeadings';\nimport {handlePasskeyRegistration} from '../../../../../utils/v2/passkey';\nimport AlertPrimitive from '../../../../primitives/Alert/Alert';\n// eslint-disable-next-line import/no-named-as-default\nimport CardPrimitive, {CardProps} from '../../../../primitives/Card/Card';\nimport Logo from '../../../../primitives/Logo/Logo';\nimport Spinner from '../../../../primitives/Spinner/Spinner';\nimport Typography from '../../../../primitives/Typography/Typography';\nimport {renderSignUpComponents} from '../../AuthOptionFactory';\nimport useStyles from '../BaseSignUp.styles';\n\nconst logger: ReturnType<typeof createPackageComponentLogger> = createPackageComponentLogger(\n '@thunderid/react',\n 'BaseSignUp',\n);\n\n/**\n * State for tracking passkey registration\n */\ninterface PasskeyState {\n actionId: string | null;\n creationOptions: string | null;\n error: Error | null;\n executionId: string | null;\n isActive: boolean;\n}\n\n/**\n * Render props for custom UI rendering\n */\nexport interface BaseSignUpRenderProps {\n /**\n * Flow components\n */\n components: any[];\n\n /**\n * API error (if any)\n */\n error?: Error | null;\n\n /**\n * Field validation errors\n */\n fieldErrors: Record<string, string>;\n\n /**\n * Function to handle input changes\n */\n handleInputChange: (name: string, value: string) => void;\n\n /**\n * Function to handle form submission\n */\n handleSubmit: (component: any, data?: Record<string, any>) => Promise<void>;\n\n /**\n * Loading state\n */\n isLoading: boolean;\n\n /**\n * Whether the form is valid\n */\n isValid: boolean;\n\n /**\n * Flow messages\n */\n messages: {message: string; type: string}[];\n\n /**\n * Flow subtitle\n */\n subtitle: string;\n\n /**\n * Flow title\n */\n title: string;\n\n /**\n * Touched fields\n */\n touched: Record<string, boolean>;\n\n /**\n * Function to validate the form\n */\n validateForm: () => {fieldErrors: Record<string, string>; isValid: boolean};\n\n /**\n * Form values\n */\n values: Record<string, string>;\n}\n\n/**\n * Props for the BaseSignUp component.\n */\nexport interface BaseSignUpProps {\n /**\n * URL to redirect after successful sign-up.\n */\n afterSignUpUrl?: string;\n\n /**\n * Custom CSS class name for the submit button.\n */\n buttonClassName?: string;\n\n /**\n * Render props function for custom UI\n */\n children?: (props: BaseSignUpRenderProps) => ReactNode;\n\n /**\n * Custom CSS class name for the form container.\n */\n className?: string;\n\n /**\n * Error object to display\n */\n error?: Error | null;\n\n /**\n * Custom CSS class name for error messages.\n */\n errorClassName?: string;\n\n /**\n * Custom CSS class name for form inputs.\n */\n inputClassName?: string;\n\n isInitialized?: boolean;\n\n /**\n * Custom CSS class name for info messages.\n */\n messageClassName?: string;\n\n /**\n * Callback function called when the sign-up flow completes and requires redirection.\n * This allows platform-specific handling of redirects (e.g., Next.js router.push).\n * @param response - The response from the sign-up flow containing the redirect URL, etc.\n */\n onComplete?: (response: EmbeddedSignUpFlowResponseV2) => void;\n\n /**\n * Callback function called when sign-up fails.\n * @param error - The error that occurred during sign-up.\n */\n onError?: (error: Error) => void;\n\n /**\n * Callback function called when sign-up flow status changes.\n * @param response - The current sign-up response.\n */\n onFlowChange?: (response: EmbeddedSignUpFlowResponseV2) => void;\n\n /**\n * Function to initialize sign-up flow.\n * @returns Promise resolving to the initial sign-up response.\n */\n onInitialize?: (payload?: EmbeddedSignUpFlowRequestV2) => Promise<EmbeddedSignUpFlowResponseV2>;\n\n /**\n * Function to handle sign-up steps.\n * @param payload - The sign-up payload.\n * @returns Promise resolving to the sign-up response.\n */\n onSubmit?: (payload: EmbeddedSignUpFlowRequestV2) => Promise<EmbeddedSignUpFlowResponseV2>;\n /**\n * Component-level preferences to override global i18n and theme settings.\n * Preferences are deep-merged with global ones, with component preferences\n * taking precedence. Affects this component and all its descendants.\n */\n preferences?: Preferences;\n\n /**\n * Whether to redirect after sign-up.\n */\n shouldRedirectAfterSignUp?: boolean;\n\n /**\n * Whether to show the logo.\n */\n showLogo?: boolean;\n\n /**\n * Whether to show the subtitle.\n */\n showSubtitle?: boolean;\n\n /**\n * Whether to show the title.\n */\n showTitle?: boolean;\n\n /**\n * Size variant for the component.\n */\n size?: 'small' | 'medium' | 'large';\n\n /**\n * Theme variant for the component.\n */\n variant?: CardProps['variant'];\n}\n\n/**\n * Internal component that consumes FlowContext and renders the sign-up UI.\n */\nconst BaseSignUpContent: FC<BaseSignUpProps> = ({\n afterSignUpUrl,\n onInitialize,\n onSubmit,\n onError,\n onFlowChange,\n onComplete,\n error: externalError,\n className = '',\n inputClassName = '',\n buttonClassName = '',\n errorClassName = '',\n messageClassName = '',\n size = 'medium',\n variant = 'outlined',\n isInitialized,\n children,\n showTitle = true,\n showSubtitle = true,\n}: BaseSignUpProps): ReactElement => {\n const {theme, colorScheme} = useTheme();\n const customRenderers: ComponentRendererMap = useContext(ComponentRendererContext);\n const {t} = useTranslation();\n const {subtitle: flowSubtitle, title: flowTitle, messages: flowMessages, addMessage, clearMessages} = useFlow();\n const {meta, isInitialized: isSdkInitialized, getStorageManager} = useThunderID();\n const styles: any = useStyles(theme, colorScheme);\n\n const [isLoading, setIsLoading] = useState(false);\n const [isFlowInitialized, setIsFlowInitialized] = useState(false);\n const [currentFlow, setCurrentFlow] = useState<EmbeddedSignUpFlowResponseV2 | null>(null);\n const [apiError, setApiError] = useState<Error | null>(null);\n const [isStorageReady, setIsStorageReady] = useState(false);\n const [passkeyState, setPasskeyState] = useState<PasskeyState>({\n actionId: null,\n creationOptions: null,\n error: null,\n executionId: null,\n isActive: false,\n });\n const challengeTokenRef: any = useRef<string | null>(null);\n\n const initializationAttemptedRef: any = useRef(false);\n const passkeyProcessedRef: any = useRef(false);\n\n /**\n * Restore any challenge token persisted before an OAuth redirect.\n */\n useEffect(() => {\n if (!isSdkInitialized) return;\n\n (async (): Promise<void> => {\n try {\n const storageManager: any = await getStorageManager();\n const tempData: any = await storageManager?.getTemporaryData();\n if (tempData?.challengeToken) {\n challengeTokenRef.current = tempData.challengeToken as string;\n }\n } catch {\n // StorageManager unavailable — continue without persisted token\n } finally {\n setIsStorageReady(true);\n }\n })();\n }, [isSdkInitialized]);\n\n /**\n * Updates challengeTokenRef immediately (stale-closure safe) and persists via\n * the provider's StorageManager so the token survives OAuth redirects.\n */\n const setChallengeToken = async (challengeToken: string | null): Promise<void> => {\n challengeTokenRef.current = challengeToken;\n try {\n const storageManager: any = await getStorageManager();\n if (storageManager) {\n if (challengeToken) {\n await storageManager.setTemporaryDataParameter('challengeToken', challengeToken);\n } else {\n await storageManager.removeTemporaryDataParameter('challengeToken');\n }\n }\n } catch {\n logger.warn('Failed to persist challenge token in storage.');\n }\n };\n\n /**\n * Handle error responses and extract meaningful error messages\n * Uses the transformer's extractErrorMessage function.\n */\n const handleError: any = useCallback(\n (error: any) => {\n const errorMessage: string = extractErrorMessage(error, t);\n\n // Set the API error state\n setApiError(error instanceof Error ? error : new Error(errorMessage));\n\n // Clear existing messages and add the error message\n clearMessages();\n addMessage({\n message: errorMessage,\n type: 'error',\n });\n },\n [t, addMessage, clearMessages],\n );\n\n /**\n * Normalize flow response to ensure component-driven format\n * Uses normalizeFlowResponse for modern API format responses\n */\n const normalizeFlowResponseLocal: any = useCallback(\n (response: EmbeddedSignUpFlowResponseV2): EmbeddedSignUpFlowResponseV2 => {\n if (response?.data) {\n const {components} = normalizeFlowResponse(\n response,\n t,\n {\n defaultErrorKey: 'components.signUp.errors.generic',\n resolveTranslations: false,\n },\n meta,\n );\n\n return {\n ...response,\n data: {\n ...(response.data as any),\n components,\n },\n } as EmbeddedSignUpFlowResponseV2;\n }\n\n return response;\n },\n [t, children],\n );\n\n /**\n * Extract form fields from flow components\n */\n const extractFormFields: any = useCallback(\n (components: any[]): FormField[] => {\n const fields: FormField[] = [];\n\n const processComponents = (comps: any[]): any => {\n comps.forEach((component: any) => {\n if (\n component.type === EmbeddedFlowComponentType.TextInput ||\n component.type === EmbeddedFlowComponentType.PasswordInput ||\n component.type === EmbeddedFlowComponentType.EmailInput ||\n component.type === EmbeddedFlowComponentType.Select\n ) {\n // Use component.ref (mapped identifier) as the field name instead of component.id\n // This ensures form field names match what the input components use\n const fieldName: any = component.ref || component.id;\n\n fields.push({\n initialValue: '',\n name: fieldName,\n required: component.required || false,\n validator: (value: string) => {\n if (component.required && (!value || value.trim() === '')) {\n return t('validations.required.field.error');\n }\n // Add email validation if it's an email field\n if (\n (component.type === EmbeddedFlowComponentType.EmailInput || component.variant === 'EMAIL') &&\n value &&\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value)\n ) {\n return t('field.email.invalid');\n }\n\n return null;\n },\n });\n }\n\n if (component.components && Array.isArray(component.components)) {\n processComponents(component.components);\n }\n });\n };\n\n processComponents(components);\n return fields;\n },\n [t],\n );\n\n const formFields: any = (currentFlow?.data as any)?.components\n ? extractFormFields((currentFlow!.data as any).components)\n : [];\n\n const form: any = useForm<Record<string, string>>({\n fields: formFields,\n initialValues: {},\n requiredMessage: t('validations.required.field.error'),\n validateOnBlur: true,\n validateOnChange: false,\n });\n\n const {\n values: formValues,\n touched: touchedFields,\n errors: formErrors,\n isValid: isFormValid,\n setValue: setFormValue,\n setTouched: setFormTouched,\n validateForm,\n touchAllFields,\n reset: resetForm,\n } = form;\n\n /**\n * Setup form fields based on the current flow.\n */\n const setupFormFields: any = useCallback(\n (flowResponse: EmbeddedSignUpFlowResponseV2) => {\n const fields: any = extractFormFields((flowResponse.data as any)?.components || []);\n const initialValues: Record<string, string> = {};\n\n fields.forEach((field: any) => {\n initialValues[field.name] = field.initialValue || '';\n });\n\n resetForm();\n\n Object.keys(initialValues).forEach((key: any) => {\n setFormValue(key, initialValues[key]);\n });\n },\n [extractFormFields, resetForm, setFormValue],\n );\n\n /**\n * Determine whether a completed flow finished on a display-only screen.\n * Such a completion must be rendered, not redirected past.\n */\n const isDisplayOnlyCompletion = (response: EmbeddedSignUpFlowResponseV2): boolean => {\n const data: any = response?.data;\n const components: unknown[] | undefined = data?.components ?? data?.meta?.components;\n\n return (\n response?.flowStatus === EmbeddedSignUpFlowStatusV2.Complete &&\n Array.isArray(components) &&\n components.length > 0 &&\n !(response as {assertion?: string})?.assertion &&\n !data?.redirectURL &&\n !(response as any)?.redirectUrl\n );\n };\n\n /**\n * Handle a completed flow. A flow can complete on a display-only screen; in\n * that case render the screen and skip onComplete so the wrapper does not\n * immediately redirect away from it. Otherwise hand off to onComplete.\n */\n const handleFlowCompletion = (response: EmbeddedSignUpFlowResponseV2): void => {\n if (isDisplayOnlyCompletion(response)) {\n const normalized: any = normalizeFlowResponseLocal(response);\n setCurrentFlow(normalized);\n setupFormFields(normalized);\n return;\n }\n\n onComplete?.(response);\n };\n\n /**\n * Handle input value changes.\n * Only updates the value without marking as touched.\n * Touched state is set on blur to avoid premature validation.\n */\n const handleInputChange = (name: string, value: string): void => {\n setFormValue(name, value);\n };\n\n /**\n * Handle input blur event.\n * Marks the field as touched, which triggers validation.\n */\n const handleInputBlur = (name: string): void => {\n setFormTouched(name, true);\n };\n\n /**\n * Check if the response contains a redirection URL and perform the redirect if necessary.\n * @param response - The sign-up response\n * @returns true if a redirect was performed, false otherwise\n */\n const handleRedirectionIfNeeded = (response: EmbeddedSignUpFlowResponseV2): boolean => {\n if (response?.type === EmbeddedSignUpFlowTypeV2.Redirection && (response?.data as any)?.redirectURL) {\n /**\n * Open a popup window to handle redirection prompts for social sign-up\n */\n const redirectUrl: any = (response.data as any).redirectURL;\n const popup: any = window.open(redirectUrl, 'oauth_popup', 'width=500,height=600,scrollbars=yes,resizable=yes');\n\n if (!popup) {\n logger.error('Failed to open popup window');\n return false;\n }\n\n let hasProcessedCallback: any = false; // Prevent multiple processing\n let popupMonitor: ReturnType<typeof setInterval> | null = null;\n let messageHandler: ((event: MessageEvent) => Promise<void>) | null = null;\n\n /**\n * Clean up event listener and popup monitor\n */\n const cleanup = (): void => {\n if (messageHandler) {\n window.removeEventListener('message', messageHandler);\n }\n if (popupMonitor) {\n clearInterval(popupMonitor);\n }\n };\n\n /**\n * Add an event listener to the window to capture the message from the popup\n */\n messageHandler = async function messageEventHandler(event: MessageEvent): Promise<void> {\n /**\n * Check if the message is from our popup window\n */\n if (event.source !== popup) {\n return;\n }\n\n /**\n * Check the origin of the message to ensure it's from a trusted source\n */\n const expectedOrigin: any = afterSignUpUrl ? new URL(afterSignUpUrl).origin : window.location.origin;\n if (event.origin !== expectedOrigin && event.origin !== window.location.origin) {\n return;\n }\n\n const {code, state} = event.data;\n\n if (code && state) {\n hasProcessedCallback = true;\n\n const payload: EmbeddedSignUpFlowRequestV2 = {\n ...(currentFlow?.executionId && {executionId: currentFlow.executionId}),\n inputs: {\n code,\n state,\n },\n ...(challengeTokenRef.current ? {challengeToken: challengeTokenRef.current} : {}),\n };\n\n try {\n const continueResponse: any = await onSubmit!(payload);\n onFlowChange?.(continueResponse);\n\n if (continueResponse.flowStatus === EmbeddedSignUpFlowStatusV2.Error) {\n handleError(continueResponse);\n onError?.(continueResponse);\n } else if (continueResponse.flowStatus === EmbeddedSignUpFlowStatusV2.Complete) {\n handleFlowCompletion(continueResponse as EmbeddedSignUpFlowResponseV2);\n } else if (continueResponse.flowStatus === EmbeddedSignUpFlowStatusV2.Incomplete) {\n const normalizedContinueResponse: any = normalizeFlowResponseLocal(continueResponse);\n setCurrentFlow(normalizedContinueResponse);\n setupFormFields(normalizedContinueResponse);\n\n // Display error from INCOMPLETE response\n if (normalizedContinueResponse?.error) {\n handleError(normalizedContinueResponse);\n }\n }\n\n popup.close();\n cleanup();\n } catch (err) {\n handleError(err);\n onError?.(err as Error);\n popup.close();\n cleanup();\n }\n }\n };\n\n window.addEventListener('message', messageHandler);\n\n /**\n * Monitor popup for closure and URL changes\n */\n popupMonitor = setInterval(async () => {\n try {\n if (popup.closed) {\n cleanup();\n return;\n }\n\n // Skip if we've already processed a callback\n if (hasProcessedCallback) {\n return;\n }\n\n // Try to access popup URL to check for callback\n try {\n const popupUrl: any = popup.location.href;\n\n // Check if we've been redirected to the callback URL\n if (popupUrl && (popupUrl.includes('code=') || popupUrl.includes('error='))) {\n hasProcessedCallback = true; // Set flag to prevent multiple processing\n\n // Parse the URL for OAuth parameters\n const url: any = new URL(popupUrl);\n const code: any = url.searchParams.get('code');\n const state: any = url.searchParams.get('state');\n const error: any = url.searchParams.get('error');\n\n if (error) {\n logger.error('OAuth error:');\n popup.close();\n cleanup();\n return;\n }\n\n if (code && state) {\n const payload: EmbeddedSignUpFlowRequestV2 = {\n ...(currentFlow?.executionId && {executionId: currentFlow.executionId}),\n inputs: {\n code,\n state,\n },\n ...(challengeTokenRef.current ? {challengeToken: challengeTokenRef.current} : {}),\n };\n\n try {\n const continueResponse: any = await onSubmit!(payload);\n onFlowChange?.(continueResponse);\n\n if (continueResponse.flowStatus === EmbeddedSignUpFlowStatusV2.Error) {\n handleError(continueResponse);\n onError?.(continueResponse);\n } else if (continueResponse.flowStatus === EmbeddedSignUpFlowStatusV2.Complete) {\n handleFlowCompletion(continueResponse as EmbeddedSignUpFlowResponseV2);\n } else if (continueResponse.flowStatus === EmbeddedSignUpFlowStatusV2.Incomplete) {\n const normalizedContinueResponse: any = normalizeFlowResponseLocal(continueResponse);\n setCurrentFlow(normalizedContinueResponse);\n setupFormFields(normalizedContinueResponse);\n\n // Display error from INCOMPLETE response\n if (normalizedContinueResponse?.error) {\n handleError(normalizedContinueResponse);\n }\n }\n\n popup.close();\n } catch (err) {\n handleError(err);\n onError?.(err as Error);\n popup.close();\n }\n }\n }\n } catch (e) {\n // Cross-origin error is expected when popup navigates to OAuth provider\n // This is normal and we can ignore it\n }\n } catch (e) {\n logger.error('Error monitoring popup:');\n }\n }, 1000);\n\n return true;\n }\n\n return false;\n };\n\n /**\n * Handle component submission (for buttons outside forms).\n */\n const handleSubmit = async (component: any, data?: Record<string, any>, skipValidation?: boolean): Promise<void> => {\n if (!currentFlow) {\n return;\n }\n\n // Only validate for form submit actions, skip for social/trigger actions\n if (!skipValidation) {\n // Mark all fields as touched before validation\n touchAllFields();\n\n const validation: ReturnType<typeof validateForm> = validateForm();\n\n if (!validation.isValid) {\n return;\n }\n }\n\n setIsLoading(true);\n setApiError(null);\n clearMessages();\n\n try {\n // Filter out empty or undefined input values\n const filteredInputs: Record<string, any> = {};\n if (data) {\n Object.entries(data).forEach(([key, value]: [string, any]) => {\n if (value !== null && value !== undefined && value !== '') {\n filteredInputs[key] = value;\n }\n });\n }\n\n const payload: EmbeddedSignUpFlowRequestV2 = {\n ...(currentFlow.executionId && {executionId: currentFlow.executionId}),\n ...(component.id && {action: component.id}),\n ...(challengeTokenRef.current ? {challengeToken: challengeTokenRef.current} : {}),\n inputs: filteredInputs,\n };\n\n const rawResponse: any = await onSubmit!(payload);\n const response: any = normalizeFlowResponseLocal(rawResponse);\n onFlowChange?.(response);\n\n await setChallengeToken(response.challengeToken ?? null);\n\n if (response.flowStatus === EmbeddedSignUpFlowStatusV2.Error) {\n handleError(response);\n onError?.(new Error(extractErrorMessage(response, t)));\n return;\n }\n\n if (response.flowStatus === EmbeddedSignUpFlowStatusV2.Complete) {\n handleFlowCompletion(response as EmbeddedSignUpFlowResponseV2);\n return;\n }\n\n if (response.flowStatus === EmbeddedSignUpFlowStatusV2.Incomplete) {\n if (handleRedirectionIfNeeded(response)) {\n return;\n }\n\n if (response.data?.additionalData?.passkeyCreationOptions) {\n const {passkeyCreationOptions}: any = response.data.additionalData;\n const effectiveExecutionIdForPasskey: any = response.executionId ?? currentFlow?.executionId;\n\n // Reset passkey processed ref to allow processing\n passkeyProcessedRef.current = false;\n\n // Set passkey state to trigger the passkey\n setPasskeyState({\n actionId: component.id || 'submit',\n creationOptions: passkeyCreationOptions,\n error: null,\n executionId: effectiveExecutionIdForPasskey,\n isActive: true,\n });\n setIsLoading(false);\n return;\n }\n setCurrentFlow(response);\n setupFormFields(response);\n\n // Display error from INCOMPLETE response\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (response?.error) {\n handleError(response);\n }\n }\n } catch (err) {\n handleError(err);\n onError?.(err as Error);\n } finally {\n setIsLoading(false);\n }\n };\n\n /**\n * Handle passkey registration when passkey state becomes active.\n * This effect auto-triggers the browser passkey popup and submits the result.\n */\n useEffect(() => {\n if (!passkeyState.isActive || !passkeyState.creationOptions || !passkeyState.executionId) {\n return;\n }\n\n // Prevent re-processing\n if (passkeyProcessedRef.current) {\n return;\n }\n passkeyProcessedRef.current = true;\n\n const performPasskeyRegistration = async (): Promise<void> => {\n const passkeyResponse: any = await handlePasskeyRegistration(passkeyState.creationOptions!);\n const passkeyResponseObj: any = JSON.parse(passkeyResponse);\n\n const inputs: any = {\n attestationObject: passkeyResponseObj.response.attestationObject,\n clientDataJSON: passkeyResponseObj.response.clientDataJSON,\n credentialId: passkeyResponseObj.id,\n };\n\n // After successful registration, submit the result to the server\n const payload: EmbeddedSignUpFlowRequestV2 = {\n executionId: passkeyState.executionId ?? undefined,\n inputs,\n ...(challengeTokenRef.current ? {challengeToken: challengeTokenRef.current} : {}),\n } as any;\n\n const nextResponse: any = await onSubmit!(payload);\n const processedResponse: any = normalizeFlowResponseLocal(nextResponse);\n onFlowChange?.(processedResponse);\n\n if (processedResponse.flowStatus === EmbeddedSignUpFlowStatusV2.Complete) {\n handleFlowCompletion(processedResponse as EmbeddedSignUpFlowResponseV2);\n } else {\n setCurrentFlow(processedResponse);\n setupFormFields(processedResponse);\n }\n };\n\n performPasskeyRegistration()\n .then(() => {\n setPasskeyState({actionId: null, creationOptions: null, error: null, executionId: null, isActive: false});\n })\n .catch((error: any) => {\n setPasskeyState((prev: any) => ({...prev, error: error as Error, isActive: false}));\n handleError(error);\n onError?.(error as Error);\n });\n }, [passkeyState.isActive, passkeyState.creationOptions, passkeyState.executionId]);\n\n const containerClasses: any = cx(\n [\n withVendorCSSClassPrefix('signup'),\n withVendorCSSClassPrefix(`signup--${size}`),\n withVendorCSSClassPrefix(`signup--${variant}`),\n ],\n className,\n );\n\n const inputClasses: any = cx(\n [\n withVendorCSSClassPrefix('signup__input'),\n size === 'small' && withVendorCSSClassPrefix('signup__input--small'),\n size === 'large' && withVendorCSSClassPrefix('signup__input--large'),\n ],\n inputClassName,\n );\n\n const buttonClasses: any = cx(\n [\n withVendorCSSClassPrefix('signup__button'),\n size === 'small' && withVendorCSSClassPrefix('signup__button--small'),\n size === 'large' && withVendorCSSClassPrefix('signup__button--large'),\n ],\n buttonClassName,\n );\n\n const errorClasses: any = cx([withVendorCSSClassPrefix('signup__error')], errorClassName);\n\n const messageClasses: any = cx([withVendorCSSClassPrefix('signup__messages')], messageClassName);\n\n /**\n * Render form components based on flow data using the factory\n */\n const renderComponents: any = useCallback(\n (components: any[]): ReactElement[] =>\n renderSignUpComponents(\n components,\n formValues,\n touchedFields,\n formErrors,\n isLoading,\n isFormValid,\n handleInputChange,\n {\n _customRenderers: customRenderers,\n _theme: theme,\n buttonClassName: buttonClasses,\n inputClassName: inputClasses,\n onInputBlur: handleInputBlur,\n onSubmit: handleSubmit,\n size,\n variant,\n },\n ),\n [\n customRenderers,\n formValues,\n touchedFields,\n formErrors,\n isFormValid,\n isLoading,\n size,\n theme,\n variant,\n inputClasses,\n buttonClasses,\n handleSubmit,\n handleInputBlur,\n ],\n );\n\n /**\n * Parse URL parameters to check for OAuth redirect state.\n */\n const getUrlParams = (): any => {\n const urlParams: any = new URL(window?.location?.href ?? '').searchParams;\n return {\n code: urlParams.get('code'),\n error: urlParams.get('error'),\n state: urlParams.get('state'),\n };\n };\n\n // Initialize the flow on component mount\n useEffect(() => {\n // Skip initialization if we're in an OAuth redirect state.\n const urlParams: any = getUrlParams();\n if (urlParams.code || urlParams.state) {\n return;\n }\n\n if (isInitialized && isStorageReady && !isFlowInitialized && !initializationAttemptedRef.current) {\n initializationAttemptedRef.current = true;\n\n (async (): Promise<void> => {\n setIsLoading(true);\n setApiError(null);\n clearMessages();\n\n try {\n const payload: any = challengeTokenRef.current ? {challengeToken: challengeTokenRef.current} : undefined;\n const rawResponse: any = await onInitialize?.(payload);\n const response: any = normalizeFlowResponseLocal(rawResponse);\n\n await setChallengeToken(response.challengeToken ?? null);\n setCurrentFlow(response);\n setIsFlowInitialized(true);\n onFlowChange?.(response);\n\n // Clean up executionId and applicationId from URL after storing in state\n if (window?.location?.href) {\n const url: URL = new URL(window.location.href);\n url.searchParams.delete('executionId');\n url.searchParams.delete('applicationId');\n window.history.replaceState({}, '', url.toString());\n }\n\n if (response.flowStatus === EmbeddedSignUpFlowStatusV2.Error) {\n handleError(response);\n onError?.(new Error(extractErrorMessage(response, t)));\n return;\n }\n\n if (response.flowStatus === EmbeddedSignUpFlowStatusV2.Complete) {\n handleFlowCompletion(response as EmbeddedSignUpFlowResponseV2);\n return;\n }\n\n if (response.flowStatus === EmbeddedSignUpFlowStatusV2.Incomplete) {\n setupFormFields(response);\n\n // Display error from INCOMPLETE response\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (response?.error) {\n handleError(response);\n }\n }\n } catch (err) {\n handleError(err);\n onError?.(err as Error);\n } finally {\n setIsLoading(false);\n }\n })();\n }\n }, [\n isInitialized,\n isStorageReady,\n isFlowInitialized,\n onInitialize,\n onComplete,\n onError,\n onFlowChange,\n setupFormFields,\n normalizeFlowResponseLocal,\n afterSignUpUrl,\n t,\n ]);\n\n // If render props are provided, use them\n if (children) {\n const renderProps: BaseSignUpRenderProps = {\n components: (currentFlow?.data as any)?.components || [],\n error: apiError,\n fieldErrors: formErrors,\n handleInputChange,\n handleSubmit,\n isLoading,\n isValid: isFormValid,\n messages: flowMessages || [],\n subtitle: flowSubtitle || t('signup.subheading'),\n title: flowTitle || t('signup.heading'),\n touched: touchedFields,\n validateForm: () => {\n const result: any = validateForm();\n return {fieldErrors: result.errors, isValid: result.isValid};\n },\n values: formValues,\n };\n\n return <div className={containerClasses}>{children(renderProps)}</div>;\n }\n\n if (!isFlowInitialized && isLoading) {\n return (\n <CardPrimitive className={cx(containerClasses, styles.card)} variant={variant}>\n <CardPrimitive.Content>\n <div className={styles.loadingContainer}>\n <Spinner size=\"medium\" />\n </div>\n </CardPrimitive.Content>\n </CardPrimitive>\n );\n }\n\n if (!currentFlow) {\n return (\n <CardPrimitive className={cx(containerClasses, styles.card)} variant={variant}>\n <CardPrimitive.Content>\n <AlertPrimitive variant=\"error\" className={errorClasses}>\n <AlertPrimitive.Title>{t('errors.heading')}</AlertPrimitive.Title>\n <AlertPrimitive.Description>{t('errors.signup.flow.initialization.failure')}</AlertPrimitive.Description>\n </AlertPrimitive>\n </CardPrimitive.Content>\n </CardPrimitive>\n );\n }\n\n // Extract heading and subheading components and filter them from the main components\n const componentsToRender: any = (currentFlow.data as any)?.components || [];\n const {title, subtitle, componentsWithoutHeadings} = getAuthComponentHeadings(\n componentsToRender,\n flowTitle,\n flowSubtitle,\n t('signup.heading'),\n t('signup.subheading'),\n );\n\n return (\n <CardPrimitive className={cx(containerClasses, styles.card)} variant={variant}>\n {(showTitle || showSubtitle) && (\n <CardPrimitive.Header className={styles.header}>\n {showTitle && (\n <CardPrimitive.Title level={2} className={styles.title}>\n {title}\n </CardPrimitive.Title>\n )}\n {showSubtitle && (\n <Typography variant=\"body1\" className={styles.subtitle}>\n {subtitle}\n </Typography>\n )}\n </CardPrimitive.Header>\n )}\n <CardPrimitive.Content>\n {externalError && (\n <div className={styles.flowMessagesContainer}>\n <AlertPrimitive variant=\"error\" className={cx(styles.flowMessageItem, messageClasses)}>\n <AlertPrimitive.Description>{externalError.message}</AlertPrimitive.Description>\n </AlertPrimitive>\n </div>\n )}\n {flowMessages && flowMessages.length > 0 && (\n <div className={styles.flowMessagesContainer}>\n {flowMessages.map((message: any, index: number) => (\n <AlertPrimitive\n key={message.id || index}\n variant={message.type?.toLowerCase() === 'error' ? 'error' : 'info'}\n className={cx(styles.flowMessageItem, messageClasses)}\n >\n <AlertPrimitive.Description>{message.message}</AlertPrimitive.Description>\n </AlertPrimitive>\n ))}\n </div>\n )}\n <div className={styles.contentContainer}>\n {componentsWithoutHeadings && componentsWithoutHeadings.length > 0 ? (\n renderComponents(componentsWithoutHeadings)\n ) : (\n <AlertPrimitive variant=\"warning\">\n <Typography variant=\"body1\">{t('errors.signup.components.not.available')}</Typography>\n </AlertPrimitive>\n )}\n </div>\n </CardPrimitive.Content>\n </CardPrimitive>\n );\n};\n\n/**\n * BaseSignUp component that provides embedded sign-up flow for ThunderIDV2.\n * This component handles both the presentation layer and sign-up flow logic.\n * It accepts API functions as props to maintain framework independence.\n */\nconst BaseSignUp: FC<BaseSignUpProps> = ({preferences, showLogo = true, ...rest}: BaseSignUpProps): ReactElement => {\n const {theme, colorScheme} = useTheme();\n const styles: any = useStyles(theme, colorScheme);\n\n const content: ReactElement = (\n <div>\n {showLogo && (\n <div className={styles.logoContainer}>\n <Logo size=\"large\" />\n </div>\n )}\n <FlowProvider>\n <BaseSignUpContent showLogo={showLogo} {...rest} />\n </FlowProvider>\n </div>\n );\n\n if (!preferences) return content;\n\n return <ComponentPreferencesContext.Provider value={preferences}>{content}</ComponentPreferencesContext.Provider>;\n};\n\nexport default BaseSignUp;\n"],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- const require_rolldown_runtime = require('../../../../../_virtual/rolldown_runtime.cjs');
2
- const require_useThunderID = require('../../../../../contexts/ThunderID/useThunderID.cjs');
3
- const require_BaseSignUp = require('./BaseSignUp.cjs');
4
- let __thunderid_browser = require("@thunderid/browser");
5
- __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
- react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
8
-
9
- //#region src/components/presentation/auth/SignUp/v2/SignUp.tsx
10
- /**
11
- * A styled SignUp component for ThunderIDV2 (AKA Thunder) platform that provides embedded sign-up flow with pre-built styling.
12
- * This component handles the API calls for sign-up and delegates UI logic to BaseSignUp.
13
- */
14
- const SignUp = ({ className, size = "medium", afterSignUpUrl, onError, onComplete, shouldRedirectAfterSignUp = true, children,...rest }) => {
15
- const { signUp, isInitialized, applicationId, scopes } = require_useThunderID.default();
16
- /**
17
- * Initialize the sign-up flow.
18
- */
19
- const handleInitialize = async (payload) => {
20
- const urlParams = new URL(window.location.href).searchParams;
21
- const executionIdFromUrl = urlParams.get("executionId") || "";
22
- const applicationIdFromUrl = urlParams.get("applicationId") ?? "";
23
- const effectiveApplicationId = applicationId ?? applicationIdFromUrl;
24
- const challengeToken = payload?.challengeToken;
25
- let initialPayload;
26
- if (executionIdFromUrl) initialPayload = {
27
- executionId: executionIdFromUrl,
28
- ...challengeToken ? { challengeToken } : {}
29
- };
30
- else if (!payload || !("flowType" in payload)) initialPayload = {
31
- ...payload || {},
32
- flowType: __thunderid_browser.EmbeddedFlowType.Registration,
33
- ...effectiveApplicationId && { applicationId: effectiveApplicationId },
34
- ...scopes && { scopes }
35
- };
36
- else initialPayload = payload;
37
- return await signUp(initialPayload);
38
- };
39
- /**
40
- * Handle sign-up steps.
41
- */
42
- const handleOnSubmit = async (payload) => await signUp(payload);
43
- /**
44
- * Handle successful sign-up and redirect.
45
- */
46
- const handleComplete = (response) => {
47
- onComplete?.(response);
48
- if (!shouldRedirectAfterSignUp) return;
49
- const redirectURL = (response?.data)?.["redirectURL"];
50
- if (response?.type === __thunderid_browser.EmbeddedSignUpFlowTypeV2.Redirection && redirectURL && !redirectURL.includes("oauth") && !redirectURL.includes("auth")) {
51
- window.location.href = redirectURL;
52
- return;
53
- }
54
- const oauthRedirectUrl = response?.redirectUrl;
55
- if (oauthRedirectUrl) {
56
- window.location.href = oauthRedirectUrl;
57
- return;
58
- }
59
- if (response?.type !== __thunderid_browser.EmbeddedSignUpFlowTypeV2.Redirection && afterSignUpUrl && !response?.assertion) window.location.href = afterSignUpUrl;
60
- };
61
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseSignUp.default, {
62
- afterSignUpUrl,
63
- onInitialize: handleInitialize,
64
- onSubmit: handleOnSubmit,
65
- onError,
66
- onComplete: handleComplete,
67
- className,
68
- size,
69
- isInitialized,
70
- children,
71
- showTitle: true,
72
- showSubtitle: true,
73
- ...rest
74
- });
75
- };
76
- var SignUp_default = SignUp;
77
-
78
- //#endregion
79
- exports.default = SignUp_default;
80
- //# sourceMappingURL=SignUp.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SignUp.cjs","names":["SignUp: FC<SignUpProps>","useThunderID","urlParams: URLSearchParams","executionIdFromUrl: string","applicationIdFromUrl: string","effectiveApplicationId: any","challengeToken: string | undefined","initialPayload: EmbeddedSignUpFlowRequestV2 | any","EmbeddedFlowType","redirectURL: string | undefined","EmbeddedSignUpFlowTypeV2","oauthRedirectUrl: any","BaseSignUp"],"sources":["../../../../../../../src/components/presentation/auth/SignUp/v2/SignUp.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n EmbeddedSignUpFlowRequestV2,\n EmbeddedSignUpFlowResponseV2,\n EmbeddedSignUpFlowTypeV2,\n EmbeddedFlowType,\n} from '@thunderid/browser';\nimport {FC, ReactElement, ReactNode} from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport BaseSignUp, {BaseSignUpProps, BaseSignUpRenderProps} from './BaseSignUp';\nimport useThunderID from '../../../../../contexts/ThunderID/useThunderID';\n\n/**\n * Render props function parameters (re-exported from BaseSignUp for convenience)\n */\nexport type SignUpRenderProps = BaseSignUpRenderProps;\n\n/**\n * Props for the SignUp component.\n */\nexport type SignUpProps = BaseSignUpProps & {\n /**\n * Render props function for custom UI\n */\n children?: (props: SignUpRenderProps) => ReactNode;\n};\n\n/**\n * A styled SignUp component for ThunderIDV2 (AKA Thunder) platform that provides embedded sign-up flow with pre-built styling.\n * This component handles the API calls for sign-up and delegates UI logic to BaseSignUp.\n */\nconst SignUp: FC<SignUpProps> = ({\n className,\n size = 'medium',\n afterSignUpUrl,\n onError,\n onComplete,\n shouldRedirectAfterSignUp = true,\n children,\n ...rest\n}: SignUpProps): ReactElement => {\n const {signUp, isInitialized, applicationId, scopes} = useThunderID();\n\n /**\n * Initialize the sign-up flow.\n */\n const handleInitialize = async (payload?: EmbeddedSignUpFlowRequestV2): Promise<EmbeddedSignUpFlowResponseV2> => {\n const urlParams: URLSearchParams = new URL(window.location.href).searchParams;\n const executionIdFromUrl: string = urlParams.get('executionId') || '';\n const applicationIdFromUrl: string = urlParams.get('applicationId') ?? '';\n\n const effectiveApplicationId: any = applicationId ?? applicationIdFromUrl;\n\n const challengeToken: string | undefined = (payload as any)?.challengeToken;\n\n let initialPayload: EmbeddedSignUpFlowRequestV2 | any;\n if (executionIdFromUrl) {\n initialPayload = {\n executionId: executionIdFromUrl,\n ...(challengeToken ? {challengeToken} : {}),\n };\n } else if (!payload || !('flowType' in payload)) {\n initialPayload = {\n ...(payload || {}),\n flowType: EmbeddedFlowType.Registration,\n ...(effectiveApplicationId && {applicationId: effectiveApplicationId}),\n ...(scopes && {scopes}),\n };\n } else {\n initialPayload = payload;\n }\n\n return (await signUp(initialPayload)) as EmbeddedSignUpFlowResponseV2;\n };\n\n /**\n * Handle sign-up steps.\n */\n const handleOnSubmit = async (payload: EmbeddedSignUpFlowRequestV2): Promise<EmbeddedSignUpFlowResponseV2> =>\n (await signUp(payload)) as EmbeddedSignUpFlowResponseV2;\n\n /**\n * Handle successful sign-up and redirect.\n */\n const handleComplete = (response: EmbeddedSignUpFlowResponseV2): any => {\n onComplete?.(response);\n\n if (!shouldRedirectAfterSignUp) {\n return;\n }\n\n const redirectURL: string | undefined = (response?.data as Record<string, unknown>)?.['redirectURL'] as\n | string\n | undefined;\n\n if (\n response?.type === EmbeddedSignUpFlowTypeV2.Redirection &&\n redirectURL &&\n !redirectURL.includes('oauth') && // Not a social provider redirect\n !redirectURL.includes('auth') // Not an auth provider redirect\n ) {\n window.location.href = redirectURL;\n return;\n }\n\n const oauthRedirectUrl: any = (response as any)?.redirectUrl;\n if (oauthRedirectUrl) {\n window.location.href = oauthRedirectUrl;\n return;\n }\n\n // For non-redirection responses (regular sign-up completion), handle redirect if configured.\n // Skip when assertion is present — the SDK stored the session and the caller handled navigation.\n if (response?.type !== EmbeddedSignUpFlowTypeV2.Redirection && afterSignUpUrl && !(response as any)?.assertion) {\n window.location.href = afterSignUpUrl;\n }\n };\n\n return (\n <BaseSignUp\n afterSignUpUrl={afterSignUpUrl}\n onInitialize={handleInitialize}\n onSubmit={handleOnSubmit}\n onError={onError}\n onComplete={handleComplete}\n className={className}\n size={size}\n isInitialized={isInitialized}\n children={children}\n showTitle={true}\n showSubtitle={true}\n {...rest}\n />\n );\n};\n\nexport default SignUp;\n"],"mappings":";;;;;;;;;;;;;AAgDA,MAAMA,UAA2B,EAC/B,WACA,OAAO,UACP,gBACA,SACA,YACA,4BAA4B,MAC5B,SACA,GAAG,WAC4B;CAC/B,MAAM,EAAC,QAAQ,eAAe,eAAe,WAAUC,8BAAc;;;;CAKrE,MAAM,mBAAmB,OAAO,YAAiF;EAC/G,MAAMC,YAA6B,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC;EACjE,MAAMC,qBAA6B,UAAU,IAAI,cAAc,IAAI;EACnE,MAAMC,uBAA+B,UAAU,IAAI,gBAAgB,IAAI;EAEvE,MAAMC,yBAA8B,iBAAiB;EAErD,MAAMC,iBAAsC,SAAiB;EAE7D,IAAIC;AACJ,MAAI,mBACF,kBAAiB;GACf,aAAa;GACb,GAAI,iBAAiB,EAAC,gBAAe,GAAG,EAAE;GAC3C;WACQ,CAAC,WAAW,EAAE,cAAc,SACrC,kBAAiB;GACf,GAAI,WAAW,EAAE;GACjB,UAAUC,qCAAiB;GAC3B,GAAI,0BAA0B,EAAC,eAAe,wBAAuB;GACrE,GAAI,UAAU,EAAC,QAAO;GACvB;MAED,kBAAiB;AAGnB,SAAQ,MAAM,OAAO,eAAe;;;;;CAMtC,MAAM,iBAAiB,OAAO,YAC3B,MAAM,OAAO,QAAQ;;;;CAKxB,MAAM,kBAAkB,aAAgD;AACtE,eAAa,SAAS;AAEtB,MAAI,CAAC,0BACH;EAGF,MAAMC,eAAmC,UAAU,QAAmC;AAItF,MACE,UAAU,SAASC,6CAAyB,eAC5C,eACA,CAAC,YAAY,SAAS,QAAQ,IAC9B,CAAC,YAAY,SAAS,OAAO,EAC7B;AACA,UAAO,SAAS,OAAO;AACvB;;EAGF,MAAMC,mBAAyB,UAAkB;AACjD,MAAI,kBAAkB;AACpB,UAAO,SAAS,OAAO;AACvB;;AAKF,MAAI,UAAU,SAASD,6CAAyB,eAAe,kBAAkB,CAAE,UAAkB,UACnG,QAAO,SAAS,OAAO;;AAI3B,QACE,2CAACE;EACiB;EAChB,cAAc;EACd,UAAU;EACD;EACT,YAAY;EACD;EACL;EACS;EACL;EACV,WAAW;EACX,cAAc;EACd,GAAI;GACJ;;AAIN,qBAAe"}
@@ -1,190 +0,0 @@
1
- const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
- const require_applyThemeToDOM = require('../../../utils/applyThemeToDOM.cjs');
3
- const require_normalizeThemeConfig = require('../../../utils/normalizeThemeConfig.cjs');
4
- const require_useBrandingContext = require('../../Branding/useBrandingContext.cjs');
5
- const require_ThemeContext = require('../ThemeContext.cjs');
6
- let __thunderid_browser = require("@thunderid/browser");
7
- __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
8
- let react = require("react");
9
- react = require_rolldown_runtime.__toESM(react);
10
- let react_jsx_runtime = require("react/jsx-runtime");
11
- react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
12
-
13
- //#region src/contexts/Theme/v1/ThemeProvider.tsx
14
- const logger = (0, __thunderid_browser.createPackageComponentLogger)("@thunderid/react", "ThemeProvider");
15
- /**
16
- * ThemeProvider component that manages theme state and provides theme context to child components.
17
- *
18
- * This provider integrates with ThunderID branding preferences to automatically apply
19
- * organization-specific themes while allowing for custom theme overrides.
20
- *
21
- * Features:
22
- * - Automatic theme mode detection (light/dark/system/class)
23
- * - Integration with ThunderID branding API through useBranding hook
24
- * - Merging of branding themes with custom theme configurations
25
- * - CSS variable injection for easy styling
26
- * - Loading and error states for branding integration
27
- *
28
- * @example
29
- * Basic usage with branding integration:
30
- * ```tsx
31
- * <ThemeProvider inheritFromBranding={true}>
32
- * <App />
33
- * </ThemeProvider>
34
- * ```
35
- *
36
- * @example
37
- * With custom theme overrides:
38
- * ```tsx
39
- * <ThemeProvider
40
- * theme={{
41
- * colors: {
42
- * primary: { main: '#custom-color' }
43
- * }
44
- * }}
45
- * inheritFromBranding={true}
46
- * >
47
- * <App />
48
- * </ThemeProvider>
49
- * ```
50
- *
51
- * @example
52
- * With branding-driven theme mode:
53
- * ```tsx
54
- * <ThemeProvider
55
- * mode="branding"
56
- * inheritFromBranding={true}
57
- * >
58
- * <App />
59
- * </ThemeProvider>
60
- * ```
61
- */
62
- const ThemeProvider = ({ children, theme: themeConfigProp, mode = __thunderid_browser.DEFAULT_THEME, detection = {}, inheritFromBranding = true }) => {
63
- const themeConfig = require_normalizeThemeConfig.default(themeConfigProp);
64
- const [colorScheme, setColorScheme] = (0, react.useState)(() => {
65
- if (mode === "light" || mode === "dark") return mode;
66
- if (mode === "branding") return (0, __thunderid_browser.detectThemeMode)("system", detection);
67
- return (0, __thunderid_browser.detectThemeMode)(mode, detection);
68
- });
69
- let brandingTheme = null;
70
- let brandingActiveTheme = null;
71
- let isBrandingLoading = false;
72
- let brandingError = null;
73
- try {
74
- const brandingContext = require_useBrandingContext.default();
75
- brandingTheme = brandingContext.theme;
76
- brandingActiveTheme = brandingContext.activeTheme;
77
- isBrandingLoading = brandingContext.isLoading;
78
- brandingError = brandingContext.error;
79
- } catch (error) {
80
- if (inheritFromBranding) logger.warn("ThemeProvider: inheritFromBranding is enabled but BrandingProvider is not available. Make sure to wrap your app with BrandingProvider or ThunderIDProvider with branding preferences.");
81
- }
82
- (0, react.useEffect)(() => {
83
- if (inheritFromBranding && brandingActiveTheme) {
84
- if (mode === "branding") setColorScheme(brandingActiveTheme);
85
- else if (mode === "system" && !isBrandingLoading) setColorScheme(brandingActiveTheme);
86
- }
87
- }, [
88
- inheritFromBranding,
89
- brandingActiveTheme,
90
- mode,
91
- isBrandingLoading
92
- ]);
93
- const finalThemeConfig = (0, react.useMemo)(() => {
94
- if (!inheritFromBranding || !brandingTheme) return themeConfig;
95
- const brandingThemeConfig = {
96
- borderRadius: brandingTheme.borderRadius,
97
- colors: brandingTheme.colors,
98
- components: brandingTheme.components,
99
- images: brandingTheme.images,
100
- shadows: brandingTheme.shadows,
101
- spacing: brandingTheme.spacing
102
- };
103
- return {
104
- ...brandingThemeConfig,
105
- ...themeConfig,
106
- borderRadius: {
107
- ...brandingThemeConfig.borderRadius,
108
- ...themeConfig?.borderRadius
109
- },
110
- colors: {
111
- ...brandingThemeConfig.colors,
112
- ...themeConfig?.colors
113
- },
114
- components: {
115
- ...brandingThemeConfig.components,
116
- ...themeConfig?.components
117
- },
118
- images: {
119
- ...brandingThemeConfig.images,
120
- ...themeConfig?.images
121
- },
122
- shadows: {
123
- ...brandingThemeConfig.shadows,
124
- ...themeConfig?.shadows
125
- },
126
- spacing: {
127
- ...brandingThemeConfig.spacing,
128
- ...themeConfig?.spacing
129
- }
130
- };
131
- }, [
132
- inheritFromBranding,
133
- brandingTheme,
134
- themeConfig
135
- ]);
136
- const theme = (0, react.useMemo)(() => (0, __thunderid_browser.createTheme)(finalThemeConfig, colorScheme === "dark"), [finalThemeConfig, colorScheme]);
137
- const direction = finalThemeConfig?.direction || "ltr";
138
- const handleThemeChange = (0, react.useCallback)((isDark) => {
139
- setColorScheme(isDark ? "dark" : "light");
140
- }, []);
141
- const toggleTheme = (0, react.useCallback)(() => {
142
- setColorScheme((prev) => prev === "light" ? "dark" : "light");
143
- }, []);
144
- (0, react.useEffect)(() => {
145
- let observer = null;
146
- let mediaQuery = null;
147
- if (mode === "branding") return;
148
- if (mode === "class") {
149
- const targetElement = detection.targetElement || document.documentElement;
150
- if (targetElement) observer = (0, __thunderid_browser.createClassObserver)(targetElement, handleThemeChange, detection);
151
- } else if (mode === "system") {
152
- if (!inheritFromBranding || !brandingActiveTheme) mediaQuery = (0, __thunderid_browser.createMediaQueryListener)(handleThemeChange);
153
- }
154
- return () => {
155
- if (observer) observer.disconnect();
156
- if (mediaQuery) if (mediaQuery.removeEventListener) mediaQuery.removeEventListener("change", handleThemeChange);
157
- else mediaQuery.removeListener(handleThemeChange);
158
- };
159
- }, [
160
- mode,
161
- detection,
162
- handleThemeChange,
163
- inheritFromBranding,
164
- brandingActiveTheme
165
- ]);
166
- (0, react.useEffect)(() => {
167
- require_applyThemeToDOM.default(theme);
168
- }, [theme]);
169
- (0, react.useEffect)(() => {
170
- if (typeof document !== "undefined") document.documentElement.dir = direction;
171
- }, [direction]);
172
- const value = {
173
- brandingError,
174
- colorScheme,
175
- direction,
176
- inheritFromBranding,
177
- isBrandingLoading,
178
- theme,
179
- toggleTheme
180
- };
181
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeContext.default.Provider, {
182
- value,
183
- children
184
- });
185
- };
186
- var ThemeProvider_default = ThemeProvider;
187
-
188
- //#endregion
189
- exports.default = ThemeProvider_default;
190
- //# sourceMappingURL=ThemeProvider.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThemeProvider.cjs","names":["logger: ReturnType<typeof createPackageComponentLogger>","ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>>","DEFAULT_THEME","themeConfig: RecursivePartial<ThemeConfig> | undefined","normalizeThemeConfig","brandingTheme: Theme | null","brandingActiveTheme: 'light' | 'dark' | null","brandingError: Error | null","brandingContext: any","useBrandingContext","finalThemeConfig: RecursivePartial<ThemeConfig> | undefined","brandingThemeConfig: RecursivePartial<ThemeConfig>","theme: Theme","direction: string","handleThemeChange: (isDark: boolean) => void","toggleTheme: () => void","observer: MutationObserver | null","mediaQuery: MediaQueryList | null","targetElement: HTMLElement","value: any","ThemeContext"],"sources":["../../../../../src/contexts/Theme/v1/ThemeProvider.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n createTheme,\n Theme,\n ThemeConfig,\n ThemeMode,\n RecursivePartial,\n detectThemeMode,\n createClassObserver,\n createMediaQueryListener,\n BrowserThemeDetection,\n ThemePreferences,\n DEFAULT_THEME,\n createPackageComponentLogger,\n} from '@thunderid/browser';\nimport {FC, PropsWithChildren, ReactElement, useEffect, useMemo, useState, useCallback} from 'react';\nimport applyThemeToDOM from '../../../utils/applyThemeToDOM';\nimport normalizeThemeConfig from '../../../utils/normalizeThemeConfig';\n\nimport useBrandingContext from '../../Branding/useBrandingContext';\nimport ThemeContext from '../ThemeContext';\n\nconst logger: ReturnType<typeof createPackageComponentLogger> = createPackageComponentLogger(\n '@thunderid/react',\n 'ThemeProvider',\n);\n\nexport interface ThemeProviderProps {\n /**\n * Configuration for theme detection when using 'class' or 'system' mode\n */\n detection?: BrowserThemeDetection;\n /**\n * Configuration for branding integration\n */\n inheritFromBranding?: ThemePreferences['inheritFromBranding'];\n /**\n * The theme mode to use for automatic detection\n * - 'light': Always use light theme\n * - 'dark': Always use dark theme\n * - 'system': Use system preference (prefers-color-scheme media query)\n * - 'class': Detect theme based on CSS classes on HTML element\n * - 'branding': Use active theme from branding preference (requires inheritFromBranding=true)\n */\n mode?: ThemeMode | 'branding';\n theme?: RecursivePartial<ThemeConfig>;\n}\n\n/**\n * ThemeProvider component that manages theme state and provides theme context to child components.\n *\n * This provider integrates with ThunderID branding preferences to automatically apply\n * organization-specific themes while allowing for custom theme overrides.\n *\n * Features:\n * - Automatic theme mode detection (light/dark/system/class)\n * - Integration with ThunderID branding API through useBranding hook\n * - Merging of branding themes with custom theme configurations\n * - CSS variable injection for easy styling\n * - Loading and error states for branding integration\n *\n * @example\n * Basic usage with branding integration:\n * ```tsx\n * <ThemeProvider inheritFromBranding={true}>\n * <App />\n * </ThemeProvider>\n * ```\n *\n * @example\n * With custom theme overrides:\n * ```tsx\n * <ThemeProvider\n * theme={{\n * colors: {\n * primary: { main: '#custom-color' }\n * }\n * }}\n * inheritFromBranding={true}\n * >\n * <App />\n * </ThemeProvider>\n * ```\n *\n * @example\n * With branding-driven theme mode:\n * ```tsx\n * <ThemeProvider\n * mode=\"branding\"\n * inheritFromBranding={true}\n * >\n * <App />\n * </ThemeProvider>\n * ```\n */\nconst ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>> = ({\n children,\n theme: themeConfigProp,\n mode = DEFAULT_THEME,\n detection = {},\n inheritFromBranding = true,\n}: PropsWithChildren<ThemeProviderProps>): ReactElement => {\n const themeConfig: RecursivePartial<ThemeConfig> | undefined = normalizeThemeConfig(themeConfigProp);\n\n const [colorScheme, setColorScheme] = useState<'light' | 'dark'>(() => {\n // Initialize with detected theme mode or fallback to defaultMode\n if (mode === 'light' || mode === 'dark') {\n return mode;\n }\n // For 'branding' mode, start with system preference and update when branding loads\n if (mode === 'branding') {\n return detectThemeMode('system', detection);\n }\n return detectThemeMode(mode, detection);\n });\n\n // Use branding theme if inheritFromBranding is enabled\n // Handle case where BrandingProvider might not be available\n let brandingTheme: Theme | null = null;\n let brandingActiveTheme: 'light' | 'dark' | null = null;\n let isBrandingLoading = false;\n let brandingError: Error | null = null;\n\n try {\n const brandingContext: any = useBrandingContext();\n brandingTheme = brandingContext.theme;\n brandingActiveTheme = brandingContext.activeTheme;\n isBrandingLoading = brandingContext.isLoading;\n brandingError = brandingContext.error;\n } catch (error) {\n // BrandingProvider not available, fall back to no branding\n if (inheritFromBranding) {\n logger.warn(\n 'ThemeProvider: inheritFromBranding is enabled but BrandingProvider is not available. ' +\n 'Make sure to wrap your app with BrandingProvider or ThunderIDProvider with branding preferences.',\n );\n }\n }\n\n // Update color scheme based on branding active theme when available\n useEffect(() => {\n if (inheritFromBranding && brandingActiveTheme) {\n // Update color scheme based on mode preference\n if (mode === 'branding') {\n // Always follow branding active theme\n setColorScheme(brandingActiveTheme);\n } else if (mode === 'system' && !isBrandingLoading) {\n // For system mode, prefer branding but allow system override if no branding\n setColorScheme(brandingActiveTheme);\n }\n }\n }, [inheritFromBranding, brandingActiveTheme, mode, isBrandingLoading]);\n\n // Merge user-provided theme config with branding theme\n const finalThemeConfig: RecursivePartial<ThemeConfig> | undefined = useMemo(() => {\n if (!inheritFromBranding || !brandingTheme) {\n return themeConfig;\n }\n\n // Convert branding theme to our theme config format\n const brandingThemeConfig: RecursivePartial<ThemeConfig> = {\n borderRadius: brandingTheme.borderRadius,\n colors: brandingTheme.colors,\n components: brandingTheme.components,\n images: brandingTheme.images,\n shadows: brandingTheme.shadows,\n spacing: brandingTheme.spacing,\n };\n\n // Merge branding theme with user-provided theme config\n // User-provided config takes precedence over branding\n return {\n ...brandingThemeConfig,\n ...themeConfig,\n borderRadius: {\n ...brandingThemeConfig.borderRadius,\n ...themeConfig?.borderRadius,\n },\n colors: {\n ...brandingThemeConfig.colors,\n ...themeConfig?.colors,\n },\n components: {\n ...brandingThemeConfig.components,\n ...themeConfig?.components,\n },\n images: {\n ...brandingThemeConfig.images,\n ...themeConfig?.images,\n },\n shadows: {\n ...brandingThemeConfig.shadows,\n ...themeConfig?.shadows,\n },\n spacing: {\n ...brandingThemeConfig.spacing,\n ...themeConfig?.spacing,\n },\n };\n }, [inheritFromBranding, brandingTheme, themeConfig]);\n\n const theme: Theme = useMemo(\n () => createTheme(finalThemeConfig, colorScheme === 'dark'),\n [finalThemeConfig, colorScheme],\n );\n\n // Get direction from theme config or default to 'ltr'\n const direction: string = (finalThemeConfig as any)?.direction || 'ltr';\n\n const handleThemeChange: (isDark: boolean) => void = useCallback((isDark: boolean) => {\n setColorScheme(isDark ? 'dark' : 'light');\n }, []);\n\n const toggleTheme: () => void = useCallback(() => {\n setColorScheme((prev: 'light' | 'dark') => (prev === 'light' ? 'dark' : 'light'));\n }, []);\n\n useEffect(() => {\n let observer: MutationObserver | null = null;\n let mediaQuery: MediaQueryList | null = null;\n\n // Don't set up automatic theme detection for branding mode\n if (mode === 'branding') {\n return;\n }\n\n if (mode === 'class') {\n const targetElement: HTMLElement = detection.targetElement || document.documentElement;\n if (targetElement) {\n observer = createClassObserver(targetElement, handleThemeChange, detection);\n }\n } else if (mode === 'system') {\n // Only set up system listener if not using branding or branding hasn't loaded yet\n if (!inheritFromBranding || !brandingActiveTheme) {\n mediaQuery = createMediaQueryListener(handleThemeChange);\n }\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n if (mediaQuery) {\n // Clean up media query listener\n if (mediaQuery.removeEventListener) {\n mediaQuery.removeEventListener('change', handleThemeChange as any);\n } else {\n // Fallback for older browsers\n mediaQuery.removeListener(handleThemeChange as any);\n }\n }\n };\n }, [mode, detection, handleThemeChange, inheritFromBranding, brandingActiveTheme]);\n\n useEffect(() => {\n applyThemeToDOM(theme);\n }, [theme]);\n\n // Apply direction to document\n useEffect(() => {\n if (typeof document !== 'undefined') {\n document.documentElement.dir = direction;\n }\n }, [direction]);\n\n const value: any = {\n brandingError,\n colorScheme,\n direction,\n inheritFromBranding,\n isBrandingLoading,\n theme,\n toggleTheme,\n };\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n};\n\nexport default ThemeProvider;\n"],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
- const require_FlowMetaContext = require('../../FlowMeta/FlowMetaContext.cjs');
3
- const require_applyThemeToDOM = require('../../../utils/applyThemeToDOM.cjs');
4
- const require_normalizeThemeConfig = require('../../../utils/normalizeThemeConfig.cjs');
5
- const require_ThemeContext = require('../ThemeContext.cjs');
6
- const require_buildThemeConfigFromFlowMeta = require('../../../utils/v2/buildThemeConfigFromFlowMeta.cjs');
7
- let __thunderid_browser = require("@thunderid/browser");
8
- __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
9
- let react = require("react");
10
- react = require_rolldown_runtime.__toESM(react);
11
- let react_jsx_runtime = require("react/jsx-runtime");
12
- react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
13
-
14
- //#region src/contexts/Theme/v2/ThemeProvider.tsx
15
- /**
16
- * ThemeProvider is the v2 drop-in replacement for `ThemeProvider`.
17
- *
18
- * It reads the design theme from the nearest `FlowMetaContext` (provided by
19
- * `FlowMetaProvider`) and publishes a resolved `Theme` object through the
20
- * **same** `ThemeContext` that `useTheme` consumes. This means all existing
21
- * components that call `useTheme` continue to work without any changes.
22
- *
23
- * The `defaultColorScheme` field returned by the server is used to seed the
24
- * active color scheme; the user can still toggle it locally via the
25
- * `toggleTheme` value exposed in the context.
26
- *
27
- * @example
28
- * ```tsx
29
- * <FlowMetaProvider config={{ baseUrl, type: FlowMetaType.App, id: appId }}>
30
- * <ThemeProvider>
31
- * <App /> {/* useTheme() works here as usual *\/}
32
- * </ThemeProvider>
33
- * </FlowMetaProvider>
34
- * ```
35
- *
36
- * @example
37
- * With user theme overrides (user values win over server values):
38
- * ```tsx
39
- * <ThemeProvider theme={{ colors: { primary: { main: '#ff0000' } } }}>
40
- * <App />
41
- * </ThemeProvider>
42
- * ```
43
- */
44
- const ThemeProvider = ({ children, theme: themeOverrideProp }) => {
45
- const themeOverride = require_normalizeThemeConfig.default(themeOverrideProp);
46
- const flowMetaContext = (0, react.useContext)(require_FlowMetaContext.default);
47
- const flowMetaTheme = flowMetaContext?.meta?.design?.theme ?? null;
48
- const isLoading = flowMetaContext?.isLoading ?? false;
49
- const error = flowMetaContext?.error ?? null;
50
- const [colorScheme, setColorScheme] = (0, react.useState)(() => flowMetaTheme?.defaultColorScheme ?? "light");
51
- (0, react.useEffect)(() => {
52
- if (flowMetaTheme?.defaultColorScheme) setColorScheme(flowMetaTheme.defaultColorScheme);
53
- }, [flowMetaTheme?.defaultColorScheme]);
54
- const toggleTheme = (0, react.useCallback)(() => {
55
- setColorScheme((prev) => prev === "light" ? "dark" : "light");
56
- }, []);
57
- const finalThemeConfig = (0, react.useMemo)(() => {
58
- if (!flowMetaTheme) return themeOverride;
59
- const metaConfig = require_buildThemeConfigFromFlowMeta.default(flowMetaTheme, colorScheme);
60
- if (!themeOverride) return metaConfig;
61
- return {
62
- ...metaConfig,
63
- ...themeOverride,
64
- borderRadius: {
65
- ...metaConfig.borderRadius,
66
- ...themeOverride.borderRadius
67
- },
68
- colors: {
69
- ...metaConfig.colors,
70
- ...themeOverride.colors
71
- },
72
- ...metaConfig.typography || themeOverride.typography ? { typography: {
73
- ...metaConfig.typography,
74
- ...themeOverride.typography
75
- } } : {}
76
- };
77
- }, [
78
- flowMetaTheme,
79
- colorScheme,
80
- themeOverride
81
- ]);
82
- const theme = (0, react.useMemo)(() => (0, __thunderid_browser.createTheme)(finalThemeConfig, colorScheme === "dark"), [finalThemeConfig, colorScheme]);
83
- const direction = flowMetaTheme?.direction ?? "ltr";
84
- (0, react.useEffect)(() => {
85
- require_applyThemeToDOM.default(theme);
86
- }, [theme]);
87
- (0, react.useEffect)(() => {
88
- if (typeof document !== "undefined") document.documentElement.dir = direction;
89
- }, [direction]);
90
- const value = {
91
- brandingError: error,
92
- colorScheme,
93
- direction,
94
- inheritFromBranding: false,
95
- isBrandingLoading: isLoading,
96
- theme,
97
- toggleTheme
98
- };
99
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeContext.default.Provider, {
100
- value,
101
- children
102
- });
103
- };
104
- var ThemeProvider_default = ThemeProvider;
105
-
106
- //#endregion
107
- exports.default = ThemeProvider_default;
108
- //# sourceMappingURL=ThemeProvider.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThemeProvider.cjs","names":["ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>>","themeOverride: RecursivePartial<ThemeConfig> | undefined","normalizeThemeConfig","flowMetaContext: FlowMetaContextValue | null","FlowMetaContext","flowMetaTheme: FlowMetaTheme | null","isLoading: boolean","error: Error | null","toggleTheme: () => void","finalThemeConfig: RecursivePartial<ThemeConfig> | undefined","metaConfig: RecursivePartial<ThemeConfig>","buildThemeConfigFromFlowMeta","theme: Theme","direction: 'ltr' | 'rtl'","value: any","ThemeContext"],"sources":["../../../../../src/contexts/Theme/v2/ThemeProvider.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {createTheme, Theme, ThemeConfig, RecursivePartial, FlowMetaTheme} from '@thunderid/browser';\nimport {FC, PropsWithChildren, ReactElement, useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport applyThemeToDOM from '../../../utils/applyThemeToDOM';\nimport normalizeThemeConfig from '../../../utils/normalizeThemeConfig';\nimport buildThemeConfigFromFlowMeta from '../../../utils/v2/buildThemeConfigFromFlowMeta';\nimport FlowMetaContext, {FlowMetaContextValue} from '../../FlowMeta/FlowMetaContext';\nimport ThemeContext from '../ThemeContext';\n\nexport interface ThemeProviderProps {\n /**\n * Optional theme overrides merged on top of the server-side flow meta theme.\n * User-supplied values take highest precedence.\n */\n theme?: RecursivePartial<ThemeConfig>;\n}\n\n/**\n * ThemeProvider is the v2 drop-in replacement for `ThemeProvider`.\n *\n * It reads the design theme from the nearest `FlowMetaContext` (provided by\n * `FlowMetaProvider`) and publishes a resolved `Theme` object through the\n * **same** `ThemeContext` that `useTheme` consumes. This means all existing\n * components that call `useTheme` continue to work without any changes.\n *\n * The `defaultColorScheme` field returned by the server is used to seed the\n * active color scheme; the user can still toggle it locally via the\n * `toggleTheme` value exposed in the context.\n *\n * @example\n * ```tsx\n * <FlowMetaProvider config={{ baseUrl, type: FlowMetaType.App, id: appId }}>\n * <ThemeProvider>\n * <App /> {/* useTheme() works here as usual *\\/}\n * </ThemeProvider>\n * </FlowMetaProvider>\n * ```\n *\n * @example\n * With user theme overrides (user values win over server values):\n * ```tsx\n * <ThemeProvider theme={{ colors: { primary: { main: '#ff0000' } } }}>\n * <App />\n * </ThemeProvider>\n * ```\n */\nconst ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>> = ({\n children,\n theme: themeOverrideProp,\n}: PropsWithChildren<ThemeProviderProps>): ReactElement => {\n const themeOverride: RecursivePartial<ThemeConfig> | undefined = normalizeThemeConfig(themeOverrideProp);\n const flowMetaContext: FlowMetaContextValue | null = useContext(FlowMetaContext);\n\n const flowMetaTheme: FlowMetaTheme | null = flowMetaContext?.meta?.design?.theme ?? null;\n const isLoading: boolean = flowMetaContext?.isLoading ?? false;\n const error: Error | null = flowMetaContext?.error ?? null;\n\n // Seed the color scheme from the server's defaultColorScheme; allow local toggling.\n const [colorScheme, setColorScheme] = useState<'light' | 'dark'>(() => flowMetaTheme?.defaultColorScheme ?? 'light');\n\n // When meta finishes loading, sync the color scheme with the server default.\n useEffect(() => {\n if (flowMetaTheme?.defaultColorScheme) {\n setColorScheme(flowMetaTheme.defaultColorScheme);\n }\n }, [flowMetaTheme?.defaultColorScheme]);\n\n const toggleTheme: () => void = useCallback(() => {\n setColorScheme((prev: 'light' | 'dark') => (prev === 'light' ? 'dark' : 'light'));\n }, []);\n\n // Build the resolved ThemeConfig: flow meta base → user overrides on top.\n const finalThemeConfig: RecursivePartial<ThemeConfig> | undefined = useMemo(() => {\n if (!flowMetaTheme) {\n return themeOverride;\n }\n\n const metaConfig: RecursivePartial<ThemeConfig> = buildThemeConfigFromFlowMeta(flowMetaTheme, colorScheme);\n\n if (!themeOverride) {\n return metaConfig;\n }\n\n return {\n ...metaConfig,\n ...themeOverride,\n borderRadius: {\n ...metaConfig.borderRadius,\n ...themeOverride.borderRadius,\n },\n colors: {\n ...metaConfig.colors,\n ...themeOverride.colors,\n },\n ...(metaConfig.typography || themeOverride.typography\n ? {\n typography: {\n ...(metaConfig as any).typography,\n ...themeOverride.typography,\n },\n }\n : {}),\n };\n }, [flowMetaTheme, colorScheme, themeOverride]);\n\n const theme: Theme = useMemo(\n () => createTheme(finalThemeConfig, colorScheme === 'dark'),\n [finalThemeConfig, colorScheme],\n );\n\n const direction: 'ltr' | 'rtl' = flowMetaTheme?.direction ?? 'ltr';\n\n // Apply CSS variables to the document root.\n useEffect(() => {\n applyThemeToDOM(theme);\n }, [theme]);\n\n // Apply text direction to the document root.\n useEffect(() => {\n if (typeof document !== 'undefined') {\n document.documentElement.dir = direction;\n }\n }, [direction]);\n\n const value: any = {\n brandingError: error,\n colorScheme,\n direction,\n inheritFromBranding: false,\n isBrandingLoading: isLoading,\n theme,\n toggleTheme,\n };\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n};\n\nexport default ThemeProvider;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DA,MAAMA,iBAA4D,EAChE,UACA,OAAO,wBACkD;CACzD,MAAMC,gBAA2DC,qCAAqB,kBAAkB;CACxG,MAAMC,wCAA0DC,gCAAgB;CAEhF,MAAMC,gBAAsC,iBAAiB,MAAM,QAAQ,SAAS;CACpF,MAAMC,YAAqB,iBAAiB,aAAa;CACzD,MAAMC,QAAsB,iBAAiB,SAAS;CAGtD,MAAM,CAAC,aAAa,4CAAmD,eAAe,sBAAsB,QAAQ;AAGpH,4BAAgB;AACd,MAAI,eAAe,mBACjB,gBAAe,cAAc,mBAAmB;IAEjD,CAAC,eAAe,mBAAmB,CAAC;CAEvC,MAAMC,2CAA4C;AAChD,kBAAgB,SAA4B,SAAS,UAAU,SAAS,QAAS;IAChF,EAAE,CAAC;CAGN,MAAMC,4CAA4E;AAChF,MAAI,CAAC,cACH,QAAO;EAGT,MAAMC,aAA4CC,6CAA6B,eAAe,YAAY;AAE1G,MAAI,CAAC,cACH,QAAO;AAGT,SAAO;GACL,GAAG;GACH,GAAG;GACH,cAAc;IACZ,GAAG,WAAW;IACd,GAAG,cAAc;IAClB;GACD,QAAQ;IACN,GAAG,WAAW;IACd,GAAG,cAAc;IAClB;GACD,GAAI,WAAW,cAAc,cAAc,aACvC,EACE,YAAY;IACV,GAAI,WAAmB;IACvB,GAAG,cAAc;IAClB,EACF,GACD,EAAE;GACP;IACA;EAAC;EAAe;EAAa;EAAc,CAAC;CAE/C,MAAMC,sEACc,kBAAkB,gBAAgB,OAAO,EAC3D,CAAC,kBAAkB,YAAY,CAChC;CAED,MAAMC,YAA2B,eAAe,aAAa;AAG7D,4BAAgB;AACd,kCAAgB,MAAM;IACrB,CAAC,MAAM,CAAC;AAGX,4BAAgB;AACd,MAAI,OAAO,aAAa,YACtB,UAAS,gBAAgB,MAAM;IAEhC,CAAC,UAAU,CAAC;CAEf,MAAMC,QAAa;EACjB,eAAe;EACf;EACA;EACA,qBAAqB;EACrB,mBAAmB;EACnB;EACA;EACD;AAED,QAAO,2CAACC,6BAAa;EAAgB;EAAQ;GAAiC;;AAGhF,4BAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useOAuthCallback.cjs","names":["url: URL","internalRef: any","oauthCodeProcessedRef: any","urlParams: URLSearchParams","code: string | null","nonce: string | null","state: string | null","executionIdFromUrl: string | null","error: string | null","errorDescription: string | null","storedExecutionId: string | null","executionIdToUse: string | null","response: any"],"sources":["../../../../src/hooks/v2/useOAuthCallback.ts"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {useEffect, useRef, type RefObject} from 'react';\n\nexport interface UseOAuthCallbackOptions {\n /**\n * Current executionId from component state\n */\n currentExecutionId: string | null;\n\n /**\n * SessionStorage key for executionId (defaults to 'thunderid_execution_id')\n */\n executionIdStorageKey?: string;\n\n /**\n * Whether the component is initialized and ready to process OAuth callback\n */\n isInitialized: boolean;\n\n /**\n * Whether a submission is currently in progress\n */\n isSubmitting?: boolean;\n\n /**\n * Callback when OAuth flow completes successfully\n */\n onComplete?: () => void;\n\n /**\n * Callback when OAuth flow encounters an error\n */\n onError?: (error: any) => void;\n\n /**\n * Function to handle flow response after submission\n */\n onFlowChange?: (response: any) => void;\n\n /**\n * Callback to set loading state at the start of OAuth processing\n */\n onProcessingStart?: () => void;\n\n /**\n * Function to submit OAuth code to the server\n */\n onSubmit: (payload: OAuthCallbackPayload) => Promise<any>;\n\n /**\n * Optional external ref to track processed state. If provided, the component\n * manages the ref (allowing resets on flow clear/retry). Otherwise hook manages internally.\n */\n processedRef?: RefObject<boolean>;\n\n /**\n * Additional handler for setting state (e.g., setExecutionId)\n */\n setExecutionId?: (executionId: string) => void;\n\n /**\n * Ref to mark that token validation was attempted (prevents duplicate validation)\n * Used in AcceptInvite to coordinate between OAuth callback and token validation\n */\n tokenValidationAttemptedRef?: RefObject<boolean>;\n}\n\nexport interface OAuthCallbackPayload {\n executionId: string;\n inputs: {\n code: string;\n nonce?: string;\n };\n}\n\nfunction cleanupUrlParams(): void {\n if (typeof window === 'undefined') return;\n\n const url: URL = new URL(window.location.href);\n url.searchParams.delete('code');\n url.searchParams.delete('nonce');\n url.searchParams.delete('state');\n url.searchParams.delete('error');\n url.searchParams.delete('error_description');\n\n window.history.replaceState({}, '', url.toString());\n}\n\n/**\n * Processes OAuth callbacks by detecting auth code in URL, resolving executionId, and submitting to server.\n * Used by SignIn, SignUp, and AcceptInvite components.\n */\nexport function useOAuthCallback({\n currentExecutionId,\n executionIdStorageKey = 'thunderid_execution_id',\n isInitialized,\n isSubmitting = false,\n onComplete,\n onError,\n onFlowChange,\n onProcessingStart,\n onSubmit,\n processedRef,\n setExecutionId: setExecExecutionId,\n tokenValidationAttemptedRef,\n}: UseOAuthCallbackOptions): void {\n const internalRef: any = useRef(false);\n const oauthCodeProcessedRef: any = processedRef ?? internalRef;\n\n useEffect(() => {\n if (!isInitialized || isSubmitting) {\n return;\n }\n\n const urlParams: URLSearchParams = new URLSearchParams(window.location.search);\n const code: string | null = urlParams.get('code');\n const nonce: string | null = urlParams.get('nonce');\n const state: string | null = urlParams.get('state');\n const executionIdFromUrl: string | null = urlParams.get('executionId');\n const error: string | null = urlParams.get('error');\n const errorDescription: string | null = urlParams.get('error_description');\n\n if (error) {\n oauthCodeProcessedRef.current = true;\n if (tokenValidationAttemptedRef) {\n tokenValidationAttemptedRef.current = true;\n }\n onError?.(new Error(errorDescription || error || 'OAuth authentication failed'));\n cleanupUrlParams();\n return;\n }\n\n if (!code || oauthCodeProcessedRef.current) {\n return;\n }\n\n if (tokenValidationAttemptedRef?.current) {\n return;\n }\n\n const storedExecutionId: string | null = sessionStorage.getItem(executionIdStorageKey);\n const executionIdToUse: string | null =\n currentExecutionId || storedExecutionId || executionIdFromUrl || state || null;\n\n if (!executionIdToUse) {\n oauthCodeProcessedRef.current = true;\n onError?.(new Error('Invalid flow. Missing executionId.'));\n cleanupUrlParams();\n return;\n }\n\n oauthCodeProcessedRef.current = true;\n\n if (tokenValidationAttemptedRef) {\n tokenValidationAttemptedRef.current = true;\n }\n\n onProcessingStart?.();\n\n if (!currentExecutionId && setExecExecutionId) {\n setExecExecutionId(executionIdToUse);\n }\n\n (async (): Promise<void> => {\n try {\n const payload: OAuthCallbackPayload = {\n executionId: executionIdToUse,\n inputs: {\n code,\n ...(nonce && {nonce}),\n },\n };\n\n const response: any = await onSubmit(payload);\n\n onFlowChange?.(response);\n\n if (response?.flowStatus === 'COMPLETE' || response?.status === 'COMPLETE') {\n onComplete?.();\n }\n\n if (response?.flowStatus === 'ERROR' || response?.status === 'ERROR') {\n onError?.(response);\n }\n\n cleanupUrlParams();\n } catch (err) {\n onError?.(err);\n cleanupUrlParams();\n }\n })();\n }, [\n isInitialized,\n currentExecutionId,\n isSubmitting,\n onSubmit,\n onComplete,\n onError,\n onFlowChange,\n setExecExecutionId,\n executionIdStorageKey,\n ]);\n}\n"],"mappings":";;;;;AA4FA,SAAS,mBAAyB;AAChC,KAAI,OAAO,WAAW,YAAa;CAEnC,MAAMA,MAAW,IAAI,IAAI,OAAO,SAAS,KAAK;AAC9C,KAAI,aAAa,OAAO,OAAO;AAC/B,KAAI,aAAa,OAAO,QAAQ;AAChC,KAAI,aAAa,OAAO,QAAQ;AAChC,KAAI,aAAa,OAAO,QAAQ;AAChC,KAAI,aAAa,OAAO,oBAAoB;AAE5C,QAAO,QAAQ,aAAa,EAAE,EAAE,IAAI,IAAI,UAAU,CAAC;;;;;;AAOrD,SAAgB,iBAAiB,EAC/B,oBACA,wBAAwB,0BACxB,eACA,eAAe,OACf,YACA,SACA,cACA,mBACA,UACA,cACA,gBAAgB,oBAChB,+BACgC;CAChC,MAAMC,gCAA0B,MAAM;CACtC,MAAMC,wBAA6B,gBAAgB;AAEnD,4BAAgB;AACd,MAAI,CAAC,iBAAiB,aACpB;EAGF,MAAMC,YAA6B,IAAI,gBAAgB,OAAO,SAAS,OAAO;EAC9E,MAAMC,OAAsB,UAAU,IAAI,OAAO;EACjD,MAAMC,QAAuB,UAAU,IAAI,QAAQ;EACnD,MAAMC,QAAuB,UAAU,IAAI,QAAQ;EACnD,MAAMC,qBAAoC,UAAU,IAAI,cAAc;EACtE,MAAMC,QAAuB,UAAU,IAAI,QAAQ;EACnD,MAAMC,mBAAkC,UAAU,IAAI,oBAAoB;AAE1E,MAAI,OAAO;AACT,yBAAsB,UAAU;AAChC,OAAI,4BACF,6BAA4B,UAAU;AAExC,aAAU,IAAI,MAAM,oBAAoB,SAAS,8BAA8B,CAAC;AAChF,qBAAkB;AAClB;;AAGF,MAAI,CAAC,QAAQ,sBAAsB,QACjC;AAGF,MAAI,6BAA6B,QAC/B;EAGF,MAAMC,oBAAmC,eAAe,QAAQ,sBAAsB;EACtF,MAAMC,mBACJ,sBAAsB,qBAAqB,sBAAsB,SAAS;AAE5E,MAAI,CAAC,kBAAkB;AACrB,yBAAsB,UAAU;AAChC,6BAAU,IAAI,MAAM,qCAAqC,CAAC;AAC1D,qBAAkB;AAClB;;AAGF,wBAAsB,UAAU;AAEhC,MAAI,4BACF,6BAA4B,UAAU;AAGxC,uBAAqB;AAErB,MAAI,CAAC,sBAAsB,mBACzB,oBAAmB,iBAAiB;AAGtC,GAAC,YAA2B;AAC1B,OAAI;IASF,MAAMC,WAAgB,MAAM,SARU;KACpC,aAAa;KACb,QAAQ;MACN;MACA,GAAI,SAAS,EAAC,OAAM;MACrB;KACF,CAE4C;AAE7C,mBAAe,SAAS;AAExB,QAAI,UAAU,eAAe,cAAc,UAAU,WAAW,WAC9D,eAAc;AAGhB,QAAI,UAAU,eAAe,WAAW,UAAU,WAAW,QAC3D,WAAU,SAAS;AAGrB,sBAAkB;YACX,KAAK;AACZ,cAAU,IAAI;AACd,sBAAkB;;MAElB;IACH;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildThemeConfigFromFlowMeta.cjs","names":["scheme: FlowMetaThemeColorScheme | undefined","borderRadius: number | undefined","borderRadiusStr: string | undefined","colors: RecursivePartial<ThemeConfig['colors']> | undefined","bg: RecursivePartial<ThemeConfig['colors']['background']>"],"sources":["../../../../src/utils/v2/buildThemeConfigFromFlowMeta.ts"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FlowMetaTheme, FlowMetaThemeColorScheme, RecursivePartial, ThemeConfig} from '@thunderid/browser';\n\n/**\n * Converts a v2 `FlowMetaTheme` into a `RecursivePartial<ThemeConfig>` that\n * `createTheme` can consume.\n *\n * Only fields explicitly present in the FlowMeta response are included so that\n * `createTheme` can deep-merge them onto its base (light/dark) defaults without\n * accidentally dropping sibling keys that were not returned by the server.\n *\n * For example, when FlowMeta returns only `background.default` and\n * `background.paper`, only `body.main` and `surface` are set — the base\n * theme's `background.disabled` and `background.dark` are **not** overridden\n * and therefore keep their default CSS variable values.\n */\nconst buildThemeConfigFromFlowMeta = (\n flowMetaTheme: FlowMetaTheme,\n colorScheme: 'light' | 'dark',\n): RecursivePartial<ThemeConfig> => {\n const scheme: FlowMetaThemeColorScheme | undefined = flowMetaTheme.colorSchemes?.[colorScheme];\n const borderRadius: number | undefined = flowMetaTheme.shape?.borderRadius;\n const borderRadiusStr: string | undefined = borderRadius !== undefined ? `${borderRadius}px` : undefined;\n\n // Build only the colors that the server actually provided.\n // Each nested object is constructed incrementally so that absent fields are\n // simply omitted rather than set to `undefined`, which would shadow the\n // base-theme defaults inside `createTheme`.\n let colors: RecursivePartial<ThemeConfig['colors']> | undefined;\n\n if (scheme?.palette) {\n colors = {};\n\n if (scheme.palette.primary) {\n colors.primary = scheme.palette.primary;\n }\n if (scheme.palette.secondary) {\n colors.secondary = scheme.palette.secondary;\n }\n if (scheme.palette.text) {\n colors.text = scheme.palette.text;\n }\n\n // Build background incrementally to avoid replacing the full base object.\n if (scheme.palette.background) {\n const bg: RecursivePartial<ThemeConfig['colors']['background']> = {};\n\n if (scheme.palette.background.default) {\n bg.body = {main: scheme.palette.background.default};\n }\n if (scheme.palette.background.paper) {\n bg.surface = scheme.palette.background.paper;\n }\n\n if (Object.keys(bg).length > 0) {\n colors.background = bg;\n }\n }\n }\n\n return {\n ...(flowMetaTheme.direction ? {direction: flowMetaTheme.direction} : {}),\n ...(borderRadiusStr\n ? {\n borderRadius: {\n large: borderRadiusStr,\n medium: borderRadiusStr,\n small: borderRadiusStr,\n },\n }\n : {}),\n ...(colors && Object.keys(colors).length > 0 ? {colors} : {}),\n ...(flowMetaTheme.typography?.fontFamily ? {typography: {fontFamily: flowMetaTheme.typography.fontFamily}} : {}),\n };\n};\n\nexport default buildThemeConfigFromFlowMeta;\n"],"mappings":";;;;;;;;;;;;;;;AAiCA,MAAM,gCACJ,eACA,gBACkC;CAClC,MAAMA,SAA+C,cAAc,eAAe;CAClF,MAAMC,eAAmC,cAAc,OAAO;CAC9D,MAAMC,kBAAsC,iBAAiB,SAAY,GAAG,aAAa,MAAM;CAM/F,IAAIC;AAEJ,KAAI,QAAQ,SAAS;AACnB,WAAS,EAAE;AAEX,MAAI,OAAO,QAAQ,QACjB,QAAO,UAAU,OAAO,QAAQ;AAElC,MAAI,OAAO,QAAQ,UACjB,QAAO,YAAY,OAAO,QAAQ;AAEpC,MAAI,OAAO,QAAQ,KACjB,QAAO,OAAO,OAAO,QAAQ;AAI/B,MAAI,OAAO,QAAQ,YAAY;GAC7B,MAAMC,KAA4D,EAAE;AAEpE,OAAI,OAAO,QAAQ,WAAW,QAC5B,IAAG,OAAO,EAAC,MAAM,OAAO,QAAQ,WAAW,SAAQ;AAErD,OAAI,OAAO,QAAQ,WAAW,MAC5B,IAAG,UAAU,OAAO,QAAQ,WAAW;AAGzC,OAAI,OAAO,KAAK,GAAG,CAAC,SAAS,EAC3B,QAAO,aAAa;;;AAK1B,QAAO;EACL,GAAI,cAAc,YAAY,EAAC,WAAW,cAAc,WAAU,GAAG,EAAE;EACvE,GAAI,kBACA,EACE,cAAc;GACZ,OAAO;GACP,QAAQ;GACR,OAAO;GACR,EACF,GACD,EAAE;EACN,GAAI,UAAU,OAAO,KAAK,OAAO,CAAC,SAAS,IAAI,EAAC,QAAO,GAAG,EAAE;EAC5D,GAAI,cAAc,YAAY,aAAa,EAAC,YAAY,EAAC,YAAY,cAAc,WAAW,YAAW,EAAC,GAAG,EAAE;EAChH;;AAGH,2CAAe"}