@orthacms/users-admin 0.0.0-reserve.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 (328) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/lib/api/useAddWorkspaceMember/index.d.ts +16 -0
  7. package/dist/lib/api/useAddWorkspaceMember/index.d.ts.map +1 -0
  8. package/dist/lib/api/useInviteMember/index.d.ts +17 -0
  9. package/dist/lib/api/useInviteMember/index.d.ts.map +1 -0
  10. package/dist/lib/api/useMembers/index.d.ts +15 -0
  11. package/dist/lib/api/useMembers/index.d.ts.map +1 -0
  12. package/dist/lib/api/useMembersMutation/index.d.ts +13 -0
  13. package/dist/lib/api/useMembersMutation/index.d.ts.map +1 -0
  14. package/dist/lib/api/useRemoveWorkspaceMember/index.d.ts +15 -0
  15. package/dist/lib/api/useRemoveWorkspaceMember/index.d.ts.map +1 -0
  16. package/dist/lib/api/useResendInvite/index.d.ts +8 -0
  17. package/dist/lib/api/useResendInvite/index.d.ts.map +1 -0
  18. package/dist/lib/api/useRevokeInvite/index.d.ts +7 -0
  19. package/dist/lib/api/useRevokeInvite/index.d.ts.map +1 -0
  20. package/dist/lib/api/useRevokeSession/index.d.ts +15 -0
  21. package/dist/lib/api/useRevokeSession/index.d.ts.map +1 -0
  22. package/dist/lib/api/useSetMemberStatus/index.d.ts +15 -0
  23. package/dist/lib/api/useSetMemberStatus/index.d.ts.map +1 -0
  24. package/dist/lib/api/useUpdateMember/index.d.ts +15 -0
  25. package/dist/lib/api/useUpdateMember/index.d.ts.map +1 -0
  26. package/dist/lib/api/useUserDetail/index.d.ts +9 -0
  27. package/dist/lib/api/useUserDetail/index.d.ts.map +1 -0
  28. package/dist/lib/api/useUserSessions/index.d.ts +25 -0
  29. package/dist/lib/api/useUserSessions/index.d.ts.map +1 -0
  30. package/dist/lib/api/useWorkspaceOptions/index.d.ts +18 -0
  31. package/dist/lib/api/useWorkspaceOptions/index.d.ts.map +1 -0
  32. package/dist/lib/application/useAddWorkspaceMember/index.d.ts +11 -0
  33. package/dist/lib/application/useAddWorkspaceMember/index.d.ts.map +1 -0
  34. package/dist/lib/application/useAddWorkspaceMember/index.js +21 -0
  35. package/dist/lib/application/useInviteMember/index.d.ts +12 -0
  36. package/dist/lib/application/useInviteMember/index.d.ts.map +1 -0
  37. package/dist/lib/application/useInviteMember/index.js +12 -0
  38. package/dist/lib/application/useInviteMemberFlow/index.d.ts +59 -0
  39. package/dist/lib/application/useInviteMemberFlow/index.d.ts.map +1 -0
  40. package/dist/lib/application/useInviteMemberFlow/index.js +47 -0
  41. package/dist/lib/application/useIssuePasswordReset/index.d.ts +12 -0
  42. package/dist/lib/application/useIssuePasswordReset/index.d.ts.map +1 -0
  43. package/dist/lib/application/useIssuePasswordReset/index.js +14 -0
  44. package/dist/lib/application/useMembers/index.d.ts +15 -0
  45. package/dist/lib/application/useMembers/index.d.ts.map +1 -0
  46. package/dist/lib/application/useMembers/index.js +23 -0
  47. package/dist/lib/application/useMembersMutation/index.d.ts +14 -0
  48. package/dist/lib/application/useMembersMutation/index.d.ts.map +1 -0
  49. package/dist/lib/application/useMembersMutation/index.js +25 -0
  50. package/dist/lib/application/usePreferences/index.d.ts +15 -0
  51. package/dist/lib/application/usePreferences/index.d.ts.map +1 -0
  52. package/dist/lib/application/usePreferences/index.js +28 -0
  53. package/dist/lib/application/useRemoveWorkspaceMember/index.d.ts +10 -0
  54. package/dist/lib/application/useRemoveWorkspaceMember/index.d.ts.map +1 -0
  55. package/dist/lib/application/useRemoveWorkspaceMember/index.js +20 -0
  56. package/dist/lib/application/useResendInvite/index.d.ts +10 -0
  57. package/dist/lib/application/useResendInvite/index.d.ts.map +1 -0
  58. package/dist/lib/application/useResendInvite/index.js +12 -0
  59. package/dist/lib/application/useRevokeInvite/index.d.ts +7 -0
  60. package/dist/lib/application/useRevokeInvite/index.d.ts.map +1 -0
  61. package/dist/lib/application/useRevokeInvite/index.js +10 -0
  62. package/dist/lib/application/useRevokeSession/index.d.ts +10 -0
  63. package/dist/lib/application/useRevokeSession/index.d.ts.map +1 -0
  64. package/dist/lib/application/useRevokeSession/index.js +19 -0
  65. package/dist/lib/application/useSetMemberStatus/index.d.ts +11 -0
  66. package/dist/lib/application/useSetMemberStatus/index.d.ts.map +1 -0
  67. package/dist/lib/application/useSetMemberStatus/index.js +11 -0
  68. package/dist/lib/application/useUpdateMember/index.d.ts +11 -0
  69. package/dist/lib/application/useUpdateMember/index.d.ts.map +1 -0
  70. package/dist/lib/application/useUpdateMember/index.js +11 -0
  71. package/dist/lib/application/useUpdateTheme/index.d.ts +14 -0
  72. package/dist/lib/application/useUpdateTheme/index.d.ts.map +1 -0
  73. package/dist/lib/application/useUpdateTheme/index.js +25 -0
  74. package/dist/lib/application/useUserDetail/index.d.ts +9 -0
  75. package/dist/lib/application/useUserDetail/index.d.ts.map +1 -0
  76. package/dist/lib/application/useUserDetail/index.js +17 -0
  77. package/dist/lib/application/useUserSessions/index.d.ts +9 -0
  78. package/dist/lib/application/useUserSessions/index.d.ts.map +1 -0
  79. package/dist/lib/application/useUserSessions/index.js +17 -0
  80. package/dist/lib/application/useWorkspaceOptions/index.d.ts +10 -0
  81. package/dist/lib/application/useWorkspaceOptions/index.d.ts.map +1 -0
  82. package/dist/lib/application/useWorkspaceOptions/index.js +17 -0
  83. package/dist/lib/components/AccountMenu/index.d.ts +9 -0
  84. package/dist/lib/components/AccountMenu/index.d.ts.map +1 -0
  85. package/dist/lib/components/AddToWorkspacesDialog/index.d.ts +19 -0
  86. package/dist/lib/components/AddToWorkspacesDialog/index.d.ts.map +1 -0
  87. package/dist/lib/components/BackLink/index.d.ts +14 -0
  88. package/dist/lib/components/BackLink/index.d.ts.map +1 -0
  89. package/dist/lib/components/ConfirmDialog/index.d.ts +30 -0
  90. package/dist/lib/components/ConfirmDialog/index.d.ts.map +1 -0
  91. package/dist/lib/components/EditMemberDialog/index.d.ts +21 -0
  92. package/dist/lib/components/EditMemberDialog/index.d.ts.map +1 -0
  93. package/dist/lib/components/MemberAvatar/index.d.ts +24 -0
  94. package/dist/lib/components/MemberAvatar/index.d.ts.map +1 -0
  95. package/dist/lib/components/MembersEmpty/index.d.ts +16 -0
  96. package/dist/lib/components/MembersEmpty/index.d.ts.map +1 -0
  97. package/dist/lib/components/MembersNoAccess/index.d.ts +7 -0
  98. package/dist/lib/components/MembersNoAccess/index.d.ts.map +1 -0
  99. package/dist/lib/components/MembersPagination/index.d.ts +17 -0
  100. package/dist/lib/components/MembersPagination/index.d.ts.map +1 -0
  101. package/dist/lib/components/MembersSkeleton/index.d.ts +32 -0
  102. package/dist/lib/components/MembersSkeleton/index.d.ts.map +1 -0
  103. package/dist/lib/components/MembersTable/MemberRoleChip/index.d.ts +10 -0
  104. package/dist/lib/components/MembersTable/MemberRoleChip/index.d.ts.map +1 -0
  105. package/dist/lib/components/MembersTable/MemberRowActions/index.d.ts +16 -0
  106. package/dist/lib/components/MembersTable/MemberRowActions/index.d.ts.map +1 -0
  107. package/dist/lib/components/MembersTable/MemberStatusBadge/index.d.ts +10 -0
  108. package/dist/lib/components/MembersTable/MemberStatusBadge/index.d.ts.map +1 -0
  109. package/dist/lib/components/MembersTable/MemberWorkspaces/index.d.ts +10 -0
  110. package/dist/lib/components/MembersTable/MemberWorkspaces/index.d.ts.map +1 -0
  111. package/dist/lib/components/MembersTable/index.d.ts +12 -0
  112. package/dist/lib/components/MembersTable/index.d.ts.map +1 -0
  113. package/dist/lib/components/MembersToolbar/index.d.ts +13 -0
  114. package/dist/lib/components/MembersToolbar/index.d.ts.map +1 -0
  115. package/dist/lib/components/RolePicker/index.d.ts +18 -0
  116. package/dist/lib/components/RolePicker/index.d.ts.map +1 -0
  117. package/dist/lib/components/SessionCard/index.d.ts +15 -0
  118. package/dist/lib/components/SessionCard/index.d.ts.map +1 -0
  119. package/dist/lib/components/UserDetailLayout/UserDetailTabs/index.d.ts +13 -0
  120. package/dist/lib/components/UserDetailLayout/UserDetailTabs/index.d.ts.map +1 -0
  121. package/dist/lib/components/UserDetailLayout/UserHero/index.d.ts +10 -0
  122. package/dist/lib/components/UserDetailLayout/UserHero/index.d.ts.map +1 -0
  123. package/dist/lib/components/UserDetailLayout/UserSideRail/index.d.ts +12 -0
  124. package/dist/lib/components/UserDetailLayout/UserSideRail/index.d.ts.map +1 -0
  125. package/dist/lib/components/UserDetailLayout/UserStatsStrip/index.d.ts +10 -0
  126. package/dist/lib/components/UserDetailLayout/UserStatsStrip/index.d.ts.map +1 -0
  127. package/dist/lib/components/UserDetailLayout/index.d.ts +13 -0
  128. package/dist/lib/components/UserDetailLayout/index.d.ts.map +1 -0
  129. package/dist/lib/components/UserDetailRouter/index.d.ts +13 -0
  130. package/dist/lib/components/UserDetailRouter/index.d.ts.map +1 -0
  131. package/dist/lib/components/WorkspaceMembershipCard/index.d.ts +15 -0
  132. package/dist/lib/components/WorkspaceMembershipCard/index.d.ts.map +1 -0
  133. package/dist/lib/domain/member/index.d.ts +61 -0
  134. package/dist/lib/domain/member/index.d.ts.map +1 -0
  135. package/dist/lib/domain/member/index.js +61 -0
  136. package/dist/lib/domain/types/member/index.d.ts +90 -0
  137. package/dist/lib/domain/types/member/index.d.ts.map +1 -0
  138. package/dist/lib/domain/types/member/index.js +1 -0
  139. package/dist/lib/domain/types/session/index.d.ts +18 -0
  140. package/dist/lib/domain/types/session/index.d.ts.map +1 -0
  141. package/dist/lib/domain/types/session/index.js +1 -0
  142. package/dist/lib/domain/types/workspaceOption/index.d.ts +15 -0
  143. package/dist/lib/domain/types/workspaceOption/index.d.ts.map +1 -0
  144. package/dist/lib/domain/types/workspaceOption/index.js +1 -0
  145. package/dist/lib/domain/value-objects/email/index.d.ts +24 -0
  146. package/dist/lib/domain/value-objects/email/index.d.ts.map +1 -0
  147. package/dist/lib/domain/value-objects/email/index.js +45 -0
  148. package/dist/lib/infrastructure/httpMemberGateway/index.d.ts +12 -0
  149. package/dist/lib/infrastructure/httpMemberGateway/index.d.ts.map +1 -0
  150. package/dist/lib/infrastructure/httpMemberGateway/index.js +158 -0
  151. package/dist/lib/infrastructure/inviteLink/index.d.ts +13 -0
  152. package/dist/lib/infrastructure/inviteLink/index.d.ts.map +1 -0
  153. package/dist/lib/infrastructure/inviteLink/index.js +23 -0
  154. package/dist/lib/infrastructure/memberGateway/index.d.ts +103 -0
  155. package/dist/lib/infrastructure/memberGateway/index.d.ts.map +1 -0
  156. package/dist/lib/infrastructure/memberGateway/index.js +1 -0
  157. package/dist/lib/infrastructure/memberMapper/index.d.ts +59 -0
  158. package/dist/lib/infrastructure/memberMapper/index.d.ts.map +1 -0
  159. package/dist/lib/infrastructure/memberMapper/index.js +52 -0
  160. package/dist/lib/infrastructure/membersKeys/index.d.ts +37 -0
  161. package/dist/lib/infrastructure/membersKeys/index.d.ts.map +1 -0
  162. package/dist/lib/infrastructure/membersKeys/index.js +25 -0
  163. package/dist/lib/infrastructure/passwordResetLink/index.d.ts +13 -0
  164. package/dist/lib/infrastructure/passwordResetLink/index.d.ts.map +1 -0
  165. package/dist/lib/infrastructure/passwordResetLink/index.js +24 -0
  166. package/dist/lib/infrastructure/preferencesGateway/index.d.ts +37 -0
  167. package/dist/lib/infrastructure/preferencesGateway/index.d.ts.map +1 -0
  168. package/dist/lib/infrastructure/preferencesGateway/index.js +43 -0
  169. package/dist/lib/pages/InviteMemberPage/index.d.ts +7 -0
  170. package/dist/lib/pages/InviteMemberPage/index.d.ts.map +1 -0
  171. package/dist/lib/pages/MembersPage/index.d.ts +13 -0
  172. package/dist/lib/pages/MembersPage/index.d.ts.map +1 -0
  173. package/dist/lib/pages/UserAccessPage/index.d.ts +9 -0
  174. package/dist/lib/pages/UserAccessPage/index.d.ts.map +1 -0
  175. package/dist/lib/pages/UserActivityPage/index.d.ts +8 -0
  176. package/dist/lib/pages/UserActivityPage/index.d.ts.map +1 -0
  177. package/dist/lib/pages/UserGeneralPage/index.d.ts +7 -0
  178. package/dist/lib/pages/UserGeneralPage/index.d.ts.map +1 -0
  179. package/dist/lib/pages/UserRolesPage/index.d.ts +8 -0
  180. package/dist/lib/pages/UserRolesPage/index.d.ts.map +1 -0
  181. package/dist/lib/pages/UserSessionsPage/index.d.ts +7 -0
  182. package/dist/lib/pages/UserSessionsPage/index.d.ts.map +1 -0
  183. package/dist/lib/pages/UserWorkspacesPage/index.d.ts +8 -0
  184. package/dist/lib/pages/UserWorkspacesPage/index.d.ts.map +1 -0
  185. package/dist/lib/presentation/components/AccountMenu/index.d.ts +9 -0
  186. package/dist/lib/presentation/components/AccountMenu/index.d.ts.map +1 -0
  187. package/dist/lib/presentation/components/AccountMenu/index.js +42 -0
  188. package/dist/lib/presentation/components/AddToWorkspacesDialog/index.d.ts +19 -0
  189. package/dist/lib/presentation/components/AddToWorkspacesDialog/index.d.ts.map +1 -0
  190. package/dist/lib/presentation/components/AddToWorkspacesDialog/index.js +89 -0
  191. package/dist/lib/presentation/components/BackLink/index.d.ts +14 -0
  192. package/dist/lib/presentation/components/BackLink/index.d.ts.map +1 -0
  193. package/dist/lib/presentation/components/BackLink/index.js +12 -0
  194. package/dist/lib/presentation/components/InviteLinkDialog/index.d.ts +25 -0
  195. package/dist/lib/presentation/components/InviteLinkDialog/index.d.ts.map +1 -0
  196. package/dist/lib/presentation/components/InviteLinkDialog/index.js +77 -0
  197. package/dist/lib/presentation/components/InviteLinkPanel/index.d.ts +26 -0
  198. package/dist/lib/presentation/components/InviteLinkPanel/index.d.ts.map +1 -0
  199. package/dist/lib/presentation/components/InviteLinkPanel/index.js +59 -0
  200. package/dist/lib/presentation/components/InviteSent/index.d.ts +20 -0
  201. package/dist/lib/presentation/components/InviteSent/index.d.ts.map +1 -0
  202. package/dist/lib/presentation/components/InviteSent/index.js +60 -0
  203. package/dist/lib/presentation/components/MemberAvatar/index.d.ts +24 -0
  204. package/dist/lib/presentation/components/MemberAvatar/index.d.ts.map +1 -0
  205. package/dist/lib/presentation/components/MemberAvatar/index.js +14 -0
  206. package/dist/lib/presentation/components/MembersEmpty/index.d.ts +16 -0
  207. package/dist/lib/presentation/components/MembersEmpty/index.d.ts.map +1 -0
  208. package/dist/lib/presentation/components/MembersEmpty/index.js +42 -0
  209. package/dist/lib/presentation/components/MembersNoAccess/index.d.ts +7 -0
  210. package/dist/lib/presentation/components/MembersNoAccess/index.d.ts.map +1 -0
  211. package/dist/lib/presentation/components/MembersNoAccess/index.js +24 -0
  212. package/dist/lib/presentation/components/MembersPagination/index.d.ts +17 -0
  213. package/dist/lib/presentation/components/MembersPagination/index.d.ts.map +1 -0
  214. package/dist/lib/presentation/components/MembersPagination/index.js +45 -0
  215. package/dist/lib/presentation/components/MembersSkeleton/index.d.ts +32 -0
  216. package/dist/lib/presentation/components/MembersSkeleton/index.d.ts.map +1 -0
  217. package/dist/lib/presentation/components/MembersSkeleton/index.js +61 -0
  218. package/dist/lib/presentation/components/MembersTable/MemberRoleChip/index.d.ts +17 -0
  219. package/dist/lib/presentation/components/MembersTable/MemberRoleChip/index.d.ts.map +1 -0
  220. package/dist/lib/presentation/components/MembersTable/MemberRoleChip/index.js +36 -0
  221. package/dist/lib/presentation/components/MembersTable/MemberRowActions/index.d.ts +16 -0
  222. package/dist/lib/presentation/components/MembersTable/MemberRowActions/index.d.ts.map +1 -0
  223. package/dist/lib/presentation/components/MembersTable/MemberRowActions/index.js +284 -0
  224. package/dist/lib/presentation/components/MembersTable/MemberStatusBadge/index.d.ts +10 -0
  225. package/dist/lib/presentation/components/MembersTable/MemberStatusBadge/index.d.ts.map +1 -0
  226. package/dist/lib/presentation/components/MembersTable/MemberStatusBadge/index.js +49 -0
  227. package/dist/lib/presentation/components/MembersTable/MemberWorkspaces/index.d.ts +10 -0
  228. package/dist/lib/presentation/components/MembersTable/MemberWorkspaces/index.d.ts.map +1 -0
  229. package/dist/lib/presentation/components/MembersTable/MemberWorkspaces/index.js +37 -0
  230. package/dist/lib/presentation/components/MembersTable/index.d.ts +12 -0
  231. package/dist/lib/presentation/components/MembersTable/index.d.ts.map +1 -0
  232. package/dist/lib/presentation/components/MembersTable/index.js +54 -0
  233. package/dist/lib/presentation/components/MembersTable/membersTableAnchor/index.d.ts +14 -0
  234. package/dist/lib/presentation/components/MembersTable/membersTableAnchor/index.d.ts.map +1 -0
  235. package/dist/lib/presentation/components/MembersToolbar/index.d.ts +15 -0
  236. package/dist/lib/presentation/components/MembersToolbar/index.d.ts.map +1 -0
  237. package/dist/lib/presentation/components/MembersToolbar/index.js +23 -0
  238. package/dist/lib/presentation/components/PasswordResetCard/index.d.ts +19 -0
  239. package/dist/lib/presentation/components/PasswordResetCard/index.d.ts.map +1 -0
  240. package/dist/lib/presentation/components/PasswordResetCard/index.js +109 -0
  241. package/dist/lib/presentation/components/PasswordResetLinkDialog/index.d.ts +27 -0
  242. package/dist/lib/presentation/components/PasswordResetLinkDialog/index.d.ts.map +1 -0
  243. package/dist/lib/presentation/components/PasswordResetLinkDialog/index.js +79 -0
  244. package/dist/lib/presentation/components/PasswordResetLinkPanel/index.d.ts +31 -0
  245. package/dist/lib/presentation/components/PasswordResetLinkPanel/index.d.ts.map +1 -0
  246. package/dist/lib/presentation/components/PasswordResetLinkPanel/index.js +64 -0
  247. package/dist/lib/presentation/components/RolePicker/index.d.ts +21 -0
  248. package/dist/lib/presentation/components/RolePicker/index.d.ts.map +1 -0
  249. package/dist/lib/presentation/components/RolePicker/index.js +51 -0
  250. package/dist/lib/presentation/components/SessionCard/index.d.ts +15 -0
  251. package/dist/lib/presentation/components/SessionCard/index.d.ts.map +1 -0
  252. package/dist/lib/presentation/components/SessionCard/index.js +43 -0
  253. package/dist/lib/presentation/components/ThemeSync/index.d.ts +21 -0
  254. package/dist/lib/presentation/components/ThemeSync/index.d.ts.map +1 -0
  255. package/dist/lib/presentation/components/ThemeSync/index.js +32 -0
  256. package/dist/lib/presentation/components/UserDetailLayout/UserDetailTabs/index.d.ts +15 -0
  257. package/dist/lib/presentation/components/UserDetailLayout/UserDetailTabs/index.d.ts.map +1 -0
  258. package/dist/lib/presentation/components/UserDetailLayout/UserDetailTabs/index.js +52 -0
  259. package/dist/lib/presentation/components/UserDetailLayout/UserHero/index.d.ts +10 -0
  260. package/dist/lib/presentation/components/UserDetailLayout/UserHero/index.d.ts.map +1 -0
  261. package/dist/lib/presentation/components/UserDetailLayout/UserHero/index.js +26 -0
  262. package/dist/lib/presentation/components/UserDetailLayout/UserStatsStrip/index.d.ts +10 -0
  263. package/dist/lib/presentation/components/UserDetailLayout/UserStatsStrip/index.d.ts.map +1 -0
  264. package/dist/lib/presentation/components/UserDetailLayout/UserStatsStrip/index.js +39 -0
  265. package/dist/lib/presentation/components/UserDetailLayout/index.d.ts +13 -0
  266. package/dist/lib/presentation/components/UserDetailLayout/index.d.ts.map +1 -0
  267. package/dist/lib/presentation/components/UserDetailLayout/index.js +101 -0
  268. package/dist/lib/presentation/components/UserDetailRouter/index.d.ts +16 -0
  269. package/dist/lib/presentation/components/UserDetailRouter/index.d.ts.map +1 -0
  270. package/dist/lib/presentation/components/UserDetailRouter/index.js +33 -0
  271. package/dist/lib/presentation/components/WorkspaceMembershipCard/index.d.ts +15 -0
  272. package/dist/lib/presentation/components/WorkspaceMembershipCard/index.d.ts.map +1 -0
  273. package/dist/lib/presentation/components/WorkspaceMembershipCard/index.js +27 -0
  274. package/dist/lib/presentation/membersFilterFields/index.d.ts +10 -0
  275. package/dist/lib/presentation/membersFilterFields/index.d.ts.map +1 -0
  276. package/dist/lib/presentation/membersFilterFields/index.js +67 -0
  277. package/dist/lib/presentation/membersResultsAnchor/index.d.ts +17 -0
  278. package/dist/lib/presentation/membersResultsAnchor/index.d.ts.map +1 -0
  279. package/dist/lib/presentation/membersResultsAnchor/index.js +16 -0
  280. package/dist/lib/presentation/pages/InviteMemberPage/index.d.ts +7 -0
  281. package/dist/lib/presentation/pages/InviteMemberPage/index.d.ts.map +1 -0
  282. package/dist/lib/presentation/pages/InviteMemberPage/index.js +346 -0
  283. package/dist/lib/presentation/pages/MembersPage/index.d.ts +13 -0
  284. package/dist/lib/presentation/pages/MembersPage/index.d.ts.map +1 -0
  285. package/dist/lib/presentation/pages/MembersPage/index.js +140 -0
  286. package/dist/lib/presentation/pages/UserAccessPage/index.d.ts +18 -0
  287. package/dist/lib/presentation/pages/UserAccessPage/index.d.ts.map +1 -0
  288. package/dist/lib/presentation/pages/UserAccessPage/index.js +153 -0
  289. package/dist/lib/presentation/pages/UserActivityPage/index.d.ts +8 -0
  290. package/dist/lib/presentation/pages/UserActivityPage/index.d.ts.map +1 -0
  291. package/dist/lib/presentation/pages/UserActivityPage/index.js +228 -0
  292. package/dist/lib/presentation/pages/UserGeneralPage/index.d.ts +7 -0
  293. package/dist/lib/presentation/pages/UserGeneralPage/index.d.ts.map +1 -0
  294. package/dist/lib/presentation/pages/UserGeneralPage/index.js +72 -0
  295. package/dist/lib/presentation/pages/UserPreferencesPage/ThemePreview.d.ts +11 -0
  296. package/dist/lib/presentation/pages/UserPreferencesPage/ThemePreview.d.ts.map +1 -0
  297. package/dist/lib/presentation/pages/UserPreferencesPage/ThemePreview.js +24 -0
  298. package/dist/lib/presentation/pages/UserPreferencesPage/index.d.ts +10 -0
  299. package/dist/lib/presentation/pages/UserPreferencesPage/index.d.ts.map +1 -0
  300. package/dist/lib/presentation/pages/UserPreferencesPage/index.js +148 -0
  301. package/dist/lib/presentation/pages/UserRolesPage/index.d.ts +8 -0
  302. package/dist/lib/presentation/pages/UserRolesPage/index.d.ts.map +1 -0
  303. package/dist/lib/presentation/pages/UserRolesPage/index.js +110 -0
  304. package/dist/lib/presentation/pages/UserSessionsPage/index.d.ts +7 -0
  305. package/dist/lib/presentation/pages/UserSessionsPage/index.d.ts.map +1 -0
  306. package/dist/lib/presentation/pages/UserSessionsPage/index.js +121 -0
  307. package/dist/lib/presentation/pages/UserWorkspacesPage/index.d.ts +8 -0
  308. package/dist/lib/presentation/pages/UserWorkspacesPage/index.d.ts.map +1 -0
  309. package/dist/lib/presentation/pages/UserWorkspacesPage/index.js +111 -0
  310. package/dist/lib/presentation/userDetailContext/index.d.ts +13 -0
  311. package/dist/lib/presentation/userDetailContext/index.d.ts.map +1 -0
  312. package/dist/lib/presentation/userDetailContext/index.js +5 -0
  313. package/dist/lib/presentation/usersPlugin/index.d.ts +27 -0
  314. package/dist/lib/presentation/usersPlugin/index.d.ts.map +1 -0
  315. package/dist/lib/presentation/usersPlugin/index.js +109 -0
  316. package/dist/lib/types/member/index.d.ts +63 -0
  317. package/dist/lib/types/member/index.d.ts.map +1 -0
  318. package/dist/lib/utils/membersFilterFields/index.d.ts +10 -0
  319. package/dist/lib/utils/membersFilterFields/index.d.ts.map +1 -0
  320. package/dist/lib/utils/membersKeys/index.d.ts +27 -0
  321. package/dist/lib/utils/membersKeys/index.d.ts.map +1 -0
  322. package/dist/lib/utils/toMember/index.d.ts +33 -0
  323. package/dist/lib/utils/toMember/index.d.ts.map +1 -0
  324. package/dist/lib/utils/userDetailContext/index.d.ts +13 -0
  325. package/dist/lib/utils/userDetailContext/index.d.ts.map +1 -0
  326. package/dist/lib/utils/usersPlugin/index.d.ts +27 -0
  327. package/dist/lib/utils/usersPlugin/index.d.ts.map +1 -0
  328. package/package.json +50 -0
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { defineMessages, useIntl } from 'react-intl';
4
+ import { Link } from 'react-router-dom';
5
+ import { CircleCheck } from 'lucide-react';
6
+ import { useUnsavedChanges } from '@orthacms/utils-admin';
7
+ import { Button, CardContent, CardDescription, CardHeader, CardTitle, WizardStepCard } from '@orthacms/design-system';
8
+ import { InviteLinkPanel } from '../InviteLinkPanel';
9
+ /** Intl descriptors for {@link InviteSent}, co-located with the component. */
10
+ const messages = defineMessages({
11
+ title: {
12
+ id: 'users.inviteSent.title',
13
+ defaultMessage: 'Invite created for {email}'
14
+ },
15
+ description: {
16
+ id: 'users.inviteSent.description',
17
+ defaultMessage: 'Their account exists but is dormant until they accept. Nothing was emailed — this install has no mail server yet — so pass the link below to them yourself.'
18
+ },
19
+ nextTitle: {
20
+ id: 'users.inviteSent.nextTitle',
21
+ defaultMessage: 'What happens when they open it'
22
+ },
23
+ nextOpen: {
24
+ id: 'users.inviteSent.nextOpen',
25
+ defaultMessage: 'They land on a page that already knows their name and email — the only thing they choose is a password.'
26
+ },
27
+ nextRole: {
28
+ id: 'users.inviteSent.nextRole',
29
+ defaultMessage: 'Their account activates with the {role} role and the workspace access you picked. Nothing they type can change either.'
30
+ },
31
+ nextSignedIn: {
32
+ id: 'users.inviteSent.nextSignedIn',
33
+ defaultMessage: 'They’re signed in immediately, and the link stops working. If it expires first, resend the invite from their row.'
34
+ },
35
+ backToMembers: {
36
+ id: 'users.inviteSent.backToMembers',
37
+ defaultMessage: 'Back to members'
38
+ }
39
+ });
40
+ /**
41
+ * The invite wizard's final step: the invite exists, and here is the link.
42
+ *
43
+ * It is a step rather than a toast-then-redirect because the link is shown
44
+ * **once** — the server keeps only its hash, so navigating away before copying
45
+ * it means resending the invite. The copy spells out what the invitee will see,
46
+ * since the admin can't preview the page they're sending someone to.
47
+ */
48
+ export function InviteSent({ email, link, roleLabel }) {
49
+ const intl = useIntl();
50
+ const [copied, setCopied] = useState(false);
51
+ // Until the link is captured, treat leaving this step as losing unsaved
52
+ // work — because it is: the token exists only in this component's state and
53
+ // is never re-fetchable. The app-wide guard covers every exit (links,
54
+ // programmatic navigation, and reload via `beforeunload`), which is the
55
+ // only one a component here could not intercept for itself.
56
+ useUnsavedChanges(!copied, 'users.invite.link');
57
+ return (_jsxs(WizardStepCard, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { asChild: true, className: "flex items-center gap-2", children: _jsxs("h2", { children: [_jsx(CircleCheck, { "aria-hidden": true, className: "size-5 shrink-0 text-success-soft-foreground" }), intl.formatMessage(messages.title, { email })] }) }), _jsx(CardDescription, { children: intl.formatMessage(messages.description) })] }), _jsxs(CardContent, { className: "flex flex-col gap-8", children: [_jsx(InviteLinkPanel, { link: link, email: email, onCopied: () => setCopied(true) }), _jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("h3", { className: "text-sm font-medium", children: intl.formatMessage(messages.nextTitle) }), _jsxs("ul", { className: "flex list-disc flex-col gap-2 pl-5 text-sm text-muted-foreground", children: [_jsx("li", { children: intl.formatMessage(messages.nextOpen) }), _jsx("li", { children: intl.formatMessage(messages.nextRole, {
58
+ role: roleLabel
59
+ }) }), _jsx("li", { children: intl.formatMessage(messages.nextSignedIn) })] })] }), _jsx(Button, { asChild: true, className: "self-start", children: _jsx(Link, { to: "/users", children: intl.formatMessage(messages.backToMembers) }) })] })] }));
60
+ }
@@ -0,0 +1,24 @@
1
+ import type { CSSProperties } from 'react';
2
+ import { type AvatarColor } from '@orthacms/design-system';
3
+ type MemberAvatarProps = {
4
+ /** Initials rendered as the avatar content. */
5
+ initials: string;
6
+ /** Accent color tinting the avatar background. */
7
+ color: AvatarColor;
8
+ /** Extra classes (size, border). */
9
+ className?: string;
10
+ /** Extra inline styles (e.g. overlap margin in a stack). */
11
+ style?: CSSProperties;
12
+ };
13
+ /**
14
+ * An initials avatar tinted with one of the shared accent colors — members in
15
+ * the table, and the smaller workspace chips in the Workspaces column, both
16
+ * sized via `className`. Shape comes from the design-system `Avatar` default
17
+ * (rounded square). Purely decorative: the member/workspace
18
+ * name is always rendered as adjacent text (or an `aria-label` on the
19
+ * enclosing control), so the initials are hidden from assistive tech to avoid
20
+ * a meaningless "J D A B" reading.
21
+ */
22
+ export declare function MemberAvatar({ initials, color, className, style }: MemberAvatarProps): import("react").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/MemberAvatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAKH,KAAK,WAAW,EACnB,MAAM,yBAAyB,CAAC;AAEjC,KAAK,iBAAiB,GAAG;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,KAAK,EAAE,WAAW,CAAC;IACnB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,KAAK,EACR,EAAE,iBAAiB,+BAYnB"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Avatar, AvatarFallback, avatarColorVar, cn } from '@orthacms/design-system';
3
+ /**
4
+ * An initials avatar tinted with one of the shared accent colors — members in
5
+ * the table, and the smaller workspace chips in the Workspaces column, both
6
+ * sized via `className`. Shape comes from the design-system `Avatar` default
7
+ * (rounded square). Purely decorative: the member/workspace
8
+ * name is always rendered as adjacent text (or an `aria-label` on the
9
+ * enclosing control), so the initials are hidden from assistive tech to avoid
10
+ * a meaningless "J D A B" reading.
11
+ */
12
+ export function MemberAvatar({ initials, color, className, style }) {
13
+ return (_jsx(Avatar, { "aria-hidden": true, className: cn(className), style: { backgroundColor: avatarColorVar(color), ...style }, children: _jsx(AvatarFallback, { className: "rounded-[inherit] bg-transparent font-semibold text-white", children: initials }) }));
14
+ }
@@ -0,0 +1,16 @@
1
+ type MembersEmptyProps = {
2
+ /** Whether a search is currently narrowing the list. */
3
+ filtered: boolean;
4
+ /** Clears the search. */
5
+ onClear: () => void;
6
+ /** Opens the invite flow. Omitted when the user lacks `users:create`. */
7
+ onInvite?: () => void;
8
+ };
9
+ /**
10
+ * The empty state under the toolbar. A search miss offers to clear the
11
+ * search; a genuinely empty roster invites the first member (when the
12
+ * signed-in user may invite).
13
+ */
14
+ export declare function MembersEmpty({ filtered, onClear, onInvite }: MembersEmptyProps): import("react").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/MembersEmpty/index.tsx"],"names":[],"mappings":"AAwCA,KAAK,iBAAiB,GAAG;IACrB,wDAAwD;IACxD,QAAQ,EAAE,OAAO,CAAC;IAClB,yBAAyB;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,QAAQ,EACX,EAAE,iBAAiB,+BAwCnB"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { UserPlus, Users } from 'lucide-react';
4
+ import { Button, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from '@orthacms/design-system';
5
+ /** Intl descriptors for {@link MembersEmpty}, co-located with the component. */
6
+ const messages = defineMessages({
7
+ filteredTitle: {
8
+ id: 'users.empty.filtered.title',
9
+ defaultMessage: 'No members match'
10
+ },
11
+ filteredDescription: {
12
+ id: 'users.empty.filtered.description',
13
+ defaultMessage: 'Try a different name or email, or clear the search.'
14
+ },
15
+ clear: {
16
+ id: 'users.empty.clear',
17
+ defaultMessage: 'Clear search'
18
+ },
19
+ emptyTitle: {
20
+ id: 'users.empty.none.title',
21
+ defaultMessage: 'No members yet'
22
+ },
23
+ emptyDescription: {
24
+ id: 'users.empty.none.description',
25
+ defaultMessage: 'Invite the first member to give them access.'
26
+ },
27
+ invite: {
28
+ id: 'users.empty.invite',
29
+ defaultMessage: 'Invite member'
30
+ }
31
+ });
32
+ /**
33
+ * The empty state under the toolbar. A search miss offers to clear the
34
+ * search; a genuinely empty roster invites the first member (when the
35
+ * signed-in user may invite).
36
+ */
37
+ export function MembersEmpty({ filtered, onClear, onInvite }) {
38
+ const intl = useIntl();
39
+ return (_jsxs(Empty, { className: "border", children: [_jsxs(EmptyHeader, { children: [_jsx(EmptyMedia, { variant: "icon", children: _jsx(Users, {}) }), _jsx(EmptyTitle, { children: intl.formatMessage(filtered ? messages.filteredTitle : messages.emptyTitle) }), _jsx(EmptyDescription, { children: intl.formatMessage(filtered
40
+ ? messages.filteredDescription
41
+ : messages.emptyDescription) })] }), _jsx(EmptyContent, { children: filtered ? (_jsx(Button, { variant: "outline", className: "shadow-none", onClick: onClear, children: intl.formatMessage(messages.clear) })) : onInvite ? (_jsxs(Button, { onClick: onInvite, children: [_jsx(UserPlus, {}), intl.formatMessage(messages.invite)] })) : null })] }));
42
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Shown in place of the Members page when the signed-in user lacks
3
+ * `users:read` — the route still resolves, but no member data is fetched or
4
+ * rendered (and the server would refuse it regardless).
5
+ */
6
+ export declare function MembersNoAccess(): import("react").JSX.Element;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/MembersNoAccess/index.tsx"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH,wBAAgB,eAAe,gCAgB9B"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { Lock } from 'lucide-react';
4
+ import { Empty, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from '@orthacms/design-system';
5
+ /** Intl descriptors for {@link MembersNoAccess}, co-located with the component. */
6
+ const messages = defineMessages({
7
+ title: {
8
+ id: 'users.noAccess.title',
9
+ defaultMessage: 'You don’t have access to members'
10
+ },
11
+ description: {
12
+ id: 'users.noAccess.description',
13
+ defaultMessage: 'Viewing members requires the users:read permission. Ask an admin if you think you should have it.'
14
+ }
15
+ });
16
+ /**
17
+ * Shown in place of the Members page when the signed-in user lacks
18
+ * `users:read` — the route still resolves, but no member data is fetched or
19
+ * rendered (and the server would refuse it regardless).
20
+ */
21
+ export function MembersNoAccess() {
22
+ const intl = useIntl();
23
+ return (_jsx(Empty, { className: "border", children: _jsxs(EmptyHeader, { children: [_jsx(EmptyMedia, { variant: "icon", children: _jsx(Lock, {}) }), _jsx(EmptyTitle, { children: intl.formatMessage(messages.title) }), _jsx(EmptyDescription, { children: intl.formatMessage(messages.description) })] }) }));
24
+ }
@@ -0,0 +1,17 @@
1
+ /** The selectable page sizes, smallest first. The server caps at the largest. */
2
+ export declare const PAGE_SIZE_OPTIONS: number[];
3
+ /**
4
+ * The table's footer bar: a rows-per-page selector and an "{from}–{to} of
5
+ * {total}" readout, with previous/next controls once there's more than one
6
+ * page. Real buttons (not link-styled anchors) since page state is client
7
+ * state, not a URL — they disable cleanly at either end.
8
+ */
9
+ export declare function MembersPagination({ page, pageCount, pageSize, total, onPageChange, onPageSizeChange }: {
10
+ page: number;
11
+ pageCount: number;
12
+ pageSize: number;
13
+ total: number;
14
+ onPageChange: (page: number) => void;
15
+ onPageSizeChange: (pageSize: number) => void;
16
+ }): import("react").JSX.Element;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/MembersPagination/index.tsx"],"names":[],"mappings":"AAuCA,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,UAAmB,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,gBAAgB,EACnB,EAAE;IACC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,+BAmFA"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { ChevronLeft, ChevronRight } from 'lucide-react';
4
+ import { Button, Pagination, PaginationContent, PaginationItem, Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@orthacms/design-system';
5
+ /** Intl descriptors for {@link MembersPagination}, co-located with the component. */
6
+ const messages = defineMessages({
7
+ rowsPerPage: {
8
+ id: 'users.pagination.rowsPerPage',
9
+ defaultMessage: 'Rows per page'
10
+ },
11
+ range: {
12
+ id: 'users.pagination.range',
13
+ defaultMessage: '{from}–{to} of {total}'
14
+ },
15
+ previous: {
16
+ id: 'users.pagination.previous',
17
+ defaultMessage: 'Previous page'
18
+ },
19
+ next: {
20
+ id: 'users.pagination.next',
21
+ defaultMessage: 'Next page'
22
+ },
23
+ page: {
24
+ id: 'users.pagination.page',
25
+ defaultMessage: 'Page {page} of {pageCount}'
26
+ }
27
+ });
28
+ /** The selectable page sizes, smallest first. The server caps at the largest. */
29
+ export const PAGE_SIZE_OPTIONS = [5, 10, 25, 100];
30
+ /**
31
+ * The table's footer bar: a rows-per-page selector and an "{from}–{to} of
32
+ * {total}" readout, with previous/next controls once there's more than one
33
+ * page. Real buttons (not link-styled anchors) since page state is client
34
+ * state, not a URL — they disable cleanly at either end.
35
+ */
36
+ export function MembersPagination({ page, pageCount, pageSize, total, onPageChange, onPageSizeChange }) {
37
+ const intl = useIntl();
38
+ const rowsLabel = intl.formatMessage(messages.rowsPerPage);
39
+ const from = total === 0 ? 0 : (page - 1) * pageSize + 1;
40
+ const to = Math.min(page * pageSize, total);
41
+ return (_jsxs("div", { className: "mt-4 flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: rowsLabel }), _jsxs(Select, { value: String(pageSize), onValueChange: (value) => onPageSizeChange(Number(value)), children: [_jsx(SelectTrigger, { className: "h-8 w-[72px] rounded-lg shadow-none", "aria-label": rowsLabel, children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { className: "rounded-lg shadow-none", children: _jsx(SelectGroup, { children: PAGE_SIZE_OPTIONS.map((size) => (_jsx(SelectItem, { value: String(size), children: size }, size))) }) })] })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.range, { from, to, total }) }), pageCount > 1 ? (_jsx(Pagination, { className: "mx-0 w-auto", children: _jsxs(PaginationContent, { className: "gap-3", children: [_jsx(PaginationItem, { children: _jsx(Button, { variant: "outline", size: "icon", className: "size-8 shadow-none", disabled: page <= 1, onClick: () => onPageChange(page - 1), "aria-label": intl.formatMessage(messages.previous), children: _jsx(ChevronLeft, {}) }) }), _jsx(PaginationItem, { children: _jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.page, {
42
+ page,
43
+ pageCount
44
+ }) }) }), _jsx(PaginationItem, { children: _jsx(Button, { variant: "outline", size: "icon", className: "size-8 shadow-none", disabled: page >= pageCount, onClick: () => onPageChange(page + 1), "aria-label": intl.formatMessage(messages.next), children: _jsx(ChevronRight, {}) }) })] }) })) : null] })] }));
45
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Section placeholder shown while {@link useWorkspaceOptions} resolves in the
3
+ * invite wizard's "assign workspaces" step — two mode tiles over a short list of
4
+ * option rows. Replaces the inline spinner so the step keeps its shape while the
5
+ * list loads. Owns a single `role="status"`; the tiles are `aria-hidden`.
6
+ */
7
+ export declare function WorkspaceOptionsSkeleton({ rows }: {
8
+ rows?: number;
9
+ }): import("react").JSX.Element;
10
+ /**
11
+ * The members-table placeholder shown while {@link useMembers} resolves. Built
12
+ * from the real `Table` primitives so column widths and the header match the
13
+ * loaded table exactly (no reflow on swap). Drops into the page body in place
14
+ * of the table (header + toolbar stay live), so it owns the single
15
+ * `role="status"` announcement; the table itself is `aria-hidden`.
16
+ */
17
+ export declare function MembersTableSkeleton({ rows }: {
18
+ rows?: number;
19
+ }): import("react").JSX.Element;
20
+ /**
21
+ * Full-page placeholder for the lazy-route `Suspense` fallback — before
22
+ * {@link MembersPage} mounts there is no header or toolbar yet, so this sketches
23
+ * the whole page (header, search toolbar, table) to hold the layout steady
24
+ * while the chunk loads. Reuses {@link MembersTableSkeleton} for the body.
25
+ */
26
+ export declare function MembersPageSkeleton(): import("react").JSX.Element;
27
+ /**
28
+ * Lazy-route `Suspense` fallback for {@link InviteMemberPage}. Wraps the shared
29
+ * {@link WizardPageSkeleton} so the `sr-only` status stays localized.
30
+ */
31
+ export declare function InviteMemberPageSkeleton(): import("react").JSX.Element;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/MembersSkeleton/index.tsx"],"names":[],"mappings":"AAiCA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,IAAQ,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BA0BvE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,IAAQ,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAmEnE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,gCAgClC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,gCAMvC"}
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { Container, Skeleton, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, WizardPageSkeleton } from '@orthacms/design-system';
4
+ /** Intl descriptors for the members skeletons, co-located here. */
5
+ const messages = defineMessages({
6
+ heading: {
7
+ id: 'users.skeleton.heading',
8
+ defaultMessage: 'Loading members'
9
+ },
10
+ loading: {
11
+ id: 'users.skeleton.loading',
12
+ defaultMessage: 'Loading members…'
13
+ },
14
+ loadingForm: {
15
+ id: 'users.skeleton.loadingForm',
16
+ defaultMessage: 'Loading…'
17
+ },
18
+ loadingWorkspaces: {
19
+ id: 'users.skeleton.loadingWorkspaces',
20
+ defaultMessage: 'Loading workspaces…'
21
+ }
22
+ });
23
+ /**
24
+ * Section placeholder shown while {@link useWorkspaceOptions} resolves in the
25
+ * invite wizard's "assign workspaces" step — two mode tiles over a short list of
26
+ * option rows. Replaces the inline spinner so the step keeps its shape while the
27
+ * list loads. Owns a single `role="status"`; the tiles are `aria-hidden`.
28
+ */
29
+ export function WorkspaceOptionsSkeleton({ rows = 3 }) {
30
+ const intl = useIntl();
31
+ return (_jsxs("div", { role: "status", children: [_jsx("span", { className: "sr-only", children: intl.formatMessage(messages.loadingWorkspaces) }), _jsxs("div", { "aria-hidden": true, className: "flex flex-col gap-3", children: [_jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [_jsx(Skeleton, { className: "h-20 w-full rounded-xl" }), _jsx(Skeleton, { className: "h-20 w-full rounded-xl" })] }), Array.from({ length: rows }).map((_, index) => (_jsxs("div", { className: "flex items-center gap-3 rounded-xl border p-3", children: [_jsx(Skeleton, { className: "size-8 shrink-0 rounded-xl" }), _jsx(Skeleton, { className: "h-4 w-40" }), _jsx(Skeleton, { className: "ml-auto size-5 rounded" })] }, index)))] })] }));
32
+ }
33
+ /**
34
+ * The members-table placeholder shown while {@link useMembers} resolves. Built
35
+ * from the real `Table` primitives so column widths and the header match the
36
+ * loaded table exactly (no reflow on swap). Drops into the page body in place
37
+ * of the table (header + toolbar stay live), so it owns the single
38
+ * `role="status"` announcement; the table itself is `aria-hidden`.
39
+ */
40
+ export function MembersTableSkeleton({ rows = 5 }) {
41
+ const intl = useIntl();
42
+ return (_jsxs("div", { role: "status", children: [_jsx("span", { className: "sr-only", children: intl.formatMessage(messages.loading) }), _jsx("div", { "aria-hidden": true, className: "rounded-xl border", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: _jsx(Skeleton, { className: "h-4 w-16" }) }), _jsx(TableHead, { children: _jsx(Skeleton, { className: "h-4 w-10" }) }), _jsx(TableHead, { children: _jsx(Skeleton, { className: "h-4 w-12" }) }), _jsx(TableHead, { children: _jsx(Skeleton, { className: "h-4 w-20" }) }), _jsx(TableHead, { children: _jsx(Skeleton, { className: "h-4 w-12" }) }), _jsx(TableHead, { className: "w-12" })] }) }), _jsx(TableBody, { children: Array.from({ length: rows }).map((_, index) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Skeleton, { className: "size-9 shrink-0 rounded-xl" }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Skeleton, { className: "h-3.5 w-28" }), _jsx(Skeleton, { className: "h-3 w-36" })] })] }) }), _jsx(TableCell, { children: _jsx(Skeleton, { className: "h-5 w-16 rounded-full" }) }), _jsx(TableCell, { children: _jsx(Skeleton, { className: "h-5 w-16 rounded-full" }) }), _jsx(TableCell, { children: _jsxs("div", { className: "flex -space-x-2", children: [_jsx(Skeleton, { className: "size-6 rounded-xl" }), _jsx(Skeleton, { className: "size-6 rounded-xl" })] }) }), _jsx(TableCell, { children: _jsx(Skeleton, { className: "h-4 w-20" }) }), _jsx(TableCell, { className: "text-right", children: _jsx(Skeleton, { className: "ml-auto size-8 rounded-md" }) })] }, index))) })] }) })] }));
43
+ }
44
+ /**
45
+ * Full-page placeholder for the lazy-route `Suspense` fallback — before
46
+ * {@link MembersPage} mounts there is no header or toolbar yet, so this sketches
47
+ * the whole page (header, search toolbar, table) to hold the layout steady
48
+ * while the chunk loads. Reuses {@link MembersTableSkeleton} for the body.
49
+ */
50
+ export function MembersPageSkeleton() {
51
+ const intl = useIntl();
52
+ return (_jsxs(Container, { children: [_jsx("h1", { className: "sr-only", children: intl.formatMessage(messages.heading) }), _jsxs("div", { className: "mb-6 flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Skeleton, { className: "h-8 w-40" }), _jsx(Skeleton, { className: "h-4 w-64 max-w-full" })] }), _jsx(Skeleton, { className: "h-9 w-36 shrink-0" })] }), _jsx("div", { className: "mb-4 flex flex-wrap items-center gap-3", children: _jsx(Skeleton, { className: "h-9 w-full sm:max-w-[360px]" }) }), _jsx(MembersTableSkeleton, {})] }));
53
+ }
54
+ /**
55
+ * Lazy-route `Suspense` fallback for {@link InviteMemberPage}. Wraps the shared
56
+ * {@link WizardPageSkeleton} so the `sr-only` status stays localized.
57
+ */
58
+ export function InviteMemberPageSkeleton() {
59
+ const intl = useIntl();
60
+ return (_jsx(WizardPageSkeleton, { label: intl.formatMessage(messages.loadingForm) }));
61
+ }
@@ -0,0 +1,17 @@
1
+ import type { MemberRole } from '../../../../domain/types/member';
2
+ /**
3
+ * The Role column's read-only chip: the member's role as a labelled badge.
4
+ * Changing a role happens through the row's edit action (and the server gates
5
+ * it on `users:update`), so the column itself carries no inline editor.
6
+ *
7
+ * A member holding a **custom** role has `role: null`; the chip then shows the
8
+ * server's own `roleName` rather than a guessed system role, so the column never
9
+ * misstates someone's privileges.
10
+ */
11
+ export declare function MemberRoleChip({ role, roleName }: {
12
+ /** The member's system role, or `null` for a custom one. */
13
+ role: MemberRole | null;
14
+ /** The server's label, shown verbatim when `role` is `null`. */
15
+ roleName: string;
16
+ }): import("react").JSX.Element;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/presentation/components/MembersTable/MemberRoleChip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AA2BlE;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAC3B,IAAI,EACJ,QAAQ,EACX,EAAE;IACC,4DAA4D;IAC5D,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CACpB,+BAWA"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { Badge } from '@orthacms/design-system';
4
+ /** Intl descriptors for {@link MemberRoleChip}, co-located with the component. */
5
+ const messages = defineMessages({
6
+ admin: {
7
+ id: 'users.role.admin',
8
+ defaultMessage: 'Admin'
9
+ },
10
+ contributor: {
11
+ id: 'users.role.contributor',
12
+ defaultMessage: 'Contributor'
13
+ },
14
+ viewer: {
15
+ id: 'users.role.viewer',
16
+ defaultMessage: 'Viewer'
17
+ }
18
+ });
19
+ const ROLE_MESSAGE = {
20
+ admin: messages.admin,
21
+ contributor: messages.contributor,
22
+ viewer: messages.viewer
23
+ };
24
+ /**
25
+ * The Role column's read-only chip: the member's role as a labelled badge.
26
+ * Changing a role happens through the row's edit action (and the server gates
27
+ * it on `users:update`), so the column itself carries no inline editor.
28
+ *
29
+ * A member holding a **custom** role has `role: null`; the chip then shows the
30
+ * server's own `roleName` rather than a guessed system role, so the column never
31
+ * misstates someone's privileges.
32
+ */
33
+ export function MemberRoleChip({ role, roleName }) {
34
+ const intl = useIntl();
35
+ return (_jsx(Badge, { variant: role === 'admin' ? 'primary-soft' : 'secondary', className: "rounded-xl", children: role === null ? roleName : intl.formatMessage(ROLE_MESSAGE[role]) }));
36
+ }
@@ -0,0 +1,16 @@
1
+ import type { Member } from '../../../../domain/types/member';
2
+ /**
3
+ * The row-end kebab menu. It mirrors the user detail page's side rail: an
4
+ * **Account** group (General / Role / Workspaces) that every reader sees, then
5
+ * permission-gated **Audit** (Sessions / Activity) and **Access** (Sign-in
6
+ * access) groups — each item navigates straight to that tab. Below a separator
7
+ * sit the status quick actions: a pending invite offers Resend / Revoke, an
8
+ * active member Disable, a disabled member Enable, each shown only with its
9
+ * `users:*` permission. The guardrailed Disable (yourself, the sole admin)
10
+ * stays visible but inert with a tooltip. (Clicking the row itself also opens
11
+ * the member — see {@link MembersTable}.)
12
+ */
13
+ export declare function MemberRowActions({ member }: {
14
+ member: Member;
15
+ }): import("react").JSX.Element;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/presentation/components/MembersTable/MemberRowActions/index.tsx"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAgH9D;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,+BAiW9D"}