@thunderid/react 0.3.3 → 0.3.5

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 (255) hide show
  1. package/dist/ThunderIDReactClient.d.ts +1 -5
  2. package/dist/ThunderIDReactClient.d.ts.map +1 -1
  3. package/dist/ThunderIDReactClient.js +1 -68
  4. package/dist/ThunderIDReactClient.js.map +1 -1
  5. package/dist/cjs/ThunderIDReactClient.cjs +0 -67
  6. package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
  7. package/dist/cjs/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
  8. package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs +57 -0
  9. package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs.map +1 -0
  10. package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs +36 -0
  11. package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs.map +1 -0
  12. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs +6 -5
  13. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs.map +1 -1
  14. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs +3 -15
  15. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
  16. package/dist/cjs/contexts/Theme/ThemeContext.cjs.map +1 -1
  17. package/dist/cjs/contexts/Theme/ThemeProvider.cjs +2 -5
  18. package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
  19. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +0 -2
  20. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
  21. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +14 -90
  22. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  23. package/dist/cjs/index.cjs +6 -51
  24. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
  25. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts +50 -0
  26. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts.map +1 -0
  27. package/dist/components/presentation/UserAvatar/BaseUserAvatar.js +55 -0
  28. package/dist/components/presentation/UserAvatar/BaseUserAvatar.js.map +1 -0
  29. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts +46 -0
  30. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts.map +1 -0
  31. package/dist/components/presentation/UserAvatar/UserAvatar.js +34 -0
  32. package/dist/components/presentation/UserAvatar/UserAvatar.js.map +1 -0
  33. package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts.map +1 -1
  34. package/dist/components/presentation/UserDropdown/BaseUserDropdown.js +6 -5
  35. package/dist/components/presentation/UserDropdown/BaseUserDropdown.js.map +1 -1
  36. package/dist/components/presentation/auth/AuthOptionFactory.d.ts +2 -2
  37. package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
  38. package/dist/components/presentation/auth/AuthOptionFactory.js +3 -15
  39. package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
  40. package/dist/contexts/Theme/ThemeContext.d.ts +0 -12
  41. package/dist/contexts/Theme/ThemeContext.d.ts.map +1 -1
  42. package/dist/contexts/Theme/ThemeContext.js.map +1 -1
  43. package/dist/contexts/Theme/ThemeProvider.d.ts +0 -4
  44. package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
  45. package/dist/contexts/Theme/ThemeProvider.js +2 -5
  46. package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
  47. package/dist/contexts/ThunderID/ThunderIDContext.d.ts +2 -3
  48. package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
  49. package/dist/contexts/ThunderID/ThunderIDContext.js +0 -2
  50. package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
  51. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  52. package/dist/contexts/ThunderID/ThunderIDProvider.js +15 -91
  53. package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  54. package/dist/index.d.ts +4 -40
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +5 -27
  57. package/package.json +2 -2
  58. package/dist/api/createOrganization.d.ts +0 -86
  59. package/dist/api/createOrganization.d.ts.map +0 -1
  60. package/dist/api/createOrganization.js +0 -80
  61. package/dist/api/createOrganization.js.map +0 -1
  62. package/dist/api/getAllOrganizations.d.ts +0 -78
  63. package/dist/api/getAllOrganizations.d.ts.map +0 -1
  64. package/dist/api/getAllOrganizations.js +0 -71
  65. package/dist/api/getAllOrganizations.js.map +0 -1
  66. package/dist/api/getMeOrganizations.d.ts +0 -82
  67. package/dist/api/getMeOrganizations.d.ts.map +0 -1
  68. package/dist/api/getMeOrganizations.js +0 -75
  69. package/dist/api/getMeOrganizations.js.map +0 -1
  70. package/dist/api/getOrganization.d.ts +0 -74
  71. package/dist/api/getOrganization.d.ts.map +0 -1
  72. package/dist/api/getOrganization.js +0 -67
  73. package/dist/api/getOrganization.js.map +0 -1
  74. package/dist/api/getSchemas.d.ts +0 -72
  75. package/dist/api/getSchemas.d.ts.map +0 -1
  76. package/dist/api/getSchemas.js +0 -65
  77. package/dist/api/getSchemas.js.map +0 -1
  78. package/dist/api/updateOrganization.d.ts +0 -81
  79. package/dist/api/updateOrganization.d.ts.map +0 -1
  80. package/dist/api/updateOrganization.js +0 -74
  81. package/dist/api/updateOrganization.js.map +0 -1
  82. package/dist/cjs/api/createOrganization.cjs +0 -82
  83. package/dist/cjs/api/createOrganization.cjs.map +0 -1
  84. package/dist/cjs/api/getAllOrganizations.cjs +0 -73
  85. package/dist/cjs/api/getAllOrganizations.cjs.map +0 -1
  86. package/dist/cjs/api/getMeOrganizations.cjs +0 -77
  87. package/dist/cjs/api/getMeOrganizations.cjs.map +0 -1
  88. package/dist/cjs/api/getOrganization.cjs +0 -69
  89. package/dist/cjs/api/getOrganization.cjs.map +0 -1
  90. package/dist/cjs/api/getSchemas.cjs +0 -67
  91. package/dist/cjs/api/getSchemas.cjs.map +0 -1
  92. package/dist/cjs/api/updateOrganization.cjs +0 -76
  93. package/dist/cjs/api/updateOrganization.cjs.map +0 -1
  94. package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs +0 -34
  95. package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs.map +0 -1
  96. package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs +0 -58
  97. package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs.map +0 -1
  98. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs +0 -183
  99. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs.map +0 -1
  100. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs +0 -150
  101. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs.map +0 -1
  102. package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs +0 -90
  103. package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs.map +0 -1
  104. package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs +0 -41
  105. package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs.map +0 -1
  106. package/dist/cjs/components/presentation/Organization/Organization.cjs +0 -49
  107. package/dist/cjs/components/presentation/Organization/Organization.cjs.map +0 -1
  108. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs +0 -257
  109. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs.map +0 -1
  110. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs +0 -236
  111. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs.map +0 -1
  112. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs +0 -86
  113. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs.map +0 -1
  114. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs +0 -75
  115. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs.map +0 -1
  116. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs +0 -328
  117. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs.map +0 -1
  118. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs +0 -166
  119. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs.map +0 -1
  120. package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs +0 -126
  121. package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs.map +0 -1
  122. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs +0 -288
  123. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs.map +0 -1
  124. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs +0 -237
  125. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs.map +0 -1
  126. package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs +0 -127
  127. package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs.map +0 -1
  128. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs +0 -183
  129. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs.map +0 -1
  130. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs +0 -128
  131. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs.map +0 -1
  132. package/dist/cjs/components/primitives/Icons/Building.cjs +0 -75
  133. package/dist/cjs/components/primitives/Icons/Building.cjs.map +0 -1
  134. package/dist/cjs/contexts/Branding/BrandingContext.cjs +0 -12
  135. package/dist/cjs/contexts/Branding/BrandingContext.cjs.map +0 -1
  136. package/dist/cjs/contexts/Branding/BrandingProvider.cjs +0 -96
  137. package/dist/cjs/contexts/Branding/BrandingProvider.cjs.map +0 -1
  138. package/dist/cjs/contexts/Branding/useBrandingContext.cjs +0 -40
  139. package/dist/cjs/contexts/Branding/useBrandingContext.cjs.map +0 -1
  140. package/dist/cjs/contexts/Organization/OrganizationContext.cjs +0 -27
  141. package/dist/cjs/contexts/Organization/OrganizationContext.cjs.map +0 -1
  142. package/dist/cjs/contexts/Organization/OrganizationProvider.cjs +0 -97
  143. package/dist/cjs/contexts/Organization/OrganizationProvider.cjs.map +0 -1
  144. package/dist/cjs/contexts/Organization/useOrganization.cjs +0 -100
  145. package/dist/cjs/contexts/Organization/useOrganization.cjs.map +0 -1
  146. package/dist/cjs/hooks/useBranding.cjs +0 -71
  147. package/dist/cjs/hooks/useBranding.cjs.map +0 -1
  148. package/dist/components/control/OrganizationContext/OrganizationContext.d.ts +0 -40
  149. package/dist/components/control/OrganizationContext/OrganizationContext.d.ts.map +0 -1
  150. package/dist/components/control/OrganizationContext/OrganizationContext.js +0 -32
  151. package/dist/components/control/OrganizationContext/OrganizationContext.js.map +0 -1
  152. package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts +0 -35
  153. package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts.map +0 -1
  154. package/dist/components/control/OrganizationContext/OrganizationContextController.js +0 -55
  155. package/dist/components/control/OrganizationContext/OrganizationContextController.js.map +0 -1
  156. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts +0 -60
  157. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts.map +0 -1
  158. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js +0 -178
  159. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js.map +0 -1
  160. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts +0 -27
  161. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts.map +0 -1
  162. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js +0 -147
  163. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js.map +0 -1
  164. package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts +0 -68
  165. package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts.map +0 -1
  166. package/dist/components/presentation/CreateOrganization/CreateOrganization.js +0 -87
  167. package/dist/components/presentation/CreateOrganization/CreateOrganization.js.map +0 -1
  168. package/dist/components/presentation/Organization/BaseOrganization.d.ts +0 -67
  169. package/dist/components/presentation/Organization/BaseOrganization.d.ts.map +0 -1
  170. package/dist/components/presentation/Organization/BaseOrganization.js +0 -39
  171. package/dist/components/presentation/Organization/BaseOrganization.js.map +0 -1
  172. package/dist/components/presentation/Organization/Organization.d.ts +0 -67
  173. package/dist/components/presentation/Organization/Organization.d.ts.map +0 -1
  174. package/dist/components/presentation/Organization/Organization.js +0 -47
  175. package/dist/components/presentation/Organization/Organization.js.map +0 -1
  176. package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts +0 -135
  177. package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts.map +0 -1
  178. package/dist/components/presentation/OrganizationList/BaseOrganizationList.js +0 -252
  179. package/dist/components/presentation/OrganizationList/BaseOrganizationList.js.map +0 -1
  180. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts +0 -27
  181. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts.map +0 -1
  182. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js +0 -233
  183. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js.map +0 -1
  184. package/dist/components/presentation/OrganizationList/OrganizationList.d.ts +0 -93
  185. package/dist/components/presentation/OrganizationList/OrganizationList.d.ts.map +0 -1
  186. package/dist/components/presentation/OrganizationList/OrganizationList.js +0 -82
  187. package/dist/components/presentation/OrganizationList/OrganizationList.js.map +0 -1
  188. package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts +0 -27
  189. package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts.map +0 -1
  190. package/dist/components/presentation/OrganizationList/OrganizationList.styles.js +0 -72
  191. package/dist/components/presentation/OrganizationList/OrganizationList.styles.js.map +0 -1
  192. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts +0 -160
  193. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts.map +0 -1
  194. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js +0 -323
  195. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js.map +0 -1
  196. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts +0 -27
  197. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts.map +0 -1
  198. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js +0 -163
  199. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js.map +0 -1
  200. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts +0 -120
  201. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts.map +0 -1
  202. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js +0 -122
  203. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js.map +0 -1
  204. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts +0 -149
  205. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts.map +0 -1
  206. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js +0 -282
  207. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js.map +0 -1
  208. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts +0 -27
  209. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts.map +0 -1
  210. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js +0 -234
  211. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js.map +0 -1
  212. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts +0 -71
  213. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts.map +0 -1
  214. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js +0 -124
  215. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js.map +0 -1
  216. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts +0 -30
  217. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts.map +0 -1
  218. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js +0 -179
  219. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js.map +0 -1
  220. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts +0 -21
  221. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts.map +0 -1
  222. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js +0 -125
  223. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js.map +0 -1
  224. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts +0 -20
  225. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts.map +0 -1
  226. package/dist/components/primitives/Icons/Building.js +0 -73
  227. package/dist/components/primitives/Icons/Building.js.map +0 -1
  228. package/dist/contexts/Branding/BrandingContext.d.ts +0 -53
  229. package/dist/contexts/Branding/BrandingContext.d.ts.map +0 -1
  230. package/dist/contexts/Branding/BrandingContext.js +0 -10
  231. package/dist/contexts/Branding/BrandingContext.js.map +0 -1
  232. package/dist/contexts/Branding/BrandingProvider.d.ts +0 -89
  233. package/dist/contexts/Branding/BrandingProvider.d.ts.map +0 -1
  234. package/dist/contexts/Branding/BrandingProvider.js +0 -92
  235. package/dist/contexts/Branding/BrandingProvider.js.map +0 -1
  236. package/dist/contexts/Branding/useBrandingContext.d.ts +0 -45
  237. package/dist/contexts/Branding/useBrandingContext.d.ts.map +0 -1
  238. package/dist/contexts/Branding/useBrandingContext.js +0 -38
  239. package/dist/contexts/Branding/useBrandingContext.js.map +0 -1
  240. package/dist/contexts/Organization/OrganizationContext.d.ts +0 -41
  241. package/dist/contexts/Organization/OrganizationContext.d.ts.map +0 -1
  242. package/dist/contexts/Organization/OrganizationContext.js +0 -25
  243. package/dist/contexts/Organization/OrganizationContext.js.map +0 -1
  244. package/dist/contexts/Organization/OrganizationProvider.d.ts +0 -94
  245. package/dist/contexts/Organization/OrganizationProvider.d.ts.map +0 -1
  246. package/dist/contexts/Organization/OrganizationProvider.js +0 -93
  247. package/dist/contexts/Organization/OrganizationProvider.js.map +0 -1
  248. package/dist/contexts/Organization/useOrganization.d.ts +0 -105
  249. package/dist/contexts/Organization/useOrganization.d.ts.map +0 -1
  250. package/dist/contexts/Organization/useOrganization.js +0 -98
  251. package/dist/contexts/Organization/useOrganization.js.map +0 -1
  252. package/dist/hooks/useBranding.d.ts +0 -128
  253. package/dist/hooks/useBranding.d.ts.map +0 -1
  254. package/dist/hooks/useBranding.js +0 -69
  255. package/dist/hooks/useBranding.js.map +0 -1
