@thunderid/react 0.3.0 → 0.3.4

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 (672) hide show
  1. package/dist/ThunderIDReactClient.d.ts +4 -8
  2. package/dist/ThunderIDReactClient.d.ts.map +1 -1
  3. package/dist/ThunderIDReactClient.js +6 -73
  4. package/dist/ThunderIDReactClient.js.map +1 -1
  5. package/dist/cjs/ThunderIDReactClient.cjs +5 -72
  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/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
  18. package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs +57 -0
  19. package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs.map +1 -0
  20. package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs +36 -0
  21. package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs.map +1 -0
  22. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs +6 -5
  23. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs.map +1 -1
  24. package/dist/cjs/components/presentation/UserProfile/BaseUserProfile.cjs +3 -3
  25. package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.cjs → AcceptInvite.cjs} +2 -2
  26. package/dist/cjs/components/presentation/auth/AcceptInvite/AcceptInvite.cjs.map +1 -0
  27. package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.cjs → BaseAcceptInvite.cjs} +47 -18
  28. package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.cjs.map +1 -0
  29. package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.cjs → BaseAcceptInvite.styles.cjs} +2 -2
  30. package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.cjs.map +1 -0
  31. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs +49 -43
  32. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
  33. package/dist/cjs/components/presentation/auth/InviteUser/{v2/BaseInviteUser.cjs → BaseInviteUser.cjs} +44 -15
  34. package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.cjs.map +1 -0
  35. package/dist/cjs/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.cjs → BaseInviteUser.styles.cjs} +2 -2
  36. package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.styles.cjs.map +1 -0
  37. package/dist/cjs/components/presentation/auth/InviteUser/{v2/InviteUser.cjs → InviteUser.cjs} +3 -3
  38. package/dist/cjs/components/presentation/auth/InviteUser/InviteUser.cjs.map +1 -0
  39. package/dist/cjs/components/presentation/auth/Recovery/BaseRecovery.cjs +389 -8
  40. package/dist/cjs/components/presentation/auth/Recovery/BaseRecovery.cjs.map +1 -1
  41. package/dist/cjs/components/presentation/auth/Recovery/Recovery.cjs +51 -22
  42. package/dist/cjs/components/presentation/auth/Recovery/Recovery.cjs.map +1 -1
  43. package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.cjs +346 -8
  44. package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.cjs.map +1 -1
  45. package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs +547 -36
  46. package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs.map +1 -1
  47. package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.cjs +691 -8
  48. package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.cjs.map +1 -1
  49. package/dist/cjs/components/presentation/auth/SignUp/SignUp.cjs +66 -76
  50. package/dist/cjs/components/presentation/auth/SignUp/SignUp.cjs.map +1 -1
  51. package/dist/cjs/components/primitives/Alert/Alert.cjs +1 -1
  52. package/dist/cjs/components/primitives/Checkbox/Checkbox.cjs +1 -1
  53. package/dist/cjs/components/primitives/FormControl/FormControl.cjs +1 -1
  54. package/dist/cjs/components/primitives/Toggle/Toggle.cjs +1 -1
  55. package/dist/cjs/contexts/ComponentRenderer/ComponentRendererContext.cjs.map +1 -1
  56. package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs +5 -7
  57. package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs.map +1 -1
  58. package/dist/cjs/contexts/Theme/ThemeContext.cjs.map +1 -1
  59. package/dist/cjs/contexts/Theme/ThemeProvider.cjs +73 -37
  60. package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
  61. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +0 -3
  62. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
  63. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +14 -93
  64. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  65. package/dist/cjs/hooks/{v2/useOAuthCallback.cjs → useOAuthCallback.cjs} +2 -2
  66. package/dist/cjs/hooks/useOAuthCallback.cjs.map +1 -0
  67. package/dist/cjs/index.cjs +51 -99
  68. package/dist/cjs/utils/{v2/buildThemeConfigFromFlowMeta.cjs → buildThemeConfigFromFlowMeta.cjs} +1 -1
  69. package/dist/cjs/utils/buildThemeConfigFromFlowMeta.cjs.map +1 -0
  70. package/dist/cjs/utils/{v2/flowTransformer.cjs → flowTransformer.cjs} +1 -1
  71. package/dist/cjs/utils/flowTransformer.cjs.map +1 -0
  72. package/dist/cjs/utils/{v2/getAuthComponentHeadings.cjs → getAuthComponentHeadings.cjs} +1 -1
  73. package/dist/cjs/utils/getAuthComponentHeadings.cjs.map +1 -0
  74. package/dist/cjs/utils/{v2/passkey.cjs → passkey.cjs} +2 -2
  75. package/dist/cjs/utils/passkey.cjs.map +1 -0
  76. package/dist/cjs/utils/{v2/resolveTranslationsInArray.cjs → resolveTranslationsInArray.cjs} +1 -1
  77. package/dist/cjs/utils/resolveTranslationsInArray.cjs.map +1 -0
  78. package/dist/cjs/utils/{v2/resolveTranslationsInObject.cjs → resolveTranslationsInObject.cjs} +2 -2
  79. package/dist/cjs/utils/resolveTranslationsInObject.cjs.map +1 -0
  80. package/dist/components/actions/SignInButton/SignInButton.d.ts.map +1 -1
  81. package/dist/components/actions/SignInButton/SignInButton.js.map +1 -1
  82. package/dist/components/adapters/Consent.d.ts +1 -1
  83. package/dist/components/adapters/Consent.d.ts.map +1 -1
  84. package/dist/components/adapters/Consent.js.map +1 -1
  85. package/dist/components/adapters/ConsentCheckboxList.d.ts +1 -1
  86. package/dist/components/adapters/ConsentCheckboxList.d.ts.map +1 -1
  87. package/dist/components/adapters/ConsentCheckboxList.js +1 -1
  88. package/dist/components/adapters/ConsentCheckboxList.js.map +1 -1
  89. package/dist/components/auth/Callback/Callback.d.ts +1 -1
  90. package/dist/components/auth/Callback/Callback.js +1 -1
  91. package/dist/components/auth/Callback/Callback.js.map +1 -1
  92. package/dist/components/auth/Callback/TokenCallback.js +4 -4
  93. package/dist/components/auth/Callback/TokenCallback.js.map +1 -1
  94. package/dist/components/factories/FieldFactory.d.ts +2 -2
  95. package/dist/components/factories/FieldFactory.js +2 -2
  96. package/dist/components/factories/FieldFactory.js.map +1 -1
  97. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
  98. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts +50 -0
  99. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts.map +1 -0
  100. package/dist/components/presentation/UserAvatar/BaseUserAvatar.js +55 -0
  101. package/dist/components/presentation/UserAvatar/BaseUserAvatar.js.map +1 -0
  102. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts +46 -0
  103. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts.map +1 -0
  104. package/dist/components/presentation/UserAvatar/UserAvatar.js +34 -0
  105. package/dist/components/presentation/UserAvatar/UserAvatar.js.map +1 -0
  106. package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts.map +1 -1
  107. package/dist/components/presentation/UserDropdown/BaseUserDropdown.js +6 -5
  108. package/dist/components/presentation/UserDropdown/BaseUserDropdown.js.map +1 -1
  109. package/dist/components/presentation/UserProfile/BaseUserProfile.js +3 -3
  110. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.d.ts.map +1 -0
  111. package/dist/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.js → AcceptInvite.js} +1 -1
  112. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.js.map +1 -0
  113. package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.d.ts → BaseAcceptInvite.d.ts} +3 -2
  114. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.d.ts.map +1 -0
  115. package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.js → BaseAcceptInvite.js} +45 -17
  116. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.js.map +1 -0
  117. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.d.ts.map +1 -0
  118. package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.js → BaseAcceptInvite.styles.js} +1 -1
  119. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.js.map +1 -0
  120. package/dist/components/presentation/auth/AcceptInvite/index.d.ts +4 -4
  121. package/dist/components/presentation/auth/AcceptInvite/index.d.ts.map +1 -1
  122. package/dist/components/presentation/auth/AuthOptionFactory.d.ts +2 -2
  123. package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
  124. package/dist/components/presentation/auth/AuthOptionFactory.js +50 -44
  125. package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
  126. package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.d.ts → BaseInviteUser.d.ts} +3 -2
  127. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.d.ts.map +1 -0
  128. package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.js → BaseInviteUser.js} +44 -15
  129. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.js.map +1 -0
  130. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.d.ts.map +1 -0
  131. package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.js → BaseInviteUser.styles.js} +1 -1
  132. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.js.map +1 -0
  133. package/dist/components/presentation/auth/InviteUser/InviteUser.d.ts.map +1 -0
  134. package/dist/components/presentation/auth/InviteUser/{v2/InviteUser.js → InviteUser.js} +2 -2
  135. package/dist/components/presentation/auth/InviteUser/InviteUser.js.map +1 -0
  136. package/dist/components/presentation/auth/InviteUser/index.d.ts +4 -4
  137. package/dist/components/presentation/auth/InviteUser/index.d.ts.map +1 -1
  138. package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts +63 -4
  139. package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts.map +1 -1
  140. package/dist/components/presentation/auth/Recovery/BaseRecovery.js +389 -10
  141. package/dist/components/presentation/auth/Recovery/BaseRecovery.js.map +1 -1
  142. package/dist/components/presentation/auth/Recovery/Recovery.d.ts +21 -22
  143. package/dist/components/presentation/auth/Recovery/Recovery.d.ts.map +1 -1
  144. package/dist/components/presentation/auth/Recovery/Recovery.js +51 -23
  145. package/dist/components/presentation/auth/Recovery/Recovery.js.map +1 -1
  146. package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts +213 -6
  147. package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts.map +1 -1
  148. package/dist/components/presentation/auth/SignIn/BaseSignIn.js +346 -10
  149. package/dist/components/presentation/auth/SignIn/BaseSignIn.js.map +1 -1
  150. package/dist/components/presentation/auth/SignIn/SignIn.d.ts +122 -13
  151. package/dist/components/presentation/auth/SignIn/SignIn.d.ts.map +1 -1
  152. package/dist/components/presentation/auth/SignIn/SignIn.js +548 -38
  153. package/dist/components/presentation/auth/SignIn/SignIn.js.map +1 -1
  154. package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts +164 -6
  155. package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts.map +1 -1
  156. package/dist/components/presentation/auth/SignUp/BaseSignUp.js +691 -10
  157. package/dist/components/presentation/auth/SignUp/BaseSignUp.js.map +1 -1
  158. package/dist/components/presentation/auth/SignUp/SignUp.d.ts +15 -74
  159. package/dist/components/presentation/auth/SignUp/SignUp.d.ts.map +1 -1
  160. package/dist/components/presentation/auth/SignUp/SignUp.js +67 -77
  161. package/dist/components/presentation/auth/SignUp/SignUp.js.map +1 -1
  162. package/dist/components/primitives/Alert/Alert.js +1 -1
  163. package/dist/components/primitives/Checkbox/Checkbox.js +1 -1
  164. package/dist/components/primitives/FormControl/FormControl.js +1 -1
  165. package/dist/components/primitives/Toggle/Toggle.js +1 -1
  166. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts +1 -1
  167. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts.map +1 -1
  168. package/dist/contexts/ComponentRenderer/ComponentRendererContext.js.map +1 -1
  169. package/dist/contexts/FlowMeta/FlowMetaProvider.d.ts.map +1 -1
  170. package/dist/contexts/FlowMeta/FlowMetaProvider.js +6 -8
  171. package/dist/contexts/FlowMeta/FlowMetaProvider.js.map +1 -1
  172. package/dist/contexts/Theme/ThemeContext.d.ts +0 -12
  173. package/dist/contexts/Theme/ThemeContext.d.ts.map +1 -1
  174. package/dist/contexts/Theme/ThemeContext.js.map +1 -1
  175. package/dist/contexts/Theme/ThemeProvider.d.ts +17 -41
  176. package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
  177. package/dist/contexts/Theme/ThemeProvider.js +73 -38
  178. package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
  179. package/dist/contexts/ThunderID/ThunderIDContext.d.ts +2 -4
  180. package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
  181. package/dist/contexts/ThunderID/ThunderIDContext.js +0 -3
  182. package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
  183. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  184. package/dist/contexts/ThunderID/ThunderIDProvider.js +15 -94
  185. package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  186. package/dist/hooks/useOAuthCallback.d.ts.map +1 -0
  187. package/dist/hooks/{v2/useOAuthCallback.js → useOAuthCallback.js} +1 -1
  188. package/dist/hooks/useOAuthCallback.js.map +1 -0
  189. package/dist/index.d.ts +7 -49
  190. package/dist/index.d.ts.map +1 -1
  191. package/dist/index.js +30 -59
  192. package/dist/utils/buildThemeConfigFromFlowMeta.d.ts.map +1 -0
  193. package/dist/utils/{v2/buildThemeConfigFromFlowMeta.js → buildThemeConfigFromFlowMeta.js} +1 -1
  194. package/dist/utils/buildThemeConfigFromFlowMeta.js.map +1 -0
  195. package/dist/utils/{v2/flowTransformer.d.ts → flowTransformer.d.ts} +3 -3
  196. package/dist/utils/flowTransformer.d.ts.map +1 -0
  197. package/dist/utils/{v2/flowTransformer.js → flowTransformer.js} +1 -1
  198. package/dist/utils/flowTransformer.js.map +1 -0
  199. package/dist/utils/{v2/getAuthComponentHeadings.d.ts → getAuthComponentHeadings.d.ts} +1 -1
  200. package/dist/utils/getAuthComponentHeadings.d.ts.map +1 -0
  201. package/dist/utils/{v2/getAuthComponentHeadings.js → getAuthComponentHeadings.js} +1 -1
  202. package/dist/utils/getAuthComponentHeadings.js.map +1 -0
  203. package/dist/utils/passkey.d.ts.map +1 -0
  204. package/dist/utils/{v2/passkey.js → passkey.js} +1 -1
  205. package/dist/utils/passkey.js.map +1 -0
  206. package/dist/utils/{v2/resolveTranslationsInArray.d.ts → resolveTranslationsInArray.d.ts} +1 -1
  207. package/dist/utils/resolveTranslationsInArray.d.ts.map +1 -0
  208. package/dist/utils/{v2/resolveTranslationsInArray.js → resolveTranslationsInArray.js} +1 -1
  209. package/dist/utils/resolveTranslationsInArray.js.map +1 -0
  210. package/dist/utils/{v2/resolveTranslationsInObject.d.ts → resolveTranslationsInObject.d.ts} +1 -1
  211. package/dist/utils/resolveTranslationsInObject.d.ts.map +1 -0
  212. package/dist/utils/{v2/resolveTranslationsInObject.js → resolveTranslationsInObject.js} +1 -1
  213. package/dist/utils/resolveTranslationsInObject.js.map +1 -0
  214. package/package.json +10 -10
  215. package/dist/api/createOrganization.d.ts +0 -86
  216. package/dist/api/createOrganization.d.ts.map +0 -1
  217. package/dist/api/createOrganization.js +0 -80
  218. package/dist/api/createOrganization.js.map +0 -1
  219. package/dist/api/getAllOrganizations.d.ts +0 -78
  220. package/dist/api/getAllOrganizations.d.ts.map +0 -1
  221. package/dist/api/getAllOrganizations.js +0 -71
  222. package/dist/api/getAllOrganizations.js.map +0 -1
  223. package/dist/api/getMeOrganizations.d.ts +0 -82
  224. package/dist/api/getMeOrganizations.d.ts.map +0 -1
  225. package/dist/api/getMeOrganizations.js +0 -75
  226. package/dist/api/getMeOrganizations.js.map +0 -1
  227. package/dist/api/getOrganization.d.ts +0 -74
  228. package/dist/api/getOrganization.d.ts.map +0 -1
  229. package/dist/api/getOrganization.js +0 -67
  230. package/dist/api/getOrganization.js.map +0 -1
  231. package/dist/api/getSchemas.d.ts +0 -72
  232. package/dist/api/getSchemas.d.ts.map +0 -1
  233. package/dist/api/getSchemas.js +0 -65
  234. package/dist/api/getSchemas.js.map +0 -1
  235. package/dist/api/updateOrganization.d.ts +0 -81
  236. package/dist/api/updateOrganization.d.ts.map +0 -1
  237. package/dist/api/updateOrganization.js +0 -74
  238. package/dist/api/updateOrganization.js.map +0 -1
  239. package/dist/cjs/api/createOrganization.cjs +0 -82
  240. package/dist/cjs/api/createOrganization.cjs.map +0 -1
  241. package/dist/cjs/api/getAllOrganizations.cjs +0 -73
  242. package/dist/cjs/api/getAllOrganizations.cjs.map +0 -1
  243. package/dist/cjs/api/getMeOrganizations.cjs +0 -77
  244. package/dist/cjs/api/getMeOrganizations.cjs.map +0 -1
  245. package/dist/cjs/api/getOrganization.cjs +0 -69
  246. package/dist/cjs/api/getOrganization.cjs.map +0 -1
  247. package/dist/cjs/api/getSchemas.cjs +0 -67
  248. package/dist/cjs/api/getSchemas.cjs.map +0 -1
  249. package/dist/cjs/api/updateOrganization.cjs +0 -76
  250. package/dist/cjs/api/updateOrganization.cjs.map +0 -1
  251. package/dist/cjs/components/adapters/CheckboxInput.cjs +0 -30
  252. package/dist/cjs/components/adapters/CheckboxInput.cjs.map +0 -1
  253. package/dist/cjs/components/adapters/DateInput.cjs +0 -30
  254. package/dist/cjs/components/adapters/DateInput.cjs.map +0 -1
  255. package/dist/cjs/components/adapters/DividerComponent.cjs +0 -24
  256. package/dist/cjs/components/adapters/DividerComponent.cjs.map +0 -1
  257. package/dist/cjs/components/adapters/EmailInput.cjs +0 -30
  258. package/dist/cjs/components/adapters/EmailInput.cjs.map +0 -1
  259. package/dist/cjs/components/adapters/FormContainer.cjs +0 -36
  260. package/dist/cjs/components/adapters/FormContainer.cjs.map +0 -1
  261. package/dist/cjs/components/adapters/NumberInput.cjs +0 -30
  262. package/dist/cjs/components/adapters/NumberInput.cjs.map +0 -1
  263. package/dist/cjs/components/adapters/PasswordInput.cjs +0 -52
  264. package/dist/cjs/components/adapters/PasswordInput.cjs.map +0 -1
  265. package/dist/cjs/components/adapters/SelectInput.cjs +0 -36
  266. package/dist/cjs/components/adapters/SelectInput.cjs.map +0 -1
  267. package/dist/cjs/components/adapters/SubmitButton.cjs +0 -61
  268. package/dist/cjs/components/adapters/SubmitButton.cjs.map +0 -1
  269. package/dist/cjs/components/adapters/TelephoneInput.cjs +0 -32
  270. package/dist/cjs/components/adapters/TelephoneInput.cjs.map +0 -1
  271. package/dist/cjs/components/adapters/TextInput.cjs +0 -30
  272. package/dist/cjs/components/adapters/TextInput.cjs.map +0 -1
  273. package/dist/cjs/components/adapters/Typography.cjs +0 -60
  274. package/dist/cjs/components/adapters/Typography.cjs.map +0 -1
  275. package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs +0 -34
  276. package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs.map +0 -1
  277. package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs +0 -58
  278. package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs.map +0 -1
  279. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs +0 -183
  280. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs.map +0 -1
  281. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs +0 -150
  282. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs.map +0 -1
  283. package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs +0 -90
  284. package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs.map +0 -1
  285. package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs +0 -41
  286. package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs.map +0 -1
  287. package/dist/cjs/components/presentation/Organization/Organization.cjs +0 -49
  288. package/dist/cjs/components/presentation/Organization/Organization.cjs.map +0 -1
  289. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs +0 -257
  290. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs.map +0 -1
  291. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs +0 -236
  292. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs.map +0 -1
  293. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs +0 -86
  294. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs.map +0 -1
  295. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs +0 -75
  296. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs.map +0 -1
  297. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs +0 -328
  298. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs.map +0 -1
  299. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs +0 -166
  300. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs.map +0 -1
  301. package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs +0 -126
  302. package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs.map +0 -1
  303. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs +0 -288
  304. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs.map +0 -1
  305. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs +0 -237
  306. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs.map +0 -1
  307. package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs +0 -127
  308. package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs.map +0 -1
  309. package/dist/cjs/components/presentation/auth/AcceptInvite/v2/AcceptInvite.cjs.map +0 -1
  310. package/dist/cjs/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.cjs.map +0 -1
  311. package/dist/cjs/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.cjs.map +0 -1
  312. package/dist/cjs/components/presentation/auth/InviteUser/v2/BaseInviteUser.cjs.map +0 -1
  313. package/dist/cjs/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.cjs.map +0 -1
  314. package/dist/cjs/components/presentation/auth/InviteUser/v2/InviteUser.cjs.map +0 -1
  315. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.cjs +0 -183
  316. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.cjs.map +0 -1
  317. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.cjs +0 -128
  318. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.cjs.map +0 -1
  319. package/dist/cjs/components/presentation/auth/Recovery/v1/BaseRecovery.cjs +0 -293
  320. package/dist/cjs/components/presentation/auth/Recovery/v1/BaseRecovery.cjs.map +0 -1
  321. package/dist/cjs/components/presentation/auth/Recovery/v1/Recovery.cjs +0 -43
  322. package/dist/cjs/components/presentation/auth/Recovery/v1/Recovery.cjs.map +0 -1
  323. package/dist/cjs/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.cjs +0 -163
  324. package/dist/cjs/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.cjs.map +0 -1
  325. package/dist/cjs/components/presentation/auth/Recovery/v2/BaseRecovery.cjs +0 -378
  326. package/dist/cjs/components/presentation/auth/Recovery/v2/BaseRecovery.cjs.map +0 -1
  327. package/dist/cjs/components/presentation/auth/Recovery/v2/Recovery.cjs +0 -78
  328. package/dist/cjs/components/presentation/auth/Recovery/v2/Recovery.cjs.map +0 -1
  329. package/dist/cjs/components/presentation/auth/SignIn/v1/BaseSignIn.cjs +0 -734
  330. package/dist/cjs/components/presentation/auth/SignIn/v1/BaseSignIn.cjs.map +0 -1
  331. package/dist/cjs/components/presentation/auth/SignIn/v1/options/EmailOtp.cjs +0 -68
  332. package/dist/cjs/components/presentation/auth/SignIn/v1/options/EmailOtp.cjs.map +0 -1
  333. package/dist/cjs/components/presentation/auth/SignIn/v1/options/IdentifierFirst.cjs +0 -59
  334. package/dist/cjs/components/presentation/auth/SignIn/v1/options/IdentifierFirst.cjs.map +0 -1
  335. package/dist/cjs/components/presentation/auth/SignIn/v1/options/MultiOptionButton.cjs +0 -139
  336. package/dist/cjs/components/presentation/auth/SignIn/v1/options/MultiOptionButton.cjs.map +0 -1
  337. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.cjs +0 -147
  338. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.cjs.map +0 -1
  339. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SmsOtp.cjs +0 -68
  340. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SmsOtp.cjs.map +0 -1
  341. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SocialButton.cjs +0 -38
  342. package/dist/cjs/components/presentation/auth/SignIn/v1/options/SocialButton.cjs.map +0 -1
  343. package/dist/cjs/components/presentation/auth/SignIn/v1/options/Totp.cjs +0 -68
  344. package/dist/cjs/components/presentation/auth/SignIn/v1/options/Totp.cjs.map +0 -1
  345. package/dist/cjs/components/presentation/auth/SignIn/v1/options/UsernamePassword.cjs +0 -60
  346. package/dist/cjs/components/presentation/auth/SignIn/v1/options/UsernamePassword.cjs.map +0 -1
  347. package/dist/cjs/components/presentation/auth/SignIn/v2/BaseSignIn.cjs +0 -330
  348. package/dist/cjs/components/presentation/auth/SignIn/v2/BaseSignIn.cjs.map +0 -1
  349. package/dist/cjs/components/presentation/auth/SignIn/v2/SignIn.cjs +0 -560
  350. package/dist/cjs/components/presentation/auth/SignIn/v2/SignIn.cjs.map +0 -1
  351. package/dist/cjs/components/presentation/auth/SignUp/v1/BaseSignUp.cjs +0 -451
  352. package/dist/cjs/components/presentation/auth/SignUp/v1/BaseSignUp.cjs.map +0 -1
  353. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUp.cjs +0 -54
  354. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUp.cjs.map +0 -1
  355. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUpOptionFactory.cjs +0 -164
  356. package/dist/cjs/components/presentation/auth/SignUp/v1/SignUpOptionFactory.cjs.map +0 -1
  357. package/dist/cjs/components/presentation/auth/SignUp/v2/BaseSignUp.cjs +0 -679
  358. package/dist/cjs/components/presentation/auth/SignUp/v2/BaseSignUp.cjs.map +0 -1
  359. package/dist/cjs/components/presentation/auth/SignUp/v2/SignUp.cjs +0 -80
  360. package/dist/cjs/components/presentation/auth/SignUp/v2/SignUp.cjs.map +0 -1
  361. package/dist/cjs/components/primitives/Icons/Building.cjs +0 -75
  362. package/dist/cjs/components/primitives/Icons/Building.cjs.map +0 -1
  363. package/dist/cjs/contexts/Branding/BrandingContext.cjs +0 -12
  364. package/dist/cjs/contexts/Branding/BrandingContext.cjs.map +0 -1
  365. package/dist/cjs/contexts/Branding/BrandingProvider.cjs +0 -96
  366. package/dist/cjs/contexts/Branding/BrandingProvider.cjs.map +0 -1
  367. package/dist/cjs/contexts/Branding/useBrandingContext.cjs +0 -40
  368. package/dist/cjs/contexts/Branding/useBrandingContext.cjs.map +0 -1
  369. package/dist/cjs/contexts/Organization/OrganizationContext.cjs +0 -27
  370. package/dist/cjs/contexts/Organization/OrganizationContext.cjs.map +0 -1
  371. package/dist/cjs/contexts/Organization/OrganizationProvider.cjs +0 -97
  372. package/dist/cjs/contexts/Organization/OrganizationProvider.cjs.map +0 -1
  373. package/dist/cjs/contexts/Organization/useOrganization.cjs +0 -100
  374. package/dist/cjs/contexts/Organization/useOrganization.cjs.map +0 -1
  375. package/dist/cjs/contexts/Theme/v1/ThemeProvider.cjs +0 -190
  376. package/dist/cjs/contexts/Theme/v1/ThemeProvider.cjs.map +0 -1
  377. package/dist/cjs/contexts/Theme/v2/ThemeProvider.cjs +0 -108
  378. package/dist/cjs/contexts/Theme/v2/ThemeProvider.cjs.map +0 -1
  379. package/dist/cjs/hooks/useBranding.cjs +0 -71
  380. package/dist/cjs/hooks/useBranding.cjs.map +0 -1
  381. package/dist/cjs/hooks/v2/useOAuthCallback.cjs.map +0 -1
  382. package/dist/cjs/utils/v2/buildThemeConfigFromFlowMeta.cjs.map +0 -1
  383. package/dist/cjs/utils/v2/flowTransformer.cjs.map +0 -1
  384. package/dist/cjs/utils/v2/getAuthComponentHeadings.cjs.map +0 -1
  385. package/dist/cjs/utils/v2/passkey.cjs.map +0 -1
  386. package/dist/cjs/utils/v2/resolveTranslationsInArray.cjs.map +0 -1
  387. package/dist/cjs/utils/v2/resolveTranslationsInObject.cjs.map +0 -1
  388. package/dist/components/adapters/CheckboxInput.d.ts +0 -25
  389. package/dist/components/adapters/CheckboxInput.d.ts.map +0 -1
  390. package/dist/components/adapters/CheckboxInput.js +0 -28
  391. package/dist/components/adapters/CheckboxInput.js.map +0 -1
  392. package/dist/components/adapters/DateInput.d.ts +0 -25
  393. package/dist/components/adapters/DateInput.d.ts.map +0 -1
  394. package/dist/components/adapters/DateInput.js +0 -28
  395. package/dist/components/adapters/DateInput.js.map +0 -1
  396. package/dist/components/adapters/DividerComponent.d.ts +0 -25
  397. package/dist/components/adapters/DividerComponent.d.ts.map +0 -1
  398. package/dist/components/adapters/DividerComponent.js +0 -22
  399. package/dist/components/adapters/DividerComponent.js.map +0 -1
  400. package/dist/components/adapters/EmailInput.d.ts +0 -25
  401. package/dist/components/adapters/EmailInput.d.ts.map +0 -1
  402. package/dist/components/adapters/EmailInput.js +0 -28
  403. package/dist/components/adapters/EmailInput.js.map +0 -1
  404. package/dist/components/adapters/FormContainer.d.ts +0 -25
  405. package/dist/components/adapters/FormContainer.d.ts.map +0 -1
  406. package/dist/components/adapters/FormContainer.js +0 -34
  407. package/dist/components/adapters/FormContainer.js.map +0 -1
  408. package/dist/components/adapters/NumberInput.d.ts +0 -25
  409. package/dist/components/adapters/NumberInput.d.ts.map +0 -1
  410. package/dist/components/adapters/NumberInput.js +0 -28
  411. package/dist/components/adapters/NumberInput.js.map +0 -1
  412. package/dist/components/adapters/PasswordInput.d.ts +0 -25
  413. package/dist/components/adapters/PasswordInput.d.ts.map +0 -1
  414. package/dist/components/adapters/PasswordInput.js +0 -50
  415. package/dist/components/adapters/PasswordInput.js.map +0 -1
  416. package/dist/components/adapters/SelectInput.d.ts +0 -25
  417. package/dist/components/adapters/SelectInput.d.ts.map +0 -1
  418. package/dist/components/adapters/SelectInput.js +0 -34
  419. package/dist/components/adapters/SelectInput.js.map +0 -1
  420. package/dist/components/adapters/SocialButton.d.ts +0 -25
  421. package/dist/components/adapters/SocialButton.d.ts.map +0 -1
  422. package/dist/components/adapters/SubmitButton.d.ts +0 -25
  423. package/dist/components/adapters/SubmitButton.d.ts.map +0 -1
  424. package/dist/components/adapters/SubmitButton.js +0 -59
  425. package/dist/components/adapters/SubmitButton.js.map +0 -1
  426. package/dist/components/adapters/TelephoneInput.d.ts +0 -25
  427. package/dist/components/adapters/TelephoneInput.d.ts.map +0 -1
  428. package/dist/components/adapters/TelephoneInput.js +0 -30
  429. package/dist/components/adapters/TelephoneInput.js.map +0 -1
  430. package/dist/components/adapters/TextInput.d.ts +0 -25
  431. package/dist/components/adapters/TextInput.d.ts.map +0 -1
  432. package/dist/components/adapters/TextInput.js +0 -28
  433. package/dist/components/adapters/TextInput.js.map +0 -1
  434. package/dist/components/adapters/Typography.d.ts +0 -25
  435. package/dist/components/adapters/Typography.d.ts.map +0 -1
  436. package/dist/components/adapters/Typography.js +0 -58
  437. package/dist/components/adapters/Typography.js.map +0 -1
  438. package/dist/components/control/OrganizationContext/OrganizationContext.d.ts +0 -40
  439. package/dist/components/control/OrganizationContext/OrganizationContext.d.ts.map +0 -1
  440. package/dist/components/control/OrganizationContext/OrganizationContext.js +0 -32
  441. package/dist/components/control/OrganizationContext/OrganizationContext.js.map +0 -1
  442. package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts +0 -35
  443. package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts.map +0 -1
  444. package/dist/components/control/OrganizationContext/OrganizationContextController.js +0 -55
  445. package/dist/components/control/OrganizationContext/OrganizationContextController.js.map +0 -1
  446. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts +0 -60
  447. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts.map +0 -1
  448. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js +0 -178
  449. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js.map +0 -1
  450. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts +0 -27
  451. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts.map +0 -1
  452. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js +0 -147
  453. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js.map +0 -1
  454. package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts +0 -68
  455. package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts.map +0 -1
  456. package/dist/components/presentation/CreateOrganization/CreateOrganization.js +0 -87
  457. package/dist/components/presentation/CreateOrganization/CreateOrganization.js.map +0 -1
  458. package/dist/components/presentation/Organization/BaseOrganization.d.ts +0 -67
  459. package/dist/components/presentation/Organization/BaseOrganization.d.ts.map +0 -1
  460. package/dist/components/presentation/Organization/BaseOrganization.js +0 -39
  461. package/dist/components/presentation/Organization/BaseOrganization.js.map +0 -1
  462. package/dist/components/presentation/Organization/Organization.d.ts +0 -67
  463. package/dist/components/presentation/Organization/Organization.d.ts.map +0 -1
  464. package/dist/components/presentation/Organization/Organization.js +0 -47
  465. package/dist/components/presentation/Organization/Organization.js.map +0 -1
  466. package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts +0 -135
  467. package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts.map +0 -1
  468. package/dist/components/presentation/OrganizationList/BaseOrganizationList.js +0 -252
  469. package/dist/components/presentation/OrganizationList/BaseOrganizationList.js.map +0 -1
  470. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts +0 -27
  471. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts.map +0 -1
  472. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js +0 -233
  473. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js.map +0 -1
  474. package/dist/components/presentation/OrganizationList/OrganizationList.d.ts +0 -93
  475. package/dist/components/presentation/OrganizationList/OrganizationList.d.ts.map +0 -1
  476. package/dist/components/presentation/OrganizationList/OrganizationList.js +0 -82
  477. package/dist/components/presentation/OrganizationList/OrganizationList.js.map +0 -1
  478. package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts +0 -27
  479. package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts.map +0 -1
  480. package/dist/components/presentation/OrganizationList/OrganizationList.styles.js +0 -72
  481. package/dist/components/presentation/OrganizationList/OrganizationList.styles.js.map +0 -1
  482. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts +0 -160
  483. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts.map +0 -1
  484. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js +0 -323
  485. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js.map +0 -1
  486. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts +0 -27
  487. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts.map +0 -1
  488. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js +0 -163
  489. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js.map +0 -1
  490. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts +0 -120
  491. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts.map +0 -1
  492. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js +0 -122
  493. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js.map +0 -1
  494. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts +0 -149
  495. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts.map +0 -1
  496. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js +0 -282
  497. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js.map +0 -1
  498. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts +0 -27
  499. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts.map +0 -1
  500. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js +0 -234
  501. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js.map +0 -1
  502. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts +0 -71
  503. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts.map +0 -1
  504. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js +0 -124
  505. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js.map +0 -1
  506. package/dist/components/presentation/auth/AcceptInvite/v2/AcceptInvite.d.ts.map +0 -1
  507. package/dist/components/presentation/auth/AcceptInvite/v2/AcceptInvite.js.map +0 -1
  508. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.d.ts.map +0 -1
  509. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.js.map +0 -1
  510. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.d.ts.map +0 -1
  511. package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.js.map +0 -1
  512. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.d.ts.map +0 -1
  513. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.js.map +0 -1
  514. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.d.ts.map +0 -1
  515. package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.js.map +0 -1
  516. package/dist/components/presentation/auth/InviteUser/v2/InviteUser.d.ts.map +0 -1
  517. package/dist/components/presentation/auth/InviteUser/v2/InviteUser.js.map +0 -1
  518. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts +0 -20
  519. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts.map +0 -1
  520. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.d.ts +0 -30
  521. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.d.ts.map +0 -1
  522. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.js +0 -179
  523. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.js.map +0 -1
  524. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.d.ts +0 -21
  525. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.d.ts.map +0 -1
  526. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.js +0 -125
  527. package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.js.map +0 -1
  528. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.d.ts +0 -74
  529. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.d.ts.map +0 -1
  530. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.js +0 -288
  531. package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.js.map +0 -1
  532. package/dist/components/presentation/auth/Recovery/v1/Recovery.d.ts +0 -26
  533. package/dist/components/presentation/auth/Recovery/v1/Recovery.d.ts.map +0 -1
  534. package/dist/components/presentation/auth/Recovery/v1/Recovery.js +0 -40
  535. package/dist/components/presentation/auth/Recovery/v1/Recovery.js.map +0 -1
  536. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.d.ts +0 -46
  537. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.d.ts.map +0 -1
  538. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.js +0 -160
  539. package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.js.map +0 -1
  540. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.d.ts +0 -83
  541. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.d.ts.map +0 -1
  542. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.js +0 -373
  543. package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.js.map +0 -1
  544. package/dist/components/presentation/auth/Recovery/v2/Recovery.d.ts +0 -56
  545. package/dist/components/presentation/auth/Recovery/v2/Recovery.d.ts.map +0 -1
  546. package/dist/components/presentation/auth/Recovery/v2/Recovery.js +0 -74
  547. package/dist/components/presentation/auth/Recovery/v2/Recovery.js.map +0 -1
  548. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.d.ts +0 -131
  549. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.d.ts.map +0 -1
  550. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.js +0 -729
  551. package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.js.map +0 -1
  552. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.d.ts +0 -26
  553. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.d.ts.map +0 -1
  554. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.js +0 -64
  555. package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.js.map +0 -1
  556. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.d.ts +0 -26
  557. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.d.ts.map +0 -1
  558. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.js +0 -55
  559. package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.js.map +0 -1
  560. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.d.ts +0 -27
  561. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.d.ts.map +0 -1
  562. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.js +0 -136
  563. package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.js.map +0 -1
  564. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.d.ts +0 -77
  565. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.d.ts.map +0 -1
  566. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.js +0 -143
  567. package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.js.map +0 -1
  568. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.d.ts +0 -26
  569. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.d.ts.map +0 -1
  570. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.js +0 -64
  571. package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.js.map +0 -1
  572. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.d.ts +0 -26
  573. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.d.ts.map +0 -1
  574. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.js +0 -36
  575. package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.js.map +0 -1
  576. package/dist/components/presentation/auth/SignIn/v1/options/Totp.d.ts +0 -26
  577. package/dist/components/presentation/auth/SignIn/v1/options/Totp.d.ts.map +0 -1
  578. package/dist/components/presentation/auth/SignIn/v1/options/Totp.js +0 -64
  579. package/dist/components/presentation/auth/SignIn/v1/options/Totp.js.map +0 -1
  580. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.d.ts +0 -26
  581. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.d.ts.map +0 -1
  582. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.js +0 -56
  583. package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.js.map +0 -1
  584. package/dist/components/presentation/auth/SignIn/v1/types.d.ts +0 -125
  585. package/dist/components/presentation/auth/SignIn/v1/types.d.ts.map +0 -1
  586. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.d.ts +0 -222
  587. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.d.ts.map +0 -1
  588. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.js +0 -325
  589. package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.js.map +0 -1
  590. package/dist/components/presentation/auth/SignIn/v2/SignIn.d.ts +0 -165
  591. package/dist/components/presentation/auth/SignIn/v2/SignIn.d.ts.map +0 -1
  592. package/dist/components/presentation/auth/SignIn/v2/SignIn.js +0 -556
  593. package/dist/components/presentation/auth/SignIn/v2/SignIn.js.map +0 -1
  594. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.d.ts +0 -174
  595. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.d.ts.map +0 -1
  596. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.js +0 -446
  597. package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.js.map +0 -1
  598. package/dist/components/presentation/auth/SignUp/v1/SignUp.d.ts +0 -39
  599. package/dist/components/presentation/auth/SignUp/v1/SignUp.d.ts.map +0 -1
  600. package/dist/components/presentation/auth/SignUp/v1/SignUp.js +0 -51
  601. package/dist/components/presentation/auth/SignUp/v1/SignUp.js.map +0 -1
  602. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.d.ts +0 -46
  603. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.d.ts.map +0 -1
  604. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.js +0 -160
  605. package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.js.map +0 -1
  606. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.d.ts +0 -186
  607. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.d.ts.map +0 -1
  608. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.js +0 -674
  609. package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.js.map +0 -1
  610. package/dist/components/presentation/auth/SignUp/v2/SignUp.d.ts +0 -39
  611. package/dist/components/presentation/auth/SignUp/v2/SignUp.d.ts.map +0 -1
  612. package/dist/components/presentation/auth/SignUp/v2/SignUp.js +0 -77
  613. package/dist/components/presentation/auth/SignUp/v2/SignUp.js.map +0 -1
  614. package/dist/components/primitives/Icons/Building.js +0 -73
  615. package/dist/components/primitives/Icons/Building.js.map +0 -1
  616. package/dist/contexts/Branding/BrandingContext.d.ts +0 -53
  617. package/dist/contexts/Branding/BrandingContext.d.ts.map +0 -1
  618. package/dist/contexts/Branding/BrandingContext.js +0 -10
  619. package/dist/contexts/Branding/BrandingContext.js.map +0 -1
  620. package/dist/contexts/Branding/BrandingProvider.d.ts +0 -89
  621. package/dist/contexts/Branding/BrandingProvider.d.ts.map +0 -1
  622. package/dist/contexts/Branding/BrandingProvider.js +0 -92
  623. package/dist/contexts/Branding/BrandingProvider.js.map +0 -1
  624. package/dist/contexts/Branding/useBrandingContext.d.ts +0 -45
  625. package/dist/contexts/Branding/useBrandingContext.d.ts.map +0 -1
  626. package/dist/contexts/Branding/useBrandingContext.js +0 -38
  627. package/dist/contexts/Branding/useBrandingContext.js.map +0 -1
  628. package/dist/contexts/Organization/OrganizationContext.d.ts +0 -41
  629. package/dist/contexts/Organization/OrganizationContext.d.ts.map +0 -1
  630. package/dist/contexts/Organization/OrganizationContext.js +0 -25
  631. package/dist/contexts/Organization/OrganizationContext.js.map +0 -1
  632. package/dist/contexts/Organization/OrganizationProvider.d.ts +0 -94
  633. package/dist/contexts/Organization/OrganizationProvider.d.ts.map +0 -1
  634. package/dist/contexts/Organization/OrganizationProvider.js +0 -93
  635. package/dist/contexts/Organization/OrganizationProvider.js.map +0 -1
  636. package/dist/contexts/Organization/useOrganization.d.ts +0 -105
  637. package/dist/contexts/Organization/useOrganization.d.ts.map +0 -1
  638. package/dist/contexts/Organization/useOrganization.js +0 -98
  639. package/dist/contexts/Organization/useOrganization.js.map +0 -1
  640. package/dist/contexts/Theme/v1/ThemeProvider.d.ts +0 -89
  641. package/dist/contexts/Theme/v1/ThemeProvider.d.ts.map +0 -1
  642. package/dist/contexts/Theme/v1/ThemeProvider.js +0 -186
  643. package/dist/contexts/Theme/v1/ThemeProvider.js.map +0 -1
  644. package/dist/contexts/Theme/v2/ThemeProvider.d.ts +0 -58
  645. package/dist/contexts/Theme/v2/ThemeProvider.d.ts.map +0 -1
  646. package/dist/contexts/Theme/v2/ThemeProvider.js +0 -104
  647. package/dist/contexts/Theme/v2/ThemeProvider.js.map +0 -1
  648. package/dist/hooks/useBranding.d.ts +0 -128
  649. package/dist/hooks/useBranding.d.ts.map +0 -1
  650. package/dist/hooks/useBranding.js +0 -69
  651. package/dist/hooks/useBranding.js.map +0 -1
  652. package/dist/hooks/v2/useOAuthCallback.d.ts.map +0 -1
  653. package/dist/hooks/v2/useOAuthCallback.js.map +0 -1
  654. package/dist/utils/v2/buildThemeConfigFromFlowMeta.d.ts.map +0 -1
  655. package/dist/utils/v2/buildThemeConfigFromFlowMeta.js.map +0 -1
  656. package/dist/utils/v2/flowTransformer.d.ts.map +0 -1
  657. package/dist/utils/v2/flowTransformer.js.map +0 -1
  658. package/dist/utils/v2/getAuthComponentHeadings.d.ts.map +0 -1
  659. package/dist/utils/v2/getAuthComponentHeadings.js.map +0 -1
  660. package/dist/utils/v2/passkey.d.ts.map +0 -1
  661. package/dist/utils/v2/passkey.js.map +0 -1
  662. package/dist/utils/v2/resolveTranslationsInArray.d.ts.map +0 -1
  663. package/dist/utils/v2/resolveTranslationsInArray.js.map +0 -1
  664. package/dist/utils/v2/resolveTranslationsInObject.d.ts.map +0 -1
  665. package/dist/utils/v2/resolveTranslationsInObject.js.map +0 -1
  666. /package/dist/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.d.ts → AcceptInvite.d.ts} +0 -0
  667. /package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.d.ts → BaseAcceptInvite.styles.d.ts} +0 -0
  668. /package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.d.ts → BaseInviteUser.styles.d.ts} +0 -0
  669. /package/dist/components/presentation/auth/InviteUser/{v2/InviteUser.d.ts → InviteUser.d.ts} +0 -0
  670. /package/dist/hooks/{v2/useOAuthCallback.d.ts → useOAuthCallback.d.ts} +0 -0
  671. /package/dist/utils/{v2/buildThemeConfigFromFlowMeta.d.ts → buildThemeConfigFromFlowMeta.d.ts} +0 -0
  672. /package/dist/utils/{v2/passkey.d.ts → passkey.d.ts} +0 -0
