@workos-inc/widgets 1.0.1 → 1.1.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 (397) hide show
  1. package/README.md +65 -0
  2. package/dist/cjs/card-list.d.ts +6 -0
  3. package/dist/cjs/card-list.d.ts.map +1 -0
  4. package/dist/cjs/card-list.js +13 -0
  5. package/dist/cjs/card-list.js.map +1 -0
  6. package/dist/cjs/index.d.ts +3 -0
  7. package/dist/cjs/index.d.ts.map +1 -1
  8. package/dist/cjs/index.js +7 -1
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/lib/add-mfa-dialog.d.ts +9 -0
  11. package/dist/cjs/lib/add-mfa-dialog.d.ts.map +1 -0
  12. package/dist/cjs/lib/add-mfa-dialog.js +135 -0
  13. package/dist/cjs/lib/add-mfa-dialog.js.map +1 -0
  14. package/dist/cjs/lib/api/user.d.ts +13 -57
  15. package/dist/cjs/lib/api/user.d.ts.map +1 -1
  16. package/dist/cjs/lib/api/user.js +44 -314
  17. package/dist/cjs/lib/api/user.js.map +1 -1
  18. package/dist/cjs/lib/change-password-dialog.d.ts +8 -0
  19. package/dist/cjs/lib/change-password-dialog.d.ts.map +1 -0
  20. package/dist/cjs/lib/change-password-dialog.js +97 -0
  21. package/dist/cjs/lib/change-password-dialog.js.map +1 -0
  22. package/dist/cjs/lib/copy-button.d.ts +8 -0
  23. package/dist/cjs/lib/copy-button.d.ts.map +1 -0
  24. package/dist/cjs/lib/copy-button.js +63 -0
  25. package/dist/cjs/lib/copy-button.js.map +1 -0
  26. package/dist/cjs/lib/delete-user-dialog.d.ts +2 -2
  27. package/dist/cjs/lib/delete-user-dialog.d.ts.map +1 -1
  28. package/dist/cjs/lib/delete-user-dialog.js +1 -1
  29. package/dist/cjs/lib/delete-user-dialog.js.map +1 -1
  30. package/dist/cjs/lib/edit-user-profile-dialog.d.ts +10 -0
  31. package/dist/cjs/lib/edit-user-profile-dialog.d.ts.map +1 -0
  32. package/dist/cjs/lib/edit-user-profile-dialog.js +85 -0
  33. package/dist/cjs/lib/edit-user-profile-dialog.js.map +1 -0
  34. package/dist/cjs/lib/edit-user-role-dialog.d.ts +12 -0
  35. package/dist/cjs/lib/edit-user-role-dialog.d.ts.map +1 -0
  36. package/dist/cjs/lib/{edit-user-details-dialog.js → edit-user-role-dialog.js} +11 -7
  37. package/dist/cjs/lib/edit-user-role-dialog.js.map +1 -0
  38. package/dist/cjs/lib/elements.d.ts +1 -0
  39. package/dist/cjs/lib/elements.d.ts.map +1 -1
  40. package/dist/cjs/lib/elements.js +10 -4
  41. package/dist/cjs/lib/elements.js.map +1 -1
  42. package/dist/cjs/lib/elevated-access.d.ts +8 -0
  43. package/dist/cjs/lib/elevated-access.d.ts.map +1 -0
  44. package/dist/cjs/lib/elevated-access.js +130 -0
  45. package/dist/cjs/lib/elevated-access.js.map +1 -0
  46. package/dist/cjs/lib/generic-error.d.ts +4 -0
  47. package/dist/cjs/lib/generic-error.d.ts.map +1 -0
  48. package/dist/cjs/lib/generic-error.js +57 -0
  49. package/dist/cjs/lib/generic-error.js.map +1 -0
  50. package/dist/cjs/lib/icon-panel.d.ts +3 -0
  51. package/dist/cjs/lib/icon-panel.d.ts.map +1 -0
  52. package/dist/cjs/lib/icon-panel.js +16 -0
  53. package/dist/cjs/lib/icon-panel.js.map +1 -0
  54. package/dist/cjs/lib/icons.d.ts +3 -0
  55. package/dist/cjs/lib/icons.d.ts.map +1 -0
  56. package/dist/cjs/lib/icons.js +8 -0
  57. package/dist/cjs/lib/icons.js.map +1 -0
  58. package/dist/cjs/lib/invite-user-dialog.d.ts.map +1 -1
  59. package/dist/cjs/lib/invite-user-dialog.js +7 -5
  60. package/dist/cjs/lib/invite-user-dialog.js.map +1 -1
  61. package/dist/cjs/lib/logout-all-sessions-dialog.d.ts +9 -0
  62. package/dist/cjs/lib/logout-all-sessions-dialog.d.ts.map +1 -0
  63. package/dist/cjs/lib/logout-all-sessions-dialog.js +52 -0
  64. package/dist/cjs/lib/logout-all-sessions-dialog.js.map +1 -0
  65. package/dist/cjs/lib/logout-dialog.d.ts +10 -0
  66. package/dist/cjs/lib/logout-dialog.d.ts.map +1 -0
  67. package/dist/cjs/lib/logout-dialog.js +58 -0
  68. package/dist/cjs/lib/logout-dialog.js.map +1 -0
  69. package/dist/cjs/lib/marker.d.ts +14 -0
  70. package/dist/cjs/lib/marker.d.ts.map +1 -0
  71. package/dist/cjs/lib/marker.js +38 -0
  72. package/dist/cjs/lib/marker.js.map +1 -0
  73. package/dist/cjs/lib/oauth-icons.d.ts +4 -0
  74. package/dist/cjs/lib/oauth-icons.d.ts.map +1 -0
  75. package/dist/cjs/lib/oauth-icons.js +67 -0
  76. package/dist/cjs/lib/oauth-icons.js.map +1 -0
  77. package/dist/cjs/lib/organization-switcher.d.ts +24 -0
  78. package/dist/cjs/lib/organization-switcher.d.ts.map +1 -0
  79. package/dist/cjs/lib/organization-switcher.js +35 -0
  80. package/dist/cjs/lib/organization-switcher.js.map +1 -0
  81. package/dist/cjs/lib/otp-input.d.ts +20 -0
  82. package/dist/cjs/lib/otp-input.d.ts.map +1 -0
  83. package/dist/cjs/lib/otp-input.js +174 -0
  84. package/dist/cjs/lib/otp-input.js.map +1 -0
  85. package/dist/cjs/lib/resend-invite-dialog.d.ts +2 -2
  86. package/dist/cjs/lib/resend-invite-dialog.d.ts.map +1 -1
  87. package/dist/cjs/lib/resend-invite-dialog.js +1 -1
  88. package/dist/cjs/lib/resend-invite-dialog.js.map +1 -1
  89. package/dist/cjs/lib/reset-mfa-dialog.d.ts +9 -0
  90. package/dist/cjs/lib/reset-mfa-dialog.d.ts.map +1 -0
  91. package/dist/cjs/lib/reset-mfa-dialog.js +60 -0
  92. package/dist/cjs/lib/reset-mfa-dialog.js.map +1 -0
  93. package/dist/cjs/lib/revoke-invite-dialog.d.ts +2 -2
  94. package/dist/cjs/lib/revoke-invite-dialog.d.ts.map +1 -1
  95. package/dist/cjs/lib/revoke-invite-dialog.js +1 -1
  96. package/dist/cjs/lib/revoke-invite-dialog.js.map +1 -1
  97. package/dist/cjs/lib/save-button.d.ts +11 -0
  98. package/dist/cjs/lib/save-button.d.ts.map +1 -0
  99. package/dist/cjs/lib/save-button.js +47 -0
  100. package/dist/cjs/lib/save-button.js.map +1 -0
  101. package/dist/cjs/lib/set-password-dialog.d.ts +8 -0
  102. package/dist/cjs/lib/set-password-dialog.d.ts.map +1 -0
  103. package/dist/cjs/lib/set-password-dialog.js +80 -0
  104. package/dist/cjs/lib/set-password-dialog.js.map +1 -0
  105. package/dist/cjs/lib/use-dialog-close.d.ts +2 -0
  106. package/dist/cjs/lib/use-dialog-close.d.ts.map +1 -0
  107. package/dist/cjs/lib/use-dialog-close.js +43 -0
  108. package/dist/cjs/lib/use-dialog-close.js.map +1 -0
  109. package/dist/cjs/lib/use-security-settings.d.ts +11 -0
  110. package/dist/cjs/lib/use-security-settings.d.ts.map +1 -0
  111. package/dist/cjs/lib/use-security-settings.js +39 -0
  112. package/dist/cjs/lib/use-security-settings.js.map +1 -0
  113. package/dist/cjs/lib/user-actions-dropdown.d.ts +2 -2
  114. package/dist/cjs/lib/user-actions-dropdown.d.ts.map +1 -1
  115. package/dist/cjs/lib/user-actions-dropdown.js +8 -4
  116. package/dist/cjs/lib/user-actions-dropdown.js.map +1 -1
  117. package/dist/cjs/lib/user-profile.d.ts +11 -0
  118. package/dist/cjs/lib/user-profile.d.ts.map +1 -0
  119. package/dist/cjs/lib/user-profile.js +36 -0
  120. package/dist/cjs/lib/user-profile.js.map +1 -0
  121. package/dist/cjs/lib/user-security.d.ts +11 -0
  122. package/dist/cjs/lib/user-security.d.ts.map +1 -0
  123. package/dist/cjs/lib/user-security.js +64 -0
  124. package/dist/cjs/lib/user-security.js.map +1 -0
  125. package/dist/cjs/lib/user-sessions.d.ts +12 -0
  126. package/dist/cjs/lib/user-sessions.d.ts.map +1 -0
  127. package/dist/cjs/lib/user-sessions.js +72 -0
  128. package/dist/cjs/lib/user-sessions.js.map +1 -0
  129. package/dist/cjs/lib/users-filter.d.ts +2 -2
  130. package/dist/cjs/lib/users-filter.d.ts.map +1 -1
  131. package/dist/cjs/lib/users-filter.js.map +1 -1
  132. package/dist/cjs/lib/users-management-context.d.ts +0 -9
  133. package/dist/cjs/lib/users-management-context.d.ts.map +1 -1
  134. package/dist/cjs/lib/users-management-context.js +13 -26
  135. package/dist/cjs/lib/users-management-context.js.map +1 -1
  136. package/dist/cjs/lib/users-management-state.d.ts +3 -3
  137. package/dist/cjs/lib/users-management-state.d.ts.map +1 -1
  138. package/dist/cjs/lib/users-management-state.js.map +1 -1
  139. package/dist/cjs/lib/users-management.d.ts +3 -4
  140. package/dist/cjs/lib/users-management.d.ts.map +1 -1
  141. package/dist/cjs/lib/users-management.js +8 -26
  142. package/dist/cjs/lib/users-management.js.map +1 -1
  143. package/dist/cjs/lib/utils.d.ts +10 -2
  144. package/dist/cjs/lib/utils.d.ts.map +1 -1
  145. package/dist/cjs/lib/utils.js +18 -0
  146. package/dist/cjs/lib/utils.js.map +1 -1
  147. package/dist/cjs/organization-switcher.client.d.ts +8 -0
  148. package/dist/cjs/organization-switcher.client.d.ts.map +1 -0
  149. package/dist/cjs/organization-switcher.client.js +37 -0
  150. package/dist/cjs/organization-switcher.client.js.map +1 -0
  151. package/dist/cjs/user-profile.client.d.ts +7 -0
  152. package/dist/cjs/user-profile.client.d.ts.map +1 -0
  153. package/dist/cjs/user-profile.client.js +31 -0
  154. package/dist/cjs/user-profile.client.js.map +1 -0
  155. package/dist/cjs/user-security.client.d.ts +7 -0
  156. package/dist/cjs/user-security.client.d.ts.map +1 -0
  157. package/dist/cjs/user-security.client.js +27 -0
  158. package/dist/cjs/user-security.client.js.map +1 -0
  159. package/dist/cjs/user-sessions.client.d.ts +12 -0
  160. package/dist/cjs/user-sessions.client.d.ts.map +1 -0
  161. package/dist/cjs/user-sessions.client.js +48 -0
  162. package/dist/cjs/user-sessions.client.js.map +1 -0
  163. package/dist/cjs/users-management.client.d.ts +2 -1
  164. package/dist/cjs/users-management.client.d.ts.map +1 -1
  165. package/dist/cjs/users-management.client.js +12 -43
  166. package/dist/cjs/users-management.client.js.map +1 -1
  167. package/dist/esm/card-list.d.ts +6 -0
  168. package/dist/esm/card-list.d.ts.map +1 -0
  169. package/dist/esm/card-list.js +9 -0
  170. package/dist/esm/card-list.js.map +1 -0
  171. package/dist/esm/index.d.ts +3 -0
  172. package/dist/esm/index.d.ts.map +1 -1
  173. package/dist/esm/index.js +3 -0
  174. package/dist/esm/index.js.map +1 -1
  175. package/dist/esm/lib/add-mfa-dialog.d.ts +9 -0
  176. package/dist/esm/lib/add-mfa-dialog.d.ts.map +1 -0
  177. package/dist/esm/lib/add-mfa-dialog.js +109 -0
  178. package/dist/esm/lib/add-mfa-dialog.js.map +1 -0
  179. package/dist/esm/lib/api/user.d.ts +13 -57
  180. package/dist/esm/lib/api/user.d.ts.map +1 -1
  181. package/dist/esm/lib/api/user.js +44 -313
  182. package/dist/esm/lib/api/user.js.map +1 -1
  183. package/dist/esm/lib/change-password-dialog.d.ts +8 -0
  184. package/dist/esm/lib/change-password-dialog.d.ts.map +1 -0
  185. package/dist/esm/lib/change-password-dialog.js +71 -0
  186. package/dist/esm/lib/change-password-dialog.js.map +1 -0
  187. package/dist/esm/lib/copy-button.d.ts +8 -0
  188. package/dist/esm/lib/copy-button.d.ts.map +1 -0
  189. package/dist/esm/lib/copy-button.js +37 -0
  190. package/dist/esm/lib/copy-button.js.map +1 -0
  191. package/dist/esm/lib/delete-user-dialog.d.ts +2 -2
  192. package/dist/esm/lib/delete-user-dialog.d.ts.map +1 -1
  193. package/dist/esm/lib/delete-user-dialog.js +1 -1
  194. package/dist/esm/lib/delete-user-dialog.js.map +1 -1
  195. package/dist/esm/lib/edit-user-profile-dialog.d.ts +10 -0
  196. package/dist/esm/lib/edit-user-profile-dialog.d.ts.map +1 -0
  197. package/dist/esm/lib/edit-user-profile-dialog.js +59 -0
  198. package/dist/esm/lib/edit-user-profile-dialog.js.map +1 -0
  199. package/dist/esm/lib/edit-user-role-dialog.d.ts +12 -0
  200. package/dist/esm/lib/edit-user-role-dialog.d.ts.map +1 -0
  201. package/dist/esm/lib/{edit-user-details-dialog.js → edit-user-role-dialog.js} +10 -6
  202. package/dist/esm/lib/edit-user-role-dialog.js.map +1 -0
  203. package/dist/esm/lib/elements.d.ts +1 -0
  204. package/dist/esm/lib/elements.d.ts.map +1 -1
  205. package/dist/esm/lib/elements.js +9 -3
  206. package/dist/esm/lib/elements.js.map +1 -1
  207. package/dist/esm/lib/elevated-access.d.ts +8 -0
  208. package/dist/esm/lib/elevated-access.d.ts.map +1 -0
  209. package/dist/esm/lib/elevated-access.js +104 -0
  210. package/dist/esm/lib/elevated-access.js.map +1 -0
  211. package/dist/esm/lib/generic-error.d.ts +4 -0
  212. package/dist/esm/lib/generic-error.d.ts.map +1 -0
  213. package/dist/esm/lib/generic-error.js +31 -0
  214. package/dist/esm/lib/generic-error.js.map +1 -0
  215. package/dist/esm/lib/icon-panel.d.ts +3 -0
  216. package/dist/esm/lib/icon-panel.d.ts.map +1 -0
  217. package/dist/esm/lib/icon-panel.js +13 -0
  218. package/dist/esm/lib/icon-panel.js.map +1 -0
  219. package/dist/esm/lib/icons.d.ts +3 -0
  220. package/dist/esm/lib/icons.d.ts.map +1 -0
  221. package/dist/esm/lib/icons.js +5 -0
  222. package/dist/esm/lib/icons.js.map +1 -0
  223. package/dist/esm/lib/invite-user-dialog.d.ts.map +1 -1
  224. package/dist/esm/lib/invite-user-dialog.js +7 -5
  225. package/dist/esm/lib/invite-user-dialog.js.map +1 -1
  226. package/dist/esm/lib/logout-all-sessions-dialog.d.ts +9 -0
  227. package/dist/esm/lib/logout-all-sessions-dialog.d.ts.map +1 -0
  228. package/dist/esm/lib/logout-all-sessions-dialog.js +26 -0
  229. package/dist/esm/lib/logout-all-sessions-dialog.js.map +1 -0
  230. package/dist/esm/lib/logout-dialog.d.ts +10 -0
  231. package/dist/esm/lib/logout-dialog.d.ts.map +1 -0
  232. package/dist/esm/lib/logout-dialog.js +32 -0
  233. package/dist/esm/lib/logout-dialog.js.map +1 -0
  234. package/dist/esm/lib/marker.d.ts +14 -0
  235. package/dist/esm/lib/marker.d.ts.map +1 -0
  236. package/dist/esm/lib/marker.js +9 -0
  237. package/dist/esm/lib/marker.js.map +1 -0
  238. package/dist/esm/lib/oauth-icons.d.ts +4 -0
  239. package/dist/esm/lib/oauth-icons.d.ts.map +1 -0
  240. package/dist/esm/lib/oauth-icons.js +39 -0
  241. package/dist/esm/lib/oauth-icons.js.map +1 -0
  242. package/dist/esm/lib/organization-switcher.d.ts +24 -0
  243. package/dist/esm/lib/organization-switcher.d.ts.map +1 -0
  244. package/dist/esm/lib/organization-switcher.js +29 -0
  245. package/dist/esm/lib/organization-switcher.js.map +1 -0
  246. package/dist/esm/lib/otp-input.d.ts +20 -0
  247. package/dist/esm/lib/otp-input.d.ts.map +1 -0
  248. package/dist/esm/lib/otp-input.js +148 -0
  249. package/dist/esm/lib/otp-input.js.map +1 -0
  250. package/dist/esm/lib/resend-invite-dialog.d.ts +2 -2
  251. package/dist/esm/lib/resend-invite-dialog.d.ts.map +1 -1
  252. package/dist/esm/lib/resend-invite-dialog.js +1 -1
  253. package/dist/esm/lib/resend-invite-dialog.js.map +1 -1
  254. package/dist/esm/lib/reset-mfa-dialog.d.ts +9 -0
  255. package/dist/esm/lib/reset-mfa-dialog.d.ts.map +1 -0
  256. package/dist/esm/lib/reset-mfa-dialog.js +34 -0
  257. package/dist/esm/lib/reset-mfa-dialog.js.map +1 -0
  258. package/dist/esm/lib/revoke-invite-dialog.d.ts +2 -2
  259. package/dist/esm/lib/revoke-invite-dialog.d.ts.map +1 -1
  260. package/dist/esm/lib/revoke-invite-dialog.js +1 -1
  261. package/dist/esm/lib/revoke-invite-dialog.js.map +1 -1
  262. package/dist/esm/lib/save-button.d.ts +11 -0
  263. package/dist/esm/lib/save-button.d.ts.map +1 -0
  264. package/dist/esm/lib/save-button.js +44 -0
  265. package/dist/esm/lib/save-button.js.map +1 -0
  266. package/dist/esm/lib/set-password-dialog.d.ts +8 -0
  267. package/dist/esm/lib/set-password-dialog.d.ts.map +1 -0
  268. package/dist/esm/lib/set-password-dialog.js +54 -0
  269. package/dist/esm/lib/set-password-dialog.js.map +1 -0
  270. package/dist/esm/lib/use-dialog-close.d.ts +2 -0
  271. package/dist/esm/lib/use-dialog-close.d.ts.map +1 -0
  272. package/dist/esm/lib/use-dialog-close.js +17 -0
  273. package/dist/esm/lib/use-dialog-close.js.map +1 -0
  274. package/dist/esm/lib/use-security-settings.d.ts +11 -0
  275. package/dist/esm/lib/use-security-settings.d.ts.map +1 -0
  276. package/dist/esm/lib/use-security-settings.js +36 -0
  277. package/dist/esm/lib/use-security-settings.js.map +1 -0
  278. package/dist/esm/lib/user-actions-dropdown.d.ts +2 -2
  279. package/dist/esm/lib/user-actions-dropdown.d.ts.map +1 -1
  280. package/dist/esm/lib/user-actions-dropdown.js +8 -4
  281. package/dist/esm/lib/user-actions-dropdown.js.map +1 -1
  282. package/dist/esm/lib/user-profile.d.ts +11 -0
  283. package/dist/esm/lib/user-profile.d.ts.map +1 -0
  284. package/dist/esm/lib/user-profile.js +27 -0
  285. package/dist/esm/lib/user-profile.js.map +1 -0
  286. package/dist/esm/lib/user-security.d.ts +11 -0
  287. package/dist/esm/lib/user-security.d.ts.map +1 -0
  288. package/dist/esm/lib/user-security.js +32 -0
  289. package/dist/esm/lib/user-security.js.map +1 -0
  290. package/dist/esm/lib/user-sessions.d.ts +12 -0
  291. package/dist/esm/lib/user-sessions.d.ts.map +1 -0
  292. package/dist/esm/lib/user-sessions.js +40 -0
  293. package/dist/esm/lib/user-sessions.js.map +1 -0
  294. package/dist/esm/lib/users-filter.d.ts +2 -2
  295. package/dist/esm/lib/users-filter.d.ts.map +1 -1
  296. package/dist/esm/lib/users-filter.js.map +1 -1
  297. package/dist/esm/lib/users-management-context.d.ts +0 -9
  298. package/dist/esm/lib/users-management-context.d.ts.map +1 -1
  299. package/dist/esm/lib/users-management-context.js +13 -25
  300. package/dist/esm/lib/users-management-context.js.map +1 -1
  301. package/dist/esm/lib/users-management-state.d.ts +3 -3
  302. package/dist/esm/lib/users-management-state.d.ts.map +1 -1
  303. package/dist/esm/lib/users-management-state.js.map +1 -1
  304. package/dist/esm/lib/users-management.d.ts +3 -4
  305. package/dist/esm/lib/users-management.d.ts.map +1 -1
  306. package/dist/esm/lib/users-management.js +9 -27
  307. package/dist/esm/lib/users-management.js.map +1 -1
  308. package/dist/esm/lib/users-search.d.ts +1 -1
  309. package/dist/esm/lib/users-search.d.ts.map +1 -1
  310. package/dist/esm/lib/utils.d.ts +10 -2
  311. package/dist/esm/lib/utils.d.ts.map +1 -1
  312. package/dist/esm/lib/utils.js +16 -0
  313. package/dist/esm/lib/utils.js.map +1 -1
  314. package/dist/esm/organization-switcher.client.d.ts +8 -0
  315. package/dist/esm/organization-switcher.client.d.ts.map +1 -0
  316. package/dist/esm/organization-switcher.client.js +33 -0
  317. package/dist/esm/organization-switcher.client.js.map +1 -0
  318. package/dist/esm/user-profile.client.d.ts +7 -0
  319. package/dist/esm/user-profile.client.d.ts.map +1 -0
  320. package/dist/esm/user-profile.client.js +27 -0
  321. package/dist/esm/user-profile.client.js.map +1 -0
  322. package/dist/esm/user-security.client.d.ts +7 -0
  323. package/dist/esm/user-security.client.d.ts.map +1 -0
  324. package/dist/esm/user-security.client.js +23 -0
  325. package/dist/esm/user-security.client.js.map +1 -0
  326. package/dist/esm/user-sessions.client.d.ts +12 -0
  327. package/dist/esm/user-sessions.client.d.ts.map +1 -0
  328. package/dist/esm/user-sessions.client.js +44 -0
  329. package/dist/esm/user-sessions.client.js.map +1 -0
  330. package/dist/esm/users-management.client.d.ts +2 -1
  331. package/dist/esm/users-management.client.d.ts.map +1 -1
  332. package/dist/esm/users-management.client.js +12 -20
  333. package/dist/esm/users-management.client.js.map +1 -1
  334. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  335. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  336. package/package.json +10 -4
  337. package/src/card-list.tsx +26 -0
  338. package/src/index.ts +3 -0
  339. package/src/lib/add-mfa-dialog.tsx +379 -0
  340. package/src/lib/api/user.ts +54 -458
  341. package/src/lib/card-list.css +3 -0
  342. package/src/lib/change-password-dialog.tsx +290 -0
  343. package/src/lib/copy-button.tsx +53 -0
  344. package/src/lib/delete-user-dialog.tsx +9 -6
  345. package/src/lib/edit-user-profile-dialog.tsx +181 -0
  346. package/src/lib/{edit-user-details-dialog.tsx → edit-user-role-dialog.tsx} +12 -9
  347. package/src/lib/elements.tsx +34 -1
  348. package/src/lib/elevated-access.tsx +261 -0
  349. package/src/lib/generic-error.tsx +70 -0
  350. package/src/lib/icon-panel.tsx +26 -0
  351. package/src/lib/icons.tsx +21 -0
  352. package/src/lib/invite-user-dialog.tsx +15 -10
  353. package/src/lib/logout-all-sessions-dialog.tsx +82 -0
  354. package/src/lib/logout-dialog.tsx +89 -0
  355. package/src/lib/marker.css +81 -0
  356. package/src/lib/marker.tsx +39 -0
  357. package/src/lib/oauth-icons.tsx +138 -0
  358. package/src/lib/organization-switcher.tsx +160 -0
  359. package/src/lib/otp-input.tsx +276 -0
  360. package/src/lib/resend-invite-dialog.tsx +9 -6
  361. package/src/lib/reset-mfa-dialog.tsx +104 -0
  362. package/src/lib/revoke-invite-dialog.tsx +9 -6
  363. package/src/lib/save-button.css +60 -0
  364. package/src/lib/save-button.tsx +113 -0
  365. package/src/lib/set-password-dialog.tsx +204 -0
  366. package/src/lib/use-dialog-close.tsx +19 -0
  367. package/src/lib/use-security-settings.tsx +49 -0
  368. package/src/lib/user-actions-dropdown.tsx +10 -6
  369. package/src/lib/user-profile.tsx +247 -0
  370. package/src/lib/user-security.tsx +187 -0
  371. package/src/lib/user-sessions.tsx +204 -0
  372. package/src/lib/users-filter.tsx +2 -2
  373. package/src/lib/users-management-context.tsx +21 -36
  374. package/src/lib/users-management-state.ts +3 -3
  375. package/src/lib/users-management.tsx +21 -77
  376. package/src/lib/utils.ts +30 -2
  377. package/src/organization-switcher.client.tsx +77 -0
  378. package/src/styles.css +44 -0
  379. package/src/user-profile.client.tsx +51 -0
  380. package/src/user-security.client.tsx +55 -0
  381. package/src/user-sessions.client.tsx +96 -0
  382. package/src/users-management.client.tsx +28 -39
  383. package/dist/cjs/lib/api/role.d.ts +0 -9
  384. package/dist/cjs/lib/api/role.d.ts.map +0 -1
  385. package/dist/cjs/lib/api/role.js +0 -115
  386. package/dist/cjs/lib/api/role.js.map +0 -1
  387. package/dist/cjs/lib/edit-user-details-dialog.d.ts +0 -12
  388. package/dist/cjs/lib/edit-user-details-dialog.d.ts.map +0 -1
  389. package/dist/cjs/lib/edit-user-details-dialog.js.map +0 -1
  390. package/dist/esm/lib/api/role.d.ts +0 -9
  391. package/dist/esm/lib/api/role.d.ts.map +0 -1
  392. package/dist/esm/lib/api/role.js +0 -110
  393. package/dist/esm/lib/api/role.js.map +0 -1
  394. package/dist/esm/lib/edit-user-details-dialog.d.ts +0 -12
  395. package/dist/esm/lib/edit-user-details-dialog.d.ts.map +0 -1
  396. package/dist/esm/lib/edit-user-details-dialog.js.map +0 -1
  397. package/src/lib/api/role.ts +0 -147
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-list.js","sourceRoot":"","sources":["../../src/card-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAa,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAa;IACpD,OAAO,CACL,KAAC,IAAI,IAAC,IAAI,EAAC,GAAG,KAAK,KAAK,EAAE,SAAS,EAAC,sBAAsB,YACxD,KAAC,KAAK,IAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,aAAa,YACjC,QAAQ,GACH,GACH,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAiC;IAC9D,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,EAAC,GAAG,EACR,EAAE,EAAC,SAAS,EACZ,SAAS,EAAC,2BAA2B,EACrC,IAAI,EAAC,aAAa,YAElB,KAAC,GAAG,IAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,YACf,QAAQ,GACL,GACA,CACT,CAAC;AACJ,CAAC"}
@@ -1,3 +1,6 @@
1
1
  export { WorkOsWidgets, type WorkOsWidgetsProps, } from "./workos-widgets.client";