@@ -15,7 +15,7 @@
15
15
  * specific language governing permissions and limitations
16
16
  * under the License.
17
17
  */
18
- import { ThunderIDBrowserClient, UserProfile, SignInOptions, User, SignUpOptions, Organization, IdToken, AllOrganizationsApiResponse, TokenResponse, HttpRequestConfig, HttpResponse, TokenExchangeRequestConfig, EmbeddedSignInFlowResponse } from '@thunderid/browser';
18
+ import { ThunderIDBrowserClient, UserProfile, SignInOptions, User, SignUpOptions, IdToken, TokenResponse, HttpRequestConfig, HttpResponse, TokenExchangeRequestConfig, EmbeddedSignInFlowResponse } from '@thunderid/browser';
19
19
  import { ThunderIDReactConfig } from './models/config';
20
20
  declare class ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {
21
21
  private loadingState;
@@ -30,10 +30,6 @@ declare class ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDRea
30
30
  getDecodedIdToken(sessionId?: string): Promise<IdToken>;
31
31
  getIdToken(): Promise<string>;
32
32
  getUserProfile(): Promise<UserProfile>;
33
- getMyOrganizations(options?: any): Promise<Organization[]>;
34
- getAllOrganizations(options?: any): Promise<AllOrganizationsApiResponse>;
35
- getCurrentOrganization(): Promise<Organization | null>;
36
- switchOrganization(organization: Organization): Promise<TokenResponse | Response>;
37
33
  isLoading(): boolean;
38
34
  isSignedIn(): Promise<boolean>;
39
35
  exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"ThunderIDReactClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDReactClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,IAAI,EACJ,aAAa,EAGb,YAAY,EACZ,OAAO,EAEP,2BAA2B,EAE3B,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAE1B,0BAA0B,EAK3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AAErD,cAAM,oBAAoB,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IACjH,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,iBAAiB,CAAmC;gBAEhD,UAAU,SAAI;IAI1B,OAAO,CAAC,UAAU;YAIJ,WAAW;IAUhB,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB1D,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB/D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAWtC,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsB1D,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAoBxE,sBAAsB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAoBtD,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;IAyCvF,SAAS,IAAI,OAAO;IAId,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,aAAa,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;IAIpF,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAgFlE,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;IAIhE,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA0DlC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IASnC,iBAAiB,IAAI,GAAG;IAIlC,OAAO,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAItE,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;CAGrF;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"ThunderIDReactClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDReactClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,IAAI,EACJ,aAAa,EAGb,OAAO,EAEP,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAE1B,0BAA0B,EAK3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AAErD,cAAM,oBAAoB,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IACjH,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,iBAAiB,CAAmC;gBAEhD,UAAU,SAAI;IAI1B,OAAO,CAAC,UAAU;YAIJ,WAAW;IAUhB,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1D,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB/D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAW5C,SAAS,IAAI,OAAO;IAId,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,aAAa,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;IAIpF,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAgFlE,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;IAIhE,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA0DlC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IASnC,iBAAiB,IAAI,GAAG;IAIlC,OAAO,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAItE,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;CAGrF;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,6 +1,4 @@
1
- import getAllOrganizations_default from "./api/getAllOrganizations.js";
2
- import getMeOrganizations_default from "./api/getMeOrganizations.js";
3
- import { EmbeddedSignInFlowStatus, EmbeddedSignUpFlowStatus, ThunderIDBrowserClient, ThunderIDRuntimeError, deriveOrganizationHandleFromBaseUrl, executeEmbeddedRecoveryFlow, executeEmbeddedSignInFlow, executeEmbeddedSignUpFlow, extractUserClaimsFromIdToken, isEmpty } from "@thunderid/browser";
1
+ import { EmbeddedSignInFlowStatus, EmbeddedSignUpFlowStatus, ThunderIDBrowserClient, ThunderIDRuntimeError, executeEmbeddedRecoveryFlow, executeEmbeddedSignInFlow, executeEmbeddedSignUpFlow, extractUserClaimsFromIdToken, isEmpty } from "@thunderid/browser";
4
2
 
5
3
  //#region src/ThunderIDReactClient.ts
6
4
  var ThunderIDReactClient = class extends ThunderIDBrowserClient {
@@ -21,12 +19,9 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
21
19
  }
22
20
  }