@@ -1,69 +1,105 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
- const require_useThunderID = require('../ThunderID/useThunderID.cjs');
3
- const require_ThemeProvider = require('./v1/ThemeProvider.cjs');
4
- const require_ThemeProvider$1 = require('./v2/ThemeProvider.cjs');
2
+ const require_FlowMetaContext = require('../FlowMeta/FlowMetaContext.cjs');
3
+ const require_ThemeContext = require('./ThemeContext.cjs');
4
+ const require_applyThemeToDOM = require('../../utils/applyThemeToDOM.cjs');
5
+ const require_buildThemeConfigFromFlowMeta = require('../../utils/buildThemeConfigFromFlowMeta.cjs');
6
+ const require_normalizeThemeConfig = require('../../utils/normalizeThemeConfig.cjs');
5
7
  let __thunderid_browser = require("@thunderid/browser");
6
8
  __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
9
+ let react = require("react");
10
+ react = require_rolldown_runtime.__toESM(react);
7
11
  let react_jsx_runtime = require("react/jsx-runtime");
8
12
  react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
9
13
 
10
14
  //#region src/contexts/Theme/ThemeProvider.tsx
11
15
  /**
12
- * ThemeProvider is the single entry-point for theme management in `@thunderid/react`.
16
+ * ThemeProvider is the v2 drop-in replacement for `ThemeProvider`.
13
17
  *
14
- * It transparently switches between two internal implementations:
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.
15
22
  *
16
- * **v1** (`ThemeProvider` classic): Sources colors from the ThunderID Branding API.
17
- * Used automatically when no `FlowMetaProvider` is present in the component tree.
18
- *
19
- * **v2** (`FlowMetaThemeProvider`): Sources colors from the `GET /flow/meta` endpoint
20
- * via `FlowMetaProvider`. Used automatically when a `FlowMetaProvider` is present
21
- * in the tree — or when `version="v2"` is set explicitly.
22
- *
23
- * The active version can also be pinned explicitly via the `version` prop.
24
- * All components that consume `useTheme()` continue to work regardless of which
25
- * version is active.
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
26
  *
27
27
  * @example
28
- * Auto-detection (recommended):
29
28
  * ```tsx
30
- * // v2 mode – FlowMetaProvider is present
31
29
  * <FlowMetaProvider config={{ baseUrl, type: FlowMetaType.App, id: appId }}>
32
30
  * <ThemeProvider>
33
- * <App />
31
+ * <App /> {/* useTheme() works here as usual *\/}
34
32
  * </ThemeProvider>
35
33
  * </FlowMetaProvider>
36
- *
37
- * // v1 mode – no FlowMetaProvider
38
- * <ThemeProvider>
39
- * <App />
40
- * </ThemeProvider>
41
34
  * ```
42
35
  *
43
36
  * @example
44
- * Explicit version pinning:
37
+ * With user theme overrides (user values win over server values):
45
38
  * ```tsx
46
- * <ThemeProvider version="v2">
39
+ * <ThemeProvider theme={{ colors: { primary: { main: '#ff0000' } } }}>
47
40
  * <App />
48
41
  * </ThemeProvider>
49
42
  * ```
50
43
  */