2
+ export { UserProfile } from "./user-profile.client";
3
+ export { UserSecurity } from "./user-security.client";
4
+ export { UserSessions } from "./user-sessions.client";
2
5
  export { UsersManagement } from "./users-management.client";
3
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,3 +1,6 @@
1
1
  export { WorkOsWidgets, } from "./workos-widgets.client";
2
+ export { UserProfile } from "./user-profile.client";
3
+ export { UserSecurity } from "./user-security.client";
4
+ export { UserSessions } from "./user-sessions.client";
2
5
  export { UsersManagement } from "./users-management.client";
3
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Dialog } from "@radix-ui/themes";
2
+ import { type ReactNode } from "react";
3
+ interface AddMfaDialogProps extends Dialog.RootProps {
4
+ children?: ReactNode;
5
+ onSuccess?: () => void;
6
+ }
7
+ export declare function AddMfaDialog({ children, onSuccess, ...props }: AddMfaDialogProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=add-mfa-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-mfa-dialog.d.ts","sourceRoot":"","sources":["../../../src/lib/add-mfa-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,MAAM,EAOP,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBvC,UAAU,iBAAkB,SAAQ,MAAM,CAAC,SAAS;IAClD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAiDnB"}
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Box, Code, Dialog, Flex, Grid, Link, Separator, Text, VisuallyHidden, } from "@radix-ui/themes";
4
+ import * as React from "react";
5
+ import * as Otp from "./otp-input";
6
+ import { DialogContent, PrimaryButton, SecondaryButton } from "./elements";
7
+ import { useCreateTotpFactor, useElevatedAccessToken, useVerifyTotpFactor, } from "@repo/api";
8
+ import * as Form from "@radix-ui/react-form";
9
+ import { Marker } from "./marker";
10
+ import { CopyButton } from "./copy-button";
11
+ import { useSecuritySettings } from "./use-security-settings";
12
+ import { ElevatedAccess } from "./elevated-access";
13
+ import { SaveButton } from "./save-button";
14
+ import { useDialogClose } from "./use-dialog-close";
15
+ export function AddMfaDialog({ children, onSuccess, ...props }) {
16
+ const [open, setOpen] = React.useState(false);
17
+ const [manuallyTriggered, setManuallyTriggered] = React.useState(false);
18
+ const { elevatedAccess } = useElevatedAccessToken();
19
+ const createAuthFactor = useCreateTotpFactor();
20
+ const handleVerified = async () => {
21
+ await createAuthFactor.mutateAsync(undefined);
22
+ };
23
+ const onTriggerClick = (event) => {
24
+ if (elevatedAccess && !createAuthFactor.data) {
25
+ event.preventDefault();
26
+ setManuallyTriggered(true);
27
+ createAuthFactor.mutate(undefined, {
28
+ onSuccess: () => {
29
+ setOpen(true);
30
+ },
31
+ });
32
+ }
33
+ else {
34
+ setManuallyTriggered(false);
35
+ }
36
+ };
37
+ const handleClose = React.useCallback(() => {
38
+ setOpen(false);
39
+ }, []);
40
+ return (_jsxs(Dialog.Root, { ...props, open: props.open || open, onOpenChange: props.onOpenChange || setOpen, children: [_jsx(Dialog.Trigger, { onClick: onTriggerClick,
41
+ // @ts-ignore I've to find a way to pass the loading state to the trigger
42
+ loading: manuallyTriggered && createAuthFactor.isPending, children: children }), _jsx(DialogContent, { maxWidth: "480px", children: _jsx(ElevatedAccess, { onVerified: handleVerified, children: _jsx(Content, { onClose: handleClose, totpFactor: createAuthFactor.data }) }) })] }));
43
+ }
44
+ function Content({ onClose, totpFactor }) {
45
+ const securitySettings = useSecuritySettings();
46
+ const [customError, setCustomError] = React.useState(null);
47
+ const totp = hasQrCode(totpFactor)
48
+ ? totpFactor.authenticationFactor.totp
49
+ : undefined;
50
+ const verifyTotp = useVerifyTotpFactor({
51
+ mutation: {
52
+ onSuccess: ({ success }) => {
53
+ if (!success) {
54
+ setCustomError("Invalid passcode");
55
+ }
56
+ },
57
+ },
58
+ });
59
+ const serverError = verifyTotp.error || customError;
60
+ const isSuccess = verifyTotp.isSuccess && !serverError;
61
+ const handleSubmit = async (event) => {
62
+ event.preventDefault();
63
+ setCustomError(null);
64
+ const formData = new FormData(event.currentTarget);
65
+ const otpCode = formData.get("otp-code")?.toString();
66
+ verifyTotp.mutate({
67
+ data: {
68
+ authenticationChallengeId: totpFactor?.authenticationChallenge.id ?? "",
69
+ code: otpCode ?? "",
70
+ },
71
+ });
72
+ };
73
+ useDialogClose(isSuccess, () => {
74
+ securitySettings.update("Mfa", true);
75
+ });
76
+ return (_jsxs(_Fragment, { children: [_jsx(Dialog.Title, { mb: "5", children: "Set up an authenticator app" }), _jsxs(Form.Root, { onSubmit: handleSubmit, children: [_jsxs(Grid, { columns: "auto 1fr", rows: "repeat(4, auto)", gapX: "3", gapY: "1", children: [_jsxs(Grid, { rows: "subgrid", gridRow: "span 4", style: { placeItems: "center" }, children: [_jsx(Marker, { children: "1" }), _jsx(Separator, { orientation: "vertical", size: "4", style: { width: "2px" } }), _jsx(Marker, { children: "2" }), _jsx("div", {})] }), _jsxs(Grid, { rows: "subgrid", gridRow: "span 4", children: [_jsx(Text, { as: "p", size: "3", weight: "bold", children: "Scan the QR code" }), _jsxs(Flex, { direction: "column", gap: "1", children: [_jsxs(Text, { as: "p", size: "2", children: ["Use an authenticator app like", " ", _jsx(Link, { href: "https://1password.com/", rel: "noopener noreferrer", target: "_blank", children: "1Password" }), ",", " ", _jsx(Link, { href: "https://apps.apple.com/us/app/google-authenticator/id388497605", rel: "noopener noreferrer", target: "_blank", children: "Google Authenticator" }), ",", " ", _jsx(Link, { href: "https://authy.com/", rel: "noopener noreferrer", target: "_blank", children: "Authy" }), ", or", " ", _jsx(Link, { href: "https://www.microsoft.com/en-gb/security/mobile-authenticator-app", rel: "noopener noreferrer", target: "_blank", children: "Microsoft Authenticator" }), " ", "to scan the QR code below."] }), _jsxs(Flex, { align: "center", gap: "5", my: "5", children: [_jsx(Grid, { position: "relative", width: "160px", height: "160px", p: "2", style: {
77
+ border: "1px solid var(--gray-7)",
78
+ borderRadius: "var(--radius-4)",
79
+ background: "var(--gray-2)",
80
+ overflow: "hidden",
81
+ }, children: totp?.qr_code && (_jsx(Box, { asChild: true, width: "100%", height: "auto", children: _jsx("img", { alt: "Scan this QR code to enroll", "aria-describedby": "secret-note", height: "160", src: totp.qr_code, style: { userSelect: "none", background: "white" }, width: "160" }) })) }), _jsxs(Flex, { direction: "column", gap: "1", align: "start", children: [_jsxs(Text, { color: "gray", id: "secret-note", size: "2", children: ["Can\u2018t scan the code?", " "] }), _jsx(SecretDialog, { setupKey: totp?.secret ?? "", children: _jsx(SecondaryButton, { size: "1", disabled: verifyTotp.isPending || isSuccess, children: "View setup key" }) })] })] })] }), _jsx(Text, { as: "p", size: "3", weight: "bold", children: "Get verification passcode" }), _jsxs(Flex, { direction: "column", gap: "4", children: [_jsx(Text, { as: "p", size: "2", children: "Enter the 6-digit passcode from your authenticator app." }), _jsxs(Flex, { direction: "column", gap: "2", children: [_jsxs(Otp.Root, { autoSubmit: true, gap: "3", justify: "start", name: "otp-code", rows: "48px", columns: "repeat(6, 48px)", readOnly: verifyTotp.isPending || isSuccess, children: [_jsx(Otp.Input, { required: true, autoFocus: true, autoComplete: "off" }), _jsx(Otp.Input, { required: true }), _jsx(Otp.Input, { required: true }), _jsx(Otp.Input, { required: true }), _jsx(Otp.Input, { required: true }), _jsx(Otp.Input, { required: true })] }), serverError && (_jsx(Text, { size: "2", color: "red", children: getMutationErrorMessage(serverError) }))] })] })] })] }), _jsxs(Flex, { mt: "5", gap: "3", justify: "end", children: [_jsx(Dialog.Close, { children: _jsx(SecondaryButton, { disabled: verifyTotp.isPending || isSuccess, children: "Cancel" }) }), _jsx(SaveButton, { asChild: true, loading: verifyTotp.isPending, done: isSuccess, onDone: onClose, children: _jsx(PrimaryButton, { type: "submit", children: "Confirm" }) })] })] }), _jsx(VisuallyHidden, { asChild: true, children: _jsx("section", { "aria-live": "polite", children: getMutationErrorMessage(serverError) }) })] }));
82
+ }
83
+ function SecretDialog({ children, setupKey }) {
84
+ return (_jsxs(Dialog.Root, { children: [_jsx(Dialog.Trigger, { children: children }), _jsxs(Dialog.Content, { maxWidth: "90vw", size: { initial: "3", sm: "4" }, minWidth: "300px", width: "fit-content", children: [_jsx(Dialog.Title, { size: "2", weight: "regular", children: "Your setup key" }), _jsx(Dialog.Description, { children: _jsx(Text, { size: "6", children: _jsx(Code, { variant: "ghost", style: { letterSpacing: "0.15rem" }, children: setupKey }) }) }), _jsx(Flex, { align: "center", gap: "3", justify: "end", mt: "5", children: _jsx(Dialog.Close, { children: _jsx(CopyButton, { asChild: true, value: setupKey, children: _jsx(PrimaryButton, { children: "Copy and close" }) }) }) })] })] }));
85
+ }
86
+ function getMutationErrorMessage(error) {
87
+ let message = "Something went wrong, please try again";
88
+ if (typeof error === "string") {
89
+ message = error;
90
+ }
91
+ if (error instanceof Error) {
92
+ message = error.message;
93
+ }
94
+ if (typeof error === "object" &&
95
+ error !== null &&
96
+ "message" in error &&
97
+ typeof error.message === "string") {
98
+ message = error.message;
99
+ }
100
+ if (message === "Invalid passcode") {
101
+ message = "Invalid passcode, please try again";
102
+ }
103
+ return message;
104
+ }
105
+ function hasQrCode(response) {
106
+ const totp = response?.authenticationFactor.totp;
107
+ return totp != null && "qr_code" in totp;
108
+ }
109
+ //# sourceMappingURL=add-mfa-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-mfa-dialog.js","sourceRoot":"","sources":["../../../src/lib/add-mfa-dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,61 +1,17 @@
1
+ import { useInviteMember, useUpdateMember } from "@repo/api";
1
2
  import { type UsersManagementContextType } from "../users-management-context";