23
21
  initialize(config) {
24
- let resolvedOrganizationHandle = config?.organizationHandle;
25
- if (!resolvedOrganizationHandle) resolvedOrganizationHandle = deriveOrganizationHandleFromBaseUrl(config?.baseUrl);
26
22
  return this.withLoading(async () => {
27
23
  this._initializeConfig = {
28
24
  ...config,
29
- organizationHandle: resolvedOrganizationHandle,
30
25
  periodicTokenRefresh: config?.tokenLifecycle?.refreshToken?.autoRefresh ?? config?.periodicTokenRefresh
31
26
  };
32
27
  return super.initialize(this._initializeConfig);
@@ -66,68 +61,6 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
66
61
  };
67
62
  });
68
63
  }
69
- async getMyOrganizations(options) {
70
- try {
71
- let baseUrl = options?.baseUrl;
72
- if (!baseUrl) baseUrl = (await this.getStorageManager().getConfigData())?.baseUrl;
73
- return await getMeOrganizations_default({
74
- baseUrl,
75
- instanceId: this.getInstanceId()
76
- });
77
- } catch (error) {
78
- throw new ThunderIDRuntimeError(`Failed to fetch the user's associated organizations: ${error instanceof Error ? error.message : String(error)}`, "ThunderIDReactClient-getMyOrganizations-RuntimeError-001", "react", "An error occurred while fetching associated organizations of the signed-in user.");
79
- }
80
- }
81
- async getAllOrganizations(options) {
82
- try {
83
- let baseUrl = options?.baseUrl;
84
- if (!baseUrl) baseUrl = (await this.getStorageManager().getConfigData())?.baseUrl;
85
- return await getAllOrganizations_default({
86
- baseUrl,
87
- instanceId: this.getInstanceId()
88
- });
89
- } catch (error) {
90
- throw new ThunderIDRuntimeError(`Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`, "ThunderIDReactClient-getAllOrganizations-RuntimeError-001", "react", "An error occurred while fetching all the organizations associated with the user.");
91
- }
92
- }
93
- async getCurrentOrganization() {
94
- try {
95
- return await this.withLoading(async () => {
96
- const idToken = await this.getDecodedIdToken();
97
- return {
98
- id: idToken?.org_id ?? "",
99
- name: idToken?.org_name ?? "",
100
- orgHandle: idToken?.org_handle ?? ""
101
- };
102
- });
103
- } catch (error) {
104
- throw new ThunderIDRuntimeError(`Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`, "ThunderIDReactClient-getCurrentOrganization-RuntimeError-001", "react", "An error occurred while fetching the current organization of the signed-in user.");
105
- }
106
- }
107
- async switchOrganization(organization) {
108
- return this.withLoading(async () => {
109
- try {
110
- const sourceInstanceId = (await this.getStorageManager().getConfigData())?.organizationChain?.sourceInstanceId;
111
- if (!organization.id) throw new ThunderIDRuntimeError("Organization ID is required for switching organizations", "react-ThunderIDReactClient-SwitchOrganizationError-001", "react", "The organization object must contain a valid ID to perform the organization switch.");
112
- const exchangeConfig = {
113
- attachToken: false,
114
- data: {
115
- client_id: "{{clientId}}",
116
- grant_type: "organization_switch",
117
- scope: "{{scopes}}",
118
- switching_organization: organization.id,
119
- token: "{{accessToken}}"
120
- },
121
- id: "organization-switch",
122
- returnsSession: true,
123
- signInRequired: sourceInstanceId === void 0
124
- };
125
- return await super.exchangeToken(exchangeConfig);
126
- } catch (error) {
127
- throw new ThunderIDRuntimeError(`Failed to switch organization: ${error.message || error}`, "react-ThunderIDReactClient-SwitchOrganizationError-003", "react", "An error occurred while switching to the specified organization. Please try again.");
128
- }
129
- });
130
- }
131
64
  isLoading() {
132
65
  return this.loadingState;
133
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ThunderIDReactClient.js","names":["resolvedOrganizationHandle: string | undefined","isInitialized: boolean","claims: User","baseUrl: string","getMeOrganizations","getAllOrganizations","idToken: IdToken","sourceInstanceId: number | undefined","exchangeConfig: TokenExchangeRequestConfig","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","authId: string","response: any","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../src/ThunderIDReactClient.ts"],"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 ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n Organization,\n IdToken,\n deriveOrganizationHandleFromBaseUrl,\n AllOrganizationsApiResponse,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n} from '@thunderid/browser';\nimport getAllOrganizations from './api/getAllOrganizations';\nimport getMeOrganizations from './api/getMeOrganizations';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n let resolvedOrganizationHandle: string | undefined = config?.organizationHandle;\n\n if (!resolvedOrganizationHandle) {\n resolvedOrganizationHandle = deriveOrganizationHandleFromBaseUrl(config?.baseUrl);\n }\n\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n organizationHandle: resolvedOrganizationHandle,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override async getMyOrganizations(options?: any): Promise<Organization[]> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getMeOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the user's associated organizations: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 'ThunderIDReactClient-getMyOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching associated organizations of the signed-in user.',\n );\n }\n }\n\n override async getAllOrganizations(options?: any): Promise<AllOrganizationsApiResponse> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getAllOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getAllOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching all the organizations associated with the user.',\n );\n }\n }\n\n override async getCurrentOrganization(): Promise<Organization | null> {\n try {\n return await this.withLoading(async () => {\n const idToken: IdToken = await this.getDecodedIdToken();\n return {\n id: idToken?.org_id ?? '',\n name: idToken?.org_name ?? '',\n orgHandle: idToken?.org_handle ?? '',\n };\n });\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getCurrentOrganization-RuntimeError-001',\n 'react',\n 'An error occurred while fetching the current organization of the signed-in user.',\n );\n }\n }\n\n override async switchOrganization(organization: Organization): Promise<TokenResponse | Response> {\n return this.withLoading(async () => {\n try {\n const configData: any = await this.getStorageManager().getConfigData();\n const sourceInstanceId: number | undefined = configData?.organizationChain?.sourceInstanceId;\n\n if (!organization.id) {\n throw new ThunderIDRuntimeError(\n 'Organization ID is required for switching organizations',\n 'react-ThunderIDReactClient-SwitchOrganizationError-001',\n 'react',\n 'The organization object must contain a valid ID to perform the organization switch.',\n );\n }\n\n const exchangeConfig: TokenExchangeRequestConfig = {\n attachToken: false,\n data: {\n client_id: '{{clientId}}',\n grant_type: 'organization_switch',\n scope: '{{scopes}}',\n switching_organization: organization.id,\n token: '{{accessToken}}',\n },\n id: 'organization-switch',\n returnsSession: true,\n signInRequired: sourceInstanceId === undefined,\n };\n\n return (await super.exchangeToken(exchangeConfig)) as TokenResponse | Response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error.message || error}`,\n 'react-ThunderIDReactClient-SwitchOrganizationError-003',\n 'react',\n 'An error occurred while switching to the specified organization. Please try again.',\n );\n }\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThunderIDReactClient.js","names":["isInitialized: boolean","claims: User","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","baseUrl: string","authId: string","response: any","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../src/ThunderIDReactClient.ts"],"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 ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n IdToken,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n} from '@thunderid/browser';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
- const require_getAllOrganizations = require('./api/getAllOrganizations.cjs');
3
- const require_getMeOrganizations = require('./api/getMeOrganizations.cjs');
4
2
  let __thunderid_browser = require("@thunderid/browser");
5
3
  __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
6
4
 
@@ -23,12 +21,9 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
23
21
  }
24
22
  }