51
- const ThemeProvider = ({ children, theme, detection, inheritFromBranding, mode }) => {
52
- const { platform } = require_useThunderID.default();
53
- if (platform === __thunderid_browser.Platform.ThunderID) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeProvider$1.default, {
54
- theme,
55
- children
56
- });
57
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeProvider.default, {
58
- detection,
59
- inheritFromBranding,
60
- mode,
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
+ flowMetaContext?.isLoading;
49
+ flowMetaContext?.error;
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
+ colorScheme,
92
+ direction,
61
93
  theme,
94
+ toggleTheme
95
+ };
96
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeContext.default.Provider, {
97
+ value,
62
98
  children
63
99
  });
64
100
  };
65
- var ThemeProvider_default$2 = ThemeProvider;
101
+ var ThemeProvider_default = ThemeProvider;
66
102
 
67
103
  //#endregion
68
- exports.default = ThemeProvider_default$2;
104
+ exports.default = ThemeProvider_default;
69
105
  //# sourceMappingURL=ThemeProvider.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.cjs","names":["ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>>","useThunderID","Platform","ThemeProviderV2","V1ThemeProvider"],"sources":["../../../../src/contexts/Theme/ThemeProvider.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, 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 BrowserThemeDetection,\n Platform,\n RecursivePartial,\n ThemeConfig,\n ThemeMode,\n ThemePreferences,\n} from '@thunderid/browser';\nimport {FC, PropsWithChildren, ReactElement} from 'react';\nimport V1ThemeProvider from './v1/ThemeProvider';\nimport ThemeProviderV2, {ThemeProviderProps as ThemeProviderV2Props} from './v2/ThemeProvider';\nimport useThunderID from '../ThunderID/useThunderID';\n\nexport interface ThemeProviderProps {\n // ─── v1 props (ignored in v2 mode) ──────────────────────────────────────────\n /**\n * Configuration for theme detection when using 'class' or 'system' mode.\n */\n detection?: BrowserThemeDetection;\n /**\n * Whether to inherit the theme from the ThunderID branding preference.\n * @default true\n */\n inheritFromBranding?: ThemePreferences['inheritFromBranding'];\n /**\n * The theme mode to use for automatic detection.\n * - `'light'` | `'dark'`: Fixed color scheme.\n * - `'system'`: Follows the OS preference.\n * - `'class'`: Detects theme from CSS classes on the `<html>` element.\n * - `'branding'`: Follows the active theme from the branding preference.\n */\n mode?: ThemeMode | 'branding';\n\n // ─── shared ──────────────────────────────────────────────────────────────────\n /**\n * Optional partial theme overrides applied on top of the resolved theme.\n * User-supplied values always take the highest precedence.\n */\n theme?: RecursivePartial<ThemeConfig>;\n}\n\n/**\n * ThemeProvider is the single entry-point for theme management in `@thunderid/react`.\n *\n * It transparently switches between two internal implementations:\n *\n * **v1** (`ThemeProvider` classic): Sources colors from the ThunderID Branding API.\n * Used automatically when no `FlowMetaProvider` is present in the component tree.\n *\n * **v2** (`FlowMetaThemeProvider`): Sources colors from the `GET /flow/meta` endpoint\n * via `FlowMetaProvider`. Used automatically when a `FlowMetaProvider` is present\n * in the tree — or when `version=\"v2\"` is set explicitly.\n *\n * The active version can also be pinned explicitly via the `version` prop.\n * All components that consume `useTheme()` continue to work regardless of which\n * version is active.\n *\n * @example\n * Auto-detection (recommended):\n * ```tsx\n * // v2 mode – FlowMetaProvider is present\n * <FlowMetaProvider config={{ baseUrl, type: FlowMetaType.App, id: appId }}>\n * <ThemeProvider>\n * <App />\n * </ThemeProvider>\n * </FlowMetaProvider>\n *\n * // v1 mode – no FlowMetaProvider\n * <ThemeProvider>\n * <App />\n * </ThemeProvider>\n * ```\n *\n * @example\n * Explicit version pinning:\n * ```tsx\n * <ThemeProvider version=\"v2\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nconst ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>> = ({\n children,\n theme,\n detection,\n inheritFromBranding,\n mode,\n}: PropsWithChildren<ThemeProviderProps>): ReactElement => {\n const {platform} = useThunderID();\n\n if (platform === Platform.ThunderID) {\n const v2Props: ThemeProviderV2Props = {theme};\n\n return <ThemeProviderV2 {...v2Props}>{children}</ThemeProviderV2>;\n }\n\n return (\n <V1ThemeProvider detection={detection} inheritFromBranding={inheritFromBranding} mode={mode} theme={theme}>\n {children}\n </V1ThemeProvider>\n );\n};\n\nexport default ThemeProvider;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGA,MAAMA,iBAA4D,EAChE,UACA,OACA,WACA,qBACA,WACyD;CACzD,MAAM,EAAC,aAAYC,8BAAc;AAEjC,KAAI,aAAaC,6BAAS,UAGxB,QAAO,2CAACC;EAF+B;EAED;GAA2B;AAGnE,QACE,2CAACC;EAA2B;EAAgC;EAA2B;EAAa;EACjG;GACe;;AAItB,8BAAe"}
