@thunderid/react 1.13.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (668) hide show
  1. package/dist/ThunderIDReactClient.d.ts.map +1 -1
  2. package/dist/ThunderIDReactClient.js +6 -2
  3. package/dist/ThunderIDReactClient.js.map +1 -1
  4. package/dist/api/account/getAccessibleOrganizationUnits.d.ts +27 -0
  5. package/dist/api/account/getAccessibleOrganizationUnits.d.ts.map +1 -0
  6. package/dist/api/account/getAccessibleOrganizationUnits.js +24 -0
  7. package/dist/api/account/getAccessibleOrganizationUnits.js.map +1 -0
  8. package/dist/api/auth/executeEmbeddedSelfFlow.d.ts +36 -0
  9. package/dist/api/auth/executeEmbeddedSelfFlow.d.ts.map +1 -0
  10. package/dist/api/auth/executeEmbeddedSelfFlow.js +30 -0
  11. package/dist/api/auth/executeEmbeddedSelfFlow.js.map +1 -0
  12. package/dist/cjs/ThunderIDReactClient.cjs +6 -2
  13. package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
  14. package/dist/cjs/api/account/getAccessibleOrganizationUnits.cjs +26 -0
  15. package/dist/cjs/api/account/getAccessibleOrganizationUnits.cjs.map +1 -0
  16. package/dist/cjs/api/auth/executeEmbeddedSelfFlow.cjs +32 -0
  17. package/dist/cjs/api/auth/executeEmbeddedSelfFlow.cjs.map +1 -0
  18. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.cjs +214 -0
  19. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.cjs.map +1 -0
  20. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.cjs +184 -0
  21. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.cjs.map +1 -0
  22. package/dist/cjs/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs +139 -0
  23. package/dist/cjs/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs.map +1 -0
  24. package/dist/cjs/components/account/UserProfile/BaseUserProfile.cjs +195 -46
  25. package/dist/cjs/components/account/UserProfile/BaseUserProfile.cjs.map +1 -1
  26. package/dist/cjs/components/account/UserProfile/BaseUserProfile.styles.cjs +57 -4
  27. package/dist/cjs/components/account/UserProfile/BaseUserProfile.styles.cjs.map +1 -1
  28. package/dist/cjs/components/account/UserProfile/UserProfile.cjs +13 -1
  29. package/dist/cjs/components/account/UserProfile/UserProfile.cjs.map +1 -1
  30. package/dist/cjs/components/account/VerifyAttribute/BaseVerifyAttribute.cjs +358 -0
  31. package/dist/cjs/components/account/VerifyAttribute/BaseVerifyAttribute.cjs.map +1 -0
  32. package/dist/cjs/components/account/VerifyAttribute/BaseVerifyAttribute.styles.cjs +84 -0
  33. package/dist/cjs/components/account/VerifyAttribute/BaseVerifyAttribute.styles.cjs.map +1 -0
  34. package/dist/cjs/components/account/VerifyAttribute/VerifyAttribute.cjs +94 -0
  35. package/dist/cjs/components/account/VerifyAttribute/VerifyAttribute.cjs.map +1 -0
  36. package/dist/cjs/components/auth/SignIn/SignIn.cjs +23 -20
  37. package/dist/cjs/components/auth/SignIn/SignIn.cjs.map +1 -1
  38. package/dist/cjs/components/auth/SignUp/BaseSignUp.cjs +13 -9
  39. package/dist/cjs/components/auth/SignUp/BaseSignUp.cjs.map +1 -1
  40. package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs +22 -2
  41. package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs.map +1 -1
  42. package/dist/cjs/components/common/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
  43. package/dist/cjs/components/{admin → management}/AgentCreate/AgentCreate.cjs +8 -7
  44. package/dist/cjs/components/management/AgentCreate/AgentCreate.cjs.map +1 -0
  45. package/dist/cjs/components/{admin → management}/AgentCreate/BaseAgentCreate.cjs +1 -1
  46. package/dist/cjs/components/management/AgentCreate/BaseAgentCreate.cjs.map +1 -0
  47. package/dist/cjs/components/{admin → management}/AgentDetails/AgentDetails.cjs +1 -1
  48. package/dist/cjs/components/management/AgentDetails/AgentDetails.cjs.map +1 -0
  49. package/dist/cjs/components/{admin → management}/AgentDetails/BaseAgentDetails.cjs +1 -1
  50. package/dist/cjs/components/management/AgentDetails/BaseAgentDetails.cjs.map +1 -0
  51. package/dist/cjs/components/{admin → management}/AgentList/AgentList.cjs +11 -6
  52. package/dist/cjs/components/management/AgentList/AgentList.cjs.map +1 -0
  53. package/dist/cjs/components/{admin → management}/AgentList/BaseAgentList.cjs +1 -1
  54. package/dist/cjs/components/management/AgentList/BaseAgentList.cjs.map +1 -0
  55. package/dist/cjs/components/{admin → management}/ApplicationCreate/ApplicationCreate.cjs +10 -5
  56. package/dist/cjs/components/management/ApplicationCreate/ApplicationCreate.cjs.map +1 -0
  57. package/dist/cjs/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.cjs +1 -1
  58. package/dist/cjs/components/management/ApplicationCreate/BaseApplicationCreate.cjs.map +1 -0
  59. package/dist/cjs/components/{admin → management}/ApplicationDetails/ApplicationDetails.cjs +1 -1
  60. package/dist/cjs/components/management/ApplicationDetails/ApplicationDetails.cjs.map +1 -0
  61. package/dist/cjs/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.cjs +1 -1
  62. package/dist/cjs/components/management/ApplicationDetails/BaseApplicationDetails.cjs.map +1 -0
  63. package/dist/cjs/components/{admin → management}/ApplicationList/ApplicationList.cjs +9 -4
  64. package/dist/cjs/components/management/ApplicationList/ApplicationList.cjs.map +1 -0
  65. package/dist/cjs/components/{admin → management}/ApplicationList/BaseApplicationList.cjs +1 -1
  66. package/dist/cjs/components/management/ApplicationList/BaseApplicationList.cjs.map +1 -0
  67. package/dist/cjs/components/{admin → management}/GroupCreate/BaseGroupCreate.cjs +1 -1
  68. package/dist/cjs/components/management/GroupCreate/BaseGroupCreate.cjs.map +1 -0
  69. package/dist/cjs/components/{admin → management}/GroupCreate/GroupCreate.cjs +1 -1
  70. package/dist/cjs/components/management/GroupCreate/GroupCreate.cjs.map +1 -0
  71. package/dist/cjs/components/management/GroupDetails/BaseGroupDetails.cjs +86 -0
  72. package/dist/cjs/components/management/GroupDetails/BaseGroupDetails.cjs.map +1 -0
  73. package/dist/cjs/components/management/GroupDetails/GroupDetails.cjs +60 -0
  74. package/dist/cjs/components/management/GroupDetails/GroupDetails.cjs.map +1 -0
  75. package/dist/cjs/components/{admin → management}/GroupList/BaseGroupList.cjs +1 -1
  76. package/dist/cjs/components/management/GroupList/BaseGroupList.cjs.map +1 -0
  77. package/dist/cjs/components/{admin → management}/GroupList/GroupList.cjs +1 -1
  78. package/dist/cjs/components/management/GroupList/GroupList.cjs.map +1 -0
  79. package/dist/cjs/components/{admin → management}/GroupMembers/BaseGroupMembers.cjs +1 -1
  80. package/dist/cjs/components/management/GroupMembers/BaseGroupMembers.cjs.map +1 -0
  81. package/dist/cjs/components/{admin → management}/GroupMembers/GroupMembers.cjs +1 -1
  82. package/dist/cjs/components/management/GroupMembers/GroupMembers.cjs.map +1 -0
  83. package/dist/cjs/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.cjs +140 -0
  84. package/dist/cjs/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.cjs.map +1 -0
  85. package/dist/cjs/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs +83 -0
  86. package/dist/cjs/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs.map +1 -0
  87. package/dist/cjs/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.cjs +276 -0
  88. package/dist/cjs/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.cjs.map +1 -0
  89. package/dist/cjs/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs +142 -0
  90. package/dist/cjs/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs.map +1 -0
  91. package/dist/cjs/components/management/OrganizationUnitList/BaseOrganizationUnitList.cjs +78 -0
  92. package/dist/cjs/components/management/OrganizationUnitList/BaseOrganizationUnitList.cjs.map +1 -0
  93. package/dist/cjs/components/management/OrganizationUnitList/OrganizationUnitList.cjs +69 -0
  94. package/dist/cjs/components/management/OrganizationUnitList/OrganizationUnitList.cjs.map +1 -0
  95. package/dist/cjs/components/management/ProjectCreate/BaseProjectCreate.cjs +116 -0
  96. package/dist/cjs/components/management/ProjectCreate/BaseProjectCreate.cjs.map +1 -0
  97. package/dist/cjs/components/management/ProjectCreate/ProjectCreate.cjs +43 -0
  98. package/dist/cjs/components/management/ProjectCreate/ProjectCreate.cjs.map +1 -0
  99. package/dist/cjs/components/management/ProjectDetails/BaseProjectDetails.cjs +172 -0
  100. package/dist/cjs/components/management/ProjectDetails/BaseProjectDetails.cjs.map +1 -0
  101. package/dist/cjs/components/management/ProjectDetails/ProjectDetails.cjs +68 -0
  102. package/dist/cjs/components/management/ProjectDetails/ProjectDetails.cjs.map +1 -0
  103. package/dist/cjs/components/management/ProjectList/BaseProjectList.cjs +78 -0
  104. package/dist/cjs/components/management/ProjectList/BaseProjectList.cjs.map +1 -0
  105. package/dist/cjs/components/management/ProjectList/ProjectList.cjs +51 -0
  106. package/dist/cjs/components/management/ProjectList/ProjectList.cjs.map +1 -0
  107. package/dist/cjs/components/management/ProjectSwitcher/BaseProjectSwitcher.cjs +58 -0
  108. package/dist/cjs/components/management/ProjectSwitcher/BaseProjectSwitcher.cjs.map +1 -0
  109. package/dist/cjs/components/management/ProjectSwitcher/ProjectSwitcher.cjs +72 -0
  110. package/dist/cjs/components/management/ProjectSwitcher/ProjectSwitcher.cjs.map +1 -0
  111. package/dist/cjs/components/{admin → management}/RoleAssignments/BaseRoleAssignments.cjs +1 -1
  112. package/dist/cjs/components/management/RoleAssignments/BaseRoleAssignments.cjs.map +1 -0
  113. package/dist/cjs/components/{admin → management}/RoleAssignments/RoleAssignments.cjs +1 -1
  114. package/dist/cjs/components/management/RoleAssignments/RoleAssignments.cjs.map +1 -0
  115. package/dist/cjs/components/{admin → management}/RoleCreate/BaseRoleCreate.cjs +1 -1
  116. package/dist/cjs/components/management/RoleCreate/BaseRoleCreate.cjs.map +1 -0
  117. package/dist/cjs/components/{admin → management}/RoleCreate/RoleCreate.cjs +1 -1
  118. package/dist/cjs/components/management/RoleCreate/RoleCreate.cjs.map +1 -0
  119. package/dist/cjs/components/management/RoleDetails/BaseRoleDetails.cjs +87 -0
  120. package/dist/cjs/components/management/RoleDetails/BaseRoleDetails.cjs.map +1 -0
  121. package/dist/cjs/components/management/RoleDetails/RoleDetails.cjs +68 -0
  122. package/dist/cjs/components/management/RoleDetails/RoleDetails.cjs.map +1 -0
  123. package/dist/cjs/components/{admin → management}/RoleList/BaseRoleList.cjs +1 -1
  124. package/dist/cjs/components/management/RoleList/BaseRoleList.cjs.map +1 -0
  125. package/dist/cjs/components/{admin → management}/RoleList/RoleList.cjs +1 -1
  126. package/dist/cjs/components/management/RoleList/RoleList.cjs.map +1 -0
  127. package/dist/cjs/components/management/RolePermissions/BaseRolePermissions.cjs +181 -0
  128. package/dist/cjs/components/management/RolePermissions/BaseRolePermissions.cjs.map +1 -0
  129. package/dist/cjs/components/management/RolePermissions/RolePermissions.cjs +112 -0
  130. package/dist/cjs/components/management/RolePermissions/RolePermissions.cjs.map +1 -0
  131. package/dist/cjs/components/management/SharingPolicies/BaseSharingPolicies.cjs +308 -0
  132. package/dist/cjs/components/management/SharingPolicies/BaseSharingPolicies.cjs.map +1 -0
  133. package/dist/cjs/components/management/SharingPolicies/SharingPolicies.cjs +126 -0
  134. package/dist/cjs/components/management/SharingPolicies/SharingPolicies.cjs.map +1 -0
  135. package/dist/cjs/components/{admin → management}/UserCreate/BaseUserCreate.cjs +1 -1
  136. package/dist/cjs/components/management/UserCreate/BaseUserCreate.cjs.map +1 -0
  137. package/dist/cjs/components/{admin → management}/UserCreate/UserCreate.cjs +1 -1
  138. package/dist/cjs/components/management/UserCreate/UserCreate.cjs.map +1 -0
  139. package/dist/cjs/components/{admin → management}/UserCreate/userCreateFields.cjs +1 -1
  140. package/dist/cjs/components/management/UserCreate/userCreateFields.cjs.map +1 -0
  141. package/dist/cjs/components/{admin → management}/UserDetails/BaseUserDetails.cjs +1 -1
  142. package/dist/cjs/components/management/UserDetails/BaseUserDetails.cjs.map +1 -0
  143. package/dist/cjs/components/{admin → management}/UserDetails/UserDetails.cjs +1 -1
  144. package/dist/cjs/components/management/UserDetails/UserDetails.cjs.map +1 -0
  145. package/dist/cjs/components/{admin → management}/UserList/BaseUserList.cjs +1 -1
  146. package/dist/cjs/components/management/UserList/BaseUserList.cjs.map +1 -0
  147. package/dist/cjs/components/{admin → management}/UserList/UserList.cjs +1 -1
  148. package/dist/cjs/components/management/UserList/UserList.cjs.map +1 -0
  149. package/dist/cjs/components/{admin → management}/shared/AccountLifecycleParts.cjs +1 -1
  150. package/dist/cjs/components/management/shared/AccountLifecycleParts.cjs.map +1 -0
  151. package/dist/cjs/components/{admin → management}/shared/AdminParts.cjs +1 -1
  152. package/dist/cjs/components/management/shared/AdminParts.cjs.map +1 -0
  153. package/dist/cjs/components/{admin → management}/shared/AdminParts.styles.cjs +1 -1
  154. package/dist/cjs/components/management/shared/AdminParts.styles.cjs.map +1 -0
  155. package/dist/cjs/components/{admin → management}/shared/AdminSearch.cjs +1 -1
  156. package/dist/cjs/components/management/shared/AdminSearch.cjs.map +1 -0
  157. package/dist/cjs/components/{admin → management}/shared/AdminSection.cjs +1 -1
  158. package/dist/cjs/components/management/shared/AdminSection.cjs.map +1 -0
  159. package/dist/cjs/components/{admin → management}/shared/AdminSection.styles.cjs +1 -1
  160. package/dist/cjs/components/management/shared/AdminSection.styles.cjs.map +1 -0
  161. package/dist/cjs/components/{admin → management}/shared/ApplicationFormFields.cjs +1 -1
  162. package/dist/cjs/components/management/shared/ApplicationFormFields.cjs.map +1 -0
  163. package/dist/cjs/components/{admin → management}/shared/ClientSecretNotice.cjs +1 -1
  164. package/dist/cjs/components/management/shared/ClientSecretNotice.cjs.map +1 -0
  165. package/dist/cjs/components/{admin → management}/shared/IdentityPicker.cjs +1 -1
  166. package/dist/cjs/components/management/shared/IdentityPicker.cjs.map +1 -0
  167. package/dist/cjs/components/management/shared/formatTimestamp.cjs +18 -0
  168. package/dist/cjs/components/management/shared/formatTimestamp.cjs.map +1 -0
  169. package/dist/cjs/components/{admin → management}/shared/useAdminPartStyles.cjs +1 -1
  170. package/dist/cjs/components/management/shared/useAdminPartStyles.cjs.map +1 -0
  171. package/dist/cjs/components/{admin → management}/shared/useDefaultOuId.cjs +1 -1
  172. package/dist/cjs/components/management/shared/useDefaultOuId.cjs.map +1 -0
  173. package/dist/cjs/components/management/shared/useProjectPlacement.cjs +23 -0
  174. package/dist/cjs/components/management/shared/useProjectPlacement.cjs.map +1 -0
  175. package/dist/cjs/contexts/ComponentRenderer/ComponentRendererContext.cjs.map +1 -1
  176. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +5 -0
  177. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
  178. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +41 -1
  179. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  180. package/dist/cjs/contexts/ThunderID/useCurrentProjectState.cjs +33 -0
  181. package/dist/cjs/contexts/ThunderID/useCurrentProjectState.cjs.map +1 -0
  182. package/dist/cjs/hooks/management/useManagementEndpoint.cjs.map +1 -1
  183. package/dist/cjs/index.cjs +407 -33
  184. package/dist/cjs/utils/flowTransformer.cjs +9 -0
  185. package/dist/cjs/utils/flowTransformer.cjs.map +1 -1
  186. package/dist/cjs/utils/getOrganizationUnitSwitchErrorKey.cjs +24 -0
  187. package/dist/cjs/utils/getOrganizationUnitSwitchErrorKey.cjs.map +1 -0
  188. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.d.ts +85 -0
  189. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.d.ts.map +1 -0
  190. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.js +209 -0
  191. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.js.map +1 -0
  192. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.d.ts +11 -0
  193. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.d.ts.map +1 -0
  194. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.js +184 -0
  195. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.js.map +1 -0
  196. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts +54 -0
  197. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts.map +1 -0
  198. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js +135 -0
  199. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js.map +1 -0
  200. package/dist/components/account/UserProfile/BaseUserProfile.d.ts +27 -1
  201. package/dist/components/account/UserProfile/BaseUserProfile.d.ts.map +1 -1
  202. package/dist/components/account/UserProfile/BaseUserProfile.js +197 -48
  203. package/dist/components/account/UserProfile/BaseUserProfile.js.map +1 -1
  204. package/dist/components/account/UserProfile/BaseUserProfile.styles.d.ts.map +1 -1
  205. package/dist/components/account/UserProfile/BaseUserProfile.styles.js +57 -4
  206. package/dist/components/account/UserProfile/BaseUserProfile.styles.js.map +1 -1
  207. package/dist/components/account/UserProfile/UserProfile.d.ts +7 -1
  208. package/dist/components/account/UserProfile/UserProfile.d.ts.map +1 -1
  209. package/dist/components/account/UserProfile/UserProfile.js +14 -2
  210. package/dist/components/account/UserProfile/UserProfile.js.map +1 -1
  211. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.d.ts +113 -0
  212. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.d.ts.map +1 -0
  213. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.js +354 -0
  214. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.js.map +1 -0
  215. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.styles.d.ts +10 -0
  216. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.styles.d.ts.map +1 -0
  217. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.styles.js +82 -0
  218. package/dist/components/account/VerifyAttribute/BaseVerifyAttribute.styles.js.map +1 -0
  219. package/dist/components/account/VerifyAttribute/VerifyAttribute.d.ts +41 -0
  220. package/dist/components/account/VerifyAttribute/VerifyAttribute.d.ts.map +1 -0
  221. package/dist/components/account/VerifyAttribute/VerifyAttribute.js +90 -0
  222. package/dist/components/account/VerifyAttribute/VerifyAttribute.js.map +1 -0
  223. package/dist/components/auth/SignIn/SignIn.d.ts +5 -0
  224. package/dist/components/auth/SignIn/SignIn.d.ts.map +1 -1
  225. package/dist/components/auth/SignIn/SignIn.js +25 -22
  226. package/dist/components/auth/SignIn/SignIn.js.map +1 -1
  227. package/dist/components/auth/SignUp/BaseSignUp.d.ts.map +1 -1
  228. package/dist/components/auth/SignUp/BaseSignUp.js +14 -10
  229. package/dist/components/auth/SignUp/BaseSignUp.js.map +1 -1
  230. package/dist/components/auth/flow/AuthOptionFactory.d.ts +5 -1
  231. package/dist/components/auth/flow/AuthOptionFactory.d.ts.map +1 -1
  232. package/dist/components/auth/flow/AuthOptionFactory.js +22 -3
  233. package/dist/components/auth/flow/AuthOptionFactory.js.map +1 -1
  234. package/dist/components/common/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
  235. package/dist/components/{admin → management}/AgentCreate/AgentCreate.d.ts +2 -1
  236. package/dist/components/management/AgentCreate/AgentCreate.d.ts.map +1 -0
  237. package/dist/components/{admin → management}/AgentCreate/AgentCreate.js +8 -7
  238. package/dist/components/management/AgentCreate/AgentCreate.js.map +1 -0
  239. package/dist/components/management/AgentCreate/BaseAgentCreate.d.ts.map +1 -0
  240. package/dist/components/{admin → management}/AgentCreate/BaseAgentCreate.js +1 -1
  241. package/dist/components/management/AgentCreate/BaseAgentCreate.js.map +1 -0
  242. package/dist/components/management/AgentDetails/AgentDetails.d.ts.map +1 -0
  243. package/dist/components/{admin → management}/AgentDetails/AgentDetails.js +1 -1
  244. package/dist/components/management/AgentDetails/AgentDetails.js.map +1 -0
  245. package/dist/components/management/AgentDetails/BaseAgentDetails.d.ts.map +1 -0
  246. package/dist/components/{admin → management}/AgentDetails/BaseAgentDetails.js +1 -1
  247. package/dist/components/management/AgentDetails/BaseAgentDetails.js.map +1 -0
  248. package/dist/components/{admin → management}/AgentList/AgentList.d.ts +7 -1
  249. package/dist/components/management/AgentList/AgentList.d.ts.map +1 -0
  250. package/dist/components/{admin → management}/AgentList/AgentList.js +11 -6
  251. package/dist/components/management/AgentList/AgentList.js.map +1 -0
  252. package/dist/components/management/AgentList/BaseAgentList.d.ts.map +1 -0
  253. package/dist/components/{admin → management}/AgentList/BaseAgentList.js +1 -1
  254. package/dist/components/management/AgentList/BaseAgentList.js.map +1 -0
  255. package/dist/components/{admin → management}/ApplicationCreate/ApplicationCreate.d.ts +2 -1
  256. package/dist/components/management/ApplicationCreate/ApplicationCreate.d.ts.map +1 -0
  257. package/dist/components/{admin → management}/ApplicationCreate/ApplicationCreate.js +10 -5
  258. package/dist/components/management/ApplicationCreate/ApplicationCreate.js.map +1 -0
  259. package/dist/components/management/ApplicationCreate/BaseApplicationCreate.d.ts.map +1 -0
  260. package/dist/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.js +1 -1
  261. package/dist/components/management/ApplicationCreate/BaseApplicationCreate.js.map +1 -0
  262. package/dist/components/management/ApplicationDetails/ApplicationDetails.d.ts.map +1 -0
  263. package/dist/components/{admin → management}/ApplicationDetails/ApplicationDetails.js +1 -1
  264. package/dist/components/management/ApplicationDetails/ApplicationDetails.js.map +1 -0
  265. package/dist/components/management/ApplicationDetails/BaseApplicationDetails.d.ts.map +1 -0
  266. package/dist/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.js +1 -1
  267. package/dist/components/management/ApplicationDetails/BaseApplicationDetails.js.map +1 -0
  268. package/dist/components/{admin → management}/ApplicationList/ApplicationList.d.ts +7 -1
  269. package/dist/components/management/ApplicationList/ApplicationList.d.ts.map +1 -0
  270. package/dist/components/{admin → management}/ApplicationList/ApplicationList.js +9 -4
  271. package/dist/components/management/ApplicationList/ApplicationList.js.map +1 -0
  272. package/dist/components/management/ApplicationList/BaseApplicationList.d.ts.map +1 -0
  273. package/dist/components/{admin → management}/ApplicationList/BaseApplicationList.js +1 -1
  274. package/dist/components/management/ApplicationList/BaseApplicationList.js.map +1 -0
  275. package/dist/components/management/GroupCreate/BaseGroupCreate.d.ts.map +1 -0
  276. package/dist/components/{admin → management}/GroupCreate/BaseGroupCreate.js +1 -1
  277. package/dist/components/management/GroupCreate/BaseGroupCreate.js.map +1 -0
  278. package/dist/components/management/GroupCreate/GroupCreate.d.ts.map +1 -0
  279. package/dist/components/{admin → management}/GroupCreate/GroupCreate.js +1 -1
  280. package/dist/components/management/GroupCreate/GroupCreate.js.map +1 -0
  281. package/dist/components/management/GroupDetails/BaseGroupDetails.d.ts +47 -0
  282. package/dist/components/management/GroupDetails/BaseGroupDetails.d.ts.map +1 -0
  283. package/dist/components/management/GroupDetails/BaseGroupDetails.js +84 -0
  284. package/dist/components/management/GroupDetails/BaseGroupDetails.js.map +1 -0
  285. package/dist/components/management/GroupDetails/GroupDetails.d.ts +37 -0
  286. package/dist/components/management/GroupDetails/GroupDetails.d.ts.map +1 -0
  287. package/dist/components/management/GroupDetails/GroupDetails.js +57 -0
  288. package/dist/components/management/GroupDetails/GroupDetails.js.map +1 -0
  289. package/dist/components/management/GroupList/BaseGroupList.d.ts.map +1 -0
  290. package/dist/components/{admin → management}/GroupList/BaseGroupList.js +1 -1
  291. package/dist/components/management/GroupList/BaseGroupList.js.map +1 -0
  292. package/dist/components/management/GroupList/GroupList.d.ts.map +1 -0
  293. package/dist/components/{admin → management}/GroupList/GroupList.js +1 -1
  294. package/dist/components/management/GroupList/GroupList.js.map +1 -0
  295. package/dist/components/management/GroupMembers/BaseGroupMembers.d.ts.map +1 -0
  296. package/dist/components/{admin → management}/GroupMembers/BaseGroupMembers.js +1 -1
  297. package/dist/components/management/GroupMembers/BaseGroupMembers.js.map +1 -0
  298. package/dist/components/management/GroupMembers/GroupMembers.d.ts.map +1 -0
  299. package/dist/components/{admin → management}/GroupMembers/GroupMembers.js +1 -1
  300. package/dist/components/management/GroupMembers/GroupMembers.js.map +1 -0
  301. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.d.ts +85 -0
  302. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.d.ts.map +1 -0
  303. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.js +137 -0
  304. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.js.map +1 -0
  305. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts +21 -0
  306. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts.map +1 -0
  307. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js +79 -0
  308. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js.map +1 -0
  309. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.d.ts +105 -0
  310. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.d.ts.map +1 -0
  311. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.js +273 -0
  312. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.js.map +1 -0
  313. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts +42 -0
  314. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts.map +1 -0
  315. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js +139 -0
  316. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js.map +1 -0
  317. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.d.ts +54 -0
  318. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.d.ts.map +1 -0
  319. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.js +76 -0
  320. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.js.map +1 -0
  321. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.d.ts +19 -0
  322. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.d.ts.map +1 -0
  323. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.js +65 -0
  324. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.js.map +1 -0
  325. package/dist/components/management/ProjectCreate/BaseProjectCreate.d.ts +60 -0
  326. package/dist/components/management/ProjectCreate/BaseProjectCreate.d.ts.map +1 -0
  327. package/dist/components/management/ProjectCreate/BaseProjectCreate.js +113 -0
  328. package/dist/components/management/ProjectCreate/BaseProjectCreate.js.map +1 -0
  329. package/dist/components/management/ProjectCreate/ProjectCreate.d.ts +20 -0
  330. package/dist/components/management/ProjectCreate/ProjectCreate.d.ts.map +1 -0
  331. package/dist/components/management/ProjectCreate/ProjectCreate.js +40 -0
  332. package/dist/components/management/ProjectCreate/ProjectCreate.js.map +1 -0
  333. package/dist/components/management/ProjectDetails/BaseProjectDetails.d.ts +60 -0
  334. package/dist/components/management/ProjectDetails/BaseProjectDetails.d.ts.map +1 -0
  335. package/dist/components/management/ProjectDetails/BaseProjectDetails.js +169 -0
  336. package/dist/components/management/ProjectDetails/BaseProjectDetails.js.map +1 -0
  337. package/dist/components/management/ProjectDetails/ProjectDetails.d.ts +36 -0
  338. package/dist/components/management/ProjectDetails/ProjectDetails.d.ts.map +1 -0
  339. package/dist/components/management/ProjectDetails/ProjectDetails.js +65 -0
  340. package/dist/components/management/ProjectDetails/ProjectDetails.js.map +1 -0
  341. package/dist/components/management/ProjectList/BaseProjectList.d.ts +53 -0
  342. package/dist/components/management/ProjectList/BaseProjectList.d.ts.map +1 -0
  343. package/dist/components/management/ProjectList/BaseProjectList.js +76 -0
  344. package/dist/components/management/ProjectList/BaseProjectList.js.map +1 -0
  345. package/dist/components/management/ProjectList/ProjectList.d.ts +14 -0
  346. package/dist/components/management/ProjectList/ProjectList.d.ts.map +1 -0
  347. package/dist/components/management/ProjectList/ProjectList.js +47 -0
  348. package/dist/components/management/ProjectList/ProjectList.js.map +1 -0
  349. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.d.ts +69 -0
  350. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.d.ts.map +1 -0
  351. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.js +55 -0
  352. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.js.map +1 -0
  353. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.d.ts +25 -0
  354. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.d.ts.map +1 -0
  355. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.js +68 -0
  356. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.js.map +1 -0
  357. package/dist/components/management/RoleAssignments/BaseRoleAssignments.d.ts.map +1 -0
  358. package/dist/components/{admin → management}/RoleAssignments/BaseRoleAssignments.js +1 -1
  359. package/dist/components/management/RoleAssignments/BaseRoleAssignments.js.map +1 -0
  360. package/dist/components/management/RoleAssignments/RoleAssignments.d.ts.map +1 -0
  361. package/dist/components/{admin → management}/RoleAssignments/RoleAssignments.js +1 -1
  362. package/dist/components/management/RoleAssignments/RoleAssignments.js.map +1 -0
  363. package/dist/components/management/RoleCreate/BaseRoleCreate.d.ts.map +1 -0
  364. package/dist/components/{admin → management}/RoleCreate/BaseRoleCreate.js +1 -1
  365. package/dist/components/management/RoleCreate/BaseRoleCreate.js.map +1 -0
  366. package/dist/components/management/RoleCreate/RoleCreate.d.ts.map +1 -0
  367. package/dist/components/{admin → management}/RoleCreate/RoleCreate.js +1 -1
  368. package/dist/components/management/RoleCreate/RoleCreate.js.map +1 -0
  369. package/dist/components/management/RoleDetails/BaseRoleDetails.d.ts +51 -0
  370. package/dist/components/management/RoleDetails/BaseRoleDetails.d.ts.map +1 -0
  371. package/dist/components/management/RoleDetails/BaseRoleDetails.js +85 -0
  372. package/dist/components/management/RoleDetails/BaseRoleDetails.js.map +1 -0
  373. package/dist/components/management/RoleDetails/RoleDetails.d.ts +39 -0
  374. package/dist/components/management/RoleDetails/RoleDetails.d.ts.map +1 -0
  375. package/dist/components/management/RoleDetails/RoleDetails.js +65 -0
  376. package/dist/components/management/RoleDetails/RoleDetails.js.map +1 -0
  377. package/dist/components/management/RoleList/BaseRoleList.d.ts.map +1 -0
  378. package/dist/components/{admin → management}/RoleList/BaseRoleList.js +1 -1
  379. package/dist/components/management/RoleList/BaseRoleList.js.map +1 -0
  380. package/dist/components/management/RoleList/RoleList.d.ts.map +1 -0
  381. package/dist/components/{admin → management}/RoleList/RoleList.js +1 -1
  382. package/dist/components/management/RoleList/RoleList.js.map +1 -0
  383. package/dist/components/management/RolePermissions/BaseRolePermissions.d.ts +104 -0
  384. package/dist/components/management/RolePermissions/BaseRolePermissions.d.ts.map +1 -0
  385. package/dist/components/management/RolePermissions/BaseRolePermissions.js +178 -0
  386. package/dist/components/management/RolePermissions/BaseRolePermissions.js.map +1 -0
  387. package/dist/components/management/RolePermissions/RolePermissions.d.ts +29 -0
  388. package/dist/components/management/RolePermissions/RolePermissions.d.ts.map +1 -0
  389. package/dist/components/management/RolePermissions/RolePermissions.js +108 -0
  390. package/dist/components/management/RolePermissions/RolePermissions.js.map +1 -0
  391. package/dist/components/management/SharingPolicies/BaseSharingPolicies.d.ts +124 -0
  392. package/dist/components/management/SharingPolicies/BaseSharingPolicies.d.ts.map +1 -0
  393. package/dist/components/management/SharingPolicies/BaseSharingPolicies.js +304 -0
  394. package/dist/components/management/SharingPolicies/BaseSharingPolicies.js.map +1 -0
  395. package/dist/components/management/SharingPolicies/SharingPolicies.d.ts +36 -0
  396. package/dist/components/management/SharingPolicies/SharingPolicies.d.ts.map +1 -0
  397. package/dist/components/management/SharingPolicies/SharingPolicies.js +122 -0
  398. package/dist/components/management/SharingPolicies/SharingPolicies.js.map +1 -0
  399. package/dist/components/management/UserCreate/BaseUserCreate.d.ts.map +1 -0
  400. package/dist/components/{admin → management}/UserCreate/BaseUserCreate.js +1 -1
  401. package/dist/components/management/UserCreate/BaseUserCreate.js.map +1 -0
  402. package/dist/components/management/UserCreate/UserCreate.d.ts.map +1 -0
  403. package/dist/components/{admin → management}/UserCreate/UserCreate.js +1 -1
  404. package/dist/components/management/UserCreate/UserCreate.js.map +1 -0
  405. package/dist/components/management/UserCreate/userCreateFields.d.ts.map +1 -0
  406. package/dist/components/{admin → management}/UserCreate/userCreateFields.js +1 -1
  407. package/dist/components/management/UserCreate/userCreateFields.js.map +1 -0
  408. package/dist/components/management/UserDetails/BaseUserDetails.d.ts.map +1 -0
  409. package/dist/components/{admin → management}/UserDetails/BaseUserDetails.js +1 -1
  410. package/dist/components/management/UserDetails/BaseUserDetails.js.map +1 -0
  411. package/dist/components/management/UserDetails/UserDetails.d.ts.map +1 -0
  412. package/dist/components/{admin → management}/UserDetails/UserDetails.js +1 -1
  413. package/dist/components/management/UserDetails/UserDetails.js.map +1 -0
  414. package/dist/components/management/UserList/BaseUserList.d.ts.map +1 -0
  415. package/dist/components/{admin → management}/UserList/BaseUserList.js +1 -1
  416. package/dist/components/management/UserList/BaseUserList.js.map +1 -0
  417. package/dist/components/management/UserList/UserList.d.ts.map +1 -0
  418. package/dist/components/{admin → management}/UserList/UserList.js +1 -1
  419. package/dist/components/management/UserList/UserList.js.map +1 -0
  420. package/dist/components/management/shared/AccountLifecycleParts.d.ts.map +1 -0
  421. package/dist/components/{admin → management}/shared/AccountLifecycleParts.js +1 -1
  422. package/dist/components/management/shared/AccountLifecycleParts.js.map +1 -0
  423. package/dist/components/management/shared/AdminListRenderProps.d.ts.map +1 -0
  424. package/dist/components/management/shared/AdminParts.d.ts.map +1 -0
  425. package/dist/components/{admin → management}/shared/AdminParts.js +1 -1
  426. package/dist/components/management/shared/AdminParts.js.map +1 -0
  427. package/dist/components/management/shared/AdminParts.styles.d.ts.map +1 -0
  428. package/dist/components/{admin → management}/shared/AdminParts.styles.js +1 -1
  429. package/dist/components/management/shared/AdminParts.styles.js.map +1 -0
  430. package/dist/components/management/shared/AdminSearch.d.ts.map +1 -0
  431. package/dist/components/{admin → management}/shared/AdminSearch.js +1 -1
  432. package/dist/components/management/shared/AdminSearch.js.map +1 -0
  433. package/dist/components/management/shared/AdminSection.d.ts.map +1 -0
  434. package/dist/components/{admin → management}/shared/AdminSection.js +1 -1
  435. package/dist/components/management/shared/AdminSection.js.map +1 -0
  436. package/dist/components/management/shared/AdminSection.styles.d.ts.map +1 -0
  437. package/dist/components/{admin → management}/shared/AdminSection.styles.js +1 -1
  438. package/dist/components/management/shared/AdminSection.styles.js.map +1 -0
  439. package/dist/components/management/shared/ApplicationFormFields.d.ts.map +1 -0
  440. package/dist/components/{admin → management}/shared/ApplicationFormFields.js +1 -1
  441. package/dist/components/management/shared/ApplicationFormFields.js.map +1 -0
  442. package/dist/components/management/shared/ClientSecretNotice.d.ts.map +1 -0
  443. package/dist/components/{admin → management}/shared/ClientSecretNotice.js +1 -1
  444. package/dist/components/management/shared/ClientSecretNotice.js.map +1 -0
  445. package/dist/components/management/shared/IdentityPicker.d.ts.map +1 -0
  446. package/dist/components/{admin → management}/shared/IdentityPicker.js +1 -1
  447. package/dist/components/management/shared/IdentityPicker.js.map +1 -0
  448. package/dist/components/management/shared/formatTimestamp.d.ts +9 -0
  449. package/dist/components/management/shared/formatTimestamp.d.ts.map +1 -0
  450. package/dist/components/management/shared/formatTimestamp.js +17 -0
  451. package/dist/components/management/shared/formatTimestamp.js.map +1 -0
  452. package/dist/components/management/shared/useAdminPartStyles.d.ts.map +1 -0
  453. package/dist/components/{admin → management}/shared/useAdminPartStyles.js +1 -1
  454. package/dist/components/management/shared/useAdminPartStyles.js.map +1 -0
  455. package/dist/components/management/shared/useDefaultOuId.d.ts.map +1 -0
  456. package/dist/components/{admin → management}/shared/useDefaultOuId.js +1 -1
  457. package/dist/components/management/shared/useDefaultOuId.js.map +1 -0
  458. package/dist/components/management/shared/useProjectPlacement.d.ts +26 -0
  459. package/dist/components/management/shared/useProjectPlacement.d.ts.map +1 -0
  460. package/dist/components/management/shared/useProjectPlacement.js +23 -0
  461. package/dist/components/management/shared/useProjectPlacement.js.map +1 -0
  462. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts +1 -1
  463. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts.map +1 -1
  464. package/dist/contexts/ComponentRenderer/ComponentRendererContext.js.map +1 -1
  465. package/dist/contexts/ThunderID/ThunderIDContext.d.ts +27 -1
  466. package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
  467. package/dist/contexts/ThunderID/ThunderIDContext.js +5 -0
  468. package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
  469. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  470. package/dist/contexts/ThunderID/ThunderIDProvider.js +42 -2
  471. package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  472. package/dist/contexts/ThunderID/useCurrentProjectState.d.ts +26 -0
  473. package/dist/contexts/ThunderID/useCurrentProjectState.d.ts.map +1 -0
  474. package/dist/contexts/ThunderID/useCurrentProjectState.js +30 -0
  475. package/dist/contexts/ThunderID/useCurrentProjectState.js.map +1 -0
  476. package/dist/hooks/management/useManagementEndpoint.d.ts +1 -1
  477. package/dist/hooks/management/useManagementEndpoint.d.ts.map +1 -1
  478. package/dist/hooks/management/useManagementEndpoint.js.map +1 -1
  479. package/dist/index.d.ts +127 -70
  480. package/dist/index.d.ts.map +1 -1
  481. package/dist/index.js +62 -34
  482. package/dist/utils/flowTransformer.d.ts +7 -0
  483. package/dist/utils/flowTransformer.d.ts.map +1 -1
  484. package/dist/utils/flowTransformer.js +9 -1
  485. package/dist/utils/flowTransformer.js.map +1 -1
  486. package/dist/utils/getOrganizationUnitSwitchErrorKey.d.ts +11 -0
  487. package/dist/utils/getOrganizationUnitSwitchErrorKey.d.ts.map +1 -0
  488. package/dist/utils/getOrganizationUnitSwitchErrorKey.js +22 -0
  489. package/dist/utils/getOrganizationUnitSwitchErrorKey.js.map +1 -0
  490. package/package.json +2 -2
  491. package/dist/cjs/components/admin/AgentCreate/AgentCreate.cjs.map +0 -1
  492. package/dist/cjs/components/admin/AgentCreate/BaseAgentCreate.cjs.map +0 -1
  493. package/dist/cjs/components/admin/AgentDetails/AgentDetails.cjs.map +0 -1
  494. package/dist/cjs/components/admin/AgentDetails/BaseAgentDetails.cjs.map +0 -1
  495. package/dist/cjs/components/admin/AgentList/AgentList.cjs.map +0 -1
  496. package/dist/cjs/components/admin/AgentList/BaseAgentList.cjs.map +0 -1
  497. package/dist/cjs/components/admin/ApplicationCreate/ApplicationCreate.cjs.map +0 -1
  498. package/dist/cjs/components/admin/ApplicationCreate/BaseApplicationCreate.cjs.map +0 -1
  499. package/dist/cjs/components/admin/ApplicationDetails/ApplicationDetails.cjs.map +0 -1
  500. package/dist/cjs/components/admin/ApplicationDetails/BaseApplicationDetails.cjs.map +0 -1
  501. package/dist/cjs/components/admin/ApplicationList/ApplicationList.cjs.map +0 -1
  502. package/dist/cjs/components/admin/ApplicationList/BaseApplicationList.cjs.map +0 -1
  503. package/dist/cjs/components/admin/GroupCreate/BaseGroupCreate.cjs.map +0 -1
  504. package/dist/cjs/components/admin/GroupCreate/GroupCreate.cjs.map +0 -1
  505. package/dist/cjs/components/admin/GroupList/BaseGroupList.cjs.map +0 -1
  506. package/dist/cjs/components/admin/GroupList/GroupList.cjs.map +0 -1
  507. package/dist/cjs/components/admin/GroupMembers/BaseGroupMembers.cjs.map +0 -1
  508. package/dist/cjs/components/admin/GroupMembers/GroupMembers.cjs.map +0 -1
  509. package/dist/cjs/components/admin/RoleAssignments/BaseRoleAssignments.cjs.map +0 -1
  510. package/dist/cjs/components/admin/RoleAssignments/RoleAssignments.cjs.map +0 -1
  511. package/dist/cjs/components/admin/RoleCreate/BaseRoleCreate.cjs.map +0 -1
  512. package/dist/cjs/components/admin/RoleCreate/RoleCreate.cjs.map +0 -1
  513. package/dist/cjs/components/admin/RoleList/BaseRoleList.cjs.map +0 -1
  514. package/dist/cjs/components/admin/RoleList/RoleList.cjs.map +0 -1
  515. package/dist/cjs/components/admin/RolePermissions/BaseRolePermissions.cjs +0 -69
  516. package/dist/cjs/components/admin/RolePermissions/BaseRolePermissions.cjs.map +0 -1
  517. package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs +0 -40
  518. package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs.map +0 -1
  519. package/dist/cjs/components/admin/UserCreate/BaseUserCreate.cjs.map +0 -1
  520. package/dist/cjs/components/admin/UserCreate/UserCreate.cjs.map +0 -1
  521. package/dist/cjs/components/admin/UserCreate/userCreateFields.cjs.map +0 -1
  522. package/dist/cjs/components/admin/UserDetails/BaseUserDetails.cjs.map +0 -1
  523. package/dist/cjs/components/admin/UserDetails/UserDetails.cjs.map +0 -1
  524. package/dist/cjs/components/admin/UserList/BaseUserList.cjs.map +0 -1
  525. package/dist/cjs/components/admin/UserList/UserList.cjs.map +0 -1
  526. package/dist/cjs/components/admin/shared/AccountLifecycleParts.cjs.map +0 -1
  527. package/dist/cjs/components/admin/shared/AdminParts.cjs.map +0 -1
  528. package/dist/cjs/components/admin/shared/AdminParts.styles.cjs.map +0 -1
  529. package/dist/cjs/components/admin/shared/AdminSearch.cjs.map +0 -1
  530. package/dist/cjs/components/admin/shared/AdminSection.cjs.map +0 -1
  531. package/dist/cjs/components/admin/shared/AdminSection.styles.cjs.map +0 -1
  532. package/dist/cjs/components/admin/shared/ApplicationFormFields.cjs.map +0 -1
  533. package/dist/cjs/components/admin/shared/ClientSecretNotice.cjs.map +0 -1
  534. package/dist/cjs/components/admin/shared/IdentityPicker.cjs.map +0 -1
  535. package/dist/cjs/components/admin/shared/useAdminPartStyles.cjs.map +0 -1
  536. package/dist/cjs/components/admin/shared/useDefaultOuId.cjs.map +0 -1
  537. package/dist/components/admin/AgentCreate/AgentCreate.d.ts.map +0 -1
  538. package/dist/components/admin/AgentCreate/AgentCreate.js.map +0 -1
  539. package/dist/components/admin/AgentCreate/BaseAgentCreate.d.ts.map +0 -1
  540. package/dist/components/admin/AgentCreate/BaseAgentCreate.js.map +0 -1
  541. package/dist/components/admin/AgentDetails/AgentDetails.d.ts.map +0 -1
  542. package/dist/components/admin/AgentDetails/AgentDetails.js.map +0 -1
  543. package/dist/components/admin/AgentDetails/BaseAgentDetails.d.ts.map +0 -1
  544. package/dist/components/admin/AgentDetails/BaseAgentDetails.js.map +0 -1
  545. package/dist/components/admin/AgentList/AgentList.d.ts.map +0 -1
  546. package/dist/components/admin/AgentList/AgentList.js.map +0 -1
  547. package/dist/components/admin/AgentList/BaseAgentList.d.ts.map +0 -1
  548. package/dist/components/admin/AgentList/BaseAgentList.js.map +0 -1
  549. package/dist/components/admin/ApplicationCreate/ApplicationCreate.d.ts.map +0 -1
  550. package/dist/components/admin/ApplicationCreate/ApplicationCreate.js.map +0 -1
  551. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.d.ts.map +0 -1
  552. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.js.map +0 -1
  553. package/dist/components/admin/ApplicationDetails/ApplicationDetails.d.ts.map +0 -1
  554. package/dist/components/admin/ApplicationDetails/ApplicationDetails.js.map +0 -1
  555. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.d.ts.map +0 -1
  556. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.js.map +0 -1
  557. package/dist/components/admin/ApplicationList/ApplicationList.d.ts.map +0 -1
  558. package/dist/components/admin/ApplicationList/ApplicationList.js.map +0 -1
  559. package/dist/components/admin/ApplicationList/BaseApplicationList.d.ts.map +0 -1
  560. package/dist/components/admin/ApplicationList/BaseApplicationList.js.map +0 -1
  561. package/dist/components/admin/GroupCreate/BaseGroupCreate.d.ts.map +0 -1
  562. package/dist/components/admin/GroupCreate/BaseGroupCreate.js.map +0 -1
  563. package/dist/components/admin/GroupCreate/GroupCreate.d.ts.map +0 -1
  564. package/dist/components/admin/GroupCreate/GroupCreate.js.map +0 -1
  565. package/dist/components/admin/GroupList/BaseGroupList.d.ts.map +0 -1
  566. package/dist/components/admin/GroupList/BaseGroupList.js.map +0 -1
  567. package/dist/components/admin/GroupList/GroupList.d.ts.map +0 -1
  568. package/dist/components/admin/GroupList/GroupList.js.map +0 -1
  569. package/dist/components/admin/GroupMembers/BaseGroupMembers.d.ts.map +0 -1
  570. package/dist/components/admin/GroupMembers/BaseGroupMembers.js.map +0 -1
  571. package/dist/components/admin/GroupMembers/GroupMembers.d.ts.map +0 -1
  572. package/dist/components/admin/GroupMembers/GroupMembers.js.map +0 -1
  573. package/dist/components/admin/RoleAssignments/BaseRoleAssignments.d.ts.map +0 -1
  574. package/dist/components/admin/RoleAssignments/BaseRoleAssignments.js.map +0 -1
  575. package/dist/components/admin/RoleAssignments/RoleAssignments.d.ts.map +0 -1
  576. package/dist/components/admin/RoleAssignments/RoleAssignments.js.map +0 -1
  577. package/dist/components/admin/RoleCreate/BaseRoleCreate.d.ts.map +0 -1
  578. package/dist/components/admin/RoleCreate/BaseRoleCreate.js.map +0 -1
  579. package/dist/components/admin/RoleCreate/RoleCreate.d.ts.map +0 -1
  580. package/dist/components/admin/RoleCreate/RoleCreate.js.map +0 -1
  581. package/dist/components/admin/RoleList/BaseRoleList.d.ts.map +0 -1
  582. package/dist/components/admin/RoleList/BaseRoleList.js.map +0 -1
  583. package/dist/components/admin/RoleList/RoleList.d.ts.map +0 -1
  584. package/dist/components/admin/RoleList/RoleList.js.map +0 -1
  585. package/dist/components/admin/RolePermissions/BaseRolePermissions.d.ts +0 -42
  586. package/dist/components/admin/RolePermissions/BaseRolePermissions.d.ts.map +0 -1
  587. package/dist/components/admin/RolePermissions/BaseRolePermissions.js +0 -67
  588. package/dist/components/admin/RolePermissions/BaseRolePermissions.js.map +0 -1
  589. package/dist/components/admin/RolePermissions/RolePermissions.d.ts +0 -16
  590. package/dist/components/admin/RolePermissions/RolePermissions.d.ts.map +0 -1
  591. package/dist/components/admin/RolePermissions/RolePermissions.js +0 -37
  592. package/dist/components/admin/RolePermissions/RolePermissions.js.map +0 -1
  593. package/dist/components/admin/UserCreate/BaseUserCreate.d.ts.map +0 -1
  594. package/dist/components/admin/UserCreate/BaseUserCreate.js.map +0 -1
  595. package/dist/components/admin/UserCreate/UserCreate.d.ts.map +0 -1
  596. package/dist/components/admin/UserCreate/UserCreate.js.map +0 -1
  597. package/dist/components/admin/UserCreate/userCreateFields.d.ts.map +0 -1
  598. package/dist/components/admin/UserCreate/userCreateFields.js.map +0 -1
  599. package/dist/components/admin/UserDetails/BaseUserDetails.d.ts.map +0 -1
  600. package/dist/components/admin/UserDetails/BaseUserDetails.js.map +0 -1
  601. package/dist/components/admin/UserDetails/UserDetails.d.ts.map +0 -1
  602. package/dist/components/admin/UserDetails/UserDetails.js.map +0 -1
  603. package/dist/components/admin/UserList/BaseUserList.d.ts.map +0 -1
  604. package/dist/components/admin/UserList/BaseUserList.js.map +0 -1
  605. package/dist/components/admin/UserList/UserList.d.ts.map +0 -1
  606. package/dist/components/admin/UserList/UserList.js.map +0 -1
  607. package/dist/components/admin/shared/AccountLifecycleParts.d.ts.map +0 -1
  608. package/dist/components/admin/shared/AccountLifecycleParts.js.map +0 -1
  609. package/dist/components/admin/shared/AdminListRenderProps.d.ts.map +0 -1
  610. package/dist/components/admin/shared/AdminParts.d.ts.map +0 -1
  611. package/dist/components/admin/shared/AdminParts.js.map +0 -1
  612. package/dist/components/admin/shared/AdminParts.styles.d.ts.map +0 -1
  613. package/dist/components/admin/shared/AdminParts.styles.js.map +0 -1
  614. package/dist/components/admin/shared/AdminSearch.d.ts.map +0 -1
  615. package/dist/components/admin/shared/AdminSearch.js.map +0 -1
  616. package/dist/components/admin/shared/AdminSection.d.ts.map +0 -1
  617. package/dist/components/admin/shared/AdminSection.js.map +0 -1
  618. package/dist/components/admin/shared/AdminSection.styles.d.ts.map +0 -1
  619. package/dist/components/admin/shared/AdminSection.styles.js.map +0 -1
  620. package/dist/components/admin/shared/ApplicationFormFields.d.ts.map +0 -1
  621. package/dist/components/admin/shared/ApplicationFormFields.js.map +0 -1
  622. package/dist/components/admin/shared/ClientSecretNotice.d.ts.map +0 -1
  623. package/dist/components/admin/shared/ClientSecretNotice.js.map +0 -1
  624. package/dist/components/admin/shared/IdentityPicker.d.ts.map +0 -1
  625. package/dist/components/admin/shared/IdentityPicker.js.map +0 -1
  626. package/dist/components/admin/shared/useAdminPartStyles.d.ts.map +0 -1
  627. package/dist/components/admin/shared/useAdminPartStyles.js.map +0 -1
  628. package/dist/components/admin/shared/useDefaultOuId.d.ts.map +0 -1
  629. package/dist/components/admin/shared/useDefaultOuId.js.map +0 -1
  630. /package/dist/components/{admin → management}/AgentCreate/BaseAgentCreate.d.ts +0 -0
  631. /package/dist/components/{admin → management}/AgentDetails/AgentDetails.d.ts +0 -0
  632. /package/dist/components/{admin → management}/AgentDetails/BaseAgentDetails.d.ts +0 -0
  633. /package/dist/components/{admin → management}/AgentList/BaseAgentList.d.ts +0 -0
  634. /package/dist/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.d.ts +0 -0
  635. /package/dist/components/{admin → management}/ApplicationDetails/ApplicationDetails.d.ts +0 -0
  636. /package/dist/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.d.ts +0 -0
  637. /package/dist/components/{admin → management}/ApplicationList/BaseApplicationList.d.ts +0 -0
  638. /package/dist/components/{admin → management}/GroupCreate/BaseGroupCreate.d.ts +0 -0
  639. /package/dist/components/{admin → management}/GroupCreate/GroupCreate.d.ts +0 -0
  640. /package/dist/components/{admin → management}/GroupList/BaseGroupList.d.ts +0 -0
  641. /package/dist/components/{admin → management}/GroupList/GroupList.d.ts +0 -0
  642. /package/dist/components/{admin → management}/GroupMembers/BaseGroupMembers.d.ts +0 -0
  643. /package/dist/components/{admin → management}/GroupMembers/GroupMembers.d.ts +0 -0
  644. /package/dist/components/{admin → management}/RoleAssignments/BaseRoleAssignments.d.ts +0 -0
  645. /package/dist/components/{admin → management}/RoleAssignments/RoleAssignments.d.ts +0 -0
  646. /package/dist/components/{admin → management}/RoleCreate/BaseRoleCreate.d.ts +0 -0
  647. /package/dist/components/{admin → management}/RoleCreate/RoleCreate.d.ts +0 -0
  648. /package/dist/components/{admin → management}/RoleList/BaseRoleList.d.ts +0 -0
  649. /package/dist/components/{admin → management}/RoleList/RoleList.d.ts +0 -0
  650. /package/dist/components/{admin → management}/UserCreate/BaseUserCreate.d.ts +0 -0
  651. /package/dist/components/{admin → management}/UserCreate/UserCreate.d.ts +0 -0
  652. /package/dist/components/{admin → management}/UserCreate/userCreateFields.d.ts +0 -0
  653. /package/dist/components/{admin → management}/UserDetails/BaseUserDetails.d.ts +0 -0
  654. /package/dist/components/{admin → management}/UserDetails/UserDetails.d.ts +0 -0
  655. /package/dist/components/{admin → management}/UserList/BaseUserList.d.ts +0 -0
  656. /package/dist/components/{admin → management}/UserList/UserList.d.ts +0 -0
  657. /package/dist/components/{admin → management}/shared/AccountLifecycleParts.d.ts +0 -0
  658. /package/dist/components/{admin → management}/shared/AdminListRenderProps.d.ts +0 -0
  659. /package/dist/components/{admin → management}/shared/AdminParts.d.ts +0 -0
  660. /package/dist/components/{admin → management}/shared/AdminParts.styles.d.ts +0 -0
  661. /package/dist/components/{admin → management}/shared/AdminSearch.d.ts +0 -0
  662. /package/dist/components/{admin → management}/shared/AdminSection.d.ts +0 -0
  663. /package/dist/components/{admin → management}/shared/AdminSection.styles.d.ts +0 -0
  664. /package/dist/components/{admin → management}/shared/ApplicationFormFields.d.ts +0 -0
  665. /package/dist/components/{admin → management}/shared/ClientSecretNotice.d.ts +0 -0
  666. /package/dist/components/{admin → management}/shared/IdentityPicker.d.ts +0 -0
  667. /package/dist/components/{admin → management}/shared/useAdminPartStyles.d.ts +0 -0
  668. /package/dist/components/{admin → management}/shared/useDefaultOuId.d.ts +0 -0
