@thunderid/react 1.7.0 → 1.9.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 (497) hide show
  1. package/dist/cjs/components/account/UserProfile/BaseUserProfile.cjs +1 -1
  2. package/dist/cjs/components/admin/AgentCreate/AgentCreate.cjs +15 -4
  3. package/dist/cjs/components/admin/AgentCreate/AgentCreate.cjs.map +1 -1
  4. package/dist/cjs/components/admin/AgentDetails/AgentDetails.cjs +49 -10
  5. package/dist/cjs/components/admin/AgentDetails/AgentDetails.cjs.map +1 -1
  6. package/dist/cjs/components/admin/AgentDetails/BaseAgentDetails.cjs +25 -7
  7. package/dist/cjs/components/admin/AgentDetails/BaseAgentDetails.cjs.map +1 -1
  8. package/dist/cjs/components/admin/AgentList/AgentList.cjs +13 -4
  9. package/dist/cjs/components/admin/AgentList/AgentList.cjs.map +1 -1
  10. package/dist/cjs/components/admin/ApplicationCreate/ApplicationCreate.cjs +70 -0
  11. package/dist/cjs/components/admin/ApplicationCreate/ApplicationCreate.cjs.map +1 -0
  12. package/dist/cjs/components/admin/ApplicationCreate/BaseApplicationCreate.cjs +135 -0
  13. package/dist/cjs/components/admin/ApplicationCreate/BaseApplicationCreate.cjs.map +1 -0
  14. package/dist/cjs/components/admin/ApplicationDetails/ApplicationDetails.cjs +95 -0
  15. package/dist/cjs/components/admin/ApplicationDetails/ApplicationDetails.cjs.map +1 -0
  16. package/dist/cjs/components/admin/ApplicationDetails/BaseApplicationDetails.cjs +255 -0
  17. package/dist/cjs/components/admin/ApplicationDetails/BaseApplicationDetails.cjs.map +1 -0
  18. package/dist/cjs/components/admin/ApplicationList/ApplicationList.cjs +55 -0
  19. package/dist/cjs/components/admin/ApplicationList/ApplicationList.cjs.map +1 -0
  20. package/dist/cjs/components/admin/ApplicationList/BaseApplicationList.cjs +95 -0
  21. package/dist/cjs/components/admin/ApplicationList/BaseApplicationList.cjs.map +1 -0
  22. package/dist/cjs/components/admin/GroupCreate/GroupCreate.cjs +8 -2
  23. package/dist/cjs/components/admin/GroupCreate/GroupCreate.cjs.map +1 -1
  24. package/dist/cjs/components/admin/GroupList/GroupList.cjs +10 -3
  25. package/dist/cjs/components/admin/GroupList/GroupList.cjs.map +1 -1
  26. package/dist/cjs/components/admin/GroupMembers/GroupMembers.cjs +49 -11
  27. package/dist/cjs/components/admin/GroupMembers/GroupMembers.cjs.map +1 -1
  28. package/dist/cjs/components/admin/RoleAssignments/RoleAssignments.cjs +50 -15
  29. package/dist/cjs/components/admin/RoleAssignments/RoleAssignments.cjs.map +1 -1
  30. package/dist/cjs/components/admin/RoleCreate/RoleCreate.cjs +8 -2
  31. package/dist/cjs/components/admin/RoleCreate/RoleCreate.cjs.map +1 -1
  32. package/dist/cjs/components/admin/RoleList/RoleList.cjs +10 -3
  33. package/dist/cjs/components/admin/RoleList/RoleList.cjs.map +1 -1
  34. package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs +8 -2
  35. package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs.map +1 -1
  36. package/dist/cjs/components/admin/UserCreate/UserCreate.cjs +15 -4
  37. package/dist/cjs/components/admin/UserCreate/UserCreate.cjs.map +1 -1
  38. package/dist/cjs/components/admin/UserDetails/BaseUserDetails.cjs +32 -14
  39. package/dist/cjs/components/admin/UserDetails/BaseUserDetails.cjs.map +1 -1
  40. package/dist/cjs/components/admin/UserDetails/UserDetails.cjs +45 -10
  41. package/dist/cjs/components/admin/UserDetails/UserDetails.cjs.map +1 -1
  42. package/dist/cjs/components/admin/UserList/UserList.cjs +13 -4
  43. package/dist/cjs/components/admin/UserList/UserList.cjs.map +1 -1
  44. package/dist/cjs/components/admin/shared/AccountLifecycleParts.cjs +105 -0
  45. package/dist/cjs/components/admin/shared/AccountLifecycleParts.cjs.map +1 -0
  46. package/dist/cjs/components/admin/shared/ApplicationFormFields.cjs +62 -0
  47. package/dist/cjs/components/admin/shared/ApplicationFormFields.cjs.map +1 -0
  48. package/dist/cjs/components/admin/shared/ClientSecretNotice.cjs +49 -0
  49. package/dist/cjs/components/admin/shared/ClientSecretNotice.cjs.map +1 -0
  50. package/dist/cjs/components/auth/AcceptInvite/BaseAcceptInvite.cjs +4 -5
  51. package/dist/cjs/components/auth/AcceptInvite/BaseAcceptInvite.cjs.map +1 -1
  52. package/dist/cjs/components/auth/InviteUser/InviteUser.cjs +1 -1
  53. package/dist/cjs/components/auth/SignIn/SignIn.cjs +5 -5
  54. package/dist/cjs/components/auth/SignIn/SignIn.cjs.map +1 -1
  55. package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs +4 -5
  56. package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs.map +1 -1
  57. package/dist/cjs/components/auth/flow/Consent.cjs +53 -28
  58. package/dist/cjs/components/auth/flow/Consent.cjs.map +1 -1
  59. package/dist/cjs/components/auth/flow/ConsentAuthorizationDetail.cjs +104 -0
  60. package/dist/cjs/components/auth/flow/ConsentAuthorizationDetail.cjs.map +1 -0
  61. package/dist/cjs/components/auth/flow/ConsentAuthorizationDetail.styles.cjs +59 -0
  62. package/dist/cjs/components/auth/flow/ConsentAuthorizationDetail.styles.cjs.map +1 -0
  63. package/dist/cjs/components/auth/flow/ConsentDetailField.cjs +171 -0
  64. package/dist/cjs/components/auth/flow/ConsentDetailField.cjs.map +1 -0
  65. package/dist/cjs/components/auth/flow/ConsentDetailField.styles.cjs +85 -0
  66. package/dist/cjs/components/auth/flow/ConsentDetailField.styles.cjs.map +1 -0
  67. package/dist/cjs/components/auth/flow/ConsentDetailText.cjs +63 -0
  68. package/dist/cjs/components/auth/flow/ConsentDetailText.cjs.map +1 -0
  69. package/dist/cjs/components/auth/flow/ConsentDetailText.styles.cjs +83 -0
  70. package/dist/cjs/components/auth/flow/ConsentDetailText.styles.cjs.map +1 -0
  71. package/dist/cjs/components/auth/flow/FieldFactory.cjs +1 -1
  72. package/dist/cjs/components/auth/flow/resolveConsentText.cjs +25 -0
  73. package/dist/cjs/components/auth/flow/resolveConsentText.cjs.map +1 -0
  74. package/dist/cjs/components/primitives/KeyValueInput/KeyValueInput.cjs +1 -1
  75. package/dist/cjs/components/primitives/MultiInput/MultiInput.cjs +1 -1
  76. package/dist/cjs/components/primitives/PasswordField/PasswordField.cjs +1 -1
  77. package/dist/cjs/hooks/auth/useConsentDetailField.cjs +357 -0
  78. package/dist/cjs/hooks/auth/useConsentDetailField.cjs.map +1 -0
  79. package/dist/cjs/hooks/management/useAccountLifecycle.cjs +59 -0
  80. package/dist/cjs/hooks/management/useAccountLifecycle.cjs.map +1 -0
  81. package/dist/cjs/hooks/management/useManagementEndpoint.cjs.map +1 -1
  82. package/dist/cjs/hooks/management/useManagementRequestConfig.cjs +41 -0
  83. package/dist/cjs/hooks/management/useManagementRequestConfig.cjs.map +1 -0
  84. package/dist/cjs/index.cjs +1130 -187
  85. package/dist/cjs/utils/formatConsentDetailValue.cjs +26 -0
  86. package/dist/cjs/utils/formatConsentDetailValue.cjs.map +1 -0
  87. package/dist/cjs/utils/getConsentDetailLayout.cjs +44 -0
  88. package/dist/cjs/utils/getConsentDetailLayout.cjs.map +1 -0
  89. package/dist/cjs/utils/getConsentDetailListDisplay.cjs +30 -0
  90. package/dist/cjs/utils/getConsentDetailListDisplay.cjs.map +1 -0
  91. package/dist/cjs/utils/isConsentApprovalBlocked.cjs +41 -0
  92. package/dist/cjs/utils/isConsentApprovalBlocked.cjs.map +1 -0
  93. package/dist/cjs/utils/isConsentDetailPlainList.cjs +24 -0
  94. package/dist/cjs/utils/isConsentDetailPlainList.cjs.map +1 -0
  95. package/dist/cjs/utils/isConsentDetailStructured.cjs +15 -0
  96. package/dist/cjs/utils/isConsentDetailStructured.cjs.map +1 -0
  97. package/dist/cjs/utils/isConsentDetailTextClamped.cjs +25 -0
  98. package/dist/cjs/utils/isConsentDetailTextClamped.cjs.map +1 -0
  99. package/dist/components/account/UserProfile/BaseUserProfile.js +1 -1
  100. package/dist/components/admin/AgentCreate/AgentCreate.d.ts.map +1 -1
  101. package/dist/components/admin/AgentCreate/AgentCreate.js +16 -5
  102. package/dist/components/admin/AgentCreate/AgentCreate.js.map +1 -1
  103. package/dist/components/admin/AgentDetails/AgentDetails.d.ts +8 -1
  104. package/dist/components/admin/AgentDetails/AgentDetails.d.ts.map +1 -1
  105. package/dist/components/admin/AgentDetails/AgentDetails.js +50 -11
  106. package/dist/components/admin/AgentDetails/AgentDetails.js.map +1 -1
  107. package/dist/components/admin/AgentDetails/BaseAgentDetails.d.ts +21 -1
  108. package/dist/components/admin/AgentDetails/BaseAgentDetails.d.ts.map +1 -1
  109. package/dist/components/admin/AgentDetails/BaseAgentDetails.js +25 -7
  110. package/dist/components/admin/AgentDetails/BaseAgentDetails.js.map +1 -1
  111. package/dist/components/admin/AgentList/AgentList.d.ts.map +1 -1
  112. package/dist/components/admin/AgentList/AgentList.js +14 -5
  113. package/dist/components/admin/AgentList/AgentList.js.map +1 -1
  114. package/dist/components/admin/ApplicationCreate/ApplicationCreate.d.ts +30 -0
  115. package/dist/components/admin/ApplicationCreate/ApplicationCreate.d.ts.map +1 -0
  116. package/dist/components/admin/ApplicationCreate/ApplicationCreate.js +66 -0
  117. package/dist/components/admin/ApplicationCreate/ApplicationCreate.js.map +1 -0
  118. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.d.ts +80 -0
  119. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.d.ts.map +1 -0
  120. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.js +131 -0
  121. package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.js.map +1 -0
  122. package/dist/components/admin/ApplicationDetails/ApplicationDetails.d.ts +64 -0
  123. package/dist/components/admin/ApplicationDetails/ApplicationDetails.d.ts.map +1 -0
  124. package/dist/components/admin/ApplicationDetails/ApplicationDetails.js +92 -0
  125. package/dist/components/admin/ApplicationDetails/ApplicationDetails.js.map +1 -0
  126. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.d.ts +111 -0
  127. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.d.ts.map +1 -0
  128. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.js +251 -0
  129. package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.js.map +1 -0
  130. package/dist/components/admin/ApplicationList/ApplicationList.d.ts +18 -0
  131. package/dist/components/admin/ApplicationList/ApplicationList.d.ts.map +1 -0
  132. package/dist/components/admin/ApplicationList/ApplicationList.js +51 -0
  133. package/dist/components/admin/ApplicationList/ApplicationList.js.map +1 -0
  134. package/dist/components/admin/ApplicationList/BaseApplicationList.d.ts +55 -0
  135. package/dist/components/admin/ApplicationList/BaseApplicationList.d.ts.map +1 -0
  136. package/dist/components/admin/ApplicationList/BaseApplicationList.js +93 -0
  137. package/dist/components/admin/ApplicationList/BaseApplicationList.js.map +1 -0
  138. package/dist/components/admin/GroupCreate/GroupCreate.d.ts.map +1 -1
  139. package/dist/components/admin/GroupCreate/GroupCreate.js +9 -3
  140. package/dist/components/admin/GroupCreate/GroupCreate.js.map +1 -1
  141. package/dist/components/admin/GroupList/GroupList.d.ts.map +1 -1
  142. package/dist/components/admin/GroupList/GroupList.js +11 -4
  143. package/dist/components/admin/GroupList/GroupList.js.map +1 -1
  144. package/dist/components/admin/GroupMembers/GroupMembers.d.ts +7 -0
  145. package/dist/components/admin/GroupMembers/GroupMembers.d.ts.map +1 -1
  146. package/dist/components/admin/GroupMembers/GroupMembers.js +50 -12
  147. package/dist/components/admin/GroupMembers/GroupMembers.js.map +1 -1
  148. package/dist/components/admin/RoleAssignments/RoleAssignments.d.ts +7 -0
  149. package/dist/components/admin/RoleAssignments/RoleAssignments.d.ts.map +1 -1
  150. package/dist/components/admin/RoleAssignments/RoleAssignments.js +51 -16
  151. package/dist/components/admin/RoleAssignments/RoleAssignments.js.map +1 -1
  152. package/dist/components/admin/RoleCreate/RoleCreate.d.ts.map +1 -1
  153. package/dist/components/admin/RoleCreate/RoleCreate.js +9 -3
  154. package/dist/components/admin/RoleCreate/RoleCreate.js.map +1 -1
  155. package/dist/components/admin/RoleList/RoleList.d.ts.map +1 -1
  156. package/dist/components/admin/RoleList/RoleList.js +11 -4
  157. package/dist/components/admin/RoleList/RoleList.js.map +1 -1
  158. package/dist/components/admin/RolePermissions/RolePermissions.d.ts.map +1 -1
  159. package/dist/components/admin/RolePermissions/RolePermissions.js +9 -3
  160. package/dist/components/admin/RolePermissions/RolePermissions.js.map +1 -1
  161. package/dist/components/admin/UserCreate/UserCreate.d.ts.map +1 -1
  162. package/dist/components/admin/UserCreate/UserCreate.js +16 -5
  163. package/dist/components/admin/UserCreate/UserCreate.js.map +1 -1
  164. package/dist/components/admin/UserDetails/BaseUserDetails.d.ts +22 -1
  165. package/dist/components/admin/UserDetails/BaseUserDetails.d.ts.map +1 -1
  166. package/dist/components/admin/UserDetails/BaseUserDetails.js +32 -14
  167. package/dist/components/admin/UserDetails/BaseUserDetails.js.map +1 -1
  168. package/dist/components/admin/UserDetails/UserDetails.d.ts +15 -1
  169. package/dist/components/admin/UserDetails/UserDetails.d.ts.map +1 -1
  170. package/dist/components/admin/UserDetails/UserDetails.js +46 -11
  171. package/dist/components/admin/UserDetails/UserDetails.js.map +1 -1
  172. package/dist/components/admin/UserList/UserList.d.ts.map +1 -1
  173. package/dist/components/admin/UserList/UserList.js +14 -5
  174. package/dist/components/admin/UserList/UserList.js.map +1 -1
  175. package/dist/components/admin/shared/AccountLifecycleParts.d.ts +32 -0
  176. package/dist/components/admin/shared/AccountLifecycleParts.d.ts.map +1 -0
  177. package/dist/components/admin/shared/AccountLifecycleParts.js +101 -0
  178. package/dist/components/admin/shared/AccountLifecycleParts.js.map +1 -0
  179. package/dist/components/admin/shared/ApplicationFormFields.d.ts +35 -0
  180. package/dist/components/admin/shared/ApplicationFormFields.d.ts.map +1 -0
  181. package/dist/components/admin/shared/ApplicationFormFields.js +59 -0
  182. package/dist/components/admin/shared/ApplicationFormFields.js.map +1 -0
  183. package/dist/components/admin/shared/ClientSecretNotice.d.ts +16 -0
  184. package/dist/components/admin/shared/ClientSecretNotice.d.ts.map +1 -0
  185. package/dist/components/admin/shared/ClientSecretNotice.js +47 -0
  186. package/dist/components/admin/shared/ClientSecretNotice.js.map +1 -0
  187. package/dist/components/auth/AcceptInvite/BaseAcceptInvite.d.ts.map +1 -1
  188. package/dist/components/auth/AcceptInvite/BaseAcceptInvite.js +5 -6
  189. package/dist/components/auth/AcceptInvite/BaseAcceptInvite.js.map +1 -1
  190. package/dist/components/auth/InviteUser/InviteUser.js +1 -1
  191. package/dist/components/auth/SignIn/SignIn.d.ts.map +1 -1
  192. package/dist/components/auth/SignIn/SignIn.js +6 -6
  193. package/dist/components/auth/SignIn/SignIn.js.map +1 -1
  194. package/dist/components/auth/flow/AuthOptionFactory.d.ts.map +1 -1
  195. package/dist/components/auth/flow/AuthOptionFactory.js +5 -6
  196. package/dist/components/auth/flow/AuthOptionFactory.js.map +1 -1
  197. package/dist/components/auth/flow/Consent.d.ts +6 -0
  198. package/dist/components/auth/flow/Consent.d.ts.map +1 -1
  199. package/dist/components/auth/flow/Consent.js +54 -29
  200. package/dist/components/auth/flow/Consent.js.map +1 -1
  201. package/dist/components/auth/flow/ConsentAuthorizationDetail.d.ts +68 -0
  202. package/dist/components/auth/flow/ConsentAuthorizationDetail.d.ts.map +1 -0
  203. package/dist/components/auth/flow/ConsentAuthorizationDetail.js +100 -0
  204. package/dist/components/auth/flow/ConsentAuthorizationDetail.js.map +1 -0
  205. package/dist/components/auth/flow/ConsentAuthorizationDetail.styles.d.ts +10 -0
  206. package/dist/components/auth/flow/ConsentAuthorizationDetail.styles.d.ts.map +1 -0
  207. package/dist/components/auth/flow/ConsentAuthorizationDetail.styles.js +57 -0
  208. package/dist/components/auth/flow/ConsentAuthorizationDetail.styles.js.map +1 -0
  209. package/dist/components/auth/flow/ConsentDetailField.d.ts +39 -0
  210. package/dist/components/auth/flow/ConsentDetailField.d.ts.map +1 -0
  211. package/dist/components/auth/flow/ConsentDetailField.js +168 -0
  212. package/dist/components/auth/flow/ConsentDetailField.js.map +1 -0
  213. package/dist/components/auth/flow/ConsentDetailField.styles.d.ts +11 -0
  214. package/dist/components/auth/flow/ConsentDetailField.styles.d.ts.map +1 -0
  215. package/dist/components/auth/flow/ConsentDetailField.styles.js +83 -0
  216. package/dist/components/auth/flow/ConsentDetailField.styles.js.map +1 -0
  217. package/dist/components/auth/flow/ConsentDetailText.d.ts +53 -0
  218. package/dist/components/auth/flow/ConsentDetailText.d.ts.map +1 -0
  219. package/dist/components/auth/flow/ConsentDetailText.js +58 -0
  220. package/dist/components/auth/flow/ConsentDetailText.js.map +1 -0
  221. package/dist/components/auth/flow/ConsentDetailText.styles.d.ts +20 -0
  222. package/dist/components/auth/flow/ConsentDetailText.styles.d.ts.map +1 -0
  223. package/dist/components/auth/flow/ConsentDetailText.styles.js +80 -0
  224. package/dist/components/auth/flow/ConsentDetailText.styles.js.map +1 -0
  225. package/dist/components/auth/flow/FieldFactory.js +1 -1
  226. package/dist/components/auth/flow/resolveConsentText.d.ts +13 -0
  227. package/dist/components/auth/flow/resolveConsentText.d.ts.map +1 -0
  228. package/dist/components/auth/flow/resolveConsentText.js +23 -0
  229. package/dist/components/auth/flow/resolveConsentText.js.map +1 -0
  230. package/dist/components/primitives/KeyValueInput/KeyValueInput.js +1 -1
  231. package/dist/components/primitives/MultiInput/MultiInput.js +1 -1
  232. package/dist/components/primitives/PasswordField/PasswordField.js +1 -1
  233. package/dist/hooks/auth/useConsentDetailField.d.ts +130 -0
  234. package/dist/hooks/auth/useConsentDetailField.d.ts.map +1 -0
  235. package/dist/hooks/auth/useConsentDetailField.js +354 -0
  236. package/dist/hooks/auth/useConsentDetailField.js.map +1 -0
  237. package/dist/hooks/management/useAccountLifecycle.d.ts +49 -0
  238. package/dist/hooks/management/useAccountLifecycle.d.ts.map +1 -0
  239. package/dist/hooks/management/useAccountLifecycle.js +56 -0
  240. package/dist/hooks/management/useAccountLifecycle.js.map +1 -0
  241. package/dist/hooks/management/useManagementEndpoint.d.ts +5 -1
  242. package/dist/hooks/management/useManagementEndpoint.d.ts.map +1 -1
  243. package/dist/hooks/management/useManagementEndpoint.js.map +1 -1
  244. package/dist/hooks/management/useManagementRequestConfig.d.ts +22 -0
  245. package/dist/hooks/management/useManagementRequestConfig.d.ts.map +1 -0
  246. package/dist/hooks/management/useManagementRequestConfig.js +39 -0
  247. package/dist/hooks/management/useManagementRequestConfig.js.map +1 -0
  248. package/dist/index.d.ts +35 -56
  249. package/dist/index.d.ts.map +1 -1
  250. package/dist/index.js +21 -42
  251. package/dist/models/config.d.ts +3 -4
  252. package/dist/models/config.d.ts.map +1 -1
  253. package/dist/utils/formatConsentDetailValue.d.ts +16 -0
  254. package/dist/utils/formatConsentDetailValue.d.ts.map +1 -0
  255. package/dist/utils/formatConsentDetailValue.js +25 -0
  256. package/dist/utils/formatConsentDetailValue.js.map +1 -0
  257. package/dist/utils/getConsentDetailLayout.d.ts +32 -0
  258. package/dist/utils/getConsentDetailLayout.d.ts.map +1 -0
  259. package/dist/utils/getConsentDetailLayout.js +43 -0
  260. package/dist/utils/getConsentDetailLayout.js.map +1 -0
  261. package/dist/utils/getConsentDetailListDisplay.d.ts +30 -0
  262. package/dist/utils/getConsentDetailListDisplay.d.ts.map +1 -0
  263. package/dist/utils/getConsentDetailListDisplay.js +30 -0
  264. package/dist/utils/getConsentDetailListDisplay.js.map +1 -0
  265. package/dist/utils/isConsentApprovalBlocked.d.ts +17 -0
  266. package/dist/utils/isConsentApprovalBlocked.d.ts.map +1 -0
  267. package/dist/utils/isConsentApprovalBlocked.js +39 -0
  268. package/dist/utils/isConsentApprovalBlocked.js.map +1 -0
  269. package/dist/utils/isConsentDetailPlainList.d.ts +15 -0
  270. package/dist/utils/isConsentDetailPlainList.d.ts.map +1 -0
  271. package/dist/utils/isConsentDetailPlainList.js +23 -0
  272. package/dist/utils/isConsentDetailPlainList.js.map +1 -0
  273. package/dist/utils/isConsentDetailStructured.d.ts +10 -0
  274. package/dist/utils/isConsentDetailStructured.d.ts.map +1 -0
  275. package/dist/utils/isConsentDetailStructured.js +14 -0
  276. package/dist/utils/isConsentDetailStructured.js.map +1 -0
  277. package/dist/utils/isConsentDetailTextClamped.d.ts +20 -0
  278. package/dist/utils/isConsentDetailTextClamped.d.ts.map +1 -0
  279. package/dist/utils/isConsentDetailTextClamped.js +24 -0
  280. package/dist/utils/isConsentDetailTextClamped.js.map +1 -0
  281. package/package.json +2 -2
  282. package/dist/cjs/hooks/management/agents/useCreateAgent.cjs +0 -26
  283. package/dist/cjs/hooks/management/agents/useCreateAgent.cjs.map +0 -1
  284. package/dist/cjs/hooks/management/agents/useDeleteAgent.cjs +0 -26
  285. package/dist/cjs/hooks/management/agents/useDeleteAgent.cjs.map +0 -1
  286. package/dist/cjs/hooks/management/agents/useGetAgent.cjs +0 -30
  287. package/dist/cjs/hooks/management/agents/useGetAgent.cjs.map +0 -1
  288. package/dist/cjs/hooks/management/agents/useGetAgentGroups.cjs +0 -41
  289. package/dist/cjs/hooks/management/agents/useGetAgentGroups.cjs.map +0 -1
  290. package/dist/cjs/hooks/management/agents/useGetAgentRoles.cjs +0 -42
  291. package/dist/cjs/hooks/management/agents/useGetAgentRoles.cjs.map +0 -1
  292. package/dist/cjs/hooks/management/agents/useGetAgentTypes.cjs +0 -31
  293. package/dist/cjs/hooks/management/agents/useGetAgentTypes.cjs.map +0 -1
  294. package/dist/cjs/hooks/management/agents/useGetAgents.cjs +0 -33
  295. package/dist/cjs/hooks/management/agents/useGetAgents.cjs.map +0 -1
  296. package/dist/cjs/hooks/management/agents/useUpdateAgent.cjs +0 -27
  297. package/dist/cjs/hooks/management/agents/useUpdateAgent.cjs.map +0 -1
  298. package/dist/cjs/hooks/management/applications/useCreateApplication.cjs +0 -31
  299. package/dist/cjs/hooks/management/applications/useCreateApplication.cjs.map +0 -1
  300. package/dist/cjs/hooks/management/applications/useDeleteApplication.cjs +0 -26
  301. package/dist/cjs/hooks/management/applications/useDeleteApplication.cjs.map +0 -1
  302. package/dist/cjs/hooks/management/applications/useGetApplication.cjs +0 -35
  303. package/dist/cjs/hooks/management/applications/useGetApplication.cjs.map +0 -1
  304. package/dist/cjs/hooks/management/applications/useGetApplications.cjs +0 -36
  305. package/dist/cjs/hooks/management/applications/useGetApplications.cjs.map +0 -1
  306. package/dist/cjs/hooks/management/applications/useUpdateApplication.cjs +0 -27
  307. package/dist/cjs/hooks/management/applications/useUpdateApplication.cjs.map +0 -1
  308. package/dist/cjs/hooks/management/groups/useAddGroupMembers.cjs +0 -32
  309. package/dist/cjs/hooks/management/groups/useAddGroupMembers.cjs.map +0 -1
  310. package/dist/cjs/hooks/management/groups/useCreateGroup.cjs +0 -26
  311. package/dist/cjs/hooks/management/groups/useCreateGroup.cjs.map +0 -1
  312. package/dist/cjs/hooks/management/groups/useDeleteGroup.cjs +0 -30
  313. package/dist/cjs/hooks/management/groups/useDeleteGroup.cjs.map +0 -1
  314. package/dist/cjs/hooks/management/groups/useGetGroup.cjs +0 -30
  315. package/dist/cjs/hooks/management/groups/useGetGroup.cjs.map +0 -1
  316. package/dist/cjs/hooks/management/groups/useGetGroupMembers.cjs +0 -40
  317. package/dist/cjs/hooks/management/groups/useGetGroupMembers.cjs.map +0 -1
  318. package/dist/cjs/hooks/management/groups/useGetGroups.cjs +0 -31
  319. package/dist/cjs/hooks/management/groups/useGetGroups.cjs.map +0 -1
  320. package/dist/cjs/hooks/management/groups/useRemoveGroupMembers.cjs +0 -32
  321. package/dist/cjs/hooks/management/groups/useRemoveGroupMembers.cjs.map +0 -1
  322. package/dist/cjs/hooks/management/groups/useUpdateGroup.cjs +0 -31
  323. package/dist/cjs/hooks/management/groups/useUpdateGroup.cjs.map +0 -1
  324. package/dist/cjs/hooks/management/roles/useAddRoleAssignments.cjs +0 -27
  325. package/dist/cjs/hooks/management/roles/useAddRoleAssignments.cjs.map +0 -1
  326. package/dist/cjs/hooks/management/roles/useCreateRole.cjs +0 -26
  327. package/dist/cjs/hooks/management/roles/useCreateRole.cjs.map +0 -1
  328. package/dist/cjs/hooks/management/roles/useDeleteRole.cjs +0 -26
  329. package/dist/cjs/hooks/management/roles/useDeleteRole.cjs.map +0 -1
  330. package/dist/cjs/hooks/management/roles/useGetRole.cjs +0 -30
  331. package/dist/cjs/hooks/management/roles/useGetRole.cjs.map +0 -1
  332. package/dist/cjs/hooks/management/roles/useGetRoleAssignments.cjs +0 -42
  333. package/dist/cjs/hooks/management/roles/useGetRoleAssignments.cjs.map +0 -1
  334. package/dist/cjs/hooks/management/roles/useGetRoles.cjs +0 -31
  335. package/dist/cjs/hooks/management/roles/useGetRoles.cjs.map +0 -1
  336. package/dist/cjs/hooks/management/roles/useRemoveRoleAssignments.cjs +0 -27
  337. package/dist/cjs/hooks/management/roles/useRemoveRoleAssignments.cjs.map +0 -1
  338. package/dist/cjs/hooks/management/roles/useUpdateRole.cjs +0 -27
  339. package/dist/cjs/hooks/management/roles/useUpdateRole.cjs.map +0 -1
  340. package/dist/cjs/hooks/management/users/useCreateUser.cjs +0 -26
  341. package/dist/cjs/hooks/management/users/useCreateUser.cjs.map +0 -1
  342. package/dist/cjs/hooks/management/users/useDeleteUser.cjs +0 -26
  343. package/dist/cjs/hooks/management/users/useDeleteUser.cjs.map +0 -1
  344. package/dist/cjs/hooks/management/users/useGetUser.cjs +0 -30
  345. package/dist/cjs/hooks/management/users/useGetUser.cjs.map +0 -1
  346. package/dist/cjs/hooks/management/users/useGetUserGroups.cjs +0 -41
  347. package/dist/cjs/hooks/management/users/useGetUserGroups.cjs.map +0 -1
  348. package/dist/cjs/hooks/management/users/useGetUserTypes.cjs +0 -31
  349. package/dist/cjs/hooks/management/users/useGetUserTypes.cjs.map +0 -1
  350. package/dist/cjs/hooks/management/users/useGetUsers.cjs +0 -38
  351. package/dist/cjs/hooks/management/users/useGetUsers.cjs.map +0 -1
  352. package/dist/cjs/hooks/management/users/useUpdateUser.cjs +0 -27
  353. package/dist/cjs/hooks/management/users/useUpdateUser.cjs.map +0 -1
  354. package/dist/hooks/management/agents/useCreateAgent.d.ts +0 -11
  355. package/dist/hooks/management/agents/useCreateAgent.d.ts.map +0 -1
  356. package/dist/hooks/management/agents/useCreateAgent.js +0 -24
  357. package/dist/hooks/management/agents/useCreateAgent.js.map +0 -1
  358. package/dist/hooks/management/agents/useDeleteAgent.d.ts +0 -10
  359. package/dist/hooks/management/agents/useDeleteAgent.d.ts.map +0 -1
  360. package/dist/hooks/management/agents/useDeleteAgent.js +0 -24
  361. package/dist/hooks/management/agents/useDeleteAgent.js.map +0 -1
  362. package/dist/hooks/management/agents/useGetAgent.d.ts +0 -12
  363. package/dist/hooks/management/agents/useGetAgent.d.ts.map +0 -1
  364. package/dist/hooks/management/agents/useGetAgent.js +0 -28
  365. package/dist/hooks/management/agents/useGetAgent.js.map +0 -1
  366. package/dist/hooks/management/agents/useGetAgentGroups.d.ts +0 -16
  367. package/dist/hooks/management/agents/useGetAgentGroups.d.ts.map +0 -1
  368. package/dist/hooks/management/agents/useGetAgentGroups.js +0 -39
  369. package/dist/hooks/management/agents/useGetAgentGroups.js.map +0 -1
  370. package/dist/hooks/management/agents/useGetAgentRoles.d.ts +0 -17
  371. package/dist/hooks/management/agents/useGetAgentRoles.d.ts.map +0 -1
  372. package/dist/hooks/management/agents/useGetAgentRoles.js +0 -40
  373. package/dist/hooks/management/agents/useGetAgentRoles.js.map +0 -1
  374. package/dist/hooks/management/agents/useGetAgentTypes.d.ts +0 -15
  375. package/dist/hooks/management/agents/useGetAgentTypes.d.ts.map +0 -1
  376. package/dist/hooks/management/agents/useGetAgentTypes.js +0 -29
  377. package/dist/hooks/management/agents/useGetAgentTypes.js.map +0 -1
  378. package/dist/hooks/management/agents/useGetAgents.d.ts +0 -23
  379. package/dist/hooks/management/agents/useGetAgents.d.ts.map +0 -1
  380. package/dist/hooks/management/agents/useGetAgents.js +0 -31
  381. package/dist/hooks/management/agents/useGetAgents.js.map +0 -1
  382. package/dist/hooks/management/agents/useUpdateAgent.d.ts +0 -18
  383. package/dist/hooks/management/agents/useUpdateAgent.d.ts.map +0 -1
  384. package/dist/hooks/management/agents/useUpdateAgent.js +0 -25
  385. package/dist/hooks/management/agents/useUpdateAgent.js.map +0 -1
  386. package/dist/hooks/management/applications/useCreateApplication.d.ts +0 -16
  387. package/dist/hooks/management/applications/useCreateApplication.d.ts.map +0 -1
  388. package/dist/hooks/management/applications/useCreateApplication.js +0 -29
  389. package/dist/hooks/management/applications/useCreateApplication.js.map +0 -1
  390. package/dist/hooks/management/applications/useDeleteApplication.d.ts +0 -10
  391. package/dist/hooks/management/applications/useDeleteApplication.d.ts.map +0 -1
  392. package/dist/hooks/management/applications/useDeleteApplication.js +0 -24
  393. package/dist/hooks/management/applications/useDeleteApplication.js.map +0 -1
  394. package/dist/hooks/management/applications/useGetApplication.d.ts +0 -17
  395. package/dist/hooks/management/applications/useGetApplication.d.ts.map +0 -1
  396. package/dist/hooks/management/applications/useGetApplication.js +0 -33
  397. package/dist/hooks/management/applications/useGetApplication.js.map +0 -1
  398. package/dist/hooks/management/applications/useGetApplications.d.ts +0 -24
  399. package/dist/hooks/management/applications/useGetApplications.d.ts.map +0 -1
  400. package/dist/hooks/management/applications/useGetApplications.js +0 -34
  401. package/dist/hooks/management/applications/useGetApplications.js.map +0 -1
  402. package/dist/hooks/management/applications/useUpdateApplication.d.ts +0 -18
  403. package/dist/hooks/management/applications/useUpdateApplication.d.ts.map +0 -1
  404. package/dist/hooks/management/applications/useUpdateApplication.js +0 -25
  405. package/dist/hooks/management/applications/useUpdateApplication.js.map +0 -1
  406. package/dist/hooks/management/groups/useAddGroupMembers.d.ts +0 -24
  407. package/dist/hooks/management/groups/useAddGroupMembers.d.ts.map +0 -1
  408. package/dist/hooks/management/groups/useAddGroupMembers.js +0 -30
  409. package/dist/hooks/management/groups/useAddGroupMembers.js.map +0 -1
  410. package/dist/hooks/management/groups/useCreateGroup.d.ts +0 -11
  411. package/dist/hooks/management/groups/useCreateGroup.d.ts.map +0 -1
  412. package/dist/hooks/management/groups/useCreateGroup.js +0 -24
  413. package/dist/hooks/management/groups/useCreateGroup.js.map +0 -1
  414. package/dist/hooks/management/groups/useDeleteGroup.d.ts +0 -10
  415. package/dist/hooks/management/groups/useDeleteGroup.d.ts.map +0 -1
  416. package/dist/hooks/management/groups/useDeleteGroup.js +0 -28
  417. package/dist/hooks/management/groups/useDeleteGroup.js.map +0 -1
  418. package/dist/hooks/management/groups/useGetGroup.d.ts +0 -12
  419. package/dist/hooks/management/groups/useGetGroup.d.ts.map +0 -1
  420. package/dist/hooks/management/groups/useGetGroup.js +0 -28
  421. package/dist/hooks/management/groups/useGetGroup.js.map +0 -1
  422. package/dist/hooks/management/groups/useGetGroupMembers.d.ts +0 -20
  423. package/dist/hooks/management/groups/useGetGroupMembers.d.ts.map +0 -1
  424. package/dist/hooks/management/groups/useGetGroupMembers.js +0 -38
  425. package/dist/hooks/management/groups/useGetGroupMembers.js.map +0 -1
  426. package/dist/hooks/management/groups/useGetGroups.d.ts +0 -19
  427. package/dist/hooks/management/groups/useGetGroups.d.ts.map +0 -1
  428. package/dist/hooks/management/groups/useGetGroups.js +0 -29
  429. package/dist/hooks/management/groups/useGetGroups.js.map +0 -1
  430. package/dist/hooks/management/groups/useRemoveGroupMembers.d.ts +0 -12
  431. package/dist/hooks/management/groups/useRemoveGroupMembers.d.ts.map +0 -1
  432. package/dist/hooks/management/groups/useRemoveGroupMembers.js +0 -30
  433. package/dist/hooks/management/groups/useRemoveGroupMembers.js.map +0 -1
  434. package/dist/hooks/management/groups/useUpdateGroup.d.ts +0 -24
  435. package/dist/hooks/management/groups/useUpdateGroup.d.ts.map +0 -1
  436. package/dist/hooks/management/groups/useUpdateGroup.js +0 -29
  437. package/dist/hooks/management/groups/useUpdateGroup.js.map +0 -1
  438. package/dist/hooks/management/roles/useAddRoleAssignments.d.ts +0 -24
  439. package/dist/hooks/management/roles/useAddRoleAssignments.d.ts.map +0 -1
  440. package/dist/hooks/management/roles/useAddRoleAssignments.js +0 -25
  441. package/dist/hooks/management/roles/useAddRoleAssignments.js.map +0 -1
  442. package/dist/hooks/management/roles/useCreateRole.d.ts +0 -11
  443. package/dist/hooks/management/roles/useCreateRole.d.ts.map +0 -1
  444. package/dist/hooks/management/roles/useCreateRole.js +0 -24
  445. package/dist/hooks/management/roles/useCreateRole.js.map +0 -1
  446. package/dist/hooks/management/roles/useDeleteRole.d.ts +0 -10
  447. package/dist/hooks/management/roles/useDeleteRole.d.ts.map +0 -1
  448. package/dist/hooks/management/roles/useDeleteRole.js +0 -24
  449. package/dist/hooks/management/roles/useDeleteRole.js.map +0 -1
  450. package/dist/hooks/management/roles/useGetRole.d.ts +0 -12
  451. package/dist/hooks/management/roles/useGetRole.d.ts.map +0 -1
  452. package/dist/hooks/management/roles/useGetRole.js +0 -28
  453. package/dist/hooks/management/roles/useGetRole.js.map +0 -1
  454. package/dist/hooks/management/roles/useGetRoleAssignments.d.ts +0 -24
  455. package/dist/hooks/management/roles/useGetRoleAssignments.d.ts.map +0 -1
  456. package/dist/hooks/management/roles/useGetRoleAssignments.js +0 -40
  457. package/dist/hooks/management/roles/useGetRoleAssignments.js.map +0 -1
  458. package/dist/hooks/management/roles/useGetRoles.d.ts +0 -19
  459. package/dist/hooks/management/roles/useGetRoles.d.ts.map +0 -1
  460. package/dist/hooks/management/roles/useGetRoles.js +0 -29
  461. package/dist/hooks/management/roles/useGetRoles.js.map +0 -1
  462. package/dist/hooks/management/roles/useRemoveRoleAssignments.d.ts +0 -11
  463. package/dist/hooks/management/roles/useRemoveRoleAssignments.d.ts.map +0 -1
  464. package/dist/hooks/management/roles/useRemoveRoleAssignments.js +0 -25
  465. package/dist/hooks/management/roles/useRemoveRoleAssignments.js.map +0 -1
  466. package/dist/hooks/management/roles/useUpdateRole.d.ts +0 -24
  467. package/dist/hooks/management/roles/useUpdateRole.d.ts.map +0 -1
  468. package/dist/hooks/management/roles/useUpdateRole.js +0 -25
  469. package/dist/hooks/management/roles/useUpdateRole.js.map +0 -1
  470. package/dist/hooks/management/users/useCreateUser.d.ts +0 -11
  471. package/dist/hooks/management/users/useCreateUser.d.ts.map +0 -1
  472. package/dist/hooks/management/users/useCreateUser.js +0 -24
  473. package/dist/hooks/management/users/useCreateUser.js.map +0 -1
  474. package/dist/hooks/management/users/useDeleteUser.d.ts +0 -10
  475. package/dist/hooks/management/users/useDeleteUser.d.ts.map +0 -1
  476. package/dist/hooks/management/users/useDeleteUser.js +0 -24
  477. package/dist/hooks/management/users/useDeleteUser.js.map +0 -1
  478. package/dist/hooks/management/users/useGetUser.d.ts +0 -12
  479. package/dist/hooks/management/users/useGetUser.d.ts.map +0 -1
  480. package/dist/hooks/management/users/useGetUser.js +0 -28
  481. package/dist/hooks/management/users/useGetUser.js.map +0 -1
  482. package/dist/hooks/management/users/useGetUserGroups.d.ts +0 -16
  483. package/dist/hooks/management/users/useGetUserGroups.d.ts.map +0 -1
  484. package/dist/hooks/management/users/useGetUserGroups.js +0 -39
  485. package/dist/hooks/management/users/useGetUserGroups.js.map +0 -1
  486. package/dist/hooks/management/users/useGetUserTypes.d.ts +0 -15
  487. package/dist/hooks/management/users/useGetUserTypes.d.ts.map +0 -1
  488. package/dist/hooks/management/users/useGetUserTypes.js +0 -29
  489. package/dist/hooks/management/users/useGetUserTypes.js.map +0 -1
  490. package/dist/hooks/management/users/useGetUsers.d.ts +0 -17
  491. package/dist/hooks/management/users/useGetUsers.d.ts.map +0 -1
  492. package/dist/hooks/management/users/useGetUsers.js +0 -36
  493. package/dist/hooks/management/users/useGetUsers.js.map +0 -1
  494. package/dist/hooks/management/users/useUpdateUser.d.ts +0 -18
  495. package/dist/hooks/management/users/useUpdateUser.d.ts.map +0 -1
  496. package/dist/hooks/management/users/useUpdateUser.js +0 -25
  497. package/dist/hooks/management/users/useUpdateUser.js.map +0 -1
