@burdenoff/microfe-organization 2026.510.110

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 (244) hide show
  1. package/README.md +64 -0
  2. package/dist/generated/global-operations.d.ts +1647 -0
  3. package/dist/generated/global-operations.d.ts.map +1 -0
  4. package/dist/generated/global-operations.js +724 -0
  5. package/dist/generated/global-operations.js.map +1 -0
  6. package/dist/generated/global-types.d.ts +20716 -0
  7. package/dist/generated/global-types.d.ts.map +1 -0
  8. package/dist/generated/global-types.js +8 -0
  9. package/dist/generated/global-types.js.map +1 -0
  10. package/dist/generated/wspace-operations.d.ts +2 -0
  11. package/dist/generated/wspace-operations.d.ts.map +1 -0
  12. package/dist/generated/wspace-types.d.ts +53363 -0
  13. package/dist/generated/wspace-types.d.ts.map +1 -0
  14. package/dist/index.d.ts +56 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +3 -0
  17. package/dist/node_modules/sonner/dist/index.js +163 -0
  18. package/dist/node_modules/sonner/dist/index.js.map +1 -0
  19. package/dist/node_modules/zod/v3/ZodError.js +82 -0
  20. package/dist/node_modules/zod/v3/ZodError.js.map +1 -0
  21. package/dist/node_modules/zod/v3/errors.js +10 -0
  22. package/dist/node_modules/zod/v3/errors.js.map +1 -0
  23. package/dist/node_modules/zod/v3/helpers/errorUtil.js +9 -0
  24. package/dist/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
  25. package/dist/node_modules/zod/v3/helpers/parseUtil.js +93 -0
  26. package/dist/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
  27. package/dist/node_modules/zod/v3/helpers/util.js +76 -0
  28. package/dist/node_modules/zod/v3/helpers/util.js.map +1 -0
  29. package/dist/node_modules/zod/v3/locales/en.js +62 -0
  30. package/dist/node_modules/zod/v3/locales/en.js.map +1 -0
  31. package/dist/node_modules/zod/v3/types.js +2441 -0
  32. package/dist/node_modules/zod/v3/types.js.map +1 -0
  33. package/dist/organization-management/AdminOrganizationRoot.d.ts +16 -0
  34. package/dist/organization-management/AdminOrganizationRoot.d.ts.map +1 -0
  35. package/dist/organization-management/AdminOrganizationRoot.js +76 -0
  36. package/dist/organization-management/AdminOrganizationRoot.js.map +1 -0
  37. package/dist/organization-management/AdminOrganizationRoutes.d.ts +16 -0
  38. package/dist/organization-management/AdminOrganizationRoutes.d.ts.map +1 -0
  39. package/dist/organization-management/AdminOrganizationRoutes.js +73 -0
  40. package/dist/organization-management/AdminOrganizationRoutes.js.map +1 -0
  41. package/dist/organization-management/UserOrganizationRoot.d.ts +17 -0
  42. package/dist/organization-management/UserOrganizationRoot.d.ts.map +1 -0
  43. package/dist/organization-management/UserOrganizationRoot.js +45 -0
  44. package/dist/organization-management/UserOrganizationRoot.js.map +1 -0
  45. package/dist/organization-management/UserOrganizationRoutes.d.ts +12 -0
  46. package/dist/organization-management/UserOrganizationRoutes.d.ts.map +1 -0
  47. package/dist/organization-management/UserOrganizationRoutes.js +30 -0
  48. package/dist/organization-management/UserOrganizationRoutes.js.map +1 -0
  49. package/dist/organization-management/constants/permissions.d.ts +30 -0
  50. package/dist/organization-management/constants/permissions.d.ts.map +1 -0
  51. package/dist/organization-management/constants/permissions.js +22 -0
  52. package/dist/organization-management/constants/permissions.js.map +1 -0
  53. package/dist/organization-management/hooks/useOrganizationEventEmitter.d.ts +19 -0
  54. package/dist/organization-management/hooks/useOrganizationEventEmitter.d.ts.map +1 -0
  55. package/dist/organization-management/hooks/useOrganizationEventEmitter.js +15 -0
  56. package/dist/organization-management/hooks/useOrganizationEventEmitter.js.map +1 -0
  57. package/dist/organization-management/hooks/useOrganizationPageView.d.ts +11 -0
  58. package/dist/organization-management/hooks/useOrganizationPageView.d.ts.map +1 -0
  59. package/dist/organization-management/hooks/useOrganizationPageView.js +24 -0
  60. package/dist/organization-management/hooks/useOrganizationPageView.js.map +1 -0
  61. package/dist/organization-management/modules/members/components/InviteMemberForm.d.ts +18 -0
  62. package/dist/organization-management/modules/members/components/InviteMemberForm.d.ts.map +1 -0
  63. package/dist/organization-management/modules/members/components/InviteMemberForm.js +119 -0
  64. package/dist/organization-management/modules/members/components/InviteMemberForm.js.map +1 -0
  65. package/dist/organization-management/modules/members/components/InviteStatusBadge.d.ts +6 -0
  66. package/dist/organization-management/modules/members/components/InviteStatusBadge.d.ts.map +1 -0
  67. package/dist/organization-management/modules/members/components/InviteStatusBadge.js +51 -0
  68. package/dist/organization-management/modules/members/components/InviteStatusBadge.js.map +1 -0
  69. package/dist/organization-management/modules/members/components/MemberRoleBadge.d.ts +11 -0
  70. package/dist/organization-management/modules/members/components/MemberRoleBadge.d.ts.map +1 -0
  71. package/dist/organization-management/modules/members/components/MemberRoleBadge.js +56 -0
  72. package/dist/organization-management/modules/members/components/MemberRoleBadge.js.map +1 -0
  73. package/dist/organization-management/modules/members/components/MyInviteCard.d.ts +22 -0
  74. package/dist/organization-management/modules/members/components/MyInviteCard.d.ts.map +1 -0
  75. package/dist/organization-management/modules/members/components/MyInviteCard.js +70 -0
  76. package/dist/organization-management/modules/members/components/MyInviteCard.js.map +1 -0
  77. package/dist/organization-management/modules/members/components/PendingInvitesList.d.ts +6 -0
  78. package/dist/organization-management/modules/members/components/PendingInvitesList.d.ts.map +1 -0
  79. package/dist/organization-management/modules/members/components/PendingInvitesList.js +141 -0
  80. package/dist/organization-management/modules/members/components/PendingInvitesList.js.map +1 -0
  81. package/dist/organization-management/modules/members/hooks/useInvites.d.ts +75 -0
  82. package/dist/organization-management/modules/members/hooks/useInvites.d.ts.map +1 -0
  83. package/dist/organization-management/modules/members/hooks/useInvites.js +253 -0
  84. package/dist/organization-management/modules/members/hooks/useInvites.js.map +1 -0
  85. package/dist/organization-management/modules/members/hooks/useMembers.d.ts +84 -0
  86. package/dist/organization-management/modules/members/hooks/useMembers.d.ts.map +1 -0
  87. package/dist/organization-management/modules/members/hooks/useMembers.js +95 -0
  88. package/dist/organization-management/modules/members/hooks/useMembers.js.map +1 -0
  89. package/dist/organization-management/modules/members/pages/InviteMemberPage.d.ts +6 -0
  90. package/dist/organization-management/modules/members/pages/InviteMemberPage.d.ts.map +1 -0
  91. package/dist/organization-management/modules/members/pages/InviteMemberPage.js +91 -0
  92. package/dist/organization-management/modules/members/pages/InviteMemberPage.js.map +1 -0
  93. package/dist/organization-management/modules/members/pages/MemberDetailPage.d.ts +6 -0
  94. package/dist/organization-management/modules/members/pages/MemberDetailPage.d.ts.map +1 -0
  95. package/dist/organization-management/modules/members/pages/MemberDetailPage.js +115 -0
  96. package/dist/organization-management/modules/members/pages/MemberDetailPage.js.map +1 -0
  97. package/dist/organization-management/modules/members/pages/MembersListPage.d.ts +2 -0
  98. package/dist/organization-management/modules/members/pages/MembersListPage.d.ts.map +1 -0
  99. package/dist/organization-management/modules/members/pages/MembersListPage.js +424 -0
  100. package/dist/organization-management/modules/members/pages/MembersListPage.js.map +1 -0
  101. package/dist/organization-management/modules/members/pages/MyInvitesPage.d.ts +6 -0
  102. package/dist/organization-management/modules/members/pages/MyInvitesPage.d.ts.map +1 -0
  103. package/dist/organization-management/modules/members/pages/MyInvitesPage.js +114 -0
  104. package/dist/organization-management/modules/members/pages/MyInvitesPage.js.map +1 -0
  105. package/dist/organization-management/modules/members/types/index.d.ts +35 -0
  106. package/dist/organization-management/modules/members/types/index.d.ts.map +1 -0
  107. package/dist/organization-management/modules/organizations/components/OrganizationForm.d.ts +13 -0
  108. package/dist/organization-management/modules/organizations/components/OrganizationForm.d.ts.map +1 -0
  109. package/dist/organization-management/modules/organizations/components/OrganizationForm.js +325 -0
  110. package/dist/organization-management/modules/organizations/components/OrganizationForm.js.map +1 -0
  111. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.d.ts +13 -0
  112. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.d.ts.map +1 -0
  113. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.js +49 -0
  114. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.js.map +1 -0
  115. package/dist/organization-management/modules/organizations/hooks/useOrganizations.d.ts +86 -0
  116. package/dist/organization-management/modules/organizations/hooks/useOrganizations.d.ts.map +1 -0
  117. package/dist/organization-management/modules/organizations/hooks/useOrganizations.js +164 -0
  118. package/dist/organization-management/modules/organizations/hooks/useOrganizations.js.map +1 -0
  119. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.d.ts +6 -0
  120. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.d.ts.map +1 -0
  121. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js +76 -0
  122. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map +1 -0
  123. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.d.ts +2 -0
  124. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.d.ts.map +1 -0
  125. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js +306 -0
  126. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map +1 -0
  127. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.d.ts +6 -0
  128. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.d.ts.map +1 -0
  129. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js +93 -0
  130. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js.map +1 -0
  131. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.d.ts +2 -0
  132. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.d.ts.map +1 -0
  133. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js +448 -0
  134. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js.map +1 -0
  135. package/dist/organization-management/modules/organizations/schemas/index.d.ts +53 -0
  136. package/dist/organization-management/modules/organizations/schemas/index.d.ts.map +1 -0
  137. package/dist/organization-management/modules/organizations/schemas/index.js +25 -0
  138. package/dist/organization-management/modules/organizations/schemas/index.js.map +1 -0
  139. package/dist/organization-management/modules/organizations/types/index.d.ts +34 -0
  140. package/dist/organization-management/modules/organizations/types/index.d.ts.map +1 -0
  141. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.d.ts +13 -0
  142. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.d.ts.map +1 -0
  143. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.js +147 -0
  144. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.js.map +1 -0
  145. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.d.ts +16 -0
  146. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.d.ts.map +1 -0
  147. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js +107 -0
  148. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js.map +1 -0
  149. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.d.ts +16 -0
  150. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.d.ts.map +1 -0
  151. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js +386 -0
  152. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js.map +1 -0
  153. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.d.ts +13 -0
  154. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.d.ts.map +1 -0
  155. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.js +49 -0
  156. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.js.map +1 -0
  157. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.d.ts +47 -0
  158. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.d.ts.map +1 -0
  159. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.js +46 -0
  160. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.js.map +1 -0
  161. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.d.ts +133 -0
  162. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.d.ts.map +1 -0
  163. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.js +111 -0
  164. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.js.map +1 -0
  165. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.d.ts +2 -0
  166. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.d.ts.map +1 -0
  167. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js +82 -0
  168. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js.map +1 -0
  169. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.d.ts +2 -0
  170. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.d.ts.map +1 -0
  171. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js +438 -0
  172. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js.map +1 -0
  173. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.d.ts +2 -0
  174. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.d.ts.map +1 -0
  175. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js +90 -0
  176. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js.map +1 -0
  177. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.d.ts +2 -0
  178. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.d.ts.map +1 -0
  179. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js +465 -0
  180. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js.map +1 -0
  181. package/dist/organization-management/modules/workspaces/schemas/index.d.ts +44 -0
  182. package/dist/organization-management/modules/workspaces/schemas/index.d.ts.map +1 -0
  183. package/dist/organization-management/modules/workspaces/schemas/index.js +22 -0
  184. package/dist/organization-management/modules/workspaces/schemas/index.js.map +1 -0
  185. package/dist/organization-management/modules/workspaces/types/index.d.ts +39 -0
  186. package/dist/organization-management/modules/workspaces/types/index.d.ts.map +1 -0
  187. package/dist/organization-management/modules/workspaces/types/workspace-member.d.ts +48 -0
  188. package/dist/organization-management/modules/workspaces/types/workspace-member.d.ts.map +1 -0
  189. package/dist/organization-management/providers/OrgConsoleProvider.d.ts +19 -0
  190. package/dist/organization-management/providers/OrgConsoleProvider.d.ts.map +1 -0
  191. package/dist/organization-management/providers/OrgConsoleProvider.js +24 -0
  192. package/dist/organization-management/providers/OrgConsoleProvider.js.map +1 -0
  193. package/dist/organization-management/shared/components/dialog/ConfirmDialog.d.ts +28 -0
  194. package/dist/organization-management/shared/components/dialog/ConfirmDialog.d.ts.map +1 -0
  195. package/dist/organization-management/shared/components/dialog/ConfirmDialog.js +105 -0
  196. package/dist/organization-management/shared/components/dialog/ConfirmDialog.js.map +1 -0
  197. package/dist/organization-management/shared/components/feedback/EmptyState.d.ts +14 -0
  198. package/dist/organization-management/shared/components/feedback/EmptyState.d.ts.map +1 -0
  199. package/dist/organization-management/shared/components/feedback/EmptyState.js +30 -0
  200. package/dist/organization-management/shared/components/feedback/EmptyState.js.map +1 -0
  201. package/dist/organization-management/shared/components/feedback/ErrorState.d.ts +11 -0
  202. package/dist/organization-management/shared/components/feedback/ErrorState.d.ts.map +1 -0
  203. package/dist/organization-management/shared/components/feedback/ErrorState.js +37 -0
  204. package/dist/organization-management/shared/components/feedback/ErrorState.js.map +1 -0
  205. package/dist/organization-management/shared/components/feedback/LoadingState.d.ts +6 -0
  206. package/dist/organization-management/shared/components/feedback/LoadingState.d.ts.map +1 -0
  207. package/dist/organization-management/shared/components/feedback/LoadingState.js +24 -0
  208. package/dist/organization-management/shared/components/feedback/LoadingState.js.map +1 -0
  209. package/dist/organization-management/shared/components/input/SearchInput.d.ts +15 -0
  210. package/dist/organization-management/shared/components/input/SearchInput.d.ts.map +1 -0
  211. package/dist/organization-management/shared/components/input/SearchInput.js +40 -0
  212. package/dist/organization-management/shared/components/input/SearchInput.js.map +1 -0
  213. package/dist/organization-management/shared/components/input/SelectionCheckbox.d.ts +10 -0
  214. package/dist/organization-management/shared/components/input/SelectionCheckbox.d.ts.map +1 -0
  215. package/dist/organization-management/shared/components/input/SelectionCheckbox.js +21 -0
  216. package/dist/organization-management/shared/components/input/SelectionCheckbox.js.map +1 -0
  217. package/dist/organization-management/shared/hooks/useDebouncedValue.d.ts +2 -0
  218. package/dist/organization-management/shared/hooks/useDebouncedValue.d.ts.map +1 -0
  219. package/dist/organization-management/shared/hooks/useDebouncedValue.js +17 -0
  220. package/dist/organization-management/shared/hooks/useDebouncedValue.js.map +1 -0
  221. package/dist/organization-management/shared/hooks/useTr.d.ts +14 -0
  222. package/dist/organization-management/shared/hooks/useTr.d.ts.map +1 -0
  223. package/dist/organization-management/shared/hooks/useTr.js +14 -0
  224. package/dist/organization-management/shared/hooks/useTr.js.map +1 -0
  225. package/dist/organization-management/shared/logger.d.ts +11 -0
  226. package/dist/organization-management/shared/logger.d.ts.map +1 -0
  227. package/dist/organization-management/shared/logger.js +46 -0
  228. package/dist/organization-management/shared/logger.js.map +1 -0
  229. package/dist/organization-management/shared/recaptcha.d.ts +2 -0
  230. package/dist/organization-management/shared/recaptcha.d.ts.map +1 -0
  231. package/dist/organization-management/shared/recaptcha.js +6 -0
  232. package/dist/organization-management/shared/recaptcha.js.map +1 -0
  233. package/dist/organization-management/shared/types/graphql.d.ts +131 -0
  234. package/dist/organization-management/shared/types/graphql.d.ts.map +1 -0
  235. package/dist/organization-management/shared/types/graphql.js +10 -0
  236. package/dist/organization-management/shared/types/graphql.js.map +1 -0
  237. package/dist/organization-management/shared/utils/cn.d.ts +8 -0
  238. package/dist/organization-management/shared/utils/cn.d.ts.map +1 -0
  239. package/dist/organization-management/types/index.d.ts +46 -0
  240. package/dist/organization-management/types/index.d.ts.map +1 -0
  241. package/dist/utils/nativeBridge.d.ts +3 -0
  242. package/dist/utils/nativeBridge.d.ts.map +1 -0
  243. package/dist/utils/nativeBridge.js +2 -0
  244. package/package.json +116 -0
