@thunderid/react 1.14.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 (621) 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/cjs/ThunderIDReactClient.cjs +6 -2
  9. package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
  10. package/dist/cjs/api/account/getAccessibleOrganizationUnits.cjs +26 -0
  11. package/dist/cjs/api/account/getAccessibleOrganizationUnits.cjs.map +1 -0
  12. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.cjs +214 -0
  13. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.cjs.map +1 -0
  14. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.cjs +184 -0
  15. package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.cjs.map +1 -0
  16. package/dist/cjs/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs +139 -0
  17. package/dist/cjs/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs.map +1 -0
  18. package/dist/cjs/components/auth/SignIn/SignIn.cjs +23 -20
  19. package/dist/cjs/components/auth/SignIn/SignIn.cjs.map +1 -1
  20. package/dist/cjs/components/auth/SignUp/BaseSignUp.cjs +13 -9
  21. package/dist/cjs/components/auth/SignUp/BaseSignUp.cjs.map +1 -1
  22. package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs +2 -2
  23. package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs.map +1 -1
  24. package/dist/cjs/components/common/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
  25. package/dist/cjs/components/{admin → management}/AgentCreate/AgentCreate.cjs +8 -7
  26. package/dist/cjs/components/management/AgentCreate/AgentCreate.cjs.map +1 -0
  27. package/dist/cjs/components/{admin → management}/AgentCreate/BaseAgentCreate.cjs +1 -1
  28. package/dist/cjs/components/management/AgentCreate/BaseAgentCreate.cjs.map +1 -0
  29. package/dist/cjs/components/{admin → management}/AgentDetails/AgentDetails.cjs +1 -1
  30. package/dist/cjs/components/management/AgentDetails/AgentDetails.cjs.map +1 -0
  31. package/dist/cjs/components/{admin → management}/AgentDetails/BaseAgentDetails.cjs +1 -1
  32. package/dist/cjs/components/management/AgentDetails/BaseAgentDetails.cjs.map +1 -0
  33. package/dist/cjs/components/{admin → management}/AgentList/AgentList.cjs +11 -6
  34. package/dist/cjs/components/management/AgentList/AgentList.cjs.map +1 -0
  35. package/dist/cjs/components/{admin → management}/AgentList/BaseAgentList.cjs +1 -1
  36. package/dist/cjs/components/management/AgentList/BaseAgentList.cjs.map +1 -0
  37. package/dist/cjs/components/{admin → management}/ApplicationCreate/ApplicationCreate.cjs +10 -5
  38. package/dist/cjs/components/management/ApplicationCreate/ApplicationCreate.cjs.map +1 -0
  39. package/dist/cjs/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.cjs +1 -1
  40. package/dist/cjs/components/management/ApplicationCreate/BaseApplicationCreate.cjs.map +1 -0
  41. package/dist/cjs/components/{admin → management}/ApplicationDetails/ApplicationDetails.cjs +1 -1
  42. package/dist/cjs/components/management/ApplicationDetails/ApplicationDetails.cjs.map +1 -0
  43. package/dist/cjs/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.cjs +1 -1
  44. package/dist/cjs/components/management/ApplicationDetails/BaseApplicationDetails.cjs.map +1 -0
  45. package/dist/cjs/components/{admin → management}/ApplicationList/ApplicationList.cjs +9 -4
  46. package/dist/cjs/components/management/ApplicationList/ApplicationList.cjs.map +1 -0
  47. package/dist/cjs/components/{admin → management}/ApplicationList/BaseApplicationList.cjs +1 -1
  48. package/dist/cjs/components/management/ApplicationList/BaseApplicationList.cjs.map +1 -0
  49. package/dist/cjs/components/{admin → management}/GroupCreate/BaseGroupCreate.cjs +1 -1
  50. package/dist/cjs/components/management/GroupCreate/BaseGroupCreate.cjs.map +1 -0
  51. package/dist/cjs/components/{admin → management}/GroupCreate/GroupCreate.cjs +1 -1
  52. package/dist/cjs/components/management/GroupCreate/GroupCreate.cjs.map +1 -0
  53. package/dist/cjs/components/management/GroupDetails/BaseGroupDetails.cjs +86 -0
  54. package/dist/cjs/components/management/GroupDetails/BaseGroupDetails.cjs.map +1 -0
  55. package/dist/cjs/components/management/GroupDetails/GroupDetails.cjs +60 -0
  56. package/dist/cjs/components/management/GroupDetails/GroupDetails.cjs.map +1 -0
  57. package/dist/cjs/components/{admin → management}/GroupList/BaseGroupList.cjs +1 -1
  58. package/dist/cjs/components/management/GroupList/BaseGroupList.cjs.map +1 -0
  59. package/dist/cjs/components/{admin → management}/GroupList/GroupList.cjs +1 -1
  60. package/dist/cjs/components/management/GroupList/GroupList.cjs.map +1 -0
  61. package/dist/cjs/components/{admin → management}/GroupMembers/BaseGroupMembers.cjs +1 -1
  62. package/dist/cjs/components/management/GroupMembers/BaseGroupMembers.cjs.map +1 -0
  63. package/dist/cjs/components/{admin → management}/GroupMembers/GroupMembers.cjs +1 -1
  64. package/dist/cjs/components/management/GroupMembers/GroupMembers.cjs.map +1 -0
  65. package/dist/cjs/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.cjs +140 -0
  66. package/dist/cjs/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.cjs.map +1 -0
  67. package/dist/cjs/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs +83 -0
  68. package/dist/cjs/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs.map +1 -0
  69. package/dist/cjs/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.cjs +276 -0
  70. package/dist/cjs/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.cjs.map +1 -0
  71. package/dist/cjs/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs +142 -0
  72. package/dist/cjs/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs.map +1 -0
  73. package/dist/cjs/components/management/OrganizationUnitList/BaseOrganizationUnitList.cjs +78 -0
  74. package/dist/cjs/components/management/OrganizationUnitList/BaseOrganizationUnitList.cjs.map +1 -0
  75. package/dist/cjs/components/management/OrganizationUnitList/OrganizationUnitList.cjs +69 -0
  76. package/dist/cjs/components/management/OrganizationUnitList/OrganizationUnitList.cjs.map +1 -0
  77. package/dist/cjs/components/management/ProjectCreate/BaseProjectCreate.cjs +116 -0
  78. package/dist/cjs/components/management/ProjectCreate/BaseProjectCreate.cjs.map +1 -0
  79. package/dist/cjs/components/management/ProjectCreate/ProjectCreate.cjs +43 -0
  80. package/dist/cjs/components/management/ProjectCreate/ProjectCreate.cjs.map +1 -0
  81. package/dist/cjs/components/management/ProjectDetails/BaseProjectDetails.cjs +172 -0
  82. package/dist/cjs/components/management/ProjectDetails/BaseProjectDetails.cjs.map +1 -0
  83. package/dist/cjs/components/management/ProjectDetails/ProjectDetails.cjs +68 -0
  84. package/dist/cjs/components/management/ProjectDetails/ProjectDetails.cjs.map +1 -0
  85. package/dist/cjs/components/management/ProjectList/BaseProjectList.cjs +78 -0
  86. package/dist/cjs/components/management/ProjectList/BaseProjectList.cjs.map +1 -0
  87. package/dist/cjs/components/management/ProjectList/ProjectList.cjs +51 -0
  88. package/dist/cjs/components/management/ProjectList/ProjectList.cjs.map +1 -0
  89. package/dist/cjs/components/management/ProjectSwitcher/BaseProjectSwitcher.cjs +58 -0
  90. package/dist/cjs/components/management/ProjectSwitcher/BaseProjectSwitcher.cjs.map +1 -0
  91. package/dist/cjs/components/management/ProjectSwitcher/ProjectSwitcher.cjs +72 -0
  92. package/dist/cjs/components/management/ProjectSwitcher/ProjectSwitcher.cjs.map +1 -0
  93. package/dist/cjs/components/{admin → management}/RoleAssignments/BaseRoleAssignments.cjs +1 -1
  94. package/dist/cjs/components/management/RoleAssignments/BaseRoleAssignments.cjs.map +1 -0
  95. package/dist/cjs/components/{admin → management}/RoleAssignments/RoleAssignments.cjs +1 -1
  96. package/dist/cjs/components/management/RoleAssignments/RoleAssignments.cjs.map +1 -0
  97. package/dist/cjs/components/{admin → management}/RoleCreate/BaseRoleCreate.cjs +1 -1
  98. package/dist/cjs/components/management/RoleCreate/BaseRoleCreate.cjs.map +1 -0
  99. package/dist/cjs/components/{admin → management}/RoleCreate/RoleCreate.cjs +1 -1
  100. package/dist/cjs/components/management/RoleCreate/RoleCreate.cjs.map +1 -0
  101. package/dist/cjs/components/management/RoleDetails/BaseRoleDetails.cjs +87 -0
  102. package/dist/cjs/components/management/RoleDetails/BaseRoleDetails.cjs.map +1 -0
  103. package/dist/cjs/components/management/RoleDetails/RoleDetails.cjs +68 -0
  104. package/dist/cjs/components/management/RoleDetails/RoleDetails.cjs.map +1 -0
  105. package/dist/cjs/components/{admin → management}/RoleList/BaseRoleList.cjs +1 -1
  106. package/dist/cjs/components/management/RoleList/BaseRoleList.cjs.map +1 -0
  107. package/dist/cjs/components/{admin → management}/RoleList/RoleList.cjs +1 -1
  108. package/dist/cjs/components/management/RoleList/RoleList.cjs.map +1 -0
  109. package/dist/cjs/components/management/RolePermissions/BaseRolePermissions.cjs +181 -0
  110. package/dist/cjs/components/management/RolePermissions/BaseRolePermissions.cjs.map +1 -0
  111. package/dist/cjs/components/management/RolePermissions/RolePermissions.cjs +112 -0
  112. package/dist/cjs/components/management/RolePermissions/RolePermissions.cjs.map +1 -0
  113. package/dist/cjs/components/management/SharingPolicies/BaseSharingPolicies.cjs +308 -0
  114. package/dist/cjs/components/management/SharingPolicies/BaseSharingPolicies.cjs.map +1 -0
  115. package/dist/cjs/components/management/SharingPolicies/SharingPolicies.cjs +126 -0
  116. package/dist/cjs/components/management/SharingPolicies/SharingPolicies.cjs.map +1 -0
  117. package/dist/cjs/components/{admin → management}/UserCreate/BaseUserCreate.cjs +1 -1
  118. package/dist/cjs/components/management/UserCreate/BaseUserCreate.cjs.map +1 -0
  119. package/dist/cjs/components/{admin → management}/UserCreate/UserCreate.cjs +1 -1
  120. package/dist/cjs/components/management/UserCreate/UserCreate.cjs.map +1 -0
  121. package/dist/cjs/components/{admin → management}/UserCreate/userCreateFields.cjs +1 -1
  122. package/dist/cjs/components/management/UserCreate/userCreateFields.cjs.map +1 -0
  123. package/dist/cjs/components/{admin → management}/UserDetails/BaseUserDetails.cjs +1 -1
  124. package/dist/cjs/components/management/UserDetails/BaseUserDetails.cjs.map +1 -0
  125. package/dist/cjs/components/{admin → management}/UserDetails/UserDetails.cjs +1 -1
  126. package/dist/cjs/components/management/UserDetails/UserDetails.cjs.map +1 -0
  127. package/dist/cjs/components/{admin → management}/UserList/BaseUserList.cjs +1 -1
  128. package/dist/cjs/components/management/UserList/BaseUserList.cjs.map +1 -0
  129. package/dist/cjs/components/{admin → management}/UserList/UserList.cjs +1 -1
  130. package/dist/cjs/components/management/UserList/UserList.cjs.map +1 -0
  131. package/dist/cjs/components/{admin → management}/shared/AccountLifecycleParts.cjs +1 -1
  132. package/dist/cjs/components/management/shared/AccountLifecycleParts.cjs.map +1 -0
  133. package/dist/cjs/components/{admin → management}/shared/AdminParts.cjs +1 -1
  134. package/dist/cjs/components/management/shared/AdminParts.cjs.map +1 -0
  135. package/dist/cjs/components/{admin → management}/shared/AdminParts.styles.cjs +1 -1
  136. package/dist/cjs/components/management/shared/AdminParts.styles.cjs.map +1 -0
  137. package/dist/cjs/components/{admin → management}/shared/AdminSearch.cjs +1 -1
  138. package/dist/cjs/components/management/shared/AdminSearch.cjs.map +1 -0
  139. package/dist/cjs/components/{admin → management}/shared/AdminSection.cjs +1 -1
  140. package/dist/cjs/components/management/shared/AdminSection.cjs.map +1 -0
  141. package/dist/cjs/components/{admin → management}/shared/AdminSection.styles.cjs +1 -1
  142. package/dist/cjs/components/management/shared/AdminSection.styles.cjs.map +1 -0
  143. package/dist/cjs/components/{admin → management}/shared/ApplicationFormFields.cjs +1 -1
  144. package/dist/cjs/components/management/shared/ApplicationFormFields.cjs.map +1 -0
  145. package/dist/cjs/components/{admin → management}/shared/ClientSecretNotice.cjs +1 -1
  146. package/dist/cjs/components/management/shared/ClientSecretNotice.cjs.map +1 -0
  147. package/dist/cjs/components/{admin → management}/shared/IdentityPicker.cjs +1 -1
  148. package/dist/cjs/components/management/shared/IdentityPicker.cjs.map +1 -0
  149. package/dist/cjs/components/management/shared/formatTimestamp.cjs +18 -0
  150. package/dist/cjs/components/management/shared/formatTimestamp.cjs.map +1 -0
  151. package/dist/cjs/components/{admin → management}/shared/useAdminPartStyles.cjs +1 -1
  152. package/dist/cjs/components/management/shared/useAdminPartStyles.cjs.map +1 -0
  153. package/dist/cjs/components/{admin → management}/shared/useDefaultOuId.cjs +1 -1
  154. package/dist/cjs/components/management/shared/useDefaultOuId.cjs.map +1 -0
  155. package/dist/cjs/components/management/shared/useProjectPlacement.cjs +23 -0
  156. package/dist/cjs/components/management/shared/useProjectPlacement.cjs.map +1 -0
  157. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +5 -0
  158. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
  159. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +27 -1
  160. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  161. package/dist/cjs/contexts/ThunderID/useCurrentProjectState.cjs +33 -0
  162. package/dist/cjs/contexts/ThunderID/useCurrentProjectState.cjs.map +1 -0
  163. package/dist/cjs/hooks/management/useManagementEndpoint.cjs.map +1 -1
  164. package/dist/cjs/index.cjs +377 -33
  165. package/dist/cjs/utils/flowTransformer.cjs +9 -0
  166. package/dist/cjs/utils/flowTransformer.cjs.map +1 -1
  167. package/dist/cjs/utils/getOrganizationUnitSwitchErrorKey.cjs +24 -0
  168. package/dist/cjs/utils/getOrganizationUnitSwitchErrorKey.cjs.map +1 -0
  169. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.d.ts +85 -0
  170. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.d.ts.map +1 -0
  171. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.js +209 -0
  172. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.js.map +1 -0
  173. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.d.ts +11 -0
  174. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.d.ts.map +1 -0
  175. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.js +184 -0
  176. package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.js.map +1 -0
  177. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts +54 -0
  178. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts.map +1 -0
  179. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js +135 -0
  180. package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js.map +1 -0
  181. package/dist/components/auth/SignIn/SignIn.d.ts +5 -0
  182. package/dist/components/auth/SignIn/SignIn.d.ts.map +1 -1
  183. package/dist/components/auth/SignIn/SignIn.js +25 -22
  184. package/dist/components/auth/SignIn/SignIn.js.map +1 -1
  185. package/dist/components/auth/SignUp/BaseSignUp.d.ts.map +1 -1
  186. package/dist/components/auth/SignUp/BaseSignUp.js +14 -10
  187. package/dist/components/auth/SignUp/BaseSignUp.js.map +1 -1
  188. package/dist/components/auth/flow/AuthOptionFactory.js +2 -2
  189. package/dist/components/auth/flow/AuthOptionFactory.js.map +1 -1
  190. package/dist/components/common/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
  191. package/dist/components/{admin → management}/AgentCreate/AgentCreate.d.ts +2 -1
  192. package/dist/components/management/AgentCreate/AgentCreate.d.ts.map +1 -0
  193. package/dist/components/{admin → management}/AgentCreate/AgentCreate.js +8 -7
  194. package/dist/components/management/AgentCreate/AgentCreate.js.map +1 -0
  195. package/dist/components/management/AgentCreate/BaseAgentCreate.d.ts.map +1 -0
  196. package/dist/components/{admin → management}/AgentCreate/BaseAgentCreate.js +1 -1
  197. package/dist/components/management/AgentCreate/BaseAgentCreate.js.map +1 -0
  198. package/dist/components/management/AgentDetails/AgentDetails.d.ts.map +1 -0
  199. package/dist/components/{admin → management}/AgentDetails/AgentDetails.js +1 -1
  200. package/dist/components/management/AgentDetails/AgentDetails.js.map +1 -0
  201. package/dist/components/management/AgentDetails/BaseAgentDetails.d.ts.map +1 -0
  202. package/dist/components/{admin → management}/AgentDetails/BaseAgentDetails.js +1 -1
  203. package/dist/components/management/AgentDetails/BaseAgentDetails.js.map +1 -0
  204. package/dist/components/{admin → management}/AgentList/AgentList.d.ts +7 -1
  205. package/dist/components/management/AgentList/AgentList.d.ts.map +1 -0
  206. package/dist/components/{admin → management}/AgentList/AgentList.js +11 -6
  207. package/dist/components/management/AgentList/AgentList.js.map +1 -0
  208. package/dist/components/management/AgentList/BaseAgentList.d.ts.map +1 -0
  209. package/dist/components/{admin → management}/AgentList/BaseAgentList.js +1 -1
  210. package/dist/components/management/AgentList/BaseAgentList.js.map +1 -0
  211. package/dist/components/{admin → management}/ApplicationCreate/ApplicationCreate.d.ts +2 -1
  212. package/dist/components/management/ApplicationCreate/ApplicationCreate.d.ts.map +1 -0
  213. package/dist/components/{admin → management}/ApplicationCreate/ApplicationCreate.js +10 -5
  214. package/dist/components/management/ApplicationCreate/ApplicationCreate.js.map +1 -0
  215. package/dist/components/management/ApplicationCreate/BaseApplicationCreate.d.ts.map +1 -0
  216. package/dist/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.js +1 -1
  217. package/dist/components/management/ApplicationCreate/BaseApplicationCreate.js.map +1 -0
  218. package/dist/components/management/ApplicationDetails/ApplicationDetails.d.ts.map +1 -0
  219. package/dist/components/{admin → management}/ApplicationDetails/ApplicationDetails.js +1 -1
  220. package/dist/components/management/ApplicationDetails/ApplicationDetails.js.map +1 -0
  221. package/dist/components/management/ApplicationDetails/BaseApplicationDetails.d.ts.map +1 -0
  222. package/dist/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.js +1 -1
  223. package/dist/components/management/ApplicationDetails/BaseApplicationDetails.js.map +1 -0
  224. package/dist/components/{admin → management}/ApplicationList/ApplicationList.d.ts +7 -1
  225. package/dist/components/management/ApplicationList/ApplicationList.d.ts.map +1 -0
  226. package/dist/components/{admin → management}/ApplicationList/ApplicationList.js +9 -4
  227. package/dist/components/management/ApplicationList/ApplicationList.js.map +1 -0
  228. package/dist/components/management/ApplicationList/BaseApplicationList.d.ts.map +1 -0
  229. package/dist/components/{admin → management}/ApplicationList/BaseApplicationList.js +1 -1
  230. package/dist/components/management/ApplicationList/BaseApplicationList.js.map +1 -0
  231. package/dist/components/management/GroupCreate/BaseGroupCreate.d.ts.map +1 -0
  232. package/dist/components/{admin → management}/GroupCreate/BaseGroupCreate.js +1 -1
  233. package/dist/components/management/GroupCreate/BaseGroupCreate.js.map +1 -0
  234. package/dist/components/management/GroupCreate/GroupCreate.d.ts.map +1 -0
  235. package/dist/components/{admin → management}/GroupCreate/GroupCreate.js +1 -1
  236. package/dist/components/management/GroupCreate/GroupCreate.js.map +1 -0
  237. package/dist/components/management/GroupDetails/BaseGroupDetails.d.ts +47 -0
  238. package/dist/components/management/GroupDetails/BaseGroupDetails.d.ts.map +1 -0
  239. package/dist/components/management/GroupDetails/BaseGroupDetails.js +84 -0
  240. package/dist/components/management/GroupDetails/BaseGroupDetails.js.map +1 -0
  241. package/dist/components/management/GroupDetails/GroupDetails.d.ts +37 -0
  242. package/dist/components/management/GroupDetails/GroupDetails.d.ts.map +1 -0
  243. package/dist/components/management/GroupDetails/GroupDetails.js +57 -0
  244. package/dist/components/management/GroupDetails/GroupDetails.js.map +1 -0
  245. package/dist/components/management/GroupList/BaseGroupList.d.ts.map +1 -0
  246. package/dist/components/{admin → management}/GroupList/BaseGroupList.js +1 -1
  247. package/dist/components/management/GroupList/BaseGroupList.js.map +1 -0
  248. package/dist/components/management/GroupList/GroupList.d.ts.map +1 -0
  249. package/dist/components/{admin → management}/GroupList/GroupList.js +1 -1
  250. package/dist/components/management/GroupList/GroupList.js.map +1 -0
  251. package/dist/components/management/GroupMembers/BaseGroupMembers.d.ts.map +1 -0
  252. package/dist/components/{admin → management}/GroupMembers/BaseGroupMembers.js +1 -1
  253. package/dist/components/management/GroupMembers/BaseGroupMembers.js.map +1 -0
  254. package/dist/components/management/GroupMembers/GroupMembers.d.ts.map +1 -0
  255. package/dist/components/{admin → management}/GroupMembers/GroupMembers.js +1 -1
  256. package/dist/components/management/GroupMembers/GroupMembers.js.map +1 -0
  257. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.d.ts +85 -0
  258. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.d.ts.map +1 -0
  259. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.js +137 -0
  260. package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.js.map +1 -0
  261. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts +21 -0
  262. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts.map +1 -0
  263. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js +79 -0
  264. package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js.map +1 -0
  265. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.d.ts +105 -0
  266. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.d.ts.map +1 -0
  267. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.js +273 -0
  268. package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.js.map +1 -0
  269. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts +42 -0
  270. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts.map +1 -0
  271. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js +139 -0
  272. package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js.map +1 -0
  273. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.d.ts +54 -0
  274. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.d.ts.map +1 -0
  275. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.js +76 -0
  276. package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.js.map +1 -0
  277. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.d.ts +19 -0
  278. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.d.ts.map +1 -0
  279. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.js +65 -0
  280. package/dist/components/management/OrganizationUnitList/OrganizationUnitList.js.map +1 -0
  281. package/dist/components/management/ProjectCreate/BaseProjectCreate.d.ts +60 -0
  282. package/dist/components/management/ProjectCreate/BaseProjectCreate.d.ts.map +1 -0
  283. package/dist/components/management/ProjectCreate/BaseProjectCreate.js +113 -0
  284. package/dist/components/management/ProjectCreate/BaseProjectCreate.js.map +1 -0
  285. package/dist/components/management/ProjectCreate/ProjectCreate.d.ts +20 -0
  286. package/dist/components/management/ProjectCreate/ProjectCreate.d.ts.map +1 -0
  287. package/dist/components/management/ProjectCreate/ProjectCreate.js +40 -0
  288. package/dist/components/management/ProjectCreate/ProjectCreate.js.map +1 -0
  289. package/dist/components/management/ProjectDetails/BaseProjectDetails.d.ts +60 -0
  290. package/dist/components/management/ProjectDetails/BaseProjectDetails.d.ts.map +1 -0
  291. package/dist/components/management/ProjectDetails/BaseProjectDetails.js +169 -0
  292. package/dist/components/management/ProjectDetails/BaseProjectDetails.js.map +1 -0
  293. package/dist/components/management/ProjectDetails/ProjectDetails.d.ts +36 -0
  294. package/dist/components/management/ProjectDetails/ProjectDetails.d.ts.map +1 -0
  295. package/dist/components/management/ProjectDetails/ProjectDetails.js +65 -0
  296. package/dist/components/management/ProjectDetails/ProjectDetails.js.map +1 -0
  297. package/dist/components/management/ProjectList/BaseProjectList.d.ts +53 -0
  298. package/dist/components/management/ProjectList/BaseProjectList.d.ts.map +1 -0
  299. package/dist/components/management/ProjectList/BaseProjectList.js +76 -0
  300. package/dist/components/management/ProjectList/BaseProjectList.js.map +1 -0
  301. package/dist/components/management/ProjectList/ProjectList.d.ts +14 -0
  302. package/dist/components/management/ProjectList/ProjectList.d.ts.map +1 -0
  303. package/dist/components/management/ProjectList/ProjectList.js +47 -0
  304. package/dist/components/management/ProjectList/ProjectList.js.map +1 -0
  305. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.d.ts +69 -0
  306. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.d.ts.map +1 -0
  307. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.js +55 -0
  308. package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.js.map +1 -0
  309. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.d.ts +25 -0
  310. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.d.ts.map +1 -0
  311. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.js +68 -0
  312. package/dist/components/management/ProjectSwitcher/ProjectSwitcher.js.map +1 -0
  313. package/dist/components/management/RoleAssignments/BaseRoleAssignments.d.ts.map +1 -0
  314. package/dist/components/{admin → management}/RoleAssignments/BaseRoleAssignments.js +1 -1
  315. package/dist/components/management/RoleAssignments/BaseRoleAssignments.js.map +1 -0
  316. package/dist/components/management/RoleAssignments/RoleAssignments.d.ts.map +1 -0
  317. package/dist/components/{admin → management}/RoleAssignments/RoleAssignments.js +1 -1
  318. package/dist/components/management/RoleAssignments/RoleAssignments.js.map +1 -0
  319. package/dist/components/management/RoleCreate/BaseRoleCreate.d.ts.map +1 -0
  320. package/dist/components/{admin → management}/RoleCreate/BaseRoleCreate.js +1 -1
  321. package/dist/components/management/RoleCreate/BaseRoleCreate.js.map +1 -0
  322. package/dist/components/management/RoleCreate/RoleCreate.d.ts.map +1 -0
  323. package/dist/components/{admin → management}/RoleCreate/RoleCreate.js +1 -1
  324. package/dist/components/management/RoleCreate/RoleCreate.js.map +1 -0
  325. package/dist/components/management/RoleDetails/BaseRoleDetails.d.ts +51 -0
  326. package/dist/components/management/RoleDetails/BaseRoleDetails.d.ts.map +1 -0
  327. package/dist/components/management/RoleDetails/BaseRoleDetails.js +85 -0
  328. package/dist/components/management/RoleDetails/BaseRoleDetails.js.map +1 -0
  329. package/dist/components/management/RoleDetails/RoleDetails.d.ts +39 -0
  330. package/dist/components/management/RoleDetails/RoleDetails.d.ts.map +1 -0
  331. package/dist/components/management/RoleDetails/RoleDetails.js +65 -0
  332. package/dist/components/management/RoleDetails/RoleDetails.js.map +1 -0
  333. package/dist/components/management/RoleList/BaseRoleList.d.ts.map +1 -0
  334. package/dist/components/{admin → management}/RoleList/BaseRoleList.js +1 -1
  335. package/dist/components/management/RoleList/BaseRoleList.js.map +1 -0
  336. package/dist/components/management/RoleList/RoleList.d.ts.map +1 -0
  337. package/dist/components/{admin → management}/RoleList/RoleList.js +1 -1
  338. package/dist/components/management/RoleList/RoleList.js.map +1 -0
  339. package/dist/components/management/RolePermissions/BaseRolePermissions.d.ts +104 -0
  340. package/dist/components/management/RolePermissions/BaseRolePermissions.d.ts.map +1 -0
  341. package/dist/components/management/RolePermissions/BaseRolePermissions.js +178 -0
  342. package/dist/components/management/RolePermissions/BaseRolePermissions.js.map +1 -0
  343. package/dist/components/management/RolePermissions/RolePermissions.d.ts +29 -0
  344. package/dist/components/management/RolePermissions/RolePermissions.d.ts.map +1 -0
  345. package/dist/components/management/RolePermissions/RolePermissions.js +108 -0
  346. package/dist/components/management/RolePermissions/RolePermissions.js.map +1 -0
  347. package/dist/components/management/SharingPolicies/BaseSharingPolicies.d.ts +124 -0
  348. package/dist/components/management/SharingPolicies/BaseSharingPolicies.d.ts.map +1 -0
  349. package/dist/components/management/SharingPolicies/BaseSharingPolicies.js +304 -0
  350. package/dist/components/management/SharingPolicies/BaseSharingPolicies.js.map +1 -0
  351. package/dist/components/management/SharingPolicies/SharingPolicies.d.ts +36 -0
  352. package/dist/components/management/SharingPolicies/SharingPolicies.d.ts.map +1 -0
  353. package/dist/components/management/SharingPolicies/SharingPolicies.js +122 -0
  354. package/dist/components/management/SharingPolicies/SharingPolicies.js.map +1 -0
  355. package/dist/components/management/UserCreate/BaseUserCreate.d.ts.map +1 -0
  356. package/dist/components/{admin → management}/UserCreate/BaseUserCreate.js +1 -1
  357. package/dist/components/management/UserCreate/BaseUserCreate.js.map +1 -0
  358. package/dist/components/management/UserCreate/UserCreate.d.ts.map +1 -0
  359. package/dist/components/{admin → management}/UserCreate/UserCreate.js +1 -1
  360. package/dist/components/management/UserCreate/UserCreate.js.map +1 -0
  361. package/dist/components/management/UserCreate/userCreateFields.d.ts.map +1 -0
  362. package/dist/components/{admin → management}/UserCreate/userCreateFields.js +1 -1
  363. package/dist/components/management/UserCreate/userCreateFields.js.map +1 -0
  364. package/dist/components/management/UserDetails/BaseUserDetails.d.ts.map +1 -0
  365. package/dist/components/{admin → management}/UserDetails/BaseUserDetails.js +1 -1
  366. package/dist/components/management/UserDetails/BaseUserDetails.js.map +1 -0
  367. package/dist/components/management/UserDetails/UserDetails.d.ts.map +1 -0
  368. package/dist/components/{admin → management}/UserDetails/UserDetails.js +1 -1
  369. package/dist/components/management/UserDetails/UserDetails.js.map +1 -0
  370. package/dist/components/management/UserList/BaseUserList.d.ts.map +1 -0
  371. package/dist/components/{admin → management}/UserList/BaseUserList.js +1 -1
  372. package/dist/components/management/UserList/BaseUserList.js.map +1 -0
  373. package/dist/components/management/UserList/UserList.d.ts.map +1 -0
  374. package/dist/components/{admin → management}/UserList/UserList.js +1 -1
  375. package/dist/components/management/UserList/UserList.js.map +1 -0
  376. package/dist/components/management/shared/AccountLifecycleParts.d.ts.map +1 -0
  377. package/dist/components/{admin → management}/shared/AccountLifecycleParts.js +1 -1
  378. package/dist/components/management/shared/AccountLifecycleParts.js.map +1 -0
  379. package/dist/components/management/shared/AdminListRenderProps.d.ts.map +1 -0
  380. package/dist/components/management/shared/AdminParts.d.ts.map +1 -0
  381. package/dist/components/{admin → management}/shared/AdminParts.js +1 -1
  382. package/dist/components/management/shared/AdminParts.js.map +1 -0
  383. package/dist/components/management/shared/AdminParts.styles.d.ts.map +1 -0
  384. package/dist/components/{admin → management}/shared/AdminParts.styles.js +1 -1
  385. package/dist/components/management/shared/AdminParts.styles.js.map +1 -0
  386. package/dist/components/management/shared/AdminSearch.d.ts.map +1 -0
  387. package/dist/components/{admin → management}/shared/AdminSearch.js +1 -1
  388. package/dist/components/management/shared/AdminSearch.js.map +1 -0
  389. package/dist/components/management/shared/AdminSection.d.ts.map +1 -0
  390. package/dist/components/{admin → management}/shared/AdminSection.js +1 -1
  391. package/dist/components/management/shared/AdminSection.js.map +1 -0
  392. package/dist/components/management/shared/AdminSection.styles.d.ts.map +1 -0
  393. package/dist/components/{admin → management}/shared/AdminSection.styles.js +1 -1
  394. package/dist/components/management/shared/AdminSection.styles.js.map +1 -0
  395. package/dist/components/management/shared/ApplicationFormFields.d.ts.map +1 -0
  396. package/dist/components/{admin → management}/shared/ApplicationFormFields.js +1 -1
  397. package/dist/components/management/shared/ApplicationFormFields.js.map +1 -0
  398. package/dist/components/management/shared/ClientSecretNotice.d.ts.map +1 -0
  399. package/dist/components/{admin → management}/shared/ClientSecretNotice.js +1 -1
  400. package/dist/components/management/shared/ClientSecretNotice.js.map +1 -0
  401. package/dist/components/management/shared/IdentityPicker.d.ts.map +1 -0
  402. package/dist/components/{admin → management}/shared/IdentityPicker.js +1 -1
  403. package/dist/components/management/shared/IdentityPicker.js.map +1 -0
  404. package/dist/components/management/shared/formatTimestamp.d.ts +9 -0
  405. package/dist/components/management/shared/formatTimestamp.d.ts.map +1 -0
  406. package/dist/components/management/shared/formatTimestamp.js +17 -0
  407. package/dist/components/management/shared/formatTimestamp.js.map +1 -0
  408. package/dist/components/management/shared/useAdminPartStyles.d.ts.map +1 -0
  409. package/dist/components/{admin → management}/shared/useAdminPartStyles.js +1 -1
  410. package/dist/components/management/shared/useAdminPartStyles.js.map +1 -0
  411. package/dist/components/management/shared/useDefaultOuId.d.ts.map +1 -0
  412. package/dist/components/{admin → management}/shared/useDefaultOuId.js +1 -1
  413. package/dist/components/management/shared/useDefaultOuId.js.map +1 -0
  414. package/dist/components/management/shared/useProjectPlacement.d.ts +26 -0
  415. package/dist/components/management/shared/useProjectPlacement.d.ts.map +1 -0
  416. package/dist/components/management/shared/useProjectPlacement.js +23 -0
  417. package/dist/components/management/shared/useProjectPlacement.js.map +1 -0
  418. package/dist/contexts/ThunderID/ThunderIDContext.d.ts +27 -1
  419. package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
  420. package/dist/contexts/ThunderID/ThunderIDContext.js +5 -0
  421. package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
  422. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  423. package/dist/contexts/ThunderID/ThunderIDProvider.js +28 -2
  424. package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  425. package/dist/contexts/ThunderID/useCurrentProjectState.d.ts +26 -0
  426. package/dist/contexts/ThunderID/useCurrentProjectState.d.ts.map +1 -0
  427. package/dist/contexts/ThunderID/useCurrentProjectState.js +30 -0
  428. package/dist/contexts/ThunderID/useCurrentProjectState.js.map +1 -0
  429. package/dist/hooks/management/useManagementEndpoint.d.ts +1 -1
  430. package/dist/hooks/management/useManagementEndpoint.d.ts.map +1 -1
  431. package/dist/hooks/management/useManagementEndpoint.js.map +1 -1
  432. package/dist/index.d.ts +120 -69
  433. package/dist/index.d.ts.map +1 -1
  434. package/dist/index.js +59 -34
  435. package/dist/utils/flowTransformer.d.ts +7 -0
  436. package/dist/utils/flowTransformer.d.ts.map +1 -1
  437. package/dist/utils/flowTransformer.js +9 -1
  438. package/dist/utils/flowTransformer.js.map +1 -1
  439. package/dist/utils/getOrganizationUnitSwitchErrorKey.d.ts +11 -0
  440. package/dist/utils/getOrganizationUnitSwitchErrorKey.d.ts.map +1 -0
  441. package/dist/utils/getOrganizationUnitSwitchErrorKey.js +22 -0
  442. package/dist/utils/getOrganizationUnitSwitchErrorKey.js.map +1 -0
  443. package/package.json +2 -2
  444. package/dist/cjs/components/admin/AgentCreate/AgentCreate.cjs.map +0 -1
  445. package/dist/cjs/components/admin/AgentCreate/BaseAgentCreate.cjs.map +0 -1
  446. package/dist/cjs/components/admin/AgentDetails/AgentDetails.cjs.map +0 -1
  447. package/dist/cjs/components/admin/AgentDetails/BaseAgentDetails.cjs.map +0 -1
  448. package/dist/cjs/components/admin/AgentList/AgentList.cjs.map +0 -1
  449. package/dist/cjs/components/admin/AgentList/BaseAgentList.cjs.map +0 -1
  450. package/dist/cjs/components/admin/ApplicationCreate/ApplicationCreate.cjs.map +0 -1
  451. package/dist/cjs/components/admin/ApplicationCreate/BaseApplicationCreate.cjs.map +0 -1
  452. package/dist/cjs/components/admin/ApplicationDetails/ApplicationDetails.cjs.map +0 -1
  453. package/dist/cjs/components/admin/ApplicationDetails/BaseApplicationDetails.cjs.map +0 -1
  454. package/dist/cjs/components/admin/ApplicationList/ApplicationList.cjs.map +0 -1
  455. package/dist/cjs/components/admin/ApplicationList/BaseApplicationList.cjs.map +0 -1
  456. package/dist/cjs/components/admin/GroupCreate/BaseGroupCreate.cjs.map +0 -1
  457. package/dist/cjs/components/admin/GroupCreate/GroupCreate.cjs.map +0 -1
  458. package/dist/cjs/components/admin/GroupList/BaseGroupList.cjs.map +0 -1
  459. package/dist/cjs/components/admin/GroupList/GroupList.cjs.map +0 -1
  460. package/dist/cjs/components/admin/GroupMembers/BaseGroupMembers.cjs.map +0 -1
  461. package/dist/cjs/components/admin/GroupMembers/GroupMembers.cjs.map +0 -1
  462. package/dist/cjs/components/admin/RoleAssignments/BaseRoleAssignments.cjs.map +0 -1
  463. package/dist/cjs/components/admin/RoleAssignments/RoleAssignments.cjs.map +0 -1
  464. package/dist/cjs/components/admin/RoleCreate/BaseRoleCreate.cjs.map +0 -1
  465. package/dist/cjs/components/admin/RoleCreate/RoleCreate.cjs.map +0 -1
  466. package/dist/cjs/components/admin/RoleList/BaseRoleList.cjs.map +0 -1
  467. package/dist/cjs/components/admin/RoleList/RoleList.cjs.map +0 -1
  468. package/dist/cjs/components/admin/RolePermissions/BaseRolePermissions.cjs +0 -69
  469. package/dist/cjs/components/admin/RolePermissions/BaseRolePermissions.cjs.map +0 -1
  470. package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs +0 -40
  471. package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs.map +0 -1
  472. package/dist/cjs/components/admin/UserCreate/BaseUserCreate.cjs.map +0 -1
  473. package/dist/cjs/components/admin/UserCreate/UserCreate.cjs.map +0 -1
  474. package/dist/cjs/components/admin/UserCreate/userCreateFields.cjs.map +0 -1
  475. package/dist/cjs/components/admin/UserDetails/BaseUserDetails.cjs.map +0 -1
  476. package/dist/cjs/components/admin/UserDetails/UserDetails.cjs.map +0 -1
  477. package/dist/cjs/components/admin/UserList/BaseUserList.cjs.map +0 -1
  478. package/dist/cjs/components/admin/UserList/UserList.cjs.map +0 -1
  479. package/dist/cjs/components/admin/shared/AccountLifecycleParts.cjs.map +0 -1
  480. package/dist/cjs/components/admin/shared/AdminParts.cjs.map +0 -1
  481. package/dist/cjs/components/admin/shared/AdminParts.styles.cjs.map +0 -1
  482. package/dist/cjs/components/admin/shared/AdminSearch.cjs.map +0 -1
  483. package/dist/cjs/components/admin/shared/AdminSection.cjs.map +0 -1
  484. package/dist/cjs/components/admin/shared/AdminSection.styles.cjs.map +0 -1
  485. package/dist/cjs/components/admin/shared/ApplicationFormFields.cjs.map +0 -1
  486. package/dist/cjs/components/admin/shared/ClientSecretNotice.cjs.map +0 -1
  487. package/dist/cjs/components/admin/shared/IdentityPicker.cjs.map +0 -1
  488. package/dist/cjs/components/admin/shared/useAdminPartStyles.cjs.map +0 -1
  489. package/dist/cjs/components/admin/shared/useDefaultOuId.cjs.map +0 -1
  490. package/dist/components/admin/AgentCreate/AgentCreate.d.ts.map +0 -1
  491. package/dist/components/admin/AgentCreate/AgentCreate.js.map +0 -1
  492. package/dist/components/admin/AgentCreate/BaseAgentCreate.d.ts.map +0 -1
  493. package/dist/components/admin/AgentCreate/BaseAgentCreate.js.map +0 -1
  494. package/dist/components/admin/AgentDetails/AgentDetails.d.ts.map +0 -1
  495. package/dist/components/admin/AgentDetails/AgentDetails.js.map +0 -1
  496. package/dist/components/admin/AgentDetails/BaseAgentDetails.d.ts.map +0 -1
  497. package/dist/components/admin/AgentDetails/BaseAgentDetails.js.map +0 -1
  498. package/dist/components/admin/AgentList/AgentList.d.ts.map +0 -1
  499. package/dist/components/admin/AgentList/AgentList.js.map +0 -1
  500. package/dist/components/admin/AgentList/BaseAgentList.d.ts.map +0 -1
  501. package/dist/components/admin/AgentList/BaseAgentList.js.map +0 -1
  502. package/dist/components/admin/ApplicationCreate/ApplicationCreate.d.ts.map +0 -1
  503. package/dist/components/admin/ApplicationCreate/ApplicationCreate.js.map +0 -1
  504. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.d.ts.map +0 -1
  505. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.js.map +0 -1
  506. package/dist/components/admin/ApplicationDetails/ApplicationDetails.d.ts.map +0 -1
  507. package/dist/components/admin/ApplicationDetails/ApplicationDetails.js.map +0 -1
  508. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.d.ts.map +0 -1
  509. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.js.map +0 -1
  510. package/dist/components/admin/ApplicationList/ApplicationList.d.ts.map +0 -1
  511. package/dist/components/admin/ApplicationList/ApplicationList.js.map +0 -1
  512. package/dist/components/admin/ApplicationList/BaseApplicationList.d.ts.map +0 -1
  513. package/dist/components/admin/ApplicationList/BaseApplicationList.js.map +0 -1
  514. package/dist/components/admin/GroupCreate/BaseGroupCreate.d.ts.map +0 -1
  515. package/dist/components/admin/GroupCreate/BaseGroupCreate.js.map +0 -1
  516. package/dist/components/admin/GroupCreate/GroupCreate.d.ts.map +0 -1
  517. package/dist/components/admin/GroupCreate/GroupCreate.js.map +0 -1
  518. package/dist/components/admin/GroupList/BaseGroupList.d.ts.map +0 -1
  519. package/dist/components/admin/GroupList/BaseGroupList.js.map +0 -1
  520. package/dist/components/admin/GroupList/GroupList.d.ts.map +0 -1
  521. package/dist/components/admin/GroupList/GroupList.js.map +0 -1
  522. package/dist/components/admin/GroupMembers/BaseGroupMembers.d.ts.map +0 -1
  523. package/dist/components/admin/GroupMembers/BaseGroupMembers.js.map +0 -1
  524. package/dist/components/admin/GroupMembers/GroupMembers.d.ts.map +0 -1
  525. package/dist/components/admin/GroupMembers/GroupMembers.js.map +0 -1
  526. package/dist/components/admin/RoleAssignments/BaseRoleAssignments.d.ts.map +0 -1
  527. package/dist/components/admin/RoleAssignments/BaseRoleAssignments.js.map +0 -1
  528. package/dist/components/admin/RoleAssignments/RoleAssignments.d.ts.map +0 -1
  529. package/dist/components/admin/RoleAssignments/RoleAssignments.js.map +0 -1
  530. package/dist/components/admin/RoleCreate/BaseRoleCreate.d.ts.map +0 -1
  531. package/dist/components/admin/RoleCreate/BaseRoleCreate.js.map +0 -1
  532. package/dist/components/admin/RoleCreate/RoleCreate.d.ts.map +0 -1
  533. package/dist/components/admin/RoleCreate/RoleCreate.js.map +0 -1
  534. package/dist/components/admin/RoleList/BaseRoleList.d.ts.map +0 -1
  535. package/dist/components/admin/RoleList/BaseRoleList.js.map +0 -1
  536. package/dist/components/admin/RoleList/RoleList.d.ts.map +0 -1
  537. package/dist/components/admin/RoleList/RoleList.js.map +0 -1
  538. package/dist/components/admin/RolePermissions/BaseRolePermissions.d.ts +0 -42
  539. package/dist/components/admin/RolePermissions/BaseRolePermissions.d.ts.map +0 -1
  540. package/dist/components/admin/RolePermissions/BaseRolePermissions.js +0 -67
  541. package/dist/components/admin/RolePermissions/BaseRolePermissions.js.map +0 -1
  542. package/dist/components/admin/RolePermissions/RolePermissions.d.ts +0 -16
  543. package/dist/components/admin/RolePermissions/RolePermissions.d.ts.map +0 -1
  544. package/dist/components/admin/RolePermissions/RolePermissions.js +0 -37
  545. package/dist/components/admin/RolePermissions/RolePermissions.js.map +0 -1
  546. package/dist/components/admin/UserCreate/BaseUserCreate.d.ts.map +0 -1
  547. package/dist/components/admin/UserCreate/BaseUserCreate.js.map +0 -1
  548. package/dist/components/admin/UserCreate/UserCreate.d.ts.map +0 -1
  549. package/dist/components/admin/UserCreate/UserCreate.js.map +0 -1
  550. package/dist/components/admin/UserCreate/userCreateFields.d.ts.map +0 -1
  551. package/dist/components/admin/UserCreate/userCreateFields.js.map +0 -1
  552. package/dist/components/admin/UserDetails/BaseUserDetails.d.ts.map +0 -1
  553. package/dist/components/admin/UserDetails/BaseUserDetails.js.map +0 -1
  554. package/dist/components/admin/UserDetails/UserDetails.d.ts.map +0 -1
  555. package/dist/components/admin/UserDetails/UserDetails.js.map +0 -1
  556. package/dist/components/admin/UserList/BaseUserList.d.ts.map +0 -1
  557. package/dist/components/admin/UserList/BaseUserList.js.map +0 -1
  558. package/dist/components/admin/UserList/UserList.d.ts.map +0 -1
  559. package/dist/components/admin/UserList/UserList.js.map +0 -1
  560. package/dist/components/admin/shared/AccountLifecycleParts.d.ts.map +0 -1
  561. package/dist/components/admin/shared/AccountLifecycleParts.js.map +0 -1
  562. package/dist/components/admin/shared/AdminListRenderProps.d.ts.map +0 -1
  563. package/dist/components/admin/shared/AdminParts.d.ts.map +0 -1
  564. package/dist/components/admin/shared/AdminParts.js.map +0 -1
  565. package/dist/components/admin/shared/AdminParts.styles.d.ts.map +0 -1
  566. package/dist/components/admin/shared/AdminParts.styles.js.map +0 -1
  567. package/dist/components/admin/shared/AdminSearch.d.ts.map +0 -1
  568. package/dist/components/admin/shared/AdminSearch.js.map +0 -1
  569. package/dist/components/admin/shared/AdminSection.d.ts.map +0 -1
  570. package/dist/components/admin/shared/AdminSection.js.map +0 -1
  571. package/dist/components/admin/shared/AdminSection.styles.d.ts.map +0 -1
  572. package/dist/components/admin/shared/AdminSection.styles.js.map +0 -1
  573. package/dist/components/admin/shared/ApplicationFormFields.d.ts.map +0 -1
  574. package/dist/components/admin/shared/ApplicationFormFields.js.map +0 -1
  575. package/dist/components/admin/shared/ClientSecretNotice.d.ts.map +0 -1
  576. package/dist/components/admin/shared/ClientSecretNotice.js.map +0 -1
  577. package/dist/components/admin/shared/IdentityPicker.d.ts.map +0 -1
  578. package/dist/components/admin/shared/IdentityPicker.js.map +0 -1
  579. package/dist/components/admin/shared/useAdminPartStyles.d.ts.map +0 -1
  580. package/dist/components/admin/shared/useAdminPartStyles.js.map +0 -1
  581. package/dist/components/admin/shared/useDefaultOuId.d.ts.map +0 -1
  582. package/dist/components/admin/shared/useDefaultOuId.js.map +0 -1
  583. /package/dist/components/{admin → management}/AgentCreate/BaseAgentCreate.d.ts +0 -0
  584. /package/dist/components/{admin → management}/AgentDetails/AgentDetails.d.ts +0 -0
  585. /package/dist/components/{admin → management}/AgentDetails/BaseAgentDetails.d.ts +0 -0
  586. /package/dist/components/{admin → management}/AgentList/BaseAgentList.d.ts +0 -0
  587. /package/dist/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.d.ts +0 -0
  588. /package/dist/components/{admin → management}/ApplicationDetails/ApplicationDetails.d.ts +0 -0
  589. /package/dist/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.d.ts +0 -0
  590. /package/dist/components/{admin → management}/ApplicationList/BaseApplicationList.d.ts +0 -0
  591. /package/dist/components/{admin → management}/GroupCreate/BaseGroupCreate.d.ts +0 -0
  592. /package/dist/components/{admin → management}/GroupCreate/GroupCreate.d.ts +0 -0
  593. /package/dist/components/{admin → management}/GroupList/BaseGroupList.d.ts +0 -0
  594. /package/dist/components/{admin → management}/GroupList/GroupList.d.ts +0 -0
  595. /package/dist/components/{admin → management}/GroupMembers/BaseGroupMembers.d.ts +0 -0
  596. /package/dist/components/{admin → management}/GroupMembers/GroupMembers.d.ts +0 -0
  597. /package/dist/components/{admin → management}/RoleAssignments/BaseRoleAssignments.d.ts +0 -0
  598. /package/dist/components/{admin → management}/RoleAssignments/RoleAssignments.d.ts +0 -0
  599. /package/dist/components/{admin → management}/RoleCreate/BaseRoleCreate.d.ts +0 -0
  600. /package/dist/components/{admin → management}/RoleCreate/RoleCreate.d.ts +0 -0
  601. /package/dist/components/{admin → management}/RoleList/BaseRoleList.d.ts +0 -0
  602. /package/dist/components/{admin → management}/RoleList/RoleList.d.ts +0 -0
  603. /package/dist/components/{admin → management}/UserCreate/BaseUserCreate.d.ts +0 -0
  604. /package/dist/components/{admin → management}/UserCreate/UserCreate.d.ts +0 -0
  605. /package/dist/components/{admin → management}/UserCreate/userCreateFields.d.ts +0 -0
  606. /package/dist/components/{admin → management}/UserDetails/BaseUserDetails.d.ts +0 -0
  607. /package/dist/components/{admin → management}/UserDetails/UserDetails.d.ts +0 -0
  608. /package/dist/components/{admin → management}/UserList/BaseUserList.d.ts +0 -0
  609. /package/dist/components/{admin → management}/UserList/UserList.d.ts +0 -0
  610. /package/dist/components/{admin → management}/shared/AccountLifecycleParts.d.ts +0 -0
  611. /package/dist/components/{admin → management}/shared/AdminListRenderProps.d.ts +0 -0
  612. /package/dist/components/{admin → management}/shared/AdminParts.d.ts +0 -0
  613. /package/dist/components/{admin → management}/shared/AdminParts.styles.d.ts +0 -0
  614. /package/dist/components/{admin → management}/shared/AdminSearch.d.ts +0 -0
  615. /package/dist/components/{admin → management}/shared/AdminSection.d.ts +0 -0
  616. /package/dist/components/{admin → management}/shared/AdminSection.styles.d.ts +0 -0
  617. /package/dist/components/{admin → management}/shared/ApplicationFormFields.d.ts +0 -0
  618. /package/dist/components/{admin → management}/shared/ClientSecretNotice.d.ts +0 -0
  619. /package/dist/components/{admin → management}/shared/IdentityPicker.d.ts +0 -0
  620. /package/dist/components/{admin → management}/shared/useAdminPartStyles.d.ts +0 -0
  621. /package/dist/components/{admin → management}/shared/useDefaultOuId.d.ts +0 -0
