@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 @@
1
+ {"version":3,"file":"ProjectList.js","names":["ProjectList: FC<ProjectListProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","BaseProjectList"],"sources":["../../../../src/components/management/ProjectList/ProjectList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {ProjectListResponse, ProjectQueryKeys, getProjects, toManagementErrorMessage} from '@thunderid/browser';\nimport {FC, ReactElement, useState} from 'react';\nimport BaseProjectList, {BaseProjectListProps} from './BaseProjectList';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\nexport type ProjectListProps = Omit<\n BaseProjectListProps,\n 'error' | 'isLoading' | 'offset' | 'onPageChange' | 'projects' | 'totalResults'\n>;\n\n/**\n * Lists the projects, a page at a time. Projects are served by the control plane only.\n *\n * @example\n * ```tsx\n * <ProjectList onSelect={(project) => setSelectedProjectId(project.id)} />\n * ```\n */\nconst ProjectList: FC<ProjectListProps> = ({limit = 20, preferences, ...rest}: ProjectListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const [offset, setOffset] = useState<number>(0);\n const endpoint: ManagementEndpoint = useManagementEndpoint('projects');\n const {data, error, isLoading}: ResourceQueryResult<ProjectListResponse> = useResourceQuery(\n [ProjectQueryKeys.PROJECTS, {limit, offset}],\n (fetcher) => getProjects({...endpoint, fetcher, limit, offset}),\n );\n\n return (\n <BaseProjectList\n projects={data?.projects ?? []}\n totalResults={data?.totalResults}\n isLoading={isLoading}\n error={toManagementErrorMessage(t, error, 'admin.projects.list.error')}\n limit={limit}\n offset={offset}\n onPageChange={setOffset}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default ProjectList;\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,MAAMA,eAAqC,EAAC,QAAQ,IAAI,YAAa,GAAG,WAA0C;CAChH,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAM,CAAC,QAAQ,aAAa,SAAiB,EAAE;CAC/C,MAAMC,WAA+BC,8BAAsB,WAAW;CACtE,MAAM,EAAC,MAAM,OAAO,cAAuDC,yBACzE,CAAC,iBAAiB,UAAU;EAAC;EAAO;EAAO,CAAC,GAC3C,YAAY,YAAY;EAAC,GAAG;EAAU;EAAS;EAAO;EAAO,CAAC,CAChE;AAED,QACE,oBAACC;EACC,UAAU,MAAM,YAAY,EAAE;EAC9B,cAAc,MAAM;EACT;EACX,OAAO,yBAAyB,GAAG,OAAO,4BAA4B;EAC/D;EACC;EACR,cAAc;EACD;EACb,GAAI;GACJ;;AAIN,0BAAe"}
@@ -0,0 +1,69 @@
1
+ import { Preferences, Project } from '@thunderid/browser';
2
+ import { FC, ReactNode } from 'react';
3
+ /**
4
+ * What {@link BaseProjectSwitcher} hands its `children` render function, so the switcher can be drawn
5
+ * with any UI.
6
+ */
7
+ export interface BaseProjectSwitcherRenderProps {
8
+ /**
9
+ * The current project, or `null` when none is chosen.
10
+ */
11
+ currentProject: Project | null;
12
+ /**
13
+ * A translated message for a failed load, or `null`.
14
+ */
15
+ error: string | null;
16
+ isLoading: boolean;
17
+ /**
18
+ * Loads the next page of projects. Undefined when every project is loaded.
19
+ */
20
+ onLoadMore?: () => void;
21
+ /**
22
+ * Chooses a project as the current one, or clears it with `null`.
23
+ */
24
+ onSelect: (project: Project | null) => void;
25
+ /**
26
+ * The projects loaded so far.
27
+ */
28
+ projects: Project[];
29
+ /**
30
+ * Number of projects on the server, or the number loaded when unknown.
31
+ */
32
+ totalResults: number;
33
+ }
34
+ export interface BaseProjectSwitcherProps {
35
+ /**
36
+ * Renders custom UI in place of the default select. Receives the projects, the current one, the
37
+ * loading and error state, the next page loader and `onSelect`.
38
+ */
39
+ children?: (props: BaseProjectSwitcherRenderProps) => ReactNode;
40
+ className?: string;
41
+ /**
42
+ * The current project, or `null` when none is chosen. Shown even before its page is loaded.
43
+ */
44
+ currentProject?: Project | null;
45
+ error?: string | null;
46
+ isLoading?: boolean;
47
+ /**
48
+ * Label of the select. Pass an empty string to hide it.
49
+ */
50
+ label?: string;
51
+ /**
52
+ * Loads the next page of projects. The select offers to load more only when set.
53
+ */
54
+ onLoadMore?: () => void;
55
+ /**
56
+ * Called with the chosen project, or with `null` when the choice is cleared.
57
+ */
58
+ onSelect?: (project: Project | null) => void;
59
+ preferences?: Preferences;
60
+ projects: Project[];
61
+ totalResults?: number;
62
+ }
63
+ /**
64
+ * A select of projects that marks the current one. Holds no data of its own: pass the projects and the
65
+ * current one, and handle the choice.
66
+ */
67
+ declare const BaseProjectSwitcher: FC<BaseProjectSwitcherProps>;
68
+ export default BaseProjectSwitcher;
69
+ //# sourceMappingURL=BaseProjectSwitcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseProjectSwitcher.d.ts","sourceRoot":"","sources":["../../../../src/components/management/ProjectSwitcher/BaseProjectSwitcher.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAC,WAAW,EAAE,OAAO,EAAgC,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAc,EAAE,EAAgB,SAAS,EAAC,MAAM,OAAO,CAAC;AAI/D;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;OAEG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,SAAS,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,QAAA,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAuDrD,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import useTranslation_default from "../../../hooks/useTranslation.js";
2
+ import Select_default from "../../primitives/Select/Select.js";
3
+ import { bem, withVendorCSSClassPrefix } from "@thunderid/browser";
4
+ import { jsx } from "react/jsx-runtime";
5
+
6
+ //#region src/components/management/ProjectSwitcher/BaseProjectSwitcher.tsx
7
+ /**
8
+ * A select of projects that marks the current one. Holds no data of its own: pass the projects and the
9
+ * current one, and handle the choice.
10
+ */
11
+ const BaseProjectSwitcher = ({ children, className, currentProject = null, error = null, isLoading = false, label, onLoadMore, onSelect, preferences, projects, totalResults }) => {
12
+ const { t } = useTranslation_default(preferences?.i18n);
13
+ const select = (project) => onSelect?.(project);
14
+ if (children) return /* @__PURE__ */ jsx("div", {
15
+ className,
16
+ children: children({
17
+ currentProject,
18
+ error,
19
+ isLoading,
20
+ onLoadMore,
21
+ onSelect: select,
22
+ projects,
23
+ totalResults: totalResults ?? projects.length
24
+ })
25
+ });
26
+ const resolvedLabel = label ?? t("admin.projects.switcher.label");
27
+ return /* @__PURE__ */ jsx("div", {
28
+ className: [withVendorCSSClassPrefix(bem("project-switcher")), className].filter(Boolean).join(" "),
29
+ children: /* @__PURE__ */ jsx(Select_default, {
30
+ name: "project",
31
+ label: resolvedLabel || void 0,
32
+ "aria-label": resolvedLabel ? void 0 : t("admin.projects.switcher.label"),
33
+ placeholder: t("admin.projects.switcher.placeholder"),
34
+ emptyText: t("admin.projects.list.empty"),
35
+ error: error ?? void 0,
36
+ loading: isLoading,
37
+ onLoadMore,
38
+ options: projects.map((project) => ({
39
+ label: project.displayName,
40
+ value: project.id
41
+ })),
42
+ selectedOption: currentProject ? {
43
+ label: currentProject.displayName,
44
+ value: currentProject.id
45
+ } : void 0,
46
+ value: currentProject?.id ?? "",
47
+ onChange: (event) => select(projects.find((project) => project.id === event.target.value) ?? null)
48
+ })
49
+ });
50
+ };
51
+ var BaseProjectSwitcher_default = BaseProjectSwitcher;
52
+
53
+ //#endregion
54
+ export { BaseProjectSwitcher_default as default };
55
+ //# sourceMappingURL=BaseProjectSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseProjectSwitcher.js","names":["BaseProjectSwitcher: FC<BaseProjectSwitcherProps>","useTranslation","resolvedLabel: string","Select"],"sources":["../../../../src/components/management/ProjectSwitcher/BaseProjectSwitcher.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Preferences, Project, bem, withVendorCSSClassPrefix} from '@thunderid/browser';\nimport {ChangeEvent, FC, ReactElement, ReactNode} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport Select from '../../primitives/Select/Select';\n\n/**\n * What {@link BaseProjectSwitcher} hands its `children` render function, so the switcher can be drawn\n * with any UI.\n */\nexport interface BaseProjectSwitcherRenderProps {\n /**\n * The current project, or `null` when none is chosen.\n */\n currentProject: Project | null;\n /**\n * A translated message for a failed load, or `null`.\n */\n error: string | null;\n isLoading: boolean;\n /**\n * Loads the next page of projects. Undefined when every project is loaded.\n */\n onLoadMore?: () => void;\n /**\n * Chooses a project as the current one, or clears it with `null`.\n */\n onSelect: (project: Project | null) => void;\n /**\n * The projects loaded so far.\n */\n projects: Project[];\n /**\n * Number of projects on the server, or the number loaded when unknown.\n */\n totalResults: number;\n}\n\nexport interface BaseProjectSwitcherProps {\n /**\n * Renders custom UI in place of the default select. Receives the projects, the current one, the\n * loading and error state, the next page loader and `onSelect`.\n */\n children?: (props: BaseProjectSwitcherRenderProps) => ReactNode;\n className?: string;\n /**\n * The current project, or `null` when none is chosen. Shown even before its page is loaded.\n */\n currentProject?: Project | null;\n error?: string | null;\n isLoading?: boolean;\n /**\n * Label of the select. Pass an empty string to hide it.\n */\n label?: string;\n /**\n * Loads the next page of projects. The select offers to load more only when set.\n */\n onLoadMore?: () => void;\n /**\n * Called with the chosen project, or with `null` when the choice is cleared.\n */\n onSelect?: (project: Project | null) => void;\n preferences?: Preferences;\n projects: Project[];\n totalResults?: number;\n}\n\n/**\n * A select of projects that marks the current one. Holds no data of its own: pass the projects and the\n * current one, and handle the choice.\n */\nconst BaseProjectSwitcher: FC<BaseProjectSwitcherProps> = ({\n children,\n className,\n currentProject = null,\n error = null,\n isLoading = false,\n label,\n onLoadMore,\n onSelect,\n preferences,\n projects,\n totalResults,\n}: BaseProjectSwitcherProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n\n const select = (project: Project | null): void => onSelect?.(project);\n\n if (children) {\n return (\n <div className={className}>\n {children({\n currentProject,\n error,\n isLoading,\n onLoadMore,\n onSelect: select,\n projects,\n totalResults: totalResults ?? projects.length,\n })}\n </div>\n );\n }\n\n const resolvedLabel: string = label ?? t('admin.projects.switcher.label');\n\n return (\n <div className={[withVendorCSSClassPrefix(bem('project-switcher')), className].filter(Boolean).join(' ')}>\n <Select\n name=\"project\"\n label={resolvedLabel || undefined}\n aria-label={resolvedLabel ? undefined : t('admin.projects.switcher.label')}\n placeholder={t('admin.projects.switcher.placeholder')}\n emptyText={t('admin.projects.list.empty')}\n error={error ?? undefined}\n loading={isLoading}\n onLoadMore={onLoadMore}\n options={projects.map((project: Project) => ({label: project.displayName, value: project.id}))}\n selectedOption={currentProject ? {label: currentProject.displayName, value: currentProject.id} : undefined}\n value={currentProject?.id ?? ''}\n onChange={(event: ChangeEvent<HTMLSelectElement>): void =>\n select(projects.find((project: Project) => project.id === event.target.value) ?? null)\n }\n />\n </div>\n );\n};\n\nexport default BaseProjectSwitcher;\n"],"mappings":";;;;;;;;;;AA0EA,MAAMA,uBAAqD,EACzD,UACA,WACA,iBAAiB,MACjB,QAAQ,MACR,YAAY,OACZ,OACA,YACA,UACA,aACA,UACA,mBAC4C;CAC5C,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAE7C,MAAM,UAAU,YAAkC,WAAW,QAAQ;AAErE,KAAI,SACF,QACE,oBAAC;EAAe;YACb,SAAS;GACR;GACA;GACA;GACA;GACA,UAAU;GACV;GACA,cAAc,gBAAgB,SAAS;GACxC,CAAC;GACE;CAIV,MAAMC,gBAAwB,SAAS,EAAE,gCAAgC;AAEzE,QACE,oBAAC;EAAI,WAAW,CAAC,yBAAyB,IAAI,mBAAmB,CAAC,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;YACtG,oBAACC;GACC,MAAK;GACL,OAAO,iBAAiB;GACxB,cAAY,gBAAgB,SAAY,EAAE,gCAAgC;GAC1E,aAAa,EAAE,sCAAsC;GACrD,WAAW,EAAE,4BAA4B;GACzC,OAAO,SAAS;GAChB,SAAS;GACG;GACZ,SAAS,SAAS,KAAK,aAAsB;IAAC,OAAO,QAAQ;IAAa,OAAO,QAAQ;IAAG,EAAE;GAC9F,gBAAgB,iBAAiB;IAAC,OAAO,eAAe;IAAa,OAAO,eAAe;IAAG,GAAG;GACjG,OAAO,gBAAgB,MAAM;GAC7B,WAAW,UACT,OAAO,SAAS,MAAM,YAAqB,QAAQ,OAAO,MAAM,OAAO,MAAM,IAAI,KAAK;IAExF;GACE;;AAIV,kCAAe"}
@@ -0,0 +1,25 @@
1
+ import { FC } from 'react';
2
+ import { BaseProjectSwitcherProps } from './BaseProjectSwitcher';
3
+ export type ProjectSwitcherProps = Omit<BaseProjectSwitcherProps, 'currentProject' | 'error' | 'isLoading' | 'onLoadMore' | 'projects' | 'totalResults'> & {
4
+ /**
5
+ * Number of projects fetched per page. The server serves at most 100.
6
+ * @default 100
7
+ */
8
+ limit?: number;
9
+ };
10
+ /**
11
+ * Lists the projects and lets the user choose the current one. The choice is client-side context, not
12
+ * a sign-in: it is kept per vendor in `localStorage` and exposed as `currentProject` and
13
+ * `setCurrentProject` through `useThunderID()`. `ApplicationList` and `AgentList` list the current
14
+ * project's applications and agents, and `ApplicationCreate` and `AgentCreate` create them in it, the
15
+ * resources the server places by project. A project's identifier is not an organization unit's, so no
16
+ * other component uses it. `onSelect` is called after the choice is kept.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <ProjectSwitcher onSelect={(project) => navigate(project ? `/projects/${project.id}` : '/')} />
21
+ * ```
22
+ */
23
+ declare const ProjectSwitcher: FC<ProjectSwitcherProps>;
24
+ export default ProjectSwitcher;
25
+ //# sourceMappingURL=ProjectSwitcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSwitcher.d.ts","sourceRoot":"","sources":["../../../../src/components/management/ProjectSwitcher/ProjectSwitcher.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAC,EAAE,EAAkC,MAAM,OAAO,CAAC;AAC1D,OAA4B,EAAC,wBAAwB,EAAC,MAAM,uBAAuB,CAAC;AAMpF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,wBAAwB,EACxB,gBAAgB,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,CACtF,GAAG;IACF;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAkD7C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,68 @@
1
+ import useThunderID_default from "../../../contexts/ThunderID/useThunderID.js";
2
+ import useTranslation_default from "../../../hooks/useTranslation.js";
3
+ import useManagementEndpoint_default from "../../../hooks/management/useManagementEndpoint.js";
4
+ import useResourceQuery_default from "../../../hooks/management/useResourceQuery.js";
5
+ import BaseProjectSwitcher_default from "./BaseProjectSwitcher.js";
6
+ import { ProjectQueryKeys, getProjects, toManagementErrorMessage } from "@thunderid/browser";
7
+ import { useMemo, useState } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+
10
+ //#region src/components/management/ProjectSwitcher/ProjectSwitcher.tsx
11
+ /**
12
+ * Lists the projects and lets the user choose the current one. The choice is client-side context, not
13
+ * a sign-in: it is kept per vendor in `localStorage` and exposed as `currentProject` and
14
+ * `setCurrentProject` through `useThunderID()`. `ApplicationList` and `AgentList` list the current
15
+ * project's applications and agents, and `ApplicationCreate` and `AgentCreate` create them in it, the
16
+ * resources the server places by project. A project's identifier is not an organization unit's, so no
17
+ * other component uses it. `onSelect` is called after the choice is kept.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * <ProjectSwitcher onSelect={(project) => navigate(project ? `/projects/${project.id}` : '/')} />
22
+ * ```
23
+ */
24
+ const ProjectSwitcher = ({ limit = 100, onSelect, preferences,...rest }) => {
25
+ const { t } = useTranslation_default(preferences?.i18n);
26
+ const { currentProject, setCurrentProject } = useThunderID_default();
27
+ const [offset, setOffset] = useState(0);
28
+ const [pages, setPages] = useState({});
29
+ const endpoint = useManagementEndpoint_default("projects");
30
+ const { data, error, isLoading } = useResourceQuery_default([ProjectQueryKeys.PROJECTS, {
31
+ limit,
32
+ offset
33
+ }], (fetcher) => getProjects({
34
+ ...endpoint,
35
+ fetcher,
36
+ limit,
37
+ offset
38
+ }));
39
+ const [mergedData, setMergedData] = useState(void 0);
40
+ if (data && data !== mergedData) {
41
+ setMergedData(data);
42
+ setPages((previous) => ({
43
+ ...previous,
44
+ [offset]: data.projects ?? []
45
+ }));
46
+ }
47
+ const projects = useMemo(() => Object.keys(pages).map(Number).sort((a, b) => a - b).flatMap((pageOffset) => pages[pageOffset] ?? []), [pages]);
48
+ const totalResults = data?.totalResults ?? projects.length;
49
+ return /* @__PURE__ */ jsx(BaseProjectSwitcher_default, {
50
+ currentProject,
51
+ projects,
52
+ totalResults,
53
+ isLoading,
54
+ error: toManagementErrorMessage(t, error, "admin.projects.switcher.error"),
55
+ onLoadMore: !isLoading && projects.length < totalResults ? () => setOffset(projects.length) : void 0,
56
+ onSelect: (project) => {
57
+ setCurrentProject(project);
58
+ onSelect?.(project);
59
+ },
60
+ preferences,
61
+ ...rest
62
+ });
63
+ };
64
+ var ProjectSwitcher_default = ProjectSwitcher;
65
+
66
+ //#endregion
67
+ export { ProjectSwitcher_default as default };
68
+ //# sourceMappingURL=ProjectSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSwitcher.js","names":["ProjectSwitcher: FC<ProjectSwitcherProps>","useTranslation","useThunderID","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","projects: Project[]","totalResults: number","BaseProjectSwitcher"],"sources":["../../../../src/components/management/ProjectSwitcher/ProjectSwitcher.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n Project,\n ProjectListResponse,\n ProjectQueryKeys,\n getProjects,\n toManagementErrorMessage,\n} from '@thunderid/browser';\nimport {FC, ReactElement, useMemo, useState} from 'react';\nimport BaseProjectSwitcher, {BaseProjectSwitcherProps} from './BaseProjectSwitcher';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\nexport type ProjectSwitcherProps = Omit<\n BaseProjectSwitcherProps,\n 'currentProject' | 'error' | 'isLoading' | 'onLoadMore' | 'projects' | 'totalResults'\n> & {\n /**\n * Number of projects fetched per page. The server serves at most 100.\n * @default 100\n */\n limit?: number;\n};\n\n/**\n * Lists the projects and lets the user choose the current one. The choice is client-side context, not\n * a sign-in: it is kept per vendor in `localStorage` and exposed as `currentProject` and\n * `setCurrentProject` through `useThunderID()`. `ApplicationList` and `AgentList` list the current\n * project's applications and agents, and `ApplicationCreate` and `AgentCreate` create them in it, the\n * resources the server places by project. A project's identifier is not an organization unit's, so no\n * other component uses it. `onSelect` is called after the choice is kept.\n *\n * @example\n * ```tsx\n * <ProjectSwitcher onSelect={(project) => navigate(project ? `/projects/${project.id}` : '/')} />\n * ```\n */\nconst ProjectSwitcher: FC<ProjectSwitcherProps> = ({\n limit = 100,\n onSelect,\n preferences,\n ...rest\n}: ProjectSwitcherProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const {currentProject, setCurrentProject} = useThunderID();\n const [offset, setOffset] = useState<number>(0);\n const [pages, setPages] = useState<Record<number, Project[]>>({});\n const endpoint: ManagementEndpoint = useManagementEndpoint('projects');\n const {data, error, isLoading}: ResourceQueryResult<ProjectListResponse> = useResourceQuery(\n [ProjectQueryKeys.PROJECTS, {limit, offset}],\n (fetcher) => getProjects({...endpoint, fetcher, limit, offset}),\n );\n\n const [mergedData, setMergedData] = useState<ProjectListResponse | undefined>(undefined);\n\n // Each page is kept as it arrives, so loading more appends to the projects already listed.\n if (data && data !== mergedData) {\n setMergedData(data);\n setPages((previous: Record<number, Project[]>) => ({...previous, [offset]: data.projects ?? []}));\n }\n\n const projects: Project[] = useMemo(\n () =>\n Object.keys(pages)\n .map(Number)\n .sort((a: number, b: number) => a - b)\n .flatMap((pageOffset: number) => pages[pageOffset] ?? []),\n [pages],\n );\n const totalResults: number = data?.totalResults ?? projects.length;\n\n return (\n <BaseProjectSwitcher\n currentProject={currentProject}\n projects={projects}\n totalResults={totalResults}\n isLoading={isLoading}\n error={toManagementErrorMessage(t, error, 'admin.projects.switcher.error')}\n onLoadMore={!isLoading && projects.length < totalResults ? (): void => setOffset(projects.length) : undefined}\n onSelect={(project: Project | null): void => {\n setCurrentProject(project);\n onSelect?.(project);\n }}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default ProjectSwitcher;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAMA,mBAA6C,EACjD,QAAQ,KACR,UACA,YACA,GAAG,WACqC;CACxC,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAM,EAAC,gBAAgB,sBAAqBC,sBAAc;CAC1D,MAAM,CAAC,QAAQ,aAAa,SAAiB,EAAE;CAC/C,MAAM,CAAC,OAAO,YAAY,SAAoC,EAAE,CAAC;CACjE,MAAMC,WAA+BC,8BAAsB,WAAW;CACtE,MAAM,EAAC,MAAM,OAAO,cAAuDC,yBACzE,CAAC,iBAAiB,UAAU;EAAC;EAAO;EAAO,CAAC,GAC3C,YAAY,YAAY;EAAC,GAAG;EAAU;EAAS;EAAO;EAAO,CAAC,CAChE;CAED,MAAM,CAAC,YAAY,iBAAiB,SAA0C,OAAU;AAGxF,KAAI,QAAQ,SAAS,YAAY;AAC/B,gBAAc,KAAK;AACnB,YAAU,cAAyC;GAAC,GAAG;IAAW,SAAS,KAAK,YAAY,EAAE;GAAC,EAAE;;CAGnG,MAAMC,WAAsB,cAExB,OAAO,KAAK,MAAM,CACf,IAAI,OAAO,CACX,MAAM,GAAW,MAAc,IAAI,EAAE,CACrC,SAAS,eAAuB,MAAM,eAAe,EAAE,CAAC,EAC7D,CAAC,MAAM,CACR;CACD,MAAMC,eAAuB,MAAM,gBAAgB,SAAS;AAE5D,QACE,oBAACC;EACiB;EACN;EACI;EACH;EACX,OAAO,yBAAyB,GAAG,OAAO,gCAAgC;EAC1E,YAAY,CAAC,aAAa,SAAS,SAAS,qBAA2B,UAAU,SAAS,OAAO,GAAG;EACpG,WAAW,YAAkC;AAC3C,qBAAkB,QAAQ;AAC1B,cAAW,QAAQ;;EAER;EACb,GAAI;GACJ;;AAIN,8BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleAssignments.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleAssignments/BaseRoleAssignments.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAc,EAAE,EAAgB,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/D,OAAkB,EAAC,eAAe,EAAC,MAAM,sCAAsC,CAAC;AAGhF,OAAuB,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACpE;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAC3C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACrD;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD;;OAEG;IACH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACpE;;;;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,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACrD;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,QAAA,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAwHrD,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -6,7 +6,7 @@ import AdminSection_default from "../shared/AdminSection.js";
6
6
  import IdentityPicker_default from "../shared/IdentityPicker.js";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
 
9
- //#region src/components/admin/RoleAssignments/BaseRoleAssignments.tsx
9
+ //#region src/components/management/RoleAssignments/BaseRoleAssignments.tsx
10
10
  /**
11
11
  * Lists the users, groups and agents a role is assigned to, and lets the caller assign and unassign
12
12
  * it. Holds no data of its own.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleAssignments.js","names":["BaseRoleAssignments: FC<BaseRoleAssignmentsProps>","useTranslation","columns: DataTableColumn<RoleAssignment>[]","Button","AdminSection","IdentityPicker","Select","DataTable"],"sources":["../../../../src/components/management/RoleAssignments/BaseRoleAssignments.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Preferences, RoleAssigneeType, RoleAssignment, RoleAssignmentInput} from '@thunderid/browser';\nimport {ChangeEvent, FC, ReactElement, ReactNode} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport Button from '../../primitives/Button/Button';\nimport DataTable, {DataTableColumn} from '../../primitives/DataTable/DataTable';\nimport Select from '../../primitives/Select/Select';\nimport AdminSection from '../shared/AdminSection';\nimport IdentityPicker, {IdentityCandidate} from '../shared/IdentityPicker';\n\n/**\n * What {@link BaseRoleAssignments} hands its `children` render function, so the assignments can be\n * shown with any UI, such as a third-party data grid.\n */\nexport interface BaseRoleAssignmentsRenderProps {\n assignments: RoleAssignment[];\n /**\n * The identities the role can be assigned to, keyed by assignee type. Undefined when assigning is\n * not allowed.\n */\n candidates?: Partial<Record<RoleAssigneeType, IdentityCandidate[]>>;\n /**\n * The columns the default table shows, including the remove action when unassigning is allowed.\n */\n columns: DataTableColumn<RoleAssignment>[];\n error: string | null;\n isLoading: boolean;\n isMutating: boolean;\n /**\n * Assigns the role. Undefined when assigning is not allowed.\n */\n onAssign?: (assignment: RoleAssignmentInput) => void;\n /**\n * Shows only one assignee type, or every type with `null`. Undefined when the list cannot be filtered.\n */\n onTypeFilterChange?: (type: RoleAssigneeType | null) => void;\n /**\n * Removes an assignment. Undefined when unassigning is not allowed.\n */\n onUnassign?: (assignment: RoleAssignment) => void;\n /**\n * The assignee type the list is narrowed to, or `null` for every type.\n */\n typeFilter: RoleAssigneeType | null;\n}\n\nexport interface BaseRoleAssignmentsProps {\n assignments: RoleAssignment[];\n /**\n * The identities the role can be assigned to, keyed by assignee type. Assigning is hidden when omitted.\n */\n candidates?: Partial<Record<RoleAssigneeType, IdentityCandidate[]>>;\n /**\n * Renders custom UI in place of the default table and picker. Receives the assignments, the\n * default columns, the candidates, the loading and error state, and the assign and unassign\n * handlers.\n */\n children?: (props: BaseRoleAssignmentsRenderProps) => ReactNode;\n className?: string;\n description?: string;\n error?: string | null;\n isLoading?: boolean;\n isMutating?: boolean;\n onAssign?: (assignment: RoleAssignmentInput) => void;\n /**\n * Narrows the list to one assignee type, on the server, or back to every type with `null`. The type\n * filter shows only when set.\n */\n onTypeFilterChange?: (type: RoleAssigneeType | null) => void;\n /**\n * Removes an assignment. The remove action is hidden when omitted.\n */\n onUnassign?: (assignment: RoleAssignment) => void;\n preferences?: Preferences;\n title?: string;\n /**\n * The assignee type the list is narrowed to, or `null` for every type.\n */\n typeFilter?: RoleAssigneeType | null;\n}\n\n/**\n * Lists the users, groups and agents a role is assigned to, and lets the caller assign and unassign\n * it. Holds no data of its own.\n */\nconst BaseRoleAssignments: FC<BaseRoleAssignmentsProps> = ({\n assignments,\n candidates,\n children,\n className,\n description,\n error = null,\n isLoading = false,\n isMutating = false,\n onAssign,\n onTypeFilterChange,\n onUnassign,\n preferences,\n title,\n typeFilter = null,\n}: BaseRoleAssignmentsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n\n const columns: DataTableColumn<RoleAssignment>[] = [\n {\n header: t('admin.roles.assignments.columns.assignee'),\n id: 'assignee',\n render: (assignment: RoleAssignment): ReactNode => assignment.display ?? assignment.id,\n },\n {\n header: t('admin.roles.assignments.columns.type'),\n id: 'type',\n render: (assignment: RoleAssignment): ReactNode => t(`admin.common.identity_types.${assignment.type}`),\n },\n ];\n\n if (onUnassign) {\n columns.push({\n header: t('admin.common.columns.actions'),\n id: 'actions',\n render: (assignment: RoleAssignment): ReactNode => (\n <Button\n variant=\"text\"\n color=\"error\"\n size=\"small\"\n disabled={isMutating}\n aria-label={t('admin.roles.assignments.remove_label', {name: assignment.display ?? assignment.id})}\n onClick={(): void => onUnassign(assignment)}\n >\n {t('admin.common.actions.remove')}\n </Button>\n ),\n });\n }\n\n if (children) {\n return (\n <div className={className}>\n {children({\n assignments,\n candidates: onAssign ? candidates : undefined,\n columns,\n error,\n isLoading,\n isMutating,\n onAssign: candidates ? onAssign : undefined,\n onTypeFilterChange,\n onUnassign,\n typeFilter,\n })}\n </div>\n );\n }\n\n return (\n <AdminSection\n block=\"role-assignments\"\n className={className}\n title={title ?? t('admin.roles.assignments.title')}\n description={description}\n headingLevel={3}\n preferences={preferences}\n >\n {onAssign && candidates && (\n <IdentityPicker<RoleAssigneeType>\n addLabel={t('admin.roles.assignments.add')}\n candidates={candidates}\n excludedIds={assignments.map((assignment: RoleAssignment) => assignment.id)}\n isSubmitting={isMutating}\n onAdd={onAssign}\n types={(['user', 'group', 'agent', 'app'] as RoleAssigneeType[])\n .filter((type: RoleAssigneeType) => candidates[type] !== undefined)\n .map((type: RoleAssigneeType) => ({label: t(`admin.common.identity_types.${type}`), value: type}))}\n />\n )}\n {onTypeFilterChange && (\n <div style={{maxWidth: '16rem'}}>\n <Select\n label={t('admin.common.filters.type')}\n name=\"assigneeType\"\n value={typeFilter ?? ''}\n options={[\n {label: t('admin.common.filters.all_types'), value: ''},\n ...(['user', 'group', 'agent', 'app'] as RoleAssigneeType[]).map((type: RoleAssigneeType) => ({\n label: t(`admin.common.identity_types.${type}`),\n value: type,\n })),\n ]}\n onChange={(event: ChangeEvent<HTMLSelectElement>): void =>\n onTypeFilterChange((event.target.value || null) as RoleAssigneeType | null)\n }\n />\n </div>\n )}\n <DataTable\n caption={title?.length ? title : t('admin.roles.assignments.title')}\n columns={columns}\n rows={assignments}\n getRowId={(assignment: RoleAssignment): string => `${assignment.type}:${assignment.id}`}\n isLoading={isLoading}\n error={error}\n emptyText={t('admin.roles.assignments.empty')}\n />\n </AdminSection>\n );\n};\n\nexport default BaseRoleAssignments;\n"],"mappings":";;;;;;;;;;;;;AAuFA,MAAMA,uBAAqD,EACzD,aACA,YACA,UACA,WACA,aACA,QAAQ,MACR,YAAY,OACZ,aAAa,OACb,UACA,oBACA,YACA,aACA,OACA,aAAa,WAC+B;CAC5C,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAE7C,MAAMC,UAA6C,CACjD;EACE,QAAQ,EAAE,2CAA2C;EACrD,IAAI;EACJ,SAAS,eAA0C,WAAW,WAAW,WAAW;EACrF,EACD;EACE,QAAQ,EAAE,uCAAuC;EACjD,IAAI;EACJ,SAAS,eAA0C,EAAE,+BAA+B,WAAW,OAAO;EACvG,CACF;AAED,KAAI,WACF,SAAQ,KAAK;EACX,QAAQ,EAAE,+BAA+B;EACzC,IAAI;EACJ,SAAS,eACP,oBAACC;GACC,SAAQ;GACR,OAAM;GACN,MAAK;GACL,UAAU;GACV,cAAY,EAAE,wCAAwC,EAAC,MAAM,WAAW,WAAW,WAAW,IAAG,CAAC;GAClG,eAAqB,WAAW,WAAW;aAE1C,EAAE,8BAA8B;IAC1B;EAEZ,CAAC;AAGJ,KAAI,SACF,QACE,oBAAC;EAAe;YACb,SAAS;GACR;GACA,YAAY,WAAW,aAAa;GACpC;GACA;GACA;GACA;GACA,UAAU,aAAa,WAAW;GAClC;GACA;GACA;GACD,CAAC;GACE;AAIV,QACE,qBAACC;EACC,OAAM;EACK;EACX,OAAO,SAAS,EAAE,gCAAgC;EACrC;EACb,cAAc;EACD;;GAEZ,YAAY,cACX,oBAACC;IACC,UAAU,EAAE,8BAA8B;IAC9B;IACZ,aAAa,YAAY,KAAK,eAA+B,WAAW,GAAG;IAC3E,cAAc;IACd,OAAO;IACP,OAAQ;KAAC;KAAQ;KAAS;KAAS;KAAM,CACtC,QAAQ,SAA2B,WAAW,UAAU,OAAU,CAClE,KAAK,UAA4B;KAAC,OAAO,EAAE,+BAA+B,OAAO;KAAE,OAAO;KAAK,EAAE;KACpG;GAEH,sBACC,oBAAC;IAAI,OAAO,EAAC,UAAU,SAAQ;cAC7B,oBAACC;KACC,OAAO,EAAE,4BAA4B;KACrC,MAAK;KACL,OAAO,cAAc;KACrB,SAAS,CACP;MAAC,OAAO,EAAE,iCAAiC;MAAE,OAAO;MAAG,EACvD,GAAI;MAAC;MAAQ;MAAS;MAAS;MAAM,CAAwB,KAAK,UAA4B;MAC5F,OAAO,EAAE,+BAA+B,OAAO;MAC/C,OAAO;MACR,EAAE,CACJ;KACD,WAAW,UACT,mBAAoB,MAAM,OAAO,SAAS,KAAiC;MAE7E;KACE;GAER,oBAACC;IACC,SAAS,OAAO,SAAS,QAAQ,EAAE,gCAAgC;IAC1D;IACT,MAAM;IACN,WAAW,eAAuC,GAAG,WAAW,KAAK,GAAG,WAAW;IACxE;IACJ;IACP,WAAW,EAAE,gCAAgC;KAC7C;;GACW;;AAInB,kCAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleAssignments.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleAssignments/RoleAssignments.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAyBnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,EAAE,EAAkC,MAAM,OAAO,CAAC;AAC1D,OAA4B,EAAC,wBAAwB,EAAC,MAAM,uBAAuB,CAAC;AAoBpF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,wBAAwB,EACtB,aAAa,GACb,YAAY,GACZ,OAAO,GACP,WAAW,GACX,YAAY,GACZ,UAAU,GACV,oBAAoB,GACpB,YAAY,GACZ,YAAY,CACf,GAAG;IACF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA6F7C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -7,7 +7,7 @@ import { AgentQueryKeys, GroupQueryKeys, RoleQueryKeys, UserQueryKeys, addRoleAs
7
7
  import { useMemo, useState } from "react";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
 
10
- //#region src/components/admin/RoleAssignments/RoleAssignments.tsx
10
+ //#region src/components/management/RoleAssignments/RoleAssignments.tsx
11
11
  /**
12
12
  * Lists who holds a role, and lets the signed-in user assign it to users, groups and agents or
13
13
  * remove it from them.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleAssignments.js","names":["RoleAssignments: FC<RoleAssignmentsProps>","useTranslation","rolesEndpoint: ManagementEndpoint","useManagementEndpoint","usersEndpoint: ManagementEndpoint","groupsEndpoint: ManagementEndpoint","agentsEndpoint: ManagementEndpoint","type: RoleAssigneeType | undefined","filter: string | undefined","assignments: ResourceQueryResult<RoleAssignmentListResponse>","useResourceQuery","users: ResourceQueryResult<FilteredPage<ManagedUserListResponse>>","groups: ResourceQueryResult<FilteredPage<GroupListResponse>>","agents: ResourceQueryResult<FilteredPage<AgentListResponse>>","assign: ResourceMutationResult<void, RoleAssignmentsVariables>","useResourceMutation","unassign: ResourceMutationResult<void, RoleAssignmentsVariables>","candidates: Partial<Record<'user' | 'group' | 'agent', IdentityCandidate[]>>","BaseRoleAssignments"],"sources":["../../../../src/components/management/RoleAssignments/RoleAssignments.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n AdministrationMode,\n AgentListResponse,\n AgentQueryKeys,\n BasicAgent,\n Group,\n GroupListResponse,\n GroupQueryKeys,\n ManagedUser,\n ManagedUserListResponse,\n RoleAssigneeType,\n RoleAssignment,\n RoleAssignmentInput,\n RoleAssignmentListResponse,\n RoleQueryKeys,\n UserQueryKeys,\n addRoleAssignments,\n getAgentName,\n getAgents,\n getGroups,\n getRoleAssignments,\n getUsers,\n removeRoleAssignments,\n resolveManagedIdentityName,\n toEqualityFilter,\n toManagementErrorMessage,\n} from '@thunderid/browser';\nimport {FC, ReactElement, useMemo, useState} from 'react';\nimport BaseRoleAssignments, {BaseRoleAssignmentsProps} from './BaseRoleAssignments';\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 {IdentityCandidate} from '../shared/IdentityPicker';\n\ninterface RoleAssignmentsVariables {\n assignments: RoleAssignmentInput[];\n roleId: string;\n}\n\n/**\n * A candidate page with the filter it was listed with.\n */\ninterface FilteredPage<T> {\n filter: string | undefined;\n page: T;\n}\n\nexport type RoleAssignmentsProps = Omit<\n BaseRoleAssignmentsProps,\n | 'assignments'\n | 'candidates'\n | 'error'\n | 'isLoading'\n | 'isMutating'\n | 'onAssign'\n | 'onTypeFilterChange'\n | 'onUnassign'\n | 'typeFilter'\n> & {\n /**\n * How an assignment is removed. `flow` runs the administration flow the server configures for it, which can revoke\n * grants and end sessions first. It needs `baseUrl`.\n * @default 'native'\n */\n administrationMode?: AdministrationMode;\n /**\n * Whether assignments can be added and removed from this view.\n * @default false\n */\n editable?: boolean;\n /**\n * Whether to show the assignee type filter, which narrows the list on the server.\n * @default true\n */\n filterable?: boolean;\n /**\n * Organization unit the users, groups and agents offered for assignment are listed from.\n */\n ouId?: string;\n roleId: string;\n};\n\n/**\n * Lists who holds a role, and lets the signed-in user assign it to users, groups and agents or\n * remove it from them.\n *\n * @example\n * ```tsx\n * <RoleAssignments roleId={roleId} />\n * ```\n */\nconst RoleAssignments: FC<RoleAssignmentsProps> = ({\n administrationMode,\n editable = false,\n filterable = true,\n ouId,\n preferences,\n roleId,\n ...rest\n}: RoleAssignmentsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const [typeFilter, setTypeFilter] = useState<RoleAssigneeType | null>(null);\n const rolesEndpoint: ManagementEndpoint = useManagementEndpoint('roles');\n const usersEndpoint: ManagementEndpoint = useManagementEndpoint('users');\n const groupsEndpoint: ManagementEndpoint = useManagementEndpoint('groups');\n const agentsEndpoint: ManagementEndpoint = useManagementEndpoint('agents');\n const type: RoleAssigneeType | undefined = typeFilter ?? undefined;\n const filter: string | undefined = toEqualityFilter('ouId', ouId);\n const assignments: ResourceQueryResult<RoleAssignmentListResponse> = useResourceQuery(\n [RoleQueryKeys.ROLE_ASSIGNMENTS, roleId, {limit: 100, type}],\n (fetcher) => getRoleAssignments({...rolesEndpoint, fetcher, limit: 100, roleId, type}),\n {enabled: Boolean(roleId)},\n );\n const users: ResourceQueryResult<FilteredPage<ManagedUserListResponse>> = useResourceQuery(\n [UserQueryKeys.USERS, {filter, limit: 100}],\n async (fetcher) => ({filter, page: await getUsers({...usersEndpoint, fetcher, filter, limit: 100})}),\n {enabled: editable},\n );\n const groups: ResourceQueryResult<FilteredPage<GroupListResponse>> = useResourceQuery(\n [GroupQueryKeys.GROUPS, {filter, limit: 100}],\n async (fetcher) => ({filter, page: await getGroups({...groupsEndpoint, fetcher, filter, limit: 100})}),\n {enabled: editable},\n );\n const agents: ResourceQueryResult<FilteredPage<AgentListResponse>> = useResourceQuery(\n [AgentQueryKeys.AGENTS, {filter, limit: 100}],\n async (fetcher) => ({filter, page: await getAgents({...agentsEndpoint, fetcher, filter, limit: 100})}),\n {enabled: editable},\n );\n const assign: ResourceMutationResult<void, RoleAssignmentsVariables> = useResourceMutation(\n ({assignments: changes, roleId: id}: RoleAssignmentsVariables, fetcher) =>\n addRoleAssignments({...rolesEndpoint, assignments: changes, fetcher, roleId: id}),\n () => [[RoleQueryKeys.ROLE_ASSIGNMENTS]],\n );\n const unassign: ResourceMutationResult<void, RoleAssignmentsVariables> = useResourceMutation(\n ({assignments: changes, roleId: id}: RoleAssignmentsVariables, fetcher) =>\n removeRoleAssignments({...rolesEndpoint, administrationMode, assignments: changes, fetcher, roleId: id}),\n () => [[RoleQueryKeys.ROLE_ASSIGNMENTS]],\n );\n\n const candidates: Partial<Record<'user' | 'group' | 'agent', IdentityCandidate[]>> = useMemo(() => {\n // A page listed for an earlier ouId stays in a query until the next one succeeds, so it is not offered.\n const current = <T,>(data: FilteredPage<T> | undefined): T | undefined =>\n data && data.filter === filter ? data.page : undefined;\n\n return {\n agent: (current(agents.data)?.agents ?? []).map((agent: BasicAgent) => ({\n id: agent.id,\n label: getAgentName(agent),\n })),\n group: (current(groups.data)?.groups ?? []).map((group: Group) => ({id: group.id, label: group.name})),\n user: (current(users.data)?.users ?? []).map((user: ManagedUser) => ({\n id: user.id,\n label: resolveManagedIdentityName(user),\n })),\n };\n }, [agents.data, filter, groups.data, users.data]);\n\n return (\n <BaseRoleAssignments\n assignments={assignments.data?.assignments ?? []}\n isLoading={assignments.isLoading}\n isMutating={assign.isLoading || unassign.isLoading}\n error={\n toManagementErrorMessage(t, assignments.error, 'admin.roles.assignments.error') ??\n toManagementErrorMessage(t, assign.error ?? unassign.error, 'admin.roles.assignments.update_error')\n }\n candidates={editable ? candidates : undefined}\n onAssign={\n editable\n ? (assignment: RoleAssignmentInput): void => void assign.mutate({assignments: [assignment], roleId})\n : undefined\n }\n onUnassign={\n editable\n ? (assignment: RoleAssignment): void =>\n void unassign.mutate({assignments: [{id: assignment.id, type: assignment.type}], roleId})\n : undefined\n }\n typeFilter={typeFilter}\n onTypeFilterChange={filterable ? setTypeFilter : undefined}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default RoleAssignments;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA+FA,MAAMA,mBAA6C,EACjD,oBACA,WAAW,OACX,aAAa,MACb,MACA,aACA,OACA,GAAG,WACqC;CACxC,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAM,CAAC,YAAY,iBAAiB,SAAkC,KAAK;CAC3E,MAAMC,gBAAoCC,8BAAsB,QAAQ;CACxE,MAAMC,gBAAoCD,8BAAsB,QAAQ;CACxE,MAAME,iBAAqCF,8BAAsB,SAAS;CAC1E,MAAMG,iBAAqCH,8BAAsB,SAAS;CAC1E,MAAMI,OAAqC,cAAc;CACzD,MAAMC,SAA6B,iBAAiB,QAAQ,KAAK;CACjE,MAAMC,cAA+DC,yBACnE;EAAC,cAAc;EAAkB;EAAQ;GAAC,OAAO;GAAK;GAAK;EAAC,GAC3D,YAAY,mBAAmB;EAAC,GAAG;EAAe;EAAS,OAAO;EAAK;EAAQ;EAAK,CAAC,EACtF,EAAC,SAAS,QAAQ,OAAO,EAAC,CAC3B;CACD,MAAMC,QAAoED,yBACxE,CAAC,cAAc,OAAO;EAAC;EAAQ,OAAO;EAAI,CAAC,EAC3C,OAAO,aAAa;EAAC;EAAQ,MAAM,MAAM,SAAS;GAAC,GAAG;GAAe;GAAS;GAAQ,OAAO;GAAI,CAAC;EAAC,GACnG,EAAC,SAAS,UAAS,CACpB;CACD,MAAME,SAA+DF,yBACnE,CAAC,eAAe,QAAQ;EAAC;EAAQ,OAAO;EAAI,CAAC,EAC7C,OAAO,aAAa;EAAC;EAAQ,MAAM,MAAM,UAAU;GAAC,GAAG;GAAgB;GAAS;GAAQ,OAAO;GAAI,CAAC;EAAC,GACrG,EAAC,SAAS,UAAS,CACpB;CACD,MAAMG,SAA+DH,yBACnE,CAAC,eAAe,QAAQ;EAAC;EAAQ,OAAO;EAAI,CAAC,EAC7C,OAAO,aAAa;EAAC;EAAQ,MAAM,MAAM,UAAU;GAAC,GAAG;GAAgB;GAAS;GAAQ,OAAO;GAAI,CAAC;EAAC,GACrG,EAAC,SAAS,UAAS,CACpB;CACD,MAAMI,SAAiEC,6BACpE,EAAC,aAAa,SAAS,QAAQ,MAA+B,YAC7D,mBAAmB;EAAC,GAAG;EAAe,aAAa;EAAS;EAAS,QAAQ;EAAG,CAAC,QAC7E,CAAC,CAAC,cAAc,iBAAiB,CAAC,CACzC;CACD,MAAMC,WAAmED,6BACtE,EAAC,aAAa,SAAS,QAAQ,MAA+B,YAC7D,sBAAsB;EAAC,GAAG;EAAe;EAAoB,aAAa;EAAS;EAAS,QAAQ;EAAG,CAAC,QACpG,CAAC,CAAC,cAAc,iBAAiB,CAAC,CACzC;CAED,MAAME,aAA+E,cAAc;EAEjG,MAAM,WAAe,SACnB,QAAQ,KAAK,WAAW,SAAS,KAAK,OAAO;AAE/C,SAAO;GACL,QAAQ,QAAQ,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,WAAuB;IACtE,IAAI,MAAM;IACV,OAAO,aAAa,MAAM;IAC3B,EAAE;GACH,QAAQ,QAAQ,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,WAAkB;IAAC,IAAI,MAAM;IAAI,OAAO,MAAM;IAAK,EAAE;GACtG,OAAO,QAAQ,MAAM,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,UAAuB;IACnE,IAAI,KAAK;IACT,OAAO,2BAA2B,KAAK;IACxC,EAAE;GACJ;IACA;EAAC,OAAO;EAAM;EAAQ,OAAO;EAAM,MAAM;EAAK,CAAC;AAElD,QACE,oBAACC;EACC,aAAa,YAAY,MAAM,eAAe,EAAE;EAChD,WAAW,YAAY;EACvB,YAAY,OAAO,aAAa,SAAS;EACzC,OACE,yBAAyB,GAAG,YAAY,OAAO,gCAAgC,IAC/E,yBAAyB,GAAG,OAAO,SAAS,SAAS,OAAO,uCAAuC;EAErG,YAAY,WAAW,aAAa;EACpC,UACE,YACK,eAA0C,KAAK,OAAO,OAAO;GAAC,aAAa,CAAC,WAAW;GAAE;GAAO,CAAC,GAClG;EAEN,YACE,YACK,eACC,KAAK,SAAS,OAAO;GAAC,aAAa,CAAC;IAAC,IAAI,WAAW;IAAI,MAAM,WAAW;IAAK,CAAC;GAAE;GAAO,CAAC,GAC3F;EAEM;EACZ,oBAAoB,aAAa,gBAAgB;EACpC;EACb,GAAI;GACJ;;AAIN,8BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleCreate.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleCreate/BaseRoleCreate.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAc,EAAE,EAA2B,SAAS,EAAW,MAAM,OAAO,CAAC;AASpF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E;;OAEG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC;CAC7C;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,SAAS,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,QAAA,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAuF3C,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -8,7 +8,7 @@ import AdminSection_default from "../shared/AdminSection.js";
8
8
  import { useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
 
11
- //#region src/components/admin/RoleCreate/BaseRoleCreate.tsx
11
+ //#region src/components/management/RoleCreate/BaseRoleCreate.tsx
12
12
  /**
13
13
  * A form that collects a new role's name and description. Holds no data of its own: handle the
14
14
  * submission.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleCreate.js","names":["BaseRoleCreate: FC<BaseRoleCreateProps>","useTheme","styles: Record<string, string>","useStyles","useTranslation","isValid: boolean","AdminSection","Alert","TextField","Button"],"sources":["../../../../src/components/management/RoleCreate/BaseRoleCreate.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Preferences} from '@thunderid/browser';\nimport {ChangeEvent, FC, FormEvent, ReactElement, ReactNode, useState} from 'react';\nimport useTheme from '../../../contexts/Theme/useTheme';\nimport useTranslation from '../../../hooks/useTranslation';\nimport Alert from '../../primitives/Alert/Alert';\nimport Button from '../../primitives/Button/Button';\nimport TextField from '../../primitives/TextField/TextField';\nimport AdminSection from '../shared/AdminSection';\nimport useStyles from '../shared/AdminSection.styles';\n\n/**\n * The role {@link BaseRoleCreate} submits. The organization unit is added by the caller.\n */\nexport interface RoleCreateSubmission {\n description?: string;\n name: string;\n}\n\n/**\n * What {@link BaseRoleCreate} hands its `children` render function, so the form can be built with any UI.\n */\nexport interface BaseRoleCreateRenderProps {\n error: string | null;\n /**\n * Sets one field of the form.\n */\n handleInputChange: (field: 'description' | 'name', value: string) => void;\n /**\n * Submits the current values. Does nothing while they are not valid.\n */\n handleSubmit: () => void;\n isSubmitting: boolean;\n /**\n * Whether the values can be submitted.\n */\n isValid: boolean;\n onCancel?: () => void;\n values: {description: string; name: string};\n}\n\nexport interface BaseRoleCreateProps {\n /**\n * Renders custom UI in place of the default form. Receives the values, their setters, the submit\n * handler and the submission state.\n */\n children?: (props: BaseRoleCreateRenderProps) => ReactNode;\n className?: string;\n description?: string;\n error?: string | null;\n isSubmitting?: boolean;\n onCancel?: () => void;\n onSubmit: (role: RoleCreateSubmission) => void;\n preferences?: Preferences;\n title?: string;\n}\n\n/**\n * A form that collects a new role's name and description. Holds no data of its own: handle the\n * submission.\n */\nconst BaseRoleCreate: FC<BaseRoleCreateProps> = ({\n children,\n className,\n description,\n error = null,\n isSubmitting = false,\n onCancel,\n onSubmit,\n preferences,\n title,\n}: BaseRoleCreateProps): ReactElement => {\n const {theme, colorScheme} = useTheme();\n const styles: Record<string, string> = useStyles(theme, colorScheme);\n const {t} = useTranslation(preferences?.i18n);\n const [name, setName] = useState<string>('');\n const [roleDescription, setRoleDescription] = useState<string>('');\n\n const isValid: boolean = name.trim().length > 0;\n\n const submit = (): void => {\n if (isValid) {\n onSubmit({description: roleDescription.trim() || undefined, name: name.trim()});\n }\n };\n\n const handleSubmit = (event: FormEvent<HTMLFormElement>): void => {\n event.preventDefault();\n submit();\n };\n\n if (children) {\n return (\n <div className={className}>\n {children({\n error,\n handleInputChange: (field: 'description' | 'name', value: string): void =>\n field === 'name' ? setName(value) : setRoleDescription(value),\n handleSubmit: submit,\n isSubmitting,\n isValid,\n onCancel,\n values: {description: roleDescription, name},\n })}\n </div>\n );\n }\n\n return (\n <AdminSection\n block=\"role-create\"\n className={className}\n title={title ?? t('admin.roles.create.title')}\n description={description}\n preferences={preferences}\n >\n <form className={styles['form']} onSubmit={handleSubmit} noValidate>\n {error && (\n <Alert variant=\"error\" role=\"alert\">\n {error}\n </Alert>\n )}\n <TextField\n name=\"name\"\n label={t('admin.roles.create.fields.name')}\n required\n value={name}\n onChange={(event: ChangeEvent<HTMLInputElement>): void => setName(event.target.value)}\n />\n <TextField\n name=\"description\"\n label={t('admin.roles.create.fields.description')}\n value={roleDescription}\n onChange={(event: ChangeEvent<HTMLInputElement>): void => setRoleDescription(event.target.value)}\n />\n <div className={styles['formActions']}>\n {onCancel && (\n <Button type=\"button\" variant=\"text\" onClick={onCancel} disabled={isSubmitting}>\n {t('admin.common.actions.cancel')}\n </Button>\n )}\n <Button type=\"submit\" loading={isSubmitting} disabled={!isValid || isSubmitting}>\n {t('admin.roles.create.submit')}\n </Button>\n </div>\n </form>\n </AdminSection>\n );\n};\n\nexport default BaseRoleCreate;\n"],"mappings":";;;;;;;;;;;;;;;AA+DA,MAAMA,kBAA2C,EAC/C,UACA,WACA,aACA,QAAQ,MACR,eAAe,OACf,UACA,UACA,aACA,YACuC;CACvC,MAAM,EAAC,OAAO,gBAAeC,kBAAU;CACvC,MAAMC,SAAiCC,4BAAU,OAAO,YAAY;CACpE,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAM,CAAC,MAAM,WAAW,SAAiB,GAAG;CAC5C,MAAM,CAAC,iBAAiB,sBAAsB,SAAiB,GAAG;CAElE,MAAMC,UAAmB,KAAK,MAAM,CAAC,SAAS;CAE9C,MAAM,eAAqB;AACzB,MAAI,QACF,UAAS;GAAC,aAAa,gBAAgB,MAAM,IAAI;GAAW,MAAM,KAAK,MAAM;GAAC,CAAC;;CAInF,MAAM,gBAAgB,UAA4C;AAChE,QAAM,gBAAgB;AACtB,UAAQ;;AAGV,KAAI,SACF,QACE,oBAAC;EAAe;YACb,SAAS;GACR;GACA,oBAAoB,OAA+B,UACjD,UAAU,SAAS,QAAQ,MAAM,GAAG,mBAAmB,MAAM;GAC/D,cAAc;GACd;GACA;GACA;GACA,QAAQ;IAAC,aAAa;IAAiB;IAAK;GAC7C,CAAC;GACE;AAIV,QACE,oBAACC;EACC,OAAM;EACK;EACX,OAAO,SAAS,EAAE,2BAA2B;EAChC;EACA;YAEb,qBAAC;GAAK,WAAW,OAAO;GAAS,UAAU;GAAc;;IACtD,SACC,oBAACC;KAAM,SAAQ;KAAQ,MAAK;eACzB;MACK;IAEV,oBAACC;KACC,MAAK;KACL,OAAO,EAAE,iCAAiC;KAC1C;KACA,OAAO;KACP,WAAW,UAA+C,QAAQ,MAAM,OAAO,MAAM;MACrF;IACF,oBAACA;KACC,MAAK;KACL,OAAO,EAAE,wCAAwC;KACjD,OAAO;KACP,WAAW,UAA+C,mBAAmB,MAAM,OAAO,MAAM;MAChG;IACF,qBAAC;KAAI,WAAW,OAAO;gBACpB,YACC,oBAACC;MAAO,MAAK;MAAS,SAAQ;MAAO,SAAS;MAAU,UAAU;gBAC/D,EAAE,8BAA8B;OAC1B,EAEX,oBAACA;MAAO,MAAK;MAAS,SAAS;MAAc,UAAU,CAAC,WAAW;gBAChE,EAAE,4BAA4B;OACxB;MACL;;IACD;GACM;;AAInB,6BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleCreate.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleCreate/RoleCreate.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAoB,IAAI,EAAsD,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAC,EAAE,EAAe,MAAM,OAAO,CAAC;AACvC,OAAuB,EAAC,mBAAmB,EAAuB,MAAM,kBAAkB,CAAC;AAM3F,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC,GAAG;IAC/F;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA2BnC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -6,7 +6,7 @@ import BaseRoleCreate_default from "./BaseRoleCreate.js";
6
6
  import { RoleQueryKeys, createRole, toManagementErrorMessage } from "@thunderid/browser";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
 
9
- //#region src/components/admin/RoleCreate/RoleCreate.tsx
9
+ //#region src/components/management/RoleCreate/RoleCreate.tsx
10
10
  /**
11
11
  * Creates a role through the management API.
12
12
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleCreate.js","names":["RoleCreate: FC<RoleCreateProps>","useTranslation","resolvedOuId: string | undefined","useDefaultOuId","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceMutation","BaseRoleCreate"],"sources":["../../../../src/components/management/RoleCreate/RoleCreate.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {CreateRoleRequest, Role, RoleQueryKeys, createRole, toManagementErrorMessage} from '@thunderid/browser';\nimport {FC, ReactElement} from 'react';\nimport BaseRoleCreate, {BaseRoleCreateProps, RoleCreateSubmission} from './BaseRoleCreate';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationResult} from '../../../hooks/management/useResourceMutation';\nimport useTranslation from '../../../hooks/useTranslation';\nimport useDefaultOuId from '../shared/useDefaultOuId';\n\nexport type RoleCreateProps = Omit<BaseRoleCreateProps, 'error' | 'isSubmitting' | 'onSubmit'> & {\n /**\n * Called with the created role.\n */\n onCreated?: (role: Role) => void;\n /**\n * Organization unit the role is created in. Defaults to the signed-in user's organization unit.\n */\n ouId?: string;\n};\n\n/**\n * Creates a role through the management API.\n *\n * @example\n * ```tsx\n * <RoleCreate onCreated={(role) => navigate(`/roles/${role.id}`)} />\n * ```\n */\nconst RoleCreate: FC<RoleCreateProps> = ({onCreated, ouId, preferences, ...rest}: RoleCreateProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const resolvedOuId: string | undefined = useDefaultOuId(ouId);\n const endpoint: ManagementEndpoint = useManagementEndpoint('roles');\n const {error, isLoading, mutate}: ResourceMutationResult<Role, CreateRoleRequest> = useResourceMutation(\n (payload: CreateRoleRequest, fetcher) => createRole({...endpoint, fetcher, payload}),\n () => [[RoleQueryKeys.ROLES], [RoleQueryKeys.ROLE_ASSIGNMENTS]],\n {onSuccess: onCreated},\n );\n\n const handleSubmit = ({description, name}: RoleCreateSubmission): void => {\n if (resolvedOuId) {\n void mutate({description, name, ouId: resolvedOuId});\n }\n };\n\n return (\n <BaseRoleCreate\n onSubmit={handleSubmit}\n isSubmitting={isLoading}\n error={\n resolvedOuId ? toManagementErrorMessage(t, error, 'admin.roles.create.error') : t('admin.common.errors.no_ou')\n }\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default RoleCreate;\n"],"mappings":";;;;;;;;;;;;;;;;;AA8BA,MAAMA,cAAmC,EAAC,WAAW,MAAM,YAAa,GAAG,WAAyC;CAClH,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAMC,eAAmCC,uBAAe,KAAK;CAC7D,MAAMC,WAA+BC,8BAAsB,QAAQ;CACnE,MAAM,EAAC,OAAO,WAAW,WAA2DC,6BACjF,SAA4B,YAAY,WAAW;EAAC,GAAG;EAAU;EAAS;EAAQ,CAAC,QAC9E,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC,cAAc,iBAAiB,CAAC,EAC/D,EAAC,WAAW,WAAU,CACvB;CAED,MAAM,gBAAgB,EAAC,aAAa,WAAsC;AACxE,MAAI,aACF,CAAK,OAAO;GAAC;GAAa;GAAM,MAAM;GAAa,CAAC;;AAIxD,QACE,oBAACC;EACC,UAAU;EACV,cAAc;EACd,OACE,eAAe,yBAAyB,GAAG,OAAO,2BAA2B,GAAG,EAAE,4BAA4B;EAEnG;EACb,GAAI;GACJ;;AAIN,yBAAe"}
@@ -0,0 +1,51 @@
1
+ import { Preferences, RoleSummary } from '@thunderid/browser';
2
+ import { FC, ReactNode } from 'react';
3
+ /**
4
+ * What {@link BaseRoleDetails} hands its `children` render function, so the role can be shown with any UI.
5
+ */
6
+ export interface BaseRoleDetailsRenderProps {
7
+ error: string | null;
8
+ isDeleting: boolean;
9
+ isLoading: boolean;
10
+ /**
11
+ * Deletes the role. Undefined when deletion is not allowed, including for read-only roles.
12
+ */
13
+ onDelete?: () => void;
14
+ role?: RoleSummary;
15
+ }
16
+ export interface BaseRoleDetailsProps {
17
+ /**
18
+ * Controls rendered next to the role's name.
19
+ */
20
+ actions?: ReactNode;
21
+ /**
22
+ * Who the role is assigned to, rendered under its permissions, such as a `RoleAssignments`.
23
+ */
24
+ assignments?: ReactNode;
25
+ /**
26
+ * Renders custom UI in place of the default view. Receives the role, the loading and error state, and the delete
27
+ * handler.
28
+ */
29
+ children?: (props: BaseRoleDetailsRenderProps) => ReactNode;
30
+ className?: string;
31
+ error?: string | null;
32
+ isDeleting?: boolean;
33
+ isLoading?: boolean;
34
+ /**
35
+ * Deletes the role. The delete action is hidden when omitted, and for read-only roles.
36
+ */
37
+ onDelete?: () => void;
38
+ /**
39
+ * What the role grants, rendered under its overview, such as a `RolePermissions`.
40
+ */
41
+ permissions?: ReactNode;
42
+ preferences?: Preferences;
43
+ role?: RoleSummary;
44
+ }
45
+ /**
46
+ * Shows a role's name, description and organization unit, with what it grants and who holds it under them. Holds no
47
+ * data of its own: pass the role and handle deletion.
48
+ */
49
+ declare const BaseRoleDetails: FC<BaseRoleDetailsProps>;
50
+ export default BaseRoleDetails;
51
+ //# sourceMappingURL=BaseRoleDetails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleDetails/BaseRoleDetails.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAC,EAAE,EAAgB,SAAS,EAAC,MAAM,OAAO,CAAC;AAQlD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,SAAS,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;GAGG;AACH,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA8E7C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,85 @@
1
+ import useTranslation_default from "../../../hooks/useTranslation.js";
2
+ import Spinner_default from "../../primitives/Spinner/Spinner.js";
3
+ import Alert_default from "../../primitives/Alert/Alert.js";
4
+ import useAdminPartStyles_default from "../shared/useAdminPartStyles.js";
5
+ import AdminSection_default from "../shared/AdminSection.js";
6
+ import { ConfirmButton, DetailList, Panel } from "../shared/AdminParts.js";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+
9
+ //#region src/components/management/RoleDetails/BaseRoleDetails.tsx
10
+ /**
11
+ * Shows a role's name, description and organization unit, with what it grants and who holds it under them. Holds no
12
+ * data of its own: pass the role and handle deletion.
13
+ */
14
+ const BaseRoleDetails = ({ actions, assignments, children, className, error = null, isDeleting = false, isLoading = false, onDelete, permissions, preferences, role }) => {
15
+ const { t } = useTranslation_default(preferences?.i18n);
16
+ const styles = useAdminPartStyles_default();
17
+ if (children) return /* @__PURE__ */ jsx("div", {
18
+ className,
19
+ children: children({
20
+ error,
21
+ isDeleting,
22
+ isLoading,
23
+ onDelete: role && !role.isReadOnly ? onDelete : void 0,
24
+ role
25
+ })
26
+ });
27
+ if (isLoading && !role) return /* @__PURE__ */ jsx(AdminSection_default, {
28
+ block: "role-details",
29
+ className,
30
+ preferences,
31
+ children: /* @__PURE__ */ jsxs("span", {
32
+ className: styles["muted"],
33
+ role: "status",
34
+ children: [
35
+ /* @__PURE__ */ jsx(Spinner_default, { size: "small" }),
36
+ " ",
37
+ t("admin.common.loading")
38
+ ]
39
+ })
40
+ });
41
+ if (!role) return /* @__PURE__ */ jsx(AdminSection_default, {
42
+ block: "role-details",
43
+ className,
44
+ preferences,
45
+ children: /* @__PURE__ */ jsx(Alert_default, {
46
+ variant: "error",
47
+ role: "alert",
48
+ children: error ?? t("admin.common.errors.not_found")
49
+ })
50
+ });
51
+ return /* @__PURE__ */ jsxs(AdminSection_default, {
52
+ block: "role-details",
53
+ className,
54
+ title: role.name,
55
+ description: role.description,
56
+ preferences,
57
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [actions, onDelete && !role.isReadOnly && /* @__PURE__ */ jsx(ConfirmButton, {
58
+ confirmText: t("admin.roles.details.delete.confirm", { name: role.name }),
59
+ isLoading: isDeleting,
60
+ onConfirm: onDelete,
61
+ children: t("admin.roles.details.delete.action")
62
+ })] }),
63
+ children: [
64
+ error && /* @__PURE__ */ jsx(Alert_default, {
65
+ variant: "error",
66
+ role: "alert",
67
+ children: error
68
+ }),
69
+ /* @__PURE__ */ jsx(Panel, {
70
+ title: t("admin.roles.details.overview"),
71
+ children: /* @__PURE__ */ jsx(DetailList, { items: [{
72
+ label: t("admin.common.columns.organization_unit"),
73
+ value: role.ouHandle ?? role.ouId
74
+ }] })
75
+ }),
76
+ permissions,
77
+ assignments
78
+ ]
79
+ });
80
+ };
81
+ var BaseRoleDetails_default = BaseRoleDetails;
82
+
83
+ //#endregion
84
+ export { BaseRoleDetails_default as default };
85
+ //# sourceMappingURL=BaseRoleDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRoleDetails.js","names":["BaseRoleDetails: FC<BaseRoleDetailsProps>","useTranslation","styles: Record<string, string>","useAdminPartStyles","AdminSection","Spinner","Alert"],"sources":["../../../../src/components/management/RoleDetails/BaseRoleDetails.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 Alert from '../../primitives/Alert/Alert';\nimport Spinner from '../../primitives/Spinner/Spinner';\nimport {ConfirmButton, DetailList, Panel} from '../shared/AdminParts';\nimport AdminSection from '../shared/AdminSection';\nimport useAdminPartStyles from '../shared/useAdminPartStyles';\n\n/**\n * What {@link BaseRoleDetails} hands its `children` render function, so the role can be shown with any UI.\n */\nexport interface BaseRoleDetailsRenderProps {\n error: string | null;\n isDeleting: boolean;\n isLoading: boolean;\n /**\n * Deletes the role. Undefined when deletion is not allowed, including for read-only roles.\n */\n onDelete?: () => void;\n role?: RoleSummary;\n}\n\nexport interface BaseRoleDetailsProps {\n /**\n * Controls rendered next to the role's name.\n */\n actions?: ReactNode;\n /**\n * Who the role is assigned to, rendered under its permissions, such as a `RoleAssignments`.\n */\n assignments?: ReactNode;\n /**\n * Renders custom UI in place of the default view. Receives the role, the loading and error state, and the delete\n * handler.\n */\n children?: (props: BaseRoleDetailsRenderProps) => ReactNode;\n className?: string;\n error?: string | null;\n isDeleting?: boolean;\n isLoading?: boolean;\n /**\n * Deletes the role. The delete action is hidden when omitted, and for read-only roles.\n */\n onDelete?: () => void;\n /**\n * What the role grants, rendered under its overview, such as a `RolePermissions`.\n */\n permissions?: ReactNode;\n preferences?: Preferences;\n role?: RoleSummary;\n}\n\n/**\n * Shows a role's name, description and organization unit, with what it grants and who holds it under them. Holds no\n * data of its own: pass the role and handle deletion.\n */\nconst BaseRoleDetails: FC<BaseRoleDetailsProps> = ({\n actions,\n assignments,\n children,\n className,\n error = null,\n isDeleting = false,\n isLoading = false,\n onDelete,\n permissions,\n preferences,\n role,\n}: BaseRoleDetailsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const styles: Record<string, string> = useAdminPartStyles();\n\n if (children) {\n return (\n <div className={className}>\n {children({error, isDeleting, isLoading, onDelete: role && !role.isReadOnly ? onDelete : undefined, role})}\n </div>\n );\n }\n\n if (isLoading && !role) {\n return (\n <AdminSection block=\"role-details\" className={className} preferences={preferences}>\n <span className={styles['muted']} role=\"status\">\n <Spinner size=\"small\" /> {t('admin.common.loading')}\n </span>\n </AdminSection>\n );\n }\n\n if (!role) {\n return (\n <AdminSection block=\"role-details\" className={className} preferences={preferences}>\n <Alert variant=\"error\" role=\"alert\">\n {error ?? t('admin.common.errors.not_found')}\n </Alert>\n </AdminSection>\n );\n }\n\n return (\n <AdminSection\n block=\"role-details\"\n className={className}\n title={role.name}\n description={role.description}\n preferences={preferences}\n actions={\n <>\n {actions}\n {onDelete && !role.isReadOnly && (\n <ConfirmButton\n confirmText={t('admin.roles.details.delete.confirm', {name: role.name})}\n isLoading={isDeleting}\n onConfirm={onDelete}\n >\n {t('admin.roles.details.delete.action')}\n </ConfirmButton>\n )}\n </>\n }\n >\n {error && (\n <Alert variant=\"error\" role=\"alert\">\n {error}\n </Alert>\n )}\n <Panel title={t('admin.roles.details.overview')}>\n <DetailList items={[{label: t('admin.common.columns.organization_unit'), value: role.ouHandle ?? role.ouId}]} />\n </Panel>\n {permissions}\n {assignments}\n </AdminSection>\n );\n};\n\nexport default BaseRoleDetails;\n"],"mappings":";;;;;;;;;;;;;AA4DA,MAAMA,mBAA6C,EACjD,SACA,aACA,UACA,WACA,QAAQ,MACR,aAAa,OACb,YAAY,OACZ,UACA,aACA,aACA,WACwC;CACxC,MAAM,EAAC,MAAKC,uBAAe,aAAa,KAAK;CAC7C,MAAMC,SAAiCC,4BAAoB;AAE3D,KAAI,SACF,QACE,oBAAC;EAAe;YACb,SAAS;GAAC;GAAO;GAAY;GAAW,UAAU,QAAQ,CAAC,KAAK,aAAa,WAAW;GAAW;GAAK,CAAC;GACtG;AAIV,KAAI,aAAa,CAAC,KAChB,QACE,oBAACC;EAAa,OAAM;EAA0B;EAAwB;YACpE,qBAAC;GAAK,WAAW,OAAO;GAAU,MAAK;;IACrC,oBAACC,mBAAQ,MAAK,UAAU;;IAAE,EAAE,uBAAuB;;IAC9C;GACM;AAInB,KAAI,CAAC,KACH,QACE,oBAACD;EAAa,OAAM;EAA0B;EAAwB;YACpE,oBAACE;GAAM,SAAQ;GAAQ,MAAK;aACzB,SAAS,EAAE,gCAAgC;IACtC;GACK;AAInB,QACE,qBAACF;EACC,OAAM;EACK;EACX,OAAO,KAAK;EACZ,aAAa,KAAK;EACL;EACb,SACE,4CACG,SACA,YAAY,CAAC,KAAK,cACjB,oBAAC;GACC,aAAa,EAAE,sCAAsC,EAAC,MAAM,KAAK,MAAK,CAAC;GACvE,WAAW;GACX,WAAW;aAEV,EAAE,oCAAoC;IACzB,IAEjB;;GAGJ,SACC,oBAACE;IAAM,SAAQ;IAAQ,MAAK;cACzB;KACK;GAEV,oBAAC;IAAM,OAAO,EAAE,+BAA+B;cAC7C,oBAAC,cAAW,OAAO,CAAC;KAAC,OAAO,EAAE,yCAAyC;KAAE,OAAO,KAAK,YAAY,KAAK;KAAK,CAAC,GAAI;KAC1G;GACP;GACA;;GACY;;AAInB,8BAAe"}
@@ -0,0 +1,39 @@
1
+ import { AdministrationMode } from '@thunderid/browser';
2
+ import { FC } from 'react';
3
+ import { BaseRoleDetailsProps } from './BaseRoleDetails';
4
+ export type RoleDetailsProps = Omit<BaseRoleDetailsProps, 'assignments' | 'error' | 'isDeleting' | 'isLoading' | 'onDelete' | 'permissions' | 'role'> & {
5
+ /**
6
+ * How the role is deleted and an assignment removed. `flow` runs the administration flow the server configures for
7
+ * it, which can revoke grants and end sessions first. It needs `baseUrl`.
8
+ * @default 'native'
9
+ */
10
+ administrationMode?: AdministrationMode;
11
+ /**
12
+ * Whether the role can be deleted from this view. Read-only roles never can.
13
+ * @default false
14
+ */
15
+ deletable?: boolean;
16
+ /**
17
+ * Whether the role's permissions can be added and removed, and the role assigned and taken away, from
18
+ * this view.
19
+ * @default false
20
+ */
21
+ editable?: boolean;
22
+ /**
23
+ * Called after the role has been deleted.
24
+ */
25
+ onDeleted?: () => void;
26
+ roleId: string;
27
+ };
28
+ /**
29
+ * Shows a role with its permissions and assignments, and lets the signed-in user manage the permissions and
30
+ * assignments and delete the role.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <RoleDetails roleId={roleId} editable deletable onDeleted={() => navigate('/roles')} />
35
+ * ```
36
+ */
37
+ declare const RoleDetails: FC<RoleDetailsProps>;
38
+ export default RoleDetails;
39
+ //# sourceMappingURL=RoleDetails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/management/RoleDetails/RoleDetails.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAMnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,EAAE,EAAe,MAAM,OAAO,CAAC;AACvC,OAAwB,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AASxE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,oBAAoB,EACpB,aAAa,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,CAC3F,GAAG;IACF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAyDrC,CAAC;AAEF,eAAe,WAAW,CAAC"}