1
+ {"version":3,"file":"ThemeProvider.cjs","names":["ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>>","themeOverride: RecursivePartial<ThemeConfig> | undefined","normalizeThemeConfig","flowMetaContext: FlowMetaContextValue | null","FlowMetaContext","flowMetaTheme: FlowMetaTheme | null","toggleTheme: () => void","finalThemeConfig: RecursivePartial<ThemeConfig> | undefined","metaConfig: RecursivePartial<ThemeConfig>","buildThemeConfigFromFlowMeta","theme: Theme","direction: 'ltr' | 'rtl'","value: any","ThemeContext"],"sources":["../../../../src/contexts/Theme/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, ThemeMode, RecursivePartial, FlowMetaTheme} from '@thunderid/browser';\nimport {FC, PropsWithChildren, ReactElement, useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport ThemeContext from './ThemeContext';\nimport applyThemeToDOM from '../../utils/applyThemeToDOM';\nimport buildThemeConfigFromFlowMeta from '../../utils/buildThemeConfigFromFlowMeta';\nimport normalizeThemeConfig from '../../utils/normalizeThemeConfig';\nimport FlowMetaContext, {FlowMetaContextValue} from '../FlowMeta/FlowMetaContext';\n\nexport interface ThemeProviderProps {\n /**\n * Initial color scheme override. Overrides the server default when provided.\n */\n mode?: ThemeMode;\n\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 colorScheme,\n direction,\n theme,\n toggleTheme,\n };\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n};\n\nexport default ThemeProvider;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,MAAMA,iBAA4D,EAChE,UACA,OAAO,wBACkD;CACzD,MAAMC,gBAA2DC,qCAAqB,kBAAkB;CACxG,MAAMC,wCAA0DC,gCAAgB;CAEhF,MAAMC,gBAAsC,iBAAiB,MAAM,QAAQ,SAAS;AACzD,kBAAiB;AAChB,kBAAiB;CAG7C,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;EACA;EACA;EACA;EACD;AAED,QAAO,2CAACC,6BAAa;EAAgB;EAAQ;GAAiC;;AAGhF,4BAAe"}
@@ -29,9 +29,7 @@ const ThunderIDContext = (0, react.createContext)({
29
29
  isMetaLoading: false,
30
30
  isSignedIn: false,
31
31
  meta: null,
32
- organization: null,
33
32
  organizationHandle: void 0,
34
- platform: void 0,
35
33
  reInitialize: null,
36
34
  recover: () => Promise.resolve({}),
37
35
  resolveFlowTemplateLiterals: (text) => text ?? "",
@@ -41,7 +39,6 @@ const ThunderIDContext = (0, react.createContext)({
41
39
  signOut: () => Promise.resolve({}),
42
40
  signUp: () => Promise.resolve({}),
43
41
  signUpUrl: void 0,
44
- switchOrganization: null,
45
42
  user: null
46
43
  });
47
44
  ThunderIDContext.displayName = "ThunderIDContext";
@@ -1 +1 @@
1
- {"version":3,"file":"ThunderIDContext.cjs","names":["ThunderIDContext: Context<ThunderIDContextProps | null>"],"sources":["../../../../src/contexts/ThunderID/ThunderIDContext.ts"],"sourcesContent":["/**\n * Copyright (c) 2025, 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 FlowMetadataResponse,\n HttpRequestConfig,\n HttpResponse,\n IdToken,\n OIDCDiscoveryApiResponse,\n Organization,\n Platform,\n SignInOptions,\n TokenExchangeRequestConfig,\n TokenResponse,\n} from '@thunderid/browser';\nimport {Context, createContext} from 'react';\nimport {ThunderIDReactConfig} from '../../models/config';\nimport ThunderIDReactClient from '../../ThunderIDReactClient';\n\n/**\n * Props interface of {@link ThunderIDContext}\n */\nexport type ThunderIDContextProps = {\n afterSignInUrl: string | undefined;\n applicationId: string | undefined;\n baseUrl: string | undefined;\n clientId: string | undefined;\n scopes: string | string[] | undefined;\n /**\n * OIDC discovery data.\n */\n discovery: {\n /**\n * The response from the `.well-known/openid-configuration` endpoint.\n * Contains server capabilities, supported endpoints, and metadata.\n * `null` while loading or when discovery has not been fetched.\n */\n wellKnown: OIDCDiscoveryApiResponse | null;\n };\n /**\n * Swaps the current access token with a new one based on the provided configuration (with a grant type).\n * @param config - Configuration for the token exchange request.\n * @returns A promise that resolves to the token response or the raw response.\n */\n exchangeToken: (config: TokenExchangeRequestConfig) => Promise<TokenResponse | Response>;\n /**\n * Retrieves the access token stored in the storage.\n * This function retrieves the access token and returns it.\n * @remarks This does not work in the `webWorker` or any other worker environment.\n * @returns A promise that resolves to the access token.\n */\n getAccessToken: () => Promise<string>;\n /**\n * Function to retrieve the decoded ID token.\n * This function decodes the ID token and returns its payload.\n * It can be used to access user claims and other information contained in the ID token.\n *\n * @returns A promise that resolves to the decoded ID token payload.\n */\n getDecodedIdToken: () => Promise<IdToken>;\n /**\n * Function to retrieve the ID token.\n * This function retrieves the ID token and returns it.\n *\n * @returns A promise that resolves to the ID token.\n */\n getIdToken: () => Promise<string>;\n /**\n * Returns the underlying StorageManager instance for reading and writing SDK-managed storage.\n */\n getStorageManager: () => Promise<any>;\n /**\n * HTTP request function to make API calls.\n * @param requestConfig - Configuration for the HTTP request.\n * @returns A promise that resolves to the HTTP response.\n */\n http: {\n /**\n * Makes an HTTP request using the provided configuration.\n * @param requestConfig - Configuration for the HTTP request.\n * @returns A promise that resolves to the HTTP response.\n */\n request: (requestConfig?: HttpRequestConfig) => Promise<HttpResponse<any>>;\n /**\n * Makes multiple HTTP requests based on the provided configuration.\n * @param requestConfigs - Set of configurations for the HTTP requests.\n * @returns A promise that resolves to an array of HTTP responses.\n */\n requestAll: (requestConfigs?: HttpRequestConfig[]) => Promise<HttpResponse<any>[]>;\n };\n /**\n * Instance ID for multi-instance support.\n */\n instanceId: number;\n isInitialized: boolean;\n /**\n * Flag indicating whether the SDK is working in the background.\n */\n isLoading: boolean;\n /**\n * Flag indicating whether flow metadata is currently being fetched.\n */\n isMetaLoading: boolean;\n /**\n * Flag indicating whether the user is signed in or not.\n */\n isSignedIn: boolean;\n\n /**\n * Flow metadata returned by `GET /flow/meta` (v2 platform only).\n * `null` while loading or when `resolveFromMeta` is disabled.\n */\n meta: FlowMetadataResponse | null;\n\n organization: Organization;\n\n organizationHandle: string | undefined;\n\n /**\n * Re-initializes the client with a new configuration.\n *\n * @remarks\n * This can be partial configuration to update only specific fields.\n *\n * @param config - New configuration to re-initialize the client with.\n * @returns Promise resolving to boolean indicating success.\n */\n reInitialize: (config: Partial<ThunderIDReactConfig>) => Promise<boolean>;\n\n /**\n * Recovery function to initiate the account/password recovery flow.\n */\n recover: (...args: any[]) => Promise<any>;\n\n /**\n * Resolves `{{ t(key) }}` and `{{ meta(path) }}` template expressions in a string,\n * using the current i18n translation function and flow metadata from context.\n *\n * Useful in render-props patterns where consumers need to expand template strings\n * that come from the server (e.g. component labels, placeholders, headings).\n *\n * @example\n * const {resolveFlowTemplateLiterals} = useThunderID();\n * resolveFlowTemplateLiterals('{{ t(signin.heading.label) }}') // → 'Sign In'\n * resolveFlowTemplateLiterals('Login to {{ meta(application.name) }}') // → 'Login to My App'\n */\n resolveFlowTemplateLiterals: (text: string | undefined) => string;\n\n /**\n * Sign-in function to initiate the authentication process.\n * @remark This is the programmatic version of the `SignInButton` component.\n * TODO: Fix the types.\n */\n signIn: (...args: any) => Promise<any>;\n\n /**\n * Optional additional parameters to be sent in the sign-in request.\n * This can include custom parameters that your authorization server supports.\n * These parameters will be included in the authorization request sent to the server.\n * If not provided, no additional parameters will be sent.\n *\n * @example\n * signInOptions: { prompt: \"login\", fidp: \"OrganizationSSO\" }\n */\n signInOptions?: SignInOptions;\n\n /**\n * Optional token request configuration. params are appended to the token endpoint POST body.\n *\n * @example\n * tokenRequest: { params: { resource: \"https://api.example.com\" } }\n */\n tokenRequest?: {\n params?: Record<string, unknown>;\n };\n\n /**\n * Silent sign-in function to re-authenticate the user without user interaction.\n * @remark This is the programmatic version of the `SilentSignIn` component.\n */\n signInSilently: ThunderIDReactClient['signInSilently'];\n\n signInUrl: string | undefined;\n /**\n * Sign-out function to terminate the authentication session.\n * @remark This is the programmatic version of the `SignOutButton` component.\n * FIXME: Fix the types.\n */\n signOut: any;\n\n /**\n * Sign-up function to initiate the registration process.\n * @remark This is the programmatic version of the `SignUpButton` component.\n */\n signUp: (...args: any[]) => Promise<any>;\n\n signUpUrl: string | undefined;\n\n user: any;\n platform?: Platform;\n} & Pick<ThunderIDReactClient, 'clearSession' | 'switchOrganization'>;\n\n/**\n * Context object for managing the Authentication flow builder core context.\n */\nconst ThunderIDContext: Context<ThunderIDContextProps | null> = createContext<null | ThunderIDContextProps>({\n afterSignInUrl: undefined,\n applicationId: undefined,\n baseUrl: undefined,\n clearSession: () => {},\n clientId: undefined,\n scopes: undefined,\n discovery: {\n wellKnown: null,\n },\n exchangeToken: null as unknown as ThunderIDContextProps['exchangeToken'],\n getAccessToken: null as unknown as ThunderIDContextProps['getAccessToken'],\n getDecodedIdToken: null as unknown as ThunderIDContextProps['getDecodedIdToken'],\n getIdToken: null as unknown as ThunderIDContextProps['getIdToken'],\n getStorageManager: () => Promise.resolve(null),\n http: {\n request: () => null as unknown as Promise<HttpResponse<any>>,\n requestAll: () => null as unknown as Promise<HttpResponse<any>[]>,\n },\n instanceId: 0,\n isInitialized: false,\n isLoading: true,\n isMetaLoading: false,\n isSignedIn: false,\n meta: null,\n organization: null as unknown as Organization,\n organizationHandle: undefined,\n platform: undefined,\n reInitialize: null as unknown as ThunderIDContextProps['reInitialize'],\n recover: () => Promise.resolve({} as any),\n resolveFlowTemplateLiterals: (text: string | undefined) => text ?? '',\n signIn: () => Promise.resolve({} as any),\n signInSilently: () => Promise.resolve({} as any),\n signInUrl: undefined,\n signOut: () => Promise.resolve({} as any),\n signUp: () => Promise.resolve({} as any),\n signUpUrl: undefined,\n switchOrganization: null as unknown as ThunderIDContextProps['switchOrganization'],\n user: null,\n});\n\nThunderIDContext.displayName = 'ThunderIDContext';\n\nexport default ThunderIDContext;\n"],"mappings":";;;;;;;;AA4NA,MAAMA,4CAAsG;CAC1G,gBAAgB;CAChB,eAAe;CACf,SAAS;CACT,oBAAoB;CACpB,UAAU;CACV,QAAQ;CACR,WAAW,EACT,WAAW,MACZ;CACD,eAAe;CACf,gBAAgB;CAChB,mBAAmB;CACnB,YAAY;CACZ,yBAAyB,QAAQ,QAAQ,KAAK;CAC9C,MAAM;EACJ,eAAe;EACf,kBAAkB;EACnB;CACD,YAAY;CACZ,eAAe;CACf,WAAW;CACX,eAAe;CACf,YAAY;CACZ,MAAM;CACN,cAAc;CACd,oBAAoB;CACpB,UAAU;CACV,cAAc;CACd,eAAe,QAAQ,QAAQ,EAAE,CAAQ;CACzC,8BAA8B,SAA6B,QAAQ;CACnE,cAAc,QAAQ,QAAQ,EAAE,CAAQ;CACxC,sBAAsB,QAAQ,QAAQ,EAAE,CAAQ;CAChD,WAAW;CACX,eAAe,QAAQ,QAAQ,EAAE,CAAQ;CACzC,cAAc,QAAQ,QAAQ,EAAE,CAAQ;CACxC,WAAW;CACX,oBAAoB;CACpB,MAAM;CACP,CAAC;AAEF,iBAAiB,cAAc;AAE/B,+BAAe"}
1
+ {"version":3,"file":"ThunderIDContext.cjs","names":["ThunderIDContext: Context<ThunderIDContextProps | null>"],"sources":["../../../../src/contexts/ThunderID/ThunderIDContext.ts"],"sourcesContent":["/**\n * Copyright (c) 2025, 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 FlowMetadataResponse,\n HttpRequestConfig,\n HttpResponse,\n IdToken,\n OIDCDiscoveryApiResponse,\n SignInOptions,\n TokenExchangeRequestConfig,\n TokenResponse,\n} from '@thunderid/browser';\nimport {Context, createContext} from 'react';\nimport {ThunderIDReactConfig} from '../../models/config';\nimport ThunderIDReactClient from '../../ThunderIDReactClient';\n\n/**\n * Props interface of {@link ThunderIDContext}\n */\nexport type ThunderIDContextProps = {\n afterSignInUrl: string | undefined;\n applicationId: string | undefined;\n baseUrl: string | undefined;\n clientId: string | undefined;\n scopes: string | string[] | undefined;\n /**\n * OIDC discovery data.\n */\n discovery: {\n /**\n * The response from the `.well-known/openid-configuration` endpoint.\n * Contains server capabilities, supported endpoints, and metadata.\n * `null` while loading or when discovery has not been fetched.\n */\n wellKnown: OIDCDiscoveryApiResponse | null;\n };\n /**\n * Swaps the current access token with a new one based on the provided configuration (with a grant type).\n * @param config - Configuration for the token exchange request.\n * @returns A promise that resolves to the token response or the raw response.\n */\n exchangeToken: (config: TokenExchangeRequestConfig) => Promise<TokenResponse | Response>;\n /**\n * Retrieves the access token stored in the storage.\n * This function retrieves the access token and returns it.\n * @remarks This does not work in the `webWorker` or any other worker environment.\n * @returns A promise that resolves to the access token.\n */\n getAccessToken: () => Promise<string>;\n /**\n * Function to retrieve the decoded ID token.\n * This function decodes the ID token and returns its payload.\n * It can be used to access user claims and other information contained in the ID token.\n *\n * @returns A promise that resolves to the decoded ID token payload.\n */\n getDecodedIdToken: () => Promise<IdToken>;\n /**\n * Function to retrieve the ID token.\n * This function retrieves the ID token and returns it.\n *\n * @returns A promise that resolves to the ID token.\n */\n getIdToken: () => Promise<string>;\n /**\n * Returns the underlying StorageManager instance for reading and writing SDK-managed storage.\n */\n getStorageManager: () => Promise<any>;\n /**\n * HTTP request function to make API calls.\n * @param requestConfig - Configuration for the HTTP request.\n * @returns A promise that resolves to the HTTP response.\n */\n http: {\n /**\n * Makes an HTTP request using the provided configuration.\n * @param requestConfig - Configuration for the HTTP request.\n * @returns A promise that resolves to the HTTP response.\n */\n request: (requestConfig?: HttpRequestConfig) => Promise<HttpResponse<any>>;\n /**\n * Makes multiple HTTP requests based on the provided configuration.\n * @param requestConfigs - Set of configurations for the HTTP requests.\n * @returns A promise that resolves to an array of HTTP responses.\n */\n requestAll: (requestConfigs?: HttpRequestConfig[]) => Promise<HttpResponse<any>[]>;\n };\n /**\n * Instance ID for multi-instance support.\n */\n instanceId: number;\n isInitialized: boolean;\n /**\n * Flag indicating whether the SDK is working in the background.\n */\n isLoading: boolean;\n /**\n * Flag indicating whether flow metadata is currently being fetched.\n */\n isMetaLoading: boolean;\n /**\n * Flag indicating whether the user is signed in or not.\n */\n isSignedIn: boolean;\n\n /**\n * Flow metadata returned by `GET /flow/meta` (v2 platform only).\n * `null` while loading or when `resolveFromMeta` is disabled.\n */\n meta: FlowMetadataResponse | null;\n\n organizationHandle: string | undefined;\n\n /**\n * Re-initializes the client with a new configuration.\n *\n * @remarks\n * This can be partial configuration to update only specific fields.\n *\n * @param config - New configuration to re-initialize the client with.\n * @returns Promise resolving to boolean indicating success.\n */\n reInitialize: (config: Partial<ThunderIDReactConfig>) => Promise<boolean>;\n\n /**\n * Recovery function to initiate the account/password recovery flow.\n */\n recover: (...args: any[]) => Promise<any>;\n\n /**\n * Resolves `{{ t(key) }}` and `{{ meta(path) }}` template expressions in a string,\n * using the current i18n translation function and flow metadata from context.\n *\n * Useful in render-props patterns where consumers need to expand template strings\n * that come from the server (e.g. component labels, placeholders, headings).\n *\n * @example\n * const {resolveFlowTemplateLiterals} = useThunderID();\n * resolveFlowTemplateLiterals('{{ t(signin.heading.label) }}') // → 'Sign In'\n * resolveFlowTemplateLiterals('Login to {{ meta(application.name) }}') // → 'Login to My App'\n */\n resolveFlowTemplateLiterals: (text: string | undefined) => string;\n\n /**\n * Sign-in function to initiate the authentication process.\n * @remark This is the programmatic version of the `SignInButton` component.\n * TODO: Fix the types.\n */\n signIn: (...args: any) => Promise<any>;\n\n /**\n * Optional additional parameters to be sent in the sign-in request.\n * This can include custom parameters that your authorization server supports.\n * These parameters will be included in the authorization request sent to the server.\n * If not provided, no additional parameters will be sent.\n *\n * @example\n * signInOptions: { prompt: \"login\", fidp: \"OrganizationSSO\" }\n */\n signInOptions?: SignInOptions;\n\n /**\n * Optional token request configuration. params are appended to the token endpoint POST body.\n *\n * @example\n * tokenRequest: { params: { resource: \"https://api.example.com\" } }\n */\n tokenRequest?: {\n params?: Record<string, unknown>;\n };\n\n /**\n * Silent sign-in function to re-authenticate the user without user interaction.\n * @remark This is the programmatic version of the `SilentSignIn` component.\n */\n signInSilently: ThunderIDReactClient['signInSilently'];\n\n signInUrl: string | undefined;\n /**\n * Sign-out function to terminate the authentication session.\n * @remark This is the programmatic version of the `SignOutButton` component.\n * FIXME: Fix the types.\n */\n signOut: any;\n\n /**\n * Sign-up function to initiate the registration process.\n * @remark This is the programmatic version of the `SignUpButton` component.\n */\n signUp: (...args: any[]) => Promise<any>;\n\n signUpUrl: string | undefined;\n\n user: any;\n} & Pick<ThunderIDReactClient, 'clearSession'>;\n\n/**\n * Context object for managing the Authentication flow builder core context.\n */\nconst ThunderIDContext: Context<ThunderIDContextProps | null> = createContext<null | ThunderIDContextProps>({\n afterSignInUrl: undefined,\n applicationId: undefined,\n baseUrl: undefined,\n clearSession: () => {},\n clientId: undefined,\n scopes: undefined,\n discovery: {\n wellKnown: null,\n },\n exchangeToken: null as unknown as ThunderIDContextProps['exchangeToken'],\n getAccessToken: null as unknown as ThunderIDContextProps['getAccessToken'],\n getDecodedIdToken: null as unknown as ThunderIDContextProps['getDecodedIdToken'],\n getIdToken: null as unknown as ThunderIDContextProps['getIdToken'],\n getStorageManager: () => Promise.resolve(null),\n http: {\n request: () => null as unknown as Promise<HttpResponse<any>>,\n requestAll: () => null as unknown as Promise<HttpResponse<any>[]>,\n },\n instanceId: 0,\n isInitialized: false,\n isLoading: true,\n isMetaLoading: false,\n isSignedIn: false,\n meta: null,\n organizationHandle: undefined,\n reInitialize: null as unknown as ThunderIDContextProps['reInitialize'],\n recover: () => Promise.resolve({} as any),\n resolveFlowTemplateLiterals: (text: string | undefined) => text ?? '',\n signIn: () => Promise.resolve({} as any),\n signInSilently: () => Promise.resolve({} as any),\n signInUrl: undefined,\n signOut: () => Promise.resolve({} as any),\n signUp: () => Promise.resolve({} as any),\n signUpUrl: undefined,\n user: null,\n});\n\nThunderIDContext.displayName = 'ThunderIDContext';\n\nexport default ThunderIDContext;\n"],"mappings":";;;;;;;;AAuNA,MAAMA,4CAAsG;CAC1G,gBAAgB;CAChB,eAAe;CACf,SAAS;CACT,oBAAoB;CACpB,UAAU;CACV,QAAQ;CACR,WAAW,EACT,WAAW,MACZ;CACD,eAAe;CACf,gBAAgB;CAChB,mBAAmB;CACnB,YAAY;CACZ,yBAAyB,QAAQ,QAAQ,KAAK;CAC9C,MAAM;EACJ,eAAe;EACf,kBAAkB;EACnB;CACD,YAAY;CACZ,eAAe;CACf,WAAW;CACX,eAAe;CACf,YAAY;CACZ,MAAM;CACN,oBAAoB;CACpB,cAAc;CACd,eAAe,QAAQ,QAAQ,EAAE,CAAQ;CACzC,8BAA8B,SAA6B,QAAQ;CACnE,cAAc,QAAQ,QAAQ,EAAE,CAAQ;CACxC,sBAAsB,QAAQ,QAAQ,EAAE,CAAQ;CAChD,WAAW;CACX,eAAe,QAAQ,QAAQ,EAAE,CAAQ;CACzC,cAAc,QAAQ,QAAQ,EAAE,CAAQ;CACxC,WAAW;CACX,MAAM;CACP,CAAC;AAEF,iBAAiB,cAAc;AAE/B,+BAAe"}
@@ -2,12 +2,10 @@ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_ThunderIDContext = require('./ThunderIDContext.cjs');
3
3
  const require_useBrowserUrl = require('../../hooks/useBrowserUrl.cjs');
4
4
  const require_ThunderIDReactClient = require('../../ThunderIDReactClient.cjs');
5
- const require_BrandingProvider = require('../Branding/BrandingProvider.cjs');
6
5
  const require_ComponentRendererProvider = require('../ComponentRenderer/ComponentRendererProvider.cjs');
7
6
  const require_FlowProvider = require('../Flow/FlowProvider.cjs');
8
7
  const require_FlowMetaProvider = require('../FlowMeta/FlowMetaProvider.cjs');
9
8
  const require_I18nProvider = require('../I18n/I18nProvider.cjs');
10
- const require_OrganizationProvider = require('../Organization/OrganizationProvider.cjs');
11
9
  const require_ThemeProvider = require('../Theme/ThemeProvider.cjs');
12
10
  const require_UserProvider = require('../User/UserProvider.cjs');
13
11
  let __thunderid_browser = require("@thunderid/browser");
@@ -25,11 +23,9 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
25
23
  const storageManagerRef = (0, react.useRef)(null);
26
24
  const { hasAuthParams, hasCalledForThisInstance } = require_useBrowserUrl.default();
27
25
  const [user, setUser] = (0, react.useState)(null);
28
- const [currentOrganization, setCurrentOrganization] = (0, react.useState)(null);
29
26
  const [isSignedInSync, setIsSignedInSync] = (0, react.useState)(false);
30
27
  const [isInitializedSync, setIsInitializedSync] = (0, react.useState)(false);
31
28
  const [isLoadingSync, setIsLoadingSync] = (0, react.useState)(true);
32
- const [myOrganizations, setMyOrganizations] = (0, react.useState)([]);
33
29
  const [userProfile, setUserProfile] = (0, react.useState)(null);
34
30
  const [baseUrl, setBaseUrl] = (0, react.useState)(initialBaseUrl ?? "");
35
31
  const [config, setConfig] = (0, react.useState)({
@@ -50,18 +46,9 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
50
46
  });
51
47
  const [isUpdatingSession, setIsUpdatingSession] = (0, react.useState)(false);
52
48
  const [wellKnown, setWellKnown] = (0, react.useState)(null);
53
- const [brandingPreference, setBrandingPreference] = (0, react.useState)(null);
54
- const [isBrandingLoading, setIsBrandingLoading] = (0, react.useState)(false);
55
- const [brandingError, setBrandingError] = (0, react.useState)(null);
56
- const [hasFetchedBranding, setHasFetchedBranding] = (0, react.useState)(false);
57
49
  (0, react.useEffect)(() => {
58
50
  setBaseUrl(initialBaseUrl ?? "");
59
- if (initialBaseUrl !== baseUrl) {
60
- setHasFetchedBranding(false);
61
- setBrandingPreference(null);
62
- setBrandingError(null);
63
- }
64
- }, [initialBaseUrl, baseUrl]);
51
+ }, [initialBaseUrl]);
65
52
  (0, react.useEffect)(() => {
66
53
  (async () => {
67
54
  await client.initialize(config);
@@ -205,37 +192,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
205
192
  isSignedInSync,
206
193
  isUpdatingSession
207
194
  ]);
208
- const fetchBranding = (0, react.useCallback)(async () => {
209
- if (!baseUrl) return;
210
- if (isBrandingLoading) return;
211
- setIsBrandingLoading(true);
212
- setBrandingError(null);
213
- try {
214
- setBrandingPreference(await (0, __thunderid_browser.getBrandingPreference)({
215
- baseUrl,
216
- locale: preferences?.i18n?.language
217
- }));
218
- setHasFetchedBranding(true);
219
- } catch (err) {
220
- setBrandingError(err instanceof Error ? err : /* @__PURE__ */ new Error("Failed to fetch branding preference"));
221
- setBrandingPreference(null);
222
- setHasFetchedBranding(true);
223
- } finally {
224
- setIsBrandingLoading(false);
225
- }
226
- }, [baseUrl, preferences?.i18n?.language]);
227
- const refetchBranding = (0, react.useCallback)(async () => {
228
- setHasFetchedBranding(false);
229
- await fetchBranding();
230
- }, [fetchBranding]);
231
- (0, react.useEffect)(() => {}, [
232
- preferences?.theme?.inheritFromBranding,
233
- isInitializedSync,
234
- baseUrl,
235
- hasFetchedBranding,
236
- isBrandingLoading,
237
- fetchBranding
238
- ]);
239
195
  const signInSilently = async (options) => {
240
196
  try {
241
197
  setIsUpdatingSession(true);
@@ -248,20 +204,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
248
204
  setIsLoadingSync(client.isLoading());
249
205
  }
250
206
  };
251
- const switchOrganization = async (organization) => {
252
- try {
253
- setIsUpdatingSession(true);
254
- setIsLoadingSync(true);
255
- const response = await client.switchOrganization(organization);
256
- if (await client.isSignedIn()) await updateSession();
257
- return response;
258
- } catch (error) {
259
- throw new __thunderid_browser.ThunderIDRuntimeError(`Failed to switch organization: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`, "thunderid-switchOrganization-Error", "react", "An error occurred while switching to the specified organization.");
260
- } finally {
261
- setIsUpdatingSession(false);
262
- setIsLoadingSync(client.isLoading());
263
- }
264
- };
265
207
  const handleProfileUpdate = (payload) => {
266
208
  setUser(payload);
267
209
  setUserProfile((prev) => ({
@@ -307,10 +249,8 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
307
249
  isInitialized: isInitializedSync,
308
250
  isLoading: isLoadingSync,
309
251
  isSignedIn: isSignedInSync,
310
- organization: currentOrganization,
311
252
  organizationChain,
312
253
  organizationHandle: config?.organizationHandle,
313
- platform: __thunderid_browser.Platform.ThunderID,
314
254
  reInitialize,
315
255
  recover,
316
256
  signIn,
@@ -321,7 +261,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
321
261
  signOut,
322
262
  signUp,
323
263
  signUpUrl,
324
- switchOrganization,
325
264
  syncSession,
326
265
  user
327
266
  }), [
@@ -337,7 +276,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
337
276
  isInitializedSync,
338
277
  isLoadingSync,
339
278
  isSignedInSync,
340
- currentOrganization,
341
279
  signIn,
342
280
  signInSilently,
343
281
  user,
@@ -345,7 +283,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
345
283
  signInOptions,
346
284
  tokenRequest,
347
285
  syncSession,
348
- switchOrganization,
349
286
  getDecodedIdToken,
350
287
  clearSession,
351
288
  exchangeToken,
@@ -366,35 +303,19 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
366
303
  preferences: preferences?.i18n,
367
304
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FlowMetaProvider.default, {
368
305
  enabled: preferences?.resolveFromMeta !== false,
369
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BrandingProvider.default, {
370
- brandingPreference,
371
- isLoading: isBrandingLoading,
372
- error: brandingError,
373
- enabled: preferences?.theme?.inheritFromBranding === true,
374
- refetch: refetchBranding,
375
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeProvider.default, {
376
- inheritFromBranding: preferences?.theme?.inheritFromBranding,
377
- theme: {
378
- ...preferences?.theme?.overrides,
379
- direction: preferences?.theme?.direction
380
- },
381
- mode: (0, __thunderid_browser.getActiveTheme)(preferences?.theme?.mode ?? "light"),
382
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FlowProvider.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_UserProvider.default, {
383
- profile: userProfile,
384
- onUpdateProfile: handleProfileUpdate,
385
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_OrganizationProvider.default, {
386
- getAllOrganizations: async () => client.getAllOrganizations(),
387
- myOrganizations,
388
- currentOrganization,
389
- onOrganizationSwitch: switchOrganization,
390
- revalidateMyOrganizations: async () => client.getMyOrganizations(),
391
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ComponentRendererProvider.default, {
392
- renderers: extensions?.components?.renderers ?? {},
393
- children
394
- })
395
- })
396
- }) })
397
- })
306
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeProvider.default, {
307
+ theme: {
308
+ ...preferences?.theme?.overrides,
309
+ direction: preferences?.theme?.direction
310
+ },
311
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FlowProvider.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_UserProvider.default, {
312
+ profile: userProfile,
313
+ onUpdateProfile: handleProfileUpdate,
314
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ComponentRendererProvider.default, {
315
+ renderers: extensions?.components?.renderers ?? {},
316
+ children
317
+ })
318
+ }) })
398
319
  })
