@workos-inc/widgets 1.0.0 → 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 +68 -1
  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,247 @@
1
+ "use client";
2
+
3
+ import {
4
+ Box,
5
+ Card,
6
+ DataList,
7
+ Flex,
8
+ Inset,
9
+ Separator,
10
+ Strong,
11
+ Text,
12
+ } from "@radix-ui/themes";
13
+ import clsx from "clsx";
14
+ import { Avatar, SecondaryButton, Skeleton } from "./elements";
15
+ import { Me } from "@repo/api";
16
+ import { EditUserProfileDialog } from "./edit-user-profile-dialog";
17
+ import { getBestName } from "./utils";
18
+ import { getOAuthIcon, getOAuthName } from "./oauth-icons";
19
+ import { GenericError } from "./generic-error";
20
+
21
+ interface UserProfileProps {
22
+ userData: Me;
23
+ }
24
+
25
+ export const UserProfile = ({ userData: user }: UserProfileProps) => {
26
+ const oauthAccounts = Object.entries(user.oauthProfiles || {});
27
+
28
+ return (
29
+ <Card
30
+ className={clsx("woswidgets-widget")}
31
+ data-woswidgets-widget-id="user-profile"
32
+ size="2"
33
+ >
34
+ <DataList.Root>
35
+ {user.profilePictureUrl && (
36
+ <>
37
+ <DataList.Item align="center">
38
+ <DataList.Label minWidth="220px" highContrast>
39
+ <Strong>Profile picture</Strong>
40
+ </DataList.Label>
41
+ <DataList.Value>
42
+ <Avatar
43
+ size="2"
44
+ fallback={<FallbackUserIcon />}
45
+ src={user.profilePictureUrl}
46
+ />
47
+ </DataList.Value>
48
+ </DataList.Item>
49
+
50
+ <ListSeparator />
51
+ </>
52
+ )}
53
+
54
+ <DataList.Item align="center">
55
+ <DataList.Label highContrast>
56
+ <Strong>Full name</Strong>
57
+ </DataList.Label>
58
+ <DataList.Value>
59
+ <Flex
60
+ align="center"
61
+ justify="between"
62
+ width="100%"
63
+ minHeight="var(--space-6)"
64
+ >
65
+ <Text size="2">
66
+ {getBestName(user) || (
67
+ <Text
68
+ color="gray"
69
+ style={{ color: "var(--gray-10)", cursor: "default" }}
70
+ >
71
+ Not set
72
+ </Text>
73
+ )}
74
+ </Text>
75
+
76
+ <EditUserProfileDialog user={user}>
77
+ <SecondaryButton>Edit</SecondaryButton>
78
+ </EditUserProfileDialog>
79
+ </Flex>
80
+ </DataList.Value>
81
+ </DataList.Item>
82
+
83
+ <ListSeparator />
84
+
85
+ <DataList.Item align="center">
86
+ <DataList.Label highContrast>
87
+ <Strong>Email address</Strong>
88
+ </DataList.Label>
89
+ <DataList.Value>
90
+ <Flex align="center" minHeight="var(--space-6)">
91
+ <Text size="2">{user.email}</Text>
92
+ </Flex>
93
+ </DataList.Value>
94
+ </DataList.Item>
95
+
96
+ {oauthAccounts.length > 0 && (
97
+ <>
98
+ <ListSeparator />
99
+
100
+ <DataList.Item>
101
+ <DataList.Label highContrast>
102
+ <Strong>Connected accounts</Strong>
103
+ </DataList.Label>
104
+ <DataList.Value>
105
+ <Flex direction="column" gap="2">
106
+ {oauthAccounts.map(([account, data]) => (
107
+ <OAuthAccount
108
+ key={account}
109
+ account={account}
110
+ email={data?.email}
111
+ />
112
+ ))}
113
+ </Flex>
114
+ </DataList.Value>
115
+ </DataList.Item>
116
+ </>
117
+ )}
118
+ </DataList.Root>
119
+ </Card>
120
+ );
121
+ };
122
+
123
+ export function UserProfileLoading() {
124
+ return (
125
+ <Card size="2">
126
+ <DataList.Root>
127
+ <DataList.Item align="center">
128
+ <DataList.Label minWidth="220px" highContrast>
129
+ <Strong>Profile picture</Strong>
130
+ </DataList.Label>
131
+ <DataList.Value>
132
+ <Skeleton>
133
+ <Avatar size="2" fallback={<FallbackUserIcon />} />
134
+ </Skeleton>
135
+ </DataList.Value>
136
+ </DataList.Item>
137
+
138
+ <ListSeparator />
139
+
140
+ <DataList.Item align="center">
141
+ <DataList.Label highContrast>
142
+ <Strong>Full name</Strong>
143
+ </DataList.Label>
144
+ <DataList.Value>
145
+ <Flex
146
+ align="center"
147
+ justify="between"
148
+ width="100%"
149
+ minHeight="var(--space-6)"
150
+ >
151
+ <Text size="2">
152
+ <Skeleton>Full name</Skeleton>
153
+ </Text>
154
+ </Flex>
155
+ </DataList.Value>
156
+ </DataList.Item>
157
+
158
+ <ListSeparator />
159
+
160
+ <DataList.Item align="center">
161
+ <DataList.Label highContrast>
162
+ <Strong>Email address</Strong>
163
+ </DataList.Label>
164
+ <DataList.Value>
165
+ <Flex align="center" minHeight="var(--space-6)">
166
+ <Text size="2">
167
+ <Skeleton>Email address</Skeleton>
168
+ </Text>
169
+ </Flex>
170
+ </DataList.Value>
171
+ </DataList.Item>
172
+
173
+ <ListSeparator />
174
+
175
+ <DataList.Item>
176
+ <DataList.Label highContrast>
177
+ <Strong>Connected accounts</Strong>
178
+ </DataList.Label>
179
+ <DataList.Value>
180
+ <Skeleton>Connected accounts</Skeleton>
181
+ </DataList.Value>
182
+ </DataList.Item>
183
+ </DataList.Root>
184
+ </Card>
185
+ );
186
+ }
187
+
188
+ export function UserProfileError({ error }: { error: unknown }) {
189
+ return (
190
+ <Card size="2">
191
+ <GenericError error={error} />
192
+ </Card>
193
+ );
194
+ }
195
+
196
+ const ListSeparator = () => (
197
+ <Box asChild gridColumn="span 2">
198
+ <Inset side="x">
199
+ <Separator size="4" />
200
+ </Inset>
201
+ </Box>
202
+ );
203
+
204
+ const OAuthAccount = ({
205
+ account,
206
+ email,
207
+ }: {
208
+ account: string;
209
+ email?: string | null;
210
+ }) => {
211
+ const Icon = getOAuthIcon(account);
212
+ const name = getOAuthName(account);
213
+
214
+ return (
215
+ <Flex align="center" gap="1">
216
+ <Icon />
217
+
218
+ <Text size="2" ml="1">
219
+ {name}
220
+ </Text>
221
+
222
+ {email && (
223
+ <Box display={{ initial: "none", sm: "contents" }}>
224
+ <Text size="2" color="gray">
225
+
226
+ </Text>
227
+ <Text size="2" color="gray">
228
+ {email}
229
+ </Text>
230
+ </Box>
231
+ )}
232
+ </Flex>
233
+ );
234
+ };
235
+
236
+ const FallbackUserIcon = () => (
237
+ <svg
238
+ xmlns="http://www.w3.org/2000/svg"
239
+ width="20"
240
+ height="20"
241
+ fill="currentColor"
242
+ viewBox="0 0 256 256"
243
+ >
244
+ <title>User icon</title>
245
+ <path d="M229.19,213c-15.81-27.32-40.63-46.49-69.47-54.62a70,70,0,1,0-63.44,0C67.44,166.5,42.62,185.67,26.81,213a6,6,0,1,0,10.38,6C56.4,185.81,90.34,166,128,166s71.6,19.81,90.81,53a6,6,0,1,0,10.38-6ZM70,96a58,58,0,1,1,58,58A58.07,58.07,0,0,1,70,96Z" />
246
+ </svg>
247
+ );
@@ -0,0 +1,187 @@
1
+ "use client";
2
+
3
+ import { Card, Flex, Grid, Text } from "@radix-ui/themes";
4
+ import clsx from "clsx";
5
+ import { SecondaryButton, Skeleton } from "./elements";
6
+ import { IconPanel } from "./icon-panel";
7
+ import { ButtonIcon, LockClosedIcon } from "@radix-ui/react-icons";
8
+ import { SetPasswordDialog } from "./set-password-dialog";
9
+ import { ChangePasswordDialog } from "./change-password-dialog";
10
+ import { AddMfaDialog } from "./add-mfa-dialog";
11
+ import type {
12
+ AuthenticationInformationResponseData as AuthenticationSettings,
13
+ PasswordVerificationMethod,
14
+ MfaVerificationMethod,
15
+ } from "@repo/api";
16
+ import { ResetMfaDialog } from "./reset-mfa-dialog";
17
+ import * as CardList from "../card-list";
18
+ import { GenericError } from "./generic-error";
19
+ import { getComparativeReadableDate } from "./utils";
20
+
21
+ interface UserSecurityProps {
22
+ settings: AuthenticationSettings;
23
+ }
24
+
25
+ export const UserSecurity = ({ settings }: UserSecurityProps) => {
26
+ const passwordSettings = settings.verificationMethods.Password;
27
+ const mfaSettings = settings.verificationMethods.Mfa;
28
+
29
+ return (
30
+ <CardList.Root
31
+ className={clsx("woswidgets-widget")}
32
+ data-woswidgets-widget-id="user-security"
33
+ >
34
+ {passwordSettings && (
35
+ <CardList.Item>
36
+ <PasswordSettings settings={passwordSettings} />
37
+ </CardList.Item>
38
+ )}
39
+
40
+ {mfaSettings && (
41
+ <CardList.Item>
42
+ <MfaSettings
43
+ settings={mfaSettings}
44
+ isPasswordSet={!!passwordSettings?.isSetUp}
45
+ />
46
+ </CardList.Item>
47
+ )}
48
+ </CardList.Root>
49
+ );
50
+ };
51
+
52
+ export function UserSecurityError({ error }: { error: unknown }) {
53
+ return (
54
+ <Card size="2">
55
+ <GenericError error={error} />
56
+ </Card>
57
+ );
58
+ }
59
+
60
+ export function UserSecurityLoading() {
61
+ return (
62
+ <Card size="2">
63
+ <Grid columns="auto 1fr auto" align="center" gap="4">
64
+ <Skeleton>
65
+ <IconPanel />
66
+ </Skeleton>
67
+
68
+ <Flex direction="column">
69
+ <Text size="2" highContrast weight="bold" as="p" mb="-2px">
70
+ <Skeleton>Password</Skeleton>
71
+ </Text>
72
+ <Text as="p" size="2" color="gray">
73
+ <Skeleton>Set a password to access your account</Skeleton>
74
+ </Text>
75
+ </Flex>
76
+
77
+ <ChangePasswordDialog>
78
+ <Skeleton>
79
+ <SecondaryButton>Change</SecondaryButton>
80
+ </Skeleton>
81
+ </ChangePasswordDialog>
82
+ </Grid>
83
+ </Card>
84
+ );
85
+ }
86
+
87
+ function PasswordSettings({
88
+ settings,
89
+ }: {
90
+ settings: PasswordVerificationMethod;
91
+ }) {
92
+ return (
93
+ <Grid columns="auto 1fr auto" align="center" gap="4">
94
+ <IconPanel>
95
+ <LockClosedIcon />
96
+ </IconPanel>
97
+
98
+ <Flex direction="column">
99
+ <Text size="2" highContrast weight="bold" as="p" mb="-2px">
100
+ Password
101
+ </Text>
102
+
103
+ {settings.isSetUp ? (
104
+ settings.lastUsed && (
105
+ <Text size="2" color="gray">
106
+ Last used{" "}
107
+ {getComparativeReadableDate(
108
+ new Date(),
109
+ new Date(settings.lastUsed),
110
+ )}
111
+ </Text>
112
+ )
113
+ ) : (
114
+ <Text as="p" size="2" color="gray">
115
+ Set a password to access your account
116
+ </Text>
117
+ )}
118
+ </Flex>
119
+
120
+ {settings.isSetUp ? (
121
+ <ChangePasswordDialog>
122
+ <SecondaryButton>Change</SecondaryButton>
123
+ </ChangePasswordDialog>
124
+ ) : (
125
+ <SetPasswordDialog>
126
+ <SecondaryButton>Set a password</SecondaryButton>
127
+ </SetPasswordDialog>
128
+ )}
129
+ </Grid>
130
+ );
131
+ }
132
+
133
+ function MfaSettings({
134
+ settings,
135
+ isPasswordSet,
136
+ }: {
137
+ settings: MfaVerificationMethod;
138
+ isPasswordSet: boolean;
139
+ }) {
140
+ return (
141
+ <Grid columns="auto 1fr auto" align="center" gap="4">
142
+ <IconPanel>
143
+ <ButtonIcon />
144
+ </IconPanel>
145
+
146
+ <Flex direction="column">
147
+ <Text size="2" highContrast weight="bold" as="p" mb="-2px">
148
+ Multi-factor authentication
149
+ </Text>
150
+
151
+ {settings.isSetUp ? (
152
+ <Text size="2">
153
+ Authenticator app
154
+ {settings.lastUsed && (
155
+ <>
156
+ <Text size="2" color="gray" mx="1">
157
+
158
+ </Text>
159
+ <Text size="2" color="gray">
160
+ Last used{" "}
161
+ {getComparativeReadableDate(
162
+ new Date(),
163
+ new Date(settings.lastUsed),
164
+ )}
165
+ </Text>
166
+ </>
167
+ )}
168
+ </Text>
169
+ ) : (
170
+ <Text as="p" size="2" color="gray">
171
+ Secure your account with an extra verification step
172
+ </Text>
173
+ )}
174
+ </Flex>
175
+
176
+ {settings.isSetUp ? (
177
+ <ResetMfaDialog isPasswordSet={isPasswordSet}>
178
+ <SecondaryButton>Disable</SecondaryButton>
179
+ </ResetMfaDialog>
180
+ ) : (
181
+ <AddMfaDialog>
182
+ <SecondaryButton>Set up authenticator app</SecondaryButton>
183
+ </AddMfaDialog>
184
+ )}
185
+ </Grid>
186
+ );
187
+ }
@@ -0,0 +1,204 @@
1
+ "use client";
2
+
3
+ import { Box, Button, Card, Flex, Text } from "@radix-ui/themes";
4
+ import clsx from "clsx";
5
+ import { Badge, SecondaryButton, Skeleton } from "./elements";
6
+ import {
7
+ getComparativeReadableDate,
8
+ getUserLocation,
9
+ parseUserAgent,
10
+ } from "./utils";
11
+ import { LogoutDialog } from "./logout-dialog";
12
+ import { LogoutAllSessionsDialog } from "./logout-all-sessions-dialog";
13
+ import { ActiveSession } from "@repo/api";
14
+ import * as CardList from "../card-list";
15
+ import { IconPanel } from "./icon-panel";
16
+ import { useState } from "react";
17
+ import { GenericError } from "./generic-error";
18
+ import { LaptopIcon, MobileIcon } from "@radix-ui/react-icons";
19
+
20
+ interface UserSessionsProps {
21
+ sessionsData: ActiveSession[];
22
+ currentSessionId: string;
23
+ }
24
+
25
+ export const UserSessions = ({
26
+ sessionsData: sessions,
27
+ currentSessionId,
28
+ }: UserSessionsProps) => {
29
+ const currentSession = sessions.find(
30
+ (session) => session.id === currentSessionId,
31
+ );
32
+ const otherSessions = sessions.filter(
33
+ (session) => session.id !== currentSessionId,
34
+ );
35
+ const [openLogoutDialog, setOpenLogoutDialog] = useState(false);
36
+ const [sessionToSignOut, setSessionToSignOut] =
37
+ useState<ActiveSession | null>(null);
38
+ const [openLogoutAllSessionsDialog, setOpenLogoutAllSessionsDialog] =
39
+ useState(false);
40
+
41
+ return (
42
+ <Flex
43
+ direction="column"
44
+ gap="4"
45
+ className={clsx("woswidgets-widget")}
46
+ data-woswidgets-widget-id="user-sessions"
47
+ >
48
+ <CardList.Root>
49
+ {currentSession && (
50
+ <CardList.Item>
51
+ <UserSession session={currentSession} isCurrentSession />
52
+ </CardList.Item>
53
+ )}
54
+
55
+ {otherSessions.map((session) => (
56
+ <CardList.Item key={session.id}>
57
+ <UserSession
58
+ session={session}
59
+ onSignOut={() => {
60
+ setSessionToSignOut(session);
61
+ setOpenLogoutDialog(true);
62
+ }}
63
+ />
64
+ </CardList.Item>
65
+ ))}
66
+ </CardList.Root>
67
+
68
+ {sessions.length > 1 && (
69
+ <Card size="2">
70
+ <Flex gap="2" justify="between" align="center">
71
+ <Box>
72
+ <Text size="2" highContrast weight="bold" as="p">
73
+ Sign out of all other devices
74
+ </Text>
75
+ <Text size="2" color="gray" as="p">
76
+ Remove access from all devices except this one
77
+ </Text>
78
+ </Box>
79
+
80
+ <SecondaryButton
81
+ onClick={() => {
82
+ setOpenLogoutAllSessionsDialog(true);
83
+ }}
84
+ >
85
+ Sign out
86
+ </SecondaryButton>
87
+ </Flex>
88
+ </Card>
89
+ )}
90
+
91
+ {sessionToSignOut && (
92
+ <LogoutDialog
93
+ session={sessionToSignOut}
94
+ open={openLogoutDialog}
95
+ onOpenChange={setOpenLogoutDialog}
96
+ />
97
+ )}
98
+
99
+ <LogoutAllSessionsDialog
100
+ currentSessionId={currentSessionId}
101
+ open={openLogoutAllSessionsDialog}
102
+ onOpenChange={setOpenLogoutAllSessionsDialog}
103
+ />
104
+ </Flex>
105
+ );
106
+ };
107
+
108
+ export function UserSessionsLoading() {
109
+ return (
110
+ <Card size="2">
111
+ <Flex gap="4" align="center">
112
+ <Skeleton>
113
+ <IconPanel />
114
+ </Skeleton>
115
+
116
+ <Flex direction="column">
117
+ <Text size="2" highContrast weight="bold" as="p" mb="-2px">
118
+ <Skeleton>The location</Skeleton>
119
+ </Text>
120
+
121
+ <Text size="2" color="gray" as="p">
122
+ <Skeleton>The location</Skeleton>
123
+ </Text>
124
+ </Flex>
125
+ </Flex>
126
+ </Card>
127
+ );
128
+ }
129
+
130
+ export function UserSessionsError({ error }: { error: unknown }) {
131
+ return (
132
+ <Card size="2">
133
+ <GenericError error={error} />
134
+ </Card>
135
+ );
136
+ }
137
+
138
+ interface UserSessionProps {
139
+ session: ActiveSession;
140
+ isCurrentSession?: boolean;
141
+ onSignOut?: (session: ActiveSession) => void;
142
+ }
143
+
144
+ const UserSession = ({
145
+ session,
146
+ isCurrentSession = false,
147
+ onSignOut,
148
+ }: UserSessionProps) => {
149
+ const userAgent = parseUserAgent(session.userAgent);
150
+ const userLocation = getUserLocation(
151
+ session.currentLocation,
152
+ session.ipAddress,
153
+ );
154
+
155
+ return (
156
+ <Flex gap="4" align="center">
157
+ <IconPanel>
158
+ {userAgent.isMobile ? <MobileIcon /> : <LaptopIcon />}
159
+ </IconPanel>
160
+
161
+ <Flex direction="column">
162
+ <Text size="2" highContrast weight="bold" as="p" mb="-2px">
163
+ {userAgent.pretty}
164
+ </Text>
165
+
166
+ <Flex gap="1" align="center">
167
+ <Text size="2" color="gray" as="p">
168
+ {userLocation}
169
+ </Text>
170
+
171
+ {isCurrentSession && <Badge ml="2">This device</Badge>}
172
+
173
+ {!isCurrentSession && session.lastActivityAt && (
174
+ <>
175
+ <Text size="2" color="gray">
176
+
177
+ </Text>
178
+ <Text size="2" color="gray">
179
+ Last seen{" "}
180
+ {getComparativeReadableDate(
181
+ new Date(),
182
+ new Date(session.lastActivityAt),
183
+ )}
184
+ </Text>
185
+ </>
186
+ )}
187
+ </Flex>
188
+ </Flex>
189
+
190
+ {!isCurrentSession && (
191
+ <Flex ml="auto" mr="2">
192
+ <Button
193
+ variant="ghost"
194
+ onClick={() => {
195
+ onSignOut?.(session);
196
+ }}
197
+ >
198
+ Sign out
199
+ </Button>
200
+ </Flex>
201
+ )}
202
+ </Flex>
203
+ );
204
+ };
@@ -2,15 +2,15 @@
2
2
 
3
3
  import { Select } from "@radix-ui/themes";
4
4
  import * as React from "react";
5
- import type { Role } from "./api/role";
6
5
  import { SelectContent, SelectItem, SelectTrigger } from "./elements";
7
6
  import { useUsersManagementContext } from "./users-management-context";
7
+ import { MemberRole } from "@repo/api";
8
8
 
9
9
  const ALL_ROLES_NAME = "All";
10
10
  const ALL_ROLES_VALUE = "null";
11
11
 
12
12
  type UsersFilterProps = React.ComponentPropsWithoutRef<typeof Select.Root> & {
13
- roles: Role[] | undefined;
13
+ roles: MemberRole[] | undefined;
14
14
  disabled?: boolean;
15
15
  };
16
16