@@ -0,0 +1,65 @@
1
+ import useTranslation_default from "../../../hooks/useTranslation.js";
2
+ import useManagementEndpoint_default from "../../../hooks/management/useManagementEndpoint.js";
3
+ import useResourceQuery_default from "../../../hooks/management/useResourceQuery.js";
4
+ import useResourceMutation_default from "../../../hooks/management/useResourceMutation.js";
5
+ import RoleAssignments_default from "../RoleAssignments/RoleAssignments.js";
6
+ import BaseRolePermissions_default from "../RolePermissions/BaseRolePermissions.js";
7
+ import RolePermissions_default from "../RolePermissions/RolePermissions.js";
8
+ import BaseRoleDetails_default from "./BaseRoleDetails.js";
9
+ import { RoleQueryKeys, deleteRole, getRole, toManagementErrorMessage } from "@thunderid/browser";
10
+ import { jsx } from "react/jsx-runtime";
11
+
12
+ //#region src/components/management/RoleDetails/RoleDetails.tsx
13
+ /**
14
+ * Shows a role with its permissions and assignments, and lets the signed-in user manage the permissions and
15
+ * assignments and delete the role.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <RoleDetails roleId={roleId} editable deletable onDeleted={() => navigate('/roles')} />
20
+ * ```
21
+ */
22
+ const RoleDetails = ({ administrationMode, deletable = false, editable = false, onDeleted, preferences, roleId,...rest }) => {
23
+ const { t } = useTranslation_default(preferences?.i18n);
24
+ const endpoint = useManagementEndpoint_default("roles");
25
+ const role = useResourceQuery_default([RoleQueryKeys.ROLE, roleId], (fetcher) => getRole({
26
+ ...endpoint,
27
+ fetcher,
28
+ roleId
29
+ }), { enabled: Boolean(roleId) });
30
+ const deletion = useResourceMutation_default((id, fetcher) => deleteRole({
31
+ ...endpoint,
32
+ administrationMode,
33
+ fetcher,
34
+ roleId: id
35
+ }), () => [[RoleQueryKeys.ROLES], [RoleQueryKeys.ROLE_ASSIGNMENTS]], { onSuccess: onDeleted });
36
+ return /* @__PURE__ */ jsx(BaseRoleDetails_default, {
37
+ role: role.data,
38
+ isLoading: role.isLoading,
39
+ error: toManagementErrorMessage(t, role.error, "admin.roles.details.error") ?? toManagementErrorMessage(t, deletion.error, "admin.roles.details.delete.error"),
40
+ isDeleting: deletion.isLoading,
41
+ onDelete: deletable ? () => void deletion.mutate(roleId) : void 0,
42
+ permissions: role.data && (editable ? /* @__PURE__ */ jsx(RolePermissions_default, {
43
+ roleId,
44
+ editable: true,
45
+ administrationMode,
46
+ preferences
47
+ }) : /* @__PURE__ */ jsx(BaseRolePermissions_default, {
48
+ permissions: role.data.permissions ?? [],
49
+ preferences
50
+ })),
51
+ assignments: role.data && /* @__PURE__ */ jsx(RoleAssignments_default, {
52
+ roleId,
53
+ ouId: role.data.ouId,
54
+ editable,
55
+ administrationMode
56
+ }),
57
+ preferences,
58
+ ...rest
59
+ });
60
+ };
61
+ var RoleDetails_default = RoleDetails;
62
+
63
+ //#endregion
64
+ export { RoleDetails_default as default };
65
+ //# sourceMappingURL=RoleDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleDetails.js","names":["RoleDetails: FC<RoleDetailsProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","role: ResourceQueryResult<Role>","useResourceQuery","deletion: ResourceMutationResult<void, string>","useResourceMutation","BaseRoleDetails","RolePermissions","BaseRolePermissions","RoleAssignments"],"sources":["../../../../src/components/management/RoleDetails/RoleDetails.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n AdministrationMode,\n Role,\n RoleQueryKeys,\n deleteRole,\n getRole,\n toManagementErrorMessage,\n} from '@thunderid/browser';\nimport {FC, ReactElement} from 'react';\nimport BaseRoleDetails, {BaseRoleDetailsProps} from './BaseRoleDetails';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationResult} from '../../../hooks/management/useResourceMutation';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\nimport RoleAssignments from '../RoleAssignments/RoleAssignments';\nimport BaseRolePermissions from '../RolePermissions/BaseRolePermissions';\nimport RolePermissions from '../RolePermissions/RolePermissions';\n\nexport type RoleDetailsProps = Omit<\n BaseRoleDetailsProps,\n 'assignments' | 'error' | 'isDeleting' | 'isLoading' | 'onDelete' | 'permissions' | 'role'\n> & {\n /**\n * How the role is deleted and an assignment removed. `flow` runs the administration flow the server configures for\n * it, which can revoke grants and end sessions first. It needs `baseUrl`.\n * @default 'native'\n */\n administrationMode?: AdministrationMode;\n /**\n * Whether the role can be deleted from this view. Read-only roles never can.\n * @default false\n */\n deletable?: boolean;\n /**\n * Whether the role's permissions can be added and removed, and the role assigned and taken away, from\n * this view.\n * @default false\n */\n editable?: boolean;\n /**\n * Called after the role has been deleted.\n */\n onDeleted?: () => void;\n roleId: string;\n};\n\n/**\n * Shows a role with its permissions and assignments, and lets the signed-in user manage the permissions and\n * assignments and delete the role.\n *\n * @example\n * ```tsx\n * <RoleDetails roleId={roleId} editable deletable onDeleted={() => navigate('/roles')} />\n * ```\n */\nconst RoleDetails: FC<RoleDetailsProps> = ({\n administrationMode,\n deletable = false,\n editable = false,\n onDeleted,\n preferences,\n roleId,\n ...rest\n}: RoleDetailsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const endpoint: ManagementEndpoint = useManagementEndpoint('roles');\n const role: ResourceQueryResult<Role> = useResourceQuery(\n [RoleQueryKeys.ROLE, roleId],\n (fetcher) => getRole({...endpoint, fetcher, roleId}),\n {enabled: Boolean(roleId)},\n );\n const deletion: ResourceMutationResult<void, string> = useResourceMutation(\n (id: string, fetcher) => deleteRole({...endpoint, administrationMode, fetcher, roleId: id}),\n () => [[RoleQueryKeys.ROLES], [RoleQueryKeys.ROLE_ASSIGNMENTS]],\n {onSuccess: onDeleted},\n );\n\n return (\n <BaseRoleDetails\n role={role.data}\n isLoading={role.isLoading}\n error={\n toManagementErrorMessage(t, role.error, 'admin.roles.details.error') ??\n toManagementErrorMessage(t, deletion.error, 'admin.roles.details.delete.error')\n }\n isDeleting={deletion.isLoading}\n onDelete={deletable ? (): void => void deletion.mutate(roleId) : undefined}\n permissions={\n role.data &&\n (editable ? (\n // Shares the role's query, so editing the permissions refreshes this view too.\n <RolePermissions roleId={roleId} editable administrationMode={administrationMode} preferences={preferences} />\n ) : (\n // The role carries its permissions, so they are shown without fetching it again.\n <BaseRolePermissions permissions={role.data.permissions ?? []} preferences={preferences} />\n ))\n }\n assignments={\n role.data && (\n // Assigning waits for the role, so the candidates are only ever listed from its organization unit.\n <RoleAssignments\n roleId={roleId}\n ouId={role.data.ouId}\n editable={editable}\n administrationMode={administrationMode}\n />\n )\n }\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default RoleDetails;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0DA,MAAMA,eAAqC,EACzC,oBACA,YAAY,OACZ,WAAW,OACX,WACA,aACA,OACA,GAAG,WACiC;CACpC,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAMC,WAA+BC,8BAAsB,QAAQ;CACnE,MAAMC,OAAkCC,yBACtC,CAAC,cAAc,MAAM,OAAO,GAC3B,YAAY,QAAQ;EAAC,GAAG;EAAU;EAAS;EAAO,CAAC,EACpD,EAAC,SAAS,QAAQ,OAAO,EAAC,CAC3B;CACD,MAAMC,WAAiDC,6BACpD,IAAY,YAAY,WAAW;EAAC,GAAG;EAAU;EAAoB;EAAS,QAAQ;EAAG,CAAC,QACrF,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC,cAAc,iBAAiB,CAAC,EAC/D,EAAC,WAAW,WAAU,CACvB;AAED,QACE,oBAACC;EACC,MAAM,KAAK;EACX,WAAW,KAAK;EAChB,OACE,yBAAyB,GAAG,KAAK,OAAO,4BAA4B,IACpE,yBAAyB,GAAG,SAAS,OAAO,mCAAmC;EAEjF,YAAY,SAAS;EACrB,UAAU,kBAAwB,KAAK,SAAS,OAAO,OAAO,GAAG;EACjE,aACE,KAAK,SACJ,WAEC,oBAACC;GAAwB;GAAQ;GAA6B;GAAiC;IAAe,GAG9G,oBAACC;GAAoB,aAAa,KAAK,KAAK,eAAe,EAAE;GAAe;IAAe;EAG/F,aACE,KAAK,QAEH,oBAACC;GACS;GACR,MAAM,KAAK,KAAK;GACN;GACU;IACpB;EAGO;EACb,GAAI;GACJ;;AAIN,0BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleList.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleList/BaseRoleList.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAC,EAAE,EAAgB,SAAS,EAAC,MAAM,OAAO,CAAC;AAGlD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAGpE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,WAAW,CAAC,GAAG;IAAC,KAAK,EAAE,WAAW,EAAE,CAAA;CAAC,CAAC;AAEjG,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,QAAA,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CA8EvC,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -3,7 +3,7 @@ import DataTable_default from "../../primitives/DataTable/DataTable.js";
3
3
  import AdminSection_default from "../shared/AdminSection.js";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
 
