@thunderid/nextjs 1.4.0 → 1.5.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 (400) hide show
  1. package/dist/cjs/client/admin.cjs +6 -0
  2. package/dist/cjs/client/components/{presentation → account}/ChangeCredential/ChangeCredential.cjs +2 -2
  3. package/dist/cjs/client/components/account/ChangeCredential/ChangeCredential.cjs.map +1 -0
  4. package/dist/cjs/client/components/{presentation → account}/User/User.cjs +1 -1
  5. package/dist/cjs/client/components/account/User/User.cjs.map +1 -0
  6. package/dist/cjs/client/components/{presentation → account}/UserAvatar/UserAvatar.cjs +1 -1
  7. package/dist/cjs/client/components/account/UserAvatar/UserAvatar.cjs.map +1 -0
  8. package/dist/cjs/client/components/{presentation → account}/UserDropdown/UserDropdown.cjs +1 -1
  9. package/dist/cjs/client/components/account/UserDropdown/UserDropdown.cjs.map +1 -0
  10. package/dist/cjs/client/components/{presentation → account}/UserProfile/UserProfile.cjs +1 -1
  11. package/dist/cjs/client/components/account/UserProfile/UserProfile.cjs.map +1 -0
  12. package/dist/cjs/client/components/admin/AgentCreate/AgentCreate.cjs +28 -0
  13. package/dist/cjs/client/components/admin/AgentCreate/AgentCreate.cjs.map +1 -0
  14. package/dist/cjs/client/components/admin/AgentDetails/AgentDetails.cjs +28 -0
  15. package/dist/cjs/client/components/admin/AgentDetails/AgentDetails.cjs.map +1 -0
  16. package/dist/cjs/client/components/admin/AgentList/AgentList.cjs +28 -0
  17. package/dist/cjs/client/components/admin/AgentList/AgentList.cjs.map +1 -0
  18. package/dist/cjs/client/components/admin/GroupCreate/GroupCreate.cjs +28 -0
  19. package/dist/cjs/client/components/admin/GroupCreate/GroupCreate.cjs.map +1 -0
  20. package/dist/cjs/client/components/admin/GroupList/GroupList.cjs +28 -0
  21. package/dist/cjs/client/components/admin/GroupList/GroupList.cjs.map +1 -0
  22. package/dist/cjs/client/components/admin/GroupMembers/GroupMembers.cjs +28 -0
  23. package/dist/cjs/client/components/admin/GroupMembers/GroupMembers.cjs.map +1 -0
  24. package/dist/cjs/client/components/admin/RoleAssignments/RoleAssignments.cjs +28 -0
  25. package/dist/cjs/client/components/admin/RoleAssignments/RoleAssignments.cjs.map +1 -0
  26. package/dist/cjs/client/components/admin/RoleCreate/RoleCreate.cjs +28 -0
  27. package/dist/cjs/client/components/admin/RoleCreate/RoleCreate.cjs.map +1 -0
  28. package/dist/cjs/client/components/admin/RoleList/RoleList.cjs +28 -0
  29. package/dist/cjs/client/components/admin/RoleList/RoleList.cjs.map +1 -0
  30. package/dist/cjs/client/components/admin/RolePermissions/RolePermissions.cjs +28 -0
  31. package/dist/cjs/client/components/admin/RolePermissions/RolePermissions.cjs.map +1 -0
  32. package/dist/cjs/client/components/admin/UserCreate/UserCreate.cjs +28 -0
  33. package/dist/cjs/client/components/admin/UserCreate/UserCreate.cjs.map +1 -0
  34. package/dist/cjs/client/components/admin/UserDetails/UserDetails.cjs +28 -0
  35. package/dist/cjs/client/components/admin/UserDetails/UserDetails.cjs.map +1 -0
  36. package/dist/cjs/client/components/admin/UserList/UserList.cjs +28 -0
  37. package/dist/cjs/client/components/admin/UserList/UserList.cjs.map +1 -0
  38. package/dist/cjs/client/components/{presentation → auth}/SignIn/SignIn.cjs +1 -1
  39. package/dist/cjs/client/components/auth/SignIn/SignIn.cjs.map +1 -0
  40. package/dist/cjs/client/components/{presentation → auth}/SignUp/SignUp.cjs +1 -1
  41. package/dist/cjs/client/components/auth/SignUp/SignUp.cjs.map +1 -0
  42. package/dist/cjs/client/components/{actions → auth/buttons}/SignInButton/SignInButton.cjs +3 -3
  43. package/dist/cjs/client/components/auth/buttons/SignInButton/SignInButton.cjs.map +1 -0
  44. package/dist/cjs/client/components/{actions → auth/buttons}/SignOutButton/SignOutButton.cjs +4 -4
  45. package/dist/cjs/client/components/auth/buttons/SignOutButton/SignOutButton.cjs.map +1 -0
  46. package/dist/cjs/client/components/{actions → auth/buttons}/SignUpButton/SignUpButton.cjs +3 -3
  47. package/dist/cjs/client/components/auth/buttons/SignUpButton/SignUpButton.cjs.map +1 -0
  48. package/dist/cjs/client/components/{control → auth/guards}/SignedIn/SignedIn.cjs +3 -3
  49. package/dist/cjs/client/components/auth/guards/SignedIn/SignedIn.cjs.map +1 -0
  50. package/dist/cjs/client/components/{control → auth/guards}/SignedOut/SignedOut.cjs +3 -3
  51. package/dist/cjs/client/components/auth/guards/SignedOut/SignedOut.cjs.map +1 -0
  52. package/dist/cjs/client/components/{presentation → primitives}/AuthFlowSelect/AuthFlowSelect.cjs +1 -1
  53. package/dist/cjs/client/components/primitives/AuthFlowSelect/AuthFlowSelect.cjs.map +1 -0
  54. package/dist/cjs/client/components/{presentation → primitives}/UserSelect/UserSelect.cjs +1 -1
  55. package/dist/cjs/client/components/primitives/UserSelect/UserSelect.cjs.map +1 -0
  56. package/dist/cjs/client/components/{presentation → primitives}/UserTypeSelect/UserTypeSelect.cjs +1 -1
  57. package/dist/cjs/client/components/primitives/UserTypeSelect/UserTypeSelect.cjs.map +1 -0
  58. package/dist/cjs/client/contexts/ThunderID/ThunderIDProvider.cjs +5 -1
  59. package/dist/cjs/client/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  60. package/dist/cjs/client/fetchAuthFlowsFromServer.cjs +1 -1
  61. package/dist/cjs/client/fetchAuthFlowsFromServer.cjs.map +1 -1
  62. package/dist/cjs/client/fetchFlowMetaFromServer.cjs +1 -1
  63. package/dist/cjs/client/fetchFlowMetaFromServer.cjs.map +1 -1
  64. package/dist/cjs/client/fetchManagementFromServer.cjs +32 -0
  65. package/dist/cjs/client/fetchManagementFromServer.cjs.map +1 -0
  66. package/dist/cjs/client/fetchUserTypesFromServer.cjs +1 -1
  67. package/dist/cjs/client/fetchUserTypesFromServer.cjs.map +1 -1
  68. package/dist/cjs/client/fetchUsersFromServer.cjs +1 -1
  69. package/dist/cjs/client/fetchUsersFromServer.cjs.map +1 -1
  70. package/dist/cjs/client/hooks/management/useGrantedPermissions.cjs +51 -0
  71. package/dist/cjs/client/hooks/management/useGrantedPermissions.cjs.map +1 -0
  72. package/dist/cjs/client/index.cjs +33 -15
  73. package/dist/cjs/index.cjs +311 -16
  74. package/dist/cjs/server/ThunderIDProvider.cjs +10 -8
  75. package/dist/cjs/server/ThunderIDProvider.cjs.map +1 -1
  76. package/dist/cjs/server/actions/{getUserAction.cjs → account/getUserAction.cjs} +2 -2
  77. package/dist/cjs/server/actions/account/getUserAction.cjs.map +1 -0
  78. package/dist/cjs/server/actions/{getUserProfileAction.cjs → account/getUserProfileAction.cjs} +2 -2
  79. package/dist/cjs/server/actions/account/getUserProfileAction.cjs.map +1 -0
  80. package/dist/cjs/server/actions/{getUserSchemaAction.cjs → account/getUserSchemaAction.cjs} +2 -2
  81. package/dist/cjs/server/actions/account/getUserSchemaAction.cjs.map +1 -0
  82. package/dist/cjs/server/actions/{updateUserCredentialsAction.cjs → account/updateUserCredentialsAction.cjs} +3 -3
  83. package/dist/cjs/server/actions/account/updateUserCredentialsAction.cjs.map +1 -0
  84. package/dist/cjs/server/actions/{updateUserProfileAction.cjs → account/updateUserProfileAction.cjs} +2 -2
  85. package/dist/cjs/server/actions/account/updateUserProfileAction.cjs.map +1 -0
  86. package/dist/cjs/server/actions/{getAuthFlowsAction.cjs → auth/getAuthFlowsAction.cjs} +3 -3
  87. package/dist/cjs/server/actions/auth/getAuthFlowsAction.cjs.map +1 -0
  88. package/dist/cjs/server/actions/{getFlowMetaAction.cjs → auth/getFlowMetaAction.cjs} +4 -4
  89. package/dist/cjs/server/actions/auth/getFlowMetaAction.cjs.map +1 -0
  90. package/dist/cjs/server/actions/{handleOAuthCallbackAction.cjs → auth/handleOAuthCallbackAction.cjs} +6 -6
  91. package/dist/cjs/server/actions/auth/handleOAuthCallbackAction.cjs.map +1 -0
  92. package/dist/cjs/server/actions/{signInAction.cjs → auth/signInAction.cjs} +6 -6
  93. package/dist/cjs/server/actions/auth/signInAction.cjs.map +1 -0
  94. package/dist/cjs/server/actions/{signOutAction.cjs → auth/signOutAction.cjs} +7 -7
  95. package/dist/cjs/server/actions/auth/signOutAction.cjs.map +1 -0
  96. package/dist/cjs/server/actions/{signUpAction.cjs → auth/signUpAction.cjs} +2 -2
  97. package/dist/cjs/server/actions/auth/signUpAction.cjs.map +1 -0
  98. package/dist/cjs/server/actions/management/getGrantedPermissionsAction.cjs +32 -0
  99. package/dist/cjs/server/actions/management/getGrantedPermissionsAction.cjs.map +1 -0
  100. package/dist/cjs/server/actions/{getUserTypesAction.cjs → management/getUserTypesAction.cjs} +3 -3
  101. package/dist/cjs/server/actions/management/getUserTypesAction.cjs.map +1 -0
  102. package/dist/cjs/server/actions/{getUsersAction.cjs → management/getUsersAction.cjs} +3 -3
  103. package/dist/cjs/server/actions/management/getUsersAction.cjs.map +1 -0
  104. package/dist/cjs/server/actions/management/managementRequestAction.cjs +79 -0
  105. package/dist/cjs/server/actions/management/managementRequestAction.cjs.map +1 -0
  106. package/dist/cjs/utils/managementCollections.cjs +22 -0
  107. package/dist/cjs/utils/managementCollections.cjs.map +1 -0
  108. package/dist/client/admin.d.ts +3 -0
  109. package/dist/client/admin.d.ts.map +1 -0
  110. package/dist/client/admin.js +6 -0
  111. package/dist/client/components/account/ChangeCredential/ChangeCredential.d.ts.map +1 -0
  112. package/dist/client/components/{presentation → account}/ChangeCredential/ChangeCredential.js +2 -2
  113. package/dist/client/components/account/ChangeCredential/ChangeCredential.js.map +1 -0
  114. package/dist/client/components/account/User/User.d.ts.map +1 -0
  115. package/dist/client/components/{presentation → account}/User/User.js +1 -1
  116. package/dist/client/components/account/User/User.js.map +1 -0
  117. package/dist/client/components/account/UserAvatar/UserAvatar.d.ts.map +1 -0
  118. package/dist/client/components/{presentation → account}/UserAvatar/UserAvatar.js +1 -1
  119. package/dist/client/components/account/UserAvatar/UserAvatar.js.map +1 -0
  120. package/dist/client/components/account/UserDropdown/UserDropdown.d.ts.map +1 -0
  121. package/dist/client/components/{presentation → account}/UserDropdown/UserDropdown.js +1 -1
  122. package/dist/client/components/account/UserDropdown/UserDropdown.js.map +1 -0
  123. package/dist/client/components/account/UserProfile/UserProfile.d.ts.map +1 -0
  124. package/dist/client/components/{presentation → account}/UserProfile/UserProfile.js +1 -1
  125. package/dist/client/components/account/UserProfile/UserProfile.js.map +1 -0
  126. package/dist/client/components/admin/AgentCreate/AgentCreate.d.ts +17 -0
  127. package/dist/client/components/admin/AgentCreate/AgentCreate.d.ts.map +1 -0
  128. package/dist/client/components/admin/AgentCreate/AgentCreate.js +25 -0
  129. package/dist/client/components/admin/AgentCreate/AgentCreate.js.map +1 -0
  130. package/dist/client/components/admin/AgentDetails/AgentDetails.d.ts +17 -0
  131. package/dist/client/components/admin/AgentDetails/AgentDetails.d.ts.map +1 -0
  132. package/dist/client/components/admin/AgentDetails/AgentDetails.js +25 -0
  133. package/dist/client/components/admin/AgentDetails/AgentDetails.js.map +1 -0
  134. package/dist/client/components/admin/AgentList/AgentList.d.ts +17 -0
  135. package/dist/client/components/admin/AgentList/AgentList.d.ts.map +1 -0
  136. package/dist/client/components/admin/AgentList/AgentList.js +25 -0
  137. package/dist/client/components/admin/AgentList/AgentList.js.map +1 -0
  138. package/dist/client/components/admin/GroupCreate/GroupCreate.d.ts +17 -0
  139. package/dist/client/components/admin/GroupCreate/GroupCreate.d.ts.map +1 -0
  140. package/dist/client/components/admin/GroupCreate/GroupCreate.js +25 -0
  141. package/dist/client/components/admin/GroupCreate/GroupCreate.js.map +1 -0
  142. package/dist/client/components/admin/GroupList/GroupList.d.ts +17 -0
  143. package/dist/client/components/admin/GroupList/GroupList.d.ts.map +1 -0
  144. package/dist/client/components/admin/GroupList/GroupList.js +25 -0
  145. package/dist/client/components/admin/GroupList/GroupList.js.map +1 -0
  146. package/dist/client/components/admin/GroupMembers/GroupMembers.d.ts +17 -0
  147. package/dist/client/components/admin/GroupMembers/GroupMembers.d.ts.map +1 -0
  148. package/dist/client/components/admin/GroupMembers/GroupMembers.js +25 -0
  149. package/dist/client/components/admin/GroupMembers/GroupMembers.js.map +1 -0
  150. package/dist/client/components/admin/RoleAssignments/RoleAssignments.d.ts +17 -0
  151. package/dist/client/components/admin/RoleAssignments/RoleAssignments.d.ts.map +1 -0
  152. package/dist/client/components/admin/RoleAssignments/RoleAssignments.js +25 -0
  153. package/dist/client/components/admin/RoleAssignments/RoleAssignments.js.map +1 -0
  154. package/dist/client/components/admin/RoleCreate/RoleCreate.d.ts +17 -0
  155. package/dist/client/components/admin/RoleCreate/RoleCreate.d.ts.map +1 -0
  156. package/dist/client/components/admin/RoleCreate/RoleCreate.js +25 -0
  157. package/dist/client/components/admin/RoleCreate/RoleCreate.js.map +1 -0
  158. package/dist/client/components/admin/RoleList/RoleList.d.ts +17 -0
  159. package/dist/client/components/admin/RoleList/RoleList.d.ts.map +1 -0
  160. package/dist/client/components/admin/RoleList/RoleList.js +25 -0
  161. package/dist/client/components/admin/RoleList/RoleList.js.map +1 -0
  162. package/dist/client/components/admin/RolePermissions/RolePermissions.d.ts +17 -0
  163. package/dist/client/components/admin/RolePermissions/RolePermissions.d.ts.map +1 -0
  164. package/dist/client/components/admin/RolePermissions/RolePermissions.js +25 -0
  165. package/dist/client/components/admin/RolePermissions/RolePermissions.js.map +1 -0
  166. package/dist/client/components/admin/UserCreate/UserCreate.d.ts +17 -0
  167. package/dist/client/components/admin/UserCreate/UserCreate.d.ts.map +1 -0
  168. package/dist/client/components/admin/UserCreate/UserCreate.js +25 -0
  169. package/dist/client/components/admin/UserCreate/UserCreate.js.map +1 -0
  170. package/dist/client/components/admin/UserDetails/UserDetails.d.ts +17 -0
  171. package/dist/client/components/admin/UserDetails/UserDetails.d.ts.map +1 -0
  172. package/dist/client/components/admin/UserDetails/UserDetails.js +25 -0
  173. package/dist/client/components/admin/UserDetails/UserDetails.js.map +1 -0
  174. package/dist/client/components/admin/UserList/UserList.d.ts +17 -0
  175. package/dist/client/components/admin/UserList/UserList.d.ts.map +1 -0
  176. package/dist/client/components/admin/UserList/UserList.js +25 -0
  177. package/dist/client/components/admin/UserList/UserList.js.map +1 -0
  178. package/dist/client/components/auth/SignIn/SignIn.d.ts.map +1 -0
  179. package/dist/client/components/{presentation → auth}/SignIn/SignIn.js +1 -1
  180. package/dist/client/components/auth/SignIn/SignIn.js.map +1 -0
  181. package/dist/client/components/auth/SignUp/SignUp.d.ts.map +1 -0
  182. package/dist/client/components/{presentation → auth}/SignUp/SignUp.js +1 -1
  183. package/dist/client/components/auth/SignUp/SignUp.js.map +1 -0
  184. package/dist/client/components/auth/buttons/SignInButton/SignInButton.d.ts.map +1 -0
  185. package/dist/client/components/{actions → auth/buttons}/SignInButton/SignInButton.js +2 -2
  186. package/dist/client/components/auth/buttons/SignInButton/SignInButton.js.map +1 -0
  187. package/dist/client/components/auth/buttons/SignOutButton/SignOutButton.d.ts.map +1 -0
  188. package/dist/client/components/{actions → auth/buttons}/SignOutButton/SignOutButton.js +3 -3
  189. package/dist/client/components/auth/buttons/SignOutButton/SignOutButton.js.map +1 -0
  190. package/dist/client/components/auth/buttons/SignUpButton/SignUpButton.d.ts.map +1 -0
  191. package/dist/client/components/{actions → auth/buttons}/SignUpButton/SignUpButton.js +2 -2
  192. package/dist/client/components/auth/buttons/SignUpButton/SignUpButton.js.map +1 -0
  193. package/dist/client/components/auth/guards/Loading/Loading.d.ts.map +1 -0
  194. package/dist/client/components/auth/guards/SignedIn/SignedIn.d.ts.map +1 -0
  195. package/dist/client/components/{control → auth/guards}/SignedIn/SignedIn.js +2 -2
  196. package/dist/client/components/auth/guards/SignedIn/SignedIn.js.map +1 -0
  197. package/dist/client/components/auth/guards/SignedOut/SignedOut.d.ts.map +1 -0
  198. package/dist/client/components/{control → auth/guards}/SignedOut/SignedOut.js +2 -2
  199. package/dist/client/components/auth/guards/SignedOut/SignedOut.js.map +1 -0
  200. package/dist/client/components/primitives/AuthFlowSelect/AuthFlowSelect.d.ts.map +1 -0
  201. package/dist/client/components/{presentation → primitives}/AuthFlowSelect/AuthFlowSelect.js +1 -1
  202. package/dist/client/components/primitives/AuthFlowSelect/AuthFlowSelect.js.map +1 -0
  203. package/dist/client/components/primitives/UserSelect/UserSelect.d.ts.map +1 -0
  204. package/dist/client/components/{presentation → primitives}/UserSelect/UserSelect.js +1 -1
  205. package/dist/client/components/primitives/UserSelect/UserSelect.js.map +1 -0
  206. package/dist/client/components/primitives/UserTypeSelect/UserTypeSelect.d.ts.map +1 -0
  207. package/dist/client/components/{presentation → primitives}/UserTypeSelect/UserTypeSelect.js +1 -1
  208. package/dist/client/components/primitives/UserTypeSelect/UserTypeSelect.js.map +1 -0
  209. package/dist/client/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  210. package/dist/client/contexts/ThunderID/ThunderIDProvider.js +5 -1
  211. package/dist/client/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  212. package/dist/client/fetchAuthFlowsFromServer.js +1 -1
  213. package/dist/client/fetchAuthFlowsFromServer.js.map +1 -1
  214. package/dist/client/fetchFlowMetaFromServer.js +1 -1
  215. package/dist/client/fetchFlowMetaFromServer.js.map +1 -1
  216. package/dist/client/fetchManagementFromServer.d.ts +14 -0
  217. package/dist/client/fetchManagementFromServer.d.ts.map +1 -0
  218. package/dist/client/fetchManagementFromServer.js +32 -0
  219. package/dist/client/fetchManagementFromServer.js.map +1 -0
  220. package/dist/client/fetchUserTypesFromServer.js +1 -1
  221. package/dist/client/fetchUserTypesFromServer.js.map +1 -1
  222. package/dist/client/fetchUsersFromServer.js +1 -1
  223. package/dist/client/fetchUsersFromServer.js.map +1 -1
  224. package/dist/client/hooks/management/useGrantedPermissions.d.ts +17 -0
  225. package/dist/client/hooks/management/useGrantedPermissions.d.ts.map +1 -0
  226. package/dist/client/hooks/management/useGrantedPermissions.js +48 -0
  227. package/dist/client/hooks/management/useGrantedPermissions.js.map +1 -0
  228. package/dist/client/index.d.ts +58 -30
  229. package/dist/client/index.d.ts.map +1 -1
  230. package/dist/client/index.js +30 -15
  231. package/dist/index.js +31 -16
  232. package/dist/server/ThunderIDProvider.d.ts.map +1 -1
  233. package/dist/server/ThunderIDProvider.js +10 -8
  234. package/dist/server/ThunderIDProvider.js.map +1 -1
  235. package/dist/server/actions/account/getUserAction.d.ts.map +1 -0
  236. package/dist/server/actions/{getUserAction.js → account/getUserAction.js} +2 -2
  237. package/dist/server/actions/account/getUserAction.js.map +1 -0
  238. package/dist/server/actions/account/getUserProfileAction.d.ts.map +1 -0
  239. package/dist/server/actions/{getUserProfileAction.js → account/getUserProfileAction.js} +2 -2
  240. package/dist/server/actions/account/getUserProfileAction.js.map +1 -0
  241. package/dist/server/actions/account/getUserSchemaAction.d.ts.map +1 -0
  242. package/dist/server/actions/{getUserSchemaAction.js → account/getUserSchemaAction.js} +2 -2
  243. package/dist/server/actions/account/getUserSchemaAction.js.map +1 -0
  244. package/dist/server/actions/account/updateUserCredentialsAction.d.ts.map +1 -0
  245. package/dist/server/actions/{updateUserCredentialsAction.js → account/updateUserCredentialsAction.js} +2 -2
  246. package/dist/server/actions/account/updateUserCredentialsAction.js.map +1 -0
  247. package/dist/server/actions/account/updateUserProfileAction.d.ts.map +1 -0
  248. package/dist/server/actions/{updateUserProfileAction.js → account/updateUserProfileAction.js} +2 -2
  249. package/dist/server/actions/account/updateUserProfileAction.js.map +1 -0
  250. package/dist/server/actions/{getAuthFlowsAction.d.ts → auth/getAuthFlowsAction.d.ts} +1 -1
  251. package/dist/server/actions/auth/getAuthFlowsAction.d.ts.map +1 -0
  252. package/dist/server/actions/{getAuthFlowsAction.js → auth/getAuthFlowsAction.js} +2 -2
  253. package/dist/server/actions/auth/getAuthFlowsAction.js.map +1 -0
  254. package/dist/server/actions/auth/getFlowMetaAction.d.ts.map +1 -0
  255. package/dist/server/actions/{getFlowMetaAction.js → auth/getFlowMetaAction.js} +3 -3
  256. package/dist/server/actions/auth/getFlowMetaAction.js.map +1 -0
  257. package/dist/server/actions/auth/handleOAuthCallbackAction.d.ts.map +1 -0
  258. package/dist/server/actions/{handleOAuthCallbackAction.js → auth/handleOAuthCallbackAction.js} +5 -5
  259. package/dist/server/actions/auth/handleOAuthCallbackAction.js.map +1 -0
  260. package/dist/server/actions/auth/signInAction.d.ts.map +1 -0
  261. package/dist/server/actions/{signInAction.js → auth/signInAction.js} +5 -5
  262. package/dist/server/actions/auth/signInAction.js.map +1 -0
  263. package/dist/server/actions/auth/signOutAction.d.ts.map +1 -0
  264. package/dist/server/actions/{signOutAction.js → auth/signOutAction.js} +6 -6
  265. package/dist/server/actions/auth/signOutAction.js.map +1 -0
  266. package/dist/server/actions/auth/signUpAction.d.ts.map +1 -0
  267. package/dist/server/actions/{signUpAction.js → auth/signUpAction.js} +2 -2
  268. package/dist/server/actions/auth/signUpAction.js.map +1 -0
  269. package/dist/server/actions/management/getGrantedPermissionsAction.d.ts +11 -0
  270. package/dist/server/actions/management/getGrantedPermissionsAction.d.ts.map +1 -0
  271. package/dist/server/actions/management/getGrantedPermissionsAction.js +30 -0
  272. package/dist/server/actions/management/getGrantedPermissionsAction.js.map +1 -0
  273. package/dist/server/actions/{getUserTypesAction.d.ts → management/getUserTypesAction.d.ts} +1 -1
  274. package/dist/server/actions/management/getUserTypesAction.d.ts.map +1 -0
  275. package/dist/server/actions/{getUserTypesAction.js → management/getUserTypesAction.js} +2 -2
  276. package/dist/server/actions/management/getUserTypesAction.js.map +1 -0
  277. package/dist/server/actions/{getUsersAction.d.ts → management/getUsersAction.d.ts} +1 -1
  278. package/dist/server/actions/management/getUsersAction.d.ts.map +1 -0
  279. package/dist/server/actions/{getUsersAction.js → management/getUsersAction.js} +2 -2
  280. package/dist/server/actions/management/getUsersAction.js.map +1 -0
  281. package/dist/server/actions/management/managementRequestAction.d.ts +36 -0
  282. package/dist/server/actions/management/managementRequestAction.d.ts.map +1 -0
  283. package/dist/server/actions/management/managementRequestAction.js +77 -0
  284. package/dist/server/actions/management/managementRequestAction.js.map +1 -0
  285. package/dist/utils/managementCollections.d.ts +8 -0
  286. package/dist/utils/managementCollections.d.ts.map +1 -0
  287. package/dist/utils/managementCollections.js +20 -0
  288. package/dist/utils/managementCollections.js.map +1 -0
  289. package/package.json +3 -3
  290. package/dist/cjs/client/components/actions/SignInButton/SignInButton.cjs.map +0 -1
  291. package/dist/cjs/client/components/actions/SignOutButton/SignOutButton.cjs.map +0 -1
  292. package/dist/cjs/client/components/actions/SignUpButton/SignUpButton.cjs.map +0 -1
  293. package/dist/cjs/client/components/control/SignedIn/SignedIn.cjs.map +0 -1
  294. package/dist/cjs/client/components/control/SignedOut/SignedOut.cjs.map +0 -1
  295. package/dist/cjs/client/components/presentation/AuthFlowSelect/AuthFlowSelect.cjs.map +0 -1
  296. package/dist/cjs/client/components/presentation/ChangeCredential/ChangeCredential.cjs.map +0 -1
  297. package/dist/cjs/client/components/presentation/SignIn/SignIn.cjs.map +0 -1
  298. package/dist/cjs/client/components/presentation/SignUp/SignUp.cjs.map +0 -1
  299. package/dist/cjs/client/components/presentation/User/User.cjs.map +0 -1
  300. package/dist/cjs/client/components/presentation/UserAvatar/UserAvatar.cjs.map +0 -1
  301. package/dist/cjs/client/components/presentation/UserDropdown/UserDropdown.cjs.map +0 -1
  302. package/dist/cjs/client/components/presentation/UserProfile/UserProfile.cjs.map +0 -1
  303. package/dist/cjs/client/components/presentation/UserSelect/UserSelect.cjs.map +0 -1
  304. package/dist/cjs/client/components/presentation/UserTypeSelect/UserTypeSelect.cjs.map +0 -1
  305. package/dist/cjs/server/actions/getAuthFlowsAction.cjs.map +0 -1
  306. package/dist/cjs/server/actions/getFlowMetaAction.cjs.map +0 -1
  307. package/dist/cjs/server/actions/getUserAction.cjs.map +0 -1
  308. package/dist/cjs/server/actions/getUserProfileAction.cjs.map +0 -1
  309. package/dist/cjs/server/actions/getUserSchemaAction.cjs.map +0 -1
  310. package/dist/cjs/server/actions/getUserTypesAction.cjs.map +0 -1
  311. package/dist/cjs/server/actions/getUsersAction.cjs.map +0 -1
  312. package/dist/cjs/server/actions/handleOAuthCallbackAction.cjs.map +0 -1
  313. package/dist/cjs/server/actions/signInAction.cjs.map +0 -1
  314. package/dist/cjs/server/actions/signOutAction.cjs.map +0 -1
  315. package/dist/cjs/server/actions/signUpAction.cjs.map +0 -1
  316. package/dist/cjs/server/actions/updateUserCredentialsAction.cjs.map +0 -1
  317. package/dist/cjs/server/actions/updateUserProfileAction.cjs.map +0 -1
  318. package/dist/client/components/actions/SignInButton/SignInButton.d.ts.map +0 -1
  319. package/dist/client/components/actions/SignInButton/SignInButton.js.map +0 -1
  320. package/dist/client/components/actions/SignOutButton/SignOutButton.d.ts.map +0 -1
  321. package/dist/client/components/actions/SignOutButton/SignOutButton.js.map +0 -1
  322. package/dist/client/components/actions/SignUpButton/SignUpButton.d.ts.map +0 -1
  323. package/dist/client/components/actions/SignUpButton/SignUpButton.js.map +0 -1
  324. package/dist/client/components/control/Loading/Loading.d.ts.map +0 -1
  325. package/dist/client/components/control/SignedIn/SignedIn.d.ts.map +0 -1
  326. package/dist/client/components/control/SignedIn/SignedIn.js.map +0 -1
  327. package/dist/client/components/control/SignedOut/SignedOut.d.ts.map +0 -1
  328. package/dist/client/components/control/SignedOut/SignedOut.js.map +0 -1
  329. package/dist/client/components/presentation/AuthFlowSelect/AuthFlowSelect.d.ts.map +0 -1
  330. package/dist/client/components/presentation/AuthFlowSelect/AuthFlowSelect.js.map +0 -1
  331. package/dist/client/components/presentation/ChangeCredential/ChangeCredential.d.ts.map +0 -1
  332. package/dist/client/components/presentation/ChangeCredential/ChangeCredential.js.map +0 -1
  333. package/dist/client/components/presentation/SignIn/SignIn.d.ts.map +0 -1
  334. package/dist/client/components/presentation/SignIn/SignIn.js.map +0 -1
  335. package/dist/client/components/presentation/SignUp/SignUp.d.ts.map +0 -1
  336. package/dist/client/components/presentation/SignUp/SignUp.js.map +0 -1
  337. package/dist/client/components/presentation/User/User.d.ts.map +0 -1
  338. package/dist/client/components/presentation/User/User.js.map +0 -1
  339. package/dist/client/components/presentation/UserAvatar/UserAvatar.d.ts.map +0 -1
  340. package/dist/client/components/presentation/UserAvatar/UserAvatar.js.map +0 -1
  341. package/dist/client/components/presentation/UserDropdown/UserDropdown.d.ts.map +0 -1
  342. package/dist/client/components/presentation/UserDropdown/UserDropdown.js.map +0 -1
  343. package/dist/client/components/presentation/UserProfile/UserProfile.d.ts.map +0 -1
  344. package/dist/client/components/presentation/UserProfile/UserProfile.js.map +0 -1
  345. package/dist/client/components/presentation/UserSelect/UserSelect.d.ts.map +0 -1
  346. package/dist/client/components/presentation/UserSelect/UserSelect.js.map +0 -1
  347. package/dist/client/components/presentation/UserTypeSelect/UserTypeSelect.d.ts.map +0 -1
  348. package/dist/client/components/presentation/UserTypeSelect/UserTypeSelect.js.map +0 -1
  349. package/dist/server/actions/getAuthFlowsAction.d.ts.map +0 -1
  350. package/dist/server/actions/getAuthFlowsAction.js.map +0 -1
  351. package/dist/server/actions/getFlowMetaAction.d.ts.map +0 -1
  352. package/dist/server/actions/getFlowMetaAction.js.map +0 -1
  353. package/dist/server/actions/getUserAction.d.ts.map +0 -1
  354. package/dist/server/actions/getUserAction.js.map +0 -1
  355. package/dist/server/actions/getUserProfileAction.d.ts.map +0 -1
  356. package/dist/server/actions/getUserProfileAction.js.map +0 -1
  357. package/dist/server/actions/getUserSchemaAction.d.ts.map +0 -1
  358. package/dist/server/actions/getUserSchemaAction.js.map +0 -1
  359. package/dist/server/actions/getUserTypesAction.d.ts.map +0 -1
  360. package/dist/server/actions/getUserTypesAction.js.map +0 -1
  361. package/dist/server/actions/getUsersAction.d.ts.map +0 -1
  362. package/dist/server/actions/getUsersAction.js.map +0 -1
  363. package/dist/server/actions/handleOAuthCallbackAction.d.ts.map +0 -1
  364. package/dist/server/actions/handleOAuthCallbackAction.js.map +0 -1
  365. package/dist/server/actions/signInAction.d.ts.map +0 -1
  366. package/dist/server/actions/signInAction.js.map +0 -1
  367. package/dist/server/actions/signOutAction.d.ts.map +0 -1
  368. package/dist/server/actions/signOutAction.js.map +0 -1
  369. package/dist/server/actions/signUpAction.d.ts.map +0 -1
  370. package/dist/server/actions/signUpAction.js.map +0 -1
  371. package/dist/server/actions/updateUserCredentialsAction.d.ts.map +0 -1
  372. package/dist/server/actions/updateUserCredentialsAction.js.map +0 -1
  373. package/dist/server/actions/updateUserProfileAction.d.ts.map +0 -1
  374. package/dist/server/actions/updateUserProfileAction.js.map +0 -1
  375. /package/dist/client/components/{presentation → account}/ChangeCredential/ChangeCredential.d.ts +0 -0
  376. /package/dist/client/components/{presentation → account}/User/User.d.ts +0 -0
  377. /package/dist/client/components/{presentation → account}/UserAvatar/UserAvatar.d.ts +0 -0
  378. /package/dist/client/components/{presentation → account}/UserDropdown/UserDropdown.d.ts +0 -0
  379. /package/dist/client/components/{presentation → account}/UserProfile/UserProfile.d.ts +0 -0
  380. /package/dist/client/components/{presentation → auth}/SignIn/SignIn.d.ts +0 -0
  381. /package/dist/client/components/{presentation → auth}/SignUp/SignUp.d.ts +0 -0
  382. /package/dist/client/components/{actions → auth/buttons}/SignInButton/SignInButton.d.ts +0 -0
  383. /package/dist/client/components/{actions → auth/buttons}/SignOutButton/SignOutButton.d.ts +0 -0
  384. /package/dist/client/components/{actions → auth/buttons}/SignUpButton/SignUpButton.d.ts +0 -0
  385. /package/dist/client/components/{control → auth/guards}/Loading/Loading.d.ts +0 -0
  386. /package/dist/client/components/{control → auth/guards}/SignedIn/SignedIn.d.ts +0 -0
  387. /package/dist/client/components/{control → auth/guards}/SignedOut/SignedOut.d.ts +0 -0
  388. /package/dist/client/components/{presentation → primitives}/AuthFlowSelect/AuthFlowSelect.d.ts +0 -0
  389. /package/dist/client/components/{presentation → primitives}/UserSelect/UserSelect.d.ts +0 -0
  390. /package/dist/client/components/{presentation → primitives}/UserTypeSelect/UserTypeSelect.d.ts +0 -0
  391. /package/dist/server/actions/{getUserAction.d.ts → account/getUserAction.d.ts} +0 -0
  392. /package/dist/server/actions/{getUserProfileAction.d.ts → account/getUserProfileAction.d.ts} +0 -0
  393. /package/dist/server/actions/{getUserSchemaAction.d.ts → account/getUserSchemaAction.d.ts} +0 -0
  394. /package/dist/server/actions/{updateUserCredentialsAction.d.ts → account/updateUserCredentialsAction.d.ts} +0 -0
  395. /package/dist/server/actions/{updateUserProfileAction.d.ts → account/updateUserProfileAction.d.ts} +0 -0
  396. /package/dist/server/actions/{getFlowMetaAction.d.ts → auth/getFlowMetaAction.d.ts} +0 -0
  397. /package/dist/server/actions/{handleOAuthCallbackAction.d.ts → auth/handleOAuthCallbackAction.d.ts} +0 -0
  398. /package/dist/server/actions/{signInAction.d.ts → auth/signInAction.d.ts} +0 -0
  399. /package/dist/server/actions/{signOutAction.d.ts → auth/signOutAction.d.ts} +0 -0
  400. /package/dist/server/actions/{signUpAction.d.ts → auth/signUpAction.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserDetails.js","names":["UserDetails: FC<UserDetailsProps>","ReactUserDetails","UserDetails"],"sources":["../../../../../src/client/components/admin/UserDetails/UserDetails.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {UserDetails as ReactUserDetails, UserDetailsProps as ReactUserDetailsProps} from '@thunderid/react';\nimport {FC, ReactElement} from 'react';\n\nexport type UserDetailsProps = ReactUserDetailsProps;\n\n/**\n * Shows a user's attributes and groups, and optionally edits or deletes the user.\n *\n * Management requests go through a server action with the signed-in user's server-held session, so\n * the access token never reaches the browser. Whether a request succeeds is the server's decision.\n *\n * @example\n * ```tsx\n * <UserDetails userId={id} editable deletable onDeleted={() => router.push('/admin/users')} />\n * ```\n */\nconst UserDetails: FC<UserDetailsProps> = (props: UserDetailsProps): ReactElement => <ReactUserDetails {...props} />;\n\nUserDetails.displayName = 'UserDetails';\n\nexport default UserDetails;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,MAAMA,iBAAqC,UAA0C,oBAACC,eAAiB,GAAI,QAAS;AAEpH,cAAY,cAAc;AAE1B,0BAAeC"}
@@ -0,0 +1,17 @@
1
+ import { UserListProps as ReactUserListProps } from '@thunderid/react';
2
+ import { FC } from 'react';
3
+ export type UserListProps = ReactUserListProps;
4
+ /**
5
+ * Lists the users the signed-in user is allowed to see, a page at a time.
6
+ *
7
+ * Management requests go through a server action with the signed-in user's server-held session, so
8
+ * the access token never reaches the browser. Whether a request succeeds is the server's decision.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <UserList onSelect={(user) => router.push(`/admin/users/${user.id}`)} />
13
+ * ```
14
+ */
15
+ declare const UserList: FC<UserListProps>;
16
+ export default UserList;
17
+ //# sourceMappingURL=UserList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserList.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/admin/UserList/UserList.tsx"],"names":[],"mappings":"AAKA,OAAO,EAA4B,aAAa,IAAI,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAC,EAAE,EAAe,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAwE,CAAC;AAIzG,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+
3
+
4
+ import { UserList } from "@thunderid/react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/client/components/admin/UserList/UserList.tsx
8
+ /**
9
+ * Lists the users the signed-in user is allowed to see, a page at a time.
10
+ *
11
+ * Management requests go through a server action with the signed-in user's server-held session, so
12
+ * the access token never reaches the browser. Whether a request succeeds is the server's decision.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <UserList onSelect={(user) => router.push(`/admin/users/${user.id}`)} />
17
+ * ```
18
+ */
19
+ const UserList$1 = (props) => /* @__PURE__ */ jsx(UserList, { ...props });
20
+ UserList$1.displayName = "UserList";
21
+ var UserList_default = UserList$1;
22
+
23
+ //#endregion
24
+ export { UserList_default as default };
25
+ //# sourceMappingURL=UserList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserList.js","names":["UserList: FC<UserListProps>","ReactUserList","UserList"],"sources":["../../../../../src/client/components/admin/UserList/UserList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {UserList as ReactUserList, UserListProps as ReactUserListProps} from '@thunderid/react';\nimport {FC, ReactElement} from 'react';\n\nexport type UserListProps = ReactUserListProps;\n\n/**\n * Lists the users the signed-in user is allowed to see, a page at a time.\n *\n * Management requests go through a server action with the signed-in user's server-held session, so\n * the access token never reaches the browser. Whether a request succeeds is the server's decision.\n *\n * @example\n * ```tsx\n * <UserList onSelect={(user) => router.push(`/admin/users/${user.id}`)} />\n * ```\n */\nconst UserList: FC<UserListProps> = (props: UserListProps): ReactElement => <ReactUserList {...props} />;\n\nUserList.displayName = 'UserList';\n\nexport default UserList;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,MAAMA,cAA+B,UAAuC,oBAACC,YAAc,GAAI,QAAS;AAExG,WAAS,cAAc;AAEvB,uBAAeC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignIn.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/auth/SignIn/SignIn.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAa,eAAe,EAAwC,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAC,EAAE,EAA8B,MAAM,OAAO,CAAC;AAGtD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,eAAe,EACf,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAC/E,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAmG3B,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -7,7 +7,7 @@ import { BaseSignIn, normalizeFlowResponse, useTranslation } from "@thunderid/re
7
7
  import { useEffect, useRef, useState } from "react";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
 
10
- //#region src/client/components/presentation/SignIn/SignIn.tsx
10
+ //#region src/client/components/auth/SignIn/SignIn.tsx
11
11
  /**
12
12
  * A SignIn component for Next.js that provides native authentication flow.
13
13
  * This component delegates to the BaseSignIn from @thunderid/react. Unlike BaseSignUp,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignIn.js","names":["SignIn: FC<SignInProps>","useThunderID","normalizedError: Error","response: any"],"sources":["../../../../../src/client/components/auth/SignIn/SignIn.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {EmbeddedFlowComponent, EmbeddedFlowType, ThunderIDRuntimeError} from '@thunderid/node';\nimport {BaseSignIn, BaseSignInProps, normalizeFlowResponse, useTranslation} from '@thunderid/react';\nimport {FC, useEffect, useRef, useState} from 'react';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the SignIn component.\n * Extends BaseSignInProps for full compatibility with the React BaseSignIn component\n */\nexport type SignInProps = Pick<\n BaseSignInProps,\n 'children' | 'className' | 'id' | 'onSuccess' | 'onError' | 'variant' | 'size'\n>;\n\n/**\n * A SignIn component for Next.js that provides native authentication flow.\n * This component delegates to the BaseSignIn from @thunderid/react. Unlike BaseSignUp,\n * BaseSignIn does not manage its own flow state, so this component initiates the flow\n * (using the server-action-backed `signIn`) and tracks `components`/`executionId` itself.\n */\nconst SignIn: FC<SignInProps> = ({size = 'medium', variant = 'outlined', onError, ...rest}: SignInProps) => {\n const {signIn, applicationId, scopes} = useThunderID();\n const {t} = useTranslation();\n\n const [components, setComponents] = useState<EmbeddedFlowComponent[]>([]);\n const [additionalData, setAdditionalData] = useState<Record<string, any>>({});\n const [executionId, setExecutionId] = useState<string | undefined>(undefined);\n const [isFlowInitialized, setIsFlowInitialized] = useState(false);\n const [flowError, setFlowError] = useState<Error | null>(null);\n const initializationAttemptedRef = useRef(false);\n // A fresh challenge token is required on every step to prevent replay attacks; the server\n // rotates it on each response, so it's tracked in a ref (not state) to avoid a stale value\n // from a closure captured before the previous response's state update committed.\n const challengeTokenRef = useRef<string | undefined>(undefined);\n\n const applyFlowResponse = (response: any): void => {\n const normalized = normalizeFlowResponse(response, t, {resolveTranslations: false});\n\n challengeTokenRef.current = response?.challengeToken ?? undefined;\n setExecutionId(normalized.executionId ?? undefined);\n setComponents(normalized.components);\n setAdditionalData(normalized.additionalData);\n };\n\n const handleFlowError = (error: unknown): void => {\n const normalizedError: Error = error instanceof Error ? error : new Error(String(error));\n\n setFlowError(normalizedError);\n onError?.(normalizedError);\n };\n\n useEffect(() => {\n if (initializationAttemptedRef.current || !signIn) {\n return;\n }\n\n initializationAttemptedRef.current = true;\n\n (async (): Promise<void> => {\n try {\n const response: any = await signIn(\n {\n applicationId,\n flowType: EmbeddedFlowType.Authentication,\n ...(scopes && {scopes}),\n },\n {},\n );\n\n // `response` is undefined when the provider already redirected\n // (OAuth-redirect or completed flows are handled there directly).\n if (response) {\n applyFlowResponse(response);\n }\n } catch (error) {\n handleFlowError(error);\n } finally {\n setIsFlowInitialized(true);\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [signIn]);\n\n const handleOnSubmit = async (payload: any): Promise<void> => {\n if (!signIn) {\n throw new ThunderIDRuntimeError(\n '`signIn` function is not available.',\n 'SignIn-handleOnSubmit-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const response: any = await signIn(\n {\n ...payload,\n executionId,\n ...(challengeTokenRef.current ? {challengeToken: challengeTokenRef.current} : {}),\n },\n {},\n );\n\n if (response) {\n applyFlowResponse(response);\n }\n };\n\n return (\n <BaseSignIn\n additionalData={additionalData}\n components={components}\n error={flowError}\n isLoading={!isFlowInitialized}\n onError={onError}\n onSubmit={handleOnSubmit}\n size={size}\n variant={variant}\n {...rest}\n />\n );\n};\n\nSignIn.displayName = 'SignIn';\n\nexport default SignIn;\n"],"mappings":";;;;;;;;;;;;;;;;AAyBA,MAAMA,UAA2B,EAAC,OAAO,UAAU,UAAU,YAAY,QAAS,GAAG,WAAuB;CAC1G,MAAM,EAAC,QAAQ,eAAe,WAAUC,sBAAc;CACtD,MAAM,EAAC,MAAK,gBAAgB;CAE5B,MAAM,CAAC,YAAY,iBAAiB,SAAkC,EAAE,CAAC;CACzE,MAAM,CAAC,gBAAgB,qBAAqB,SAA8B,EAAE,CAAC;CAC7E,MAAM,CAAC,aAAa,kBAAkB,SAA6B,OAAU;CAC7E,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,MAAM;CACjE,MAAM,CAAC,WAAW,gBAAgB,SAAuB,KAAK;CAC9D,MAAM,6BAA6B,OAAO,MAAM;CAIhD,MAAM,oBAAoB,OAA2B,OAAU;CAE/D,MAAM,qBAAqB,aAAwB;EACjD,MAAM,aAAa,sBAAsB,UAAU,GAAG,EAAC,qBAAqB,OAAM,CAAC;AAEnF,oBAAkB,UAAU,UAAU,kBAAkB;AACxD,iBAAe,WAAW,eAAe,OAAU;AACnD,gBAAc,WAAW,WAAW;AACpC,oBAAkB,WAAW,eAAe;;CAG9C,MAAM,mBAAmB,UAAyB;EAChD,MAAMC,kBAAyB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;AAExF,eAAa,gBAAgB;AAC7B,YAAU,gBAAgB;;AAG5B,iBAAgB;AACd,MAAI,2BAA2B,WAAW,CAAC,OACzC;AAGF,6BAA2B,UAAU;AAErC,GAAC,YAA2B;AAC1B,OAAI;IACF,MAAMC,WAAgB,MAAM,OAC1B;KACE;KACA,UAAU,iBAAiB;KAC3B,GAAI,UAAU,EAAC,QAAO;KACvB,EACD,EAAE,CACH;AAID,QAAI,SACF,mBAAkB,SAAS;YAEtB,OAAO;AACd,oBAAgB,MAAM;aACd;AACR,yBAAqB,KAAK;;MAE1B;IAEH,CAAC,OAAO,CAAC;CAEZ,MAAM,iBAAiB,OAAO,YAAgC;AAC5D,MAAI,CAAC,OACH,OAAM,IAAI,sBACR,uCACA,0CACA,SACD;EAGH,MAAMA,WAAgB,MAAM,OAC1B;GACE,GAAG;GACH;GACA,GAAI,kBAAkB,UAAU,EAAC,gBAAgB,kBAAkB,SAAQ,GAAG,EAAE;GACjF,EACD,EAAE,CACH;AAED,MAAI,SACF,mBAAkB,SAAS;;AAI/B,QACE,oBAAC;EACiB;EACJ;EACZ,OAAO;EACP,WAAW,CAAC;EACH;EACT,UAAU;EACJ;EACG;EACT,GAAI;GACJ;;AAIN,OAAO,cAAc;AAErB,qBAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignUp.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/auth/SignUp/SignUp.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAa,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAGzB;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA2D3B,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -6,7 +6,7 @@ import { EmbeddedFlowType, ThunderIDRuntimeError } from "@thunderid/node";
6
6
  import { BaseSignUp } from "@thunderid/react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
 
9
- //#region src/client/components/presentation/SignUp/SignUp.tsx
9
+ //#region src/client/components/auth/SignUp/SignUp.tsx
10
10
  /**
11
11
  * A styled SignUp component that provides embedded sign-up flow with pre-built styling.
12
12
  * This component handles the API calls for sign-up and delegates UI logic to BaseSignUp.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignUp.js","names":["SignUp: FC<SignUpProps>","useThunderID"],"sources":["../../../../../src/client/components/auth/SignUp/SignUp.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {ThunderIDRuntimeError, EmbeddedFlowType} from '@thunderid/node';\nimport {BaseSignUp, BaseSignUpProps} from '@thunderid/react';\nimport {FC} from 'react';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the SignUp component.\n */\nexport type SignUpProps = BaseSignUpProps;\n\n/**\n * A styled SignUp component that provides embedded sign-up flow with pre-built styling.\n * This component handles the API calls for sign-up and delegates UI logic to BaseSignUp.\n *\n * @example\n * ```tsx\n * import { SignUp } from '@thunderid/react';\n *\n * const App = () => {\n * return (\n * <SignUp\n * onSuccess={(response) => {\n * console.log('Sign-up successful:', response);\n * // Handle successful sign-up (e.g., redirect, show confirmation)\n * }}\n * onError={(error) => {\n * console.error('Sign-up failed:', error);\n * }}\n * onComplete={(redirectUrl) => {\n * // Platform-specific redirect handling (e.g., Next.js router.push)\n * router.push(redirectUrl); // or window.location.href = redirectUrl\n * }}\n * size=\"medium\"\n * variant=\"outlined\"\n * afterSignUpUrl=\"/welcome\"\n * />\n * );\n * };\n * ```\n */\nconst SignUp: FC<SignUpProps> = ({\n className,\n size = 'medium',\n variant = 'outlined',\n afterSignUpUrl,\n onError,\n children,\n}: SignUpProps) => {\n const {signUp, applicationId: contextApplicationId, scopes} = useThunderID();\n\n /**\n * Initialize the sign-up flow.\n */\n const handleInitialize = async (payload?: any): Promise<any> => {\n if (!signUp) {\n throw new ThunderIDRuntimeError(\n '`signUp` function is not available.',\n 'SignUp-handleInitialize-RuntimeError-001',\n 'nextjs',\n );\n }\n\n return (await signUp({\n flowType: EmbeddedFlowType.Registration,\n ...(contextApplicationId && {applicationId: contextApplicationId}),\n ...(scopes && {scopes}),\n ...payload,\n })) as unknown as Promise<any>;\n };\n\n /**\n * Handle sign-up steps.\n */\n const handleOnSubmit = async (payload: any): Promise<any> => {\n if (!signUp) {\n throw new ThunderIDRuntimeError(\n '`signUp` function is not available.',\n 'SignUp-handleOnSubmit-RuntimeError-001',\n 'nextjs',\n );\n }\n\n return (await signUp(payload)) as unknown as Promise<any>;\n };\n\n return (\n <BaseSignUp\n afterSignUpUrl={afterSignUpUrl}\n onInitialize={handleInitialize}\n onSubmit={handleOnSubmit}\n onError={onError}\n className={className}\n size={size}\n variant={variant}\n isInitialized={true}\n >\n {children}\n </BaseSignUp>\n );\n};\n\nexport default SignUp;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAMA,UAA2B,EAC/B,WACA,OAAO,UACP,UAAU,YACV,gBACA,SACA,eACiB;CACjB,MAAM,EAAC,QAAQ,eAAe,sBAAsB,WAAUC,sBAAc;;;;CAK5E,MAAM,mBAAmB,OAAO,YAAgC;AAC9D,MAAI,CAAC,OACH,OAAM,IAAI,sBACR,uCACA,4CACA,SACD;AAGH,SAAQ,MAAM,OAAO;GACnB,UAAU,iBAAiB;GAC3B,GAAI,wBAAwB,EAAC,eAAe,sBAAqB;GACjE,GAAI,UAAU,EAAC,QAAO;GACtB,GAAG;GACJ,CAAC;;;;;CAMJ,MAAM,iBAAiB,OAAO,YAA+B;AAC3D,MAAI,CAAC,OACH,OAAM,IAAI,sBACR,uCACA,0CACA,SACD;AAGH,SAAQ,MAAM,OAAO,QAAQ;;AAG/B,QACE,oBAAC;EACiB;EAChB,cAAc;EACd,UAAU;EACD;EACE;EACL;EACG;EACT,eAAe;EAEd;GACU;;AAIjB,qBAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignInButton.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/auth/buttons/SignInButton/SignInButton.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAmB,qBAAqB,EAAiB,MAAM,kBAAkB,CAAC;AAGzF,OAAO,EAAa,yBAAyB,EAAqB,aAAa,EAAuB,MAAM,OAAO,CAAC;AAGpH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG;IACtD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,QAAA,MAAM,YAAY,EAAE,yBAAyB,CAAC,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CA0DjG,CAAC;AAIF,eAAe,YAAY,CAAC"}
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
 
3
3
 
4
- import useThunderID_default from "../../../contexts/ThunderID/useThunderID.js";
4
+ import useThunderID_default from "../../../../contexts/ThunderID/useThunderID.js";
5
5
  import { ThunderIDRuntimeError } from "@thunderid/node";
6
6
  import { BaseSignInButton, useTranslation } from "@thunderid/react";
7
7
  import { useRouter } from "next/navigation";
8
8
  import { forwardRef, useState } from "react";
9
9
  import { jsx } from "react/jsx-runtime";
10
10
 
11
- //#region src/client/components/actions/SignInButton/SignInButton.tsx
11
+ //#region src/client/components/auth/buttons/SignInButton/SignInButton.tsx
12
12
  /**
13
13
  * SignInButton component that uses server actions for authentication in Next.js.
14
14
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignInButton.js","names":["SignInButton: ForwardRefExoticComponent<SignInButtonProps & RefAttributes<HTMLButtonElement>>","useThunderID","router: AppRouterInstance"],"sources":["../../../../../../src/client/components/auth/buttons/SignInButton/SignInButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {ThunderIDRuntimeError} from '@thunderid/node';\nimport {BaseSignInButton, BaseSignInButtonProps, useTranslation} from '@thunderid/react';\nimport {AppRouterInstance} from 'next/dist/shared/lib/app-router-context.shared-runtime';\nimport {useRouter} from 'next/navigation';\nimport {forwardRef, ForwardRefExoticComponent, ReactElement, Ref, RefAttributes, MouseEvent, useState} from 'react';\nimport useThunderID from '../../../../contexts/ThunderID/useThunderID';\n\n/**\n * Props interface of {@link SignInButton}\n */\nexport type SignInButtonProps = BaseSignInButtonProps & {\n /**\n * Additional parameters to pass to the `authorize` request.\n */\n signInOptions?: Record<string, any>;\n};\n\n/**\n * SignInButton component that uses server actions for authentication in Next.js.\n *\n * @example Using render props\n * ```tsx\n * <SignInButton>\n * {({isLoading}) => (\n * <button type=\"submit\" disabled={isLoading}>\n * {isLoading ? 'Signing in...' : 'Sign In'}\n * </button>\n * )}\n * </SignInButton>\n * ```\n *\n * @example Using traditional props\n * ```tsx\n * <SignInButton className=\"custom-button\">Sign In</SignInButton>\n * ```\n *\n * @remarks\n * In Next.js with server actions, the sign-in is handled via the server action.\n * When using render props, the custom button should use `type=\"submit\"` instead of `onClick={signIn}`.\n * The `signIn` function in render props is provided for API consistency but should not be used directly.\n */\nconst SignInButton: ForwardRefExoticComponent<SignInButtonProps & RefAttributes<HTMLButtonElement>> = forwardRef<\n HTMLButtonElement,\n SignInButtonProps\n>(\n (\n {className, style, children, preferences, onClick, signInOptions = {}, ...rest}: SignInButtonProps,\n ref: Ref<HTMLButtonElement>,\n ): ReactElement => {\n const {signIn, signInUrl} = useThunderID();\n const router: AppRouterInstance = useRouter();\n const {t} = useTranslation(preferences?.i18n);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const handleSignIn = async (): Promise<void> => {\n try {\n setIsLoading(true);\n\n // If a custom `signInUrl` is provided, use it for navigation.\n if (signInUrl) {\n router.push(signInUrl);\n } else if (signIn) {\n await signIn(signInOptions);\n }\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(error)}`,\n 'SignInButton-handleSignIn-RuntimeError-001',\n 'nextjs',\n 'Something went wrong while trying to sign in. Please try again later.',\n );\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleOnClick = async (e: MouseEvent<HTMLButtonElement>): Promise<void> => {\n await handleSignIn();\n if (onClick) {\n onClick(e);\n }\n };\n\n return (\n <BaseSignInButton\n className={className}\n style={style}\n ref={ref}\n preferences={preferences}\n isLoading={isLoading}\n signIn={handleSignIn}\n onClick={handleOnClick}\n {...rest}\n >\n {children ?? t('elements.buttons.signin.text')}\n </BaseSignInButton>\n );\n },\n);\n\nSignInButton.displayName = 'SignInButton';\n\nexport default SignInButton;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,MAAMA,eAAgG,YAKlG,EAAC,WAAW,OAAO,UAAU,aAAa,SAAS,gBAAgB,EAAE,CAAE,GAAG,QAC1E,QACiB;CACjB,MAAM,EAAC,QAAQ,cAAaC,sBAAc;CAC1C,MAAMC,SAA4B,WAAW;CAC7C,MAAM,EAAC,MAAK,eAAe,aAAa,KAAK;CAE7C,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CAEjD,MAAM,eAAe,YAA2B;AAC9C,MAAI;AACF,gBAAa,KAAK;AAGlB,OAAI,UACF,QAAO,KAAK,UAAU;YACb,OACT,OAAM,OAAO,cAAc;WAEtB,OAAO;AACd,SAAM,IAAI,sBACR,mBAAmB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IACzE,8CACA,UACA,wEACD;YACO;AACR,gBAAa,MAAM;;;CAIvB,MAAM,gBAAgB,OAAO,MAAoD;AAC/E,QAAM,cAAc;AACpB,MAAI,QACF,SAAQ,EAAE;;AAId,QACE,oBAAC;EACY;EACJ;EACF;EACQ;EACF;EACX,QAAQ;EACR,SAAS;EACT,GAAI;YAEH,YAAY,EAAE,+BAA+B;GAC7B;EAGxB;AAED,aAAa,cAAc;AAE3B,2BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignOutButton.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/auth/buttons/SignOutButton/SignOutButton.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAoB,sBAAsB,EAAiB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAa,yBAAyB,EAAqB,aAAa,EAAuB,MAAM,OAAO,CAAC;AAIpH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,aAAa,EAAE,yBAAyB,CAAC,kBAAkB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAqCnG,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
 
3
3
 
4
- import logger_default from "../../../../utils/logger.js";
5
- import useThunderID_default from "../../../contexts/ThunderID/useThunderID.js";
4
+ import logger_default from "../../../../../utils/logger.js";
5
+ import useThunderID_default from "../../../../contexts/ThunderID/useThunderID.js";
6
6
  import { BaseSignOutButton, useTranslation } from "@thunderid/react";
7
7
  import { forwardRef, useState } from "react";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
 
10
- //#region src/client/components/actions/SignOutButton/SignOutButton.tsx
10
+ //#region src/client/components/auth/buttons/SignOutButton/SignOutButton.tsx
11
11
  /**
12
12
  * SignInButton component. This button initiates the sign-in process when clicked.
13
13
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignOutButton.js","names":["SignOutButton: ForwardRefExoticComponent<SignOutButtonProps & RefAttributes<HTMLButtonElement>>","useThunderID"],"sources":["../../../../../../src/client/components/auth/buttons/SignOutButton/SignOutButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {BaseSignOutButton, BaseSignOutButtonProps, useTranslation} from '@thunderid/react';\nimport {forwardRef, ForwardRefExoticComponent, ReactElement, Ref, RefAttributes, useState, MouseEvent} from 'react';\nimport logger from '../../../../../utils/logger';\nimport useThunderID from '../../../../contexts/ThunderID/useThunderID';\n\n/**\n * Interface for SignInButton component props.\n */\nexport type SignOutButtonProps = BaseSignOutButtonProps;\n\n/**\n * SignInButton component. This button initiates the sign-in process when clicked.\n *\n * @example\n * ```tsx\n * import { SignInButton } from '@thunderid/auth-react';\n *\n * const App = () => {\n * const buttonRef = useRef<HTMLButtonElement>(null);\n * return (\n * <SignInButton ref={buttonRef} className=\"custom-class\" style={{ backgroundColor: 'blue' }}>\n * Sign In\n * </SignInButton>\n * );\n * }\n * ```\n */\nconst SignOutButton: ForwardRefExoticComponent<SignOutButtonProps & RefAttributes<HTMLButtonElement>> = forwardRef<\n HTMLButtonElement,\n SignOutButtonProps\n>(\n (\n {className, style, preferences, onClick, children, ...rest}: SignOutButtonProps,\n ref: Ref<HTMLButtonElement>,\n ): ReactElement => {\n const {signOut} = useThunderID();\n const {t} = useTranslation(preferences?.i18n);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const handleOnClick = async (e: MouseEvent<HTMLButtonElement>): Promise<void> => {\n try {\n setIsLoading(true);\n\n logger.debug('[SignOutButton] Initiating a sign-out from a button click');\n\n await signOut();\n\n if (onClick) {\n onClick(e);\n }\n } catch (error) {\n logger.error('[SignOutButton] Error occurred initiating sign-out from a button click:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <BaseSignOutButton ref={ref} onClick={handleOnClick} isLoading={isLoading} preferences={preferences} {...rest}>\n {children ?? t('elements.buttons.signout.text')}\n </BaseSignOutButton>\n );\n },\n);\n\nexport default SignOutButton;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAMA,gBAAkG,YAKpG,EAAC,WAAW,OAAO,aAAa,SAAS,SAAU,GAAG,QACtD,QACiB;CACjB,MAAM,EAAC,YAAWC,sBAAc;CAChC,MAAM,EAAC,MAAK,eAAe,aAAa,KAAK;CAE7C,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CAEjD,MAAM,gBAAgB,OAAO,MAAoD;AAC/E,MAAI;AACF,gBAAa,KAAK;AAElB,kBAAO,MAAM,4DAA4D;AAEzE,SAAM,SAAS;AAEf,OAAI,QACF,SAAQ,EAAE;WAEL,OAAO;AACd,kBAAO,MAAM,2EAA2E,MAAM;YACtF;AACR,gBAAa,MAAM;;;AAIvB,QACE,oBAAC;EAAuB;EAAK,SAAS;EAA0B;EAAwB;EAAa,GAAI;YACtG,YAAY,EAAE,gCAAgC;GAC7B;EAGzB;AAED,4BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignUpButton.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/auth/buttons/SignUpButton/SignUpButton.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAmB,qBAAqB,EAAiB,MAAM,kBAAkB,CAAC;AAGzF,OAAO,EAAa,yBAAyB,EAAiC,aAAa,EAAW,MAAM,OAAO,CAAC;AAGpH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,QAAA,MAAM,YAAY,EAAE,yBAAyB,CAAC,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAgDhG,CAAC;AAIH,eAAe,YAAY,CAAC"}
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
 
3
3
 
4
- import useThunderID_default from "../../../contexts/ThunderID/useThunderID.js";
4
+ import useThunderID_default from "../../../../contexts/ThunderID/useThunderID.js";
5
5
  import { ThunderIDRuntimeError } from "@thunderid/node";
6
6
  import { BaseSignUpButton, useTranslation } from "@thunderid/react";
7
7
  import { useRouter } from "next/navigation";
8
8
  import { forwardRef, useState } from "react";
9
9
  import { jsx } from "react/jsx-runtime";
10
10
 
11
- //#region src/client/components/actions/SignUpButton/SignUpButton.tsx
11
+ //#region src/client/components/auth/buttons/SignUpButton/SignUpButton.tsx
12
12
  /**
13
13
  * SignUpButton component that supports both render props and traditional props patterns.
14
14
  * It redirects the user to the ThunderID sign-up page configured for the application.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignUpButton.js","names":["SignUpButton: ForwardRefExoticComponent<SignUpButtonProps & RefAttributes<HTMLButtonElement>>","useThunderID","router: AppRouterInstance"],"sources":["../../../../../../src/client/components/auth/buttons/SignUpButton/SignUpButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {ThunderIDRuntimeError} from '@thunderid/node';\nimport {BaseSignUpButton, BaseSignUpButtonProps, useTranslation} from '@thunderid/react';\nimport {AppRouterInstance} from 'next/dist/shared/lib/app-router-context.shared-runtime';\nimport {useRouter} from 'next/navigation';\nimport {forwardRef, ForwardRefExoticComponent, MouseEvent, ReactElement, Ref, RefAttributes, useState} from 'react';\nimport useThunderID from '../../../../contexts/ThunderID/useThunderID';\n\n/**\n * Props interface of {@link SignUpButton}\n */\nexport type SignUpButtonProps = BaseSignUpButtonProps;\n\n/**\n * SignUpButton component that supports both render props and traditional props patterns.\n * It redirects the user to the ThunderID sign-up page configured for the application.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example Using render props pattern\n * ```tsx\n * <SignUpButton>\n * {({ signUp, isLoading }) => (\n * <button onClick={signUp} disabled={isLoading}>\n * {isLoading ? 'Creating Account...' : 'Create Account'}\n * </button>\n * )}\n * </SignUpButton>\n * ```\n *\n * @example Using traditional props pattern\n * ```tsx\n * <SignUpButton className=\"custom-button\">Create Account</SignUpButton>\n * ```\n *\n * @example Using component-level preferences\n * ```tsx\n * <SignUpButton\n * preferences={{\n * i18n: {\n * bundles: {\n * 'en-US': {\n * translations: {\n * 'buttons.signUp': 'Custom Sign Up Text'\n * }\n * }\n * }\n * }\n * }}\n * >\n * Custom Sign Up\n * </SignUpButton>\n * ```\n */\nconst SignUpButton: ForwardRefExoticComponent<SignUpButtonProps & RefAttributes<HTMLButtonElement>> = forwardRef<\n HTMLButtonElement,\n SignUpButtonProps\n>(({children, onClick, preferences, ...rest}: SignUpButtonProps, ref: Ref<HTMLButtonElement>): ReactElement => {\n const {signUp, signUpUrl} = useThunderID();\n const router: AppRouterInstance = useRouter();\n const {t} = useTranslation(preferences?.i18n);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const handleSignUp = async (e?: MouseEvent<HTMLButtonElement>): Promise<void> => {\n try {\n setIsLoading(true);\n\n // If a custom `signUpUrl` is provided, use it for navigation.\n if (signUpUrl) {\n router.push(signUpUrl);\n } else if (signUp) {\n await signUp();\n }\n\n if (onClick) {\n onClick(e!);\n }\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign up failed: ${error instanceof Error ? error.message : String(error)}`,\n 'SignUpButton-handleSignUp-RuntimeError-001',\n 'nextjs',\n 'Something went wrong while trying to sign up. Please try again later.',\n );\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <BaseSignUpButton\n ref={ref}\n onClick={handleSignUp}\n isLoading={isLoading}\n signUp={handleSignUp}\n preferences={preferences}\n {...rest}\n >\n {children ?? t('elements.buttons.signup.text')}\n </BaseSignUpButton>\n );\n});\n\nSignUpButton.displayName = 'SignUpButton';\n\nexport default SignUpButton;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DA,MAAMA,eAAgG,YAGnG,EAAC,UAAU,SAAS,YAAa,GAAG,QAA0B,QAA8C;CAC7G,MAAM,EAAC,QAAQ,cAAaC,sBAAc;CAC1C,MAAMC,SAA4B,WAAW;CAC7C,MAAM,EAAC,MAAK,eAAe,aAAa,KAAK;CAE7C,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CAEjD,MAAM,eAAe,OAAO,MAAqD;AAC/E,MAAI;AACF,gBAAa,KAAK;AAGlB,OAAI,UACF,QAAO,KAAK,UAAU;YACb,OACT,OAAM,QAAQ;AAGhB,OAAI,QACF,SAAQ,EAAG;WAEN,OAAO;AACd,SAAM,IAAI,sBACR,mBAAmB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IACzE,8CACA,UACA,wEACD;YACO;AACR,gBAAa,MAAM;;;AAIvB,QACE,oBAAC;EACM;EACL,SAAS;EACE;EACX,QAAQ;EACK;EACb,GAAI;YAEH,YAAY,EAAE,+BAA+B;GAC7B;EAErB;AAEF,aAAa,cAAc;AAE3B,2BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Loading.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/auth/guards/Loading/Loading.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAQhD,CAAC;AAIF,eAAe,OAAO,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignedIn.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/auth/guards/SignedIn/SignedIn.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAOlD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
3
 
4
- import useThunderID_default from "../../../contexts/ThunderID/useThunderID.js";
4
+ import useThunderID_default from "../../../../contexts/ThunderID/useThunderID.js";
5
5
  import { Fragment, jsx } from "react/jsx-runtime";
6
6
 
7
- //#region src/client/components/control/SignedIn/SignedIn.tsx
7
+ //#region src/client/components/auth/guards/SignedIn/SignedIn.tsx
8
8
  /**
9
9
  * A component that only renders its children when the user is signed in.
10
10
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignedIn.js","names":["SignedIn: FC<PropsWithChildren<SignedInProps>>","useThunderID"],"sources":["../../../../../../src/client/components/auth/guards/SignedIn/SignedIn.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../../../contexts/ThunderID/useThunderID';\n\n/**\n * Props interface of {@link SignedIn}\n */\nexport interface SignedInProps {\n /**\n * Content to show when the user is not signed in.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the user is signed in.\n *\n * @example\n * ```tsx\n * import { SignedIn } from '@thunderid/auth-next';\n *\n * const App = () => {\n * return (\n * <SignedIn fallback={<p>Please sign in to continue</p>}>\n * <p>Welcome! You are signed in.</p>\n * </SignedIn>\n * );\n * }\n * ```\n */\nconst SignedIn: FC<PropsWithChildren<SignedInProps>> = ({\n children,\n fallback = null,\n}: PropsWithChildren<SignedInProps>) => {\n const {isSignedIn} = useThunderID();\n\n return <>{isSignedIn ? children : fallback}</>;\n};\n\nexport default SignedIn;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,YAAkD,EACtD,UACA,WAAW,WAC2B;CACtC,MAAM,EAAC,eAAcC,sBAAc;AAEnC,QAAO,0CAAG,aAAa,WAAW,WAAY;;AAGhD,uBAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignedOut.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/auth/guards/SignedOut/SignedOut.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAOpD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
3
 
4
- import useThunderID_default from "../../../contexts/ThunderID/useThunderID.js";
4
+ import useThunderID_default from "../../../../contexts/ThunderID/useThunderID.js";
5
5
  import { Fragment, jsx } from "react/jsx-runtime";
6
6
 
7
- //#region src/client/components/control/SignedOut/SignedOut.tsx
7
+ //#region src/client/components/auth/guards/SignedOut/SignedOut.tsx
8
8
  /**
9
9
  * A component that only renders its children when the user is signed out.
10
10
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignedOut.js","names":["SignedOut: FC<PropsWithChildren<SignedOutProps>>","useThunderID"],"sources":["../../../../../../src/client/components/auth/guards/SignedOut/SignedOut.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../../../contexts/ThunderID/useThunderID';\n\n/**\n * Props interface of {@link SignedOut}\n */\nexport interface SignedOutProps {\n /**\n * Content to show when the user is not signed-out.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the user is signed out.\n *\n * @example\n * ```tsx\n * import { SignedOut } from '@thunderid/auth-next';\n *\n * const App = () => {\n * return (\n * <SignedOut fallback={<p>Please sign out to continue</p>}>\n * <p>Welcome! You are signed out.</p>\n * </SignedOut>\n * );\n * }\n * ```\n */\nconst SignedOut: FC<PropsWithChildren<SignedOutProps>> = ({\n children,\n fallback = null,\n}: PropsWithChildren<SignedOutProps>) => {\n const {isSignedIn} = useThunderID();\n\n return <>{!isSignedIn ? children : fallback}</>;\n};\n\nexport default SignedOut;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,aAAoD,EACxD,UACA,WAAW,WAC4B;CACvC,MAAM,EAAC,eAAcC,sBAAc;AAEnC,QAAO,0CAAG,CAAC,aAAa,WAAW,WAAY;;AAGjD,wBAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthFlowSelect.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/primitives/AuthFlowSelect/AuthFlowSelect.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAqB,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAGzB,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;AAElF;;;;GAIG;AACH,QAAA,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAE3C,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -5,7 +5,7 @@ import fetchAuthFlowsFromServer_default from "../../../fetchAuthFlowsFromServer.
5
5
  import { BaseAuthFlowSelect } from "@thunderid/react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
 
8
- //#region src/client/components/presentation/AuthFlowSelect/AuthFlowSelect.tsx
8
+ //#region src/client/components/primitives/AuthFlowSelect/AuthFlowSelect.tsx
9
9
  /**
10
10
  * Authentication-flow picker for signed-in screens. Flows load through a server action that uses the
11
11
  * signed-in user's server-held session, so the access token never reaches the browser. It takes no
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthFlowSelect.js","names":["AuthFlowSelect: FC<AuthFlowSelectProps>","fetchAuthFlowsFromServer"],"sources":["../../../../../src/client/components/primitives/AuthFlowSelect/AuthFlowSelect.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {BaseAuthFlowSelect, BaseAuthFlowSelectProps} from '@thunderid/react';\nimport {FC} from 'react';\nimport fetchAuthFlowsFromServer from '../../../fetchAuthFlowsFromServer';\n\nexport type AuthFlowSelectProps = Omit<BaseAuthFlowSelectProps, 'fetchAuthFlows'>;\n\n/**\n * Authentication-flow picker for signed-in screens. Flows load through a server action that uses the\n * signed-in user's server-held session, so the access token never reaches the browser. It takes no\n * data source; for a custom one use `Select` with `useInfiniteOptions`.\n */\nconst AuthFlowSelect: FC<AuthFlowSelectProps> = (props: AuthFlowSelectProps) => (\n <BaseAuthFlowSelect {...props} fetchAuthFlows={fetchAuthFlowsFromServer} />\n);\n\nexport default AuthFlowSelect;\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAMA,kBAA2C,UAC/C,oBAAC;CAAmB,GAAI;CAAO,gBAAgBC;EAA4B;AAG7E,6BAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSelect.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/primitives/UserSelect/UserSelect.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAiB,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAGzB,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAEtE;;;;GAIG;AACH,QAAA,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAEnC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -5,7 +5,7 @@ import fetchUsersFromServer_default from "../../../fetchUsersFromServer.js";
5
5
  import { BaseUserSelect } from "@thunderid/react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
 
8
- //#region src/client/components/presentation/UserSelect/UserSelect.tsx
8
+ //#region src/client/components/primitives/UserSelect/UserSelect.tsx
9
9
  /**
10
10
  * Single-user picker for signed-in screens. Users load through a server action that uses the
11
11
  * signed-in user's server-held session, so the access token never reaches the browser. It takes no
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSelect.js","names":["UserSelect: FC<UserSelectProps>","fetchUsersFromServer"],"sources":["../../../../../src/client/components/primitives/UserSelect/UserSelect.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {BaseUserSelect, BaseUserSelectProps} from '@thunderid/react';\nimport {FC} from 'react';\nimport fetchUsersFromServer from '../../../fetchUsersFromServer';\n\nexport type UserSelectProps = Omit<BaseUserSelectProps, 'fetchUsers'>;\n\n/**\n * Single-user picker for signed-in screens. Users load through a server action that uses the\n * signed-in user's server-held session, so the access token never reaches the browser. It takes no\n * data source; for a custom one use `Select` with `useInfiniteOptions`.\n */\nconst UserSelect: FC<UserSelectProps> = (props: UserSelectProps) => (\n <BaseUserSelect {...props} fetchUsers={fetchUsersFromServer} />\n);\n\nexport default UserSelect;\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAMA,cAAmC,UACvC,oBAAC;CAAe,GAAI;CAAO,YAAYC;EAAwB;AAGjE,yBAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserTypeSelect.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/primitives/UserTypeSelect/UserTypeSelect.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAqB,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAGzB,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;AAElF;;;;GAIG;AACH,QAAA,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAE3C,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -5,7 +5,7 @@ import fetchUserTypesFromServer_default from "../../../fetchUserTypesFromServer.
5
5
  import { BaseUserTypeSelect } from "@thunderid/react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
 
8
- //#region src/client/components/presentation/UserTypeSelect/UserTypeSelect.tsx
8
+ //#region src/client/components/primitives/UserTypeSelect/UserTypeSelect.tsx
9
9
  /**
10
10
  * User-type picker for signed-in screens. User types load through a server action that uses the
11
11
  * signed-in user's server-held session, so the access token never reaches the browser. It takes no
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserTypeSelect.js","names":["UserTypeSelect: FC<UserTypeSelectProps>","fetchUserTypesFromServer"],"sources":["../../../../../src/client/components/primitives/UserTypeSelect/UserTypeSelect.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {BaseUserTypeSelect, BaseUserTypeSelectProps} from '@thunderid/react';\nimport {FC} from 'react';\nimport fetchUserTypesFromServer from '../../../fetchUserTypesFromServer';\n\nexport type UserTypeSelectProps = Omit<BaseUserTypeSelectProps, 'fetchUserTypes'>;\n\n/**\n * User-type picker for signed-in screens. User types load through a server action that uses the\n * signed-in user's server-held session, so the access token never reaches the browser. It takes no\n * data source; for a custom one use `Select` with `useInfiniteOptions`.\n */\nconst UserTypeSelect: FC<UserTypeSelectProps> = (props: UserTypeSelectProps) => (\n <BaseUserTypeSelect {...props} fetchUserTypes={fetchUserTypesFromServer} />\n);\n\nexport default UserTypeSelect;\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAMA,kBAA2C,UAC/C,oBAAC;CAAmB,GAAI;CAAO,gBAAgBC;EAA4B;AAG7E,6BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThunderIDProvider.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/ThunderID/ThunderIDProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,EACL,eAAe,EAEf,oBAAoB,EAEpB,qBAAqB,EACrB,IAAI,EACJ,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAQL,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAC,EAAE,EAAE,iBAAiB,EAAkD,MAAM,OAAO,CAAC;AAC7F,OAAyB,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAC,MAAM,sCAAsC,CAAC;AAInE;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,GACtG,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG;IACrD,aAAa,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,mBAAmB,EAAE,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC,CAAC;IACvE;;;OAGG;IACH,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAChE,YAAY,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,aAAa,EAAE,CACb,aAAa,EAAE,qBAAqB,EACpC,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC;QAAC,IAAI,EAAE;YAAC,IAAI,EAAE,IAAI,CAAA;SAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC,CAAC;IACpE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;CACrD,CAAC;AAEJ,QAAA,MAAM,uBAAuB,EAAE,EAAE,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CA0VhF,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"ThunderIDProvider.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/ThunderID/ThunderIDProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,EACL,eAAe,EAEf,oBAAoB,EAEpB,qBAAqB,EACrB,IAAI,EACJ,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAQL,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAC,EAAE,EAAE,iBAAiB,EAAkD,MAAM,OAAO,CAAC;AAC7F,OAAyB,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAC,MAAM,sCAAsC,CAAC;AAKnE;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,GACtG,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG;IACrD,aAAa,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,mBAAmB,EAAE,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC,CAAC;IACvE;;;OAGG;IACH,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAChE,YAAY,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,aAAa,EAAE,CACb,aAAa,EAAE,qBAAqB,EACpC,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC;QAAC,IAAI,EAAE;YAAC,IAAI,EAAE,IAAI,CAAA;SAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC,CAAC;IACpE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;CACrD,CAAC;AAEJ,QAAA,MAAM,uBAAuB,EAAE,EAAE,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAkWhF,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  import logger_default from "../../../utils/logger.js";
5
5
  import ThunderIDContext_default from "./ThunderIDContext.js";
6
6
  import fetchFlowMetaFromServer_default from "../../fetchFlowMetaFromServer.js";
7
+ import fetchManagementFromServer_default from "../../fetchManagementFromServer.js";
7
8
  import { ThunderIDRuntimeError, generateFlattenedUserProfile, getVendorPrefix } from "@thunderid/node";
8
9
  import { FlowMetaProvider, FlowProvider, I18nProvider, ThemeProvider, ThunderIDContext, UserProvider } from "@thunderid/react";
9
10
  import { useRouter, useSearchParams } from "next/navigation";
@@ -11,7 +12,7 @@ import { useEffect, useMemo, useRef, useState } from "react";
11
12
  import { jsx } from "react/jsx-runtime";
12
13
 
13
14
  //#region src/client/contexts/ThunderID/ThunderIDProvider.tsx
14
- const ThunderIDClientProvider = ({ baseUrl, children, signIn, clearSession, refreshToken, signOut, signUp, handleOAuthCallback, preferences, isSignedIn, signInUrl, signUpUrl, user: _user, userProfile: _userProfile, userSchema: _userSchema = null, updateProfile, applicationId, organizationHandle, scopes, vendor, initialMeta = null }) => {
15
+ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSession, refreshToken, signOut, signUp, handleOAuthCallback, preferences, isSignedIn, signInUrl, signUpUrl, user: _user, userProfile: _userProfile, userSchema: _userSchema = null, updateProfile, applicationId, organizationHandle, scopes, vendor, initialMeta = null }) => {
15
16
  const reRenderCheckRef = useRef(false);
16
17
  const router = useRouter();
17
18
  const searchParams = useSearchParams();
@@ -148,12 +149,14 @@ const ThunderIDClientProvider = ({ baseUrl, children, signIn, clearSession, refr
148
149
  clearSession,
149
150
  clientId: void 0,
150
151
  discovery: { wellKnown: null },
152
+ endpoints,
151
153
  exchangeToken: unsupported("exchangeToken"),
152
154
  getAccessToken: unsupported("getAccessToken"),
153
155
  getDecodedIdToken: unsupported("getDecodedIdToken"),
154
156
  getIdToken: unsupported("getIdToken"),
155
157
  getStorageManager: () => Promise.resolve(null),
156
158
  http: {
159
+ fetcher: fetchManagementFromServer_default,
157
160
  request: unsupported("http.request"),
158
161
  requestAll: unsupported("http.requestAll")
159
162
  },
@@ -181,6 +184,7 @@ const ThunderIDClientProvider = ({ baseUrl, children, signIn, clearSession, refr
181
184
  applicationId,
182
185
  baseUrl,
183
186
  clearSession,
187
+ endpoints,
184
188
  isLoading,
185
189
  isSignedIn,
186
190
  organizationHandle,
@@ -1 +1 @@
1
- {"version":3,"file":"ThunderIDProvider.js","names":["ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>>","reRenderCheckRef: RefObject<boolean>","router: AppRouterInstance","searchParams: ReadonlyURLSearchParams","code: string | null","state: string | null","result: {error?: string; redirectUrl?: string; success: boolean}","result: any","contextValue: ThunderIDContextProps","reactContextValue: ReactThunderIDContextProps","ThunderIDContext","ReactThunderIDContext","fetchFlowMetaFromServer"],"sources":["../../../../src/client/contexts/ThunderID/ThunderIDProvider.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {\n AttributeSchema,\n EmbeddedFlowExecuteRequestConfig,\n FlowMetadataResponse,\n generateFlattenedUserProfile,\n UpdateMeProfileConfig,\n User,\n UserProfile,\n ThunderIDRuntimeError,\n getVendorPrefix,\n} from '@thunderid/node';\nimport {\n I18nProvider,\n FlowMetaProvider,\n FlowProvider,\n UserProvider,\n ThemeProvider,\n ThunderIDContext as ReactThunderIDContext,\n ThunderIDContextProps as ReactThunderIDContextProps,\n ThunderIDProviderProps,\n} from '@thunderid/react';\nimport {ReadonlyURLSearchParams} from 'next/dist/client/components/navigation.react-server';\nimport {AppRouterInstance} from 'next/dist/shared/lib/app-router-context.shared-runtime';\nimport {useRouter, useSearchParams} from 'next/navigation';\nimport {FC, PropsWithChildren, RefObject, useEffect, useMemo, useRef, useState} from 'react';\nimport ThunderIDContext, {ThunderIDContextProps} from './ThunderIDContext';\nimport {RefreshResult} from '../../../server/actions/refreshToken';\nimport logger from '../../../utils/logger';\nimport fetchFlowMetaFromServer from '../../fetchFlowMetaFromServer';\n\n/**\n * Props interface of {@link ThunderIDClientProvider}\n */\nexport type ThunderIDClientProviderProps = Partial<Omit<ThunderIDProviderProps, 'baseUrl' | 'clientId'>> &\n Pick<ThunderIDProviderProps, 'baseUrl' | 'clientId'> & {\n applicationId: ThunderIDContextProps['applicationId'];\n clearSession: () => Promise<void>;\n handleOAuthCallback: (\n code: string,\n state: string,\n ) => Promise<{error?: string; redirectUrl?: string; success: boolean}>;\n /**\n * Flow metadata fetched server-side ahead of time, seeding `FlowMetaProvider` so it can skip\n * its own initial client-side fetch (avoiding a flash of untranslated i18n keys).\n */\n initialMeta?: FlowMetadataResponse | null;\n isSignedIn: boolean;\n organizationHandle: ThunderIDContextProps['organizationHandle'];\n refreshToken: () => Promise<RefreshResult>;\n signIn: ThunderIDContextProps['signIn'];\n signOut: ThunderIDContextProps['signOut'];\n signUp: ThunderIDContextProps['signUp'];\n updateProfile: (\n requestConfig: UpdateMeProfileConfig,\n sessionId?: string,\n ) => Promise<{data: {user: User}; error: string; success: boolean}>;\n user: User | null;\n userProfile: UserProfile;\n userSchema?: Record<string, AttributeSchema> | null;\n };\n\nconst ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>> = ({\n baseUrl,\n children,\n signIn,\n clearSession,\n refreshToken,\n signOut,\n signUp,\n handleOAuthCallback,\n preferences,\n isSignedIn,\n signInUrl,\n signUpUrl,\n user: _user,\n userProfile: _userProfile,\n userSchema: _userSchema = null,\n updateProfile,\n applicationId,\n organizationHandle,\n scopes,\n vendor,\n initialMeta = null,\n}: PropsWithChildren<ThunderIDClientProviderProps>) => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const router: AppRouterInstance = useRouter();\n const searchParams: ReadonlyURLSearchParams = useSearchParams();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [user, setUser] = useState<User | null>(_user);\n const [userProfile, setUserProfile] = useState<UserProfile>(_userProfile);\n const [userSchema, setUserSchema] = useState<Record<string, AttributeSchema> | null>(_userSchema);\n\n useEffect(() => {\n setUserProfile(_userProfile);\n }, [_userProfile]);\n\n useEffect(() => {\n setUserSchema(_userSchema);\n }, [_userSchema]);\n\n useEffect(() => {\n setUser(_user);\n }, [_user]);\n\n // Handle OAuth callback automatically\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n // Don't handle callback if already signed in\n if (isSignedIn) return;\n\n (async (): Promise<void> => {\n try {\n const code: string | null = searchParams.get('code');\n const state: string | null = searchParams.get('state');\n const error: string | null = searchParams.get('error');\n\n // Check for OAuth errors first\n if (error) {\n logger.error('[ThunderIDClientProvider] An error was received for the initiated sign-in request.');\n\n return;\n }\n\n // Handle OAuth callback if code and state are present\n if (code && state) {\n setIsLoading(true);\n\n const result: {error?: string; redirectUrl?: string; success: boolean} = await handleOAuthCallback(\n code,\n state,\n );\n\n if (result.success) {\n // Redirect to the success URL\n if (result.redirectUrl) {\n router.push(result.redirectUrl);\n } else {\n // Refresh the page to update authentication state\n window.location.reload();\n }\n } else {\n logger.error(\n `[ThunderIDClientProvider] An error occurred while signing in: ${result.error || 'Authentication failed'}`,\n );\n }\n }\n } catch (error) {\n logger.error('[ThunderIDClientProvider] Failed to handle OAuth callback:', error);\n }\n })();\n }, []);\n\n useEffect(() => {\n // Set loading to false when server has resolved authentication state\n setIsLoading(false);\n }, [isSignedIn, user]);\n\n const handleSignIn = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signIn) {\n throw new ThunderIDRuntimeError(\n '`signIn` function is not available.',\n 'ThunderIDClientProvider-handleSignIn-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signIn(payload, request);\n\n // Redirect based flow URL is sent as `signInUrl` in the response.\n // Use window.location.href instead of router.push() — the OAuth authorization\n // endpoint is on an external server, and router.push() would send RSC fetch\n // headers that the identity provider doesn't understand, causing a CORS error.\n if (result?.data?.signInUrl) {\n window.location.href = result.data.signInUrl;\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignInUrl` in the response.\n if (result?.data?.afterSignInUrl) {\n router.push(result.data.afterSignInUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignUp = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signUp) {\n throw new ThunderIDRuntimeError(\n '`signUp` function is not available.',\n 'ThunderIDClientProvider-handleSignUp-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signUp(payload, request);\n\n // Redirect based flow URL is sent as `signUpUrl` in the response.\n if (result?.data?.signUpUrl) {\n router.push(result.data.signUpUrl);\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignUpUrl` in the response.\n if (result?.data?.afterSignUpUrl) {\n router.push(result.data.afterSignUpUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignOut = async (): Promise<any> => {\n logger.debug('[ThunderIDClientProvider][handleSignOut] `handleSignOut` called.');\n\n try {\n const result: any = await signOut();\n\n logger.debug('[ThunderIDClientProvider][handleSignOut] Sign out result:', result);\n\n if (result?.data?.afterSignOutUrl) {\n router.push(result.data.afterSignOutUrl);\n\n return {location: result.data.afterSignOutUrl, redirected: true};\n }\n\n if (result?.error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error result was returned during signing the user out with a button click:',\n result.error,\n );\n }\n\n return result?.data ?? result;\n } catch (error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error occurred during signing the user out with a button click:',\n error,\n );\n\n return undefined;\n }\n };\n\n const contextValue: ThunderIDContextProps = useMemo(\n () => ({\n applicationId,\n baseUrl,\n clearSession,\n isLoading,\n isSignedIn,\n organizationHandle,\n preferences,\n refreshToken,\n scopes,\n signIn: handleSignIn,\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n user,\n }),\n [\n baseUrl,\n user,\n isSignedIn,\n isLoading,\n signInUrl,\n signUpUrl,\n applicationId,\n organizationHandle,\n scopes,\n preferences,\n ],\n );\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile) => ({\n ...prev,\n flattenedProfile: generateFlattenedUserProfile(payload),\n profile: payload,\n }));\n };\n\n // Bridge into @thunderid/react's own ThunderIDContext. Internal react components rendered by\n // BaseSignIn/BaseSignUp — most notably FlowMetaProvider, which fetches `/flow/meta` and injects\n // its i18n bundle — call react's `useThunderID()` directly. Without this bridge they'd only see\n // react's context default (applicationId/baseUrl undefined, isInitialized false), so the meta\n // fetch would never fire and flow labels would render as untranslated i18n keys. Fields with no\n // nextjs equivalent (token/http helpers meant for direct browser API calls) are stubbed out,\n // since nextjs routes those operations through server actions instead.\n const unsupported = (name: string): (() => Promise<never>) => {\n return () =>\n Promise.reject(\n new ThunderIDRuntimeError(\n `\\`${name}\\` is not supported in @thunderid/nextjs.`,\n `ThunderIDClientProvider-${name}-NotSupportedError-001`,\n 'nextjs',\n ),\n );\n };\n\n const reactContextValue: ReactThunderIDContextProps = useMemo(\n () => ({\n afterSignInUrl: undefined,\n applicationId,\n baseUrl,\n clearSession,\n clientId: undefined,\n discovery: {wellKnown: null},\n exchangeToken: unsupported('exchangeToken'),\n getAccessToken: unsupported('getAccessToken'),\n getDecodedIdToken: unsupported('getDecodedIdToken'),\n getIdToken: unsupported('getIdToken'),\n getStorageManager: () => Promise.resolve(null),\n http: {\n request: unsupported('http.request'),\n requestAll: unsupported('http.requestAll'),\n },\n instanceId: 0,\n isInitialized: !isLoading,\n isLoading,\n isMetaLoading: false,\n isSignedIn,\n meta: initialMeta ?? null,\n organizationHandle,\n reInitialize: unsupported('reInitialize'),\n recover: unsupported('recover'),\n resolveFlowTemplateLiterals: (text: string | undefined): string => text ?? '',\n scopes,\n signIn: handleSignIn,\n signInSilently: unsupported('signInSilently'),\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n user,\n userSchema,\n vendor: getVendorPrefix(vendor),\n }),\n [\n applicationId,\n baseUrl,\n clearSession,\n isLoading,\n isSignedIn,\n organizationHandle,\n scopes,\n signInUrl,\n signUpUrl,\n user,\n userSchema,\n initialMeta,\n vendor,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={contextValue}>\n <ReactThunderIDContext.Provider value={reactContextValue}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider\n enabled={preferences?.resolveFromMeta !== false}\n initialMeta={initialMeta}\n fetchMeta={fetchFlowMetaFromServer}\n >\n <ThemeProvider theme={preferences?.theme?.overrides} mode={preferences?.theme?.mode}>\n <FlowProvider>\n <UserProvider\n profile={userProfile}\n userSchema={userSchema}\n onUpdateProfile={handleProfileUpdate}\n updateProfile={updateProfile}\n >\n {children}\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ReactThunderIDContext.Provider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDClientProvider;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThunderIDProvider.js","names":["ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>>","reRenderCheckRef: RefObject<boolean>","router: AppRouterInstance","searchParams: ReadonlyURLSearchParams","code: string | null","state: string | null","result: {error?: string; redirectUrl?: string; success: boolean}","result: any","contextValue: ThunderIDContextProps","reactContextValue: ReactThunderIDContextProps","fetchManagementFromServer","ThunderIDContext","ReactThunderIDContext","fetchFlowMetaFromServer"],"sources":["../../../../src/client/contexts/ThunderID/ThunderIDProvider.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {\n AttributeSchema,\n EmbeddedFlowExecuteRequestConfig,\n FlowMetadataResponse,\n generateFlattenedUserProfile,\n UpdateMeProfileConfig,\n User,\n UserProfile,\n ThunderIDRuntimeError,\n getVendorPrefix,\n} from '@thunderid/node';\nimport {\n I18nProvider,\n FlowMetaProvider,\n FlowProvider,\n UserProvider,\n ThemeProvider,\n ThunderIDContext as ReactThunderIDContext,\n ThunderIDContextProps as ReactThunderIDContextProps,\n ThunderIDProviderProps,\n} from '@thunderid/react';\nimport {ReadonlyURLSearchParams} from 'next/dist/client/components/navigation.react-server';\nimport {AppRouterInstance} from 'next/dist/shared/lib/app-router-context.shared-runtime';\nimport {useRouter, useSearchParams} from 'next/navigation';\nimport {FC, PropsWithChildren, RefObject, useEffect, useMemo, useRef, useState} from 'react';\nimport ThunderIDContext, {ThunderIDContextProps} from './ThunderIDContext';\nimport {RefreshResult} from '../../../server/actions/refreshToken';\nimport logger from '../../../utils/logger';\nimport fetchFlowMetaFromServer from '../../fetchFlowMetaFromServer';\nimport fetchManagementFromServer from '../../fetchManagementFromServer';\n\n/**\n * Props interface of {@link ThunderIDClientProvider}\n */\nexport type ThunderIDClientProviderProps = Partial<Omit<ThunderIDProviderProps, 'baseUrl' | 'clientId'>> &\n Pick<ThunderIDProviderProps, 'baseUrl' | 'clientId'> & {\n applicationId: ThunderIDContextProps['applicationId'];\n clearSession: () => Promise<void>;\n handleOAuthCallback: (\n code: string,\n state: string,\n ) => Promise<{error?: string; redirectUrl?: string; success: boolean}>;\n /**\n * Flow metadata fetched server-side ahead of time, seeding `FlowMetaProvider` so it can skip\n * its own initial client-side fetch (avoiding a flash of untranslated i18n keys).\n */\n initialMeta?: FlowMetadataResponse | null;\n isSignedIn: boolean;\n organizationHandle: ThunderIDContextProps['organizationHandle'];\n refreshToken: () => Promise<RefreshResult>;\n signIn: ThunderIDContextProps['signIn'];\n signOut: ThunderIDContextProps['signOut'];\n signUp: ThunderIDContextProps['signUp'];\n updateProfile: (\n requestConfig: UpdateMeProfileConfig,\n sessionId?: string,\n ) => Promise<{data: {user: User}; error: string; success: boolean}>;\n user: User | null;\n userProfile: UserProfile;\n userSchema?: Record<string, AttributeSchema> | null;\n };\n\nconst ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>> = ({\n baseUrl,\n children,\n endpoints,\n signIn,\n clearSession,\n refreshToken,\n signOut,\n signUp,\n handleOAuthCallback,\n preferences,\n isSignedIn,\n signInUrl,\n signUpUrl,\n user: _user,\n userProfile: _userProfile,\n userSchema: _userSchema = null,\n updateProfile,\n applicationId,\n organizationHandle,\n scopes,\n vendor,\n initialMeta = null,\n}: PropsWithChildren<ThunderIDClientProviderProps>) => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const router: AppRouterInstance = useRouter();\n const searchParams: ReadonlyURLSearchParams = useSearchParams();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [user, setUser] = useState<User | null>(_user);\n const [userProfile, setUserProfile] = useState<UserProfile>(_userProfile);\n const [userSchema, setUserSchema] = useState<Record<string, AttributeSchema> | null>(_userSchema);\n\n useEffect(() => {\n setUserProfile(_userProfile);\n }, [_userProfile]);\n\n useEffect(() => {\n setUserSchema(_userSchema);\n }, [_userSchema]);\n\n useEffect(() => {\n setUser(_user);\n }, [_user]);\n\n // Handle OAuth callback automatically\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n // Don't handle callback if already signed in\n if (isSignedIn) return;\n\n (async (): Promise<void> => {\n try {\n const code: string | null = searchParams.get('code');\n const state: string | null = searchParams.get('state');\n const error: string | null = searchParams.get('error');\n\n // Check for OAuth errors first\n if (error) {\n logger.error('[ThunderIDClientProvider] An error was received for the initiated sign-in request.');\n\n return;\n }\n\n // Handle OAuth callback if code and state are present\n if (code && state) {\n setIsLoading(true);\n\n const result: {error?: string; redirectUrl?: string; success: boolean} = await handleOAuthCallback(\n code,\n state,\n );\n\n if (result.success) {\n // Redirect to the success URL\n if (result.redirectUrl) {\n router.push(result.redirectUrl);\n } else {\n // Refresh the page to update authentication state\n window.location.reload();\n }\n } else {\n logger.error(\n `[ThunderIDClientProvider] An error occurred while signing in: ${result.error || 'Authentication failed'}`,\n );\n }\n }\n } catch (error) {\n logger.error('[ThunderIDClientProvider] Failed to handle OAuth callback:', error);\n }\n })();\n }, []);\n\n useEffect(() => {\n // Set loading to false when server has resolved authentication state\n setIsLoading(false);\n }, [isSignedIn, user]);\n\n const handleSignIn = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signIn) {\n throw new ThunderIDRuntimeError(\n '`signIn` function is not available.',\n 'ThunderIDClientProvider-handleSignIn-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signIn(payload, request);\n\n // Redirect based flow URL is sent as `signInUrl` in the response.\n // Use window.location.href instead of router.push() — the OAuth authorization\n // endpoint is on an external server, and router.push() would send RSC fetch\n // headers that the identity provider doesn't understand, causing a CORS error.\n if (result?.data?.signInUrl) {\n window.location.href = result.data.signInUrl;\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignInUrl` in the response.\n if (result?.data?.afterSignInUrl) {\n router.push(result.data.afterSignInUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignUp = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signUp) {\n throw new ThunderIDRuntimeError(\n '`signUp` function is not available.',\n 'ThunderIDClientProvider-handleSignUp-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signUp(payload, request);\n\n // Redirect based flow URL is sent as `signUpUrl` in the response.\n if (result?.data?.signUpUrl) {\n router.push(result.data.signUpUrl);\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignUpUrl` in the response.\n if (result?.data?.afterSignUpUrl) {\n router.push(result.data.afterSignUpUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignOut = async (): Promise<any> => {\n logger.debug('[ThunderIDClientProvider][handleSignOut] `handleSignOut` called.');\n\n try {\n const result: any = await signOut();\n\n logger.debug('[ThunderIDClientProvider][handleSignOut] Sign out result:', result);\n\n if (result?.data?.afterSignOutUrl) {\n router.push(result.data.afterSignOutUrl);\n\n return {location: result.data.afterSignOutUrl, redirected: true};\n }\n\n if (result?.error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error result was returned during signing the user out with a button click:',\n result.error,\n );\n }\n\n return result?.data ?? result;\n } catch (error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error occurred during signing the user out with a button click:',\n error,\n );\n\n return undefined;\n }\n };\n\n const contextValue: ThunderIDContextProps = useMemo(\n () => ({\n applicationId,\n baseUrl,\n clearSession,\n isLoading,\n isSignedIn,\n organizationHandle,\n preferences,\n refreshToken,\n scopes,\n signIn: handleSignIn,\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n user,\n }),\n [\n baseUrl,\n user,\n isSignedIn,\n isLoading,\n signInUrl,\n signUpUrl,\n applicationId,\n organizationHandle,\n scopes,\n preferences,\n ],\n );\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile) => ({\n ...prev,\n flattenedProfile: generateFlattenedUserProfile(payload),\n profile: payload,\n }));\n };\n\n // Bridge into @thunderid/react's own ThunderIDContext. Internal react components rendered by\n // BaseSignIn/BaseSignUp — most notably FlowMetaProvider, which fetches `/flow/meta` and injects\n // its i18n bundle — call react's `useThunderID()` directly. Without this bridge they'd only see\n // react's context default (applicationId/baseUrl undefined, isInitialized false), so the meta\n // fetch would never fire and flow labels would render as untranslated i18n keys. Fields with no\n // nextjs equivalent (token/http helpers meant for direct browser API calls) are stubbed out,\n // since nextjs routes those operations through server actions instead.\n const unsupported = (name: string): (() => Promise<never>) => {\n return () =>\n Promise.reject(\n new ThunderIDRuntimeError(\n `\\`${name}\\` is not supported in @thunderid/nextjs.`,\n `ThunderIDClientProvider-${name}-NotSupportedError-001`,\n 'nextjs',\n ),\n );\n };\n\n const reactContextValue: ReactThunderIDContextProps = useMemo(\n () => ({\n afterSignInUrl: undefined,\n applicationId,\n baseUrl,\n clearSession,\n clientId: undefined,\n discovery: {wellKnown: null},\n // Only the management collection overrides arrive here, so the admin hooks build the URLs the\n // management server action accepts.\n endpoints,\n exchangeToken: unsupported('exchangeToken'),\n getAccessToken: unsupported('getAccessToken'),\n getDecodedIdToken: unsupported('getDecodedIdToken'),\n getIdToken: unsupported('getIdToken'),\n getStorageManager: () => Promise.resolve(null),\n http: {\n // The admin components and hooks send management requests through a server action that adds\n // the server-held access token, so the token never reaches the browser.\n fetcher: fetchManagementFromServer,\n request: unsupported('http.request'),\n requestAll: unsupported('http.requestAll'),\n },\n instanceId: 0,\n isInitialized: !isLoading,\n isLoading,\n isMetaLoading: false,\n isSignedIn,\n meta: initialMeta ?? null,\n organizationHandle,\n reInitialize: unsupported('reInitialize'),\n recover: unsupported('recover'),\n resolveFlowTemplateLiterals: (text: string | undefined): string => text ?? '',\n scopes,\n signIn: handleSignIn,\n signInSilently: unsupported('signInSilently'),\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n user,\n userSchema,\n vendor: getVendorPrefix(vendor),\n }),\n [\n applicationId,\n baseUrl,\n clearSession,\n endpoints,\n isLoading,\n isSignedIn,\n organizationHandle,\n scopes,\n signInUrl,\n signUpUrl,\n user,\n userSchema,\n initialMeta,\n vendor,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={contextValue}>\n <ReactThunderIDContext.Provider value={reactContextValue}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider\n enabled={preferences?.resolveFromMeta !== false}\n initialMeta={initialMeta}\n fetchMeta={fetchFlowMetaFromServer}\n >\n <ThemeProvider theme={preferences?.theme?.overrides} mode={preferences?.theme?.mode}>\n <FlowProvider>\n <UserProvider\n profile={userProfile}\n userSchema={userSchema}\n onUpdateProfile={handleProfileUpdate}\n updateProfile={updateProfile}\n >\n {children}\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ReactThunderIDContext.Provider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDClientProvider;\n"],"mappings":";;;;;;;;;;;;;;AAmEA,MAAMA,2BAAgF,EACpF,SACA,UACA,WACA,QACA,cACA,cACA,SACA,QACA,qBACA,aACA,YACA,WACA,WACA,MAAM,OACN,aAAa,cACb,YAAY,cAAc,MAC1B,eACA,eACA,oBACA,QACA,QACA,cAAc,WACuC;CACrD,MAAMC,mBAAuC,OAAO,MAAM;CAC1D,MAAMC,SAA4B,WAAW;CAC7C,MAAMC,eAAwC,iBAAiB;CAC/D,MAAM,CAAC,WAAW,gBAAgB,SAAkB,KAAK;CACzD,MAAM,CAAC,MAAM,WAAW,SAAsB,MAAM;CACpD,MAAM,CAAC,aAAa,kBAAkB,SAAsB,aAAa;CACzE,MAAM,CAAC,YAAY,iBAAiB,SAAiD,YAAY;AAEjG,iBAAgB;AACd,iBAAe,aAAa;IAC3B,CAAC,aAAa,CAAC;AAElB,iBAAgB;AACd,gBAAc,YAAY;IACzB,CAAC,YAAY,CAAC;AAEjB,iBAAgB;AACd,UAAQ,MAAM;IACb,CAAC,MAAM,CAAC;AAGX,iBAAgB;AAOd,MAAI,iBAAiB,QACnB;AAGF,mBAAiB,UAAU;AAG3B,MAAI,WAAY;AAEhB,GAAC,YAA2B;AAC1B,OAAI;IACF,MAAMC,OAAsB,aAAa,IAAI,OAAO;IACpD,MAAMC,QAAuB,aAAa,IAAI,QAAQ;AAItD,QAH6B,aAAa,IAAI,QAAQ,EAG3C;AACT,oBAAO,MAAM,qFAAqF;AAElG;;AAIF,QAAI,QAAQ,OAAO;AACjB,kBAAa,KAAK;KAElB,MAAMC,SAAmE,MAAM,oBAC7E,MACA,MACD;AAED,SAAI,OAAO,QAET,KAAI,OAAO,YACT,QAAO,KAAK,OAAO,YAAY;SAG/B,QAAO,SAAS,QAAQ;SAG1B,gBAAO,MACL,iEAAiE,OAAO,SAAS,0BAClF;;YAGE,OAAO;AACd,mBAAO,MAAM,8DAA8D,MAAM;;MAEjF;IACH,EAAE,CAAC;AAEN,iBAAgB;AAEd,eAAa,MAAM;IAClB,CAAC,YAAY,KAAK,CAAC;CAEtB,MAAM,eAAe,OAAO,SAAc,YAA4D;AACpG,MAAI,CAAC,OACH,OAAM,IAAI,sBACR,uCACA,yDACA,SACD;EAGH,MAAMC,SAAc,MAAM,OAAO,SAAS,QAAQ;AAMlD,MAAI,QAAQ,MAAM,WAAW;AAC3B,UAAO,SAAS,OAAO,OAAO,KAAK;AAEnC;;AAIF,MAAI,QAAQ,MAAM,gBAAgB;AAChC,UAAO,KAAK,OAAO,KAAK,eAAe;AAEvC;;AAGF,MAAI,QAAQ,MACV,OAAM,IAAI,MAAM,OAAO,MAAM;AAG/B,SAAO,QAAQ,QAAQ;;CAGzB,MAAM,eAAe,OAAO,SAAc,YAA4D;AACpG,MAAI,CAAC,OACH,OAAM,IAAI,sBACR,uCACA,yDACA,SACD;EAGH,MAAMA,SAAc,MAAM,OAAO,SAAS,QAAQ;AAGlD,MAAI,QAAQ,MAAM,WAAW;AAC3B,UAAO,KAAK,OAAO,KAAK,UAAU;AAElC;;AAIF,MAAI,QAAQ,MAAM,gBAAgB;AAChC,UAAO,KAAK,OAAO,KAAK,eAAe;AAEvC;;AAGF,MAAI,QAAQ,MACV,OAAM,IAAI,MAAM,OAAO,MAAM;AAG/B,SAAO,QAAQ,QAAQ;;CAGzB,MAAM,gBAAgB,YAA0B;AAC9C,iBAAO,MAAM,mEAAmE;AAEhF,MAAI;GACF,MAAMA,SAAc,MAAM,SAAS;AAEnC,kBAAO,MAAM,6DAA6D,OAAO;AAEjF,OAAI,QAAQ,MAAM,iBAAiB;AACjC,WAAO,KAAK,OAAO,KAAK,gBAAgB;AAExC,WAAO;KAAC,UAAU,OAAO,KAAK;KAAiB,YAAY;KAAK;;AAGlE,OAAI,QAAQ,MACV,gBAAO,MACL,uHACA,OAAO,MACR;AAGH,UAAO,QAAQ,QAAQ;WAChB,OAAO;AACd,kBAAO,MACL,4GACA,MACD;AAED;;;CAIJ,MAAMC,eAAsC,eACnC;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA,SAAS;EACT,QAAQ;EACR;EACA;EACD,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,uBAAuB,YAAwB;AACnD,UAAQ,QAAQ;AAChB,kBAAgB,UAAuB;GACrC,GAAG;GACH,kBAAkB,6BAA6B,QAAQ;GACvD,SAAS;GACV,EAAE;;CAUL,MAAM,eAAe,SAAyC;AAC5D,eACE,QAAQ,OACN,IAAI,sBACF,KAAK,KAAK,4CACV,2BAA2B,KAAK,yBAChC,SACD,CACF;;CAGL,MAAMC,oBAAgD,eAC7C;EACL,gBAAgB;EAChB;EACA;EACA;EACA,UAAU;EACV,WAAW,EAAC,WAAW,MAAK;EAG5B;EACA,eAAe,YAAY,gBAAgB;EAC3C,gBAAgB,YAAY,iBAAiB;EAC7C,mBAAmB,YAAY,oBAAoB;EACnD,YAAY,YAAY,aAAa;EACrC,yBAAyB,QAAQ,QAAQ,KAAK;EAC9C,MAAM;GAGJ,SAASC;GACT,SAAS,YAAY,eAAe;GACpC,YAAY,YAAY,kBAAkB;GAC3C;EACD,YAAY;EACZ,eAAe,CAAC;EAChB;EACA,eAAe;EACf;EACA,MAAM,eAAe;EACrB;EACA,cAAc,YAAY,eAAe;EACzC,SAAS,YAAY,UAAU;EAC/B,8BAA8B,SAAqC,QAAQ;EAC3E;EACA,QAAQ;EACR,gBAAgB,YAAY,iBAAiB;EAC7C;EACA,SAAS;EACT,QAAQ;EACR;EACA;EACA;EACA,QAAQ,gBAAgB,OAAO;EAChC,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QACE,oBAACC,yBAAiB;EAAS,OAAO;YAChC,oBAACC,iBAAsB;GAAS,OAAO;aACrC,oBAAC;IAAa,aAAa,aAAa;cACtC,oBAAC;KACC,SAAS,aAAa,oBAAoB;KAC7B;KACb,WAAWC;eAEX,oBAAC;MAAc,OAAO,aAAa,OAAO;MAAW,MAAM,aAAa,OAAO;gBAC7E,oBAAC,0BACC,oBAAC;OACC,SAAS;OACG;OACZ,iBAAiB;OACF;OAEd;QACY,GACF;OACD;MACC;KACN;IACgB;GACP;;AAIhC,gCAAe"}
@@ -1,5 +1,5 @@
1
1
  import loadPageFromAction_default from "./loadPageFromAction.js";
2
- import getAuthFlowsAction_default from "../server/actions/getAuthFlowsAction.js";
2
+ import getAuthFlowsAction_default from "../server/actions/auth/getAuthFlowsAction.js";
3
3
 
4
4
  //#region src/client/fetchAuthFlowsFromServer.ts
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fetchAuthFlowsFromServer.js","names":["fetchAuthFlowsFromServer: FetchAuthFlows","loadPageFromAction","getAuthFlowsAction"],"sources":["../../src/client/fetchAuthFlowsFromServer.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {FetchAuthFlows, SelectPage, SelectPageRequest} from '@thunderid/node';\nimport loadPageFromAction from './loadPageFromAction';\nimport getAuthFlowsAction from '../server/actions/getAuthFlowsAction';\n\n/**\n * The loader behind `AuthFlowSelect`: loads authentication flows through {@link getAuthFlowsAction} with the\n * signed-in user's server-held session. Requires an existing session. `request.signal` is not forwarded because\n * an `AbortSignal` cannot cross the server action boundary.\n */\nconst fetchAuthFlowsFromServer: FetchAuthFlows = async ({limit, offset}: SelectPageRequest): Promise<SelectPage> =>\n loadPageFromAction(await getAuthFlowsAction({limit, offset}), 'getAuthFlowsAction-Error-001');\n\nexport default fetchAuthFlowsFromServer;\n"],"mappings":";;;;;;;;;AAYA,MAAMA,2BAA2C,OAAO,EAAC,OAAO,aAC9DC,2BAAmB,MAAMC,2BAAmB;CAAC;CAAO;CAAO,CAAC,EAAE,+BAA+B;AAE/F,uCAAe"}
1
+ {"version":3,"file":"fetchAuthFlowsFromServer.js","names":["fetchAuthFlowsFromServer: FetchAuthFlows","loadPageFromAction","getAuthFlowsAction"],"sources":["../../src/client/fetchAuthFlowsFromServer.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {FetchAuthFlows, SelectPage, SelectPageRequest} from '@thunderid/node';\nimport loadPageFromAction from './loadPageFromAction';\nimport getAuthFlowsAction from '../server/actions/auth/getAuthFlowsAction';\n\n/**\n * The loader behind `AuthFlowSelect`: loads authentication flows through {@link getAuthFlowsAction} with the\n * signed-in user's server-held session. Requires an existing session. `request.signal` is not forwarded because\n * an `AbortSignal` cannot cross the server action boundary.\n */\nconst fetchAuthFlowsFromServer: FetchAuthFlows = async ({limit, offset}: SelectPageRequest): Promise<SelectPage> =>\n loadPageFromAction(await getAuthFlowsAction({limit, offset}), 'getAuthFlowsAction-Error-001');\n\nexport default fetchAuthFlowsFromServer;\n"],"mappings":";;;;;;;;;AAYA,MAAMA,2BAA2C,OAAO,EAAC,OAAO,aAC9DC,2BAAmB,MAAMC,2BAAmB;CAAC;CAAO;CAAO,CAAC,EAAE,+BAA+B;AAE/F,uCAAe"}
@@ -1,4 +1,4 @@
1
- import getFlowMetaAction_default from "../server/actions/getFlowMetaAction.js";
1
+ import getFlowMetaAction_default from "../server/actions/auth/getFlowMetaAction.js";
2
2
  import { ThunderIDAPIError, ThunderIDRuntimeError } from "@thunderid/node";
3
3
 
4
4
  //#region src/client/fetchFlowMetaFromServer.ts
@@ -1 +1 @@
1
- {"version":3,"file":"fetchFlowMetaFromServer.js","names":["result: GetFlowMetaActionResult","getFlowMetaAction"],"sources":["../../src/client/fetchFlowMetaFromServer.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FlowMetadataResponse, ThunderIDAPIError, ThunderIDRuntimeError} from '@thunderid/node';\nimport getFlowMetaAction, {GetFlowMetaActionResult} from '../server/actions/getFlowMetaAction';\n\n/**\n * The `fetchMeta` behind `FlowMetaProvider`: loads flow metadata through {@link getFlowMetaAction} so the browser\n * never calls `baseUrl` directly, and throws the failure the action returned as an SDK error, which\n * `FlowMetaProvider` reports through its `error` state.\n */\nconst fetchFlowMetaFromServer = async (params: {\n applicationId?: string;\n language?: string;\n}): Promise<FlowMetadataResponse> => {\n const result: GetFlowMetaActionResult = await getFlowMetaAction(params);\n\n if (result.success) {\n return result.meta;\n }\n\n if (result.statusCode !== undefined) {\n throw new ThunderIDAPIError(result.message, 'getFlowMetaAction-Error-001', 'nextjs', result.statusCode);\n }\n\n throw new ThunderIDRuntimeError(result.message, 'getFlowMetaAction-Error-001', 'nextjs');\n};\n\nexport default fetchFlowMetaFromServer;\n"],"mappings":";;;;;;;;;AAWA,MAAM,0BAA0B,OAAO,WAGF;CACnC,MAAMA,SAAkC,MAAMC,0BAAkB,OAAO;AAEvE,KAAI,OAAO,QACT,QAAO,OAAO;AAGhB,KAAI,OAAO,eAAe,OACxB,OAAM,IAAI,kBAAkB,OAAO,SAAS,+BAA+B,UAAU,OAAO,WAAW;AAGzG,OAAM,IAAI,sBAAsB,OAAO,SAAS,+BAA+B,SAAS;;AAG1F,sCAAe"}
1
+ {"version":3,"file":"fetchFlowMetaFromServer.js","names":["result: GetFlowMetaActionResult","getFlowMetaAction"],"sources":["../../src/client/fetchFlowMetaFromServer.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FlowMetadataResponse, ThunderIDAPIError, ThunderIDRuntimeError} from '@thunderid/node';\nimport getFlowMetaAction, {GetFlowMetaActionResult} from '../server/actions/auth/getFlowMetaAction';\n\n/**\n * The `fetchMeta` behind `FlowMetaProvider`: loads flow metadata through {@link getFlowMetaAction} so the browser\n * never calls `baseUrl` directly, and throws the failure the action returned as an SDK error, which\n * `FlowMetaProvider` reports through its `error` state.\n */\nconst fetchFlowMetaFromServer = async (params: {\n applicationId?: string;\n language?: string;\n}): Promise<FlowMetadataResponse> => {\n const result: GetFlowMetaActionResult = await getFlowMetaAction(params);\n\n if (result.success) {\n return result.meta;\n }\n\n if (result.statusCode !== undefined) {\n throw new ThunderIDAPIError(result.message, 'getFlowMetaAction-Error-001', 'nextjs', result.statusCode);\n }\n\n throw new ThunderIDRuntimeError(result.message, 'getFlowMetaAction-Error-001', 'nextjs');\n};\n\nexport default fetchFlowMetaFromServer;\n"],"mappings":";;;;;;;;;AAWA,MAAM,0BAA0B,OAAO,WAGF;CACnC,MAAMA,SAAkC,MAAMC,0BAAkB,OAAO;AAEvE,KAAI,OAAO,QACT,QAAO,OAAO;AAGhB,KAAI,OAAO,eAAe,OACxB,OAAM,IAAI,kBAAkB,OAAO,SAAS,+BAA+B,UAAU,OAAO,WAAW;AAGzG,OAAM,IAAI,sBAAsB,OAAO,SAAS,+BAA+B,SAAS;;AAG1F,sCAAe"}
@@ -0,0 +1,14 @@
1
+ import type { ApiFetcher } from '@thunderid/node';
2
+ /**
3
+ * The `http.fetcher` that `ThunderIDProvider` hands to the admin components and hooks of
4
+ * `@thunderid/react`: it sends each management request through {@link managementRequestAction}, which
5
+ * adds the signed-in user's server-held access token, and turns the plain result back into a
6
+ * `Response` so the core API functions can read the status (a 403 stays distinct from a 404).
7
+ *
8
+ * Only the URL, method and body cross to the server. Headers are not forwarded, since the server sets
9
+ * the ones the management API needs, and `signal` is not forwarded because an `AbortSignal` cannot
10
+ * cross the server action boundary.
11
+ */
12
+ declare const fetchManagementFromServer: ApiFetcher;
13
+ export default fetchManagementFromServer;
14
+ //# sourceMappingURL=fetchManagementFromServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchManagementFromServer.d.ts","sourceRoot":"","sources":["../../src/client/fetchManagementFromServer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAKhD;;;;;;;;;GASG;AACH,QAAA,MAAM,yBAAyB,EAAE,UAgBhC,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import managementRequestAction_default from "../server/actions/management/managementRequestAction.js";
2
+
3
+ //#region src/client/fetchManagementFromServer.ts
4
+ /**
5
+ * The `http.fetcher` that `ThunderIDProvider` hands to the admin components and hooks of
6
+ * `@thunderid/react`: it sends each management request through {@link managementRequestAction}, which
7
+ * adds the signed-in user's server-held access token, and turns the plain result back into a
8
+ * `Response` so the core API functions can read the status (a 403 stays distinct from a 404).
9
+ *
10
+ * Only the URL, method and body cross to the server. Headers are not forwarded, since the server sets
11
+ * the ones the management API needs, and `signal` is not forwarded because an `AbortSignal` cannot
12
+ * cross the server action boundary.
13
+ */
14
+ const fetchManagementFromServer = async (url, config) => {
15
+ const { body, status, statusText } = await managementRequestAction_default({
16
+ ...typeof config?.body === "string" ? { body: config.body } : {},
17
+ method: config?.method ?? "GET",
18
+ url
19
+ });
20
+ return {
21
+ json: () => Promise.resolve(body ? JSON.parse(body) : void 0),
22
+ ok: status >= 200 && status < 300,
23
+ status,
24
+ statusText,
25
+ text: () => Promise.resolve(body)
26
+ };
27
+ };
28
+ var fetchManagementFromServer_default = fetchManagementFromServer;
29
+
30
+ //#endregion
31
+ export { fetchManagementFromServer_default as default };
32
+ //# sourceMappingURL=fetchManagementFromServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchManagementFromServer.js","names":["fetchManagementFromServer: ApiFetcher","managementRequestAction"],"sources":["../../src/client/fetchManagementFromServer.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {ApiFetcher} from '@thunderid/node';\nimport managementRequestAction, {\n ManagementRequestActionResult,\n} from '../server/actions/management/managementRequestAction';\n\n/**\n * The `http.fetcher` that `ThunderIDProvider` hands to the admin components and hooks of\n * `@thunderid/react`: it sends each management request through {@link managementRequestAction}, which\n * adds the signed-in user's server-held access token, and turns the plain result back into a\n * `Response` so the core API functions can read the status (a 403 stays distinct from a 404).\n *\n * Only the URL, method and body cross to the server. Headers are not forwarded, since the server sets\n * the ones the management API needs, and `signal` is not forwarded because an `AbortSignal` cannot\n * cross the server action boundary.\n */\nconst fetchManagementFromServer: ApiFetcher = async (url: string, config: RequestInit): Promise<Response> => {\n const result: ManagementRequestActionResult = await managementRequestAction({\n ...(typeof config?.body === 'string' ? {body: config.body} : {}),\n method: config?.method ?? 'GET',\n url,\n });\n\n const {body, status, statusText} = result;\n\n return {\n json: () => Promise.resolve(body ? (JSON.parse(body) as unknown) : undefined),\n ok: status >= 200 && status < 300,\n status,\n statusText,\n text: () => Promise.resolve(body),\n } as Response;\n};\n\nexport default fetchManagementFromServer;\n"],"mappings":";;;;;;;;;;;;;AAkBA,MAAMA,4BAAwC,OAAO,KAAa,WAA2C;CAO3G,MAAM,EAAC,MAAM,QAAQ,eANyB,MAAMC,gCAAwB;EAC1E,GAAI,OAAO,QAAQ,SAAS,WAAW,EAAC,MAAM,OAAO,MAAK,GAAG,EAAE;EAC/D,QAAQ,QAAQ,UAAU;EAC1B;EACD,CAAC;AAIF,QAAO;EACL,YAAY,QAAQ,QAAQ,OAAQ,KAAK,MAAM,KAAK,GAAe,OAAU;EAC7E,IAAI,UAAU,OAAO,SAAS;EAC9B;EACA;EACA,YAAY,QAAQ,QAAQ,KAAK;EAClC;;AAGH,wCAAe"}