@burdenoff/microfe-workspaces 2026.510.50

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 (260) hide show
  1. package/README.md +88 -0
  2. package/dist/WorkspacesRoot.d.ts +35 -0
  3. package/dist/WorkspacesRoot.d.ts.map +1 -0
  4. package/dist/WorkspacesRoot.js +71 -0
  5. package/dist/WorkspacesRoot.js.map +1 -0
  6. package/dist/WorkspacesRoutes.d.ts +10 -0
  7. package/dist/WorkspacesRoutes.d.ts.map +1 -0
  8. package/dist/WorkspacesRoutes.js +111 -0
  9. package/dist/WorkspacesRoutes.js.map +1 -0
  10. package/dist/components/CreateProjectDialog.d.ts +6 -0
  11. package/dist/components/CreateProjectDialog.d.ts.map +1 -0
  12. package/dist/components/CreateProjectDialog.js +115 -0
  13. package/dist/components/CreateProjectDialog.js.map +1 -0
  14. package/dist/components/CreateWorkspaceDialog.d.ts +2 -0
  15. package/dist/components/CreateWorkspaceDialog.d.ts.map +1 -0
  16. package/dist/components/CreateWorkspaceDialog.js +172 -0
  17. package/dist/components/CreateWorkspaceDialog.js.map +1 -0
  18. package/dist/components/InviteMemberDialog.d.ts +7 -0
  19. package/dist/components/InviteMemberDialog.d.ts.map +1 -0
  20. package/dist/components/InviteMemberDialog.js +148 -0
  21. package/dist/components/InviteMemberDialog.js.map +1 -0
  22. package/dist/components/MemberListItem.d.ts +11 -0
  23. package/dist/components/MemberListItem.d.ts.map +1 -0
  24. package/dist/components/MemberListItem.js +118 -0
  25. package/dist/components/MemberListItem.js.map +1 -0
  26. package/dist/components/ProjectCard.d.ts +13 -0
  27. package/dist/components/ProjectCard.d.ts.map +1 -0
  28. package/dist/components/ProjectCard.js +150 -0
  29. package/dist/components/ProjectCard.js.map +1 -0
  30. package/dist/components/WorkspaceCard.d.ts +8 -0
  31. package/dist/components/WorkspaceCard.d.ts.map +1 -0
  32. package/dist/components/WorkspaceCard.js +79 -0
  33. package/dist/components/WorkspaceCard.js.map +1 -0
  34. package/dist/components/WorkspacesErrorBoundary.d.ts +27 -0
  35. package/dist/components/WorkspacesErrorBoundary.d.ts.map +1 -0
  36. package/dist/components/WorkspacesErrorBoundary.js +136 -0
  37. package/dist/components/WorkspacesErrorBoundary.js.map +1 -0
  38. package/dist/components/index.d.ts +8 -0
  39. package/dist/components/index.d.ts.map +1 -0
  40. package/dist/components/index.js +7 -0
  41. package/dist/constants/permissions.d.ts +33 -0
  42. package/dist/constants/permissions.d.ts.map +1 -0
  43. package/dist/constants/permissions.js +31 -0
  44. package/dist/constants/permissions.js.map +1 -0
  45. package/dist/generated/global-operations.d.ts +279 -0
  46. package/dist/generated/global-operations.d.ts.map +1 -0
  47. package/dist/generated/global-operations.js +103 -0
  48. package/dist/generated/global-operations.js.map +1 -0
  49. package/dist/generated/global-types.d.ts +20714 -0
  50. package/dist/generated/global-types.d.ts.map +1 -0
  51. package/dist/generated/wspace-operations.d.ts +2209 -0
  52. package/dist/generated/wspace-operations.d.ts.map +1 -0
  53. package/dist/generated/wspace-operations.js +576 -0
  54. package/dist/generated/wspace-operations.js.map +1 -0
  55. package/dist/generated/wspace-types.d.ts +54990 -0
  56. package/dist/generated/wspace-types.d.ts.map +1 -0
  57. package/dist/hooks/index.d.ts +8 -0
  58. package/dist/hooks/index.d.ts.map +1 -0
  59. package/dist/hooks/index.js +7 -0
  60. package/dist/hooks/useMemberMutations.d.ts +61 -0
  61. package/dist/hooks/useMemberMutations.d.ts.map +1 -0
  62. package/dist/hooks/useMemberMutations.js +263 -0
  63. package/dist/hooks/useMemberMutations.js.map +1 -0
  64. package/dist/hooks/useProjectMutations.d.ts +26 -0
  65. package/dist/hooks/useProjectMutations.d.ts.map +1 -0
  66. package/dist/hooks/useProjectMutations.js +127 -0
  67. package/dist/hooks/useProjectMutations.js.map +1 -0
  68. package/dist/hooks/useProjects.d.ts +16 -0
  69. package/dist/hooks/useProjects.d.ts.map +1 -0
  70. package/dist/hooks/useProjects.js +103 -0
  71. package/dist/hooks/useProjects.js.map +1 -0
  72. package/dist/hooks/useScopedNavigation.d.ts +4 -0
  73. package/dist/hooks/useScopedNavigation.d.ts.map +1 -0
  74. package/dist/hooks/useScopedNavigation.js +11 -0
  75. package/dist/hooks/useScopedNavigation.js.map +1 -0
  76. package/dist/hooks/useTenants.d.ts +13 -0
  77. package/dist/hooks/useTenants.d.ts.map +1 -0
  78. package/dist/hooks/useTenants.js +47 -0
  79. package/dist/hooks/useTenants.js.map +1 -0
  80. package/dist/hooks/useWorkspaceActivity.d.ts +12 -0
  81. package/dist/hooks/useWorkspaceActivity.d.ts.map +1 -0
  82. package/dist/hooks/useWorkspaceActivity.js +31 -0
  83. package/dist/hooks/useWorkspaceActivity.js.map +1 -0
  84. package/dist/hooks/useWorkspaceMembers.d.ts +24 -0
  85. package/dist/hooks/useWorkspaceMembers.d.ts.map +1 -0
  86. package/dist/hooks/useWorkspaceMembers.js +130 -0
  87. package/dist/hooks/useWorkspaceMembers.js.map +1 -0
  88. package/dist/hooks/useWorkspaceMutations.d.ts +36 -0
  89. package/dist/hooks/useWorkspaceMutations.d.ts.map +1 -0
  90. package/dist/hooks/useWorkspaceMutations.js +119 -0
  91. package/dist/hooks/useWorkspaceMutations.js.map +1 -0
  92. package/dist/hooks/useWorkspacePermissions.d.ts +29 -0
  93. package/dist/hooks/useWorkspacePermissions.d.ts.map +1 -0
  94. package/dist/hooks/useWorkspacePermissions.js +33 -0
  95. package/dist/hooks/useWorkspacePermissions.js.map +1 -0
  96. package/dist/hooks/useWorkspaceRoles.d.ts +8 -0
  97. package/dist/hooks/useWorkspaceRoles.d.ts.map +1 -0
  98. package/dist/hooks/useWorkspaceRoles.js +31 -0
  99. package/dist/hooks/useWorkspaceRoles.js.map +1 -0
  100. package/dist/hooks/useWorkspaces.d.ts +21 -0
  101. package/dist/hooks/useWorkspaces.d.ts.map +1 -0
  102. package/dist/hooks/useWorkspaces.js +75 -0
  103. package/dist/hooks/useWorkspaces.js.map +1 -0
  104. package/dist/hooks/useWorkspacesEventEmitter.d.ts +14 -0
  105. package/dist/hooks/useWorkspacesEventEmitter.d.ts.map +1 -0
  106. package/dist/hooks/useWorkspacesEventEmitter.js +14 -0
  107. package/dist/hooks/useWorkspacesEventEmitter.js.map +1 -0
  108. package/dist/index.d.ts +33 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +24 -0
  111. package/dist/pages/ActivityListPage.d.ts +2 -0
  112. package/dist/pages/ActivityListPage.d.ts.map +1 -0
  113. package/dist/pages/ActivityListPage.js +119 -0
  114. package/dist/pages/ActivityListPage.js.map +1 -0
  115. package/dist/pages/CreateWorkspacePage.d.ts +2 -0
  116. package/dist/pages/CreateWorkspacePage.d.ts.map +1 -0
  117. package/dist/pages/CreateWorkspacePage.js +264 -0
  118. package/dist/pages/CreateWorkspacePage.js.map +1 -0
  119. package/dist/pages/InviteAcceptancePage.d.ts +6 -0
  120. package/dist/pages/InviteAcceptancePage.d.ts.map +1 -0
  121. package/dist/pages/InviteAcceptancePage.js +495 -0
  122. package/dist/pages/InviteAcceptancePage.js.map +1 -0
  123. package/dist/pages/MembersListPage.d.ts +2 -0
  124. package/dist/pages/MembersListPage.d.ts.map +1 -0
  125. package/dist/pages/MembersListPage.js +420 -0
  126. package/dist/pages/MembersListPage.js.map +1 -0
  127. package/dist/pages/ProjectDetailPage.d.ts +2 -0
  128. package/dist/pages/ProjectDetailPage.d.ts.map +1 -0
  129. package/dist/pages/ProjectDetailPage.js +361 -0
  130. package/dist/pages/ProjectDetailPage.js.map +1 -0
  131. package/dist/pages/ProjectsListPage.d.ts +2 -0
  132. package/dist/pages/ProjectsListPage.d.ts.map +1 -0
  133. package/dist/pages/ProjectsListPage.js +398 -0
  134. package/dist/pages/ProjectsListPage.js.map +1 -0
  135. package/dist/pages/WorkspaceDetailPage.d.ts +2 -0
  136. package/dist/pages/WorkspaceDetailPage.d.ts.map +1 -0
  137. package/dist/pages/WorkspaceDetailPage.js +230 -0
  138. package/dist/pages/WorkspaceDetailPage.js.map +1 -0
  139. package/dist/pages/WorkspaceSettingsPage.d.ts +2 -0
  140. package/dist/pages/WorkspaceSettingsPage.d.ts.map +1 -0
  141. package/dist/pages/WorkspaceSettingsPage.js +157 -0
  142. package/dist/pages/WorkspaceSettingsPage.js.map +1 -0
  143. package/dist/pages/WorkspacesListPage.d.ts +2 -0
  144. package/dist/pages/WorkspacesListPage.d.ts.map +1 -0
  145. package/dist/pages/WorkspacesListPage.js +186 -0
  146. package/dist/pages/WorkspacesListPage.js.map +1 -0
  147. package/dist/pages/dashboard/DashboardCustomizer.d.ts +12 -0
  148. package/dist/pages/dashboard/DashboardCustomizer.d.ts.map +1 -0
  149. package/dist/pages/dashboard/DashboardCustomizer.js +136 -0
  150. package/dist/pages/dashboard/DashboardCustomizer.js.map +1 -0
  151. package/dist/pages/dashboard/DashboardGrid.d.ts +8 -0
  152. package/dist/pages/dashboard/DashboardGrid.d.ts.map +1 -0
  153. package/dist/pages/dashboard/DashboardGrid.js +58 -0
  154. package/dist/pages/dashboard/DashboardGrid.js.map +1 -0
  155. package/dist/pages/dashboard/DashboardPage.d.ts +14 -0
  156. package/dist/pages/dashboard/DashboardPage.d.ts.map +1 -0
  157. package/dist/pages/dashboard/DashboardPage.js +136 -0
  158. package/dist/pages/dashboard/DashboardPage.js.map +1 -0
  159. package/dist/pages/dashboard/WidgetWrapper.d.ts +17 -0
  160. package/dist/pages/dashboard/WidgetWrapper.d.ts.map +1 -0
  161. package/dist/pages/dashboard/WidgetWrapper.js +72 -0
  162. package/dist/pages/dashboard/WidgetWrapper.js.map +1 -0
  163. package/dist/pages/dashboard/config.d.ts +9 -0
  164. package/dist/pages/dashboard/config.d.ts.map +1 -0
  165. package/dist/pages/dashboard/config.js +214 -0
  166. package/dist/pages/dashboard/config.js.map +1 -0
  167. package/dist/pages/dashboard/hooks/useDashboardData.d.ts +9 -0
  168. package/dist/pages/dashboard/hooks/useDashboardData.d.ts.map +1 -0
  169. package/dist/pages/dashboard/hooks/useDashboardData.js +118 -0
  170. package/dist/pages/dashboard/hooks/useDashboardData.js.map +1 -0
  171. package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts +4 -0
  172. package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts.map +1 -0
  173. package/dist/pages/dashboard/hooks/useDashboardPreferences.js +32 -0
  174. package/dist/pages/dashboard/hooks/useDashboardPreferences.js.map +1 -0
  175. package/dist/pages/dashboard/types.d.ts +145 -0
  176. package/dist/pages/dashboard/types.d.ts.map +1 -0
  177. package/dist/pages/dashboard/widgets/GroupsWidget.d.ts +4 -0
  178. package/dist/pages/dashboard/widgets/GroupsWidget.d.ts.map +1 -0
  179. package/dist/pages/dashboard/widgets/GroupsWidget.js +59 -0
  180. package/dist/pages/dashboard/widgets/GroupsWidget.js.map +1 -0
  181. package/dist/pages/dashboard/widgets/MembersWidget.d.ts +4 -0
  182. package/dist/pages/dashboard/widgets/MembersWidget.d.ts.map +1 -0
  183. package/dist/pages/dashboard/widgets/MembersWidget.js +65 -0
  184. package/dist/pages/dashboard/widgets/MembersWidget.js.map +1 -0
  185. package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts +4 -0
  186. package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts.map +1 -0
  187. package/dist/pages/dashboard/widgets/ProjectsWidget.js +91 -0
  188. package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +1 -0
  189. package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts +4 -0
  190. package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts.map +1 -0
  191. package/dist/pages/dashboard/widgets/QuickActionsWidget.js +80 -0
  192. package/dist/pages/dashboard/widgets/QuickActionsWidget.js.map +1 -0
  193. package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts +4 -0
  194. package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts.map +1 -0
  195. package/dist/pages/dashboard/widgets/RecentActivityWidget.js +81 -0
  196. package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +1 -0
  197. package/dist/pages/dashboard/widgets/StorageWidget.d.ts +4 -0
  198. package/dist/pages/dashboard/widgets/StorageWidget.d.ts.map +1 -0
  199. package/dist/pages/dashboard/widgets/StorageWidget.js +69 -0
  200. package/dist/pages/dashboard/widgets/StorageWidget.js.map +1 -0
  201. package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts +4 -0
  202. package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts.map +1 -0
  203. package/dist/pages/dashboard/widgets/SystemHealthWidget.js +59 -0
  204. package/dist/pages/dashboard/widgets/SystemHealthWidget.js.map +1 -0
  205. package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts +4 -0
  206. package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts.map +1 -0
  207. package/dist/pages/dashboard/widgets/TagCloudWidget.js +61 -0
  208. package/dist/pages/dashboard/widgets/TagCloudWidget.js.map +1 -0
  209. package/dist/pages/dashboard/widgets/TipsWidget.d.ts +4 -0
  210. package/dist/pages/dashboard/widgets/TipsWidget.d.ts.map +1 -0
  211. package/dist/pages/dashboard/widgets/TipsWidget.js +67 -0
  212. package/dist/pages/dashboard/widgets/TipsWidget.js.map +1 -0
  213. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts +4 -0
  214. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts.map +1 -0
  215. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +83 -0
  216. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +1 -0
  217. package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts +4 -0
  218. package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts.map +1 -0
  219. package/dist/pages/dashboard/widgets/WelcomeWidget.js +71 -0
  220. package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +1 -0
  221. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts +4 -0
  222. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts.map +1 -0
  223. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js +97 -0
  224. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js.map +1 -0
  225. package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts +4 -0
  226. package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts.map +1 -0
  227. package/dist/pages/dashboard/widgets/WorkspacesWidget.js +67 -0
  228. package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +1 -0
  229. package/dist/providers/WorkspacesProvider.d.ts +13 -0
  230. package/dist/providers/WorkspacesProvider.d.ts.map +1 -0
  231. package/dist/providers/WorkspacesProvider.js +24 -0
  232. package/dist/providers/WorkspacesProvider.js.map +1 -0
  233. package/dist/store/workspacesStore.d.ts +82 -0
  234. package/dist/store/workspacesStore.d.ts.map +1 -0
  235. package/dist/store/workspacesStore.js +92 -0
  236. package/dist/store/workspacesStore.js.map +1 -0
  237. package/dist/types/index.d.ts +280 -0
  238. package/dist/types/index.d.ts.map +1 -0
  239. package/dist/utils/formatters.d.ts +60 -0
  240. package/dist/utils/formatters.d.ts.map +1 -0
  241. package/dist/utils/formatters.js +61 -0
  242. package/dist/utils/formatters.js.map +1 -0
  243. package/dist/utils/index.d.ts +3 -0
  244. package/dist/utils/index.d.ts.map +1 -0
  245. package/dist/utils/nativeBridge.d.ts +3 -0
  246. package/dist/utils/nativeBridge.d.ts.map +1 -0
  247. package/dist/utils/nativeBridge.js +2 -0
  248. package/dist/utils/projectTags.d.ts +6 -0
  249. package/dist/utils/projectTags.d.ts.map +1 -0
  250. package/dist/utils/projectTags.js +49 -0
  251. package/dist/utils/projectTags.js.map +1 -0
  252. package/dist/utils/slug.d.ts +13 -0
  253. package/dist/utils/slug.d.ts.map +1 -0
  254. package/dist/utils/slug.js +8 -0
  255. package/dist/utils/slug.js.map +1 -0
  256. package/dist/utils/tokenHelpers.d.ts +114 -0
  257. package/dist/utils/tokenHelpers.d.ts.map +1 -0
  258. package/dist/utils/tokenHelpers.js +80 -0
  259. package/dist/utils/tokenHelpers.js.map +1 -0
  260. package/package.json +113 -0