25
23
  initialize(config) {
26
- let resolvedOrganizationHandle = config?.organizationHandle;
27
- if (!resolvedOrganizationHandle) resolvedOrganizationHandle = (0, __thunderid_browser.deriveOrganizationHandleFromBaseUrl)(config?.baseUrl);
28
24
  return this.withLoading(async () => {
29
25
  this._initializeConfig = {
30
26
  ...config,
31
- organizationHandle: resolvedOrganizationHandle,
32
27
  periodicTokenRefresh: config?.tokenLifecycle?.refreshToken?.autoRefresh ?? config?.periodicTokenRefresh
33
28
  };
34
29
  return super.initialize(this._initializeConfig);
@@ -68,68 +63,6 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
68
63
  };
69
64
  });
70
65
  }
71
- async getMyOrganizations(options) {
72
- try {
73
- let baseUrl = options?.baseUrl;
74
- if (!baseUrl) baseUrl = (await this.getStorageManager().getConfigData())?.baseUrl;
75
- return await require_getMeOrganizations.default({
76
- baseUrl,
77
- instanceId: this.getInstanceId()
78
- });
79
- } catch (error) {
80
- throw new __thunderid_browser.ThunderIDRuntimeError(`Failed to fetch the user's associated organizations: ${error instanceof Error ? error.message : String(error)}`, "ThunderIDReactClient-getMyOrganizations-RuntimeError-001", "react", "An error occurred while fetching associated organizations of the signed-in user.");
81
- }
82
- }
83
- async getAllOrganizations(options) {
84
- try {
85
- let baseUrl = options?.baseUrl;
86
- if (!baseUrl) baseUrl = (await this.getStorageManager().getConfigData())?.baseUrl;
87
- return await require_getAllOrganizations.default({
88
- baseUrl,
89
- instanceId: this.getInstanceId()
90
- });
91
- } catch (error) {
92
- throw new __thunderid_browser.ThunderIDRuntimeError(`Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`, "ThunderIDReactClient-getAllOrganizations-RuntimeError-001", "react", "An error occurred while fetching all the organizations associated with the user.");
93
- }
94
- }
95
- async getCurrentOrganization() {
96
- try {
97
- return await this.withLoading(async () => {
98
- const idToken = await this.getDecodedIdToken();
99
- return {
100
- id: idToken?.org_id ?? "",
101
- name: idToken?.org_name ?? "",
102
- orgHandle: idToken?.org_handle ?? ""
103
- };
104
- });
105
- } catch (error) {
106
- throw new __thunderid_browser.ThunderIDRuntimeError(`Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`, "ThunderIDReactClient-getCurrentOrganization-RuntimeError-001", "react", "An error occurred while fetching the current organization of the signed-in user.");
107
- }
108
- }
109
- async switchOrganization(organization) {
110
- return this.withLoading(async () => {
111
- try {
112
- const sourceInstanceId = (await this.getStorageManager().getConfigData())?.organizationChain?.sourceInstanceId;
113
- if (!organization.id) throw new __thunderid_browser.ThunderIDRuntimeError("Organization ID is required for switching organizations", "react-ThunderIDReactClient-SwitchOrganizationError-001", "react", "The organization object must contain a valid ID to perform the organization switch.");
114
- const exchangeConfig = {
115
- attachToken: false,
116
- data: {
117
- client_id: "{{clientId}}",
118
- grant_type: "organization_switch",
119
- scope: "{{scopes}}",
120
- switching_organization: organization.id,
121
- token: "{{accessToken}}"
122
- },
123
- id: "organization-switch",
124
- returnsSession: true,
125
- signInRequired: sourceInstanceId === void 0
126
- };
127
- return await super.exchangeToken(exchangeConfig);
128
- } catch (error) {
129
- throw new __thunderid_browser.ThunderIDRuntimeError(`Failed to switch organization: ${error.message || error}`, "react-ThunderIDReactClient-SwitchOrganizationError-003", "react", "An error occurred while switching to the specified organization. Please try again.");
130
- }
131
- });
132
- }
133
66
  isLoading() {
134
67
  return this.loadingState;
135
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ThunderIDReactClient.cjs","names":["ThunderIDBrowserClient","resolvedOrganizationHandle: string | undefined","isInitialized: boolean","ThunderIDRuntimeError","claims: User","baseUrl: string","getMeOrganizations","getAllOrganizations","idToken: IdToken","sourceInstanceId: number | undefined","exchangeConfig: TokenExchangeRequestConfig","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","EmbeddedSignInFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","authId: string","response: any","EmbeddedSignUpFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../../src/ThunderIDReactClient.ts"],"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 ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n Organization,\n IdToken,\n deriveOrganizationHandleFromBaseUrl,\n AllOrganizationsApiResponse,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n} from '@thunderid/browser';\nimport getAllOrganizations from './api/getAllOrganizations';\nimport getMeOrganizations from './api/getMeOrganizations';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n let resolvedOrganizationHandle: string | undefined = config?.organizationHandle;\n\n if (!resolvedOrganizationHandle) {\n resolvedOrganizationHandle = deriveOrganizationHandleFromBaseUrl(config?.baseUrl);\n }\n\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n organizationHandle: resolvedOrganizationHandle,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override async getMyOrganizations(options?: any): Promise<Organization[]> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getMeOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the user's associated organizations: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 'ThunderIDReactClient-getMyOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching associated organizations of the signed-in user.',\n );\n }\n }\n\n override async getAllOrganizations(options?: any): Promise<AllOrganizationsApiResponse> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getAllOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getAllOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching all the organizations associated with the user.',\n );\n }\n }\n\n override async getCurrentOrganization(): Promise<Organization | null> {\n try {\n return await this.withLoading(async () => {\n const idToken: IdToken = await this.getDecodedIdToken();\n return {\n id: idToken?.org_id ?? '',\n name: idToken?.org_name ?? '',\n orgHandle: idToken?.org_handle ?? '',\n };\n });\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getCurrentOrganization-RuntimeError-001',\n 'react',\n 'An error occurred while fetching the current organization of the signed-in user.',\n );\n }\n }\n\n override async switchOrganization(organization: Organization): Promise<TokenResponse | Response> {\n return this.withLoading(async () => {\n try {\n const configData: any = await this.getStorageManager().getConfigData();\n const sourceInstanceId: number | undefined = configData?.organizationChain?.sourceInstanceId;\n\n if (!organization.id) {\n throw new ThunderIDRuntimeError(\n 'Organization ID is required for switching organizations',\n 'react-ThunderIDReactClient-SwitchOrganizationError-001',\n 'react',\n 'The organization object must contain a valid ID to perform the organization switch.',\n );\n }\n\n const exchangeConfig: TokenExchangeRequestConfig = {\n attachToken: false,\n data: {\n client_id: '{{clientId}}',\n grant_type: 'organization_switch',\n scope: '{{scopes}}',\n switching_organization: organization.id,\n token: '{{accessToken}}',\n },\n id: 'organization-switch',\n returnsSession: true,\n signInRequired: sourceInstanceId === undefined,\n };\n\n return (await super.exchangeToken(exchangeConfig)) as TokenResponse | Response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error.message || error}`,\n 'react-ThunderIDReactClient-SwitchOrganizationError-003',\n 'react',\n 'An error occurred while switching to the specified organization. Please try again.',\n );\n }\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThunderIDReactClient.cjs","names":["ThunderIDBrowserClient","isInitialized: boolean","ThunderIDRuntimeError","claims: User","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","EmbeddedSignInFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","baseUrl: string","authId: string","response: any","EmbeddedSignUpFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../../src/ThunderIDReactClient.ts"],"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 ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n IdToken,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n} from '@thunderid/browser';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
2
  const require_useTheme = require('../../../contexts/Theme/useTheme.cjs');
3
+ const require_BaseLanguageSwitcher_styles = require('./BaseLanguageSwitcher.styles.cjs');
3
4
  const require_Check = require('../../primitives/Icons/Check.cjs');
4
5
  const require_ChevronDown = require('../../primitives/Icons/ChevronDown.cjs');
5
- const require_BaseLanguageSwitcher_styles = require('./BaseLanguageSwitcher.styles.cjs');
6
6
  let react = require("react");
7
7
  react = require_rolldown_runtime.__toESM(react);
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -0,0 +1,57 @@
1
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
+ const require_Avatar = require('../../primitives/Avatar/Avatar.cjs');
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
5
+
6
+ //#region src/components/presentation/UserAvatar/BaseUserAvatar.tsx
7
+ /**
8
+ * Resolves the profile picture URL from common user claim fields.
9
+ */
10
+ const resolvePicture = (user) => {
11
+ for (const key of [
12
+ "picture",
13
+ "profileUrl",
14
+ "profile",
15
+ "URL",
16
+ "avatarUrl",
17
+ "avatar"
18
+ ]) {
19
+ const val = user[key];
20
+ if (typeof val === "string" && val) return val;
21
+ }
22
+ };
23
+ /**
24
+ * Resolves a display name suitable for generating avatar initials.
25
+ */
26
+ const resolveName = (user) => {
27
+ const given = user["givenName"] || user["given_name"] || "";
28
+ const family = user["familyName"] || user["family_name"] || "";
29
+ if (given && family) return `${given} ${family}`;
30
+ return user["displayName"] || user["name"] || given || user["username"] || user["email"] || void 0;
31
+ };
32
+ /**
33
+ * Base `UserAvatar` component. Renders an avatar derived from a user object
34
+ * without any context dependency — pass the `user` prop explicitly.
35
+ *
36
+ * For the context-aware version that reads the signed-in user automatically,
37
+ * use `UserAvatar`.
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * <BaseUserAvatar user={user} size={48} />
42
+ * ```
43
+ */
44
+ const BaseUserAvatar = ({ user, size = 40, className }) => {
45
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Avatar.Avatar, {
46
+ imageUrl: user ? resolvePicture(user) : void 0,
47
+ name: user ? resolveName(user) : void 0,
48
+ size,
49
+ className
50
+ });
51
+ };
52
+ BaseUserAvatar.displayName = "BaseUserAvatar";
53
+ var BaseUserAvatar_default = BaseUserAvatar;
54
+
55
+ //#endregion
56
+ exports.default = BaseUserAvatar_default;
57
+ //# sourceMappingURL=BaseUserAvatar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseUserAvatar.cjs","names":["val: unknown","given: string","family: string","BaseUserAvatar: FC<BaseUserAvatarProps>","Avatar"],"sources":["../../../../../src/components/presentation/UserAvatar/BaseUserAvatar.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 {User} from '@thunderid/browser';\nimport {FC, JSX} from 'react';\nimport {Avatar} from '../../primitives/Avatar/Avatar';\n\nexport interface BaseUserAvatarProps {\n /**\n * Optional CSS class name for the avatar container.\n */\n className?: string;\n /**\n * Size of the avatar in pixels.\n * @default 40\n */\n size?: number;\n /**\n * The user object. When provided, the avatar derives the image URL and\n * initials from the user's profile fields automatically.\n */\n user: User | null;\n}\n\n/**\n * Resolves the profile picture URL from common user claim fields.\n */\nconst resolvePicture = (user: User): string | undefined => {\n for (const key of ['picture', 'profileUrl', 'profile', 'URL', 'avatarUrl', 'avatar']) {\n const val: unknown = user[key];\n if (typeof val === 'string' && val) return val;\n }\n return undefined;\n};\n\n/**\n * Resolves a display name suitable for generating avatar initials.\n */\nconst resolveName = (user: User): string | undefined => {\n const given: string = user['givenName'] || user['given_name'] || '';\n const family: string = user['familyName'] || user['family_name'] || '';\n if (given && family) return `${given} ${family}`;\n\n return user['displayName'] || user['name'] || given || user['username'] || user['email'] || undefined;\n};\n\n/**\n * Base `UserAvatar` component. Renders an avatar derived from a user object\n * without any context dependency — pass the `user` prop explicitly.\n *\n * For the context-aware version that reads the signed-in user automatically,\n * use `UserAvatar`.\n *\n * @example\n * ```tsx\n * <BaseUserAvatar user={user} size={48} />\n * ```\n */\nconst BaseUserAvatar: FC<BaseUserAvatarProps> = ({user, size = 40, className}: BaseUserAvatarProps): JSX.Element => {\n const imageUrl: string | undefined = user ? resolvePicture(user) : undefined;\n const name: string | undefined = user ? resolveName(user) : undefined;\n\n return <Avatar imageUrl={imageUrl} name={name} size={size} className={className} />;\n};\n\nBaseUserAvatar.displayName = 'BaseUserAvatar';\n\nexport default BaseUserAvatar;\n"],"mappings":";;;;;;;;;AA0CA,MAAM,kBAAkB,SAAmC;AACzD,MAAK,MAAM,OAAO;EAAC;EAAW;EAAc;EAAW;EAAO;EAAa;EAAS,EAAE;EACpF,MAAMA,MAAe,KAAK;AAC1B,MAAI,OAAO,QAAQ,YAAY,IAAK,QAAO;;;;;;AAQ/C,MAAM,eAAe,SAAmC;CACtD,MAAMC,QAAgB,KAAK,gBAAgB,KAAK,iBAAiB;CACjE,MAAMC,SAAiB,KAAK,iBAAiB,KAAK,kBAAkB;AACpE,KAAI,SAAS,OAAQ,QAAO,GAAG,MAAM,GAAG;AAExC,QAAO,KAAK,kBAAkB,KAAK,WAAW,SAAS,KAAK,eAAe,KAAK,YAAY;;;;;;;;;;;;;;AAe9F,MAAMC,kBAA2C,EAAC,MAAM,OAAO,IAAI,gBAAiD;AAIlH,QAAO,2CAACC;EAAO,UAHsB,OAAO,eAAe,KAAK,GAAG;EAGhC,MAFF,OAAO,YAAY,KAAK,GAAG;EAEP;EAAiB;GAAa;;AAGrF,eAAe,cAAc;AAE7B,6BAAe"}
@@ -0,0 +1,36 @@
1
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
+ const require_useThunderID = require('../../../contexts/ThunderID/useThunderID.cjs');
3
+ const require_BaseUserAvatar = require('./BaseUserAvatar.cjs');
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
6
+
7
+ //#region src/components/presentation/UserAvatar/UserAvatar.tsx
8
+ /**
9
+ * Context-aware avatar component. Renders an avatar for the currently
10
+ * signed-in user without requiring an explicit `user` prop.
11
+ *
12
+ * Derives the profile picture and initials from the user's token claims,
13
+ * with graceful fallback to generated initials when no image is available.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * // Auto-reads from context
18
+ * <UserAvatar size={48} />
19
+ *
20
+ * // Override with a specific user
21
+ * <UserAvatar user={someUser} size={32} />
22
+ * ```
23
+ */
24
+ const UserAvatar = ({ user: userProp,...rest }) => {
25
+ const { user } = require_useThunderID.default();
26
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseUserAvatar.default, {
27
+ user: userProp ?? user,
28
+ ...rest
29
+ });
30
+ };
31
+ UserAvatar.displayName = "UserAvatar";
32
+ var UserAvatar_default = UserAvatar;
33
+
34
+ //#endregion
35
+ exports.default = UserAvatar_default;
36
+ //# sourceMappingURL=UserAvatar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserAvatar.cjs","names":["UserAvatar: FC<UserAvatarProps>","useThunderID","BaseUserAvatar"],"sources":["../../../../../src/components/presentation/UserAvatar/UserAvatar.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 {User} from '@thunderid/browser';\nimport {FC, JSX} from 'react';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\nimport BaseUserAvatar, {BaseUserAvatarProps} from './BaseUserAvatar';\n\nexport interface UserAvatarProps extends Omit<BaseUserAvatarProps, 'user'> {\n /**\n * Override the user to render. When omitted the signed-in user from\n * ThunderID context is used automatically.\n */\n user?: User | null;\n}\n\n/**\n * Context-aware avatar component. Renders an avatar for the currently\n * signed-in user without requiring an explicit `user` prop.\n *\n * Derives the profile picture and initials from the user's token claims,\n * with graceful fallback to generated initials when no image is available.\n *\n * @example\n * ```tsx\n * // Auto-reads from context\n * <UserAvatar size={48} />\n *\n * // Override with a specific user\n * <UserAvatar user={someUser} size={32} />\n * ```\n */\nconst UserAvatar: FC<UserAvatarProps> = ({user: userProp, ...rest}: UserAvatarProps): JSX.Element => {\n const {user} = useThunderID();\n return <BaseUserAvatar user={userProp ?? user} {...rest} />;\n};\n\nUserAvatar.displayName = 'UserAvatar';\n\nexport default UserAvatar;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA+CA,MAAMA,cAAmC,EAAC,MAAM,SAAU,GAAG,WAAwC;CACnG,MAAM,EAAC,SAAQC,8BAAc;AAC7B,QAAO,2CAACC;EAAe,MAAM,YAAY;EAAM,GAAI;GAAQ;;AAG7D,WAAW,cAAc;AAEzB,yBAAe"}
@@ -95,24 +95,25 @@ const BaseUserDropdown = ({ fallback = null, className = "", user, isLoading = f
95
95
  }
96
96
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
97
97
  className: (0, __emotion_css.cx)((0, __thunderid_browser.withVendorCSSClassPrefix)("user-dropdown"), className),
98
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Button.default, {
98
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
99
99
  ref: refs.setReference,
100
100
  className: (0, __emotion_css.cx)((0, __thunderid_browser.withVendorCSSClassPrefix)("user-dropdown__trigger"), styles["trigger"]),
101
101
  color: "tertiary",
102
102
  variant: "text",
103
103
  size: "medium",
104
104
  "data-testid": "thunderid-user-dropdown-trigger",
105
- ...getReferenceProps(),
106
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Avatar.Avatar, {
105
+ startIcon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Avatar.Avatar, {
107
106
  imageUrl: require_getMappedUserProfileValue.default("picture", mergedMappings, user),
108
107
  name: require_getDisplayName.default(mergedMappings, user),
109
108
  size: avatarSize,
110
109
  alt: `${require_getDisplayName.default(mergedMappings, user)}'s avatar`
111
- }), showTriggerLabel && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Typography.default, {
110
+ }),
111
+ ...getReferenceProps(),
112
+ children: showTriggerLabel && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Typography.default, {
112
113
  variant: "body2",
113
114
  className: (0, __emotion_css.cx)((0, __thunderid_browser.withVendorCSSClassPrefix)("user-dropdown__trigger-label"), styles["userName"]),
114
115
  children: require_getDisplayName.default(mergedMappings, user)
115
- })]
116
+ })
116
117
  }), isOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__floating_ui_react.FloatingPortal, {
117
118
  id: portalId,
118
119
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__floating_ui_react.FloatingFocusManager, {