399
320
  })
400
321
  })
@@ -1 +1 @@
1
- {"version":3,"file":"ThunderIDProvider.cjs","names":["logger: ReturnType<typeof createPackageComponentLogger>","ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>>","reRenderCheckRef: RefObject<boolean>","client: ThunderIDReactClient","ThunderIDReactClient","storageManagerRef: any","useBrowserUrl","resolvedBaseUrl: string","decodedToken: IdToken","claims: User","arg1: any","isV2FlowRequest: boolean","ThunderIDRuntimeError","isAlreadySignedIn: boolean","currentUrl: URL","urlParams: URLSearchParams","code: string | null","executionIdFromUrl: string | null","storedExecutionId: string | null","interval: NodeJS.Timeout","status: boolean","fetchBranding: () => Promise<void>","refetchBranding: () => Promise<void>","response: TokenResponse | Response","getDecodedIdToken: () => Promise<IdToken>","getIdToken: () => Promise<string>","getAccessToken: () => Promise<string>","getStorageManager: () => Promise<any>","storageManager: any","request: (...args: any[]) => Promise<any>","requestAll: (...args: any[]) => Promise<any>","exchangeToken: (exchangeConfig: any) => Promise<any>","signOut: (...args: any[]) => Promise<any>","recover: (payload: any) => Promise<any>","signUp: (...args: any[]) => Promise<any>","clearSession: (...args: any[]) => Promise<any>","reInitialize: (reInitConfig: any) => Promise<any>","value: any","Platform","ThunderIDContext","I18nProvider","FlowMetaProvider","BrandingProvider","ThemeProvider","FlowProvider","UserProvider","OrganizationProvider","ComponentRendererProvider"],"sources":["../../../../src/contexts/ThunderID/ThunderIDProvider.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 AllOrganizationsApiResponse,\n ThunderIDRuntimeError,\n generateFlattenedUserProfile,\n OIDCDiscoveryApiResponse,\n Organization,\n SignInOptions,\n User,\n UserProfile,\n getBrandingPreference,\n GetBrandingPreferenceConfig,\n BrandingPreference,\n IdToken,\n getActiveTheme,\n Platform,\n extractUserClaimsFromIdToken,\n EmbeddedSignInFlowResponseV2,\n TokenResponse,\n createPackageComponentLogger,\n} from '@thunderid/browser';\nimport {FC, RefObject, PropsWithChildren, ReactElement, useEffect, useMemo, useRef, useState, useCallback} from 'react';\nimport ThunderIDContext from './ThunderIDContext';\nimport useBrowserUrl from '../../hooks/useBrowserUrl';\nimport {ThunderIDReactConfig} from '../../models/config';\nimport ThunderIDReactClient from '../../ThunderIDReactClient';\nimport BrandingProvider from '../Branding/BrandingProvider';\nimport ComponentRendererProvider from '../ComponentRenderer/ComponentRendererProvider';\nimport FlowProvider from '../Flow/FlowProvider';\nimport FlowMetaProvider from '../FlowMeta/FlowMetaProvider';\nimport I18nProvider from '../I18n/I18nProvider';\nimport OrganizationProvider from '../Organization/OrganizationProvider';\nimport ThemeProvider from '../Theme/ThemeProvider';\nimport UserProvider from '../User/UserProvider';\n\nconst logger: ReturnType<typeof createPackageComponentLogger> = createPackageComponentLogger(\n '@thunderid/react',\n 'ThunderIDProvider',\n);\n\n/**\n * Props interface of {@link ThunderIDProvider}\n */\nexport type ThunderIDProviderProps = ThunderIDReactConfig;\n\nconst ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>> = ({\n afterSignInUrl,\n afterSignOutUrl,\n baseUrl: initialBaseUrl,\n clientId,\n children,\n extensions,\n scopes,\n preferences,\n signInUrl,\n signUpUrl,\n organizationHandle,\n applicationId,\n signInOptions,\n tokenRequest,\n syncSession,\n instanceId = 0,\n organizationChain,\n ...rest\n}: PropsWithChildren<ThunderIDProviderProps>): ReactElement => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const client: ThunderIDReactClient = useMemo(() => new ThunderIDReactClient(instanceId), [instanceId]);\n const storageManagerRef: any = useRef<any>(null);\n const {hasAuthParams, hasCalledForThisInstance} = useBrowserUrl();\n const [user, setUser] = useState<any | null>(null);\n const [currentOrganization, setCurrentOrganization] = useState<Organization | null>(null);\n\n const [isSignedInSync, setIsSignedInSync] = useState<boolean>(false);\n const [isInitializedSync, setIsInitializedSync] = useState<boolean>(false);\n const [isLoadingSync, setIsLoadingSync] = useState<boolean>(true);\n\n const [myOrganizations, setMyOrganizations] = useState<Organization[]>([]);\n const [userProfile, setUserProfile] = useState<UserProfile | null>(null);\n const [baseUrl, setBaseUrl] = useState<string>(initialBaseUrl ?? '');\n const [config, setConfig] = useState<ThunderIDReactConfig>({\n afterSignInUrl: afterSignInUrl ?? window.location.origin,\n afterSignOutUrl: afterSignOutUrl ?? window.location.origin,\n applicationId,\n baseUrl,\n clientId,\n organizationChain,\n organizationHandle,\n scopes,\n signInOptions,\n tokenRequest,\n signInUrl,\n signUpUrl,\n syncSession,\n ...rest,\n });\n\n const [isUpdatingSession, setIsUpdatingSession] = useState<boolean>(false);\n const [wellKnown, setWellKnown] = useState<OIDCDiscoveryApiResponse | null>(null);\n\n // Branding state\n const [brandingPreference, setBrandingPreference] = useState<BrandingPreference | null>(null);\n const [isBrandingLoading, setIsBrandingLoading] = useState<boolean>(false);\n const [brandingError, setBrandingError] = useState<Error | null>(null);\n const [hasFetchedBranding, setHasFetchedBranding] = useState<boolean>(false);\n\n useEffect(() => {\n setBaseUrl(initialBaseUrl ?? '');\n // Reset branding state when baseUrl changes\n if (initialBaseUrl !== baseUrl) {\n setHasFetchedBranding(false);\n setBrandingPreference(null);\n setBrandingError(null);\n }\n }, [initialBaseUrl, baseUrl]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n await client.initialize(config);\n const initializedConfig: ThunderIDReactConfig = await client.getConfiguration();\n setConfig(initializedConfig);\n setWellKnown(await client.getDiscoveryResponse());\n })();\n }, []);\n\n async function updateSession(): Promise<void> {\n try {\n // Set flag to prevent loading state tracking from interfering\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n let resolvedBaseUrl: string = baseUrl;\n\n const decodedToken: IdToken = await client.getDecodedIdToken();\n\n // If there's a `user_org` claim in the ID token,\n // Treat this login as a organization login.\n if (decodedToken?.['user_org']) {\n resolvedBaseUrl = `${(await client.getConfiguration()).baseUrl}/o`;\n setBaseUrl(resolvedBaseUrl);\n }\n\n // TEMPORARY: SCIM2 and Organizations endpoints are not yet supported.\n const claims: User = extractUserClaimsFromIdToken(decodedToken) as User;\n setUser(claims);\n setUserProfile({\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n });\n\n // CRITICAL: Update sign-in status BEFORE setting loading to false\n // This prevents the race condition where ProtectedRoute sees isLoading=false but isSignedIn=false\n const currentSignInStatus: boolean = await client.isSignedIn();\n setIsSignedInSync(currentSignInStatus);\n } catch (error) {\n // TODO: Add an error log.\n } finally {\n // Clear the flag and set final loading state\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n\n async function signIn(...args: any): Promise<User | EmbeddedSignInFlowResponseV2> {\n // Check if this is a V2 embedded flow request BEFORE calling signIn\n // This allows us to skip session checks entirely for V2 flows\n const arg1: any = args[0];\n const isV2FlowRequest: boolean =\n typeof arg1 === 'object' && arg1 !== null && ('executionId' in arg1 || 'applicationId' in arg1);\n\n try {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n }\n\n return await client.signIn(...args);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n } finally {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n }\n\n /**\n * Try signing in when the component is mounted.\n */\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n (async (): Promise<void> => {\n // Sync session state whenever sign-in completes (both redirect and embedded V2 flows).\n // Pass the user returned by the SDK's sign-in flow so SCIM2/Me result is not discarded.\n await client.on('sign-in', async () => {\n await updateSession();\n });\n\n // User is already authenticated. Skip...\n const isAlreadySignedIn: boolean = await client.isSignedIn();\n\n // Start auto-refresh with a soft failure.\n const scheduleAutoRefresh = async (): Promise<void> => {\n try {\n await client.startAutoRefreshToken();\n } catch (error) {\n logger.warn('Failed to schedule automatic token refresh.', error);\n }\n };\n\n // Restore session state and kick off the refresh timer.\n const resumeSession = async (): Promise<void> => {\n await updateSession();\n await scheduleAutoRefresh();\n };\n\n if (isAlreadySignedIn) {\n await resumeSession();\n }\n\n // The access token may have expired while the refresh token is still valid.\n // Attempt a silent refresh — startAutoRefreshToken() calls refreshAccessToken()\n // immediately when timeUntilRefresh <= 0, then re-check sign-in status.\n await scheduleAutoRefresh();\n\n if (await client.isSignedIn()) {\n await resumeSession();\n return;\n }\n\n const currentUrl: URL = new URL(window.location.href);\n const hasAuthParamsResult: boolean =\n hasAuthParams(currentUrl, config.afterSignInUrl!) && hasCalledForThisInstance(currentUrl, instanceId ?? 0);\n\n if (hasAuthParamsResult) {\n try {\n const urlParams: URLSearchParams = currentUrl.searchParams;\n const code: string | null = urlParams.get('code');\n const executionIdFromUrl: string | null = urlParams.get('executionId');\n const storedExecutionId: string | null = sessionStorage.getItem('thunderid_execution_id');\n\n if (code && !executionIdFromUrl && !storedExecutionId) {\n await signIn();\n }\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n }\n }\n })();\n }, []);\n\n /**\n * Check if the user is signed in and update the state accordingly.\n * This will also set an interval to check for the sign-in status every second\n * until the user is signed in.\n */\n useEffect(() => {\n let interval: NodeJS.Timeout;\n\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isSignedIn();\n\n setIsSignedInSync(status);\n\n if (!status) {\n interval = setInterval(async () => {\n const newStatus: boolean = await client.isSignedIn();\n\n if (newStatus) {\n setIsSignedInSync(true);\n clearInterval(interval);\n }\n }, 1000);\n } else {\n // TODO: Add a debug log to indicate that the user is already signed in.\n }\n } catch (error) {\n setIsSignedInSync(false);\n }\n })();\n\n return (): void => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [client]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isInitialized();\n\n setIsInitializedSync(status);\n } catch (error) {\n setIsInitializedSync(false);\n }\n })();\n }, [client]);\n\n /**\n * Track loading state changes from the ThunderID client\n */\n useEffect(() => {\n const checkLoadingState = (): void => {\n // Don't override loading state during critical session updates\n if (isUpdatingSession) {\n return;\n }\n\n // Don't set loading=false while auth params are in the URL and user isn't signed in yet.\n // This prevents ProtectedRoute from redirecting before the sign-in effect processes the auth code.\n const currentUrl: URL = new URL(window.location.href);\n if (!isSignedInSync && hasAuthParams(currentUrl, config.afterSignInUrl!)) {\n return;\n }\n\n setIsLoadingSync(client.isLoading());\n };\n\n // Initial check\n checkLoadingState();\n\n // Set up an interval to check for loading state changes\n const interval: NodeJS.Timeout = setInterval(checkLoadingState, 100);\n\n return (): void => {\n clearInterval(interval);\n };\n }, [client, isLoadingSync, isSignedInSync, isUpdatingSession]);\n\n // Branding fetch function\n const fetchBranding: () => Promise<void> = useCallback(async (): Promise<void> => {\n if (!baseUrl) {\n return;\n }\n\n // Prevent multiple calls if already fetching\n if (isBrandingLoading) {\n return;\n }\n\n setIsBrandingLoading(true);\n setBrandingError(null);\n\n try {\n const getBrandingConfig: GetBrandingPreferenceConfig = {\n baseUrl,\n locale: preferences?.i18n?.language,\n // Add other branding config options as needed\n };\n\n const brandingData: BrandingPreference = await getBrandingPreference(getBrandingConfig);\n setBrandingPreference(brandingData);\n setHasFetchedBranding(true);\n } catch (err) {\n const errorMessage: Error = err instanceof Error ? err : new Error('Failed to fetch branding preference');\n setBrandingError(errorMessage);\n setBrandingPreference(null);\n setHasFetchedBranding(true); // Mark as fetched even on error to prevent retries\n } finally {\n setIsBrandingLoading(false);\n }\n }, [baseUrl, preferences?.i18n?.language]);\n\n // Refetch branding function\n const refetchBranding: () => Promise<void> = useCallback(async (): Promise<void> => {\n setHasFetchedBranding(false); // Reset the flag to allow refetching\n await fetchBranding();\n }, [fetchBranding]);\n\n // Auto-fetch branding when initialized and configured\n useEffect(() => {\n // TEMPORARY: Branding preference is not yet supported.\n return;\n\n // Only fetch branding when explicitly enabled via preferences.theme.inheritFromBranding\n const shouldFetchBranding: boolean = preferences?.theme?.inheritFromBranding === true;\n\n if (shouldFetchBranding && isInitializedSync && baseUrl && !hasFetchedBranding && !isBrandingLoading) {\n fetchBranding();\n }\n }, [\n preferences?.theme?.inheritFromBranding,\n isInitializedSync,\n baseUrl,\n hasFetchedBranding,\n isBrandingLoading,\n fetchBranding,\n ]);\n\n const signInSilently = async (options?: SignInOptions): Promise<User | boolean> => {\n try {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n return await client.signInSilently(options);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Error while signing in silently: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signInSilently-Error',\n 'react',\n 'An error occurred while trying to sign in silently.',\n );\n } finally {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n };\n\n const switchOrganization = async (organization: Organization): Promise<TokenResponse | Response> => {\n try {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n const response: TokenResponse | Response = await client.switchOrganization(organization);\n\n if (await client.isSignedIn()) {\n await updateSession();\n }\n\n return response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-switchOrganization-Error',\n 'react',\n 'An error occurred while switching to the specified organization.',\n );\n } finally {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n };\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile | null) => ({\n schemas: prev?.schemas ?? [],\n flattenedProfile: generateFlattenedUserProfile(payload, prev?.schemas ?? []),\n profile: payload,\n }));\n };\n\n const getDecodedIdToken: () => Promise<IdToken> = useCallback(\n async (): Promise<IdToken> => client.getDecodedIdToken(),\n [client],\n );\n\n const getIdToken: () => Promise<string> = useCallback(async (): Promise<string> => client.getIdToken(), [client]);\n\n const getAccessToken: () => Promise<string> = useCallback(\n async (): Promise<string> => client.getAccessToken(),\n [client],\n );\n\n const getStorageManager: () => Promise<any> = useCallback(async (): Promise<any> => {\n const storageManager: any = storageManagerRef.current ?? (await client.getStorageManager());\n if (storageManager) {\n storageManagerRef.current = storageManager;\n }\n return storageManager;\n }, [client]);\n\n const request: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.request(...args),\n [client],\n );\n\n const requestAll: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.requestAll(...args),\n [client],\n );\n\n const exchangeToken: (exchangeConfig: any) => Promise<any> = useCallback(\n async (exchangeConfig: any): Promise<any> => client.exchangeToken(exchangeConfig),\n [client],\n );\n\n const signOut: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signOut(...args),\n [client],\n );\n\n const recover: (payload: any) => Promise<any> = useCallback(\n async (payload: any): Promise<any> => client.recover(payload),\n [client],\n );\n\n const signUp: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signUp(...args),\n [client],\n );\n\n const clearSession: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.clearSession(...args),\n [client],\n );\n\n const reInitialize: (reInitConfig: any) => Promise<any> = useCallback(\n async (reInitConfig: any): Promise<any> => client.reInitialize(reInitConfig),\n [client],\n );\n\n const value: any = useMemo(\n () => ({\n afterSignInUrl: config.afterSignInUrl,\n applicationId: config.applicationId,\n baseUrl,\n scopes: config.scopes,\n clearSession,\n clientId,\n discovery: {\n wellKnown,\n },\n exchangeToken,\n getAccessToken,\n getDecodedIdToken,\n getIdToken,\n getStorageManager,\n http: {\n request,\n requestAll,\n },\n instanceId,\n isInitialized: isInitializedSync,\n isLoading: isLoadingSync,\n isSignedIn: isSignedInSync,\n organization: currentOrganization,\n organizationChain,\n organizationHandle: config?.organizationHandle,\n platform: Platform.ThunderID,\n reInitialize,\n recover,\n signIn,\n signInOptions,\n tokenRequest,\n signInSilently,\n signInUrl,\n signOut,\n signUp,\n signUpUrl,\n switchOrganization,\n syncSession,\n user,\n }),\n [\n applicationId,\n config?.organizationHandle,\n config.afterSignInUrl,\n config.scopes,\n signInUrl,\n signUpUrl,\n baseUrl,\n clientId,\n wellKnown,\n isInitializedSync,\n isLoadingSync,\n isSignedInSync,\n currentOrganization,\n signIn,\n signInSilently,\n user,\n client,\n signInOptions,\n tokenRequest,\n syncSession,\n switchOrganization,\n getDecodedIdToken,\n clearSession,\n exchangeToken,\n getAccessToken,\n getStorageManager,\n instanceId,\n organizationChain,\n recover,\n reInitialize,\n request,\n requestAll,\n signOut,\n signUp,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={value}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider enabled={preferences?.resolveFromMeta !== false}>\n <BrandingProvider\n brandingPreference={brandingPreference}\n isLoading={isBrandingLoading}\n error={brandingError}\n enabled={preferences?.theme?.inheritFromBranding === true}\n refetch={refetchBranding}\n >\n <ThemeProvider\n inheritFromBranding={preferences?.theme?.inheritFromBranding}\n theme={{\n ...preferences?.theme?.overrides,\n direction: preferences?.theme?.direction,\n }}\n mode={getActiveTheme(preferences?.theme?.mode ?? 'light')}\n >\n <FlowProvider>\n <UserProvider profile={userProfile!} onUpdateProfile={handleProfileUpdate}>\n <OrganizationProvider\n getAllOrganizations={async (): Promise<AllOrganizationsApiResponse> => client.getAllOrganizations()}\n myOrganizations={myOrganizations}\n currentOrganization={currentOrganization}\n onOrganizationSwitch={switchOrganization}\n revalidateMyOrganizations={async (): Promise<Organization[]> => client.getMyOrganizations()}\n >\n <ComponentRendererProvider renderers={(extensions?.components?.renderers ?? {}) as any}>\n {children}\n </ComponentRendererProvider>\n </OrganizationProvider>\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </BrandingProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDProvider;\n"],"mappings":"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;EACA;EACA;EACA;EACA;EACD,GACD;EACE;EACA,QAAQ;EACR,OAAO;EACP,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QACE,2CAACC,iCAAiB;EAAgB;YAChC,2CAACC;GAAa,aAAa,aAAa;aACtC,2CAACC;IAAiB,SAAS,aAAa,oBAAoB;cAC1D,2CAACC;KACqB;KACpB,WAAW;KACX,OAAO;KACP,SAAS,aAAa,OAAO,wBAAwB;KACrD,SAAS;eAET,2CAACC;MACC,qBAAqB,aAAa,OAAO;MACzC,OAAO;OACL,GAAG,aAAa,OAAO;OACvB,WAAW,aAAa,OAAO;OAChC;MACD,8CAAqB,aAAa,OAAO,QAAQ,QAAQ;gBAEzD,2CAACC,0CACC,2CAACC;OAAa,SAAS;OAAc,iBAAiB;iBACpD,2CAACC;QACC,qBAAqB,YAAkD,OAAO,qBAAqB;QAClF;QACI;QACrB,sBAAsB;QACtB,2BAA2B,YAAqC,OAAO,oBAAoB;kBAE3F,2CAACC;SAA0B,WAAY,YAAY,YAAY,aAAa,EAAE;SAC3E;UACyB;SACP;QACV,GACF;OACD;MACC;KACF;IACN;GACW;;AAIhC,gCAAe"}
1
+ {"version":3,"file":"ThunderIDProvider.cjs","names":["logger: ReturnType<typeof createPackageComponentLogger>","ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>>","reRenderCheckRef: RefObject<boolean>","client: ThunderIDReactClient","ThunderIDReactClient","storageManagerRef: any","useBrowserUrl","resolvedBaseUrl: string","decodedToken: IdToken","claims: User","arg1: any","isV2FlowRequest: boolean","ThunderIDRuntimeError","isAlreadySignedIn: boolean","currentUrl: URL","urlParams: URLSearchParams","code: string | null","executionIdFromUrl: string | null","storedExecutionId: string | null","interval: NodeJS.Timeout","status: boolean","getDecodedIdToken: () => Promise<IdToken>","getIdToken: () => Promise<string>","getAccessToken: () => Promise<string>","getStorageManager: () => Promise<any>","storageManager: any","request: (...args: any[]) => Promise<any>","requestAll: (...args: any[]) => Promise<any>","exchangeToken: (exchangeConfig: any) => Promise<any>","signOut: (...args: any[]) => Promise<any>","recover: (payload: any) => Promise<any>","signUp: (...args: any[]) => Promise<any>","clearSession: (...args: any[]) => Promise<any>","reInitialize: (reInitConfig: any) => Promise<any>","value: any","ThunderIDContext","I18nProvider","FlowMetaProvider","ThemeProvider","FlowProvider","UserProvider","ComponentRendererProvider"],"sources":["../../../../src/contexts/ThunderID/ThunderIDProvider.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 ThunderIDRuntimeError,\n generateFlattenedUserProfile,\n OIDCDiscoveryApiResponse,\n SignInOptions,\n User,\n UserProfile,\n IdToken,\n extractUserClaimsFromIdToken,\n EmbeddedSignInFlowResponse,\n createPackageComponentLogger,\n} from '@thunderid/browser';\nimport {FC, RefObject, PropsWithChildren, ReactElement, useEffect, useMemo, useRef, useState, useCallback} from 'react';\nimport ThunderIDContext from './ThunderIDContext';\nimport useBrowserUrl from '../../hooks/useBrowserUrl';\nimport {ThunderIDReactConfig} from '../../models/config';\nimport ThunderIDReactClient from '../../ThunderIDReactClient';\nimport ComponentRendererProvider from '../ComponentRenderer/ComponentRendererProvider';\nimport FlowProvider from '../Flow/FlowProvider';\nimport FlowMetaProvider from '../FlowMeta/FlowMetaProvider';\nimport I18nProvider from '../I18n/I18nProvider';\nimport ThemeProvider from '../Theme/ThemeProvider';\nimport UserProvider from '../User/UserProvider';\n\nconst logger: ReturnType<typeof createPackageComponentLogger> = createPackageComponentLogger(\n '@thunderid/react',\n 'ThunderIDProvider',\n);\n\n/**\n * Props interface of {@link ThunderIDProvider}\n */\nexport type ThunderIDProviderProps = ThunderIDReactConfig;\n\nconst ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>> = ({\n afterSignInUrl,\n afterSignOutUrl,\n baseUrl: initialBaseUrl,\n clientId,\n children,\n extensions,\n scopes,\n preferences,\n signInUrl,\n signUpUrl,\n organizationHandle,\n applicationId,\n signInOptions,\n tokenRequest,\n syncSession,\n instanceId = 0,\n organizationChain,\n ...rest\n}: PropsWithChildren<ThunderIDProviderProps>): ReactElement => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const client: ThunderIDReactClient = useMemo(() => new ThunderIDReactClient(instanceId), [instanceId]);\n const storageManagerRef: any = useRef<any>(null);\n const {hasAuthParams, hasCalledForThisInstance} = useBrowserUrl();\n const [user, setUser] = useState<any | null>(null);\n const [isSignedInSync, setIsSignedInSync] = useState<boolean>(false);\n const [isInitializedSync, setIsInitializedSync] = useState<boolean>(false);\n const [isLoadingSync, setIsLoadingSync] = useState<boolean>(true);\n\n const [userProfile, setUserProfile] = useState<UserProfile | null>(null);\n const [baseUrl, setBaseUrl] = useState<string>(initialBaseUrl ?? '');\n const [config, setConfig] = useState<ThunderIDReactConfig>({\n afterSignInUrl: afterSignInUrl ?? window.location.origin,\n afterSignOutUrl: afterSignOutUrl ?? window.location.origin,\n applicationId,\n baseUrl,\n clientId,\n organizationChain,\n organizationHandle,\n scopes,\n signInOptions,\n tokenRequest,\n signInUrl,\n signUpUrl,\n syncSession,\n ...rest,\n });\n\n const [isUpdatingSession, setIsUpdatingSession] = useState<boolean>(false);\n const [wellKnown, setWellKnown] = useState<OIDCDiscoveryApiResponse | null>(null);\n\n useEffect(() => {\n setBaseUrl(initialBaseUrl ?? '');\n }, [initialBaseUrl]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n await client.initialize(config);\n const initializedConfig: ThunderIDReactConfig = await client.getConfiguration();\n setConfig(initializedConfig);\n setWellKnown(await client.getDiscoveryResponse());\n })();\n }, []);\n\n async function updateSession(): Promise<void> {\n try {\n // Set flag to prevent loading state tracking from interfering\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n let resolvedBaseUrl: string = baseUrl;\n\n const decodedToken: IdToken = await client.getDecodedIdToken();\n\n // If there's a `user_org` claim in the ID token,\n // Treat this login as a organization login.\n if (decodedToken?.['user_org']) {\n resolvedBaseUrl = `${(await client.getConfiguration()).baseUrl}/o`;\n setBaseUrl(resolvedBaseUrl);\n }\n\n // TEMPORARY: SCIM2 and Organizations endpoints are not yet supported.\n const claims: User = extractUserClaimsFromIdToken(decodedToken) as User;\n setUser(claims);\n setUserProfile({\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n });\n\n // CRITICAL: Update sign-in status BEFORE setting loading to false\n // This prevents the race condition where ProtectedRoute sees isLoading=false but isSignedIn=false\n const currentSignInStatus: boolean = await client.isSignedIn();\n setIsSignedInSync(currentSignInStatus);\n } catch (error) {\n // TODO: Add an error log.\n } finally {\n // Clear the flag and set final loading state\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n\n async function signIn(...args: any): Promise<User | EmbeddedSignInFlowResponse> {\n // Check if this is a V2 embedded flow request BEFORE calling signIn\n // This allows us to skip session checks entirely for V2 flows\n const arg1: any = args[0];\n const isV2FlowRequest: boolean =\n typeof arg1 === 'object' && arg1 !== null && ('executionId' in arg1 || 'applicationId' in arg1);\n\n try {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n }\n\n return await client.signIn(...args);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n } finally {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n }\n\n /**\n * Try signing in when the component is mounted.\n */\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n (async (): Promise<void> => {\n // Sync session state whenever sign-in completes (both redirect and embedded V2 flows).\n // Pass the user returned by the SDK's sign-in flow so SCIM2/Me result is not discarded.\n await client.on('sign-in', async () => {\n await updateSession();\n });\n\n // User is already authenticated. Skip...\n const isAlreadySignedIn: boolean = await client.isSignedIn();\n\n // Start auto-refresh with a soft failure.\n const scheduleAutoRefresh = async (): Promise<void> => {\n try {\n await client.startAutoRefreshToken();\n } catch (error) {\n logger.warn('Failed to schedule automatic token refresh.', error);\n }\n };\n\n // Restore session state and kick off the refresh timer.\n const resumeSession = async (): Promise<void> => {\n await updateSession();\n await scheduleAutoRefresh();\n };\n\n if (isAlreadySignedIn) {\n await resumeSession();\n }\n\n // The access token may have expired while the refresh token is still valid.\n // Attempt a silent refresh — startAutoRefreshToken() calls refreshAccessToken()\n // immediately when timeUntilRefresh <= 0, then re-check sign-in status.\n await scheduleAutoRefresh();\n\n if (await client.isSignedIn()) {\n await resumeSession();\n return;\n }\n\n const currentUrl: URL = new URL(window.location.href);\n const hasAuthParamsResult: boolean =\n hasAuthParams(currentUrl, config.afterSignInUrl!) && hasCalledForThisInstance(currentUrl, instanceId ?? 0);\n\n if (hasAuthParamsResult) {\n try {\n const urlParams: URLSearchParams = currentUrl.searchParams;\n const code: string | null = urlParams.get('code');\n const executionIdFromUrl: string | null = urlParams.get('executionId');\n const storedExecutionId: string | null = sessionStorage.getItem('thunderid_execution_id');\n\n if (code && !executionIdFromUrl && !storedExecutionId) {\n await signIn();\n }\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n }\n }\n })();\n }, []);\n\n /**\n * Check if the user is signed in and update the state accordingly.\n * This will also set an interval to check for the sign-in status every second\n * until the user is signed in.\n */\n useEffect(() => {\n let interval: NodeJS.Timeout;\n\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isSignedIn();\n\n setIsSignedInSync(status);\n\n if (!status) {\n interval = setInterval(async () => {\n const newStatus: boolean = await client.isSignedIn();\n\n if (newStatus) {\n setIsSignedInSync(true);\n clearInterval(interval);\n }\n }, 1000);\n } else {\n // TODO: Add a debug log to indicate that the user is already signed in.\n }\n } catch (error) {\n setIsSignedInSync(false);\n }\n })();\n\n return (): void => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [client]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isInitialized();\n\n setIsInitializedSync(status);\n } catch (error) {\n setIsInitializedSync(false);\n }\n })();\n }, [client]);\n\n /**\n * Track loading state changes from the ThunderID client\n */\n useEffect(() => {\n const checkLoadingState = (): void => {\n // Don't override loading state during critical session updates\n if (isUpdatingSession) {\n return;\n }\n\n // Don't set loading=false while auth params are in the URL and user isn't signed in yet.\n // This prevents ProtectedRoute from redirecting before the sign-in effect processes the auth code.\n const currentUrl: URL = new URL(window.location.href);\n if (!isSignedInSync && hasAuthParams(currentUrl, config.afterSignInUrl!)) {\n return;\n }\n\n setIsLoadingSync(client.isLoading());\n };\n\n // Initial check\n checkLoadingState();\n\n // Set up an interval to check for loading state changes\n const interval: NodeJS.Timeout = setInterval(checkLoadingState, 100);\n\n return (): void => {\n clearInterval(interval);\n };\n }, [client, isLoadingSync, isSignedInSync, isUpdatingSession]);\n\n const signInSilently = async (options?: SignInOptions): Promise<User | boolean> => {\n try {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n return await client.signInSilently(options);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Error while signing in silently: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signInSilently-Error',\n 'react',\n 'An error occurred while trying to sign in silently.',\n );\n } finally {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n };\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile | null) => ({\n schemas: prev?.schemas ?? [],\n flattenedProfile: generateFlattenedUserProfile(payload, prev?.schemas ?? []),\n profile: payload,\n }));\n };\n\n const getDecodedIdToken: () => Promise<IdToken> = useCallback(\n async (): Promise<IdToken> => client.getDecodedIdToken(),\n [client],\n );\n\n const getIdToken: () => Promise<string> = useCallback(async (): Promise<string> => client.getIdToken(), [client]);\n\n const getAccessToken: () => Promise<string> = useCallback(\n async (): Promise<string> => client.getAccessToken(),\n [client],\n );\n\n const getStorageManager: () => Promise<any> = useCallback(async (): Promise<any> => {\n const storageManager: any = storageManagerRef.current ?? (await client.getStorageManager());\n if (storageManager) {\n storageManagerRef.current = storageManager;\n }\n return storageManager;\n }, [client]);\n\n const request: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.request(...args),\n [client],\n );\n\n const requestAll: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.requestAll(...args),\n [client],\n );\n\n const exchangeToken: (exchangeConfig: any) => Promise<any> = useCallback(\n async (exchangeConfig: any): Promise<any> => client.exchangeToken(exchangeConfig),\n [client],\n );\n\n const signOut: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signOut(...args),\n [client],\n );\n\n const recover: (payload: any) => Promise<any> = useCallback(\n async (payload: any): Promise<any> => client.recover(payload),\n [client],\n );\n\n const signUp: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signUp(...args),\n [client],\n );\n\n const clearSession: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.clearSession(...args),\n [client],\n );\n\n const reInitialize: (reInitConfig: any) => Promise<any> = useCallback(\n async (reInitConfig: any): Promise<any> => client.reInitialize(reInitConfig),\n [client],\n );\n\n const value: any = useMemo(\n () => ({\n afterSignInUrl: config.afterSignInUrl,\n applicationId: config.applicationId,\n baseUrl,\n scopes: config.scopes,\n clearSession,\n clientId,\n discovery: {\n wellKnown,\n },\n exchangeToken,\n getAccessToken,\n getDecodedIdToken,\n getIdToken,\n getStorageManager,\n http: {\n request,\n requestAll,\n },\n instanceId,\n isInitialized: isInitializedSync,\n isLoading: isLoadingSync,\n isSignedIn: isSignedInSync,\n organizationChain,\n organizationHandle: config?.organizationHandle,\n reInitialize,\n recover,\n signIn,\n signInOptions,\n tokenRequest,\n signInSilently,\n signInUrl,\n signOut,\n signUp,\n signUpUrl,\n syncSession,\n user,\n }),\n [\n applicationId,\n config?.organizationHandle,\n config.afterSignInUrl,\n config.scopes,\n signInUrl,\n signUpUrl,\n baseUrl,\n clientId,\n wellKnown,\n isInitializedSync,\n isLoadingSync,\n isSignedInSync,\n signIn,\n signInSilently,\n user,\n client,\n signInOptions,\n tokenRequest,\n syncSession,\n getDecodedIdToken,\n clearSession,\n exchangeToken,\n getAccessToken,\n getStorageManager,\n instanceId,\n organizationChain,\n recover,\n reInitialize,\n request,\n requestAll,\n signOut,\n signUp,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={value}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider enabled={preferences?.resolveFromMeta !== false}>\n <ThemeProvider\n theme={{\n ...preferences?.theme?.overrides,\n direction: preferences?.theme?.direction,\n }}\n >\n <FlowProvider>\n <UserProvider profile={userProfile!} onUpdateProfile={handleProfileUpdate}>\n <ComponentRendererProvider renderers={(extensions?.components?.renderers ?? {}) as any}>\n {children}\n </ComponentRendererProvider>\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDProvider;\n"],"mappings":";;;;;;;;;;;;;;;;;;AA0CA,MAAMA,+DACJ,oBACA,oBACD;AAOD,MAAMC,qBAAoE,EACxE,gBACA,iBACA,SAAS,gBACT,UACA,UACA,YACA,QACA,aACA,WACA,WACA,oBACA,eACA,eACA,cACA,aACA,aAAa,GACb,kBACA,GAAG,WAC0D;CAC7D,MAAMC,qCAA8C,MAAM;CAC1D,MAAMC,kCAA6C,IAAIC,qCAAqB,WAAW,EAAE,CAAC,WAAW,CAAC;CACtG,MAAMC,sCAAqC,KAAK;CAChD,MAAM,EAAC,eAAe,6BAA4BC,+BAAe;CACjE,MAAM,CAAC,MAAM,+BAAgC,KAAK;CAClD,MAAM,CAAC,gBAAgB,yCAAuC,MAAM;CACpE,MAAM,CAAC,mBAAmB,4CAA0C,MAAM;CAC1E,MAAM,CAAC,eAAe,wCAAsC,KAAK;CAEjE,MAAM,CAAC,aAAa,sCAA+C,KAAK;CACxE,MAAM,CAAC,SAAS,kCAA+B,kBAAkB,GAAG;CACpE,MAAM,CAAC,QAAQ,iCAA4C;EACzD,gBAAgB,kBAAkB,OAAO,SAAS;EAClD,iBAAiB,mBAAmB,OAAO,SAAS;EACpD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACJ,CAAC;CAEF,MAAM,CAAC,mBAAmB,4CAA0C,MAAM;CAC1E,MAAM,CAAC,WAAW,oCAA0D,KAAK;AAEjF,4BAAgB;AACd,aAAW,kBAAkB,GAAG;IAC/B,CAAC,eAAe,CAAC;AAEpB,4BAAgB;AACd,GAAC,YAA2B;AAC1B,SAAM,OAAO,WAAW,OAAO;AAE/B,aADgD,MAAM,OAAO,kBAAkB,CACnD;AAC5B,gBAAa,MAAM,OAAO,sBAAsB,CAAC;MAC/C;IACH,EAAE,CAAC;CAEN,eAAe,gBAA+B;AAC5C,MAAI;AAEF,wBAAqB,KAAK;AAC1B,oBAAiB,KAAK;GACtB,IAAIC,kBAA0B;GAE9B,MAAMC,eAAwB,MAAM,OAAO,mBAAmB;AAI9D,OAAI,eAAe,aAAa;AAC9B,sBAAkB,IAAI,MAAM,OAAO,kBAAkB,EAAE,QAAQ;AAC/D,eAAW,gBAAgB;;GAI7B,MAAMC,+DAA4C,aAAa;AAC/D,WAAQ,OAAO;AACf,kBAAe;IACb,kBAAkB;IAClB,SAAS;IACT,SAAS,EAAE;IACZ,CAAC;AAKF,qBADqC,MAAM,OAAO,YAAY,CACxB;WAC/B,OAAO,WAEN;AAER,wBAAqB,MAAM;AAC3B,oBAAiB,OAAO,WAAW,CAAC;;;CAIxC,eAAe,OAAO,GAAG,MAAuD;EAG9E,MAAMC,OAAY,KAAK;EACvB,MAAMC,kBACJ,OAAO,SAAS,YAAY,SAAS,SAAS,iBAAiB,QAAQ,mBAAmB;AAE5F,MAAI;AACF,OAAI,CAAC,iBAAiB;AACpB,yBAAqB,KAAK;AAC1B,qBAAiB,KAAK;;AAGxB,UAAO,MAAM,OAAO,OAAO,GAAG,KAAK;WAC5B,OAAO;AACd,SAAM,IAAIC,0CACR,mBAAmB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,UAAU,MAAM,CAAC,IACzF,0BACA,SACA,6CACD;YACO;AACR,OAAI,CAAC,iBAAiB;AACpB,yBAAqB,MAAM;AAC3B,qBAAiB,OAAO,WAAW,CAAC;;;;;;;AAQ1C,4BAAgB;AAOd,MAAI,iBAAiB,QACnB;AAGF,mBAAiB,UAAU;AAE3B,GAAC,YAA2B;AAG1B,SAAM,OAAO,GAAG,WAAW,YAAY;AACrC,UAAM,eAAe;KACrB;GAGF,MAAMC,oBAA6B,MAAM,OAAO,YAAY;GAG5D,MAAM,sBAAsB,YAA2B;AACrD,QAAI;AACF,WAAM,OAAO,uBAAuB;aAC7B,OAAO;AACd,YAAO,KAAK,+CAA+C,MAAM;;;GAKrE,MAAM,gBAAgB,YAA2B;AAC/C,UAAM,eAAe;AACrB,UAAM,qBAAqB;;AAG7B,OAAI,kBACF,OAAM,eAAe;AAMvB,SAAM,qBAAqB;AAE3B,OAAI,MAAM,OAAO,YAAY,EAAE;AAC7B,UAAM,eAAe;AACrB;;GAGF,MAAMC,aAAkB,IAAI,IAAI,OAAO,SAAS,KAAK;AAIrD,OAFE,cAAc,YAAY,OAAO,eAAgB,IAAI,yBAAyB,YAAY,cAAc,EAAE,CAG1G,KAAI;IACF,MAAMC,YAA6B,WAAW;IAC9C,MAAMC,OAAsB,UAAU,IAAI,OAAO;IACjD,MAAMC,qBAAoC,UAAU,IAAI,cAAc;IACtE,MAAMC,oBAAmC,eAAe,QAAQ,yBAAyB;AAEzF,QAAI,QAAQ,CAAC,sBAAsB,CAAC,kBAClC,OAAM,QAAQ;YAET,OAAO;AACd,UAAM,IAAIN,0CACR,mBAAmB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,UAAU,MAAM,CAAC,IACzF,0BACA,SACA,6CACD;;MAGH;IACH,EAAE,CAAC;;;;;;AAON,4BAAgB;EACd,IAAIO;AAEJ,GAAC,YAA2B;AAC1B,OAAI;IACF,MAAMC,SAAkB,MAAM,OAAO,YAAY;AAEjD,sBAAkB,OAAO;AAEzB,QAAI,CAAC,OACH,YAAW,YAAY,YAAY;AAGjC,SAF2B,MAAM,OAAO,YAAY,EAErC;AACb,wBAAkB,KAAK;AACvB,oBAAc,SAAS;;OAExB,IAAK;YAIH,OAAO;AACd,sBAAkB,MAAM;;MAExB;AAEJ,eAAmB;AACjB,OAAI,SACF,eAAc,SAAS;;IAG1B,CAAC,OAAO,CAAC;AAEZ,4BAAgB;AACd,GAAC,YAA2B;AAC1B,OAAI;AAGF,yBAFwB,MAAM,OAAO,eAAe,CAExB;YACrB,OAAO;AACd,yBAAqB,MAAM;;MAE3B;IACH,CAAC,OAAO,CAAC;;;;AAKZ,4BAAgB;EACd,MAAM,0BAAgC;AAEpC,OAAI,kBACF;GAKF,MAAMN,aAAkB,IAAI,IAAI,OAAO,SAAS,KAAK;AACrD,OAAI,CAAC,kBAAkB,cAAc,YAAY,OAAO,eAAgB,CACtE;AAGF,oBAAiB,OAAO,WAAW,CAAC;;AAItC,qBAAmB;EAGnB,MAAMK,WAA2B,YAAY,mBAAmB,IAAI;AAEpE,eAAmB;AACjB,iBAAc,SAAS;;IAExB;EAAC;EAAQ;EAAe;EAAgB;EAAkB,CAAC;CAE9D,MAAM,iBAAiB,OAAO,YAAqD;AACjF,MAAI;AACF,wBAAqB,KAAK;AAC1B,oBAAiB,KAAK;AACtB,UAAO,MAAM,OAAO,eAAe,QAAQ;WACpC,OAAO;AACd,SAAM,IAAIP,0CACR,oCAAoC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,UAAU,MAAM,CAAC,IAC1G,kCACA,SACA,sDACD;YACO;AACR,wBAAqB,MAAM;AAC3B,oBAAiB,OAAO,WAAW,CAAC;;;CAIxC,MAAM,uBAAuB,YAAwB;AACnD,UAAQ,QAAQ;AAChB,kBAAgB,UAA8B;GAC5C,SAAS,MAAM,WAAW,EAAE;GAC5B,wEAA+C,SAAS,MAAM,WAAW,EAAE,CAAC;GAC5E,SAAS;GACV,EAAE;;CAGL,MAAMS,2CACJ,YAA8B,OAAO,mBAAmB,EACxD,CAAC,OAAO,CACT;CAED,MAAMC,oCAAgD,YAA6B,OAAO,YAAY,EAAE,CAAC,OAAO,CAAC;CAEjH,MAAMC,wCACJ,YAA6B,OAAO,gBAAgB,EACpD,CAAC,OAAO,CACT;CAED,MAAMC,2CAAoD,YAA0B;EAClF,MAAMC,iBAAsB,kBAAkB,WAAY,MAAM,OAAO,mBAAmB;AAC1F,MAAI,eACF,mBAAkB,UAAU;AAE9B,SAAO;IACN,CAAC,OAAO,CAAC;CAEZ,MAAMC,iCACJ,OAAO,GAAG,SAA8B,OAAO,QAAQ,GAAG,KAAK,EAC/D,CAAC,OAAO,CACT;CAED,MAAMC,oCACJ,OAAO,GAAG,SAA8B,OAAO,WAAW,GAAG,KAAK,EAClE,CAAC,OAAO,CACT;CAED,MAAMC,uCACJ,OAAO,mBAAsC,OAAO,cAAc,eAAe,EACjF,CAAC,OAAO,CACT;CAED,MAAMC,iCACJ,OAAO,GAAG,SAA8B,OAAO,QAAQ,GAAG,KAAK,EAC/D,CAAC,OAAO,CACT;CAED,MAAMC,iCACJ,OAAO,YAA+B,OAAO,QAAQ,QAAQ,EAC7D,CAAC,OAAO,CACT;CAED,MAAMC,gCACJ,OAAO,GAAG,SAA8B,OAAO,OAAO,GAAG,KAAK,EAC9D,CAAC,OAAO,CACT;CAED,MAAMC,sCACJ,OAAO,GAAG,SAA8B,OAAO,aAAa,GAAG,KAAK,EACpE,CAAC,OAAO,CACT;CAED,MAAMC,sCACJ,OAAO,iBAAoC,OAAO,aAAa,aAAa,EAC5E,CAAC,OAAO,CACT;CAED,MAAMC,kCACG;EACL,gBAAgB,OAAO;EACvB,eAAe,OAAO;EACtB;EACA,QAAQ,OAAO;EACf;EACA;EACA,WAAW,EACT,WACD;EACD;EACA;EACA;EACA;EACA;EACA,MAAM;GACJ;GACA;GACD;EACD;EACA,eAAe;EACf,WAAW;EACX,YAAY;EACZ;EACA,oBAAoB,QAAQ;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,GACD;EACE;EACA,QAAQ;EACR,OAAO;EACP,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QACE,2CAACC,iCAAiB;EAAgB;YAChC,2CAACC;GAAa,aAAa,aAAa;aACtC,2CAACC;IAAiB,SAAS,aAAa,oBAAoB;cAC1D,2CAACC;KACC,OAAO;MACL,GAAG,aAAa,OAAO;MACvB,WAAW,aAAa,OAAO;MAChC;eAED,2CAACC,0CACC,2CAACC;MAAa,SAAS;MAAc,iBAAiB;gBACpD,2CAACC;OAA0B,WAAY,YAAY,YAAY,aAAa,EAAE;OAC3E;QACyB;OACf,GACF;MACD;KACC;IACN;GACW;;AAIhC,gCAAe"}
@@ -1,8 +1,8 @@
1
- const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  let react = require("react");
3
3
  react = require_rolldown_runtime.__toESM(react);
4
4
 
5
- //#region src/hooks/v2/useOAuthCallback.ts
5
+ //#region src/hooks/useOAuthCallback.ts
6
6
  function cleanupUrlParams() {
7
7
  if (typeof window === "undefined") return;
8
8
  const url = new URL(window.location.href);
@@ -0,0 +1 @@
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/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"}