@@ -0,0 +1,495 @@
1
+ import { useWorkspacesContext as e } from "../providers/WorkspacesProvider.js";
2
+ import { useInvitation as t } from "../hooks/useWorkspaceMembers.js";
3
+ import { useAcceptInvitation as n, useRejectInvitation as r } from "../hooks/useMemberMutations.js";
4
+ import { useCallback as i } from "react";
5
+ import { AlertTriangle as a, Ban as o, CheckCircle as s, Clock as c, Home as l, Mail as u, RefreshCw as d, XCircle as f } from "lucide-react";
6
+ import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
7
+ import { Badge as g, Button as _, Card as v, CardContent as y, CardDescription as b, CardHeader as x, CardTitle as S, Skeleton as C } from "@burdenoff/fe-libs/ui";
8
+ import { useLocation as w, useNavigate as T, useParams as E } from "react-router-dom";
9
+ import { useI18n as D } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
10
+ //#region src/pages/InviteAcceptancePage.tsx
11
+ function O() {
12
+ let { t: a } = D(), o = i((e, t) => {
13
+ let n = a(e);
14
+ return n === e ? t : n;
15
+ }, [a]), { invitationId: C } = E(), O = w(), I = T(), { authToken: L } = e(), R = C || O.pathname.split("/").filter(Boolean).at(-1) || "", z = !!L, B = R ? `/auth/login?returnTo=${encodeURIComponent(`/workspaces/invite/${R}`)}` : "/auth/login?returnTo=%2Fworkspaces%2Flist", { data: V, isLoading: H, error: U, refetch: W } = t(R || "", z), { mutate: G, isPending: K } = n(), { mutate: q, isPending: J } = r(), Y = () => {
16
+ R && G(R, {
17
+ onSuccess: (e) => {
18
+ let t = e.workspaceId || V?.workspaceId;
19
+ I(t ? `/workspaces/${t}/members` : "/workspaces/list");
20
+ },
21
+ onError: (e) => {
22
+ console.error("Failed to accept invitation:", e);
23
+ }
24
+ });
25
+ };
26
+ if (!z) return /* @__PURE__ */ m("div", {
27
+ className: "min-h-screen flex items-center justify-center bg-muted/30 p-4",
28
+ children: /* @__PURE__ */ h(v, {
29
+ className: "max-w-xl w-full",
30
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
31
+ className: "flex items-center gap-3",
32
+ children: [/* @__PURE__ */ m("div", {
33
+ className: "rounded-lg bg-primary/10 p-3",
34
+ children: /* @__PURE__ */ m(u, {
35
+ className: "text-primary",
36
+ size: 24
37
+ })
38
+ }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m(S, { children: o("inviteAcceptance.signInRequired", "Sign in to view your invitation") }), /* @__PURE__ */ m(b, { children: o("inviteAcceptance.signInDescription", "Workspace invitations require an authenticated Burdenoff account before you can review or accept them.") })] })]
39
+ }) }), /* @__PURE__ */ h(y, {
40
+ className: "space-y-4",
41
+ children: [/* @__PURE__ */ m("p", {
42
+ className: "text-sm text-muted-foreground",
43
+ children: o("inviteAcceptance.signInHint", "Use the same email address that received the invitation, then come back here to accept or reject it.")
44
+ }), /* @__PURE__ */ h("div", {
45
+ className: "flex flex-col gap-3 sm:flex-row",
46
+ children: [/* @__PURE__ */ m(_, {
47
+ asChild: !0,
48
+ children: /* @__PURE__ */ m("a", {
49
+ href: B,
50
+ children: o("inviteAcceptance.signInButton", "Sign In")
51
+ })
52
+ }), /* @__PURE__ */ h(_, {
53
+ variant: "outline",
54
+ onClick: () => I("/workspaces/list"),
55
+ children: [/* @__PURE__ */ m(l, { className: "mr-2 h-4 w-4" }), o("inviteAcceptance.backToWorkspaces", "Back to Workspaces")]
56
+ })]
57
+ })]
58
+ })]
59
+ })
60
+ });
61
+ let X = () => {
62
+ R && q(R, {
63
+ onSuccess: () => {
64
+ I("/workspaces/list");
65
+ },
66
+ onError: (e) => {
67
+ console.error("Failed to reject invitation:", e);
68
+ }
69
+ });
70
+ };
71
+ if (H) return /* @__PURE__ */ m(k, {});
72
+ if (U) return /* @__PURE__ */ m(A, {
73
+ error: U,
74
+ onRetry: () => W()
75
+ });
76
+ if (!V) return /* @__PURE__ */ m(j, {});
77
+ switch (V.status) {
78
+ case "ACCEPTED": return /* @__PURE__ */ m(M, { invitation: V });
79
+ case "REJECTED": return /* @__PURE__ */ m(N, { invitation: V });
80
+ case "EXPIRED": return /* @__PURE__ */ m(P, { invitation: V });
81
+ case "CANCELLED": return /* @__PURE__ */ m(F, { invitation: V });
82
+ case "PENDING": return V.expiresAt && new Date(V.expiresAt) < /* @__PURE__ */ new Date() ? /* @__PURE__ */ m(P, { invitation: V }) : /* @__PURE__ */ m("div", {
83
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
84
+ children: /* @__PURE__ */ h(v, {
85
+ className: "max-w-2xl w-full",
86
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
87
+ className: "flex items-center gap-3",
88
+ children: [/* @__PURE__ */ m("div", {
89
+ className: "p-3 rounded-lg bg-primary/10",
90
+ children: /* @__PURE__ */ m(u, {
91
+ className: "text-primary",
92
+ size: 24
93
+ })
94
+ }), /* @__PURE__ */ h("div", {
95
+ className: "flex-1",
96
+ children: [/* @__PURE__ */ m(S, { children: o("inviteAcceptance.pageTitle", "Workspace Invitation") }), /* @__PURE__ */ m(b, { children: o("inviteAcceptance.pageSubtitle", "You've been invited to join a workspace") })]
97
+ })]
98
+ }) }), /* @__PURE__ */ h(y, {
99
+ className: "space-y-6",
100
+ children: [/* @__PURE__ */ h("div", {
101
+ className: "space-y-4 p-4 rounded-lg bg-muted/50",
102
+ children: [
103
+ /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
104
+ className: "text-sm font-medium text-muted-foreground",
105
+ children: o("inviteAcceptance.emailAddressLabel", "Email Address")
106
+ }), /* @__PURE__ */ m("p", {
107
+ className: "text-lg font-medium mt-1",
108
+ children: V.email
109
+ })] }),
110
+ V.expiresAt && /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
111
+ className: "text-sm font-medium text-muted-foreground",
112
+ children: o("inviteAcceptance.expiresLabel", "Expires")
113
+ }), /* @__PURE__ */ h("p", {
114
+ className: "text-lg font-medium mt-1 flex items-center gap-2",
115
+ children: [/* @__PURE__ */ m(c, {
116
+ size: 16,
117
+ className: "text-muted-foreground"
118
+ }), new Date(V.expiresAt).toLocaleDateString("en-US", {
119
+ year: "numeric",
120
+ month: "long",
121
+ day: "numeric",
122
+ hour: "2-digit",
123
+ minute: "2-digit"
124
+ })]
125
+ })] }),
126
+ V.roleIds && V.roleIds.length > 0 && /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
127
+ className: "text-sm font-medium text-muted-foreground mb-2",
128
+ children: o("inviteAcceptance.rolesLabel", "Roles")
129
+ }), /* @__PURE__ */ m("div", {
130
+ className: "flex flex-wrap gap-2",
131
+ children: V.roleIds.map((e) => /* @__PURE__ */ m(g, {
132
+ variant: "secondary",
133
+ children: e
134
+ }, e))
135
+ })] }),
136
+ /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
137
+ className: "text-sm font-medium text-muted-foreground",
138
+ children: o("inviteAcceptance.invitationIdLabel", "Invitation ID")
139
+ }), /* @__PURE__ */ m("p", {
140
+ className: "text-sm font-mono mt-1 text-muted-foreground",
141
+ children: V.id
142
+ })] })
143
+ ]
144
+ }), /* @__PURE__ */ h("div", {
145
+ className: "flex flex-col sm:flex-row gap-3 pt-4 border-t",
146
+ children: [/* @__PURE__ */ m(_, {
147
+ onClick: Y,
148
+ disabled: K || J,
149
+ className: "flex-1",
150
+ size: "lg",
151
+ children: K ? /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(d, { className: "mr-2 h-4 w-4 animate-spin" }), o("inviteAcceptance.accepting", "Accepting...")] }) : /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(s, { className: "mr-2 h-4 w-4" }), o("inviteAcceptance.acceptButton", "Accept Invitation")] })
152
+ }), /* @__PURE__ */ m(_, {
153
+ variant: "outline",
154
+ onClick: X,
155
+ disabled: K || J,
156
+ className: "flex-1",
157
+ size: "lg",
158
+ children: J ? /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(d, { className: "mr-2 h-4 w-4 animate-spin" }), o("inviteAcceptance.rejecting", "Rejecting...")] }) : /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(f, { className: "mr-2 h-4 w-4" }), o("inviteAcceptance.rejectButton", "Reject")] })
159
+ })]
160
+ })]
161
+ })]
162
+ })
163
+ });
164
+ default: return /* @__PURE__ */ m(j, {});
165
+ }
166
+ }
167
+ function k() {
168
+ return /* @__PURE__ */ m("div", {
169
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
170
+ children: /* @__PURE__ */ h(v, {
171
+ className: "max-w-2xl w-full",
172
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
173
+ className: "flex items-center gap-3",
174
+ children: [/* @__PURE__ */ m(C, { className: "h-12 w-12 rounded-lg" }), /* @__PURE__ */ h("div", {
175
+ className: "flex-1 space-y-2",
176
+ children: [/* @__PURE__ */ m(C, { className: "h-6 w-48" }), /* @__PURE__ */ m(C, { className: "h-4 w-64" })]
177
+ })]
178
+ }) }), /* @__PURE__ */ h(y, {
179
+ className: "space-y-6",
180
+ children: [/* @__PURE__ */ h("div", {
181
+ className: "space-y-4 p-4 rounded-lg bg-muted/50",
182
+ children: [/* @__PURE__ */ h("div", {
183
+ className: "space-y-2",
184
+ children: [/* @__PURE__ */ m(C, { className: "h-4 w-24" }), /* @__PURE__ */ m(C, { className: "h-6 w-48" })]
185
+ }), /* @__PURE__ */ h("div", {
186
+ className: "space-y-2",
187
+ children: [/* @__PURE__ */ m(C, { className: "h-4 w-24" }), /* @__PURE__ */ m(C, { className: "h-6 w-64" })]
188
+ })]
189
+ }), /* @__PURE__ */ h("div", {
190
+ className: "flex gap-3 pt-4",
191
+ children: [/* @__PURE__ */ m(C, { className: "h-12 flex-1" }), /* @__PURE__ */ m(C, { className: "h-12 flex-1" })]
192
+ })]
193
+ })]
194
+ })
195
+ });
196
+ }
197
+ function A({ error: e, onRetry: t }) {
198
+ let { t: n } = D(), r = i((e, t) => {
199
+ let r = n(e);
200
+ return r === e ? t : r;
201
+ }, [n]);
202
+ return /* @__PURE__ */ m("div", {
203
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
204
+ children: /* @__PURE__ */ h(v, {
205
+ className: "max-w-2xl w-full",
206
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
207
+ className: "flex items-center gap-3",
208
+ children: [/* @__PURE__ */ m("div", {
209
+ className: "p-3 rounded-lg bg-destructive/10",
210
+ children: /* @__PURE__ */ m(a, {
211
+ className: "text-destructive",
212
+ size: 24
213
+ })
214
+ }), /* @__PURE__ */ h("div", {
215
+ className: "flex-1",
216
+ children: [/* @__PURE__ */ m(S, { children: r("inviteAcceptance.errorTitle", "Error Loading Invitation") }), /* @__PURE__ */ m(b, { children: r("inviteAcceptance.errorDescription", "We couldn't load this invitation. Please try again.") })]
217
+ })]
218
+ }) }), /* @__PURE__ */ h(y, {
219
+ className: "space-y-4",
220
+ children: [/* @__PURE__ */ h("div", {
221
+ className: "flex gap-3 p-4 rounded-lg border border-destructive/50 bg-destructive/10",
222
+ children: [/* @__PURE__ */ m(a, { className: "h-5 w-5 text-destructive flex-shrink-0 mt-0.5" }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
223
+ className: "font-medium text-destructive",
224
+ children: r("inviteAcceptance.errorDetailsLabel", "Error Details")
225
+ }), /* @__PURE__ */ m("p", {
226
+ className: "text-sm mt-1 text-destructive/90",
227
+ children: e.message
228
+ })] })]
229
+ }), /* @__PURE__ */ h("div", {
230
+ className: "flex gap-3",
231
+ children: [/* @__PURE__ */ h(_, {
232
+ onClick: t,
233
+ className: "flex-1",
234
+ children: [/* @__PURE__ */ m(d, { className: "mr-2 h-4 w-4" }), r("inviteAcceptance.tryAgain", "Try Again")]
235
+ }), /* @__PURE__ */ h(_, {
236
+ variant: "outline",
237
+ onClick: () => window.location.href = "/workspaces/list",
238
+ className: "flex-1",
239
+ children: [/* @__PURE__ */ m(l, { className: "mr-2 h-4 w-4" }), r("inviteAcceptance.goToWorkspaces", "Go to Workspaces")]
240
+ })]
241
+ })]
242
+ })]
243
+ })
244
+ });
245
+ }
246
+ function j() {
247
+ let { t: e } = D(), t = i((t, n) => {
248
+ let r = e(t);
249
+ return r === t ? n : r;
250
+ }, [e]);
251
+ return /* @__PURE__ */ m("div", {
252
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
253
+ children: /* @__PURE__ */ h(v, {
254
+ className: "max-w-2xl w-full",
255
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
256
+ className: "flex items-center gap-3",
257
+ children: [/* @__PURE__ */ m("div", {
258
+ className: "p-3 rounded-lg bg-muted",
259
+ children: /* @__PURE__ */ m(a, {
260
+ className: "text-muted-foreground",
261
+ size: 24
262
+ })
263
+ }), /* @__PURE__ */ h("div", {
264
+ className: "flex-1",
265
+ children: [/* @__PURE__ */ m(S, { children: t("inviteAcceptance.notFoundTitle", "Invitation Not Found") }), /* @__PURE__ */ m(b, { children: t("inviteAcceptance.notFoundDescription", "This invitation link is invalid or has been removed") })]
266
+ })]
267
+ }) }), /* @__PURE__ */ h(y, {
268
+ className: "space-y-4",
269
+ children: [/* @__PURE__ */ h("div", {
270
+ className: "flex gap-3 p-4 rounded-lg border border-border bg-muted/50",
271
+ children: [/* @__PURE__ */ m(a, { className: "h-5 w-5 text-muted-foreground flex-shrink-0 mt-0.5" }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
272
+ className: "font-medium",
273
+ children: t("inviteAcceptance.invalidLinkHeading", "Invalid Invitation Link")
274
+ }), /* @__PURE__ */ m("p", {
275
+ className: "text-sm mt-1 text-muted-foreground",
276
+ children: t("inviteAcceptance.invalidLinkBody", "The invitation you're trying to access doesn't exist. It may have been deleted or the link is incorrect.")
277
+ })] })]
278
+ }), /* @__PURE__ */ h(_, {
279
+ onClick: () => window.location.href = "/workspaces/list",
280
+ className: "w-full",
281
+ children: [/* @__PURE__ */ m(l, { className: "mr-2 h-4 w-4" }), t("inviteAcceptance.goToWorkspaces", "Go to Workspaces")]
282
+ })]
283
+ })]
284
+ })
285
+ });
286
+ }
287
+ function M({ invitation: e }) {
288
+ let { t } = D(), n = i((e, n) => {
289
+ let r = t(e);
290
+ return r === e ? n : r;
291
+ }, [t]);
292
+ return /* @__PURE__ */ m("div", {
293
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
294
+ children: /* @__PURE__ */ h(v, {
295
+ className: "max-w-2xl w-full",
296
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
297
+ className: "flex items-center gap-3",
298
+ children: [/* @__PURE__ */ m("div", {
299
+ className: "p-3 rounded-lg bg-status-success/10 transition-colors",
300
+ children: /* @__PURE__ */ m(s, {
301
+ className: "text-status-success",
302
+ size: 24
303
+ })
304
+ }), /* @__PURE__ */ h("div", {
305
+ className: "flex-1",
306
+ children: [/* @__PURE__ */ m(S, { children: n("inviteAcceptance.alreadyAcceptedTitle", "Invitation Already Accepted") }), /* @__PURE__ */ m(b, { children: n("inviteAcceptance.alreadyAcceptedDescription", "This invitation has already been accepted") })]
307
+ })]
308
+ }) }), /* @__PURE__ */ h(y, {
309
+ className: "space-y-4",
310
+ children: [/* @__PURE__ */ h("div", {
311
+ className: "flex gap-3 p-4 rounded-lg border border-status-success/30 bg-status-success/10 transition-colors",
312
+ children: [/* @__PURE__ */ m(s, { className: "h-5 w-5 text-status-success flex-shrink-0 mt-0.5" }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
313
+ className: "font-medium text-status-success",
314
+ children: n("inviteAcceptance.alreadyMember", "You're already a member")
315
+ }), /* @__PURE__ */ h("p", {
316
+ className: "text-sm mt-1 text-status-success/80",
317
+ children: [
318
+ n("inviteAcceptance.alreadyAcceptedPrefix", "This invitation to "),
319
+ /* @__PURE__ */ m("span", {
320
+ className: "font-medium",
321
+ children: e.email
322
+ }),
323
+ n("inviteAcceptance.alreadyAcceptedSuffix", " has already been accepted.")
324
+ ]
325
+ })] })]
326
+ }), /* @__PURE__ */ m(_, {
327
+ onClick: () => window.location.href = `/workspaces/${e.workspaceId}/members`,
328
+ className: "w-full",
329
+ children: n("inviteAcceptance.goToWorkspace", "Go to Workspace")
330
+ })]
331
+ })]
332
+ })
333
+ });
334
+ }
335
+ function N({ invitation: e }) {
336
+ let { t } = D(), n = i((e, n) => {
337
+ let r = t(e);
338
+ return r === e ? n : r;
339
+ }, [t]);
340
+ return /* @__PURE__ */ m("div", {
341
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
342
+ children: /* @__PURE__ */ h(v, {
343
+ className: "max-w-2xl w-full",
344
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
345
+ className: "flex items-center gap-3",
346
+ children: [/* @__PURE__ */ m("div", {
347
+ className: "p-3 rounded-lg bg-muted",
348
+ children: /* @__PURE__ */ m(f, {
349
+ className: "text-muted-foreground",
350
+ size: 24
351
+ })
352
+ }), /* @__PURE__ */ h("div", {
353
+ className: "flex-1",
354
+ children: [/* @__PURE__ */ m(S, { children: n("inviteAcceptance.rejectedTitle", "Invitation Rejected") }), /* @__PURE__ */ m(b, { children: n("inviteAcceptance.rejectedDescription", "You've already declined this invitation") })]
355
+ })]
356
+ }) }), /* @__PURE__ */ h(y, {
357
+ className: "space-y-4",
358
+ children: [/* @__PURE__ */ h("div", {
359
+ className: "flex gap-3 p-4 rounded-lg border border-border bg-muted/50",
360
+ children: [/* @__PURE__ */ m(f, { className: "h-5 w-5 text-muted-foreground flex-shrink-0 mt-0.5" }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
361
+ className: "font-medium",
362
+ children: n("inviteAcceptance.invitationDeclined", "Invitation Declined")
363
+ }), /* @__PURE__ */ h("p", {
364
+ className: "text-sm mt-1 text-muted-foreground",
365
+ children: [
366
+ n("inviteAcceptance.rejectedPrefix", "This invitation to "),
367
+ /* @__PURE__ */ m("span", {
368
+ className: "font-medium",
369
+ children: e.email
370
+ }),
371
+ n("inviteAcceptance.rejectedSuffix", " was previously rejected.")
372
+ ]
373
+ })] })]
374
+ }), /* @__PURE__ */ h(_, {
375
+ onClick: () => window.location.href = "/workspaces/list",
376
+ className: "w-full",
377
+ children: [/* @__PURE__ */ m(l, { className: "mr-2 h-4 w-4" }), n("inviteAcceptance.goToWorkspaces", "Go to Workspaces")]
378
+ })]
379
+ })]
380
+ })
381
+ });
382
+ }
383
+ function P({ invitation: e }) {
384
+ let { t } = D(), n = i((e, n) => {
385
+ let r = t(e);
386
+ return r === e ? n : r;
387
+ }, [t]);
388
+ return /* @__PURE__ */ m("div", {
389
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
390
+ children: /* @__PURE__ */ h(v, {
391
+ className: "max-w-2xl w-full",
392
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
393
+ className: "flex items-center gap-3",
394
+ children: [/* @__PURE__ */ m("div", {
395
+ className: "p-3 rounded-lg bg-status-warning/10 transition-colors",
396
+ children: /* @__PURE__ */ m(c, {
397
+ className: "text-status-warning",
398
+ size: 24
399
+ })
400
+ }), /* @__PURE__ */ h("div", {
401
+ className: "flex-1",
402
+ children: [/* @__PURE__ */ m(S, { children: n("inviteAcceptance.expiredTitle", "Invitation Expired") }), /* @__PURE__ */ m(b, { children: n("inviteAcceptance.expiredDescription", "This invitation has expired") })]
403
+ })]
404
+ }) }), /* @__PURE__ */ h(y, {
405
+ className: "space-y-4",
406
+ children: [/* @__PURE__ */ h("div", {
407
+ className: "flex gap-3 p-4 rounded-lg border border-status-warning/30 bg-status-warning/10 transition-colors",
408
+ children: [/* @__PURE__ */ m(c, { className: "h-5 w-5 text-status-warning flex-shrink-0 mt-0.5" }), /* @__PURE__ */ h("div", { children: [
409
+ /* @__PURE__ */ m("p", {
410
+ className: "font-medium text-status-warning",
411
+ children: n("inviteAcceptance.expiredHeading", "Invitation No Longer Valid")
412
+ }),
413
+ /* @__PURE__ */ h("p", {
414
+ className: "text-sm mt-1 text-status-warning/80",
415
+ children: [
416
+ n("inviteAcceptance.expiredPrefix", "This invitation to "),
417
+ /* @__PURE__ */ m("span", {
418
+ className: "font-medium",
419
+ children: e.email
420
+ }),
421
+ n("inviteAcceptance.expiredMiddle", " expired on "),
422
+ e.expiresAt && new Date(e.expiresAt).toLocaleDateString("en-US", {
423
+ year: "numeric",
424
+ month: "long",
425
+ day: "numeric"
426
+ }),
427
+ "."
428
+ ]
429
+ }),
430
+ /* @__PURE__ */ m("p", {
431
+ className: "text-sm mt-2 text-status-warning/80",
432
+ children: n("inviteAcceptance.expiredContactAdmin", "Please contact the workspace admin to request a new invitation.")
433
+ })
434
+ ] })]
435
+ }), /* @__PURE__ */ h(_, {
436
+ onClick: () => window.location.href = "/workspaces/list",
437
+ className: "w-full",
438
+ children: [/* @__PURE__ */ m(l, { className: "mr-2 h-4 w-4" }), n("inviteAcceptance.goToWorkspaces", "Go to Workspaces")]
439
+ })]
440
+ })]
441
+ })
442
+ });
443
+ }
444
+ function F({ invitation: e }) {
445
+ let { t } = D(), n = i((e, n) => {
446
+ let r = t(e);
447
+ return r === e ? n : r;
448
+ }, [t]);
449
+ return /* @__PURE__ */ m("div", {
450
+ className: "min-h-screen flex items-center justify-center p-4 bg-muted/30",
451
+ children: /* @__PURE__ */ h(v, {
452
+ className: "max-w-2xl w-full",
453
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
454
+ className: "flex items-center gap-3",
455
+ children: [/* @__PURE__ */ m("div", {
456
+ className: "p-3 rounded-lg bg-destructive/10",
457
+ children: /* @__PURE__ */ m(o, {
458
+ className: "text-destructive",
459
+ size: 24
460
+ })
461
+ }), /* @__PURE__ */ h("div", {
462
+ className: "flex-1",
463
+ children: [/* @__PURE__ */ m(S, { children: n("inviteAcceptance.cancelledTitle", "Invitation Cancelled") }), /* @__PURE__ */ m(b, { children: n("inviteAcceptance.cancelledDescription", "This invitation has been cancelled by the sender") })]
464
+ })]
465
+ }) }), /* @__PURE__ */ h(y, {
466
+ className: "space-y-4",
467
+ children: [/* @__PURE__ */ h("div", {
468
+ className: "flex gap-3 p-4 rounded-lg border border-destructive/50 bg-destructive/10",
469
+ children: [/* @__PURE__ */ m(o, { className: "h-5 w-5 text-destructive flex-shrink-0 mt-0.5" }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
470
+ className: "font-medium text-destructive",
471
+ children: n("inviteAcceptance.cancelledHeading", "Invitation No Longer Available")
472
+ }), /* @__PURE__ */ h("p", {
473
+ className: "text-sm mt-1 text-destructive/90",
474
+ children: [
475
+ n("inviteAcceptance.cancelledPrefix", "This invitation to "),
476
+ /* @__PURE__ */ m("span", {
477
+ className: "font-medium",
478
+ children: e.email
479
+ }),
480
+ n("inviteAcceptance.cancelledSuffix", " was cancelled by the workspace admin and is no longer valid.")
481
+ ]
482
+ })] })]
483
+ }), /* @__PURE__ */ h(_, {
484
+ onClick: () => window.location.href = "/workspaces/list",
485
+ className: "w-full",
486
+ children: [/* @__PURE__ */ m(l, { className: "mr-2 h-4 w-4" }), n("inviteAcceptance.goToWorkspaces", "Go to Workspaces")]
487
+ })]
488
+ })]
489
+ })
490
+ });
491
+ }
492
+ //#endregion
493
+ export { O as InviteAcceptancePage };
494
+
495
+ //# sourceMappingURL=InviteAcceptancePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InviteAcceptancePage.js","names":[],"sources":["../../src/pages/InviteAcceptancePage.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useParams, useNavigate, useLocation } from 'react-router-dom';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Button,\n Badge,\n Skeleton,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Mail,\n CheckCircle,\n XCircle,\n Clock,\n AlertTriangle,\n Ban,\n Home,\n RefreshCw,\n} from 'lucide-react';\nimport { useInvitation } from '../hooks/useWorkspaceMembers';\nimport { useAcceptInvitation, useRejectInvitation } from '../hooks/useMemberMutations';\nimport type { WorkspaceInvitation } from '../types';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\n\n/**\n * Page for accepting or rejecting workspace invitations\n * Accessible via /workspaces/invite/:invitationId\n */\nexport function InviteAcceptancePage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n const { invitationId: routeInvitationId } = useParams<{ invitationId: string }>();\n const location = useLocation();\n const navigate = useNavigate();\n const { authToken } = useWorkspacesContext();\n const invitationId =\n routeInvitationId || location.pathname.split('/').filter(Boolean).at(-1) || '';\n const isAuthenticated = Boolean(authToken);\n\n const inviteLoginPath = invitationId\n ? `/auth/login?returnTo=${encodeURIComponent(`/workspaces/invite/${invitationId}`)}`\n : '/auth/login?returnTo=%2Fworkspaces%2Flist';\n\n // Fetch invitation details\n const {\n data: invitation,\n isLoading,\n error,\n refetch,\n } = useInvitation(invitationId || '', isAuthenticated);\n\n // Mutations\n const { mutate: acceptInvitation, isPending: isAccepting } = useAcceptInvitation();\n const { mutate: rejectInvitation, isPending: isRejecting } = useRejectInvitation();\n\n // Handler for accepting invitation\n const handleAccept = () => {\n if (!invitationId) return;\n\n acceptInvitation(invitationId, {\n onSuccess: (acceptedInvitation) => {\n // Redirect to workspace members page\n const workspaceId = acceptedInvitation.workspaceId || invitation?.workspaceId;\n if (workspaceId) {\n navigate(`/workspaces/${workspaceId}/members`);\n } else {\n navigate('/workspaces/list');\n }\n },\n onError: (error) => {\n console.error('Failed to accept invitation:', error);\n },\n });\n };\n\n if (!isAuthenticated) {\n return (\n <div className=\"min-h-screen flex items-center justify-center bg-muted/30 p-4\">\n <Card className=\"max-w-xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-lg bg-primary/10 p-3\">\n <Mail className=\"text-primary\" size={24} />\n </div>\n <div>\n <CardTitle>\n {tr('inviteAcceptance.signInRequired', 'Sign in to view your invitation')}\n </CardTitle>\n <CardDescription>\n {tr(\n 'inviteAcceptance.signInDescription',\n 'Workspace invitations require an authenticated Burdenoff account before you can review or accept them.'\n )}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <p className=\"text-sm text-muted-foreground\">\n {tr(\n 'inviteAcceptance.signInHint',\n 'Use the same email address that received the invitation, then come back here to accept or reject it.'\n )}\n </p>\n <div className=\"flex flex-col gap-3 sm:flex-row\">\n <Button asChild>\n <a href={inviteLoginPath}>{tr('inviteAcceptance.signInButton', 'Sign In')}</a>\n </Button>\n <Button variant=\"outline\" onClick={() => navigate('/workspaces/list')}>\n <Home className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.backToWorkspaces', 'Back to Workspaces')}\n </Button>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n }\n\n // Handler for rejecting invitation\n const handleReject = () => {\n if (!invitationId) return;\n\n rejectInvitation(invitationId, {\n onSuccess: () => {\n // Redirect to workspaces list\n navigate('/workspaces/list');\n },\n onError: (error) => {\n console.error('Failed to reject invitation:', error);\n },\n });\n };\n\n // Loading state\n if (isLoading) {\n return <LoadingSkeleton />;\n }\n\n // Error state (network error or other issues)\n if (error) {\n return <ErrorState error={error} onRetry={() => refetch()} />;\n }\n\n // Not found state\n if (!invitation) {\n return <NotFoundState />;\n }\n\n // Check invitation status and show appropriate UI\n switch (invitation.status) {\n case 'ACCEPTED':\n return <AlreadyAcceptedState invitation={invitation} />;\n case 'REJECTED':\n return <AlreadyRejectedState invitation={invitation} />;\n case 'EXPIRED':\n return <ExpiredState invitation={invitation} />;\n case 'CANCELLED':\n return <CancelledState invitation={invitation} />;\n case 'PENDING':\n // Check if invitation has expired based on expiresAt\n if (invitation.expiresAt && new Date(invitation.expiresAt) < new Date()) {\n return <ExpiredState invitation={invitation} />;\n }\n\n // Show main acceptance UI\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-3 rounded-lg bg-primary/10\">\n <Mail className=\"text-primary\" size={24} />\n </div>\n <div className=\"flex-1\">\n <CardTitle>{tr('inviteAcceptance.pageTitle', 'Workspace Invitation')}</CardTitle>\n <CardDescription>\n {tr('inviteAcceptance.pageSubtitle', \"You've been invited to join a workspace\")}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-6\">\n {/* Invitation Details */}\n <div className=\"space-y-4 p-4 rounded-lg bg-muted/50\">\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">\n {tr('inviteAcceptance.emailAddressLabel', 'Email Address')}\n </p>\n <p className=\"text-lg font-medium mt-1\">{invitation.email}</p>\n </div>\n\n {invitation.expiresAt && (\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">\n {tr('inviteAcceptance.expiresLabel', 'Expires')}\n </p>\n <p className=\"text-lg font-medium mt-1 flex items-center gap-2\">\n <Clock size={16} className=\"text-muted-foreground\" />\n {new Date(invitation.expiresAt).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </p>\n </div>\n )}\n\n {invitation.roleIds && invitation.roleIds.length > 0 && (\n <div>\n <p className=\"text-sm font-medium text-muted-foreground mb-2\">\n {tr('inviteAcceptance.rolesLabel', 'Roles')}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {invitation.roleIds.map((roleId) => (\n <Badge key={roleId} variant=\"secondary\">\n {roleId}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">\n {tr('inviteAcceptance.invitationIdLabel', 'Invitation ID')}\n </p>\n <p className=\"text-sm font-mono mt-1 text-muted-foreground\">{invitation.id}</p>\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"flex flex-col sm:flex-row gap-3 pt-4 border-t\">\n <Button\n onClick={handleAccept}\n disabled={isAccepting || isRejecting}\n className=\"flex-1\"\n size=\"lg\"\n >\n {isAccepting ? (\n <>\n <RefreshCw className=\"mr-2 h-4 w-4 animate-spin\" />\n {tr('inviteAcceptance.accepting', 'Accepting...')}\n </>\n ) : (\n <>\n <CheckCircle className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.acceptButton', 'Accept Invitation')}\n </>\n )}\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleReject}\n disabled={isAccepting || isRejecting}\n className=\"flex-1\"\n size=\"lg\"\n >\n {isRejecting ? (\n <>\n <RefreshCw className=\"mr-2 h-4 w-4 animate-spin\" />\n {tr('inviteAcceptance.rejecting', 'Rejecting...')}\n </>\n ) : (\n <>\n <XCircle className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.rejectButton', 'Reject')}\n </>\n )}\n </Button>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n\n default:\n return <NotFoundState />;\n }\n}\n\n/**\n * Loading skeleton while fetching invitation\n */\nfunction LoadingSkeleton() {\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <Skeleton className=\"h-12 w-12 rounded-lg\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-6 w-48\" />\n <Skeleton className=\"h-4 w-64\" />\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-6\">\n <div className=\"space-y-4 p-4 rounded-lg bg-muted/50\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-6 w-48\" />\n </div>\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-6 w-64\" />\n </div>\n </div>\n <div className=\"flex gap-3 pt-4\">\n <Skeleton className=\"h-12 flex-1\" />\n <Skeleton className=\"h-12 flex-1\" />\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n\n/**\n * Error state with retry option\n */\nfunction ErrorState({ error, onRetry }: { error: Error; onRetry: () => void }) {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-3 rounded-lg bg-destructive/10\">\n <AlertTriangle className=\"text-destructive\" size={24} />\n </div>\n <div className=\"flex-1\">\n <CardTitle>{tr('inviteAcceptance.errorTitle', 'Error Loading Invitation')}</CardTitle>\n <CardDescription>\n {tr(\n 'inviteAcceptance.errorDescription',\n \"We couldn't load this invitation. Please try again.\"\n )}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex gap-3 p-4 rounded-lg border border-destructive/50 bg-destructive/10\">\n <AlertTriangle className=\"h-5 w-5 text-destructive flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-destructive\">\n {tr('inviteAcceptance.errorDetailsLabel', 'Error Details')}\n </p>\n <p className=\"text-sm mt-1 text-destructive/90\">{error.message}</p>\n </div>\n </div>\n\n <div className=\"flex gap-3\">\n <Button onClick={onRetry} className=\"flex-1\">\n <RefreshCw className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.tryAgain', 'Try Again')}\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => (window.location.href = '/workspaces/list')}\n className=\"flex-1\"\n >\n <Home className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.goToWorkspaces', 'Go to Workspaces')}\n </Button>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n\n/**\n * Not found state (invalid invitation ID)\n */\nfunction NotFoundState() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-3 rounded-lg bg-muted\">\n <AlertTriangle className=\"text-muted-foreground\" size={24} />\n </div>\n <div className=\"flex-1\">\n <CardTitle>{tr('inviteAcceptance.notFoundTitle', 'Invitation Not Found')}</CardTitle>\n <CardDescription>\n {tr(\n 'inviteAcceptance.notFoundDescription',\n 'This invitation link is invalid or has been removed'\n )}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex gap-3 p-4 rounded-lg border border-border bg-muted/50\">\n <AlertTriangle className=\"h-5 w-5 text-muted-foreground flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium\">\n {tr('inviteAcceptance.invalidLinkHeading', 'Invalid Invitation Link')}\n </p>\n <p className=\"text-sm mt-1 text-muted-foreground\">\n {tr(\n 'inviteAcceptance.invalidLinkBody',\n \"The invitation you're trying to access doesn't exist. It may have been deleted or the link is incorrect.\"\n )}\n </p>\n </div>\n </div>\n\n <Button onClick={() => (window.location.href = '/workspaces/list')} className=\"w-full\">\n <Home className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.goToWorkspaces', 'Go to Workspaces')}\n </Button>\n </CardContent>\n </Card>\n </div>\n );\n}\n\n/**\n * Already accepted state\n */\nfunction AlreadyAcceptedState({ invitation }: { invitation: WorkspaceInvitation }) {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-3 rounded-lg bg-status-success/10 transition-colors\">\n <CheckCircle className=\"text-status-success\" size={24} />\n </div>\n <div className=\"flex-1\">\n <CardTitle>\n {tr('inviteAcceptance.alreadyAcceptedTitle', 'Invitation Already Accepted')}\n </CardTitle>\n <CardDescription>\n {tr(\n 'inviteAcceptance.alreadyAcceptedDescription',\n 'This invitation has already been accepted'\n )}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex gap-3 p-4 rounded-lg border border-status-success/30 bg-status-success/10 transition-colors\">\n <CheckCircle className=\"h-5 w-5 text-status-success flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-status-success\">\n {tr('inviteAcceptance.alreadyMember', \"You're already a member\")}\n </p>\n <p className=\"text-sm mt-1 text-status-success/80\">\n {tr('inviteAcceptance.alreadyAcceptedPrefix', 'This invitation to ')}\n <span className=\"font-medium\">{invitation.email}</span>\n {tr('inviteAcceptance.alreadyAcceptedSuffix', ' has already been accepted.')}\n </p>\n </div>\n </div>\n\n <Button\n onClick={() => (window.location.href = `/workspaces/${invitation.workspaceId}/members`)}\n className=\"w-full\"\n >\n {tr('inviteAcceptance.goToWorkspace', 'Go to Workspace')}\n </Button>\n </CardContent>\n </Card>\n </div>\n );\n}\n\n/**\n * Already rejected state\n */\nfunction AlreadyRejectedState({ invitation }: { invitation: WorkspaceInvitation }) {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-3 rounded-lg bg-muted\">\n <XCircle className=\"text-muted-foreground\" size={24} />\n </div>\n <div className=\"flex-1\">\n <CardTitle>{tr('inviteAcceptance.rejectedTitle', 'Invitation Rejected')}</CardTitle>\n <CardDescription>\n {tr(\n 'inviteAcceptance.rejectedDescription',\n \"You've already declined this invitation\"\n )}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex gap-3 p-4 rounded-lg border border-border bg-muted/50\">\n <XCircle className=\"h-5 w-5 text-muted-foreground flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium\">\n {tr('inviteAcceptance.invitationDeclined', 'Invitation Declined')}\n </p>\n <p className=\"text-sm mt-1 text-muted-foreground\">\n {tr('inviteAcceptance.rejectedPrefix', 'This invitation to ')}\n <span className=\"font-medium\">{invitation.email}</span>\n {tr('inviteAcceptance.rejectedSuffix', ' was previously rejected.')}\n </p>\n </div>\n </div>\n\n <Button onClick={() => (window.location.href = '/workspaces/list')} className=\"w-full\">\n <Home className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.goToWorkspaces', 'Go to Workspaces')}\n </Button>\n </CardContent>\n </Card>\n </div>\n );\n}\n\n/**\n * Expired state\n */\nfunction ExpiredState({ invitation }: { invitation: WorkspaceInvitation }) {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-3 rounded-lg bg-status-warning/10 transition-colors\">\n <Clock className=\"text-status-warning\" size={24} />\n </div>\n <div className=\"flex-1\">\n <CardTitle>{tr('inviteAcceptance.expiredTitle', 'Invitation Expired')}</CardTitle>\n <CardDescription>\n {tr('inviteAcceptance.expiredDescription', 'This invitation has expired')}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex gap-3 p-4 rounded-lg border border-status-warning/30 bg-status-warning/10 transition-colors\">\n <Clock className=\"h-5 w-5 text-status-warning flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-status-warning\">\n {tr('inviteAcceptance.expiredHeading', 'Invitation No Longer Valid')}\n </p>\n <p className=\"text-sm mt-1 text-status-warning/80\">\n {tr('inviteAcceptance.expiredPrefix', 'This invitation to ')}\n <span className=\"font-medium\">{invitation.email}</span>\n {tr('inviteAcceptance.expiredMiddle', ' expired on ')}\n {invitation.expiresAt &&\n new Date(invitation.expiresAt).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })}\n .\n </p>\n <p className=\"text-sm mt-2 text-status-warning/80\">\n {tr(\n 'inviteAcceptance.expiredContactAdmin',\n 'Please contact the workspace admin to request a new invitation.'\n )}\n </p>\n </div>\n </div>\n\n <Button onClick={() => (window.location.href = '/workspaces/list')} className=\"w-full\">\n <Home className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.goToWorkspaces', 'Go to Workspaces')}\n </Button>\n </CardContent>\n </Card>\n </div>\n );\n}\n\n/**\n * Cancelled state\n */\nfunction CancelledState({ invitation }: { invitation: WorkspaceInvitation }) {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n return (\n <div className=\"min-h-screen flex items-center justify-center p-4 bg-muted/30\">\n <Card className=\"max-w-2xl w-full\">\n <CardHeader>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-3 rounded-lg bg-destructive/10\">\n <Ban className=\"text-destructive\" size={24} />\n </div>\n <div className=\"flex-1\">\n <CardTitle>{tr('inviteAcceptance.cancelledTitle', 'Invitation Cancelled')}</CardTitle>\n <CardDescription>\n {tr(\n 'inviteAcceptance.cancelledDescription',\n 'This invitation has been cancelled by the sender'\n )}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex gap-3 p-4 rounded-lg border border-destructive/50 bg-destructive/10\">\n <Ban className=\"h-5 w-5 text-destructive flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-destructive\">\n {tr('inviteAcceptance.cancelledHeading', 'Invitation No Longer Available')}\n </p>\n <p className=\"text-sm mt-1 text-destructive/90\">\n {tr('inviteAcceptance.cancelledPrefix', 'This invitation to ')}\n <span className=\"font-medium\">{invitation.email}</span>\n {tr(\n 'inviteAcceptance.cancelledSuffix',\n ' was cancelled by the workspace admin and is no longer valid.'\n )}\n </p>\n </div>\n </div>\n\n <Button onClick={() => (window.location.href = '/workspaces/list')} className=\"w-full\">\n <Home className=\"mr-2 h-4 w-4\" />\n {tr('inviteAcceptance.goToWorkspaces', 'Go to Workspaces')}\n </Button>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAgCA,SAAgB,IAAuB;CACrC,IAAM,EAAE,SAAM,GAAS,EACjB,IAAK,GACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ,EACK,EAAE,cAAc,MAAsB,GAAqC,EAC3E,IAAW,GAAa,EACxB,IAAW,GAAa,EACxB,EAAE,iBAAc,GAAsB,EACtC,IACJ,KAAqB,EAAS,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAC,GAAG,GAAG,IAAI,IACxE,IAAkB,EAAQ,GAE1B,IAAkB,IACpB,wBAAwB,mBAAmB,sBAAsB,IAAe,KAChF,6CAGE,EACJ,MAAM,GACN,cACA,UACA,eACE,EAAc,KAAgB,IAAI,EAAgB,EAGhD,EAAE,QAAQ,GAAkB,WAAW,MAAgB,GAAqB,EAC5E,EAAE,QAAQ,GAAkB,WAAW,MAAgB,GAAqB,EAG5E,UAAqB;AACpB,OAEL,EAAiB,GAAc;GAC7B,YAAY,MAAuB;IAEjC,IAAM,IAAc,EAAmB,eAAe,GAAY;AAClE,IACE,EADE,IACO,eAAe,EAAY,YAE3B,mBAAmB;;GAGhC,UAAU,MAAU;AAClB,YAAQ,MAAM,gCAAgC,EAAM;;GAEvD,CAAC;;AAGJ,KAAI,CAAC,EACH,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAM,WAAU;MAAe,MAAM;MAAM,CAAA;KACvC,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACG,EAAG,mCAAmC,kCAAkC,EAC/D,CAAA,EACZ,kBAAC,GAAD,EAAA,UACG,EACC,sCACA,yGACD,EACe,CAAA,CACd,EAAA,CAAA,CACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,KAAD;KAAG,WAAU;eACV,EACC,+BACA,uGACD;KACC,CAAA,EACJ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAQ,SAAA;gBACN,kBAAC,KAAD;OAAG,MAAM;iBAAkB,EAAG,iCAAiC,UAAU;OAAK,CAAA;MACvE,CAAA,EACT,kBAAC,GAAD;MAAQ,SAAQ;MAAU,eAAe,EAAS,mBAAmB;gBAArE,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAG,qCAAqC,qBAAqB,CACvD;QACL;OACM;MACT;;EACH,CAAA;CAKV,IAAM,UAAqB;AACpB,OAEL,EAAiB,GAAc;GAC7B,iBAAiB;AAEf,MAAS,mBAAmB;;GAE9B,UAAU,MAAU;AAClB,YAAQ,MAAM,gCAAgC,EAAM;;GAEvD,CAAC;;AAIJ,KAAI,EACF,QAAO,kBAAC,GAAD,EAAmB,CAAA;AAI5B,KAAI,EACF,QAAO,kBAAC,GAAD;EAAmB;EAAO,eAAe,GAAS;EAAI,CAAA;AAI/D,KAAI,CAAC,EACH,QAAO,kBAAC,GAAD,EAAiB,CAAA;AAI1B,SAAQ,EAAW,QAAnB;EACE,KAAK,WACH,QAAO,kBAAC,GAAD,EAAkC,eAAc,CAAA;EACzD,KAAK,WACH,QAAO,kBAAC,GAAD,EAAkC,eAAc,CAAA;EACzD,KAAK,UACH,QAAO,kBAAC,GAAD,EAA0B,eAAc,CAAA;EACjD,KAAK,YACH,QAAO,kBAAC,GAAD,EAA4B,eAAc,CAAA;EACnD,KAAK,UAOH,QALI,EAAW,aAAa,IAAI,KAAK,EAAW,UAAU,mBAAG,IAAI,MAAM,GAC9D,kBAAC,GAAD,EAA0B,eAAc,CAAA,GAK/C,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD;OAAM,WAAU;OAAe,MAAM;OAAM,CAAA;MACvC,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAA,UAAY,EAAG,8BAA8B,uBAAuB,EAAa,CAAA,EACjF,kBAAC,GAAD,EAAA,UACG,EAAG,iCAAiC,0CAA0C,EAC/D,CAAA,CACd;QACF;QACK,CAAA,EACb,kBAAC,GAAD;KAAa,WAAU;eAAvB,CAEE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAG,sCAAsC,gBAAgB;QACxD,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAA4B,EAAW;QAAU,CAAA,CAC1D,EAAA,CAAA;OAEL,EAAW,aACV,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAG,iCAAiC,UAAU;QAC7C,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAAb,CACE,kBAAC,GAAD;SAAO,MAAM;SAAI,WAAU;SAA0B,CAAA,EACpD,IAAI,KAAK,EAAW,UAAU,CAAC,mBAAmB,SAAS;SAC1D,MAAM;SACN,OAAO;SACP,KAAK;SACL,MAAM;SACN,QAAQ;SACT,CAAC,CACA;UACA,EAAA,CAAA;OAGP,EAAW,WAAW,EAAW,QAAQ,SAAS,KACjD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAG,+BAA+B,QAAQ;QACzC,CAAA,EACJ,kBAAC,OAAD;QAAK,WAAU;kBACZ,EAAW,QAAQ,KAAK,MACvB,kBAAC,GAAD;SAAoB,SAAQ;mBACzB;SACK,EAFI,EAEJ,CACR;QACE,CAAA,CACF,EAAA,CAAA;OAGR,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAG,sCAAsC,gBAAgB;QACxD,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAAgD,EAAW;QAAO,CAAA,CAC3E,EAAA,CAAA;OACF;SAGN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD;OACE,SAAS;OACT,UAAU,KAAe;OACzB,WAAU;OACV,MAAK;iBAEJ,IACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAW,WAAU,6BAA8B,CAAA,EAClD,EAAG,8BAA8B,eAAe,CAChD,EAAA,CAAA,GAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAa,WAAU,gBAAiB,CAAA,EACvC,EAAG,iCAAiC,oBAAoB,CACxD,EAAA,CAAA;OAEE,CAAA,EACT,kBAAC,GAAD;OACE,SAAQ;OACR,SAAS;OACT,UAAU,KAAe;OACzB,WAAU;OACV,MAAK;iBAEJ,IACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAW,WAAU,6BAA8B,CAAA,EAClD,EAAG,8BAA8B,eAAe,CAChD,EAAA,CAAA,GAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAS,WAAU,gBAAiB,CAAA,EACnC,EAAG,iCAAiC,SAAS,CAC7C,EAAA,CAAA;OAEE,CAAA,CACL;QACM;OACT;;GACH,CAAA;EAGV,QACE,QAAO,kBAAC,GAAD,EAAiB,CAAA;;;AAO9B,SAAS,IAAkB;AACzB,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA,EAC7C,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAU,WAAU,YAAa,CAAA,EACjC,kBAAC,GAAD,EAAU,WAAU,YAAa,CAAA,CAC7B;OACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAU,WAAU,YAAa,CAAA,EACjC,kBAAC,GAAD,EAAU,WAAU,YAAa,CAAA,CAC7B;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAU,WAAU,YAAa,CAAA,EACjC,kBAAC,GAAD,EAAU,WAAU,YAAa,CAAA,CAC7B;QACF;QACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAU,WAAU,eAAgB,CAAA,EACpC,kBAAC,GAAD,EAAU,WAAU,eAAgB,CAAA,CAChC;OACM;MACT;;EACH,CAAA;;AAOV,SAAS,EAAW,EAAE,UAAO,cAAkD;CAC7E,IAAM,EAAE,SAAM,GAAS,EACjB,IAAK,GACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ;AACD,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAe,WAAU;MAAmB,MAAM;MAAM,CAAA;KACpD,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAA,UAAY,EAAG,+BAA+B,2BAA2B,EAAa,CAAA,EACtF,kBAAC,GAAD,EAAA,UACG,EACC,qCACA,sDACD,EACe,CAAA,CACd;OACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAe,WAAU,iDAAkD,CAAA,EAC3E,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAG,sCAAsC,gBAAgB;MACxD,CAAA,EACJ,kBAAC,KAAD;MAAG,WAAU;gBAAoC,EAAM;MAAY,CAAA,CAC/D,EAAA,CAAA,CACF;QAEN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAQ,SAAS;MAAS,WAAU;gBAApC,CACE,kBAAC,GAAD,EAAW,WAAU,gBAAiB,CAAA,EACrC,EAAG,6BAA6B,YAAY,CACtC;SACT,kBAAC,GAAD;MACE,SAAQ;MACR,eAAgB,OAAO,SAAS,OAAO;MACvC,WAAU;gBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAG,mCAAmC,mBAAmB,CACnD;QACL;OACM;MACT;;EACH,CAAA;;AAOV,SAAS,IAAgB;CACvB,IAAM,EAAE,SAAM,GAAS,EACjB,IAAK,GACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ;AACD,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAe,WAAU;MAAwB,MAAM;MAAM,CAAA;KACzD,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAA,UAAY,EAAG,kCAAkC,uBAAuB,EAAa,CAAA,EACrF,kBAAC,GAAD,EAAA,UACG,EACC,wCACA,sDACD,EACe,CAAA,CACd;OACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAe,WAAU,sDAAuD,CAAA,EAChF,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAG,uCAAuC,0BAA0B;MACnE,CAAA,EACJ,kBAAC,KAAD;MAAG,WAAU;gBACV,EACC,oCACA,2GACD;MACC,CAAA,CACA,EAAA,CAAA,CACF;QAEN,kBAAC,GAAD;KAAQ,eAAgB,OAAO,SAAS,OAAO;KAAqB,WAAU;eAA9E,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAG,mCAAmC,mBAAmB,CACnD;OACG;MACT;;EACH,CAAA;;AAOV,SAAS,EAAqB,EAAE,iBAAmD;CACjF,IAAM,EAAE,MAAM,GAAS,EACjB,IAAK,GACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ;AACD,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAa,WAAU;MAAsB,MAAM;MAAM,CAAA;KACrD,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAA,UACG,EAAG,yCAAyC,8BAA8B,EACjE,CAAA,EACZ,kBAAC,GAAD,EAAA,UACG,EACC,+CACA,4CACD,EACe,CAAA,CACd;OACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAa,WAAU,oDAAqD,CAAA,EAC5E,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAG,kCAAkC,0BAA0B;MAC9D,CAAA,EACJ,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAG,0CAA0C,sBAAsB;OACpE,kBAAC,QAAD;QAAM,WAAU;kBAAe,EAAW;QAAa,CAAA;OACtD,EAAG,0CAA0C,8BAA8B;OAC1E;QACA,EAAA,CAAA,CACF;QAEN,kBAAC,GAAD;KACE,eAAgB,OAAO,SAAS,OAAO,eAAe,EAAW,YAAY;KAC7E,WAAU;eAET,EAAG,kCAAkC,kBAAkB;KACjD,CAAA,CACG;MACT;;EACH,CAAA;;AAOV,SAAS,EAAqB,EAAE,iBAAmD;CACjF,IAAM,EAAE,MAAM,GAAS,EACjB,IAAK,GACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ;AACD,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAS,WAAU;MAAwB,MAAM;MAAM,CAAA;KACnD,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAA,UAAY,EAAG,kCAAkC,sBAAsB,EAAa,CAAA,EACpF,kBAAC,GAAD,EAAA,UACG,EACC,wCACA,0CACD,EACe,CAAA,CACd;OACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAS,WAAU,sDAAuD,CAAA,EAC1E,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAG,uCAAuC,sBAAsB;MAC/D,CAAA,EACJ,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAG,mCAAmC,sBAAsB;OAC7D,kBAAC,QAAD;QAAM,WAAU;kBAAe,EAAW;QAAa,CAAA;OACtD,EAAG,mCAAmC,4BAA4B;OACjE;QACA,EAAA,CAAA,CACF;QAEN,kBAAC,GAAD;KAAQ,eAAgB,OAAO,SAAS,OAAO;KAAqB,WAAU;eAA9E,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAG,mCAAmC,mBAAmB,CACnD;OACG;MACT;;EACH,CAAA;;AAOV,SAAS,EAAa,EAAE,iBAAmD;CACzE,IAAM,EAAE,MAAM,GAAS,EACjB,IAAK,GACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ;AACD,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAO,WAAU;MAAsB,MAAM;MAAM,CAAA;KAC/C,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAA,UAAY,EAAG,iCAAiC,qBAAqB,EAAa,CAAA,EAClF,kBAAC,GAAD,EAAA,UACG,EAAG,uCAAuC,8BAA8B,EACzD,CAAA,CACd;OACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAO,WAAU,oDAAqD,CAAA,EACtE,kBAAC,OAAD,EAAA,UAAA;MACE,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAG,mCAAmC,6BAA6B;OAClE,CAAA;MACJ,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACG,EAAG,kCAAkC,sBAAsB;QAC5D,kBAAC,QAAD;SAAM,WAAU;mBAAe,EAAW;SAAa,CAAA;QACtD,EAAG,kCAAkC,eAAe;QACpD,EAAW,aACV,IAAI,KAAK,EAAW,UAAU,CAAC,mBAAmB,SAAS;SACzD,MAAM;SACN,OAAO;SACP,KAAK;SACN,CAAC;QAAC;QAEH;;MACJ,kBAAC,KAAD;OAAG,WAAU;iBACV,EACC,wCACA,kEACD;OACC,CAAA;MACA,EAAA,CAAA,CACF;QAEN,kBAAC,GAAD;KAAQ,eAAgB,OAAO,SAAS,OAAO;KAAqB,WAAU;eAA9E,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAG,mCAAmC,mBAAmB,CACnD;OACG;MACT;;EACH,CAAA;;AAOV,SAAS,EAAe,EAAE,iBAAmD;CAC3E,IAAM,EAAE,MAAM,GAAS,EACjB,IAAK,GACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ;AACD,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GAAM,WAAU;aAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAK,WAAU;MAAmB,MAAM;MAAM,CAAA;KAC1C,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAA,UAAY,EAAG,mCAAmC,uBAAuB,EAAa,CAAA,EACtF,kBAAC,GAAD,EAAA,UACG,EACC,yCACA,mDACD,EACe,CAAA,CACd;OACF;OACK,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAK,WAAU,iDAAkD,CAAA,EACjE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAG,qCAAqC,iCAAiC;MACxE,CAAA,EACJ,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAG,oCAAoC,sBAAsB;OAC9D,kBAAC,QAAD;QAAM,WAAU;kBAAe,EAAW;QAAa,CAAA;OACtD,EACC,oCACA,gEACD;OACC;QACA,EAAA,CAAA,CACF;QAEN,kBAAC,GAAD;KAAQ,eAAgB,OAAO,SAAS,OAAO;KAAqB,WAAU;eAA9E,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAG,mCAAmC,mBAAmB,CACnD;OACG;MACT;;EACH,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function MembersListPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=MembersListPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MembersListPage.d.ts","sourceRoot":"","sources":["../../src/pages/MembersListPage.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,eAAe,4CAqjB9B"}