@@ -0,0 +1,95 @@
1
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
+ const require_useTranslation = require('../../../hooks/useTranslation.cjs');
3
+ const require_useManagementEndpoint = require('../../../hooks/management/useManagementEndpoint.cjs');
4
+ const require_useResourceQuery = require('../../../hooks/management/useResourceQuery.cjs');
5
+ const require_useResourceMutation = require('../../../hooks/management/useResourceMutation.cjs');
6
+ const require_useAccountLifecycle = require('../../../hooks/management/useAccountLifecycle.cjs');
7
+ const require_BaseApplicationDetails = require('./BaseApplicationDetails.cjs');
8
+ let __thunderid_browser = require("@thunderid/browser");
9
+ __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
10
+ let react_jsx_runtime = require("react/jsx-runtime");
11
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
12
+
13
+ //#region src/components/admin/ApplicationDetails/ApplicationDetails.tsx
14
+ /**
15
+ * Shows an application and its OAuth configuration, and optionally lets the signed-in user edit it,
16
+ * regenerate its client secret or delete it.
17
+ *
18
+ * The server guards applications with the root `system` permission, for reading and for changes alike;
19
+ * it defines no application-specific permission. Gate the view and its actions on it with
20
+ * `useGrantedPermissions().can('system')`.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * const {can} = useGrantedPermissions();
25
+ * const isAdmin = can('system');
26
+ *
27
+ * <ApplicationDetails
28
+ * applicationId={applicationId}
29
+ * editable={isAdmin}
30
+ * deletable={isAdmin}
31
+ * secretRegenerable={isAdmin}
32
+ * onDeleted={() => navigate('/applications')}
33
+ * />
34
+ * ```
35
+ */
36
+ const ApplicationDetails = ({ administrationMode, applicationId, deletable = false, editable = false, lifecycleActions = false, onDeleted, preferences, secretRegenerable = false,...rest }) => {
37
+ const { t } = require_useTranslation.default(preferences?.i18n);
38
+ const endpoint = require_useManagementEndpoint.default("applications");
39
+ const application = require_useResourceQuery.default([__thunderid_browser.ApplicationQueryKeys.APPLICATION, applicationId], (fetcher) => (0, __thunderid_browser.getApplication)({
40
+ ...endpoint,
41
+ applicationId,
42
+ fetcher
43
+ }), { enabled: Boolean(applicationId) });
44
+ const deletion = require_useResourceMutation.default((id, fetcher) => (0, __thunderid_browser.deleteApplication)({
45
+ ...endpoint,
46
+ administrationMode,
47
+ applicationId: id,
48
+ fetcher
49
+ }), () => [[__thunderid_browser.ApplicationQueryKeys.APPLICATIONS]], { onSuccess: onDeleted });
50
+ const update = require_useResourceMutation.default(({ application: current, changes }, fetcher) => (0, __thunderid_browser.updateApplication)({
51
+ ...endpoint,
52
+ applicationId: current.id,
53
+ fetcher,
54
+ payload: (0, __thunderid_browser.toUpdateApplicationRequest)(current, changes)
55
+ }), ({ application: current }) => [[__thunderid_browser.ApplicationQueryKeys.APPLICATION, current.id], [__thunderid_browser.ApplicationQueryKeys.APPLICATIONS]]);
56
+ const regeneration = require_useResourceMutation.default((id, fetcher) => (0, __thunderid_browser.regenerateClientSecret)({
57
+ ...endpoint,
58
+ administrationMode,
59
+ applicationId: id,
60
+ fetcher
61
+ }), (id) => [[__thunderid_browser.ApplicationQueryKeys.APPLICATION, id], [__thunderid_browser.ApplicationQueryKeys.APPLICATIONS]]);
62
+ const lifecycle = require_useAccountLifecycle.default({
63
+ enabled: lifecycleActions,
64
+ invalidatedKeys: [[__thunderid_browser.ApplicationQueryKeys.APPLICATION, applicationId], [__thunderid_browser.ApplicationQueryKeys.APPLICATIONS]],
65
+ kind: "application",
66
+ status: application.data?.status?.value,
67
+ subject: applicationId
68
+ });
69
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseApplicationDetails.default, {
70
+ application: application.data,
71
+ isLoading: application.isLoading,
72
+ error: (0, __thunderid_browser.toManagementErrorMessage)(t, application.error, "admin.applications.details.error") ?? (0, __thunderid_browser.toManagementErrorMessage)(t, deletion.error, "admin.applications.details.delete.error") ?? (0, __thunderid_browser.toManagementErrorMessage)(t, update.error, "admin.applications.details.edit.error") ?? (0, __thunderid_browser.toManagementErrorMessage)(t, regeneration.error, "admin.applications.details.secret.error") ?? (0, __thunderid_browser.toManagementErrorMessage)(t, lifecycle.error, "admin.common.lifecycle.error") ?? (0, __thunderid_browser.toManagementErrorMessage)(t, lifecycle.loadError, "admin.common.lifecycle.load_error"),
73
+ isDeleting: deletion.isLoading,
74
+ onDelete: deletable ? () => void deletion.mutate(applicationId) : void 0,
75
+ lifecycleActions: lifecycle.actions,
76
+ isRunningLifecycleAction: lifecycle.isRunning,
77
+ onLifecycleAction: lifecycleActions ? lifecycle.run : void 0,
78
+ isUpdating: update.isLoading,
79
+ onUpdate: editable && application.data ? (changes) => void update.mutate({
80
+ application: application.data,
81
+ changes
82
+ }) : void 0,
83
+ isRegeneratingSecret: regeneration.isLoading,
84
+ onRegenerateSecret: secretRegenerable ? () => void regeneration.mutate(applicationId) : void 0,
85
+ clientSecret: regeneration.data?.clientSecret ?? null,
86
+ onSecretDismiss: regeneration.reset,
87
+ preferences,
88
+ ...rest
89
+ });
90
+ };
91
+ var ApplicationDetails_default = ApplicationDetails;
92
+
93
+ //#endregion
94
+ exports.default = ApplicationDetails_default;
95
+ //# sourceMappingURL=ApplicationDetails.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationDetails.cjs","names":["ApplicationDetails: FC<ApplicationDetailsProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","application: ResourceQueryResult<Application>","useResourceQuery","ApplicationQueryKeys","deletion: ResourceMutationResult<void, string>","useResourceMutation","update: ResourceMutationResult<Application, UpdateApplicationVariables>","regeneration: ResourceMutationResult<RegenerateClientSecretResult, string>","lifecycle: AccountLifecycleState","useAccountLifecycle","BaseApplicationDetails"],"sources":["../../../../../src/components/admin/ApplicationDetails/ApplicationDetails.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n AdministrationMode,\n Application,\n ApplicationQueryKeys,\n deleteApplication,\n getApplication,\n regenerateClientSecret,\n RegenerateClientSecretResult,\n toManagementErrorMessage,\n toUpdateApplicationRequest,\n updateApplication,\n} from '@thunderid/browser';\nimport {FC, ReactElement} from 'react';\nimport BaseApplicationDetails, {\n ApplicationUpdateSubmission,\n BaseApplicationDetailsProps,\n} from './BaseApplicationDetails';\nimport useAccountLifecycle, {AccountLifecycleState} from '../../../hooks/management/useAccountLifecycle';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationResult} from '../../../hooks/management/useResourceMutation';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\ninterface UpdateApplicationVariables {\n application: Application;\n changes: ApplicationUpdateSubmission;\n}\n\nexport type ApplicationDetailsProps = Omit<\n BaseApplicationDetailsProps,\n | 'application'\n | 'clientSecret'\n | 'error'\n | 'isDeleting'\n | 'isLoading'\n | 'isRegeneratingSecret'\n | 'isRunningLifecycleAction'\n | 'isUpdating'\n | 'lifecycleActions'\n | 'onDelete'\n | 'onLifecycleAction'\n | 'onRegenerateSecret'\n | 'onSecretDismiss'\n | 'onUpdate'\n> & {\n /**\n * How the delete and the client secret regeneration run. `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 applicationId: string;\n /**\n * Whether the application can be deleted from this view.\n * @default false\n */\n deletable?: boolean;\n /**\n * Whether the application's general fields, redirect URIs and grant types can be edited from this view.\n * @default false\n */\n editable?: boolean;\n /**\n * Whether the application can be suspended and unsuspended from this view. Each action runs through its\n * administration flow and is offered only when the server configures that flow. Reading the configured\n * flows needs a token that may read the server configuration.\n * @default false\n */\n lifecycleActions?: boolean;\n /**\n * Called after the application has been deleted.\n */\n onDeleted?: () => void;\n /**\n * Whether the application's client secret can be regenerated from this view. The new secret is shown\n * once.\n * @default false\n */\n secretRegenerable?: boolean;\n};\n\n/**\n * Shows an application and its OAuth configuration, and optionally lets the signed-in user edit it,\n * regenerate its client secret or delete it.\n *\n * The server guards applications with the root `system` permission, for reading and for changes alike;\n * it defines no application-specific permission. Gate the view and its actions on it with\n * `useGrantedPermissions().can('system')`.\n *\n * @example\n * ```tsx\n * const {can} = useGrantedPermissions();\n * const isAdmin = can('system');\n *\n * <ApplicationDetails\n * applicationId={applicationId}\n * editable={isAdmin}\n * deletable={isAdmin}\n * secretRegenerable={isAdmin}\n * onDeleted={() => navigate('/applications')}\n * />\n * ```\n */\nconst ApplicationDetails: FC<ApplicationDetailsProps> = ({\n administrationMode,\n applicationId,\n deletable = false,\n editable = false,\n lifecycleActions = false,\n onDeleted,\n preferences,\n secretRegenerable = false,\n ...rest\n}: ApplicationDetailsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const endpoint: ManagementEndpoint = useManagementEndpoint('applications');\n const application: ResourceQueryResult<Application> = useResourceQuery(\n [ApplicationQueryKeys.APPLICATION, applicationId],\n (fetcher) => getApplication({...endpoint, applicationId, fetcher}),\n {enabled: Boolean(applicationId)},\n );\n const deletion: ResourceMutationResult<void, string> = useResourceMutation(\n (id: string, fetcher) => deleteApplication({...endpoint, administrationMode, applicationId: id, fetcher}),\n () => [[ApplicationQueryKeys.APPLICATIONS]],\n {onSuccess: onDeleted},\n );\n const update: ResourceMutationResult<Application, UpdateApplicationVariables> = useResourceMutation(\n ({application: current, changes}: UpdateApplicationVariables, fetcher) =>\n updateApplication({\n ...endpoint,\n applicationId: current.id,\n fetcher,\n payload: toUpdateApplicationRequest(current, changes),\n }),\n ({application: current}: UpdateApplicationVariables) => [\n [ApplicationQueryKeys.APPLICATION, current.id],\n [ApplicationQueryKeys.APPLICATIONS],\n ],\n );\n const regeneration: ResourceMutationResult<RegenerateClientSecretResult, string> = useResourceMutation(\n (id: string, fetcher) => regenerateClientSecret({...endpoint, administrationMode, applicationId: id, fetcher}),\n (id: string) => [[ApplicationQueryKeys.APPLICATION, id], [ApplicationQueryKeys.APPLICATIONS]],\n );\n\n const lifecycle: AccountLifecycleState = useAccountLifecycle({\n enabled: lifecycleActions,\n invalidatedKeys: [[ApplicationQueryKeys.APPLICATION, applicationId], [ApplicationQueryKeys.APPLICATIONS]],\n kind: 'application',\n status: application.data?.status?.value,\n subject: applicationId,\n });\n\n return (\n <BaseApplicationDetails\n application={application.data}\n isLoading={application.isLoading}\n error={\n toManagementErrorMessage(t, application.error, 'admin.applications.details.error') ??\n toManagementErrorMessage(t, deletion.error, 'admin.applications.details.delete.error') ??\n toManagementErrorMessage(t, update.error, 'admin.applications.details.edit.error') ??\n toManagementErrorMessage(t, regeneration.error, 'admin.applications.details.secret.error') ??\n toManagementErrorMessage(t, lifecycle.error, 'admin.common.lifecycle.error') ??\n toManagementErrorMessage(t, lifecycle.loadError, 'admin.common.lifecycle.load_error')\n }\n isDeleting={deletion.isLoading}\n onDelete={deletable ? (): void => void deletion.mutate(applicationId) : undefined}\n lifecycleActions={lifecycle.actions}\n isRunningLifecycleAction={lifecycle.isRunning}\n onLifecycleAction={lifecycleActions ? lifecycle.run : undefined}\n isUpdating={update.isLoading}\n onUpdate={\n editable && application.data\n ? (changes: ApplicationUpdateSubmission): void =>\n void update.mutate({application: application.data!, changes})\n : undefined\n }\n isRegeneratingSecret={regeneration.isLoading}\n onRegenerateSecret={secretRegenerable ? (): void => void regeneration.mutate(applicationId) : undefined}\n clientSecret={regeneration.data?.clientSecret ?? null}\n onSecretDismiss={regeneration.reset}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default ApplicationDetails;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GA,MAAMA,sBAAmD,EACvD,oBACA,eACA,YAAY,OACZ,WAAW,OACX,mBAAmB,OACnB,WACA,aACA,oBAAoB,MACpB,GAAG,WACwC;CAC3C,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAC7C,MAAMC,WAA+BC,sCAAsB,eAAe;CAC1E,MAAMC,cAAgDC,iCACpD,CAACC,yCAAqB,aAAa,cAAc,GAChD,oDAA2B;EAAC,GAAG;EAAU;EAAe;EAAQ,CAAC,EAClE,EAAC,SAAS,QAAQ,cAAc,EAAC,CAClC;CACD,MAAMC,WAAiDC,qCACpD,IAAY,uDAA8B;EAAC,GAAG;EAAU;EAAoB,eAAe;EAAI;EAAQ,CAAC,QACnG,CAAC,CAACF,yCAAqB,aAAa,CAAC,EAC3C,EAAC,WAAW,WAAU,CACvB;CACD,MAAMG,SAA0ED,qCAC7E,EAAC,aAAa,SAAS,WAAsC,uDAC1C;EAChB,GAAG;EACH,eAAe,QAAQ;EACvB;EACA,6DAAoC,SAAS,QAAQ;EACtD,CAAC,GACH,EAAC,aAAa,cAAyC,CACtD,CAACF,yCAAqB,aAAa,QAAQ,GAAG,EAC9C,CAACA,yCAAqB,aAAa,CACpC,CACF;CACD,MAAMI,eAA6EF,qCAChF,IAAY,4DAAmC;EAAC,GAAG;EAAU;EAAoB,eAAe;EAAI;EAAQ,CAAC,GAC7G,OAAe,CAAC,CAACF,yCAAqB,aAAa,GAAG,EAAE,CAACA,yCAAqB,aAAa,CAAC,CAC9F;CAED,MAAMK,YAAmCC,oCAAoB;EAC3D,SAAS;EACT,iBAAiB,CAAC,CAACN,yCAAqB,aAAa,cAAc,EAAE,CAACA,yCAAqB,aAAa,CAAC;EACzG,MAAM;EACN,QAAQ,YAAY,MAAM,QAAQ;EAClC,SAAS;EACV,CAAC;AAEF,QACE,2CAACO;EACC,aAAa,YAAY;EACzB,WAAW,YAAY;EACvB,yDAC2B,GAAG,YAAY,OAAO,mCAAmC,sDACzD,GAAG,SAAS,OAAO,0CAA0C,sDAC7D,GAAG,OAAO,OAAO,wCAAwC,sDACzD,GAAG,aAAa,OAAO,0CAA0C,sDACjE,GAAG,UAAU,OAAO,+BAA+B,sDACnD,GAAG,UAAU,WAAW,oCAAoC;EAEvF,YAAY,SAAS;EACrB,UAAU,kBAAwB,KAAK,SAAS,OAAO,cAAc,GAAG;EACxE,kBAAkB,UAAU;EAC5B,0BAA0B,UAAU;EACpC,mBAAmB,mBAAmB,UAAU,MAAM;EACtD,YAAY,OAAO;EACnB,UACE,YAAY,YAAY,QACnB,YACC,KAAK,OAAO,OAAO;GAAC,aAAa,YAAY;GAAO;GAAQ,CAAC,GAC/D;EAEN,sBAAsB,aAAa;EACnC,oBAAoB,0BAAgC,KAAK,aAAa,OAAO,cAAc,GAAG;EAC9F,cAAc,aAAa,MAAM,gBAAgB;EACjD,iBAAiB,aAAa;EACjB;EACb,GAAI;GACJ;;AAIN,iCAAe"}
@@ -0,0 +1,255 @@
1
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
+ const require_useTranslation = require('../../../hooks/useTranslation.cjs');
3
+ const require_Spinner = require('../../primitives/Spinner/Spinner.cjs');
4
+ const require_Button = require('../../primitives/Button/Button.cjs');
5
+ const require_Alert = require('../../primitives/Alert/Alert.cjs');
6
+ const require_CopyableText = require('../../primitives/CopyableText/CopyableText.cjs');
7
+ const require_useAdminPartStyles = require('../shared/useAdminPartStyles.cjs');
8
+ const require_AdminSection = require('../shared/AdminSection.cjs');
9
+ const require_AccountLifecycleParts = require('../shared/AccountLifecycleParts.cjs');
10
+ const require_AdminParts = require('../shared/AdminParts.cjs');
11
+ const require_ApplicationFormFields = require('../shared/ApplicationFormFields.cjs');
12
+ const require_ClientSecretNotice = require('../shared/ClientSecretNotice.cjs');
13
+ let __thunderid_browser = require("@thunderid/browser");
14
+ __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
15
+ let react = require("react");
16
+ react = require_rolldown_runtime.__toESM(react);
17
+ let react_jsx_runtime = require("react/jsx-runtime");
18
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
19
+
20
+ //#region src/components/admin/ApplicationDetails/BaseApplicationDetails.tsx
21
+ const toFormValues = (application, oauth) => ({
22
+ description: application.description ?? "",
23
+ grantTypes: oauth?.grantTypes ?? [],
24
+ logoUrl: application.logoUrl ?? "",
25
+ name: application.name,
26
+ publicClient: Boolean(oauth?.publicClient),
27
+ redirectUris: (oauth?.redirectUris ?? []).join(", "),
28
+ url: application.url ?? ""
29
+ });
30
+ const toSubmission = (values) => ({
31
+ description: values.description.trim() || void 0,
32
+ grantTypes: values.grantTypes,
33
+ logoUrl: values.logoUrl.trim() || void 0,
34
+ name: values.name.trim(),
35
+ publicClient: values.publicClient,
36
+ redirectUris: (0, __thunderid_browser.parseRedirectUris)(values.redirectUris),
37
+ url: values.url.trim() || void 0
38
+ });
39
+ /**
40
+ * Shows an application's general fields and OAuth configuration. Holds no data of its own: pass the
41
+ * application and handle editing, deletion and client secret regeneration, each offered only when its
42
+ * handler is set.
43
+ */
44
+ const BaseApplicationDetails = ({ actions, application, children, className, clientSecret = null, error = null, isDeleting = false, isLoading = false, isRegeneratingSecret = false, isRunningLifecycleAction = false, isUpdating = false, lifecycleActions = [], onDelete, onLifecycleAction, onRegenerateSecret, onSecretDismiss, onUpdate, preferences }) => {
45
+ const { t } = require_useTranslation.default(preferences?.i18n);
46
+ const styles = require_useAdminPartStyles.default();
47
+ const [draft, setDraft] = (0, react.useState)(null);
48
+ const oauthConfig = (0, __thunderid_browser.getApplicationOAuthConfig)(application);
49
+ const isWritable = Boolean(application) && !application?.isReadOnly;
50
+ const canRegenerate = isWritable && Boolean(oauthConfig) && !oauthConfig?.publicClient;
51
+ if (children) {
52
+ let oauth;
53
+ if (oauthConfig) {
54
+ const { clientSecret: storedSecret,...rest } = oauthConfig;
55
+ oauth = rest;
56
+ }
57
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
58
+ className,
59
+ children: children({
60
+ application,
61
+ clientSecret,
62
+ error,
63
+ isDeleting,
64
+ isLoading,
65
+ isRegeneratingSecret,
66
+ isRunningLifecycleAction,
67
+ isUpdating,
68
+ lifecycleActions: onLifecycleAction && application ? lifecycleActions : [],
69
+ oauth,
70
+ onDelete: isWritable ? onDelete : void 0,
71
+ onLifecycleAction: application ? onLifecycleAction : void 0,
72
+ onRegenerateSecret: canRegenerate ? onRegenerateSecret : void 0,
73
+ onSecretDismiss: clientSecret ? onSecretDismiss : void 0,
74
+ onUpdate: isWritable ? onUpdate : void 0
75
+ })
76
+ });
77
+ }
78
+ if (isLoading && !application) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminSection.default, {
79
+ block: "application-details",
80
+ className,
81
+ preferences,
82
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
83
+ className: styles["muted"],
84
+ role: "status",
85
+ children: [
86
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Spinner.default, { size: "small" }),
87
+ " ",
88
+ t("admin.common.loading")
89
+ ]
90
+ })
91
+ });
92
+ if (!application) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminSection.default, {
93
+ block: "application-details",
94
+ className,
95
+ preferences,
96
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Alert.default, {
97
+ variant: "error",
98
+ role: "alert",
99
+ children: error ?? t("admin.common.errors.not_found")
100
+ })
101
+ });
102
+ const notSet = t("admin.applications.details.not_set");
103
+ const overview = [
104
+ {
105
+ label: t("admin.applications.list.columns.client_id"),
106
+ value: oauthConfig?.clientId ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CopyableText.default, { value: oauthConfig.clientId }) : notSet
107
+ },
108
+ {
109
+ label: t("admin.applications.details.type"),
110
+ value: application.type ?? application.template ?? notSet
111
+ },
112
+ {
113
+ label: t("admin.common.columns.organization_unit"),
114
+ value: application.ouId ?? notSet
115
+ },
116
+ {
117
+ label: t("admin.applications.fields.url"),
118
+ value: application.url ?? notSet
119
+ },
120
+ {
121
+ label: t("admin.applications.fields.logo_url"),
122
+ value: application.logoUrl ?? notSet
123
+ }
124
+ ];
125
+ if (application.status?.value) overview.push({
126
+ label: t("admin.common.columns.status"),
127
+ value: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AccountLifecycleParts.AccessStatusBadge, { status: application.status.value })
128
+ });
129
+ const handleSave = (event) => {
130
+ event.preventDefault();
131
+ if (!draft) return;
132
+ const { publicClient,...submission } = toSubmission(draft);
133
+ onUpdate?.(submission);
134
+ setDraft(null);
135
+ };
136
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_AdminSection.default, {
137
+ block: "application-details",
138
+ className,
139
+ title: application.name,
140
+ description: application.description,
141
+ preferences,
142
+ actions: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
143
+ actions,
144
+ onLifecycleAction && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AccountLifecycleParts.AccountLifecycleButtons, {
145
+ actions: lifecycleActions,
146
+ isRunning: isRunningLifecycleAction,
147
+ name: application.name,
148
+ onAction: onLifecycleAction
149
+ }),
150
+ onDelete && isWritable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ConfirmButton, {
151
+ confirmText: t("admin.applications.details.delete.confirm", { name: application.name }),
152
+ isLoading: isDeleting,
153
+ onConfirm: onDelete,
154
+ children: t("admin.applications.details.delete.action")
155
+ })
156
+ ] }),
157
+ children: [error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Alert.default, {
158
+ variant: "error",
159
+ role: "alert",
160
+ children: error
161
+ }), draft ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.Panel, {
162
+ title: t("admin.applications.details.edit.action"),
163
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
164
+ className: styles["row"],
165
+ style: {
166
+ alignItems: "stretch",
167
+ flexDirection: "column"
168
+ },
169
+ onSubmit: handleSave,
170
+ noValidate: true,
171
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ApplicationFormFields.default, {
172
+ preferences,
173
+ values: draft,
174
+ onInputChange: (field, value) => setDraft((previous) => previous && {
175
+ ...previous,
176
+ [field]: value
177
+ }),
178
+ onGrantTypesChange: (grantTypes) => setDraft((previous) => previous && {
179
+ ...previous,
180
+ grantTypes
181
+ })
182
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
183
+ className: styles["row"],
184
+ style: { justifyContent: "flex-end" },
185
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
186
+ type: "button",
187
+ variant: "text",
188
+ disabled: isUpdating,
189
+ onClick: () => setDraft(null),
190
+ children: t("admin.common.actions.cancel")
191
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
192
+ type: "submit",
193
+ loading: isUpdating,
194
+ disabled: isUpdating || !(0, __thunderid_browser.isApplicationSubmissionValid)(toSubmission(draft)),
195
+ children: t("admin.applications.details.edit.save")
196
+ })]
197
+ })]
198
+ })
199
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.Panel, {
200
+ title: t("admin.applications.details.overview"),
201
+ actions: onUpdate && isWritable ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
202
+ variant: "outline",
203
+ size: "small",
204
+ onClick: () => setDraft(toFormValues(application, oauthConfig)),
205
+ children: t("admin.applications.details.edit.action")
206
+ }) : void 0,
207
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.DetailList, { items: overview })
208
+ }), oauthConfig && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_AdminParts.Panel, {
209
+ title: t("admin.applications.details.oauth"),
210
+ actions: onRegenerateSecret && canRegenerate && !clientSecret ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ConfirmButton, {
211
+ confirmText: t("admin.applications.details.secret.confirm", { name: application.name }),
212
+ isLoading: isRegeneratingSecret,
213
+ onConfirm: onRegenerateSecret,
214
+ children: t("admin.applications.details.secret.action")
215
+ }) : void 0,
216
+ children: [clientSecret && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ClientSecretNotice.default, {
217
+ secret: clientSecret,
218
+ onDismiss: onSecretDismiss,
219
+ preferences
220
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.DetailList, { items: [
221
+ {
222
+ label: t("admin.applications.fields.grant_types"),
223
+ value: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ChipList, {
224
+ label: t("admin.applications.fields.grant_types"),
225
+ emptyText: t("admin.applications.details.no_grant_types"),
226
+ items: (oauthConfig.grantTypes ?? []).map((grantType) => ({
227
+ id: grantType,
228
+ label: __thunderid_browser.APPLICATION_GRANT_TYPES.includes(grantType) ? t(`admin.applications.grant_types.${grantType}`) : grantType
229
+ }))
230
+ })
231
+ },
232
+ {
233
+ label: t("admin.applications.fields.redirect_uris"),
234
+ value: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ChipList, {
235
+ label: t("admin.applications.fields.redirect_uris"),
236
+ emptyText: t("admin.applications.details.no_redirect_uris"),
237
+ items: (oauthConfig.redirectUris ?? []).map((uri) => ({
238
+ id: uri,
239
+ label: uri
240
+ }))
241
+ })
242
+ },
243
+ {
244
+ label: t("admin.applications.details.public_client"),
245
+ value: oauthConfig.publicClient ? t("admin.applications.details.yes") : t("admin.applications.details.no")
246
+ }
247
+ ] })]
248
+ })] })]
249
+ });
250
+ };
251
+ var BaseApplicationDetails_default = BaseApplicationDetails;
252
+
253
+ //#endregion
254
+ exports.default = BaseApplicationDetails_default;
255
+ //# sourceMappingURL=BaseApplicationDetails.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseApplicationDetails.cjs","names":["BaseApplicationDetails: FC<BaseApplicationDetailsProps>","useTranslation","styles: Record<string, string>","useAdminPartStyles","oauthConfig: OAuth2Config | undefined","isWritable: boolean","canRegenerate: boolean","oauth: Omit<OAuth2Config, 'clientSecret'> | undefined","AdminSection","Spinner","Alert","notSet: string","overview: DetailListItem[]","CopyableText","AccessStatusBadge","AccountLifecycleButtons","ConfirmButton","Panel","ApplicationFormFields","Button","DetailList","ClientSecretNotice","ChipList","APPLICATION_GRANT_TYPES"],"sources":["../../../../../src/components/admin/ApplicationDetails/BaseApplicationDetails.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n AccountLifecycleAction,\n Application,\n APPLICATION_GRANT_TYPES,\n ApplicationSubmission,\n getApplicationOAuthConfig,\n isApplicationSubmissionValid,\n OAuth2Config,\n parseRedirectUris,\n Preferences,\n} from '@thunderid/browser';\nimport {FC, FormEvent, ReactElement, ReactNode, useState} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport Alert from '../../primitives/Alert/Alert';\nimport Button from '../../primitives/Button/Button';\nimport CopyableText from '../../primitives/CopyableText/CopyableText';\nimport Spinner from '../../primitives/Spinner/Spinner';\nimport {AccessStatusBadge, AccountLifecycleButtons} from '../shared/AccountLifecycleParts';\nimport {ChipList, ConfirmButton, DetailList, DetailListItem, Panel} from '../shared/AdminParts';\nimport AdminSection from '../shared/AdminSection';\nimport ApplicationFormFields, {ApplicationFormValues, ApplicationTextField} from '../shared/ApplicationFormFields';\nimport ClientSecretNotice from '../shared/ClientSecretNotice';\nimport useAdminPartStyles from '../shared/useAdminPartStyles';\n\n/**\n * The edited fields {@link BaseApplicationDetails} hands `onUpdate`. Whether the client is public does\n * not change.\n */\nexport type ApplicationUpdateSubmission = Omit<ApplicationSubmission, 'publicClient'>;\n\n/**\n * What {@link BaseApplicationDetails} hands its `children` render function, so the application can be\n * shown with any UI.\n */\nexport interface BaseApplicationDetailsRenderProps {\n application?: Application;\n /**\n * The new client secret, to show once. `null` while there is none.\n */\n clientSecret: string | null;\n error: string | null;\n isDeleting: boolean;\n isLoading: boolean;\n isRegeneratingSecret: boolean;\n isRunningLifecycleAction: boolean;\n isUpdating: boolean;\n /**\n * The account lifecycle actions offered for the application. Empty when none is allowed.\n */\n lifecycleActions: AccountLifecycleAction[];\n /**\n * The application's OAuth configuration, without its client secret. Undefined when it has no OAuth client.\n */\n oauth?: Omit<OAuth2Config, 'clientSecret'>;\n /**\n * Deletes the application. Undefined when deletion is not allowed, including for read-only applications.\n */\n onDelete?: () => void;\n /**\n * Runs an account lifecycle action. Undefined when none is allowed.\n */\n onLifecycleAction?: (action: AccountLifecycleAction, operatorNote?: string) => void;\n /**\n * Gives the application a new client secret. Undefined when not allowed, for read-only applications\n * and for applications without a confidential OAuth client.\n */\n onRegenerateSecret?: () => void;\n /**\n * Hides the new client secret once it has been copied. Undefined while there is no secret.\n */\n onSecretDismiss?: () => void;\n /**\n * Saves edited fields. Undefined when editing is not allowed, including for read-only applications.\n */\n onUpdate?: (application: ApplicationUpdateSubmission) => void;\n}\n\nexport interface BaseApplicationDetailsProps {\n /**\n * Controls rendered next to the application's name.\n */\n actions?: ReactNode;\n application?: Application;\n /**\n * Renders custom UI in place of the default view. Receives the application, its OAuth configuration,\n * the loading and error state, the actions the app allows and the new client secret to show.\n */\n children?: (props: BaseApplicationDetailsRenderProps) => ReactNode;\n className?: string;\n /**\n * A client secret just generated by `onRegenerateSecret`, shown once until `onSecretDismiss` clears it.\n */\n clientSecret?: string | null;\n error?: string | null;\n isDeleting?: boolean;\n isLoading?: boolean;\n isRegeneratingSecret?: boolean;\n isRunningLifecycleAction?: boolean;\n isUpdating?: boolean;\n /**\n * The account lifecycle actions to offer (suspend, unsuspend; applications are never locked), shown only with `onLifecycleAction`. They change\n * only runtime state, so they apply to read-only applications too.\n */\n lifecycleActions?: AccountLifecycleAction[];\n /**\n * Deletes the application. The delete action is hidden when omitted.\n */\n onDelete?: () => void;\n /**\n * Runs an account lifecycle action. Suspending and unsuspending ask for confirmation first.\n */\n onLifecycleAction?: (action: AccountLifecycleAction, operatorNote?: string) => void;\n /**\n * Gives the application a new client secret. The regenerate action is hidden when omitted, and for\n * public clients, which have no secret.\n */\n onRegenerateSecret?: () => void;\n /**\n * Called when the user has copied the new client secret.\n */\n onSecretDismiss?: () => void;\n /**\n * Saves the edited general fields, redirect URIs and grant types. Editing is offered only when set.\n */\n onUpdate?: (application: ApplicationUpdateSubmission) => void;\n preferences?: Preferences;\n}\n\nconst toFormValues = (application: Application, oauth?: OAuth2Config): ApplicationFormValues => ({\n description: application.description ?? '',\n grantTypes: oauth?.grantTypes ?? [],\n logoUrl: application.logoUrl ?? '',\n name: application.name,\n publicClient: Boolean(oauth?.publicClient),\n redirectUris: (oauth?.redirectUris ?? []).join(', '),\n url: application.url ?? '',\n});\n\nconst toSubmission = (values: ApplicationFormValues): ApplicationSubmission => ({\n description: values.description.trim() || undefined,\n grantTypes: values.grantTypes,\n logoUrl: values.logoUrl.trim() || undefined,\n name: values.name.trim(),\n publicClient: values.publicClient,\n redirectUris: parseRedirectUris(values.redirectUris),\n url: values.url.trim() || undefined,\n});\n\n/**\n * Shows an application's general fields and OAuth configuration. Holds no data of its own: pass the\n * application and handle editing, deletion and client secret regeneration, each offered only when its\n * handler is set.\n */\nconst BaseApplicationDetails: FC<BaseApplicationDetailsProps> = ({\n actions,\n application,\n children,\n className,\n clientSecret = null,\n error = null,\n isDeleting = false,\n isLoading = false,\n isRegeneratingSecret = false,\n isRunningLifecycleAction = false,\n isUpdating = false,\n lifecycleActions = [],\n onDelete,\n onLifecycleAction,\n onRegenerateSecret,\n onSecretDismiss,\n onUpdate,\n preferences,\n}: BaseApplicationDetailsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const styles: Record<string, string> = useAdminPartStyles();\n const [draft, setDraft] = useState<ApplicationFormValues | null>(null);\n\n const oauthConfig: OAuth2Config | undefined = getApplicationOAuthConfig(application);\n const isWritable: boolean = Boolean(application) && !application?.isReadOnly;\n const canRegenerate: boolean = isWritable && Boolean(oauthConfig) && !oauthConfig?.publicClient;\n\n if (children) {\n let oauth: Omit<OAuth2Config, 'clientSecret'> | undefined;\n\n if (oauthConfig) {\n const {clientSecret: storedSecret, ...rest}: OAuth2Config = oauthConfig;\n void storedSecret;\n oauth = rest;\n }\n\n return (\n <div className={className}>\n {children({\n application,\n clientSecret,\n error,\n isDeleting,\n isLoading,\n isRegeneratingSecret,\n isRunningLifecycleAction,\n isUpdating,\n lifecycleActions: onLifecycleAction && application ? lifecycleActions : [],\n oauth,\n onDelete: isWritable ? onDelete : undefined,\n onLifecycleAction: application ? onLifecycleAction : undefined,\n onRegenerateSecret: canRegenerate ? onRegenerateSecret : undefined,\n onSecretDismiss: clientSecret ? onSecretDismiss : undefined,\n onUpdate: isWritable ? onUpdate : undefined,\n })}\n </div>\n );\n }\n\n if (isLoading && !application) {\n return (\n <AdminSection block=\"application-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 (!application) {\n return (\n <AdminSection block=\"application-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 const notSet: string = t('admin.applications.details.not_set');\n const overview: DetailListItem[] = [\n {\n label: t('admin.applications.list.columns.client_id'),\n value: oauthConfig?.clientId ? <CopyableText value={oauthConfig.clientId} /> : notSet,\n },\n {label: t('admin.applications.details.type'), value: application.type ?? application.template ?? notSet},\n {label: t('admin.common.columns.organization_unit'), value: application.ouId ?? notSet},\n {label: t('admin.applications.fields.url'), value: application.url ?? notSet},\n {label: t('admin.applications.fields.logo_url'), value: application.logoUrl ?? notSet},\n ];\n\n if (application.status?.value) {\n overview.push({\n label: t('admin.common.columns.status'),\n value: <AccessStatusBadge status={application.status.value} />,\n });\n }\n\n const handleSave = (event: FormEvent<HTMLFormElement>): void => {\n event.preventDefault();\n\n if (!draft) {\n return;\n }\n\n const {publicClient, ...submission}: ApplicationSubmission = toSubmission(draft);\n void publicClient;\n onUpdate?.(submission);\n setDraft(null);\n };\n\n return (\n <AdminSection\n block=\"application-details\"\n className={className}\n title={application.name}\n description={application.description}\n preferences={preferences}\n actions={\n <>\n {actions}\n {onLifecycleAction && (\n <AccountLifecycleButtons\n actions={lifecycleActions}\n isRunning={isRunningLifecycleAction}\n name={application.name}\n onAction={onLifecycleAction}\n />\n )}\n {onDelete && isWritable && (\n <ConfirmButton\n confirmText={t('admin.applications.details.delete.confirm', {name: application.name})}\n isLoading={isDeleting}\n onConfirm={onDelete}\n >\n {t('admin.applications.details.delete.action')}\n </ConfirmButton>\n )}\n </>\n }\n >\n {error && (\n <Alert variant=\"error\" role=\"alert\">\n {error}\n </Alert>\n )}\n {draft ? (\n <Panel title={t('admin.applications.details.edit.action')}>\n <form\n className={styles['row']}\n style={{alignItems: 'stretch', flexDirection: 'column'}}\n onSubmit={handleSave}\n noValidate\n >\n <ApplicationFormFields\n preferences={preferences}\n values={draft}\n onInputChange={(field: ApplicationTextField, value: string): void =>\n setDraft((previous: ApplicationFormValues | null) => previous && {...previous, [field]: value})\n }\n onGrantTypesChange={(grantTypes: string[]): void =>\n setDraft((previous: ApplicationFormValues | null) => previous && {...previous, grantTypes})\n }\n />\n <div className={styles['row']} style={{justifyContent: 'flex-end'}}>\n <Button type=\"button\" variant=\"text\" disabled={isUpdating} onClick={(): void => setDraft(null)}>\n {t('admin.common.actions.cancel')}\n </Button>\n <Button\n type=\"submit\"\n loading={isUpdating}\n disabled={isUpdating || !isApplicationSubmissionValid(toSubmission(draft))}\n >\n {t('admin.applications.details.edit.save')}\n </Button>\n </div>\n </form>\n </Panel>\n ) : (\n <>\n <Panel\n title={t('admin.applications.details.overview')}\n actions={\n onUpdate && isWritable ? (\n <Button\n variant=\"outline\"\n size=\"small\"\n onClick={(): void => setDraft(toFormValues(application, oauthConfig))}\n >\n {t('admin.applications.details.edit.action')}\n </Button>\n ) : undefined\n }\n >\n <DetailList items={overview} />\n </Panel>\n {oauthConfig && (\n <Panel\n title={t('admin.applications.details.oauth')}\n actions={\n onRegenerateSecret && canRegenerate && !clientSecret ? (\n <ConfirmButton\n confirmText={t('admin.applications.details.secret.confirm', {name: application.name})}\n isLoading={isRegeneratingSecret}\n onConfirm={onRegenerateSecret}\n >\n {t('admin.applications.details.secret.action')}\n </ConfirmButton>\n ) : undefined\n }\n >\n {clientSecret && (\n <ClientSecretNotice secret={clientSecret} onDismiss={onSecretDismiss} preferences={preferences} />\n )}\n <DetailList\n items={[\n {\n label: t('admin.applications.fields.grant_types'),\n value: (\n <ChipList\n label={t('admin.applications.fields.grant_types')}\n emptyText={t('admin.applications.details.no_grant_types')}\n items={(oauthConfig.grantTypes ?? []).map((grantType: string) => ({\n id: grantType,\n label: APPLICATION_GRANT_TYPES.includes(grantType)\n ? t(`admin.applications.grant_types.${grantType}`)\n : grantType,\n }))}\n />\n ),\n },\n {\n label: t('admin.applications.fields.redirect_uris'),\n value: (\n <ChipList\n label={t('admin.applications.fields.redirect_uris')}\n emptyText={t('admin.applications.details.no_redirect_uris')}\n items={(oauthConfig.redirectUris ?? []).map((uri: string) => ({id: uri, label: uri}))}\n />\n ),\n },\n {\n label: t('admin.applications.details.public_client'),\n value: oauthConfig.publicClient\n ? t('admin.applications.details.yes')\n : t('admin.applications.details.no'),\n },\n ]}\n />\n </Panel>\n )}\n </>\n )}\n </AdminSection>\n );\n};\n\nexport default BaseApplicationDetails;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAmIA,MAAM,gBAAgB,aAA0B,WAAiD;CAC/F,aAAa,YAAY,eAAe;CACxC,YAAY,OAAO,cAAc,EAAE;CACnC,SAAS,YAAY,WAAW;CAChC,MAAM,YAAY;CAClB,cAAc,QAAQ,OAAO,aAAa;CAC1C,eAAe,OAAO,gBAAgB,EAAE,EAAE,KAAK,KAAK;CACpD,KAAK,YAAY,OAAO;CACzB;AAED,MAAM,gBAAgB,YAA0D;CAC9E,aAAa,OAAO,YAAY,MAAM,IAAI;CAC1C,YAAY,OAAO;CACnB,SAAS,OAAO,QAAQ,MAAM,IAAI;CAClC,MAAM,OAAO,KAAK,MAAM;CACxB,cAAc,OAAO;CACrB,yDAAgC,OAAO,aAAa;CACpD,KAAK,OAAO,IAAI,MAAM,IAAI;CAC3B;;;;;;AAOD,MAAMA,0BAA2D,EAC/D,SACA,aACA,UACA,WACA,eAAe,MACf,QAAQ,MACR,aAAa,OACb,YAAY,OACZ,uBAAuB,OACvB,2BAA2B,OAC3B,aAAa,OACb,mBAAmB,EAAE,EACrB,UACA,mBACA,oBACA,iBACA,UACA,kBAC+C;CAC/C,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAC7C,MAAMC,SAAiCC,oCAAoB;CAC3D,MAAM,CAAC,OAAO,gCAAmD,KAAK;CAEtE,MAAMC,iEAAkE,YAAY;CACpF,MAAMC,aAAsB,QAAQ,YAAY,IAAI,CAAC,aAAa;CAClE,MAAMC,gBAAyB,cAAc,QAAQ,YAAY,IAAI,CAAC,aAAa;AAEnF,KAAI,UAAU;EACZ,IAAIC;AAEJ,MAAI,aAAa;GACf,MAAM,EAAC,cAAc,aAAc,GAAG,SAAsB;AAE5D,WAAQ;;AAGV,SACE,2CAAC;GAAe;aACb,SAAS;IACR;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,kBAAkB,qBAAqB,cAAc,mBAAmB,EAAE;IAC1E;IACA,UAAU,aAAa,WAAW;IAClC,mBAAmB,cAAc,oBAAoB;IACrD,oBAAoB,gBAAgB,qBAAqB;IACzD,iBAAiB,eAAe,kBAAkB;IAClD,UAAU,aAAa,WAAW;IACnC,CAAC;IACE;;AAIV,KAAI,aAAa,CAAC,YAChB,QACE,2CAACC;EAAa,OAAM;EAAiC;EAAwB;YAC3E,4CAAC;GAAK,WAAW,OAAO;GAAU,MAAK;;IACrC,2CAACC,2BAAQ,MAAK,UAAU;;IAAE,EAAE,uBAAuB;;IAC9C;GACM;AAInB,KAAI,CAAC,YACH,QACE,2CAACD;EAAa,OAAM;EAAiC;EAAwB;YAC3E,2CAACE;GAAM,SAAQ;GAAQ,MAAK;aACzB,SAAS,EAAE,gCAAgC;IACtC;GACK;CAInB,MAAMC,SAAiB,EAAE,qCAAqC;CAC9D,MAAMC,WAA6B;EACjC;GACE,OAAO,EAAE,4CAA4C;GACrD,OAAO,aAAa,WAAW,2CAACC,gCAAa,OAAO,YAAY,WAAY,GAAG;GAChF;EACD;GAAC,OAAO,EAAE,kCAAkC;GAAE,OAAO,YAAY,QAAQ,YAAY,YAAY;GAAO;EACxG;GAAC,OAAO,EAAE,yCAAyC;GAAE,OAAO,YAAY,QAAQ;GAAO;EACvF;GAAC,OAAO,EAAE,gCAAgC;GAAE,OAAO,YAAY,OAAO;GAAO;EAC7E;GAAC,OAAO,EAAE,qCAAqC;GAAE,OAAO,YAAY,WAAW;GAAO;EACvF;AAED,KAAI,YAAY,QAAQ,MACtB,UAAS,KAAK;EACZ,OAAO,EAAE,8BAA8B;EACvC,OAAO,2CAACC,mDAAkB,QAAQ,YAAY,OAAO,QAAS;EAC/D,CAAC;CAGJ,MAAM,cAAc,UAA4C;AAC9D,QAAM,gBAAgB;AAEtB,MAAI,CAAC,MACH;EAGF,MAAM,EAAC,aAAc,GAAG,eAAqC,aAAa,MAAM;AAEhF,aAAW,WAAW;AACtB,WAAS,KAAK;;AAGhB,QACE,4CAACN;EACC,OAAM;EACK;EACX,OAAO,YAAY;EACnB,aAAa,YAAY;EACZ;EACb,SACE;GACG;GACA,qBACC,2CAACO;IACC,SAAS;IACT,WAAW;IACX,MAAM,YAAY;IAClB,UAAU;KACV;GAEH,YAAY,cACX,2CAACC;IACC,aAAa,EAAE,6CAA6C,EAAC,MAAM,YAAY,MAAK,CAAC;IACrF,WAAW;IACX,WAAW;cAEV,EAAE,2CAA2C;KAChC;MAEjB;aAGJ,SACC,2CAACN;GAAM,SAAQ;GAAQ,MAAK;aACzB;IACK,EAET,QACC,2CAACO;GAAM,OAAO,EAAE,yCAAyC;aACvD,4CAAC;IACC,WAAW,OAAO;IAClB,OAAO;KAAC,YAAY;KAAW,eAAe;KAAS;IACvD,UAAU;IACV;eAEA,2CAACC;KACc;KACb,QAAQ;KACR,gBAAgB,OAA6B,UAC3C,UAAU,aAA2C,YAAY;MAAC,GAAG;OAAW,QAAQ;MAAM,CAAC;KAEjG,qBAAqB,eACnB,UAAU,aAA2C,YAAY;MAAC,GAAG;MAAU;MAAW,CAAC;MAE7F,EACF,4CAAC;KAAI,WAAW,OAAO;KAAQ,OAAO,EAAC,gBAAgB,YAAW;gBAChE,2CAACC;MAAO,MAAK;MAAS,SAAQ;MAAO,UAAU;MAAY,eAAqB,SAAS,KAAK;gBAC3F,EAAE,8BAA8B;OAC1B,EACT,2CAACA;MACC,MAAK;MACL,SAAS;MACT,UAAU,cAAc,uDAA8B,aAAa,MAAM,CAAC;gBAEzE,EAAE,uCAAuC;OACnC;MACL;KACD;IACD,GAER,qFACE,2CAACF;GACC,OAAO,EAAE,sCAAsC;GAC/C,SACE,YAAY,aACV,2CAACE;IACC,SAAQ;IACR,MAAK;IACL,eAAqB,SAAS,aAAa,aAAa,YAAY,CAAC;cAEpE,EAAE,yCAAyC;KACrC,GACP;aAGN,2CAACC,iCAAW,OAAO,WAAY;IACzB,EACP,eACC,4CAACH;GACC,OAAO,EAAE,mCAAmC;GAC5C,SACE,sBAAsB,iBAAiB,CAAC,eACtC,2CAACD;IACC,aAAa,EAAE,6CAA6C,EAAC,MAAM,YAAY,MAAK,CAAC;IACrF,WAAW;IACX,WAAW;cAEV,EAAE,2CAA2C;KAChC,GACd;cAGL,gBACC,2CAACK;IAAmB,QAAQ;IAAc,WAAW;IAA8B;KAAe,EAEpG,2CAACD,iCACC,OAAO;IACL;KACE,OAAO,EAAE,wCAAwC;KACjD,OACE,2CAACE;MACC,OAAO,EAAE,wCAAwC;MACjD,WAAW,EAAE,4CAA4C;MACzD,QAAQ,YAAY,cAAc,EAAE,EAAE,KAAK,eAAuB;OAChE,IAAI;OACJ,OAAOC,4CAAwB,SAAS,UAAU,GAC9C,EAAE,kCAAkC,YAAY,GAChD;OACL,EAAE;OACH;KAEL;IACD;KACE,OAAO,EAAE,0CAA0C;KACnD,OACE,2CAACD;MACC,OAAO,EAAE,0CAA0C;MACnD,WAAW,EAAE,8CAA8C;MAC3D,QAAQ,YAAY,gBAAgB,EAAE,EAAE,KAAK,SAAiB;OAAC,IAAI;OAAK,OAAO;OAAI,EAAE;OACrF;KAEL;IACD;KACE,OAAO,EAAE,2CAA2C;KACpD,OAAO,YAAY,eACf,EAAE,iCAAiC,GACnC,EAAE,gCAAgC;KACvC;IACF,GACD;IACI,IAET;GAEQ;;AAInB,qCAAe"}
@@ -0,0 +1,55 @@
1
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
+ const require_useTranslation = require('../../../hooks/useTranslation.cjs');
3
+ const require_useManagementEndpoint = require('../../../hooks/management/useManagementEndpoint.cjs');
4
+ const require_useResourceQuery = require('../../../hooks/management/useResourceQuery.cjs');
5
+ const require_BaseApplicationList = require('./BaseApplicationList.cjs');
6
+ let __thunderid_browser = require("@thunderid/browser");
7
+ __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
8
+ let react = require("react");
9
+ react = require_rolldown_runtime.__toESM(react);
10
+ let react_jsx_runtime = require("react/jsx-runtime");
11
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
12
+
13
+ //#region src/components/admin/ApplicationList/ApplicationList.tsx
14
+ /**
15
+ * Lists the applications the signed-in user is allowed to see, a page at a time.
16
+ *
17
+ * The server guards applications with the root `system` permission, for reading and for changes alike;
18
+ * it defines no application-specific permission. Gate the view and its actions on it with
19
+ * `useGrantedPermissions().can('system')`.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <ApplicationList onSelect={(application) => setSelectedApplicationId(application.id)} />
24
+ * ```
25
+ */
26
+ const ApplicationList = ({ limit = 20, preferences,...rest }) => {
27
+ const { t } = require_useTranslation.default(preferences?.i18n);
28
+ const [offset, setOffset] = (0, react.useState)(0);
29
+ const endpoint = require_useManagementEndpoint.default("applications");
30
+ const { data, error, isLoading } = require_useResourceQuery.default([__thunderid_browser.ApplicationQueryKeys.APPLICATIONS, {
31
+ limit,
32
+ offset
33
+ }], (fetcher) => (0, __thunderid_browser.getApplications)({
34
+ ...endpoint,
35
+ fetcher,
36
+ limit,
37
+ offset
38
+ }));
39
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseApplicationList.default, {
40
+ applications: data?.applications ?? [],
41
+ totalResults: data?.totalResults,
42
+ isLoading,
43
+ error: (0, __thunderid_browser.toManagementErrorMessage)(t, error, "admin.applications.list.error"),
44
+ limit,
45
+ offset,
46
+ onPageChange: setOffset,
47
+ preferences,
48
+ ...rest
49
+ });
50
+ };
51
+ var ApplicationList_default = ApplicationList;
52
+
53
+ //#endregion
54
+ exports.default = ApplicationList_default;
55
+ //# sourceMappingURL=ApplicationList.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationList.cjs","names":["ApplicationList: FC<ApplicationListProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","ApplicationQueryKeys","BaseApplicationList"],"sources":["../../../../../src/components/admin/ApplicationList/ApplicationList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n ApplicationListResponse,\n ApplicationQueryKeys,\n getApplications,\n toManagementErrorMessage,\n} from '@thunderid/browser';\nimport {FC, ReactElement, useState} from 'react';\nimport BaseApplicationList, {BaseApplicationListProps} from './BaseApplicationList';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\nexport type ApplicationListProps = Omit<\n BaseApplicationListProps,\n 'applications' | 'error' | 'isLoading' | 'offset' | 'onPageChange' | 'totalResults'\n>;\n\n/**\n * Lists the applications the signed-in user is allowed to see, a page at a time.\n *\n * The server guards applications with the root `system` permission, for reading and for changes alike;\n * it defines no application-specific permission. Gate the view and its actions on it with\n * `useGrantedPermissions().can('system')`.\n *\n * @example\n * ```tsx\n * <ApplicationList onSelect={(application) => setSelectedApplicationId(application.id)} />\n * ```\n */\nconst ApplicationList: FC<ApplicationListProps> = ({\n limit = 20,\n preferences,\n ...rest\n}: ApplicationListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const [offset, setOffset] = useState<number>(0);\n const endpoint: ManagementEndpoint = useManagementEndpoint('applications');\n const {data, error, isLoading}: ResourceQueryResult<ApplicationListResponse> = useResourceQuery(\n [ApplicationQueryKeys.APPLICATIONS, {limit, offset}],\n (fetcher) => getApplications({...endpoint, fetcher, limit, offset}),\n );\n\n return (\n <BaseApplicationList\n applications={data?.applications ?? []}\n totalResults={data?.totalResults}\n isLoading={isLoading}\n error={toManagementErrorMessage(t, error, 'admin.applications.list.error')}\n limit={limit}\n offset={offset}\n onPageChange={setOffset}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default ApplicationList;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAMA,mBAA6C,EACjD,QAAQ,IACR,YACA,GAAG,WACqC;CACxC,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAC7C,MAAM,CAAC,QAAQ,iCAA8B,EAAE;CAC/C,MAAMC,WAA+BC,sCAAsB,eAAe;CAC1E,MAAM,EAAC,MAAM,OAAO,cAA2DC,iCAC7E,CAACC,yCAAqB,cAAc;EAAC;EAAO;EAAO,CAAC,GACnD,qDAA4B;EAAC,GAAG;EAAU;EAAS;EAAO;EAAO,CAAC,CACpE;AAED,QACE,2CAACC;EACC,cAAc,MAAM,gBAAgB,EAAE;EACtC,cAAc,MAAM;EACT;EACX,yDAAgC,GAAG,OAAO,gCAAgC;EACnE;EACC;EACR,cAAc;EACD;EACb,GAAI;GACJ;;AAIN,8BAAe"}
@@ -0,0 +1,95 @@
1
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
+ const require_useTranslation = require('../../../hooks/useTranslation.cjs');
3
+ const require_DataTable = require('../../primitives/DataTable/DataTable.cjs');
4
+ const require_AdminSection = require('../shared/AdminSection.cjs');
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
7
+
8
+ //#region src/components/admin/ApplicationList/BaseApplicationList.tsx
9
+ /**
10
+ * The translated access status of an application, or its raw value when the status is one this SDK
11
+ * does not know.
12
+ */
13
+ const getStatusLabel = (application, t) => {
14
+ const value = application.status?.value;
15
+ switch (value?.toUpperCase()) {
16
+ case "ACTIVE": return t("admin.applications.status.active");
17
+ case "SUSPENDED": return t("admin.applications.status.suspended");
18
+ default: return value ?? "";
19
+ }
20
+ };
21
+ /**
22
+ * Lists applications with their client identifier, type and, when the server reports it, access status. Holds no data of its own: pass the page
23
+ * of applications and handle selection and pagination.
24
+ */
25
+ const BaseApplicationList = ({ actions, applications, children, className, description, error = null, isLoading = false, limit = 20, offset = 0, onPageChange, onSelect, preferences, selectedApplicationId, title, totalResults }) => {
26
+ const { t } = require_useTranslation.default(preferences?.i18n);
27
+ const columns = [
28
+ {
29
+ header: t("admin.applications.list.columns.name"),
30
+ id: "name",
31
+ render: (application) => application.name
32
+ },
33
+ {
34
+ header: t("admin.applications.list.columns.client_id"),
35
+ id: "clientId",
36
+ render: (application) => application.clientId ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: application.clientId }) : null
37
+ },
38
+ {
39
+ header: t("admin.applications.list.columns.type"),
40
+ id: "type",
41
+ render: (application) => application.type ?? application.template ?? ""
42
+ },
43
+ ...applications.some((application) => application.status?.value) ? [{
44
+ header: t("admin.applications.list.columns.status"),
45
+ id: "status",
46
+ render: (application) => getStatusLabel(application, t)
47
+ }] : []
48
+ ];
49
+ if (children) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
50
+ className,
51
+ children: children({
52
+ applications,
53
+ columns,
54
+ error,
55
+ isLoading,
56
+ limit,
57
+ offset,
58
+ onPageChange,
59
+ onSelect,
60
+ rows: applications,
61
+ selectedRowId: selectedApplicationId,
62
+ totalResults: totalResults ?? applications.length
63
+ })
64
+ });
65
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminSection.default, {
66
+ block: "application-list",
67
+ className,
68
+ title: title ?? t("admin.applications.list.title"),
69
+ description,
70
+ actions,
71
+ preferences,
72
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_DataTable.default, {
73
+ caption: title?.length ? title : t("admin.applications.list.title"),
74
+ columns,
75
+ rows: applications,
76
+ getRowId: (application) => application.id,
77
+ isLoading,
78
+ error,
79
+ emptyText: t("admin.applications.list.empty"),
80
+ onRowClick: onSelect,
81
+ selectedRowId: selectedApplicationId,
82
+ pagination: onPageChange ? {
83
+ limit,
84
+ offset,
85
+ onChange: onPageChange,
86
+ total: totalResults ?? applications.length
87
+ } : void 0
88
+ })
89
+ });
90
+ };
91
+ var BaseApplicationList_default = BaseApplicationList;
92
+
93
+ //#endregion
94
+ exports.default = BaseApplicationList_default;
95
+ //# sourceMappingURL=BaseApplicationList.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseApplicationList.cjs","names":["value: string | undefined","BaseApplicationList: FC<BaseApplicationListProps>","useTranslation","columns: DataTableColumn<BasicApplication>[]","AdminSection","DataTable"],"sources":["../../../../../src/components/admin/ApplicationList/BaseApplicationList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {BasicApplication, Preferences} from '@thunderid/browser';\nimport {FC, ReactElement, ReactNode} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport DataTable, {DataTableColumn} from '../../primitives/DataTable/DataTable';\nimport {AdminListRenderProps} from '../shared/AdminListRenderProps';\nimport AdminSection from '../shared/AdminSection';\n\n/**\n * What {@link BaseApplicationList} hands its `children` render function. `applications` and `rows` are\n * the same array.\n */\nexport type BaseApplicationListRenderProps = AdminListRenderProps<BasicApplication> & {\n applications: BasicApplication[];\n};\n\nexport interface BaseApplicationListProps {\n /**\n * Controls rendered next to the title, such as a button that opens `ApplicationCreate`.\n */\n actions?: ReactNode;\n applications: BasicApplication[];\n /**\n * Renders custom UI in place of the default table, for example a third-party data grid. Receives\n * the applications, the default columns, the loading and error state, and the pagination and\n * selection handlers.\n */\n children?: (props: BaseApplicationListRenderProps) => ReactNode;\n className?: string;\n description?: string;\n error?: string | null;\n isLoading?: boolean;\n /**\n * Page size.\n * @default 20\n */\n limit?: number;\n offset?: number;\n /**\n * Called with the offset of the page to show. Pagination is hidden when omitted.\n */\n onPageChange?: (offset: number) => void;\n /**\n * Called when an application is chosen. Rows are selectable only when set.\n */\n onSelect?: (application: BasicApplication) => void;\n preferences?: Preferences;\n selectedApplicationId?: string;\n /**\n * Heading of the list. Pass an empty string to hide it.\n */\n title?: string;\n totalResults?: number;\n}\n\n/**\n * The translated access status of an application, or its raw value when the status is one this SDK\n * does not know.\n */\nconst getStatusLabel = (application: BasicApplication, t: (key: string) => string): string => {\n const value: string | undefined = application.status?.value;\n\n switch (value?.toUpperCase()) {\n case 'ACTIVE':\n return t('admin.applications.status.active');\n case 'SUSPENDED':\n return t('admin.applications.status.suspended');\n default:\n return value ?? '';\n }\n};\n\n/**\n * Lists applications with their client identifier, type and, when the server reports it, access status. Holds no data of its own: pass the page\n * of applications and handle selection and pagination.\n */\nconst BaseApplicationList: FC<BaseApplicationListProps> = ({\n actions,\n applications,\n children,\n className,\n description,\n error = null,\n isLoading = false,\n limit = 20,\n offset = 0,\n onPageChange,\n onSelect,\n preferences,\n selectedApplicationId,\n title,\n totalResults,\n}: BaseApplicationListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n\n const columns: DataTableColumn<BasicApplication>[] = [\n {\n header: t('admin.applications.list.columns.name'),\n id: 'name',\n render: (application: BasicApplication): ReactNode => application.name,\n },\n {\n header: t('admin.applications.list.columns.client_id'),\n id: 'clientId',\n render: (application: BasicApplication): ReactNode =>\n application.clientId ? <code>{application.clientId}</code> : null,\n },\n {\n header: t('admin.applications.list.columns.type'),\n id: 'type',\n render: (application: BasicApplication): ReactNode => application.type ?? application.template ?? '',\n },\n // A server that does not report the access status gets no empty status column.\n ...(applications.some((application: BasicApplication) => application.status?.value)\n ? [\n {\n header: t('admin.applications.list.columns.status'),\n id: 'status',\n render: (application: BasicApplication): ReactNode => getStatusLabel(application, t),\n },\n ]\n : []),\n ];\n\n if (children) {\n return (\n <div className={className}>\n {children({\n applications,\n columns,\n error,\n isLoading,\n limit,\n offset,\n onPageChange,\n onSelect,\n rows: applications,\n selectedRowId: selectedApplicationId,\n totalResults: totalResults ?? applications.length,\n })}\n </div>\n );\n }\n\n return (\n <AdminSection\n block=\"application-list\"\n className={className}\n title={title ?? t('admin.applications.list.title')}\n description={description}\n actions={actions}\n preferences={preferences}\n >\n <DataTable\n caption={title?.length ? title : t('admin.applications.list.title')}\n columns={columns}\n rows={applications}\n getRowId={(application: BasicApplication): string => application.id}\n isLoading={isLoading}\n error={error}\n emptyText={t('admin.applications.list.empty')}\n onRowClick={onSelect}\n selectedRowId={selectedApplicationId}\n pagination={\n onPageChange ? {limit, offset, onChange: onPageChange, total: totalResults ?? applications.length} : undefined\n }\n />\n </AdminSection>\n );\n};\n\nexport default BaseApplicationList;\n"],"mappings":";;;;;;;;;;;;AA6DA,MAAM,kBAAkB,aAA+B,MAAuC;CAC5F,MAAMA,QAA4B,YAAY,QAAQ;AAEtD,SAAQ,OAAO,aAAa,EAA5B;EACE,KAAK,SACH,QAAO,EAAE,mCAAmC;EAC9C,KAAK,YACH,QAAO,EAAE,sCAAsC;EACjD,QACE,QAAO,SAAS;;;;;;;AAQtB,MAAMC,uBAAqD,EACzD,SACA,cACA,UACA,WACA,aACA,QAAQ,MACR,YAAY,OACZ,QAAQ,IACR,SAAS,GACT,cACA,UACA,aACA,uBACA,OACA,mBAC4C;CAC5C,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAE7C,MAAMC,UAA+C;EACnD;GACE,QAAQ,EAAE,uCAAuC;GACjD,IAAI;GACJ,SAAS,gBAA6C,YAAY;GACnE;EACD;GACE,QAAQ,EAAE,4CAA4C;GACtD,IAAI;GACJ,SAAS,gBACP,YAAY,WAAW,2CAAC,oBAAM,YAAY,WAAgB,GAAG;GAChE;EACD;GACE,QAAQ,EAAE,uCAAuC;GACjD,IAAI;GACJ,SAAS,gBAA6C,YAAY,QAAQ,YAAY,YAAY;GACnG;EAED,GAAI,aAAa,MAAM,gBAAkC,YAAY,QAAQ,MAAM,GAC/E,CACE;GACE,QAAQ,EAAE,yCAAyC;GACnD,IAAI;GACJ,SAAS,gBAA6C,eAAe,aAAa,EAAE;GACrF,CACF,GACD,EAAE;EACP;AAED,KAAI,SACF,QACE,2CAAC;EAAe;YACb,SAAS;GACR;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,MAAM;GACN,eAAe;GACf,cAAc,gBAAgB,aAAa;GAC5C,CAAC;GACE;AAIV,QACE,2CAACC;EACC,OAAM;EACK;EACX,OAAO,SAAS,EAAE,gCAAgC;EACrC;EACJ;EACI;YAEb,2CAACC;GACC,SAAS,OAAO,SAAS,QAAQ,EAAE,gCAAgC;GAC1D;GACT,MAAM;GACN,WAAW,gBAA0C,YAAY;GACtD;GACJ;GACP,WAAW,EAAE,gCAAgC;GAC7C,YAAY;GACZ,eAAe;GACf,YACE,eAAe;IAAC;IAAO;IAAQ,UAAU;IAAc,OAAO,gBAAgB,aAAa;IAAO,GAAG;IAEvG;GACW;;AAInB,kCAAe"}
@@ -1,6 +1,7 @@
1
1
  const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