6
- //#region src/components/admin/RoleList/BaseRoleList.tsx
6
+ //#region src/components/management/RoleList/BaseRoleList.tsx
7
7
  /**
8
8
  * Lists roles with their description and organization unit. Holds no data of its own: pass the
9
9
  * page of roles and handle selection and pagination.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleList.js","names":["BaseRoleList: FC<BaseRoleListProps>","useTranslation","columns: DataTableColumn<RoleSummary>[]","AdminSection","DataTable"],"sources":["../../../../src/components/management/RoleList/BaseRoleList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Preferences, RoleSummary} from '@thunderid/browser';\nimport {FC, ReactElement, ReactNode} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport DataTable, {DataTableColumn} from '../../primitives/DataTable/DataTable';\nimport {AdminListRenderProps} from '../shared/AdminListRenderProps';\nimport AdminSection from '../shared/AdminSection';\n\n/**\n * What {@link BaseRoleList} hands its `children` render function. `roles` and `rows` are the same array.\n */\nexport type BaseRoleListRenderProps = AdminListRenderProps<RoleSummary> & {roles: RoleSummary[]};\n\nexport interface BaseRoleListProps {\n /**\n * Controls rendered next to the title, such as a button that opens `RoleCreate`.\n */\n actions?: ReactNode;\n /**\n * Renders custom UI in place of the default table, for example a third-party data grid. Receives\n * the roles, the default columns, the loading and error state, and the pagination and selection\n * handlers.\n */\n children?: (props: BaseRoleListRenderProps) => ReactNode;\n className?: string;\n description?: string;\n error?: string | null;\n isLoading?: boolean;\n /**\n * Page size.\n * @default 20\n */\n limit?: number;\n offset?: number;\n /**\n * Called with the offset of the page to show. Pagination is hidden when omitted.\n */\n onPageChange?: (offset: number) => void;\n /**\n * Called when a role is chosen. Rows are selectable only when set.\n */\n onSelect?: (role: RoleSummary) => void;\n preferences?: Preferences;\n roles: RoleSummary[];\n selectedRoleId?: string;\n /**\n * Heading of the list. Pass an empty string to hide it.\n */\n title?: string;\n totalResults?: number;\n}\n\n/**\n * Lists roles with their description and organization unit. Holds no data of its own: pass the\n * page of roles and handle selection and pagination.\n */\nconst BaseRoleList: FC<BaseRoleListProps> = ({\n actions,\n children,\n className,\n description,\n error = null,\n isLoading = false,\n limit = 20,\n offset = 0,\n onPageChange,\n onSelect,\n preferences,\n roles,\n selectedRoleId,\n title,\n totalResults,\n}: BaseRoleListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n\n const columns: DataTableColumn<RoleSummary>[] = [\n {header: t('admin.roles.list.columns.name'), id: 'name', render: (role: RoleSummary): ReactNode => role.name},\n {\n header: t('admin.roles.list.columns.description'),\n id: 'description',\n render: (role: RoleSummary): ReactNode => role.description ?? '',\n },\n {\n header: t('admin.common.columns.organization_unit'),\n id: 'ou',\n render: (role: RoleSummary): ReactNode => role.ouHandle ?? role.ouId,\n },\n ];\n\n if (children) {\n return (\n <div className={className}>\n {children({\n columns,\n error,\n isLoading,\n limit,\n offset,\n onPageChange,\n onSelect,\n rows: roles,\n selectedRowId: selectedRoleId,\n totalResults: totalResults ?? roles.length,\n roles,\n })}\n </div>\n );\n }\n\n return (\n <AdminSection\n block=\"role-list\"\n className={className}\n title={title ?? t('admin.roles.list.title')}\n description={description}\n actions={actions}\n preferences={preferences}\n >\n <DataTable\n caption={title?.length ? title : t('admin.roles.list.title')}\n columns={columns}\n rows={roles}\n getRowId={(role: RoleSummary): string => role.id}\n isLoading={isLoading}\n error={error}\n emptyText={t('admin.roles.list.empty')}\n onRowClick={onSelect}\n selectedRowId={selectedRoleId}\n pagination={\n onPageChange ? {limit, offset, onChange: onPageChange, total: totalResults ?? roles.length} : undefined\n }\n />\n </AdminSection>\n );\n};\n\nexport default BaseRoleList;\n"],"mappings":";;;;;;;;;;AA0DA,MAAMA,gBAAuC,EAC3C,SACA,UACA,WACA,aACA,QAAQ,MACR,YAAY,OACZ,QAAQ,IACR,SAAS,GACT,cACA,UACA,aACA,OACA,gBACA,OACA,mBACqC;CACrC,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAE7C,MAAMC,UAA0C;EAC9C;GAAC,QAAQ,EAAE,gCAAgC;GAAE,IAAI;GAAQ,SAAS,SAAiC,KAAK;GAAK;EAC7G;GACE,QAAQ,EAAE,uCAAuC;GACjD,IAAI;GACJ,SAAS,SAAiC,KAAK,eAAe;GAC/D;EACD;GACE,QAAQ,EAAE,yCAAyC;GACnD,IAAI;GACJ,SAAS,SAAiC,KAAK,YAAY,KAAK;GACjE;EACF;AAED,KAAI,SACF,QACE,oBAAC;EAAe;YACb,SAAS;GACR;GACA;GACA;GACA;GACA;GACA;GACA;GACA,MAAM;GACN,eAAe;GACf,cAAc,gBAAgB,MAAM;GACpC;GACD,CAAC;GACE;AAIV,QACE,oBAACC;EACC,OAAM;EACK;EACX,OAAO,SAAS,EAAE,yBAAyB;EAC9B;EACJ;EACI;YAEb,oBAACC;GACC,SAAS,OAAO,SAAS,QAAQ,EAAE,yBAAyB;GACnD;GACT,MAAM;GACN,WAAW,SAA8B,KAAK;GACnC;GACJ;GACP,WAAW,EAAE,yBAAyB;GACtC,YAAY;GACZ,eAAe;GACf,YACE,eAAe;IAAC;IAAO;IAAQ,UAAU;IAAc,OAAO,gBAAgB,MAAM;IAAO,GAAG;IAEhG;GACW;;AAInB,2BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleList.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleList/RoleList.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,EAAE,EAAyB,MAAM,OAAO,CAAC;AACjD,OAAqB,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAK/D,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,iBAAiB,EACjB,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,cAAc,CAC7E,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAsB/B,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -6,7 +6,7 @@ import { RoleQueryKeys, getRoles, toManagementErrorMessage } from "@thunderid/br
6
6
  import { useState } from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
 
9
- //#region src/components/admin/RoleList/RoleList.tsx
9
+ //#region src/components/management/RoleList/RoleList.tsx
10
10
  /**
11
11
  * Lists the roles the signed-in user is allowed to see, a page at a time.
12
12
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleList.js","names":["RoleList: FC<RoleListProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","BaseRoleList"],"sources":["../../../../src/components/management/RoleList/RoleList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {RoleListResponse, RoleQueryKeys, getRoles, toManagementErrorMessage} from '@thunderid/browser';\nimport {FC, ReactElement, useState} from 'react';\nimport BaseRoleList, {BaseRoleListProps} from './BaseRoleList';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\nexport type RoleListProps = Omit<\n BaseRoleListProps,\n 'error' | 'isLoading' | 'offset' | 'onPageChange' | 'roles' | 'totalResults'\n>;\n\n/**\n * Lists the roles the signed-in user is allowed to see, a page at a time.\n *\n * @example\n * ```tsx\n * <RoleList onSelect={(role) => setSelectedRoleId(role.id)} />\n * ```\n */\nconst RoleList: FC<RoleListProps> = ({limit = 20, preferences, ...rest}: RoleListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const [offset, setOffset] = useState<number>(0);\n const endpoint: ManagementEndpoint = useManagementEndpoint('roles');\n const {data, error, isLoading}: ResourceQueryResult<RoleListResponse> = useResourceQuery(\n [RoleQueryKeys.ROLES, {limit, offset}],\n (fetcher) => getRoles({...endpoint, fetcher, limit, offset}),\n );\n\n return (\n <BaseRoleList\n roles={data?.roles ?? []}\n totalResults={data?.totalResults}\n isLoading={isLoading}\n error={toManagementErrorMessage(t, error, 'admin.roles.list.error')}\n limit={limit}\n offset={offset}\n onPageChange={setOffset}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default RoleList;\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,MAAMA,YAA+B,EAAC,QAAQ,IAAI,YAAa,GAAG,WAAuC;CACvG,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAM,CAAC,QAAQ,aAAa,SAAiB,EAAE;CAC/C,MAAMC,WAA+BC,8BAAsB,QAAQ;CACnE,MAAM,EAAC,MAAM,OAAO,cAAoDC,yBACtE,CAAC,cAAc,OAAO;EAAC;EAAO;EAAO,CAAC,GACrC,YAAY,SAAS;EAAC,GAAG;EAAU;EAAS;EAAO;EAAO,CAAC,CAC7D;AAED,QACE,oBAACC;EACC,OAAO,MAAM,SAAS,EAAE;EACxB,cAAc,MAAM;EACT;EACX,OAAO,yBAAyB,GAAG,OAAO,yBAAyB;EAC5D;EACC;EACR,cAAc;EACD;EACb,GAAI;GACJ;;AAIN,uBAAe"}
@@ -0,0 +1,104 @@
1
+ import { Preferences, ResourceServerPermission, RoleResourcePermissions } from '@thunderid/browser';
2
+ import { FC, ReactNode } from 'react';
3
+ /**
4
+ * A resource server a permission can be granted on.
5
+ */
6
+ export interface RolePermissionResourceServer {
7
+ id: string;
8
+ name: string;
9
+ }
10
+ /**
11
+ * One permission on one resource server, as added to or removed from a role.
12
+ */
13
+ export interface RolePermissionChange {
14
+ permission: string;
15
+ resourceServerId: string;
16
+ }
17
+ /**
18
+ * What {@link BaseRolePermissions} hands its `children` render function, so the permissions can be
19
+ * shown with any UI.
20
+ */
21
+ export interface BaseRolePermissionsRenderProps {
22
+ /**
23
+ * The permissions that can be granted, keyed by resource server identifier, for the resource servers
24
+ * loaded so far. Undefined when adding is not allowed.
25
+ */
26
+ availablePermissions?: Record<string, ResourceServerPermission[]>;
27
+ error: string | null;
28
+ isLoading: boolean;
29
+ isMutating: boolean;
30
+ /**
31
+ * Grants a permission. Undefined when the permissions cannot be edited.
32
+ */
33
+ onAdd?: (change: RolePermissionChange) => void;
34
+ /**
35
+ * Revokes a permission. Undefined when the permissions cannot be edited. Ask the user to confirm
36
+ * before calling it.
37
+ */
38
+ onRemove?: (change: RolePermissionChange) => void;
39
+ /**
40
+ * Asks for the permissions of a resource server, which then appear in `availablePermissions`.
41
+ * Undefined when adding is not allowed.
42
+ */
43
+ onResourceServerSelect?: (resourceServerId: string) => void;
44
+ /**
45
+ * The resource servers the role grants at least one permission on, with those permissions.
46
+ */
47
+ permissions: RoleResourcePermissions[];
48
+ /**
49
+ * Returns a resource server's display name, or its identifier when the name is missing.
50
+ */
51
+ resolveResourceServerName: (resourceServerId: string) => string;
52
+ /**
53
+ * The resource servers permissions can be granted on. Undefined when adding is not allowed.
54
+ */
55
+ resourceServers?: RolePermissionResourceServer[];
56
+ }
57
+ export interface BaseRolePermissionsProps {
58
+ /**
59
+ * The permissions that can be granted, keyed by resource server identifier. A resource server
60
+ * missing here is still loading, and `onResourceServerSelect` is called to load it.
61
+ */
62
+ availablePermissions?: Record<string, ResourceServerPermission[]>;
63
+ /**
64
+ * Renders custom UI in place of the default view. Receives the granted permissions grouped by
65
+ * resource server, the loading and error state, a resource server name resolver and, when the
66
+ * permissions can be edited, the add and remove handlers with what can be added.
67
+ */
68
+ children?: (props: BaseRolePermissionsRenderProps) => ReactNode;
69
+ className?: string;
70
+ description?: string;
71
+ error?: string | null;
72
+ isLoading?: boolean;
73
+ isMutating?: boolean;
74
+ /**
75
+ * Grants a permission. Adding is hidden when omitted, or when `resourceServers` is omitted.
76
+ */
77
+ onAdd?: (change: RolePermissionChange) => void;
78
+ /**
79
+ * Revokes a permission, after the user confirms. Removing is hidden when omitted.
80
+ */
81
+ onRemove?: (change: RolePermissionChange) => void;
82
+ /**
83
+ * Called when a resource server is picked to add a permission on, so its permissions can be loaded.
84
+ */
85
+ onResourceServerSelect?: (resourceServerId: string) => void;
86
+ permissions: RoleResourcePermissions[];
87
+ preferences?: Preferences;
88
+ /**
89
+ * Display names of resource servers, keyed by identifier. The identifier is shown when a name is missing.
90
+ */
91
+ resourceServerNames?: Record<string, string>;
92
+ /**
93
+ * The resource servers a permission can be added on.
94
+ */
95
+ resourceServers?: RolePermissionResourceServer[];
96
+ title?: string;
97
+ }
98
+ /**
99
+ * Shows the permissions a role grants, grouped by resource server, and lets the caller add and remove
100
+ * them. Holds no data of its own.
101
+ */
102
+ declare const BaseRolePermissions: FC<BaseRolePermissionsProps>;
103
+ export default BaseRolePermissions;
104
+ //# sourceMappingURL=BaseRolePermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRolePermissions.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RolePermissions/BaseRolePermissions.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAC,WAAW,EAAE,wBAAwB,EAAE,uBAAuB,EAAe,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAc,EAAE,EAA2B,SAAS,EAAW,MAAM,OAAO,CAAC;AAUpF;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAClE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D;;OAEG;IACH,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC;;OAEG;IACH,yBAAyB,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE;;OAEG;IACH,eAAe,CAAC,EAAE,4BAA4B,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAClE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,SAAS,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAClD;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C;;OAEG;IACH,eAAe,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,QAAA,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAmMrD,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,178 @@
1
+ import useTranslation_default from "../../../hooks/useTranslation.js";
2
+ import Spinner_default from "../../primitives/Spinner/Spinner.js";
3
+ import Button_default from "../../primitives/Button/Button.js";
4
+ import Alert_default from "../../primitives/Alert/Alert.js";
5
+ import Select_default from "../../primitives/Select/Select.js";
6
+ import useAdminPartStyles_default from "../shared/useAdminPartStyles.js";
7
+ import AdminSection_default from "../shared/AdminSection.js";
8
+ import { ChipList, Panel } from "../shared/AdminParts.js";
9
+ import { useState } from "react";
10
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
+
12
+ //#region src/components/management/RolePermissions/BaseRolePermissions.tsx
13
+ /**
14
+ * Shows the permissions a role grants, grouped by resource server, and lets the caller add and remove
15
+ * them. Holds no data of its own.
16
+ */
17
+ const BaseRolePermissions = ({ availablePermissions, children, className, description, error = null, isLoading = false, isMutating = false, onAdd, onRemove, onResourceServerSelect, permissions, preferences, resourceServerNames, resourceServers, title }) => {
18
+ const { t } = useTranslation_default(preferences?.i18n);
19
+ const styles = useAdminPartStyles_default();
20
+ const [resourceServerId, setResourceServerId] = useState("");
21
+ const [permission, setPermission] = useState("");
22
+ const [pendingRemoval, setPendingRemoval] = useState(null);
23
+ const granted = permissions.filter((entry) => entry.permissions.length > 0);
24
+ const canAdd = Boolean(onAdd && resourceServers);
25
+ const resolveResourceServerName = (id) => resourceServerNames?.[id] ?? resourceServers?.find((server) => server.id === id)?.name ?? id;
26
+ if (children) return /* @__PURE__ */ jsx("div", {
27
+ className,
28
+ children: children({
29
+ availablePermissions: canAdd ? availablePermissions ?? {} : void 0,
30
+ error,
31
+ isLoading,
32
+ isMutating,
33
+ onAdd: canAdd ? onAdd : void 0,
34
+ onRemove,
35
+ onResourceServerSelect: canAdd ? onResourceServerSelect : void 0,
36
+ permissions: granted,
37
+ resolveResourceServerName,
38
+ resourceServers: canAdd ? resourceServers : void 0
39
+ })
40
+ });
41
+ const grantedOn = (id) => granted.find((entry) => entry.resourceServerId === id)?.permissions ?? [];
42
+ const candidates = resourceServerId ? availablePermissions?.[resourceServerId] : void 0;
43
+ const permissionOptions = (candidates ?? []).filter((candidate) => !grantedOn(resourceServerId).includes(candidate.permission)).map((candidate) => ({
44
+ label: `${candidate.resourceName ? `${candidate.resourceName} / ` : ""}${candidate.name} (${candidate.permission})`,
45
+ value: candidate.permission
46
+ }));
47
+ const handleSubmit = (event) => {
48
+ event.preventDefault();
49
+ if (onAdd && resourceServerId && permission) {
50
+ onAdd({
51
+ permission,
52
+ resourceServerId
53
+ });
54
+ setPermission("");
55
+ }
56
+ };
57
+ const renderAdd = () => {
58
+ if (!canAdd) return null;
59
+ return /* @__PURE__ */ jsxs("form", {
60
+ className: styles["row"],
61
+ onSubmit: handleSubmit,
62
+ style: { alignItems: "flex-end" },
63
+ children: [
64
+ /* @__PURE__ */ jsx(Select_default, {
65
+ label: t("admin.roles.permissions.fields.resource_server"),
66
+ name: "resourceServer",
67
+ value: resourceServerId,
68
+ placeholder: t("admin.roles.permissions.fields.resource_server_placeholder"),
69
+ options: (resourceServers ?? []).map((server) => ({
70
+ label: server.name,
71
+ value: server.id
72
+ })),
73
+ onChange: (event) => {
74
+ setResourceServerId(event.target.value);
75
+ setPermission("");
76
+ if (event.target.value) onResourceServerSelect?.(event.target.value);
77
+ }
78
+ }),
79
+ /* @__PURE__ */ jsx(Select_default, {
80
+ label: t("admin.roles.permissions.fields.permission"),
81
+ name: "permission",
82
+ value: permission,
83
+ disabled: !resourceServerId,
84
+ loading: Boolean(resourceServerId) && candidates === void 0,
85
+ placeholder: t("admin.roles.permissions.fields.permission_placeholder"),
86
+ emptyText: t("admin.roles.permissions.fields.permission_empty"),
87
+ options: permissionOptions,
88
+ onChange: (event) => setPermission(event.target.value)
89
+ }),
90
+ /* @__PURE__ */ jsx(Button_default, {
91
+ type: "submit",
92
+ loading: isMutating,
93
+ disabled: !resourceServerId || !permission || isMutating,
94
+ children: t("admin.roles.permissions.add")
95
+ })
96
+ ]
97
+ });
98
+ };
99
+ const renderContent = () => {
100
+ if (isLoading) return /* @__PURE__ */ jsx(Spinner_default, { size: "small" });
101
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
102
+ error && /* @__PURE__ */ jsx(Alert_default, {
103
+ variant: "error",
104
+ role: "alert",
105
+ children: error
106
+ }),
107
+ renderAdd(),
108
+ pendingRemoval && onRemove && /* @__PURE__ */ jsxs("span", {
109
+ className: styles["confirm"],
110
+ role: "group",
111
+ "aria-label": t("admin.roles.permissions.remove_confirm", { permission: pendingRemoval.permission }),
112
+ children: [
113
+ /* @__PURE__ */ jsx("span", { children: t("admin.roles.permissions.remove_confirm", { permission: pendingRemoval.permission }) }),
114
+ /* @__PURE__ */ jsx(Button_default, {
115
+ variant: "text",
116
+ size: "small",
117
+ disabled: isMutating,
118
+ onClick: () => setPendingRemoval(null),
119
+ children: t("admin.common.actions.cancel")
120
+ }),
121
+ /* @__PURE__ */ jsx(Button_default, {
122
+ color: "error",
123
+ size: "small",
124
+ loading: isMutating,
125
+ disabled: isMutating,
126
+ onClick: () => {
127
+ onRemove(pendingRemoval);
128
+ setPendingRemoval(null);
129
+ },
130
+ children: t("admin.common.actions.confirm")
131
+ })
132
+ ]
133
+ }),
134
+ granted.length === 0 && !error && /* @__PURE__ */ jsx("span", {
135
+ className: styles["muted"],
136
+ children: t("admin.roles.permissions.empty")
137
+ }),
138
+ granted.map((entry) => {
139
+ const name = resolveResourceServerName(entry.resourceServerId);
140
+ return /* @__PURE__ */ jsx(Panel, {
141
+ title: name,
142
+ children: /* @__PURE__ */ jsx(ChipList, {
143
+ label: name,
144
+ emptyText: t("admin.roles.permissions.empty"),
145
+ items: entry.permissions.map((grantedPermission) => ({
146
+ id: grantedPermission,
147
+ label: grantedPermission,
148
+ ...onRemove ? {
149
+ onRemove: () => setPendingRemoval({
150
+ permission: grantedPermission,
151
+ resourceServerId: entry.resourceServerId
152
+ }),
153
+ removeLabel: t("admin.roles.permissions.remove_label", {
154
+ permission: grantedPermission,
155
+ resourceServer: name
156
+ })
157
+ } : {}
158
+ }))
159
+ })
160
+ }, entry.resourceServerId);
161
+ })
162
+ ] });
163
+ };
164
+ return /* @__PURE__ */ jsx(AdminSection_default, {
165
+ block: "role-permissions",
166
+ className,
167
+ title: title ?? t("admin.roles.permissions.title"),
168
+ description,
169
+ headingLevel: 3,
170
+ preferences,
171
+ children: renderContent()
172
+ });
173
+ };
174
+ var BaseRolePermissions_default = BaseRolePermissions;
175
+
176
+ //#endregion
177
+ export { BaseRolePermissions_default as default };
178
+ //# sourceMappingURL=BaseRolePermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRolePermissions.js","names":["BaseRolePermissions: FC<BaseRolePermissionsProps>","useTranslation","styles: Record<string, string>","useAdminPartStyles","granted: RoleResourcePermissions[]","candidates: ResourceServerPermission[] | undefined","permissionOptions: SelectOption[]","Select","Button","Spinner","Alert","name: string","AdminSection"],"sources":["../../../../src/components/management/RolePermissions/BaseRolePermissions.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Preferences, ResourceServerPermission, RoleResourcePermissions, SelectOption} from '@thunderid/browser';\nimport {ChangeEvent, FC, FormEvent, ReactElement, ReactNode, useState} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport Alert from '../../primitives/Alert/Alert';\nimport Button from '../../primitives/Button/Button';\nimport Select from '../../primitives/Select/Select';\nimport Spinner from '../../primitives/Spinner/Spinner';\nimport {ChipList, Panel} from '../shared/AdminParts';\nimport AdminSection from '../shared/AdminSection';\nimport useAdminPartStyles from '../shared/useAdminPartStyles';\n\n/**\n * A resource server a permission can be granted on.\n */\nexport interface RolePermissionResourceServer {\n id: string;\n name: string;\n}\n\n/**\n * One permission on one resource server, as added to or removed from a role.\n */\nexport interface RolePermissionChange {\n permission: string;\n resourceServerId: string;\n}\n\n/**\n * What {@link BaseRolePermissions} hands its `children` render function, so the permissions can be\n * shown with any UI.\n */\nexport interface BaseRolePermissionsRenderProps {\n /**\n * The permissions that can be granted, keyed by resource server identifier, for the resource servers\n * loaded so far. Undefined when adding is not allowed.\n */\n availablePermissions?: Record<string, ResourceServerPermission[]>;\n error: string | null;\n isLoading: boolean;\n isMutating: boolean;\n /**\n * Grants a permission. Undefined when the permissions cannot be edited.\n */\n onAdd?: (change: RolePermissionChange) => void;\n /**\n * Revokes a permission. Undefined when the permissions cannot be edited. Ask the user to confirm\n * before calling it.\n */\n onRemove?: (change: RolePermissionChange) => void;\n /**\n * Asks for the permissions of a resource server, which then appear in `availablePermissions`.\n * Undefined when adding is not allowed.\n */\n onResourceServerSelect?: (resourceServerId: string) => void;\n /**\n * The resource servers the role grants at least one permission on, with those permissions.\n */\n permissions: RoleResourcePermissions[];\n /**\n * Returns a resource server's display name, or its identifier when the name is missing.\n */\n resolveResourceServerName: (resourceServerId: string) => string;\n /**\n * The resource servers permissions can be granted on. Undefined when adding is not allowed.\n */\n resourceServers?: RolePermissionResourceServer[];\n}\n\nexport interface BaseRolePermissionsProps {\n /**\n * The permissions that can be granted, keyed by resource server identifier. A resource server\n * missing here is still loading, and `onResourceServerSelect` is called to load it.\n */\n availablePermissions?: Record<string, ResourceServerPermission[]>;\n /**\n * Renders custom UI in place of the default view. Receives the granted permissions grouped by\n * resource server, the loading and error state, a resource server name resolver and, when the\n * permissions can be edited, the add and remove handlers with what can be added.\n */\n children?: (props: BaseRolePermissionsRenderProps) => ReactNode;\n className?: string;\n description?: string;\n error?: string | null;\n isLoading?: boolean;\n isMutating?: boolean;\n /**\n * Grants a permission. Adding is hidden when omitted, or when `resourceServers` is omitted.\n */\n onAdd?: (change: RolePermissionChange) => void;\n /**\n * Revokes a permission, after the user confirms. Removing is hidden when omitted.\n */\n onRemove?: (change: RolePermissionChange) => void;\n /**\n * Called when a resource server is picked to add a permission on, so its permissions can be loaded.\n */\n onResourceServerSelect?: (resourceServerId: string) => void;\n permissions: RoleResourcePermissions[];\n preferences?: Preferences;\n /**\n * Display names of resource servers, keyed by identifier. The identifier is shown when a name is missing.\n */\n resourceServerNames?: Record<string, string>;\n /**\n * The resource servers a permission can be added on.\n */\n resourceServers?: RolePermissionResourceServer[];\n title?: string;\n}\n\n/**\n * Shows the permissions a role grants, grouped by resource server, and lets the caller add and remove\n * them. Holds no data of its own.\n */\nconst BaseRolePermissions: FC<BaseRolePermissionsProps> = ({\n availablePermissions,\n children,\n className,\n description,\n error = null,\n isLoading = false,\n isMutating = false,\n onAdd,\n onRemove,\n onResourceServerSelect,\n permissions,\n preferences,\n resourceServerNames,\n resourceServers,\n title,\n}: BaseRolePermissionsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const styles: Record<string, string> = useAdminPartStyles();\n const [resourceServerId, setResourceServerId] = useState<string>('');\n const [permission, setPermission] = useState<string>('');\n const [pendingRemoval, setPendingRemoval] = useState<RolePermissionChange | null>(null);\n const granted: RoleResourcePermissions[] = permissions.filter(\n (entry: RoleResourcePermissions) => entry.permissions.length > 0,\n );\n const canAdd = Boolean(onAdd && resourceServers);\n const resolveResourceServerName = (id: string): string =>\n resourceServerNames?.[id] ??\n resourceServers?.find((server: RolePermissionResourceServer) => server.id === id)?.name ??\n id;\n\n if (children) {\n return (\n <div className={className}>\n {children({\n availablePermissions: canAdd ? (availablePermissions ?? {}) : undefined,\n error,\n isLoading,\n isMutating,\n onAdd: canAdd ? onAdd : undefined,\n onRemove,\n onResourceServerSelect: canAdd ? onResourceServerSelect : undefined,\n permissions: granted,\n resolveResourceServerName,\n resourceServers: canAdd ? resourceServers : undefined,\n })}\n </div>\n );\n }\n\n const grantedOn = (id: string): string[] =>\n granted.find((entry: RoleResourcePermissions) => entry.resourceServerId === id)?.permissions ?? [];\n const candidates: ResourceServerPermission[] | undefined = resourceServerId\n ? availablePermissions?.[resourceServerId]\n : undefined;\n const permissionOptions: SelectOption[] = (candidates ?? [])\n .filter((candidate: ResourceServerPermission) => !grantedOn(resourceServerId).includes(candidate.permission))\n .map((candidate: ResourceServerPermission) => ({\n label: `${candidate.resourceName ? `${candidate.resourceName} / ` : ''}${candidate.name} (${candidate.permission})`,\n value: candidate.permission,\n }));\n\n const handleSubmit = (event: FormEvent<HTMLFormElement>): void => {\n event.preventDefault();\n\n if (onAdd && resourceServerId && permission) {\n onAdd({permission, resourceServerId});\n setPermission('');\n }\n };\n\n const renderAdd = (): ReactElement | null => {\n if (!canAdd) {\n return null;\n }\n\n return (\n <form className={styles['row']} onSubmit={handleSubmit} style={{alignItems: 'flex-end'}}>\n <Select\n label={t('admin.roles.permissions.fields.resource_server')}\n name=\"resourceServer\"\n value={resourceServerId}\n placeholder={t('admin.roles.permissions.fields.resource_server_placeholder')}\n options={(resourceServers ?? []).map((server: RolePermissionResourceServer) => ({\n label: server.name,\n value: server.id,\n }))}\n onChange={(event: ChangeEvent<HTMLSelectElement>): void => {\n setResourceServerId(event.target.value);\n setPermission('');\n if (event.target.value) {\n onResourceServerSelect?.(event.target.value);\n }\n }}\n />\n <Select\n label={t('admin.roles.permissions.fields.permission')}\n name=\"permission\"\n value={permission}\n disabled={!resourceServerId}\n loading={Boolean(resourceServerId) && candidates === undefined}\n placeholder={t('admin.roles.permissions.fields.permission_placeholder')}\n emptyText={t('admin.roles.permissions.fields.permission_empty')}\n options={permissionOptions}\n onChange={(event: ChangeEvent<HTMLSelectElement>): void => setPermission(event.target.value)}\n />\n <Button type=\"submit\" loading={isMutating} disabled={!resourceServerId || !permission || isMutating}>\n {t('admin.roles.permissions.add')}\n </Button>\n </form>\n );\n };\n\n const renderContent = (): ReactElement => {\n if (isLoading) {\n return <Spinner size=\"small\" />;\n }\n\n return (\n <>\n {error && (\n <Alert variant=\"error\" role=\"alert\">\n {error}\n </Alert>\n )}\n {renderAdd()}\n {pendingRemoval && onRemove && (\n <span\n className={styles['confirm']}\n role=\"group\"\n aria-label={t('admin.roles.permissions.remove_confirm', {permission: pendingRemoval.permission})}\n >\n <span>{t('admin.roles.permissions.remove_confirm', {permission: pendingRemoval.permission})}</span>\n <Button variant=\"text\" size=\"small\" disabled={isMutating} onClick={(): void => setPendingRemoval(null)}>\n {t('admin.common.actions.cancel')}\n </Button>\n <Button\n color=\"error\"\n size=\"small\"\n loading={isMutating}\n disabled={isMutating}\n onClick={(): void => {\n onRemove(pendingRemoval);\n setPendingRemoval(null);\n }}\n >\n {t('admin.common.actions.confirm')}\n </Button>\n </span>\n )}\n {granted.length === 0 && !error && (\n <span className={styles['muted']}>{t('admin.roles.permissions.empty')}</span>\n )}\n {granted.map((entry: RoleResourcePermissions) => {\n const name: string = resolveResourceServerName(entry.resourceServerId);\n\n return (\n <Panel key={entry.resourceServerId} title={name}>\n <ChipList\n label={name}\n emptyText={t('admin.roles.permissions.empty')}\n items={entry.permissions.map((grantedPermission: string) => ({\n id: grantedPermission,\n label: grantedPermission,\n ...(onRemove\n ? {\n onRemove: (): void =>\n setPendingRemoval({permission: grantedPermission, resourceServerId: entry.resourceServerId}),\n removeLabel: t('admin.roles.permissions.remove_label', {\n permission: grantedPermission,\n resourceServer: name,\n }),\n }\n : {}),\n }))}\n />\n </Panel>\n );\n })}\n </>\n );\n };\n\n return (\n <AdminSection\n block=\"role-permissions\"\n className={className}\n title={title ?? t('admin.roles.permissions.title')}\n description={description}\n headingLevel={3}\n preferences={preferences}\n >\n {renderContent()}\n </AdminSection>\n );\n};\n\nexport default BaseRolePermissions;\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { AdministrationMode } from '@thunderid/browser';
2
+ import { FC } from 'react';
3
+ import { BaseRolePermissionsProps } from './BaseRolePermissions';
4
+ export type RolePermissionsProps = Omit<BaseRolePermissionsProps, 'availablePermissions' | 'error' | 'isLoading' | 'isMutating' | 'onAdd' | 'onRemove' | 'onResourceServerSelect' | 'permissions' | 'resourceServers'> & {
5
+ /**
6
+ * How an update that removes a permission is made. `flow` runs the administration flow the server
7
+ * configures for it. It needs `baseUrl`.
8
+ * @default 'native'
9
+ */
10
+ administrationMode?: AdministrationMode;
11
+ /**
12
+ * Whether permissions can be added and removed from this view. Read-only roles never can.
13
+ * @default false
14
+ */
15
+ editable?: boolean;
16
+ roleId: string;
17
+ };
18
+ /**
19
+ * Shows the permissions a role grants and, when `editable`, lets the signed-in user grant permissions
20
+ * from the resource servers' actions and revoke them. Every change saves the role.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * <RolePermissions roleId={roleId} editable />
25
+ * ```
26
+ */
27
+ declare const RolePermissions: FC<RolePermissionsProps>;
28
+ export default RolePermissions;
29
+ //# sourceMappingURL=RolePermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RolePermissions.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RolePermissions/RolePermissions.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAYnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,EAAE,EAAkC,MAAM,OAAO,CAAC;AAC1D,OAA4B,EAC1B,wBAAwB,EAGzB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,wBAAwB,EACtB,sBAAsB,GACtB,OAAO,GACP,WAAW,GACX,YAAY,GACZ,OAAO,GACP,UAAU,GACV,wBAAwB,GACxB,aAAa,GACb,iBAAiB,CACpB,GAAG;IACF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA+BF;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA0F7C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,108 @@
1
+ import useTranslation_default from "../../../hooks/useTranslation.js";
2
+ import useManagementEndpoint_default from "../../../hooks/management/useManagementEndpoint.js";
3
+ import useResourceQuery_default from "../../../hooks/management/useResourceQuery.js";
4
+ import useResourceMutation_default from "../../../hooks/management/useResourceMutation.js";
5
+ import BaseRolePermissions_default from "./BaseRolePermissions.js";
6
+ import { RoleQueryKeys, getResourceServerPermissions, getResourceServers, getRole, toManagementErrorMessage, updateRole } from "@thunderid/browser";
7
+ import { useMemo, useState } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+
10
+ //#region src/components/management/RolePermissions/RolePermissions.tsx
11
+ /**
12
+ * Returns the role's permissions with one permission added or taken away, dropping a resource server
13
+ * left with none.
14
+ */
15
+ const changePermissions = (current, { permission, resourceServerId }, add) => {
16
+ const next = current.map((entry) => {
17
+ if (entry.resourceServerId !== resourceServerId) return entry;
18
+ return {
19
+ ...entry,
20
+ permissions: add ? Array.from(new Set([...entry.permissions, permission])) : entry.permissions.filter((granted) => granted !== permission)
21
+ };
22
+ });
23
+ if (add && !next.some((entry) => entry.resourceServerId === resourceServerId)) next.push({
24
+ permissions: [permission],
25
+ resourceServerId
26
+ });
27
+ return next.filter((entry) => entry.permissions.length > 0);
28
+ };
29
+ /**
30
+ * Shows the permissions a role grants and, when `editable`, lets the signed-in user grant permissions
31
+ * from the resource servers' actions and revoke them. Every change saves the role.
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * <RolePermissions roleId={roleId} editable />
36
+ * ```
37
+ */
38
+ const RolePermissions = ({ administrationMode, editable = false, preferences, roleId,...rest }) => {
39
+ const { t } = useTranslation_default(preferences?.i18n);
40
+ const endpoint = useManagementEndpoint_default("roles");
41
+ const resourceServersEndpoint = useManagementEndpoint_default("resourceServers");
42
+ const [selectedResourceServerId, setSelectedResourceServerId] = useState(null);
43
+ const role = useResourceQuery_default([RoleQueryKeys.ROLE, roleId], (fetcher) => getRole({
44
+ ...endpoint,
45
+ fetcher,
46
+ roleId
47
+ }), { enabled: Boolean(roleId) });
48
+ const canEdit = editable && Boolean(role.data) && !role.data?.isReadOnly;
49
+ const resourceServers = useResourceQuery_default([
50
+ RoleQueryKeys.ROLE_PERMISSION_CANDIDATES,
51
+ "resource-servers",
52
+ { limit: 100 }
53
+ ], (fetcher) => getResourceServers({
54
+ ...resourceServersEndpoint,
55
+ fetcher,
56
+ limit: 100
57
+ }), { enabled: canEdit });
58
+ const candidates = useResourceQuery_default([
59
+ RoleQueryKeys.ROLE_PERMISSION_CANDIDATES,
60
+ "permissions",
61
+ selectedResourceServerId
62
+ ], async (fetcher) => ({
63
+ permissions: await getResourceServerPermissions({
64
+ ...resourceServersEndpoint,
65
+ fetcher,
66
+ resourceServerId: selectedResourceServerId
67
+ }),
68
+ resourceServerId: selectedResourceServerId
69
+ }), { enabled: canEdit && Boolean(selectedResourceServerId) });
70
+ const update = useResourceMutation_default((permissions, fetcher) => updateRole({
71
+ ...endpoint,
72
+ administrationMode,
73
+ current: role.data,
74
+ fetcher,
75
+ payload: {
76
+ description: role.data.description,
77
+ name: role.data.name,
78
+ ouId: role.data.ouId,
79
+ permissions
80
+ },
81
+ roleId
82
+ }), () => [[RoleQueryKeys.ROLE, roleId], [RoleQueryKeys.ROLES]]);
83
+ const servers = useMemo(() => (resourceServers.data?.resourceServers ?? []).map((server) => ({
84
+ id: server.id,
85
+ name: server.name
86
+ })), [resourceServers.data]);
87
+ const change = (permissionChange, add) => {
88
+ if (role.data) update.mutate(changePermissions(role.data.permissions ?? [], permissionChange, add));
89
+ };
90
+ return /* @__PURE__ */ jsx(BaseRolePermissions_default, {
91
+ permissions: role.data?.permissions ?? [],
92
+ isLoading: role.isLoading,
93
+ isMutating: update.isLoading,
94
+ error: toManagementErrorMessage(t, role.error, "admin.roles.permissions.error") ?? toManagementErrorMessage(t, update.error, "admin.roles.permissions.update_error") ?? toManagementErrorMessage(t, resourceServers.error ?? candidates.error, "admin.roles.permissions.options_error"),
95
+ resourceServers: canEdit && resourceServers.data ? servers : void 0,
96
+ availablePermissions: candidates.data?.resourceServerId === selectedResourceServerId ? { [candidates.data.resourceServerId]: candidates.data.permissions } : {},
97
+ onResourceServerSelect: setSelectedResourceServerId,
98
+ onAdd: canEdit ? (permissionChange) => change(permissionChange, true) : void 0,
99
+ onRemove: canEdit ? (permissionChange) => change(permissionChange, false) : void 0,
100
+ preferences,
101
+ ...rest
102
+ });
103
+ };
104
+ var RolePermissions_default = RolePermissions;
105
+
106
+ //#endregion
107
+ export { RolePermissions_default as default };
108
+ //# sourceMappingURL=RolePermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RolePermissions.js","names":["next: RoleResourcePermissions[]","RolePermissions: FC<RolePermissionsProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","resourceServersEndpoint: ManagementEndpoint","role: ResourceQueryResult<Role>","useResourceQuery","canEdit: boolean","resourceServers: ResourceQueryResult<ResourceServerListResponse>","candidates: ResourceQueryResult<{permissions: ResourceServerPermission[]; resourceServerId: string}>","update: ResourceMutationResult<Role, RoleResourcePermissions[]>","useResourceMutation","servers: RolePermissionResourceServer[]","BaseRolePermissions"],"sources":["../../../../src/components/management/RolePermissions/RolePermissions.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n AdministrationMode,\n ResourceServer,\n ResourceServerListResponse,\n ResourceServerPermission,\n Role,\n RoleQueryKeys,\n RoleResourcePermissions,\n getResourceServerPermissions,\n getResourceServers,\n getRole,\n toManagementErrorMessage,\n updateRole,\n} from '@thunderid/browser';\nimport {FC, ReactElement, useMemo, useState} from 'react';\nimport BaseRolePermissions, {\n BaseRolePermissionsProps,\n RolePermissionChange,\n RolePermissionResourceServer,\n} from './BaseRolePermissions';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationResult} from '../../../hooks/management/useResourceMutation';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\nexport type RolePermissionsProps = Omit<\n BaseRolePermissionsProps,\n | 'availablePermissions'\n | 'error'\n | 'isLoading'\n | 'isMutating'\n | 'onAdd'\n | 'onRemove'\n | 'onResourceServerSelect'\n | 'permissions'\n | 'resourceServers'\n> & {\n /**\n * How an update that removes a permission is made. `flow` runs the administration flow the server\n * configures for it. It needs `baseUrl`.\n * @default 'native'\n */\n administrationMode?: AdministrationMode;\n /**\n * Whether permissions can be added and removed from this view. Read-only roles never can.\n * @default false\n */\n editable?: boolean;\n roleId: string;\n};\n\n/**\n * Returns the role's permissions with one permission added or taken away, dropping a resource server\n * left with none.\n */\nconst changePermissions = (\n current: RoleResourcePermissions[],\n {permission, resourceServerId}: RolePermissionChange,\n add: boolean,\n): RoleResourcePermissions[] => {\n const next: RoleResourcePermissions[] = current.map((entry: RoleResourcePermissions) => {\n if (entry.resourceServerId !== resourceServerId) {\n return entry;\n }\n\n return {\n ...entry,\n permissions: add\n ? Array.from(new Set([...entry.permissions, permission]))\n : entry.permissions.filter((granted: string) => granted !== permission),\n };\n });\n\n if (add && !next.some((entry: RoleResourcePermissions) => entry.resourceServerId === resourceServerId)) {\n next.push({permissions: [permission], resourceServerId});\n }\n\n return next.filter((entry: RoleResourcePermissions) => entry.permissions.length > 0);\n};\n\n/**\n * Shows the permissions a role grants and, when `editable`, lets the signed-in user grant permissions\n * from the resource servers' actions and revoke them. Every change saves the role.\n *\n * @example\n * ```tsx\n * <RolePermissions roleId={roleId} editable />\n * ```\n */\nconst RolePermissions: FC<RolePermissionsProps> = ({\n administrationMode,\n editable = false,\n preferences,\n roleId,\n ...rest\n}: RolePermissionsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const endpoint: ManagementEndpoint = useManagementEndpoint('roles');\n const resourceServersEndpoint: ManagementEndpoint = useManagementEndpoint('resourceServers');\n const [selectedResourceServerId, setSelectedResourceServerId] = useState<string | null>(null);\n const role: ResourceQueryResult<Role> = useResourceQuery(\n [RoleQueryKeys.ROLE, roleId],\n (fetcher) => getRole({...endpoint, fetcher, roleId}),\n {enabled: Boolean(roleId)},\n );\n const canEdit: boolean = editable && Boolean(role.data) && !role.data?.isReadOnly;\n const resourceServers: ResourceQueryResult<ResourceServerListResponse> = useResourceQuery(\n [RoleQueryKeys.ROLE_PERMISSION_CANDIDATES, 'resource-servers', {limit: 100}],\n (fetcher) => getResourceServers({...resourceServersEndpoint, fetcher, limit: 100}),\n {enabled: canEdit},\n );\n const candidates: ResourceQueryResult<{permissions: ResourceServerPermission[]; resourceServerId: string}> =\n useResourceQuery(\n [RoleQueryKeys.ROLE_PERMISSION_CANDIDATES, 'permissions', selectedResourceServerId],\n async (fetcher) => ({\n permissions: await getResourceServerPermissions({\n ...resourceServersEndpoint,\n fetcher,\n resourceServerId: selectedResourceServerId!,\n }),\n resourceServerId: selectedResourceServerId!,\n }),\n {enabled: canEdit && Boolean(selectedResourceServerId)},\n );\n const update: ResourceMutationResult<Role, RoleResourcePermissions[]> = useResourceMutation(\n (permissions: RoleResourcePermissions[], fetcher) =>\n updateRole({\n ...endpoint,\n administrationMode,\n current: role.data,\n fetcher,\n payload: {\n description: role.data!.description,\n name: role.data!.name,\n ouId: role.data!.ouId,\n permissions,\n },\n roleId,\n }),\n () => [[RoleQueryKeys.ROLE, roleId], [RoleQueryKeys.ROLES]],\n );\n\n const servers: RolePermissionResourceServer[] = useMemo(\n () =>\n (resourceServers.data?.resourceServers ?? []).map((server: ResourceServer) => ({\n id: server.id,\n name: server.name,\n })),\n [resourceServers.data],\n );\n const change = (permissionChange: RolePermissionChange, add: boolean): void => {\n if (role.data) {\n void update.mutate(changePermissions(role.data.permissions ?? [], permissionChange, add));\n }\n };\n\n return (\n <BaseRolePermissions\n permissions={role.data?.permissions ?? []}\n isLoading={role.isLoading}\n isMutating={update.isLoading}\n error={\n toManagementErrorMessage(t, role.error, 'admin.roles.permissions.error') ??\n toManagementErrorMessage(t, update.error, 'admin.roles.permissions.update_error') ??\n toManagementErrorMessage(t, resourceServers.error ?? candidates.error, 'admin.roles.permissions.options_error')\n }\n resourceServers={canEdit && resourceServers.data ? servers : undefined}\n availablePermissions={\n candidates.data?.resourceServerId === selectedResourceServerId\n ? {[candidates.data.resourceServerId]: candidates.data.permissions}\n : {}\n }\n onResourceServerSelect={setSelectedResourceServerId}\n onAdd={canEdit ? (permissionChange: RolePermissionChange): void => change(permissionChange, true) : undefined}\n onRemove={canEdit ? (permissionChange: RolePermissionChange): void => change(permissionChange, false) : undefined}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default RolePermissions;\n"],"mappings":"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"}