@@ -0,0 +1,253 @@
1
+ import { GetMembersDocument as e, GetMyOrganizationInvitesDocument as t, GetOrganizationInvitesDocument as n, useCancelOrganizationInviteMutation as r, useGetMyOrganizationInvitesQuery as i, useGetOrganizationInvitesQuery as a, useInviteOrganizationMemberMutation as o, useRejectOrganizationInviteMutation as s, useResendOrganizationInviteMutation as c } from "../../../../generated/global-operations.js";
2
+ import { useOrganizationEventEmitter as l } from "../../../hooks/useOrganizationEventEmitter.js";
3
+ import { logger as u, redactId as d } from "../../../shared/logger.js";
4
+ import { executeRecaptcha as f } from "../../../shared/recaptcha.js";
5
+ import { gql as p } from "@apollo/client";
6
+ import { useMutation as m } from "@apollo/client/react";
7
+ //#region src/organization-management/modules/members/hooks/useInvites.ts
8
+ var h = p`
9
+ mutation AcceptOrganizationInviteWithCaptcha($inviteId: ID!, $recaptchaToken: String) {
10
+ acceptOrganizationInvite(inviteId: $inviteId, recaptchaToken: $recaptchaToken) {
11
+ id
12
+ userId
13
+ organizationId
14
+ role
15
+ joinedAt
16
+ }
17
+ }
18
+ `;
19
+ function g(e) {
20
+ return e?.graphQLErrors?.[0]?.extensions?.code;
21
+ }
22
+ function _(e) {
23
+ return e instanceof Error ? e.message : e?.message ?? "Unknown error";
24
+ }
25
+ function v(e, t, n = 20, r = 0) {
26
+ let { data: i, loading: o, error: s, refetch: c } = a({
27
+ variables: {
28
+ organizationId: e,
29
+ filter: t,
30
+ limit: n,
31
+ offset: r
32
+ },
33
+ skip: !e,
34
+ fetchPolicy: "cache-first",
35
+ nextFetchPolicy: "cache-first"
36
+ });
37
+ return {
38
+ invites: i?.organizationInvites?.items ?? [],
39
+ total: i?.organizationInvites?.total ?? 0,
40
+ hasMore: i?.organizationInvites?.hasMore ?? !1,
41
+ loading: o,
42
+ error: s,
43
+ refetch: c
44
+ };
45
+ }
46
+ function y(e, t = 20, n = 0) {
47
+ let { data: r, loading: a, error: o, refetch: s } = i({
48
+ variables: {
49
+ status: e,
50
+ limit: t,
51
+ offset: n
52
+ },
53
+ fetchPolicy: "cache-first",
54
+ nextFetchPolicy: "cache-first"
55
+ });
56
+ return {
57
+ invites: r?.myOrganizationInvites?.items ?? [],
58
+ total: r?.myOrganizationInvites?.total ?? 0,
59
+ hasMore: r?.myOrganizationInvites?.hasMore ?? !1,
60
+ loading: a,
61
+ error: o,
62
+ refetch: s
63
+ };
64
+ }
65
+ function b() {
66
+ let { emit: e } = l(), [t, { loading: r, error: i }] = o({ refetchQueries: [n] });
67
+ return {
68
+ inviteMember: async (n) => {
69
+ u.info("mutation.start", {
70
+ name: "inviteMember",
71
+ organizationId: d(n.organizationId)
72
+ });
73
+ try {
74
+ let r = await t({ variables: { input: n } }), i = r.data?.inviteOrganizationMember?.id;
75
+ return e("organization.invite.created", {
76
+ organizationId: n.organizationId,
77
+ inviteId: i,
78
+ source: "microfe-organization"
79
+ }), u.info("mutation.success", {
80
+ name: "inviteMember",
81
+ organizationId: d(n.organizationId),
82
+ inviteId: d(i)
83
+ }), r;
84
+ } catch (t) {
85
+ let r = g(t), i = _(t);
86
+ throw e("organization.invite.create_failed", {
87
+ organizationId: n.organizationId,
88
+ source: "microfe-organization",
89
+ errorCode: r,
90
+ errorMessage: i
91
+ }), u.error("mutation.failed", {
92
+ name: "inviteMember",
93
+ organizationId: d(n.organizationId),
94
+ errorCode: r,
95
+ errorMessage: i
96
+ }, t), t;
97
+ }
98
+ },
99
+ loading: r,
100
+ error: i
101
+ };
102
+ }
103
+ function x() {
104
+ let { emit: n } = l(), [r, { loading: i, error: a }] = m(h, { refetchQueries: [t, e] });
105
+ return {
106
+ acceptInvite: async (e) => {
107
+ u.info("mutation.start", {
108
+ name: "acceptInvite",
109
+ inviteId: d(e)
110
+ });
111
+ try {
112
+ let t = await f("invite_accept"), i = await r({ variables: {
113
+ inviteId: e,
114
+ ...t ? { recaptchaToken: t } : {}
115
+ } });
116
+ return n("organization.invite.accepted", {
117
+ inviteId: e,
118
+ source: "microfe-organization"
119
+ }), u.info("mutation.success", {
120
+ name: "acceptInvite",
121
+ inviteId: d(e)
122
+ }), i;
123
+ } catch (t) {
124
+ let r = g(t), i = _(t);
125
+ throw n("organization.invite.accept_failed", {
126
+ inviteId: e,
127
+ source: "microfe-organization",
128
+ errorCode: r,
129
+ errorMessage: i
130
+ }), u.error("mutation.failed", {
131
+ name: "acceptInvite",
132
+ inviteId: d(e),
133
+ errorCode: r,
134
+ errorMessage: i
135
+ }, t), t;
136
+ }
137
+ },
138
+ loading: i,
139
+ error: a
140
+ };
141
+ }
142
+ function S() {
143
+ let { emit: e } = l(), [n, { loading: r, error: i }] = s({ refetchQueries: [t] });
144
+ return {
145
+ rejectInvite: async (t) => {
146
+ u.info("mutation.start", {
147
+ name: "rejectInvite",
148
+ inviteId: d(t)
149
+ });
150
+ try {
151
+ let r = await n({ variables: { inviteId: t } });
152
+ return e("organization.invite.rejected", {
153
+ inviteId: t,
154
+ source: "microfe-organization"
155
+ }), u.info("mutation.success", {
156
+ name: "rejectInvite",
157
+ inviteId: d(t)
158
+ }), r;
159
+ } catch (n) {
160
+ let r = g(n), i = _(n);
161
+ throw e("organization.invite.reject_failed", {
162
+ inviteId: t,
163
+ source: "microfe-organization",
164
+ errorCode: r,
165
+ errorMessage: i
166
+ }), u.error("mutation.failed", {
167
+ name: "rejectInvite",
168
+ inviteId: d(t),
169
+ errorCode: r,
170
+ errorMessage: i
171
+ }, n), n;
172
+ }
173
+ },
174
+ loading: r,
175
+ error: i
176
+ };
177
+ }
178
+ function C() {
179
+ let { emit: e } = l(), [t, { loading: i, error: a }] = r({ refetchQueries: [n] });
180
+ return {
181
+ cancelInvite: async (n) => {
182
+ u.info("mutation.start", {
183
+ name: "cancelInvite",
184
+ inviteId: d(n)
185
+ });
186
+ try {
187
+ let r = await t({ variables: { inviteId: n } });
188
+ return e("organization.invite.cancelled", {
189
+ inviteId: n,
190
+ source: "microfe-organization"
191
+ }), u.info("mutation.success", {
192
+ name: "cancelInvite",
193
+ inviteId: d(n)
194
+ }), r;
195
+ } catch (t) {
196
+ let r = g(t), i = _(t);
197
+ throw e("organization.invite.cancel_failed", {
198
+ inviteId: n,
199
+ source: "microfe-organization",
200
+ errorCode: r,
201
+ errorMessage: i
202
+ }), u.error("mutation.failed", {
203
+ name: "cancelInvite",
204
+ inviteId: d(n),
205
+ errorCode: r,
206
+ errorMessage: i
207
+ }, t), t;
208
+ }
209
+ },
210
+ loading: i,
211
+ error: a
212
+ };
213
+ }
214
+ function w() {
215
+ let { emit: e } = l(), [t, { loading: r, error: i }] = c({ refetchQueries: [n] });
216
+ return {
217
+ resendInvite: async (n) => {
218
+ u.info("mutation.start", {
219
+ name: "resendInvite",
220
+ inviteId: d(n)
221
+ });
222
+ try {
223
+ let r = await t({ variables: { inviteId: n } });
224
+ return e("organization.invite.resent", {
225
+ inviteId: n,
226
+ source: "microfe-organization"
227
+ }), u.info("mutation.success", {
228
+ name: "resendInvite",
229
+ inviteId: d(n)
230
+ }), r;
231
+ } catch (t) {
232
+ let r = g(t), i = _(t);
233
+ throw e("organization.invite.resend_failed", {
234
+ inviteId: n,
235
+ source: "microfe-organization",
236
+ errorCode: r,
237
+ errorMessage: i
238
+ }), u.error("mutation.failed", {
239
+ name: "resendInvite",
240
+ inviteId: d(n),
241
+ errorCode: r,
242
+ errorMessage: i
243
+ }, t), t;
244
+ }
245
+ },
246
+ loading: r,
247
+ error: i
248
+ };
249
+ }
250
+ //#endregion
251
+ export { x as useAcceptInvite, C as useCancelInvite, b as useInviteMember, y as useMyInvites, v as useOrganizationInvites, S as useRejectInvite, w as useResendInvite };
252
+
253
+ //# sourceMappingURL=useInvites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInvites.js","names":[],"sources":["../../../../../src/organization-management/modules/members/hooks/useInvites.ts"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useMutation } from '@apollo/client/react';\nimport {\n useInviteOrganizationMemberMutation,\n useRejectOrganizationInviteMutation,\n useCancelOrganizationInviteMutation,\n useResendOrganizationInviteMutation,\n useGetOrganizationInvitesQuery,\n useGetMyOrganizationInvitesQuery,\n GetOrganizationInvitesDocument,\n GetMyOrganizationInvitesDocument,\n GetMembersDocument,\n} from '../../../../generated/global-operations';\nimport type {\n InviteStatus,\n OrganizationInvite,\n OrganizationMember,\n} from '../../../../generated/global-types';\nimport { useOrganizationEventEmitter } from '../../../hooks/useOrganizationEventEmitter';\nimport { logger, redactId } from '../../../shared/logger';\nimport { executeRecaptcha } from '../../../shared/recaptcha';\n\nconst ACCEPT_ORGANIZATION_INVITE_WITH_CAPTCHA = gql`\n mutation AcceptOrganizationInviteWithCaptcha($inviteId: ID!, $recaptchaToken: String) {\n acceptOrganizationInvite(inviteId: $inviteId, recaptchaToken: $recaptchaToken) {\n id\n userId\n organizationId\n role\n joinedAt\n }\n }\n`;\n\ninterface AcceptOrganizationInviteData {\n acceptOrganizationInvite: OrganizationMember;\n}\n\ninterface AcceptOrganizationInviteVariables {\n inviteId: string;\n recaptchaToken?: string;\n}\n\ninterface GraphqlExtensions {\n code?: string;\n}\n\ninterface GraphqlError {\n message?: string;\n extensions?: GraphqlExtensions;\n}\n\ninterface ApolloLikeError {\n message?: string;\n graphQLErrors?: ReadonlyArray<GraphqlError>;\n}\n\nfunction extractErrorCode(error: unknown): string | undefined {\n const apolloError = error as ApolloLikeError | undefined;\n return apolloError?.graphQLErrors?.[0]?.extensions?.code;\n}\n\nfunction extractErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n const apolloError = error as ApolloLikeError | undefined;\n return apolloError?.message ?? 'Unknown error';\n}\n\n/**\n * Hook to fetch organization invites (admin view)\n */\nexport function useOrganizationInvites(\n organizationId: string,\n filter?: { status?: InviteStatus },\n limit: number = 20,\n offset: number = 0\n) {\n const { data, loading, error, refetch } = useGetOrganizationInvitesQuery({\n variables: { organizationId, filter, limit, offset },\n skip: !organizationId,\n fetchPolicy: 'cache-first',\n nextFetchPolicy: 'cache-first',\n });\n\n return {\n invites: (data?.organizationInvites?.items ?? []) as OrganizationInvite[],\n total: data?.organizationInvites?.total ?? 0,\n hasMore: data?.organizationInvites?.hasMore ?? false,\n loading,\n error,\n refetch,\n };\n}\n\n/**\n * Hook to fetch invites for the current user (invitee view)\n */\nexport function useMyInvites(status?: InviteStatus, limit: number = 20, offset: number = 0) {\n const { data, loading, error, refetch } = useGetMyOrganizationInvitesQuery({\n variables: { status, limit, offset },\n fetchPolicy: 'cache-first',\n nextFetchPolicy: 'cache-first',\n });\n\n return {\n invites: (data?.myOrganizationInvites?.items ?? []) as OrganizationInvite[],\n total: data?.myOrganizationInvites?.total ?? 0,\n hasMore: data?.myOrganizationInvites?.hasMore ?? false,\n loading,\n error,\n refetch,\n };\n}\n\n/**\n * Hook to invite a member by email\n */\nexport function useInviteMember() {\n const { emit } = useOrganizationEventEmitter();\n const [inviteMember, { loading, error }] = useInviteOrganizationMemberMutation({\n refetchQueries: [GetOrganizationInvitesDocument],\n });\n\n return {\n inviteMember: async (input: { organizationId: string; email: string; message?: string }) => {\n logger.info('mutation.start', {\n name: 'inviteMember',\n organizationId: redactId(input.organizationId),\n });\n try {\n const result = await inviteMember({ variables: { input } });\n const inviteId = result.data?.inviteOrganizationMember?.id;\n emit('organization.invite.created', {\n organizationId: input.organizationId,\n inviteId,\n source: 'microfe-organization',\n });\n logger.info('mutation.success', {\n name: 'inviteMember',\n organizationId: redactId(input.organizationId),\n inviteId: redactId(inviteId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('organization.invite.create_failed', {\n organizationId: input.organizationId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'inviteMember',\n organizationId: redactId(input.organizationId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n\n/**\n * Hook to accept an organization invite\n */\nexport function useAcceptInvite() {\n const { emit } = useOrganizationEventEmitter();\n const [acceptInvite, { loading, error }] = useMutation<\n AcceptOrganizationInviteData,\n AcceptOrganizationInviteVariables\n >(ACCEPT_ORGANIZATION_INVITE_WITH_CAPTCHA, {\n refetchQueries: [GetMyOrganizationInvitesDocument, GetMembersDocument],\n });\n\n return {\n acceptInvite: async (inviteId: string) => {\n logger.info('mutation.start', {\n name: 'acceptInvite',\n inviteId: redactId(inviteId),\n });\n try {\n const recaptchaToken = await executeRecaptcha('invite_accept');\n const result = await acceptInvite({\n variables: { inviteId, ...(recaptchaToken ? { recaptchaToken } : {}) },\n });\n emit('organization.invite.accepted', { inviteId, source: 'microfe-organization' });\n logger.info('mutation.success', {\n name: 'acceptInvite',\n inviteId: redactId(inviteId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('organization.invite.accept_failed', {\n inviteId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'acceptInvite',\n inviteId: redactId(inviteId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n\n/**\n * Hook to reject an organization invite\n */\nexport function useRejectInvite() {\n const { emit } = useOrganizationEventEmitter();\n const [rejectInvite, { loading, error }] = useRejectOrganizationInviteMutation({\n refetchQueries: [GetMyOrganizationInvitesDocument],\n });\n\n return {\n rejectInvite: async (inviteId: string) => {\n logger.info('mutation.start', {\n name: 'rejectInvite',\n inviteId: redactId(inviteId),\n });\n try {\n const result = await rejectInvite({ variables: { inviteId } });\n emit('organization.invite.rejected', { inviteId, source: 'microfe-organization' });\n logger.info('mutation.success', {\n name: 'rejectInvite',\n inviteId: redactId(inviteId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('organization.invite.reject_failed', {\n inviteId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'rejectInvite',\n inviteId: redactId(inviteId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n\n/**\n * Hook to cancel an organization invite\n */\nexport function useCancelInvite() {\n const { emit } = useOrganizationEventEmitter();\n const [cancelInvite, { loading, error }] = useCancelOrganizationInviteMutation({\n refetchQueries: [GetOrganizationInvitesDocument],\n });\n\n return {\n cancelInvite: async (inviteId: string) => {\n logger.info('mutation.start', {\n name: 'cancelInvite',\n inviteId: redactId(inviteId),\n });\n try {\n const result = await cancelInvite({ variables: { inviteId } });\n emit('organization.invite.cancelled', { inviteId, source: 'microfe-organization' });\n logger.info('mutation.success', {\n name: 'cancelInvite',\n inviteId: redactId(inviteId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('organization.invite.cancel_failed', {\n inviteId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'cancelInvite',\n inviteId: redactId(inviteId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n\n/**\n * Hook to resend an organization invite\n */\nexport function useResendInvite() {\n const { emit } = useOrganizationEventEmitter();\n const [resendInvite, { loading, error }] = useResendOrganizationInviteMutation({\n refetchQueries: [GetOrganizationInvitesDocument],\n });\n\n return {\n resendInvite: async (inviteId: string) => {\n logger.info('mutation.start', {\n name: 'resendInvite',\n inviteId: redactId(inviteId),\n });\n try {\n const result = await resendInvite({ variables: { inviteId } });\n emit('organization.invite.resent', { inviteId, source: 'microfe-organization' });\n logger.info('mutation.success', {\n name: 'resendInvite',\n inviteId: redactId(inviteId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('organization.invite.resend_failed', {\n inviteId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'resendInvite',\n inviteId: redactId(inviteId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { Member, AddMemberInput, UpdateMemberInput } from '../types';
2
+
3
+ /**
4
+ * Hook to fetch organization members with pagination
5
+ * Updated to use offset-based pagination (limit/offset) instead of cursor-based
6
+ */
7
+ export declare function useMembers(organizationId: string, limit?: number, offset?: number, enabled?: boolean): {
8
+ members: Member[];
9
+ total: any;
10
+ limit: any;
11
+ offset: any;
12
+ hasMore: any;
13
+ loading: boolean;
14
+ error: import('@apollo/client').ApolloError | undefined;
15
+ refetch: (variables?: any) => Promise<import('@apollo/client').ApolloQueryResult<Types.GetMembersQuery>>;
16
+ fetchMore: <TFetchData = Types.GetMembersQuery, TFetchVars extends import('@apollo/client').OperationVariables = Types.GetMembersQueryVariables>(fetchMoreOptions: import('@apollo/client').FetchMoreQueryOptions<TFetchVars, TFetchData> & {
17
+ updateQuery?: ((previousQueryResult: any, options: {
18
+ fetchMoreResult: import('@apollo/client').Unmasked<TFetchData>;
19
+ variables: TFetchVars;
20
+ }) => any) | undefined;
21
+ }) => Promise<import('@apollo/client').ApolloQueryResult<TFetchData>>;
22
+ };
23
+ /**
24
+ * Hook to fetch a single member by filtering the members list
25
+ * Note: Backend doesn't have single member query, we filter client-side
26
+ */
27
+ export declare function useMember(organizationId: string, userId: string): {
28
+ member: Member | undefined;
29
+ loading: boolean;
30
+ error: import('@apollo/client').ApolloError | undefined;
31
+ refetch: (variables?: any) => Promise<import('@apollo/client').ApolloQueryResult<Types.GetMemberQuery>>;
32
+ };
33
+ /**
34
+ * Hook to fetch members by context (organization)
35
+ * Uses the same query as useMembers but with different name for backward compatibility
36
+ */
37
+ export declare function useMembersByContext(organizationId: string, limit?: number, offset?: number): {
38
+ members: Member[];
39
+ total: any;
40
+ hasMore: any;
41
+ loading: boolean;
42
+ error: import('@apollo/client').ApolloError | undefined;
43
+ refetch: (variables?: any) => Promise<import('@apollo/client').ApolloQueryResult<Types.GetMembersByContextQuery>>;
44
+ fetchMore: <TFetchData = Types.GetMembersByContextQuery, TFetchVars extends import('@apollo/client').OperationVariables = Types.GetMembersByContextQueryVariables>(fetchMoreOptions: import('@apollo/client').FetchMoreQueryOptions<TFetchVars, TFetchData> & {
45
+ updateQuery?: ((previousQueryResult: any, options: {
46
+ fetchMoreResult: import('@apollo/client').Unmasked<TFetchData>;
47
+ variables: TFetchVars;
48
+ }) => any) | undefined;
49
+ }) => Promise<import('@apollo/client').ApolloQueryResult<TFetchData>>;
50
+ };
51
+ /**
52
+ * Hook to fetch a member by email (client-side filtering)
53
+ * Note: Backend doesn't have email-based query, we get all and filter
54
+ */
55
+ export declare function useMemberByEmail(organizationId: string, email: string): {
56
+ member: Member | undefined;
57
+ loading: boolean;
58
+ error: import('@apollo/client').ApolloError | undefined;
59
+ };
60
+ /**
61
+ * Hook to add a new organization member
62
+ */
63
+ export declare function useAddMember(): {
64
+ addMember: (input: AddMemberInput) => Promise<import('@apollo/client').FetchResult<Types.AddOrganizationMemberMutation>>;
65
+ loading: boolean;
66
+ error: import('@apollo/client').ApolloError | undefined;
67
+ };
68
+ /**
69
+ * Hook to update an organization member
70
+ */
71
+ export declare function useUpdateMember(): {
72
+ updateMember: (organizationId: string, userId: string, input: UpdateMemberInput) => Promise<import('@apollo/client').FetchResult<Types.UpdateOrganizationMemberMutation>>;
73
+ loading: boolean;
74
+ error: import('@apollo/client').ApolloError | undefined;
75
+ };
76
+ /**
77
+ * Hook to remove an organization member
78
+ */
79
+ export declare function useRemoveMember(): {
80
+ removeMember: (organizationId: string, userId: string) => Promise<import('@apollo/client').FetchResult<Types.RemoveOrganizationMemberMutation>>;
81
+ loading: boolean;
82
+ error: import('@apollo/client').ApolloError | undefined;
83
+ };
84
+ //# sourceMappingURL=useMembers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMembers.d.ts","sourceRoot":"","sources":["../../../../../src/organization-management/modules/members/hooks/useMembers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA6B1E;;;GAGG;AACH,wBAAgB,UAAU,CACxB,cAAc,EAAE,MAAM,EACtB,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,EAClB,OAAO,GAAE,OAAc;;;;;;;;;;;;;;;EAoBxB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;EAmB/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU;;;;;;;;;;;;;EAkBnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAW7C,MAAM,GAAG,SAAS;;;EAI1C;AAED;;GAEG;AACH,wBAAgB,YAAY;uBAOC,cAAc;;;EA8C1C;AAED;;GAEG;AACH,wBAAgB,eAAe;mCAKU,MAAM,UAAU,MAAM,SAAS,iBAAiB;;;EA+CxF;AAED;;GAEG;AACH,wBAAgB,eAAe;mCAOU,MAAM,UAAU,MAAM;;;EA8C9D"}
@@ -0,0 +1,95 @@
1
+ import { GetMembersDocument as e, useGetMemberQuery as t, useGetMembersQuery as n, useRemoveOrganizationMemberMutation as r } from "../../../../generated/global-operations.js";
2
+ import { useOrganizationEventEmitter as i } from "../../../hooks/useOrganizationEventEmitter.js";
3
+ import { logger as a, redactId as o } from "../../../shared/logger.js";
4
+ //#region src/organization-management/modules/members/hooks/useMembers.ts
5
+ function s(e) {
6
+ return e?.graphQLErrors?.[0]?.extensions?.code;
7
+ }
8
+ function c(e) {
9
+ return e instanceof Error ? e.message : e?.message ?? "Unknown error";
10
+ }
11
+ function l(e, t = 20, r = 0, i = !0) {
12
+ let { data: a, loading: o, error: s, refetch: c, fetchMore: l } = n({
13
+ variables: {
14
+ organizationId: e,
15
+ limit: t,
16
+ offset: r
17
+ },
18
+ skip: !e || !i,
19
+ fetchPolicy: "cache-first",
20
+ nextFetchPolicy: "cache-first"
21
+ });
22
+ return {
23
+ members: a?.organizationMembers?.items || [],
24
+ total: a?.organizationMembers?.total || 0,
25
+ limit: a?.organizationMembers?.limit || t,
26
+ offset: a?.organizationMembers?.offset || r,
27
+ hasMore: a?.organizationMembers?.hasMore || !1,
28
+ loading: o,
29
+ error: s,
30
+ refetch: c,
31
+ fetchMore: l
32
+ };
33
+ }
34
+ function u(e, n) {
35
+ let { data: r, loading: i, error: a, refetch: o } = t({
36
+ variables: { organizationId: e },
37
+ skip: !e || !n,
38
+ fetchPolicy: "cache-first",
39
+ nextFetchPolicy: "cache-first"
40
+ });
41
+ return {
42
+ member: r?.organizationMembers?.items?.find((e) => e.userId === n),
43
+ loading: i,
44
+ error: a,
45
+ refetch: o
46
+ };
47
+ }
48
+ function d() {
49
+ let { emit: t } = i(), [n, { loading: l, error: u }] = r({ refetchQueries: [e] });
50
+ return {
51
+ removeMember: async (e, r) => {
52
+ a.info("mutation.start", {
53
+ name: "removeMember",
54
+ organizationId: o(e),
55
+ memberId: o(r)
56
+ });
57
+ try {
58
+ let i = await n({ variables: {
59
+ organizationId: e,
60
+ userId: r
61
+ } });
62
+ return t("member.removed", {
63
+ organizationId: e,
64
+ memberId: r,
65
+ source: "microfe-organization"
66
+ }), a.info("mutation.success", {
67
+ name: "removeMember",
68
+ organizationId: o(e),
69
+ memberId: o(r)
70
+ }), i;
71
+ } catch (n) {
72
+ let i = s(n), l = c(n);
73
+ throw t("member.remove_failed", {
74
+ organizationId: e,
75
+ memberId: r,
76
+ source: "microfe-organization",
77
+ errorCode: i,
78
+ errorMessage: l
79
+ }), a.error("mutation.failed", {
80
+ name: "removeMember",
81
+ organizationId: o(e),
82
+ memberId: o(r),
83
+ errorCode: i,
84
+ errorMessage: l
85
+ }, n), n;
86
+ }
87
+ },
88
+ loading: l,
89
+ error: u
90
+ };
91
+ }
92
+ //#endregion
93
+ export { u as useMember, l as useMembers, d as useRemoveMember };
94
+
95
+ //# sourceMappingURL=useMembers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMembers.js","names":[],"sources":["../../../../../src/organization-management/modules/members/hooks/useMembers.ts"],"sourcesContent":["import {\n useGetMembersQuery,\n useGetMemberQuery,\n useGetMembersByContextQuery,\n useGetMemberByEmailQuery,\n useAddOrganizationMemberMutation,\n useUpdateOrganizationMemberMutation,\n useRemoveOrganizationMemberMutation,\n GetMembersDocument,\n} from '../../../../generated/global-operations';\nimport type { Member, AddMemberInput, UpdateMemberInput } from '../types';\nimport { useOrganizationEventEmitter } from '../../../hooks/useOrganizationEventEmitter';\nimport { logger, redactId } from '../../../shared/logger';\n\ninterface GraphqlExtensions {\n code?: string;\n}\n\ninterface GraphqlError {\n message?: string;\n extensions?: GraphqlExtensions;\n}\n\ninterface ApolloLikeError {\n message?: string;\n graphQLErrors?: ReadonlyArray<GraphqlError>;\n}\n\nfunction extractErrorCode(error: unknown): string | undefined {\n const apolloError = error as ApolloLikeError | undefined;\n return apolloError?.graphQLErrors?.[0]?.extensions?.code;\n}\n\nfunction extractErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n const apolloError = error as ApolloLikeError | undefined;\n return apolloError?.message ?? 'Unknown error';\n}\n\n/**\n * Hook to fetch organization members with pagination\n * Updated to use offset-based pagination (limit/offset) instead of cursor-based\n */\nexport function useMembers(\n organizationId: string,\n limit: number = 20,\n offset: number = 0,\n enabled: boolean = true\n) {\n const { data, loading, error, refetch, fetchMore } = useGetMembersQuery({\n variables: { organizationId, limit, offset },\n skip: !organizationId || !enabled,\n fetchPolicy: 'cache-first',\n nextFetchPolicy: 'cache-first',\n });\n\n return {\n members: (data?.organizationMembers?.items as Member[]) || [],\n total: data?.organizationMembers?.total || 0,\n limit: data?.organizationMembers?.limit || limit,\n offset: data?.organizationMembers?.offset || offset,\n hasMore: data?.organizationMembers?.hasMore || false,\n loading,\n error,\n refetch,\n fetchMore,\n };\n}\n\n/**\n * Hook to fetch a single member by filtering the members list\n * Note: Backend doesn't have single member query, we filter client-side\n */\nexport function useMember(organizationId: string, userId: string) {\n const { data, loading, error, refetch } = useGetMemberQuery({\n variables: { organizationId },\n skip: !organizationId || !userId,\n fetchPolicy: 'cache-first',\n nextFetchPolicy: 'cache-first',\n });\n\n // Find the member matching the userId from the list\n const member = data?.organizationMembers?.items?.find(\n (m: { userId: string }) => m.userId === userId\n ) as Member | undefined;\n\n return {\n member,\n loading,\n error,\n refetch,\n };\n}\n\n/**\n * Hook to fetch members by context (organization)\n * Uses the same query as useMembers but with different name for backward compatibility\n */\nexport function useMembersByContext(\n organizationId: string,\n limit: number = 20,\n offset: number = 0\n) {\n const { data, loading, error, refetch, fetchMore } = useGetMembersByContextQuery({\n variables: { organizationId, limit, offset },\n skip: !organizationId,\n fetchPolicy: 'cache-first',\n nextFetchPolicy: 'cache-first',\n });\n\n return {\n members: (data?.organizationMembers?.items as Member[]) || [],\n total: data?.organizationMembers?.total || 0,\n hasMore: data?.organizationMembers?.hasMore || false,\n loading,\n error,\n refetch,\n fetchMore,\n };\n}\n\n/**\n * Hook to fetch a member by email (client-side filtering)\n * Note: Backend doesn't have email-based query, we get all and filter\n */\nexport function useMemberByEmail(organizationId: string, email: string) {\n const { loading, error } = useGetMemberByEmailQuery({\n variables: { organizationId },\n skip: !organizationId || !email,\n fetchPolicy: 'cache-first',\n nextFetchPolicy: 'cache-first',\n });\n\n // Email is not currently exposed by the backend membership payload.\n // Return undefined instead of a misleading first item until a dedicated field/query exists.\n return {\n member: undefined as Member | undefined,\n loading,\n error,\n };\n}\n\n/**\n * Hook to add a new organization member\n */\nexport function useAddMember() {\n const { emit } = useOrganizationEventEmitter();\n const [addMember, { loading, error }] = useAddOrganizationMemberMutation({\n refetchQueries: [GetMembersDocument],\n });\n\n return {\n addMember: async (input: AddMemberInput) => {\n logger.info('mutation.start', {\n name: 'addMember',\n organizationId: redactId(input.organizationId),\n });\n try {\n const result = await addMember({ variables: { input } });\n emit('member.added', {\n organizationId: input.organizationId,\n memberId: input.userId,\n role: input.role ?? undefined,\n source: 'microfe-organization',\n });\n logger.info('mutation.success', {\n name: 'addMember',\n organizationId: redactId(input.organizationId),\n memberId: redactId(input.userId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('member.add_failed', {\n organizationId: input.organizationId,\n memberId: input.userId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'addMember',\n organizationId: redactId(input.organizationId),\n memberId: redactId(input.userId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n\n/**\n * Hook to update an organization member\n */\nexport function useUpdateMember() {\n const { emit } = useOrganizationEventEmitter();\n const [updateMember, { loading, error }] = useUpdateOrganizationMemberMutation();\n\n return {\n updateMember: async (organizationId: string, userId: string, input: UpdateMemberInput) => {\n logger.info('mutation.start', {\n name: 'updateMember',\n organizationId: redactId(organizationId),\n memberId: redactId(userId),\n });\n try {\n const result = await updateMember({ variables: { organizationId, userId, input } });\n emit('member.role_changed', {\n organizationId,\n memberId: userId,\n role: input.role ?? undefined,\n source: 'microfe-organization',\n });\n logger.info('mutation.success', {\n name: 'updateMember',\n organizationId: redactId(organizationId),\n memberId: redactId(userId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('member.role_change_failed', {\n organizationId,\n memberId: userId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'updateMember',\n organizationId: redactId(organizationId),\n memberId: redactId(userId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n\n/**\n * Hook to remove an organization member\n */\nexport function useRemoveMember() {\n const { emit } = useOrganizationEventEmitter();\n const [removeMember, { loading, error }] = useRemoveOrganizationMemberMutation({\n refetchQueries: [GetMembersDocument],\n });\n\n return {\n removeMember: async (organizationId: string, userId: string) => {\n logger.info('mutation.start', {\n name: 'removeMember',\n organizationId: redactId(organizationId),\n memberId: redactId(userId),\n });\n try {\n const result = await removeMember({ variables: { organizationId, userId } });\n emit('member.removed', {\n organizationId,\n memberId: userId,\n source: 'microfe-organization',\n });\n logger.info('mutation.success', {\n name: 'removeMember',\n organizationId: redactId(organizationId),\n memberId: redactId(userId),\n });\n return result;\n } catch (mutationError) {\n const errorCode = extractErrorCode(mutationError);\n const errorMessage = extractErrorMessage(mutationError);\n emit('member.remove_failed', {\n organizationId,\n memberId: userId,\n source: 'microfe-organization',\n errorCode,\n errorMessage,\n });\n logger.error(\n 'mutation.failed',\n {\n name: 'removeMember',\n organizationId: redactId(organizationId),\n memberId: redactId(userId),\n errorCode,\n errorMessage,\n },\n mutationError\n );\n throw mutationError;\n }\n },\n loading,\n error,\n };\n}\n"],"mappings":";;;;AA4BA,SAAS,EAAiB,GAAoC;AAE5D,QADoB,GACA,gBAAgB,IAAI,YAAY;;AAGtD,SAAS,EAAoB,GAAwB;AAGnD,QAFI,aAAiB,QAAc,EAAM,UACrB,GACA,WAAW;;AAOjC,SAAgB,EACd,GACA,IAAgB,IAChB,IAAiB,GACjB,IAAmB,IACnB;CACA,IAAM,EAAE,SAAM,YAAS,UAAO,YAAS,iBAAc,EAAmB;EACtE,WAAW;GAAE;GAAgB;GAAO;GAAQ;EAC5C,MAAM,CAAC,KAAkB,CAAC;EAC1B,aAAa;EACb,iBAAiB;EAClB,CAAC;AAEF,QAAO;EACL,SAAU,GAAM,qBAAqB,SAAsB,EAAE;EAC7D,OAAO,GAAM,qBAAqB,SAAS;EAC3C,OAAO,GAAM,qBAAqB,SAAS;EAC3C,QAAQ,GAAM,qBAAqB,UAAU;EAC7C,SAAS,GAAM,qBAAqB,WAAW;EAC/C;EACA;EACA;EACA;EACD;;AAOH,SAAgB,EAAU,GAAwB,GAAgB;CAChE,IAAM,EAAE,SAAM,YAAS,UAAO,eAAY,EAAkB;EAC1D,WAAW,EAAE,mBAAgB;EAC7B,MAAM,CAAC,KAAkB,CAAC;EAC1B,aAAa;EACb,iBAAiB;EAClB,CAAC;AAOF,QAAO;EACL,QALa,GAAM,qBAAqB,OAAO,MAC9C,MAA0B,EAAE,WAAW,EACzC;EAIC;EACA;EACA;EACD;;AAyKH,SAAgB,IAAkB;CAChC,IAAM,EAAE,YAAS,GAA6B,EACxC,CAAC,GAAc,EAAE,YAAS,cAAW,EAAoC,EAC7E,gBAAgB,CAAC,EAAmB,EACrC,CAAC;AAEF,QAAO;EACL,cAAc,OAAO,GAAwB,MAAmB;AAC9D,KAAO,KAAK,kBAAkB;IAC5B,MAAM;IACN,gBAAgB,EAAS,EAAe;IACxC,UAAU,EAAS,EAAO;IAC3B,CAAC;AACF,OAAI;IACF,IAAM,IAAS,MAAM,EAAa,EAAE,WAAW;KAAE;KAAgB;KAAQ,EAAE,CAAC;AAW5E,WAVA,EAAK,kBAAkB;KACrB;KACA,UAAU;KACV,QAAQ;KACT,CAAC,EACF,EAAO,KAAK,oBAAoB;KAC9B,MAAM;KACN,gBAAgB,EAAS,EAAe;KACxC,UAAU,EAAS,EAAO;KAC3B,CAAC,EACK;YACA,GAAe;IACtB,IAAM,IAAY,EAAiB,EAAc,EAC3C,IAAe,EAAoB,EAAc;AAmBvD,UAlBA,EAAK,wBAAwB;KAC3B;KACA,UAAU;KACV,QAAQ;KACR;KACA;KACD,CAAC,EACF,EAAO,MACL,mBACA;KACE,MAAM;KACN,gBAAgB,EAAS,EAAe;KACxC,UAAU,EAAS,EAAO;KAC1B;KACA;KACD,EACD,EACD,EACK;;;EAGV;EACA;EACD"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Invite Member Page
3
+ * Email-based invite form with pending invites list below
4
+ */
5
+ export declare function InviteMemberPage(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=InviteMemberPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InviteMemberPage.d.ts","sourceRoot":"","sources":["../../../../../src/organization-management/modules/members/pages/InviteMemberPage.tsx"],"names":[],"mappings":"AAWA;;;GAGG;AACH,wBAAgB,gBAAgB,4CAsG/B"}
@@ -0,0 +1,91 @@
1
+ import { useOrgConsole as e } from "../../../providers/OrgConsoleProvider.js";
2
+ import { useTr as t } from "../../../shared/hooks/useTr.js";
3
+ import { LoadingState as n } from "../../../shared/components/feedback/LoadingState.js";
4
+ import { PERMISSIONS as r } from "../../../constants/permissions.js";
5
+ import { useInviteMember as i } from "../hooks/useInvites.js";
6
+ import { InviteMemberForm as a } from "../components/InviteMemberForm.js";
7
+ import { PendingInvitesList as o } from "../components/PendingInvitesList.js";
8
+ import { ArrowLeft as s, UserPlus as c } from "lucide-react";
9
+ import { usePermissions as l } from "@burdenoff/fe-libs/shared/providers/shell";
10
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
11
+ import { useParams as f } from "react-router-dom";
12
+ //#region src/organization-management/modules/members/pages/InviteMemberPage.tsx
13
+ function p() {
14
+ let p = t(), { organizationId: m } = f(), { navigate: h, basePath: g = "/organizations" } = e(), { hasPermission: _, isLoading: v } = l(), { inviteMember: y, loading: b, error: x } = i(), S = async (e) => {
15
+ await y(e);
16
+ }, C = () => {
17
+ h(`${g}/${m}/members`);
18
+ };
19
+ return v ? /* @__PURE__ */ u("div", {
20
+ className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
21
+ children: /* @__PURE__ */ u(n, { message: p("common.loadingPermissions", "Loading permissions...") })
22
+ }) : _(r.MEMBER_INVITE) ? /* @__PURE__ */ u("div", {
23
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
24
+ children: /* @__PURE__ */ d("div", {
25
+ className: "mx-auto max-w-3xl space-y-8",
26
+ children: [
27
+ /* @__PURE__ */ d("div", {
28
+ className: "flex items-center gap-3",
29
+ children: [/* @__PURE__ */ u("button", {
30
+ onClick: C,
31
+ className: "rounded-lg p-2 transition-colors hover:bg-[var(--color-bg-subtle)]",
32
+ "aria-label": p("members.invite.backToMembers", "Back to members"),
33
+ children: /* @__PURE__ */ u(s, {
34
+ size: 20,
35
+ className: "text-[var(--color-text-secondary)]"
36
+ })
37
+ }), /* @__PURE__ */ d("div", {
38
+ className: "flex items-center gap-2",
39
+ children: [/* @__PURE__ */ u(c, {
40
+ size: 24,
41
+ className: "text-[var(--color-text-primary)]"
42
+ }), /* @__PURE__ */ u("h1", {
43
+ className: "text-2xl font-bold text-[var(--color-text-primary)]",
44
+ children: p("members.invite.title", "Invite Member")
45
+ })]
46
+ })]
47
+ }),
48
+ /* @__PURE__ */ d("div", {
49
+ className: "bg-[var(--color-bg-surface)] rounded-xl border border-[var(--color-border-default)] p-6",
50
+ children: [
51
+ /* @__PURE__ */ u("h2", {
52
+ className: "text-lg font-semibold text-[var(--color-text-primary)] mb-4",
53
+ children: p("members.invite.send", "Send Invite")
54
+ }),
55
+ /* @__PURE__ */ u("p", {
56
+ className: "text-sm text-[var(--color-text-muted)] mb-6",
57
+ children: p("members.invite.description", "Enter the email address of the person you want to invite. They will receive an email notification and can accept or decline from their account.")
58
+ }),
59
+ x && /* @__PURE__ */ u("div", {
60
+ className: "mb-4 rounded-lg border border-[var(--color-status-error-border)] bg-[var(--color-status-error-bgSubtle)] p-3",
61
+ children: /* @__PURE__ */ u("p", {
62
+ className: "text-sm text-[var(--color-status-error-text)]",
63
+ children: x.message.includes("CONFLICT") ? p("members.invite.error.conflict", "An invite already exists for this email address.") : x.message.includes("already a member") ? p("members.invite.error.alreadyMember", "This user is already a member of the organization.") : x.message
64
+ })
65
+ }),
66
+ /* @__PURE__ */ u(a, {
67
+ organizationId: m,
68
+ onSubmit: S,
69
+ onCancel: C,
70
+ loading: b
71
+ })
72
+ ]
73
+ }),
74
+ /* @__PURE__ */ u("div", {
75
+ className: "bg-[var(--color-bg-surface)] rounded-xl border border-[var(--color-border-default)] p-6",
76
+ children: /* @__PURE__ */ u(o, { organizationId: m })
77
+ })
78
+ ]
79
+ })
80
+ }) : /* @__PURE__ */ u("div", {
81
+ className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
82
+ children: /* @__PURE__ */ u("div", {
83
+ className: "p-8 text-center text-[var(--color-text-secondary)]",
84
+ children: p("members.invite.noPermission", "You don't have permission to invite members.")
85
+ })
86
+ });
87
+ }
88
+ //#endregion
89
+ export { p as InviteMemberPage };
90
+
91
+ //# sourceMappingURL=InviteMemberPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InviteMemberPage.js","names":[],"sources":["../../../../../src/organization-management/modules/members/pages/InviteMemberPage.tsx"],"sourcesContent":["import { useParams } from 'react-router-dom';\nimport { ArrowLeft, UserPlus } from 'lucide-react';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useOrgConsole } from '../../../providers/OrgConsoleProvider';\nimport { useInviteMember } from '../hooks/useInvites';\nimport { InviteMemberForm } from '../components/InviteMemberForm';\nimport { PendingInvitesList } from '../components/PendingInvitesList';\nimport { LoadingState } from '../../../shared/components/feedback/LoadingState';\nimport { PERMISSIONS } from '../../../constants/permissions';\nimport { useTr } from '../../../shared/hooks/useTr';\n\n/**\n * Invite Member Page\n * Email-based invite form with pending invites list below\n */\nexport function InviteMemberPage() {\n const tr = useTr();\n const { organizationId } = useParams<{ organizationId: string }>();\n const { navigate, basePath = '/organizations' } = useOrgConsole();\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const { inviteMember, loading, error } = useInviteMember();\n\n const handleSubmit = async (data: {\n organizationId: string;\n email: string;\n message?: string;\n }) => {\n await inviteMember(data);\n };\n\n const handleCancel = () => {\n navigate(`${basePath}/${organizationId}/members`);\n };\n\n if (permissionsLoading) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] p-6\">\n <LoadingState message={tr('common.loadingPermissions', 'Loading permissions...')} />\n </div>\n );\n }\n\n if (!hasPermission(PERMISSIONS.MEMBER_INVITE)) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] p-6\">\n <div className=\"p-8 text-center text-[var(--color-text-secondary)]\">\n {tr('members.invite.noPermission', \"You don't have permission to invite members.\")}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6\">\n <div className=\"mx-auto max-w-3xl space-y-8\">\n {/* Header */}\n <div className=\"flex items-center gap-3\">\n <button\n onClick={handleCancel}\n className=\"rounded-lg p-2 transition-colors hover:bg-[var(--color-bg-subtle)]\"\n aria-label={tr('members.invite.backToMembers', 'Back to members')}\n >\n <ArrowLeft size={20} className=\"text-[var(--color-text-secondary)]\" />\n </button>\n <div className=\"flex items-center gap-2\">\n <UserPlus size={24} className=\"text-[var(--color-text-primary)]\" />\n <h1 className=\"text-2xl font-bold text-[var(--color-text-primary)]\">\n {tr('members.invite.title', 'Invite Member')}\n </h1>\n </div>\n </div>\n\n {/* Invite Form Card */}\n <div className=\"bg-[var(--color-bg-surface)] rounded-xl border border-[var(--color-border-default)] p-6\">\n <h2 className=\"text-lg font-semibold text-[var(--color-text-primary)] mb-4\">\n {tr('members.invite.send', 'Send Invite')}\n </h2>\n <p className=\"text-sm text-[var(--color-text-muted)] mb-6\">\n {tr(\n 'members.invite.description',\n 'Enter the email address of the person you want to invite. They will receive an email notification and can accept or decline from their account.'\n )}\n </p>\n\n {error && (\n <div className=\"mb-4 rounded-lg border border-[var(--color-status-error-border)] bg-[var(--color-status-error-bgSubtle)] p-3\">\n <p className=\"text-sm text-[var(--color-status-error-text)]\">\n {error.message.includes('CONFLICT')\n ? tr(\n 'members.invite.error.conflict',\n 'An invite already exists for this email address.'\n )\n : error.message.includes('already a member')\n ? tr(\n 'members.invite.error.alreadyMember',\n 'This user is already a member of the organization.'\n )\n : error.message}\n </p>\n </div>\n )}\n\n <InviteMemberForm\n organizationId={organizationId!}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n loading={loading}\n />\n </div>\n\n {/* Pending Invites */}\n <div className=\"bg-[var(--color-bg-surface)] rounded-xl border border-[var(--color-border-default)] p-6\">\n <PendingInvitesList organizationId={organizationId!} />\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAeA,SAAgB,IAAmB;CACjC,IAAM,IAAK,GAAO,EACZ,EAAE,sBAAmB,GAAuC,EAC5D,EAAE,aAAU,cAAW,qBAAqB,GAAe,EAC3D,EAAE,kBAAe,WAAW,MAAuB,GAAgB,EACnE,EAAE,iBAAc,YAAS,aAAU,GAAiB,EAEpD,IAAe,OAAO,MAItB;AACJ,QAAM,EAAa,EAAK;IAGpB,UAAqB;AACzB,IAAS,GAAG,EAAS,GAAG,EAAe,UAAU;;AAqBnD,QAlBI,IAEA,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAc,SAAS,EAAG,6BAA6B,yBAAyB,EAAI,CAAA;EAChF,CAAA,GAIL,EAAc,EAAY,cAAc,GAW3C,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,SAAS;MACT,WAAU;MACV,cAAY,EAAG,gCAAgC,kBAAkB;gBAEjE,kBAAC,GAAD;OAAW,MAAM;OAAI,WAAU;OAAuC,CAAA;MAC/D,CAAA,EACT,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD;OAAU,MAAM;OAAI,WAAU;OAAqC,CAAA,EACnE,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,wBAAwB,gBAAgB;OACzC,CAAA,CACD;QACF;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,uBAAuB,cAAc;OACtC,CAAA;MACL,kBAAC,KAAD;OAAG,WAAU;iBACV,EACC,8BACA,kJACD;OACC,CAAA;MAEH,KACC,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAM,QAAQ,SAAS,WAAW,GAC/B,EACE,iCACA,mDACD,GACD,EAAM,QAAQ,SAAS,mBAAmB,GACxC,EACE,sCACA,qDACD,GACD,EAAM;QACV,CAAA;OACA,CAAA;MAGR,kBAAC,GAAD;OACkB;OAChB,UAAU;OACV,UAAU;OACD;OACT,CAAA;MACE;;IAGN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD,EAAoC,mBAAmB,CAAA;KACnD,CAAA;IACF;;EACF,CAAA,GAvEJ,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAG,+BAA+B,+CAA+C;GAC9E,CAAA;EACF,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Member Detail Page
3
+ * Simplified version showing available member fields
4
+ */
5
+ export declare function MemberDetailPage(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=MemberDetailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemberDetailPage.d.ts","sourceRoot":"","sources":["../../../../../src/organization-management/modules/members/pages/MemberDetailPage.tsx"],"names":[],"mappings":"AAWA;;;GAGG;AACH,wBAAgB,gBAAgB,4CA6H/B"}