2
  const require_useTranslation = require('../../../hooks/useTranslation.cjs');
3
- const require_useCreateGroup = require('../../../hooks/management/groups/useCreateGroup.cjs');
3
+ const require_useManagementEndpoint = require('../../../hooks/management/useManagementEndpoint.cjs');
4
+ const require_useResourceMutation = require('../../../hooks/management/useResourceMutation.cjs');
4
5
  const require_useDefaultOuId = require('../shared/useDefaultOuId.cjs');
5
6
  const require_BaseGroupCreate = require('./BaseGroupCreate.cjs');
6
7
  let __thunderid_browser = require("@thunderid/browser");
@@ -20,7 +21,12 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
20
21
  const GroupCreate = ({ onCreated, ouId, preferences,...rest }) => {
21
22
  const { t } = require_useTranslation.default(preferences?.i18n);
22
23
  const resolvedOuId = require_useDefaultOuId.default(ouId);
23
- const { error, isLoading, mutate } = require_useCreateGroup.default({ onSuccess: onCreated });
24
+ const endpoint = require_useManagementEndpoint.default("groups");
25
+ const { error, isLoading, mutate } = require_useResourceMutation.default((payload, fetcher) => (0, __thunderid_browser.createGroup)({
26
+ ...endpoint,
27
+ fetcher,
28
+ payload
29
+ }), () => [[__thunderid_browser.GroupQueryKeys.GROUPS], [__thunderid_browser.GroupQueryKeys.MEMBERSHIPS]], { onSuccess: onCreated });
24
30
  const handleSubmit = ({ description, name }) => {
25
31
  if (resolvedOuId) mutate({
26
32
  description,