@@ -116,6 +116,14 @@ const extractErrorMessage = (error, t, defaultErrorKey = "errors.flow.generic")
116
116
  return t(defaultErrorKey);
117
117
  };
118
118
  /**
119
+ * Resolves a stored flow error source with the current translator. A builder is called, an Error with a
120
+ * message is kept as-is so fields like `code` survive, and anything else goes through `extractErrorMessage`.
121
+ */
122
+ const resolveFlowError = (source, t) => {
123
+ if (typeof source === "function") return source(t);
124
+ return source instanceof Error && source.message ? source : new Error(extractErrorMessage(source, t));
125
+ };
126
+ /**
119
127
  * Check if a response is an error response and extract the error message.
120
128
  * This function identifies error responses by checking for ERROR status and failure reasons.
121
129
  *
@@ -156,4 +164,5 @@ const normalizeFlowResponse = (response, t, options = {}, meta) => {
156
164
  //#endregion
157
165
  exports.extractErrorMessage = extractErrorMessage;
158
166
  exports.normalizeFlowResponse = normalizeFlowResponse;
167
+ exports.resolveFlowError = resolveFlowError;
159
168
  //# sourceMappingURL=flowTransformer.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowTransformer.cjs","names":["mapping: Map<string, string>","transformedComponent: any","inputData: any","value: string","refMapping: Map<string, string>","actionMapping: Map<string, string>","inputsData: any[]","resolveTranslationsInArray","flowError: FlowErrorResponse['error']","params: Record<string, string> | undefined","translated: string","systemTranslated: string","fallback: string | undefined","additionalData: Record<string, any>","parsed: any"],"sources":["../../../src/utils/flowTransformer.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @fileoverview Shared flow response transformer utilities for v2 embedded flows.\n *\n * This module provides reusable transformation functions for normalizing embedded flow\n * responses from ThunderID APIs. It handles both successful responses with component\n * extraction and error responses with proper error message extraction.\n *\n * Key features:\n * - Component extraction from flow meta structure\n * - Translation string resolution in components\n * - Error response detection and message extraction\n * - Configurable error handling (throw vs return errors)\n *\n * Usage:\n * ```typescript\n * import { normalizeFlowResponse } from '../../../utils/flowTransformer';\n *\n * const { executionId, components } = normalizeFlowResponse(apiResponse, t, {\n * defaultErrorKey: 'components.signIn.errors.generic'\n * });\n * ```\n *\n * This transformer is used by both SignIn and SignUp v2 components to ensure\n * consistent response handling across all embedded flows.\n */\n\nimport {\n EmbeddedFlowComponent,\n FlowMetadataResponse,\n I18nMessage,\n hasUnresolvedTranslationParams,\n} from '@thunderid/browser';\nimport resolveTranslationsInArray from './resolveTranslationsInArray';\nimport {UseTranslation} from '../hooks/useTranslation';\n\n/**\n * Generic flow error response interface that covers common error structure\n */\nexport interface FlowErrorResponse {\n error?: {\n code: string;\n description: I18nMessage;\n message: I18nMessage;\n };\n executionId: string;\n flowStatus: 'ERROR';\n}\n\n/**\n * Configuration options for flow transformation\n */\nexport interface FlowTransformOptions {\n /**\n * Default error message key for translation fallback\n * @default 'errors.flow.generic'\n */\n defaultErrorKey?: string;\n /**\n * Whether to resolve translation strings or keep them as i18n keys\n * @default true\n */\n resolveTranslations?: boolean;\n /**\n * Whether to throw errors or return them as normalized response\n * @default true\n */\n throwOnError?: boolean;\n}\n\n/**\n * Create a mapping from ref to identifier based on data.inputs array.\n * This handles cases where meta.components use 'ref' to reference inputs,\n * and data.inputs contain the actual 'identifier' field.\n *\n * @param response - The flow response object\n * @returns Map of ref to identifier\n */\nconst createInputRefMapping = (response: any): Map<string, string> => {\n const mapping: Map<string, string> = new Map<string, string>();\n\n if (response?.data?.inputs && Array.isArray(response.data.inputs)) {\n response.data.inputs.forEach((input: any) => {\n if (input.ref && input.identifier) {\n mapping.set(input.ref, input.identifier);\n }\n });\n }\n\n return mapping;\n};\n\n/**\n * Create a mapping from action ref to nextNode based on data.actions array.\n * This handles cases where meta.components reference actions by ref,\n * and data.actions contain the actual nextNode field for routing.\n *\n * @param response - The flow response object\n * @returns Map of action ref to nextNode\n */\nconst createActionRefMapping = (response: any): Map<string, string> => {\n const mapping: Map<string, string> = new Map<string, string>();\n\n if (response?.data?.actions && Array.isArray(response.data.actions)) {\n response.data.actions.forEach((action: any) => {\n if (action.ref && action.nextNode) {\n mapping.set(action.ref, action.nextNode);\n }\n });\n }\n\n return mapping;\n};\n\n/**\n * Apply input ref mapping to components recursively.\n * This ensures that component.ref values are mapped to the correct identifier\n * from data.inputs, enabling proper form submission.\n *\n * @param components - Array of components to transform\n * @param refMapping - Map of ref to identifier\n * @param actionMapping - Map of action ref to nextNode\n * @param inputsData - Array of input data for resolving SELECT options\n * @returns Transformed components with correct identifiers and action references\n */\nconst applyInputRefMapping = (\n components: EmbeddedFlowComponent[],\n refMapping: Map<string, string>,\n actionMapping: Map<string, string>,\n inputsData: any[] = [],\n): EmbeddedFlowComponent[] =>\n components.map((component: EmbeddedFlowComponent) => {\n const transformedComponent: any = {...component} as EmbeddedFlowComponent & {\n actionRef?: string;\n options?: {label: string; value: string}[];\n };\n\n // If this component has a ref that maps to an identifier, update it\n if (transformedComponent.ref && refMapping.has(transformedComponent.ref)) {\n transformedComponent.ref = refMapping.get(transformedComponent.ref);\n }\n\n // For SELECT components, copy options from data.inputs\n // The component.id matches the input.ref in the data structure\n if (transformedComponent.type === 'SELECT' && component.id) {\n const inputData: any = inputsData.find((input: any) => input.ref === component.id);\n if (inputData?.options) {\n transformedComponent.options = inputData.options.map((opt: any) => {\n if (typeof opt === 'string') {\n return {label: opt, value: opt};\n }\n // Safely handle non-string values to prevent React key crashes\n const value: string = typeof opt.value === 'object' ? JSON.stringify(opt.value) : String(opt.value || '');\n const label: string = typeof opt.label === 'object' ? JSON.stringify(opt.label) : String(opt.label || value);\n\n return {label, value};\n });\n }\n }\n\n // If this is an action component, map its id to the nextNode\n // Store the nextNode reference as actionRef property for later use\n if (\n transformedComponent.type === 'ACTION' &&\n transformedComponent.id &&\n actionMapping.has(transformedComponent.id)\n ) {\n transformedComponent.actionRef = actionMapping.get(transformedComponent.id);\n }\n\n // Recursively apply to nested components\n if (transformedComponent.components && Array.isArray(transformedComponent.components)) {\n transformedComponent.components = applyInputRefMapping(\n transformedComponent.components,\n refMapping,\n actionMapping,\n inputsData,\n );\n }\n\n return transformedComponent;\n });\n\n/**\n * Transform and resolve translations in components from flow response.\n * This function extracts components from the response meta structure and optionally resolves\n * any translation strings within them. It also handles mapping of input refs to identifiers\n * and action refs to nextNode values.\n *\n * @param response - The flow response object containing components in meta structure\n * @param t - Translation function from useTranslation hook\n * @param resolveTranslations - Whether to resolve translation strings or keep them as i18n keys (default: true)\n * @returns Array of flow components with resolved or unresolved translations\n */\nexport const transformComponents = (\n response: any,\n t: UseTranslation['t'],\n resolveTranslations = true,\n meta?: FlowMetadataResponse | null,\n): EmbeddedFlowComponent[] => {\n if (!response?.data?.meta?.components) {\n return [];\n }\n\n let {components} = response.data.meta;\n\n // Create mapping from ref to identifier based on data.inputs\n const refMapping: Map<string, string> = createInputRefMapping(response);\n\n // Create mapping from action ref to nextNode based on data.actions\n const actionMapping: Map<string, string> = createActionRefMapping(response);\n\n // Get inputs data for SELECT option resolution\n const inputsData: any[] = response?.data?.inputs || [];\n\n // Apply ref and action mapping if there are any mappings\n if (refMapping.size > 0 || actionMapping.size > 0 || inputsData.length > 0) {\n components = applyInputRefMapping(components, refMapping, actionMapping, inputsData);\n }\n\n return resolveTranslations ? resolveTranslationsInArray(components, t, undefined, meta) : components;\n};\n\n/**\n * Extract error message from flow error response.\n *\n * Resolution order:\n * 1. Structured `error` object: try i18n lookup via `t(error.message.key, error.message.params)`.\n * Bundle entries keep the backend's `{{param(name)}}` placeholders, so `params` must be passed\n * through; a resolved value that still holds an unsubstituted placeholder is treated as a miss.\n * 2. Fallback to `defaultValue` from `message`, then `description` (the backend pre-substitutes it).\n * 3. Standard `Error.message`.\n * 4. Generic translated fallback via `defaultErrorKey`.\n */\nexport const extractErrorMessage = (\n error: FlowErrorResponse | any,\n t: UseTranslation['t'],\n defaultErrorKey = 'errors.flow.generic',\n): string => {\n if (error && typeof error === 'object' && error.error) {\n const flowError: FlowErrorResponse['error'] = error.error;\n\n // 1. Try i18n lookup on message.key first (preferred for user-facing errors)\n if (flowError?.message?.key) {\n const params: Record<string, string> | undefined = flowError.message.params;\n\n const translated: string = t(flowError.message.key, params);\n if (translated && translated !== flowError.message.key && !hasUnresolvedTranslationParams(translated)) {\n return translated;\n }\n\n // If the key resolved to itself, retry under the 'system:' namespace\n const systemKey = `system.${flowError.message.key}`;\n const systemTranslated: string = t(systemKey, params);\n if (systemTranslated && systemTranslated !== systemKey && !hasUnresolvedTranslationParams(systemTranslated)) {\n return systemTranslated;\n }\n }\n\n // 2. Fall back to defaultValue from message, then description\n const fallback: string | undefined = flowError?.message?.defaultValue ?? flowError?.description?.defaultValue;\n if (fallback) {\n return fallback;\n }\n }\n\n // Legacy backward compatibility\n if (error && typeof error === 'object' && error.failureReason) {\n return error.failureReason;\n }\n\n if (error instanceof Error && error.message) {\n return error.message;\n }\n\n return t(defaultErrorKey);\n};\n\n/**\n * Check if a response is an error response and extract the error message.\n * This function identifies error responses by checking for ERROR status and failure reasons.\n *\n * @param response - The flow response to check\n * @param t - Translation function for error messages\n * @param defaultErrorKey - Default translation key for generic errors\n * @returns Error message string if response is an error, null otherwise\n */\nexport const checkForErrorResponse = (\n response: any,\n t: UseTranslation['t'],\n defaultErrorKey = 'errors.flow.generic',\n): string | null => {\n if (response?.flowStatus === 'ERROR') {\n return extractErrorMessage(response, t, defaultErrorKey);\n }\n\n return null;\n};\n\n/**\n * Generic flow response normalizer that handles both success and error responses.\n * This is the main transformer function that should be used by all flow components.\n *\n * @param response - The raw flow response from the API\n * @param t - Translation function from useTranslation hook\n * @param options - Configuration options for transformation behavior\n * @returns Normalized flow response with executionId and transformed components\n * @throws {any} The original response if it's an error and throwOnError is true\n */\nexport const normalizeFlowResponse = (\n response: any,\n t: UseTranslation['t'],\n options: FlowTransformOptions = {},\n meta?: FlowMetadataResponse | null,\n): {\n additionalData: Record<string, any>;\n components: EmbeddedFlowComponent[];\n executionId: string;\n} => {\n const {throwOnError = true, defaultErrorKey = 'errors.flow.generic', resolveTranslations = true} = options;\n\n // Check if this is an error response\n const errorMessage: string | null = checkForErrorResponse(response, t, defaultErrorKey);\n\n if (errorMessage && throwOnError) {\n // Throw the original response so it can be caught by error handling\n throw response;\n }\n\n const additionalData: Record<string, any> = (response?.data?.additionalData as Record<string, any>) ?? {};\n\n // The consent prompt is serialized as a JSON string (array) by the backend.\n // Parse it and wrap in the expected {purposes: [...]} structure.\n if (typeof additionalData['consentPrompt'] === 'string') {\n try {\n const parsed: any = JSON.parse(additionalData['consentPrompt']);\n additionalData['consentPrompt'] = {purposes: Array.isArray(parsed) ? parsed : []};\n } catch {\n // Leave unparseable value as-is\n }\n }\n\n return {\n additionalData,\n components: transformComponents(response, t, resolveTranslations, meta),\n executionId: response.executionId,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"flowTransformer.cjs","names":["mapping: Map<string, string>","transformedComponent: any","inputData: any","value: string","refMapping: Map<string, string>","actionMapping: Map<string, string>","inputsData: any[]","resolveTranslationsInArray","flowError: FlowErrorResponse['error']","params: Record<string, string> | undefined","translated: string","systemTranslated: string","fallback: string | undefined","additionalData: Record<string, any>","parsed: any"],"sources":["../../../src/utils/flowTransformer.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @fileoverview Shared flow response transformer utilities for v2 embedded flows.\n *\n * This module provides reusable transformation functions for normalizing embedded flow\n * responses from ThunderID APIs. It handles both successful responses with component\n * extraction and error responses with proper error message extraction.\n *\n * Key features:\n * - Component extraction from flow meta structure\n * - Translation string resolution in components\n * - Error response detection and message extraction\n * - Configurable error handling (throw vs return errors)\n *\n * Usage:\n * ```typescript\n * import { normalizeFlowResponse } from '../../../utils/flowTransformer';\n *\n * const { executionId, components } = normalizeFlowResponse(apiResponse, t, {\n * defaultErrorKey: 'components.signIn.errors.generic'\n * });\n * ```\n *\n * This transformer is used by both SignIn and SignUp v2 components to ensure\n * consistent response handling across all embedded flows.\n */\n\nimport {\n EmbeddedFlowComponent,\n FlowMetadataResponse,\n I18nMessage,\n hasUnresolvedTranslationParams,\n} from '@thunderid/browser';\nimport resolveTranslationsInArray from './resolveTranslationsInArray';\nimport {UseTranslation} from '../hooks/useTranslation';\n\n/**\n * Generic flow error response interface that covers common error structure\n */\nexport interface FlowErrorResponse {\n error?: {\n code: string;\n description: I18nMessage;\n message: I18nMessage;\n };\n executionId: string;\n flowStatus: 'ERROR';\n}\n\n/**\n * Configuration options for flow transformation\n */\nexport interface FlowTransformOptions {\n /**\n * Default error message key for translation fallback\n * @default 'errors.flow.generic'\n */\n defaultErrorKey?: string;\n /**\n * Whether to resolve translation strings or keep them as i18n keys\n * @default true\n */\n resolveTranslations?: boolean;\n /**\n * Whether to throw errors or return them as normalized response\n * @default true\n */\n throwOnError?: boolean;\n}\n\n/**\n * Create a mapping from ref to identifier based on data.inputs array.\n * This handles cases where meta.components use 'ref' to reference inputs,\n * and data.inputs contain the actual 'identifier' field.\n *\n * @param response - The flow response object\n * @returns Map of ref to identifier\n */\nconst createInputRefMapping = (response: any): Map<string, string> => {\n const mapping: Map<string, string> = new Map<string, string>();\n\n if (response?.data?.inputs && Array.isArray(response.data.inputs)) {\n response.data.inputs.forEach((input: any) => {\n if (input.ref && input.identifier) {\n mapping.set(input.ref, input.identifier);\n }\n });\n }\n\n return mapping;\n};\n\n/**\n * Create a mapping from action ref to nextNode based on data.actions array.\n * This handles cases where meta.components reference actions by ref,\n * and data.actions contain the actual nextNode field for routing.\n *\n * @param response - The flow response object\n * @returns Map of action ref to nextNode\n */\nconst createActionRefMapping = (response: any): Map<string, string> => {\n const mapping: Map<string, string> = new Map<string, string>();\n\n if (response?.data?.actions && Array.isArray(response.data.actions)) {\n response.data.actions.forEach((action: any) => {\n if (action.ref && action.nextNode) {\n mapping.set(action.ref, action.nextNode);\n }\n });\n }\n\n return mapping;\n};\n\n/**\n * Apply input ref mapping to components recursively.\n * This ensures that component.ref values are mapped to the correct identifier\n * from data.inputs, enabling proper form submission.\n *\n * @param components - Array of components to transform\n * @param refMapping - Map of ref to identifier\n * @param actionMapping - Map of action ref to nextNode\n * @param inputsData - Array of input data for resolving SELECT options\n * @returns Transformed components with correct identifiers and action references\n */\nconst applyInputRefMapping = (\n components: EmbeddedFlowComponent[],\n refMapping: Map<string, string>,\n actionMapping: Map<string, string>,\n inputsData: any[] = [],\n): EmbeddedFlowComponent[] =>\n components.map((component: EmbeddedFlowComponent) => {\n const transformedComponent: any = {...component} as EmbeddedFlowComponent & {\n actionRef?: string;\n options?: {label: string; value: string}[];\n };\n\n // If this component has a ref that maps to an identifier, update it\n if (transformedComponent.ref && refMapping.has(transformedComponent.ref)) {\n transformedComponent.ref = refMapping.get(transformedComponent.ref);\n }\n\n // For SELECT components, copy options from data.inputs\n // The component.id matches the input.ref in the data structure\n if (transformedComponent.type === 'SELECT' && component.id) {\n const inputData: any = inputsData.find((input: any) => input.ref === component.id);\n if (inputData?.options) {\n transformedComponent.options = inputData.options.map((opt: any) => {\n if (typeof opt === 'string') {\n return {label: opt, value: opt};\n }\n // Safely handle non-string values to prevent React key crashes\n const value: string = typeof opt.value === 'object' ? JSON.stringify(opt.value) : String(opt.value || '');\n const label: string = typeof opt.label === 'object' ? JSON.stringify(opt.label) : String(opt.label || value);\n\n return {label, value};\n });\n }\n }\n\n // If this is an action component, map its id to the nextNode\n // Store the nextNode reference as actionRef property for later use\n if (\n transformedComponent.type === 'ACTION' &&\n transformedComponent.id &&\n actionMapping.has(transformedComponent.id)\n ) {\n transformedComponent.actionRef = actionMapping.get(transformedComponent.id);\n }\n\n // Recursively apply to nested components\n if (transformedComponent.components && Array.isArray(transformedComponent.components)) {\n transformedComponent.components = applyInputRefMapping(\n transformedComponent.components,\n refMapping,\n actionMapping,\n inputsData,\n );\n }\n\n return transformedComponent;\n });\n\n/**\n * Transform and resolve translations in components from flow response.\n * This function extracts components from the response meta structure and optionally resolves\n * any translation strings within them. It also handles mapping of input refs to identifiers\n * and action refs to nextNode values.\n *\n * @param response - The flow response object containing components in meta structure\n * @param t - Translation function from useTranslation hook\n * @param resolveTranslations - Whether to resolve translation strings or keep them as i18n keys (default: true)\n * @returns Array of flow components with resolved or unresolved translations\n */\nexport const transformComponents = (\n response: any,\n t: UseTranslation['t'],\n resolveTranslations = true,\n meta?: FlowMetadataResponse | null,\n): EmbeddedFlowComponent[] => {\n if (!response?.data?.meta?.components) {\n return [];\n }\n\n let {components} = response.data.meta;\n\n // Create mapping from ref to identifier based on data.inputs\n const refMapping: Map<string, string> = createInputRefMapping(response);\n\n // Create mapping from action ref to nextNode based on data.actions\n const actionMapping: Map<string, string> = createActionRefMapping(response);\n\n // Get inputs data for SELECT option resolution\n const inputsData: any[] = response?.data?.inputs || [];\n\n // Apply ref and action mapping if there are any mappings\n if (refMapping.size > 0 || actionMapping.size > 0 || inputsData.length > 0) {\n components = applyInputRefMapping(components, refMapping, actionMapping, inputsData);\n }\n\n return resolveTranslations ? resolveTranslationsInArray(components, t, undefined, meta) : components;\n};\n\n/**\n * Extract error message from flow error response.\n *\n * Resolution order:\n * 1. Structured `error` object: try i18n lookup via `t(error.message.key, error.message.params)`.\n * Bundle entries keep the backend's `{{param(name)}}` placeholders, so `params` must be passed\n * through; a resolved value that still holds an unsubstituted placeholder is treated as a miss.\n * 2. Fallback to `defaultValue` from `message`, then `description` (the backend pre-substitutes it).\n * 3. Standard `Error.message`.\n * 4. Generic translated fallback via `defaultErrorKey`.\n */\nexport const extractErrorMessage = (\n error: FlowErrorResponse | any,\n t: UseTranslation['t'],\n defaultErrorKey = 'errors.flow.generic',\n): string => {\n if (error && typeof error === 'object' && error.error) {\n const flowError: FlowErrorResponse['error'] = error.error;\n\n // 1. Try i18n lookup on message.key first (preferred for user-facing errors)\n if (flowError?.message?.key) {\n const params: Record<string, string> | undefined = flowError.message.params;\n\n const translated: string = t(flowError.message.key, params);\n if (translated && translated !== flowError.message.key && !hasUnresolvedTranslationParams(translated)) {\n return translated;\n }\n\n // If the key resolved to itself, retry under the 'system:' namespace\n const systemKey = `system.${flowError.message.key}`;\n const systemTranslated: string = t(systemKey, params);\n if (systemTranslated && systemTranslated !== systemKey && !hasUnresolvedTranslationParams(systemTranslated)) {\n return systemTranslated;\n }\n }\n\n // 2. Fall back to defaultValue from message, then description\n const fallback: string | undefined = flowError?.message?.defaultValue ?? flowError?.description?.defaultValue;\n if (fallback) {\n return fallback;\n }\n }\n\n // Legacy backward compatibility\n if (error && typeof error === 'object' && error.failureReason) {\n return error.failureReason;\n }\n\n if (error instanceof Error && error.message) {\n return error.message;\n }\n\n return t(defaultErrorKey);\n};\n\n/** Builds an SDK-raised error with the current translator, so it follows a language change. */\nexport type FlowErrorBuilder = (t: UseTranslation['t']) => Error;\n\n/**\n * Resolves a stored flow error source with the current translator. A builder is called, an Error with a\n * message is kept as-is so fields like `code` survive, and anything else goes through `extractErrorMessage`.\n */\nexport const resolveFlowError = (source: unknown, t: UseTranslation['t']): Error => {\n if (typeof source === 'function') {\n return (source as FlowErrorBuilder)(t);\n }\n\n return source instanceof Error && source.message ? source : new Error(extractErrorMessage(source, t));\n};\n\n/**\n * Check if a response is an error response and extract the error message.\n * This function identifies error responses by checking for ERROR status and failure reasons.\n *\n * @param response - The flow response to check\n * @param t - Translation function for error messages\n * @param defaultErrorKey - Default translation key for generic errors\n * @returns Error message string if response is an error, null otherwise\n */\nexport const checkForErrorResponse = (\n response: any,\n t: UseTranslation['t'],\n defaultErrorKey = 'errors.flow.generic',\n): string | null => {\n if (response?.flowStatus === 'ERROR') {\n return extractErrorMessage(response, t, defaultErrorKey);\n }\n\n return null;\n};\n\n/**\n * Generic flow response normalizer that handles both success and error responses.\n * This is the main transformer function that should be used by all flow components.\n *\n * @param response - The raw flow response from the API\n * @param t - Translation function from useTranslation hook\n * @param options - Configuration options for transformation behavior\n * @returns Normalized flow response with executionId and transformed components\n * @throws {any} The original response if it's an error and throwOnError is true\n */\nexport const normalizeFlowResponse = (\n response: any,\n t: UseTranslation['t'],\n options: FlowTransformOptions = {},\n meta?: FlowMetadataResponse | null,\n): {\n additionalData: Record<string, any>;\n components: EmbeddedFlowComponent[];\n executionId: string;\n} => {\n const {throwOnError = true, defaultErrorKey = 'errors.flow.generic', resolveTranslations = true} = options;\n\n // Check if this is an error response\n const errorMessage: string | null = checkForErrorResponse(response, t, defaultErrorKey);\n\n if (errorMessage && throwOnError) {\n // Throw the original response so it can be caught by error handling\n throw response;\n }\n\n const additionalData: Record<string, any> = (response?.data?.additionalData as Record<string, any>) ?? {};\n\n // The consent prompt is serialized as a JSON string (array) by the backend.\n // Parse it and wrap in the expected {purposes: [...]} structure.\n if (typeof additionalData['consentPrompt'] === 'string') {\n try {\n const parsed: any = JSON.parse(additionalData['consentPrompt']);\n additionalData['consentPrompt'] = {purposes: Array.isArray(parsed) ? parsed : []};\n } catch {\n // Leave unparseable value as-is\n }\n }\n\n return {\n additionalData,\n components: transformComponents(response, t, resolveTranslations, meta),\n executionId: response.executionId,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;AAgFA,MAAM,yBAAyB,aAAuC;CACpE,MAAMA,0BAA+B,IAAI,KAAqB;AAE9D,KAAI,UAAU,MAAM,UAAU,MAAM,QAAQ,SAAS,KAAK,OAAO,CAC/D,UAAS,KAAK,OAAO,SAAS,UAAe;AAC3C,MAAI,MAAM,OAAO,MAAM,WACrB,SAAQ,IAAI,MAAM,KAAK,MAAM,WAAW;GAE1C;AAGJ,QAAO;;;;;;;;;;AAWT,MAAM,0BAA0B,aAAuC;CACrE,MAAMA,0BAA+B,IAAI,KAAqB;AAE9D,KAAI,UAAU,MAAM,WAAW,MAAM,QAAQ,SAAS,KAAK,QAAQ,CACjE,UAAS,KAAK,QAAQ,SAAS,WAAgB;AAC7C,MAAI,OAAO,OAAO,OAAO,SACvB,SAAQ,IAAI,OAAO,KAAK,OAAO,SAAS;GAE1C;AAGJ,QAAO;;;;;;;;;;;;;AAcT,MAAM,wBACJ,YACA,YACA,eACA,aAAoB,EAAE,KAEtB,WAAW,KAAK,cAAqC;CACnD,MAAMC,uBAA4B,EAAC,GAAG,WAAU;AAMhD,KAAI,qBAAqB,OAAO,WAAW,IAAI,qBAAqB,IAAI,CACtE,sBAAqB,MAAM,WAAW,IAAI,qBAAqB,IAAI;AAKrE,KAAI,qBAAqB,SAAS,YAAY,UAAU,IAAI;EAC1D,MAAMC,YAAiB,WAAW,MAAM,UAAe,MAAM,QAAQ,UAAU,GAAG;AAClF,MAAI,WAAW,QACb,sBAAqB,UAAU,UAAU,QAAQ,KAAK,QAAa;AACjE,OAAI,OAAO,QAAQ,SACjB,QAAO;IAAC,OAAO;IAAK,OAAO;IAAI;GAGjC,MAAMC,QAAgB,OAAO,IAAI,UAAU,WAAW,KAAK,UAAU,IAAI,MAAM,GAAG,OAAO,IAAI,SAAS,GAAG;AAGzG,UAAO;IAAC,OAFc,OAAO,IAAI,UAAU,WAAW,KAAK,UAAU,IAAI,MAAM,GAAG,OAAO,IAAI,SAAS,MAAM;IAE7F;IAAM;IACrB;;AAMN,KACE,qBAAqB,SAAS,YAC9B,qBAAqB,MACrB,cAAc,IAAI,qBAAqB,GAAG,CAE1C,sBAAqB,YAAY,cAAc,IAAI,qBAAqB,GAAG;AAI7E,KAAI,qBAAqB,cAAc,MAAM,QAAQ,qBAAqB,WAAW,CACnF,sBAAqB,aAAa,qBAChC,qBAAqB,YACrB,YACA,eACA,WACD;AAGH,QAAO;EACP;;;;;;;;;;;;AAaJ,MAAa,uBACX,UACA,GACA,sBAAsB,MACtB,SAC4B;AAC5B,KAAI,CAAC,UAAU,MAAM,MAAM,WACzB,QAAO,EAAE;CAGX,IAAI,EAAC,eAAc,SAAS,KAAK;CAGjC,MAAMC,aAAkC,sBAAsB,SAAS;CAGvE,MAAMC,gBAAqC,uBAAuB,SAAS;CAG3E,MAAMC,aAAoB,UAAU,MAAM,UAAU,EAAE;AAGtD,KAAI,WAAW,OAAO,KAAK,cAAc,OAAO,KAAK,WAAW,SAAS,EACvE,cAAa,qBAAqB,YAAY,YAAY,eAAe,WAAW;AAGtF,QAAO,sBAAsBC,2CAA2B,YAAY,GAAG,QAAW,KAAK,GAAG;;;;;;;;;;;;;AAc5F,MAAa,uBACX,OACA,GACA,kBAAkB,0BACP;AACX,KAAI,SAAS,OAAO,UAAU,YAAY,MAAM,OAAO;EACrD,MAAMC,YAAwC,MAAM;AAGpD,MAAI,WAAW,SAAS,KAAK;GAC3B,MAAMC,SAA6C,UAAU,QAAQ;GAErE,MAAMC,aAAqB,EAAE,UAAU,QAAQ,KAAK,OAAO;AAC3D,OAAI,cAAc,eAAe,UAAU,QAAQ,OAAO,yDAAgC,WAAW,CACnG,QAAO;GAIT,MAAM,YAAY,UAAU,UAAU,QAAQ;GAC9C,MAAMC,mBAA2B,EAAE,WAAW,OAAO;AACrD,OAAI,oBAAoB,qBAAqB,aAAa,yDAAgC,iBAAiB,CACzG,QAAO;;EAKX,MAAMC,WAA+B,WAAW,SAAS,gBAAgB,WAAW,aAAa;AACjG,MAAI,SACF,QAAO;;AAKX,KAAI,SAAS,OAAO,UAAU,YAAY,MAAM,cAC9C,QAAO,MAAM;AAGf,KAAI,iBAAiB,SAAS,MAAM,QAClC,QAAO,MAAM;AAGf,QAAO,EAAE,gBAAgB;;;;;;AAU3B,MAAa,oBAAoB,QAAiB,MAAkC;AAClF,KAAI,OAAO,WAAW,WACpB,QAAQ,OAA4B,EAAE;AAGxC,QAAO,kBAAkB,SAAS,OAAO,UAAU,SAAS,IAAI,MAAM,oBAAoB,QAAQ,EAAE,CAAC;;;;;;;;;;;AAYvG,MAAa,yBACX,UACA,GACA,kBAAkB,0BACA;AAClB,KAAI,UAAU,eAAe,QAC3B,QAAO,oBAAoB,UAAU,GAAG,gBAAgB;AAG1D,QAAO;;;;;;;;;;;;AAaT,MAAa,yBACX,UACA,GACA,UAAgC,EAAE,EAClC,SAKG;CACH,MAAM,EAAC,eAAe,MAAM,kBAAkB,uBAAuB,sBAAsB,SAAQ;AAKnG,KAFoC,sBAAsB,UAAU,GAAG,gBAAgB,IAEnE,aAElB,OAAM;CAGR,MAAMC,iBAAuC,UAAU,MAAM,kBAA0C,EAAE;AAIzG,KAAI,OAAO,eAAe,qBAAqB,SAC7C,KAAI;EACF,MAAMC,SAAc,KAAK,MAAM,eAAe,iBAAiB;AAC/D,iBAAe,mBAAmB,EAAC,UAAU,MAAM,QAAQ,OAAO,GAAG,SAAS,EAAE,EAAC;SAC3E;AAKV,QAAO;EACL;EACA,YAAY,oBAAoB,UAAU,GAAG,qBAAqB,KAAK;EACvE,aAAa,SAAS;EACvB"}
@@ -0,0 +1,24 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let __thunderid_browser = require("@thunderid/browser");
3
+ __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
4
+
5
+ //#region src/utils/getOrganizationUnitSwitchErrorKey.ts
6
+ /**
7
+ * The translation key for a failed organization unit switch, by the error's code. The server answers an
8
+ * unknown unit and a unit the application cannot be used from alike (`unauthorized_client`), so they
9
+ * share one message. Every key takes the unit's `{name}`.
10
+ *
11
+ * @param error - The error `switchOrganizationUnit` rejected with.
12
+ * @returns The `organization_unit.switcher.error.*` key to show.
13
+ */
14
+ const getOrganizationUnitSwitchErrorKey = (error) => {
15
+ const code = error?.code;
16
+ if (code === __thunderid_browser.OrganizationUnitSwitchErrorCodes.UnauthorizedClient) return "organization_unit.switcher.error.unauthorized";
17
+ if (code === __thunderid_browser.OrganizationUnitSwitchErrorCodes.InteractionRequired) return "organization_unit.switcher.error.interaction_required";
18
+ return "organization_unit.switcher.error.switch";
19
+ };
20
+ var getOrganizationUnitSwitchErrorKey_default = getOrganizationUnitSwitchErrorKey;
21
+
22
+ //#endregion
23
+ exports.default = getOrganizationUnitSwitchErrorKey_default;
24
+ //# sourceMappingURL=getOrganizationUnitSwitchErrorKey.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrganizationUnitSwitchErrorKey.cjs","names":["code: unknown","OrganizationUnitSwitchErrorCodes"],"sources":["../../../src/utils/getOrganizationUnitSwitchErrorKey.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {OrganizationUnitSwitchErrorCodes} from '@thunderid/browser';\n\n/**\n * The translation key for a failed organization unit switch, by the error's code. The server answers an\n * unknown unit and a unit the application cannot be used from alike (`unauthorized_client`), so they\n * share one message. Every key takes the unit's `{name}`.\n *\n * @param error - The error `switchOrganizationUnit` rejected with.\n * @returns The `organization_unit.switcher.error.*` key to show.\n */\nconst getOrganizationUnitSwitchErrorKey = (error: unknown): string => {\n const code: unknown = (error as {code?: unknown} | null)?.code;\n\n if (code === OrganizationUnitSwitchErrorCodes.UnauthorizedClient) {\n return 'organization_unit.switcher.error.unauthorized';\n }\n\n if (code === OrganizationUnitSwitchErrorCodes.InteractionRequired) {\n return 'organization_unit.switcher.error.interaction_required';\n }\n\n return 'organization_unit.switcher.error.switch';\n};\n\nexport default getOrganizationUnitSwitchErrorKey;\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,qCAAqC,UAA2B;CACpE,MAAMA,OAAiB,OAAmC;AAE1D,KAAI,SAASC,qDAAiC,mBAC5C,QAAO;AAGT,KAAI,SAASA,qDAAiC,oBAC5C,QAAO;AAGT,QAAO;;AAGT,gDAAe"}
@@ -0,0 +1,85 @@
1
+ import { AccessibleOrganizationUnit, Preferences } from '@thunderid/browser';
2
+ import { FC, ReactNode } from 'react';
3
+ export interface OrganizationUnitSwitcherRenderProps {
4
+ /**
5
+ * Identifier of the unit the session is in, or `null` when it is not known.
6
+ */
7
+ current: string | null;
8
+ /**
9
+ * Name of the unit the session is in, from the page or the session, or `null` when it is not known.
10
+ */
11
+ currentName: string | null;
12
+ /**
13
+ * A translated message for the last failure, or `null`.
14
+ */
15
+ error: string | null;
16
+ /**
17
+ * Whether the units are loading.
18
+ */
19
+ isLoading: boolean;
20
+ /**
21
+ * The page size.
22
+ */
23
+ limit: number;
24
+ /**
25
+ * The zero-based offset of the page.
26
+ */
27
+ offset: number;
28
+ /**
29
+ * Moves to the page that starts at `offset`.
30
+ */
31
+ onPageChange: (offset: number) => void;
32
+ /**
33
+ * Switches to `unit` (or hands it to the app's `onSelect`).
34
+ */
35
+ onSwitch: (unit: AccessibleOrganizationUnit) => void;
36
+ /**
37
+ * The units of the page.
38
+ */
39
+ organizationUnits: AccessibleOrganizationUnit[];
40
+ /**
41
+ * Identifier of the unit a switch is in progress to, or `null`.
42
+ */
43
+ switchingId: string | null;
44
+ /**
45
+ * Number of units the listing matches.
46
+ */
47
+ totalResults: number;
48
+ }
49
+ export interface BaseOrganizationUnitSwitcherProps extends Partial<OrganizationUnitSwitcherRenderProps> {
50
+ /**
51
+ * Custom render. Replaces the built-in UI and receives the units, the current one, the loading and
52
+ * error state, the paging and `onSwitch`.
53
+ */
54
+ children?: (props: OrganizationUnitSwitcherRenderProps) => ReactNode;
55
+ /**
56
+ * Additional CSS class names.
57
+ */
58
+ className?: string;
59
+ /**
60
+ * Component-level preference overrides, including i18n.
61
+ */
62
+ preferences?: Preferences;
63
+ /**
64
+ * Overrides the small label above the current unit. Pass an empty string to omit it.
65
+ */
66
+ title?: string;
67
+ }
68
+ /**
69
+ * Presentational organization unit picker: a field showing the current unit under a small label, which
70
+ * opens a menu of the units the signed-in user can access. Holds no SDK state and makes no request: pass
71
+ * the units and the callbacks. Use {@link OrganizationUnitSwitcher} for the variant wired to the SDK.
72
+ *
73
+ * @example
74
+ * ```tsx
75
+ * <BaseOrganizationUnitSwitcher
76
+ * organizationUnits={units}
77
+ * current={currentId}
78
+ * totalResults={units.length}
79
+ * onSwitch={(unit) => switchTo(unit.id)}
80
+ * />
81
+ * ```
82
+ */
83
+ declare const BaseOrganizationUnitSwitcher: FC<BaseOrganizationUnitSwitcherProps>;
84
+ export default BaseOrganizationUnitSwitcher;
85
+ //# sourceMappingURL=BaseOrganizationUnitSwitcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseOrganizationUnitSwitcher.d.ts","sourceRoot":"","sources":["../../../../src/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAC,0BAA0B,EAAE,WAAW,EAAgC,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAC,EAAE,EAAgB,SAAS,EAA0B,MAAM,OAAO,CAAC;AAY3E,MAAM,WAAW,mCAAmC;IAClD;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACrD;;OAEG;IACH,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;IAChD;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iCAAkC,SAAQ,OAAO,CAAC,mCAAmC,CAAC;IACrG;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,SAAS,CAAC;IACrE;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,4BAA4B,EAAE,EAAE,CAAC,iCAAiC,CAsOvE,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,209 @@
1
+ import { cx } from "../../../styles/emotion.js";
2
+ import useTheme_default from "../../../contexts/Theme/useTheme.js";
3
+ import useTranslation_default from "../../../hooks/useTranslation.js";
4
+ import Spinner_default from "../../primitives/Spinner/Spinner.js";
5
+ import Button_default from "../../primitives/Button/Button.js";
6
+ import Check_default from "../../primitives/Icons/Check.js";
7
+ import BaseOrganizationUnitSwitcher_styles_default from "./BaseOrganizationUnitSwitcher.styles.js";
8
+ import ChevronDown_default from "../../primitives/Icons/ChevronDown.js";
9
+ import { bem, withVendorCSSClassPrefix } from "@thunderid/browser";
10
+ import { useId, useRef, useState } from "react";
11
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
+ import { FloatingFocusManager, FloatingPortal, autoUpdate, flip, offset, shift, size, useClick, useDismiss, useFloating, useInteractions, useListNavigation } from "@floating-ui/react";
13
+
14
+ //#region src/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.tsx
15
+ const BLOCK = "organization-unit-switcher";
16
+ /**
17
+ * Presentational organization unit picker: a field showing the current unit under a small label, which
18
+ * opens a menu of the units the signed-in user can access. Holds no SDK state and makes no request: pass
19
+ * the units and the callbacks. Use {@link OrganizationUnitSwitcher} for the variant wired to the SDK.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <BaseOrganizationUnitSwitcher
24
+ * organizationUnits={units}
25
+ * current={currentId}
26
+ * totalResults={units.length}
27
+ * onSwitch={(unit) => switchTo(unit.id)}
28
+ * />
29
+ * ```
30
+ */
31
+ const BaseOrganizationUnitSwitcher = ({ children = void 0, className = "", current = null, currentName = null, error = null, isLoading = false, limit = 10, offset: offset$1 = 0, onPageChange = () => void 0, onSwitch = () => void 0, organizationUnits = [], preferences = void 0, switchingId = null, title = void 0, totalResults = void 0 }) => {
32
+ const { theme, colorScheme } = useTheme_default();
33
+ const styles = BaseOrganizationUnitSwitcher_styles_default(theme, colorScheme);
34
+ const { t } = useTranslation_default(preferences?.i18n);
35
+ const [isOpen, setIsOpen] = useState(false);
36
+ const [activeIndex, setActiveIndex] = useState(null);
37
+ const listRef = useRef([]);
38
+ const listId = useId();
39
+ const isSwitching = switchingId !== null;
40
+ const open = isOpen && !isSwitching;
41
+ const currentIndex = organizationUnits.findIndex((unit) => unit.id === current);
42
+ const resolvedCurrentName = organizationUnits[currentIndex]?.name ?? currentName;
43
+ const resolvedTotal = totalResults ?? organizationUnits.length;
44
+ const { context, floatingStyles, refs } = useFloating({
45
+ middleware: [
46
+ offset(4),
47
+ flip(),
48
+ shift({ padding: 8 }),
49
+ size({ apply({ elements, rects }) {
50
+ elements.floating.style.minWidth = `${rects.reference.width}px`;
51
+ } })
52
+ ],
53
+ onOpenChange: setIsOpen,
54
+ open,
55
+ placement: "bottom-start",
56
+ whileElementsMounted: autoUpdate
57
+ });
58
+ const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
59
+ useClick(context, { enabled: !isSwitching }),
60
+ useDismiss(context),
61
+ useListNavigation(context, {
62
+ activeIndex,
63
+ listRef,
64
+ loop: true,
65
+ onNavigate: setActiveIndex,
66
+ selectedIndex: currentIndex >= 0 ? currentIndex : null
67
+ })
68
+ ]);
69
+ const renderProps = {
70
+ current,
71
+ currentName: resolvedCurrentName,
72
+ error,
73
+ isLoading,
74
+ limit,
75
+ offset: offset$1,
76
+ onPageChange,
77
+ onSwitch,
78
+ organizationUnits,
79
+ switchingId,
80
+ totalResults: resolvedTotal
81
+ };
82
+ if (children) return /* @__PURE__ */ jsx(Fragment$1, { children: children(renderProps) });
83
+ const label = title ?? t("organization_unit.switcher.label");
84
+ const hasPrevious = offset$1 > 0;
85
+ const hasNext = offset$1 + organizationUnits.length < resolvedTotal;
86
+ const fieldValue = () => {
87
+ if (isSwitching) return t("organization_unit.switcher.switching", { name: organizationUnits.find((unit) => unit.id === switchingId)?.name ?? switchingId ?? "" });
88
+ if (resolvedCurrentName) return resolvedCurrentName;
89
+ return isLoading ? t("organization_unit.switcher.loading") : t("organization_unit.switcher.placeholder");
90
+ };
91
+ const pick = (unit) => {
92
+ setIsOpen(false);
93
+ if (unit.id !== current) onSwitch(unit);
94
+ };
95
+ const menuContent = () => {
96
+ if (isLoading) return /* @__PURE__ */ jsxs("div", {
97
+ role: "status",
98
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "loading")), styles["status"]),
99
+ children: [/* @__PURE__ */ jsx("span", {
100
+ "aria-hidden": "true",
101
+ children: /* @__PURE__ */ jsx(Spinner_default, { size: "small" })
102
+ }), /* @__PURE__ */ jsx("span", { children: t("organization_unit.switcher.loading") })]
103
+ });
104
+ if (organizationUnits.length === 0) return /* @__PURE__ */ jsx("p", {
105
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "empty")), styles["status"]),
106
+ children: error ?? t("organization_unit.switcher.empty")
107
+ });
108
+ return /* @__PURE__ */ jsx("div", {
109
+ id: listId,
110
+ role: "listbox",
111
+ "aria-label": label || t("organization_unit.switcher.label"),
112
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "list")), styles["list"]),
113
+ children: organizationUnits.map((unit, index) => {
114
+ const isCurrent = unit.id === current;
115
+ return /* @__PURE__ */ jsxs("button", {
116
+ ref: (node) => {
117
+ listRef.current[index] = node;
118
+ },
119
+ type: "button",
120
+ role: "option",
121
+ "aria-selected": isCurrent,
122
+ tabIndex: index === activeIndex ? 0 : -1,
123
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "option", isCurrent ? "current" : void 0)), styles["option"], isCurrent ? styles["optionCurrent"] : ""),
124
+ ...getItemProps({ onClick: () => pick(unit) }),
125
+ children: [/* @__PURE__ */ jsxs("span", {
126
+ className: styles["optionText"],
127
+ children: [/* @__PURE__ */ jsx("span", {
128
+ className: styles["optionName"],
129
+ children: unit.name
130
+ }), /* @__PURE__ */ jsx("span", {
131
+ className: styles["optionHandle"],
132
+ children: unit.handle
133
+ })]
134
+ }), isCurrent && /* @__PURE__ */ jsx("span", {
135
+ "aria-hidden": "true",
136
+ className: styles["check"],
137
+ children: /* @__PURE__ */ jsx(Check_default, {})
138
+ })]
139
+ }, unit.id);
140
+ })
141
+ });
142
+ };
143
+ return /* @__PURE__ */ jsxs("div", {
144
+ className: cx(withVendorCSSClassPrefix(BLOCK), styles["root"], className),
145
+ children: [
146
+ /* @__PURE__ */ jsxs("button", {
147
+ ref: refs.setReference,
148
+ type: "button",
149
+ "aria-controls": open ? listId : void 0,
150
+ "aria-expanded": open,
151
+ "aria-haspopup": "listbox",
152
+ disabled: isSwitching,
153
+ ...getReferenceProps(),
154
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "field")), styles["field"]),
155
+ children: [/* @__PURE__ */ jsxs("span", {
156
+ className: styles["fieldText"],
157
+ children: [label && /* @__PURE__ */ jsx("span", {
158
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "label")), styles["label"]),
159
+ children: label
160
+ }), /* @__PURE__ */ jsx("span", {
161
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "value")), styles["value"]),
162
+ children: fieldValue()
163
+ })]
164
+ }), /* @__PURE__ */ jsx("span", {
165
+ "aria-hidden": "true",
166
+ className: cx(styles["chevron"], open ? styles["chevronOpen"] : ""),
167
+ children: isSwitching ? /* @__PURE__ */ jsx(Spinner_default, { size: "small" }) : /* @__PURE__ */ jsx(ChevronDown_default, {})
168
+ })]
169
+ }),
170
+ error && /* @__PURE__ */ jsx("div", {
171
+ role: "alert",
172
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "error")), styles["error"]),
173
+ children: error
174
+ }),
175
+ open && /* @__PURE__ */ jsx(FloatingPortal, { children: /* @__PURE__ */ jsx(FloatingFocusManager, {
176
+ context,
177
+ initialFocus: -1,
178
+ modal: false,
179
+ children: /* @__PURE__ */ jsxs("div", {
180
+ ref: refs.setFloating,
181
+ style: floatingStyles,
182
+ ...getFloatingProps(),
183
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "menu")), styles["menu"]),
184
+ children: [menuContent(), (hasPrevious || hasNext) && /* @__PURE__ */ jsxs("div", {
185
+ className: cx(withVendorCSSClassPrefix(bem(BLOCK, "pagination")), styles["pagination"]),
186
+ children: [/* @__PURE__ */ jsx(Button_default, {
187
+ size: "small",
188
+ variant: "text",
189
+ disabled: !hasPrevious || isLoading,
190
+ onClick: () => onPageChange(Math.max(0, offset$1 - limit)),
191
+ children: t("organization_unit.switcher.previous")
192
+ }), /* @__PURE__ */ jsx(Button_default, {
193
+ size: "small",
194
+ variant: "text",
195
+ disabled: !hasNext || isLoading,
196
+ onClick: () => onPageChange(offset$1 + limit),
197
+ children: t("organization_unit.switcher.next")
198
+ })]
199
+ })]
200
+ })
201
+ }) })
202
+ ]
203
+ });
204
+ };
205
+ var BaseOrganizationUnitSwitcher_default = BaseOrganizationUnitSwitcher;
206
+
207
+ //#endregion
208
+ export { BaseOrganizationUnitSwitcher_default as default };
209
+ //# sourceMappingURL=BaseOrganizationUnitSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseOrganizationUnitSwitcher.js","names":["BaseOrganizationUnitSwitcher: FC<BaseOrganizationUnitSwitcherProps>","useTheme","styles: Record<string, string>","useStyles","useTranslation","listId: string","isSwitching: boolean","open: boolean","currentIndex: number","resolvedCurrentName: string | null","resolvedTotal: number","floatingOffset","renderProps: OrganizationUnitSwitcherRenderProps","label: string","hasPrevious: boolean","offset","hasNext: boolean","Spinner","isCurrent: boolean","Check","ChevronDown","Button"],"sources":["../../../../src/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingPortal,\n type MiddlewareState,\n offset as floatingOffset,\n shift,\n size,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n} from '@floating-ui/react';\nimport {AccessibleOrganizationUnit, Preferences, bem, withVendorCSSClassPrefix} from '@thunderid/browser';\nimport {FC, ReactElement, ReactNode, useId, useRef, useState} from 'react';\nimport useStyles from './BaseOrganizationUnitSwitcher.styles';\nimport useTheme from '../../../contexts/Theme/useTheme';\nimport useTranslation from '../../../hooks/useTranslation';\nimport {cx} from '../../../styles/emotion';\nimport Button from '../../primitives/Button/Button';\nimport Check from '../../primitives/Icons/Check';\nimport ChevronDown from '../../primitives/Icons/ChevronDown';\nimport Spinner from '../../primitives/Spinner/Spinner';\n\nconst BLOCK = 'organization-unit-switcher';\n\nexport interface OrganizationUnitSwitcherRenderProps {\n /**\n * Identifier of the unit the session is in, or `null` when it is not known.\n */\n current: string | null;\n /**\n * Name of the unit the session is in, from the page or the session, or `null` when it is not known.\n */\n currentName: string | null;\n /**\n * A translated message for the last failure, or `null`.\n */\n error: string | null;\n /**\n * Whether the units are loading.\n */\n isLoading: boolean;\n /**\n * The page size.\n */\n limit: number;\n /**\n * The zero-based offset of the page.\n */\n offset: number;\n /**\n * Moves to the page that starts at `offset`.\n */\n onPageChange: (offset: number) => void;\n /**\n * Switches to `unit` (or hands it to the app's `onSelect`).\n */\n onSwitch: (unit: AccessibleOrganizationUnit) => void;\n /**\n * The units of the page.\n */\n organizationUnits: AccessibleOrganizationUnit[];\n /**\n * Identifier of the unit a switch is in progress to, or `null`.\n */\n switchingId: string | null;\n /**\n * Number of units the listing matches.\n */\n totalResults: number;\n}\n\nexport interface BaseOrganizationUnitSwitcherProps extends Partial<OrganizationUnitSwitcherRenderProps> {\n /**\n * Custom render. Replaces the built-in UI and receives the units, the current one, the loading and\n * error state, the paging and `onSwitch`.\n */\n children?: (props: OrganizationUnitSwitcherRenderProps) => ReactNode;\n /**\n * Additional CSS class names.\n */\n className?: string;\n /**\n * Component-level preference overrides, including i18n.\n */\n preferences?: Preferences;\n /**\n * Overrides the small label above the current unit. Pass an empty string to omit it.\n */\n title?: string;\n}\n\n/**\n * Presentational organization unit picker: a field showing the current unit under a small label, which\n * opens a menu of the units the signed-in user can access. Holds no SDK state and makes no request: pass\n * the units and the callbacks. Use {@link OrganizationUnitSwitcher} for the variant wired to the SDK.\n *\n * @example\n * ```tsx\n * <BaseOrganizationUnitSwitcher\n * organizationUnits={units}\n * current={currentId}\n * totalResults={units.length}\n * onSwitch={(unit) => switchTo(unit.id)}\n * />\n * ```\n */\nconst BaseOrganizationUnitSwitcher: FC<BaseOrganizationUnitSwitcherProps> = ({\n children = undefined,\n className = '',\n current = null,\n currentName = null,\n error = null,\n isLoading = false,\n limit = 10,\n offset = 0,\n onPageChange = (): void => undefined,\n onSwitch = (): void => undefined,\n organizationUnits = [],\n preferences = undefined,\n switchingId = null,\n title = undefined,\n totalResults = undefined,\n}: BaseOrganizationUnitSwitcherProps): ReactElement => {\n const {theme, colorScheme}: ReturnType<typeof useTheme> = useTheme();\n const styles: Record<string, string> = useStyles(theme, colorScheme);\n const {t} = useTranslation(preferences?.i18n);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const listRef = useRef<(HTMLElement | null)[]>([]);\n const listId: string = useId();\n\n const isSwitching: boolean = switchingId !== null;\n const open: boolean = isOpen && !isSwitching;\n const currentIndex: number = organizationUnits.findIndex((unit: AccessibleOrganizationUnit) => unit.id === current);\n const resolvedCurrentName: string | null = organizationUnits[currentIndex]?.name ?? currentName;\n const resolvedTotal: number = totalResults ?? organizationUnits.length;\n\n const {context, floatingStyles, refs} = useFloating({\n middleware: [\n floatingOffset(4),\n flip(),\n shift({padding: 8}),\n size({\n apply({elements, rects}: MiddlewareState): void {\n elements.floating.style.minWidth = `${rects.reference.width}px`;\n },\n }),\n ],\n onOpenChange: setIsOpen,\n open,\n placement: 'bottom-start',\n whileElementsMounted: autoUpdate,\n });\n const click: ReturnType<typeof useClick> = useClick(context, {enabled: !isSwitching});\n const dismiss: ReturnType<typeof useDismiss> = useDismiss(context);\n const listNavigation: ReturnType<typeof useListNavigation> = useListNavigation(context, {\n activeIndex,\n listRef,\n loop: true,\n onNavigate: setActiveIndex,\n selectedIndex: currentIndex >= 0 ? currentIndex : null,\n });\n const {getFloatingProps, getItemProps, getReferenceProps} = useInteractions([click, dismiss, listNavigation]);\n\n const renderProps: OrganizationUnitSwitcherRenderProps = {\n current,\n currentName: resolvedCurrentName,\n error,\n isLoading,\n limit,\n offset,\n onPageChange,\n onSwitch,\n organizationUnits,\n switchingId,\n totalResults: resolvedTotal,\n };\n\n if (children) {\n return <>{children(renderProps)}</>;\n }\n\n const label: string = title ?? t('organization_unit.switcher.label');\n const hasPrevious: boolean = offset > 0;\n const hasNext: boolean = offset + organizationUnits.length < resolvedTotal;\n\n const fieldValue = (): string => {\n if (isSwitching) {\n const target: AccessibleOrganizationUnit | undefined = organizationUnits.find(\n (unit: AccessibleOrganizationUnit) => unit.id === switchingId,\n );\n\n return t('organization_unit.switcher.switching', {name: target?.name ?? switchingId ?? ''});\n }\n\n if (resolvedCurrentName) {\n return resolvedCurrentName;\n }\n\n return isLoading ? t('organization_unit.switcher.loading') : t('organization_unit.switcher.placeholder');\n };\n\n const pick = (unit: AccessibleOrganizationUnit): void => {\n setIsOpen(false);\n\n if (unit.id !== current) {\n onSwitch(unit);\n }\n };\n\n const menuContent = (): ReactNode => {\n if (isLoading) {\n return (\n <div role=\"status\" className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'loading')), styles['status'])}>\n <span aria-hidden=\"true\">\n <Spinner size=\"small\" />\n </span>\n <span>{t('organization_unit.switcher.loading')}</span>\n </div>\n );\n }\n\n if (organizationUnits.length === 0) {\n return (\n <p className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'empty')), styles['status'])}>\n {error ?? t('organization_unit.switcher.empty')}\n </p>\n );\n }\n\n return (\n <div\n id={listId}\n role=\"listbox\"\n aria-label={label || t('organization_unit.switcher.label')}\n className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'list')), styles['list'])}\n >\n {organizationUnits.map((unit: AccessibleOrganizationUnit, index: number) => {\n const isCurrent: boolean = unit.id === current;\n\n return (\n <button\n key={unit.id}\n ref={(node: HTMLButtonElement | null): void => {\n listRef.current[index] = node;\n }}\n type=\"button\"\n role=\"option\"\n aria-selected={isCurrent}\n tabIndex={index === activeIndex ? 0 : -1}\n className={cx(\n withVendorCSSClassPrefix(bem(BLOCK, 'option', isCurrent ? 'current' : undefined)),\n styles['option'],\n isCurrent ? styles['optionCurrent'] : '',\n )}\n {...getItemProps({onClick: (): void => pick(unit)})}\n >\n <span className={styles['optionText']}>\n <span className={styles['optionName']}>{unit.name}</span>\n <span className={styles['optionHandle']}>{unit.handle}</span>\n </span>\n {isCurrent && (\n <span aria-hidden=\"true\" className={styles['check']}>\n <Check />\n </span>\n )}\n </button>\n );\n })}\n </div>\n );\n };\n\n return (\n <div className={cx(withVendorCSSClassPrefix(BLOCK), styles['root'], className)}>\n <button\n ref={refs.setReference}\n type=\"button\"\n aria-controls={open ? listId : undefined}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n disabled={isSwitching}\n {...getReferenceProps()}\n className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'field')), styles['field'])}\n >\n <span className={styles['fieldText']}>\n {label && <span className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'label')), styles['label'])}>{label}</span>}\n <span className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'value')), styles['value'])}>{fieldValue()}</span>\n </span>\n <span aria-hidden=\"true\" className={cx(styles['chevron'], open ? styles['chevronOpen'] : '')}>\n {isSwitching ? <Spinner size=\"small\" /> : <ChevronDown />}\n </span>\n </button>\n\n {error && (\n <div role=\"alert\" className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'error')), styles['error'])}>\n {error}\n </div>\n )}\n\n {open && (\n <FloatingPortal>\n <FloatingFocusManager context={context} initialFocus={-1} modal={false}>\n <div\n ref={refs.setFloating}\n style={floatingStyles}\n {...getFloatingProps()}\n className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'menu')), styles['menu'])}\n >\n {menuContent()}\n {(hasPrevious || hasNext) && (\n <div className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'pagination')), styles['pagination'])}>\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={!hasPrevious || isLoading}\n onClick={(): void => onPageChange(Math.max(0, offset - limit))}\n >\n {t('organization_unit.switcher.previous')}\n </Button>\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={!hasNext || isLoading}\n onClick={(): void => onPageChange(offset + limit)}\n >\n {t('organization_unit.switcher.next')}\n </Button>\n </div>\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </div>\n );\n};\n\nexport default BaseOrganizationUnitSwitcher;\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Theme } from '@thunderid/browser';
2
+ /**
3
+ * Creates styles for the BaseOrganizationUnitSwitcher component.
4
+ *
5
+ * @param theme - The theme object containing design tokens
6
+ * @param colorScheme - The current color scheme (used for memoization)
7
+ * @returns Object containing CSS class names for component styling
8
+ */
9
+ declare const useStyles: (theme: Theme, colorScheme: string) => Record<string, string>;
10
+ export default useStyles;
11
+ //# sourceMappingURL=BaseOrganizationUnitSwitcher.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseOrganizationUnitSwitcher.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AAGzC;;;;;;GAMG;AACH,QAAA,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,aAAa,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CA4L3E,CAAC;AAEF,eAAe,SAAS,CAAC"}