2
- export interface PaginationData {
3
- before?: string;
4
- after?: string;
5
- }
6
- export type UserAction = "edit-role" | "revoke-membership" | "resend-invite" | "revoke-invite";
7
- export type UserStatus = "Active" | "Invited" | "InviteExpired" | "InviteRevoked";
8
- export interface UserRole {
9
- slug: string;
10
- name: string;
11
- }
12
- export interface User {
13
- id: string;
14
- email: string;
15
- profilePictureUrl?: string | null;
16
- firstName?: string | null;
17
- lastName?: string | null;
18
- emailVerified: boolean;
19
- createdAt: string;
20
- lastActivityAt?: string | null;
21
- isLoggedInUser?: boolean;
22
- roles: UserRole[];
23
- actions: UserAction[];
24
- status: UserStatus;
25
- }
26
- export type Paginated<T> = {
27
- data: T;
28
- pagination: PaginationData;
3
+ export declare const useUsers: (context?: UsersManagementContextType) => import("@tanstack/react-query").UseQueryResult<import("@repo/api").Members200, import("@repo/api").Members403 | import("@repo/api").Members404> & {
4
+ queryKey: import("@tanstack/react-query").DataTag<import("@tanstack/react-query").QueryKey, import("@repo/api").Members200>;
29
5
  };
30
- type PaginatedUsers = Paginated<User[]>;
31
- export declare const useUsers: (context?: UsersManagementContextType) => import("@tanstack/react-query").UseQueryResult<PaginatedUsers, Error>;
32
- export declare const useUser: (userId: string, initialContext?: UsersManagementContextType) => import("@tanstack/react-query").UseQueryResult<User, Error>;
33
- export declare const useUpdateUserRole: (args?: {
34
- onError?: (error: unknown) => void;
35
- }) => import("@tanstack/react-query").UseMutationResult<{
36
- id: string;
37
- success: boolean;
38
- }, unknown, {
39
- id: string;
40
- data: {
41
- roles: string[];
42
- };
6
+ export declare const useUpdateUserRole: typeof useUpdateMember;
7
+ export declare const useInviteUser: typeof useInviteMember;
8
+ export declare const useDeleteUser: () => import("@tanstack/react-query").UseMutationResult<import("@repo/api").RemoveMember200, import("@repo/api").RemoveMember400 | import("@repo/api").RemoveMember403 | import("@repo/api").RemoveMember404, {
9
+ userId: string;
10
+ }, unknown>;
11
+ export declare const useRevokeUserInvite: () => import("@tanstack/react-query").UseMutationResult<import("@repo/api").RevokeInvite200, import("@repo/api").RevokeInvite400 | import("@repo/api").RevokeInvite403 | import("@repo/api").RevokeInvite404, {
12
+ userId: string;
13
+ }, unknown>;
14
+ export declare const useResendUserInvite: () => import("@tanstack/react-query").UseMutationResult<import("@repo/api").ResendInvite201, import("@repo/api").ResendInvite400 | import("@repo/api").ResendInvite403 | import("@repo/api").ResendInvite404, {
15
+ userId: string;
43
16
  }, unknown>;
44
- export interface InviteUserPayload {
45
- email: string;
46
- role: string;
47
- }
48
- export declare const useInviteUser: (args?: {
49
- onError?: (error: unknown) => void;
50
- }) => import("@tanstack/react-query").UseMutationResult<unknown, unknown, InviteUserPayload, unknown>;
51
- export declare const useDeleteUser: (args?: {
52
- onError?: (error: unknown) => void;
53
- }) => import("@tanstack/react-query").UseMutationResult<unknown, unknown, string, unknown>;
54
- export declare const useRevokeUserInvite: (args?: {
55
- onError?: (error: unknown) => void;
56
- }) => import("@tanstack/react-query").UseMutationResult<unknown, unknown, string, unknown>;
57
- export declare const useResendUserInvite: (args?: {
58
- onError?: (error: unknown) => void;
59
- }) => import("@tanstack/react-query").UseMutationResult<unknown, unknown, string, unknown>;
60
- export {};
61
17
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/user.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,6BAA6B,CAAC;AAOrC,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,mBAAmB,GACnB,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,SAAS,GACT,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAAC;AAEnE,KAAK,cAAc,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAExC,eAAO,MAAM,QAAQ,aAAc,0BAA0B,0EA2B5D,CAAC;AAEF,eAAO,MAAM,OAAO,WACV,MAAM,mBACG,0BAA0B,gEAS5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;QAoPsB,MAAM;aAAW,OAAO;;QAzOrC,MAAM;UACJ;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE;WAQ9B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,aAAa,UAAW;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,oGAcA,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,yFAcA,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAAW;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,yFAcA,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAAW;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,yFAcA,CAAC"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAKf,eAAe,EAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,QAAQ,aAAc,0BAA0B;;CAqB5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAAO,eAUtC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAAO,eAUlC,CAAC;AAEF,eAAO,MAAM,aAAa;;WAUzB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;WAU/B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;WAU/B,CAAC"}
@@ -1,340 +1,71 @@
1
- import { keepPreviousData, useMutation, useQuery, useQueryClient, } from "@tanstack/react-query";
1
+ import { getMembersQueryKey, useInviteMember, useMembers, useRemoveMember, useResendInvite, useRevokeInvite, useUpdateMember, } from "@repo/api";
2
+ import { keepPreviousData, useQueryClient } from "@tanstack/react-query";
3
+ import { USER_ROW_LIMIT } from "../constants";
2
4
  import { useUsersManagementContext, } from "../users-management-context";
3
- import { parseErrorResponse } from "../utils";
4
- import { useWorkOsApiUrl } from "../widgets-context";
5
- import { API_ENDPOINTS } from "./config";
6
- import { USER_ROW_LIMIT, WIDGETS_API_VERSION } from "../constants";
7
- import { ApiError, FetchError, NoAuthTokenError } from "../errors";
8
5
  export const useUsers = (context) => {
9
- const { authToken, state: { pagination, role, searchQuery }, } = useUsersManagementContext(context);
10
- const baseUrl = useWorkOsApiUrl();
6
+ const { state: { pagination, role, searchQuery }, } = useUsersManagementContext(context);
11
7
  const limit = USER_ROW_LIMIT;
12
8
  const { before, after } = pagination || {};
13
- return useQuery({
14
- queryKey: [
15
- "users",
16
- { authToken, baseUrl, limit, before, after, role, searchQuery },
17
- ],
18
- queryFn: () => fetchUsers({
19
- authToken,
20
- baseUrl,
21
- limit,
22
- before,
23
- after,
24
- role,
25
- searchQuery,
26
- }),
27
- enabled: !!authToken,
28
- placeholderData: keepPreviousData,
29
- });
30
- };
31
- export const useUser = (userId, initialContext) => {
32
- const { authToken } = useUsersManagementContext(initialContext);
33
- const baseUrl = useWorkOsApiUrl();
34
- return useQuery({
35
- queryKey: ["user", userId],
36
- queryFn: () => fetchUser(userId, { baseUrl, authToken }),
37
- enabled: !!authToken,
38
- });
39
- };
40
- export const useUpdateUserRole = (args) => {
41
- const { authToken } = useUsersManagementContext();
42
- const queryClient = useQueryClient();
43
- const baseUrl = useWorkOsApiUrl();
44
- const { onError } = args || {};
45
- return useMutation({
46
- mutationFn: ({ id, data: { roles }, }) => updateUserRole(id, { authToken, baseUrl, data: { roles } }),
47
- onSuccess: (updatedUser) => {
48
- queryClient.invalidateQueries({ queryKey: ["users"] });
49
- queryClient.invalidateQueries({ queryKey: ["user", updatedUser.id] });
9
+ return useMembers({
10
+ after: after ?? undefined,
11
+ before: before ?? undefined,
12
+ limit: limit.toString(),
13
+ role: role ?? undefined,
14
+ search: searchQuery ?? undefined,
15
+ }, {
16
+ query: {
17
+ placeholderData: keepPreviousData,
50
18
  },
51
- onError,
52
19
  });
53
20
  };
54
- export const useInviteUser = (args) => {
55
- const { authToken } = useUsersManagementContext();
21
+ export const useUpdateUserRole = () => {
56
22
  const queryClient = useQueryClient();
57
- const baseUrl = useWorkOsApiUrl();
58
- const { onError } = args || {};
59
- return useMutation({
60
- mutationFn: (data) => inviteUser({ authToken, baseUrl, ...data }),
61
- onSuccess: (_newUser) => {
62
- queryClient.invalidateQueries({ queryKey: ["users"] });
23
+ return useUpdateMember({
24
+ mutation: {
25
+ onSuccess: () => {
26
+ queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });
27
+ },
63
28
  },
64
- onError,
65
29
  });
66
30
  };
67
- export const useDeleteUser = (args) => {
68
- const { authToken } = useUsersManagementContext();
31
+ export const useInviteUser = () => {
69
32
  const queryClient = useQueryClient();
70
- const baseUrl = useWorkOsApiUrl();
71
- const { onError } = args || {};
72
- return useMutation({
73
- mutationFn: (id) => deleteUser(id, { authToken, baseUrl }),
74
- onSuccess: (_, userId) => {
75
- queryClient.invalidateQueries({ queryKey: ["users"] });
76
- queryClient.removeQueries({ queryKey: ["user", userId] });
33
+ return useInviteMember({
34
+ mutation: {
35
+ onSuccess: () => {
36
+ queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });
37
+ },
77
38
  },
78
- onError,
79
39
  });
80
40
  };
81
- export const useRevokeUserInvite = (args) => {
82
- const { authToken } = useUsersManagementContext();
41
+ export const useDeleteUser = () => {
83
42
  const queryClient = useQueryClient();
84
- const baseUrl = useWorkOsApiUrl();
85
- const { onError } = args || {};
86
- return useMutation({
87
- mutationFn: (id) => revokeUserInvite(id, { authToken, baseUrl }),
88
- onSuccess: (_, userId) => {
89
- queryClient.invalidateQueries({ queryKey: ["users"] });
90
- queryClient.removeQueries({ queryKey: ["user", userId] });
43
+ return useRemoveMember({
44
+ mutation: {
45
+ onSuccess: () => {
46
+ queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });
47
+ },
91
48
  },
92
- onError,
93
49
  });
94
50
  };
95
- export const useResendUserInvite = (args) => {
96
- const { authToken } = useUsersManagementContext();
51
+ export const useRevokeUserInvite = () => {
97
52
  const queryClient = useQueryClient();
98
- const baseUrl = useWorkOsApiUrl();
99
- const { onError } = args || {};
100
- return useMutation({
101
- mutationFn: (id) => resendUserInvite(id, { authToken, baseUrl }),
102
- onSuccess: (_, userId) => {
103
- queryClient.invalidateQueries({ queryKey: ["users"] });
104
- queryClient.removeQueries({ queryKey: ["user", userId] });
105
- },
106
- onError,
107
- });
108
- };
109
- /**
110
- * Fetch functions
111
- */
112
- async function fetchUsers({ baseUrl, authToken, limit, role, before, after, searchQuery, }) {
113
- if (!authToken) {
114
- throw new NoAuthTokenError();
115
- }
116
- const url = new URL(`${baseUrl}/${API_ENDPOINTS.USERS}`);
117
- url.searchParams.set("limit", limit.toString());
118
- if (before) {
119
- url.searchParams.set("before", before);
120
- }
121
- if (after) {
122
- url.searchParams.set("after", after);
123
- }
124
- if (role) {
125
- url.searchParams.set("role", role);
126
- }
127
- if (searchQuery) {
128
- url.searchParams.set("search", searchQuery);
129
- }
130
- const response = await fetch(url, {
131
- cache: "no-store",
132
- headers: getAuthHeaders(await authToken()),
133
- }).catch((error) => {
134
- throw new FetchError({
135
- message: "Failed to fetch users",
136
- queryType: "query",
137
- recordType: "users",
138
- context: { error },
139
- });
140
- });
141
- if (!response.ok) {
142
- const { message, status } = await parseErrorResponse(response);
143
- throw new ApiError({
144
- message,
145
- status,
146
- queryType: "query",
147
- recordType: "users",
148
- });
149
- }
150
- // TODO validate the response
151
- const json = await response.json();
152
- const { data, listMetadata: pagination } = json;
153
- return { data, pagination };
154
- }
155
- const fetchUser = async (userId, { authToken, baseUrl }) => {
156
- if (!authToken) {
157
- throw new NoAuthTokenError();
158
- }
159
- const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USERS}/${userId}`, {
160
- headers: getAuthHeaders(await authToken()),
161
- cache: "no-store",
162
- }).catch((error) => {
163
- throw new FetchError({
164
- message: "Failed to fetch user",
165
- queryType: "query",
166
- recordType: "users",
167
- context: { error },
168
- });
169
- });
170
- if (!response.ok) {
171
- const { message, status } = await parseErrorResponse(response);
172
- throw new ApiError({
173
- message,
174
- status,
175
- queryType: "query",
176
- recordType: "users",
177
- });
178
- }
179
- // TODO validate the response
180
- const json = await response.json();
181
- return json.data;
182
- };
183
- const updateUserRole = async (userId, { authToken, baseUrl, data, }) => {
184
- if (!authToken) {
185
- throw new NoAuthTokenError();
186
- }
187
- const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USERS}/${userId}`, {
188
- method: "POST",
189
- headers: {
190
- "Content-Type": "application/json",
191
- ...getAuthHeaders(await authToken()),
53
+ return useRevokeInvite({
54
+ mutation: {
55
+ onSuccess: () => {
56
+ queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });
57
+ },
192
58
  },
193
- body: JSON.stringify(data),
194
- }).catch((error) => {
195
- throw new FetchError({
196
- message: "Failed to update user",
197
- queryType: "mutation",
198
- recordType: "users",
199
- context: { error },
200
- });
201
59
  });
202
- if (!response.ok) {
203
- const { message, status } = await parseErrorResponse(response);
204
- throw new ApiError({
205
- message,
206
- status,
207
- queryType: "mutation",
208
- recordType: "users",
209
- });
210
- }
211
- // TODO validate the response
212
- const json = await response.json();
213
- return json;
214
60
  };
215
- const inviteUser = async ({ authToken, baseUrl, email, role, }) => {
216
- if (!authToken) {
217
- throw new NoAuthTokenError();
218
- }
219
- const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USER_INVITE}`, {
220
- method: "POST",
221
- headers: {
222
- "Content-Type": "application/json",
223
- ...getAuthHeaders(await authToken()),
61
+ export const useResendUserInvite = () => {
62
+ const queryClient = useQueryClient();
63
+ return useResendInvite({
64
+ mutation: {
65
+ onSuccess: () => {
66
+ queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });
67
+ },
224
68
  },
225
- body: JSON.stringify({
226
- email,
227
- roles: [role],
228
- }),
229
- }).catch((error) => {
230
- throw new FetchError({
231
- message: "Failed to invite user",
232
- queryType: "mutation",
233
- recordType: "users",
234
- context: { error },
235
- });
236
- });
237
- if (!response.ok) {
238
- const { message, status } = await parseErrorResponse(response);
239
- throw new ApiError({
240
- message,
241
- status,
242
- queryType: "mutation",
243
- recordType: "users",
244
- });
245
- }
246
- // TODO validate the response
247
- const json = await response.json();
248
- return json;
249
- };
250
- const deleteUser = async (userId, { authToken, baseUrl }) => {
251
- if (!authToken) {
252
- throw new NoAuthTokenError();
253
- }
254
- const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USERS}/${userId}`, {
255
- method: "DELETE",
256
- headers: getAuthHeaders(await authToken()),
257
- }).catch((error) => {
258
- throw new FetchError({
259
- message: "Failed to delete user. Please try again.",
260
- queryType: "mutation",
261
- recordType: "users",
262
- context: { error },
263
- });
264
- });
265
- if (!response.ok) {
266
- const { message, status } = await parseErrorResponse(response);
267
- throw new ApiError({
268
- message,
269
- status,
270
- queryType: "mutation",
271
- recordType: "users",
272
- });
273
- }
274
- // TODO validate the response
275
- const json = await response.json();
276
- return json;
277
- };
278
- const revokeUserInvite = async (userId, { authToken, baseUrl }) => {
279
- if (!authToken) {
280
- throw new NoAuthTokenError();
281
- }
282
- const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USER_INVITES}/${userId}`, {
283
- method: "DELETE",
284
- headers: getAuthHeaders(await authToken()),
285
- }).catch((error) => {
286
- throw new FetchError({
287
- message: "Failed to resend user invite. Please try again.",
288
- queryType: "mutation",
289
- recordType: "users",
290
- context: { error },
291
- });
292
- });
293
- if (!response.ok) {
294
- const { message, status } = await parseErrorResponse(response);
295
- throw new ApiError({
296
- message,
297
- status,
298
- queryType: "mutation",
299
- recordType: "users",
300
- });
301
- }
302
- // TODO validate the response
303
- const json = await response.json();
304
- return json;
305
- };
306
- const resendUserInvite = async (userId, { authToken, baseUrl }) => {
307
- if (!authToken) {
308
- throw new NoAuthTokenError();
309
- }
310
- const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USER_INVITES_RESEND(userId)}`, {
311
- method: "POST",
312
- headers: getAuthHeaders(await authToken()),
313
- }).catch((error) => {
314
- throw new FetchError({
315
- message: "Failed to resend user invite. Please try again.",
316
- queryType: "mutation",
317
- recordType: "users",
318
- context: { error },
319
- });
320
69
  });
321
- if (!response.ok) {
322
- const { message, status } = await parseErrorResponse(response);
323
- throw new ApiError({
324
- message,
325
- status,
326
- queryType: "mutation",
327
- recordType: "users",
328
- });
329
- }
330
- // TODO validate the response
331
- const json = await response.json();
332
- return json;
333
70
  };
334
- function getAuthHeaders(authToken) {
335
- return {
336
- Authorization: `Bearer ${authToken}`,
337
- "WorkOS-Widgets-Version": WIDGETS_API_VERSION,
338
- };
339
- }
340
71
  //# sourceMappingURL=user.js.map