@burdenoff/microfe-workspaces 2026.520.1 → 2026.528.1

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 (234) hide show
  1. package/dist/WorkspacesRoot.js +4 -1
  2. package/dist/WorkspacesRoot.js.map +1 -1
  3. package/dist/WorkspacesRoutes.js +4 -4
  4. package/dist/WorkspacesRoutes.js.map +1 -1
  5. package/dist/components/CreateProjectDialog.js +1 -1
  6. package/dist/components/CreateProjectDialog.js.map +1 -1
  7. package/dist/components/CreateWorkspaceDialog.js +2 -2
  8. package/dist/components/CreateWorkspaceDialog.js.map +1 -1
  9. package/dist/components/InviteMemberDialog.js +2 -2
  10. package/dist/components/InviteMemberDialog.js.map +1 -1
  11. package/dist/components/MemberListItem.js +71 -86
  12. package/dist/components/MemberListItem.js.map +1 -1
  13. package/dist/components/ProjectCard.js +12 -10
  14. package/dist/components/ProjectCard.js.map +1 -1
  15. package/dist/components/WorkspaceCard.js.map +1 -1
  16. package/dist/components/WorkspacesErrorBoundary.js +12 -4
  17. package/dist/components/WorkspacesErrorBoundary.js.map +1 -1
  18. package/dist/components/tags/ProjectTagsWidget.js +248 -0
  19. package/dist/components/tags/ProjectTagsWidget.js.map +1 -0
  20. package/dist/hooks/useOrgsWithPermission.js +1 -1
  21. package/dist/hooks/useOrgsWithPermission.js.map +1 -1
  22. package/dist/hooks/useWorkspacesEventEmitter.js.map +1 -1
  23. package/dist/hooks/useWorkspacesPageView.js +6 -4
  24. package/dist/hooks/useWorkspacesPageView.js.map +1 -1
  25. package/dist/pages/CreateWorkspacePage.js +239 -224
  26. package/dist/pages/CreateWorkspacePage.js.map +1 -1
  27. package/dist/pages/InviteAcceptancePage.js +28 -28
  28. package/dist/pages/InviteAcceptancePage.js.map +1 -1
  29. package/dist/pages/MembersListPage.js +380 -352
  30. package/dist/pages/MembersListPage.js.map +1 -1
  31. package/dist/pages/ProjectDetailPage.js +96 -97
  32. package/dist/pages/ProjectDetailPage.js.map +1 -1
  33. package/dist/pages/ProjectsListPage.js +307 -304
  34. package/dist/pages/ProjectsListPage.js.map +1 -1
  35. package/dist/pages/WorkspaceSettingsPage.js +94 -91
  36. package/dist/pages/WorkspaceSettingsPage.js.map +1 -1
  37. package/dist/pages/WorkspacesListPage.js +1 -1
  38. package/dist/pages/WorkspacesListPage.js.map +1 -1
  39. package/dist/pages/dashboard/DashboardCustomizer.js +68 -68
  40. package/dist/pages/dashboard/DashboardCustomizer.js.map +1 -1
  41. package/dist/pages/dashboard/DashboardGrid.js +52 -41
  42. package/dist/pages/dashboard/DashboardGrid.js.map +1 -1
  43. package/dist/pages/dashboard/DashboardPage.js +74 -65
  44. package/dist/pages/dashboard/DashboardPage.js.map +1 -1
  45. package/dist/pages/dashboard/WidgetWrapper.js +3 -3
  46. package/dist/pages/dashboard/WidgetWrapper.js.map +1 -1
  47. package/dist/pages/dashboard/config.js +126 -30
  48. package/dist/pages/dashboard/config.js.map +1 -1
  49. package/dist/pages/dashboard/hooks/useDashboardData.js +39 -2
  50. package/dist/pages/dashboard/hooks/useDashboardData.js.map +1 -1
  51. package/dist/pages/dashboard/widgets/AgentsWidget.js +109 -0
  52. package/dist/pages/dashboard/widgets/AgentsWidget.js.map +1 -0
  53. package/dist/pages/dashboard/widgets/GroupsWidget.js +6 -5
  54. package/dist/pages/dashboard/widgets/GroupsWidget.js.map +1 -1
  55. package/dist/pages/dashboard/widgets/MembersWidget.js +6 -6
  56. package/dist/pages/dashboard/widgets/MembersWidget.js.map +1 -1
  57. package/dist/pages/dashboard/widgets/ProjectsWidget.js +8 -7
  58. package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +1 -1
  59. package/dist/pages/dashboard/widgets/QuickActionsWidget.js +72 -18
  60. package/dist/pages/dashboard/widgets/QuickActionsWidget.js.map +1 -1
  61. package/dist/pages/dashboard/widgets/RecentActivityWidget.js +3 -3
  62. package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +1 -1
  63. package/dist/pages/dashboard/widgets/SessionsWidget.js +78 -0
  64. package/dist/pages/dashboard/widgets/SessionsWidget.js.map +1 -0
  65. package/dist/pages/dashboard/widgets/StorageWidget.js +35 -20
  66. package/dist/pages/dashboard/widgets/StorageWidget.js.map +1 -1
  67. package/dist/pages/dashboard/widgets/TagCloudWidget.js +2 -2
  68. package/dist/pages/dashboard/widgets/TagCloudWidget.js.map +1 -1
  69. package/dist/pages/dashboard/widgets/TipsWidget.js +81 -22
  70. package/dist/pages/dashboard/widgets/TipsWidget.js.map +1 -1
  71. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +6 -5
  72. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +1 -1
  73. package/dist/pages/dashboard/widgets/VibesWidget.js +64 -0
  74. package/dist/pages/dashboard/widgets/VibesWidget.js.map +1 -0
  75. package/dist/pages/dashboard/widgets/WelcomeWidget.js +5 -5
  76. package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +1 -1
  77. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js +3 -3
  78. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js.map +1 -1
  79. package/dist/pages/dashboard/widgets/WorkspacesWidget.js +6 -5
  80. package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +1 -1
  81. package/dist/providers/WorkspacesProvider.js +1 -1
  82. package/dist/providers/WorkspacesProvider.js.map +1 -1
  83. package/dist/store/workspacesStore.js.map +1 -1
  84. package/dist/utils/formatters.js +21 -16
  85. package/dist/utils/formatters.js.map +1 -1
  86. package/dist/utils/telemetryError.js +1 -1
  87. package/dist/utils/telemetryError.js.map +1 -1
  88. package/package.json +7 -7
  89. package/dist/WorkspacesRoot.d.ts +0 -35
  90. package/dist/WorkspacesRoot.d.ts.map +0 -1
  91. package/dist/WorkspacesRoutes.d.ts +0 -10
  92. package/dist/WorkspacesRoutes.d.ts.map +0 -1
  93. package/dist/components/CreateProjectDialog.d.ts +0 -6
  94. package/dist/components/CreateProjectDialog.d.ts.map +0 -1
  95. package/dist/components/CreateWorkspaceDialog.d.ts +0 -2
  96. package/dist/components/CreateWorkspaceDialog.d.ts.map +0 -1
  97. package/dist/components/InviteMemberDialog.d.ts +0 -7
  98. package/dist/components/InviteMemberDialog.d.ts.map +0 -1
  99. package/dist/components/MemberListItem.d.ts +0 -11
  100. package/dist/components/MemberListItem.d.ts.map +0 -1
  101. package/dist/components/ProjectCard.d.ts +0 -13
  102. package/dist/components/ProjectCard.d.ts.map +0 -1
  103. package/dist/components/WorkspaceCard.d.ts +0 -8
  104. package/dist/components/WorkspaceCard.d.ts.map +0 -1
  105. package/dist/components/WorkspacesErrorBoundary.d.ts +0 -27
  106. package/dist/components/WorkspacesErrorBoundary.d.ts.map +0 -1
  107. package/dist/components/index.d.ts +0 -8
  108. package/dist/components/index.d.ts.map +0 -1
  109. package/dist/constants/permissions.d.ts +0 -33
  110. package/dist/constants/permissions.d.ts.map +0 -1
  111. package/dist/generated/global-operations.d.ts +0 -319
  112. package/dist/generated/global-operations.d.ts.map +0 -1
  113. package/dist/generated/global-types.d.ts +0 -23527
  114. package/dist/generated/global-types.d.ts.map +0 -1
  115. package/dist/generated/wspace-operations.d.ts +0 -2300
  116. package/dist/generated/wspace-operations.d.ts.map +0 -1
  117. package/dist/generated/wspace-types.d.ts +0 -57851
  118. package/dist/generated/wspace-types.d.ts.map +0 -1
  119. package/dist/hooks/index.d.ts +0 -8
  120. package/dist/hooks/index.d.ts.map +0 -1
  121. package/dist/hooks/useMemberMutations.d.ts +0 -61
  122. package/dist/hooks/useMemberMutations.d.ts.map +0 -1
  123. package/dist/hooks/useOrgsWithPermission.d.ts +0 -7
  124. package/dist/hooks/useOrgsWithPermission.d.ts.map +0 -1
  125. package/dist/hooks/useProjectMutations.d.ts +0 -26
  126. package/dist/hooks/useProjectMutations.d.ts.map +0 -1
  127. package/dist/hooks/useProjects.d.ts +0 -16
  128. package/dist/hooks/useProjects.d.ts.map +0 -1
  129. package/dist/hooks/useScopedNavigation.d.ts +0 -4
  130. package/dist/hooks/useScopedNavigation.d.ts.map +0 -1
  131. package/dist/hooks/useTenants.d.ts +0 -13
  132. package/dist/hooks/useTenants.d.ts.map +0 -1
  133. package/dist/hooks/useWorkspaceActivity.d.ts +0 -12
  134. package/dist/hooks/useWorkspaceActivity.d.ts.map +0 -1
  135. package/dist/hooks/useWorkspaceMembers.d.ts +0 -24
  136. package/dist/hooks/useWorkspaceMembers.d.ts.map +0 -1
  137. package/dist/hooks/useWorkspaceMutations.d.ts +0 -36
  138. package/dist/hooks/useWorkspaceMutations.d.ts.map +0 -1
  139. package/dist/hooks/useWorkspacePermissions.d.ts +0 -29
  140. package/dist/hooks/useWorkspacePermissions.d.ts.map +0 -1
  141. package/dist/hooks/useWorkspaceRoles.d.ts +0 -8
  142. package/dist/hooks/useWorkspaceRoles.d.ts.map +0 -1
  143. package/dist/hooks/useWorkspaces.d.ts +0 -21
  144. package/dist/hooks/useWorkspaces.d.ts.map +0 -1
  145. package/dist/hooks/useWorkspacesEventEmitter.d.ts +0 -18
  146. package/dist/hooks/useWorkspacesEventEmitter.d.ts.map +0 -1
  147. package/dist/hooks/useWorkspacesPageView.d.ts +0 -27
  148. package/dist/hooks/useWorkspacesPageView.d.ts.map +0 -1
  149. package/dist/index.d.ts +0 -33
  150. package/dist/index.d.ts.map +0 -1
  151. package/dist/pages/ActivityListPage.d.ts +0 -2
  152. package/dist/pages/ActivityListPage.d.ts.map +0 -1
  153. package/dist/pages/CreateWorkspacePage.d.ts +0 -2
  154. package/dist/pages/CreateWorkspacePage.d.ts.map +0 -1
  155. package/dist/pages/InviteAcceptancePage.d.ts +0 -6
  156. package/dist/pages/InviteAcceptancePage.d.ts.map +0 -1
  157. package/dist/pages/MembersListPage.d.ts +0 -2
  158. package/dist/pages/MembersListPage.d.ts.map +0 -1
  159. package/dist/pages/ProjectDetailPage.d.ts +0 -2
  160. package/dist/pages/ProjectDetailPage.d.ts.map +0 -1
  161. package/dist/pages/ProjectsListPage.d.ts +0 -2
  162. package/dist/pages/ProjectsListPage.d.ts.map +0 -1
  163. package/dist/pages/WorkspaceDetailPage.d.ts +0 -2
  164. package/dist/pages/WorkspaceDetailPage.d.ts.map +0 -1
  165. package/dist/pages/WorkspaceSettingsPage.d.ts +0 -2
  166. package/dist/pages/WorkspaceSettingsPage.d.ts.map +0 -1
  167. package/dist/pages/WorkspacesListPage.d.ts +0 -2
  168. package/dist/pages/WorkspacesListPage.d.ts.map +0 -1
  169. package/dist/pages/dashboard/DashboardCustomizer.d.ts +0 -12
  170. package/dist/pages/dashboard/DashboardCustomizer.d.ts.map +0 -1
  171. package/dist/pages/dashboard/DashboardGrid.d.ts +0 -8
  172. package/dist/pages/dashboard/DashboardGrid.d.ts.map +0 -1
  173. package/dist/pages/dashboard/DashboardPage.d.ts +0 -14
  174. package/dist/pages/dashboard/DashboardPage.d.ts.map +0 -1
  175. package/dist/pages/dashboard/WidgetWrapper.d.ts +0 -17
  176. package/dist/pages/dashboard/WidgetWrapper.d.ts.map +0 -1
  177. package/dist/pages/dashboard/config.d.ts +0 -9
  178. package/dist/pages/dashboard/config.d.ts.map +0 -1
  179. package/dist/pages/dashboard/hooks/useDashboardData.d.ts +0 -9
  180. package/dist/pages/dashboard/hooks/useDashboardData.d.ts.map +0 -1
  181. package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts +0 -4
  182. package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts.map +0 -1
  183. package/dist/pages/dashboard/types.d.ts +0 -145
  184. package/dist/pages/dashboard/types.d.ts.map +0 -1
  185. package/dist/pages/dashboard/widgets/GroupsWidget.d.ts +0 -4
  186. package/dist/pages/dashboard/widgets/GroupsWidget.d.ts.map +0 -1
  187. package/dist/pages/dashboard/widgets/MembersWidget.d.ts +0 -4
  188. package/dist/pages/dashboard/widgets/MembersWidget.d.ts.map +0 -1
  189. package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts +0 -4
  190. package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts.map +0 -1
  191. package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts +0 -4
  192. package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts.map +0 -1
  193. package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts +0 -4
  194. package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts.map +0 -1
  195. package/dist/pages/dashboard/widgets/StorageWidget.d.ts +0 -4
  196. package/dist/pages/dashboard/widgets/StorageWidget.d.ts.map +0 -1
  197. package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts +0 -4
  198. package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts.map +0 -1
  199. package/dist/pages/dashboard/widgets/SystemHealthWidget.js +0 -59
  200. package/dist/pages/dashboard/widgets/SystemHealthWidget.js.map +0 -1
  201. package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts +0 -4
  202. package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts.map +0 -1
  203. package/dist/pages/dashboard/widgets/TipsWidget.d.ts +0 -4
  204. package/dist/pages/dashboard/widgets/TipsWidget.d.ts.map +0 -1
  205. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts +0 -4
  206. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts.map +0 -1
  207. package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts +0 -4
  208. package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts.map +0 -1
  209. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts +0 -4
  210. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts.map +0 -1
  211. package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts +0 -4
  212. package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts.map +0 -1
  213. package/dist/providers/WorkspacesProvider.d.ts +0 -13
  214. package/dist/providers/WorkspacesProvider.d.ts.map +0 -1
  215. package/dist/store/workspacesStore.d.ts +0 -82
  216. package/dist/store/workspacesStore.d.ts.map +0 -1
  217. package/dist/types/index.d.ts +0 -280
  218. package/dist/types/index.d.ts.map +0 -1
  219. package/dist/utils/formatters.d.ts +0 -60
  220. package/dist/utils/formatters.d.ts.map +0 -1
  221. package/dist/utils/i18n.d.ts +0 -13
  222. package/dist/utils/i18n.d.ts.map +0 -1
  223. package/dist/utils/index.d.ts +0 -3
  224. package/dist/utils/index.d.ts.map +0 -1
  225. package/dist/utils/nativeBridge.d.ts +0 -3
  226. package/dist/utils/nativeBridge.d.ts.map +0 -1
  227. package/dist/utils/projectTags.d.ts +0 -6
  228. package/dist/utils/projectTags.d.ts.map +0 -1
  229. package/dist/utils/slug.d.ts +0 -13
  230. package/dist/utils/slug.d.ts.map +0 -1
  231. package/dist/utils/telemetryError.d.ts +0 -2
  232. package/dist/utils/telemetryError.d.ts.map +0 -1
  233. package/dist/utils/tokenHelpers.d.ts +0 -114
  234. package/dist/utils/tokenHelpers.d.ts.map +0 -1
@@ -2,423 +2,451 @@ import { useWorkspacesContext as e } from "../providers/WorkspacesProvider.js";
2
2
  import { useWorkspacesStore as t } from "../store/workspacesStore.js";
3
3
  import { WORKSPACE_PERMISSIONS as n } from "../constants/permissions.js";
4
4
  import { tWithFallback as r } from "../utils/i18n.js";
5
- import { useWorkspacesPageView as i } from "../hooks/useWorkspacesPageView.js";
6
- import { nativeConfirm as ee, nativeImpact as te } from "../utils/nativeBridge.js";
7
- import { useWorkspaceInvitations as ne, useWorkspaceMembers as re } from "../hooks/useWorkspaceMembers.js";
5
+ import { useWorkspacesPageView as ee } from "../hooks/useWorkspacesPageView.js";
6
+ import { nativeConfirm as te, nativeImpact as ne } from "../utils/nativeBridge.js";
7
+ import { useWorkspaceInvitations as i, useWorkspaceMembers as re } from "../hooks/useWorkspaceMembers.js";
8
8
  import { useRemoveUserFromWorkspace as ie, useResendInvitation as ae } from "../hooks/useMemberMutations.js";
9
9
  import { MemberListItem as oe } from "../components/MemberListItem.js";
10
10
  import { InviteMemberDialog as se } from "../components/InviteMemberDialog.js";
11
- import { useWorkspacePermissions as a } from "../hooks/useWorkspacePermissions.js";
12
- import { useEffect as o, useMemo as s, useState as c } from "react";
13
- import { AlertCircle as ce, RefreshCw as le, Search as l, UserPlus as u, Users as d } from "lucide-react";
14
- import { Fragment as ue, jsx as f, jsxs as p } from "react/jsx-runtime";
15
- import { Badge as m, Button as h, Input as g, Skeleton as _ } from "@burdenoff/fe-libs/ui";
16
- import { useParams as v } from "react-router-dom";
17
- import { useDebounce as de } from "@burdenoff/fe-libs/shared/hooks";
18
- import { PermissionButton as y } from "@burdenoff/fe-libs/shared/components";
19
- import { useI18n as fe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
11
+ import { useWorkspacePermissions as ce } from "../hooks/useWorkspacePermissions.js";
12
+ import { useEffect as a, useMemo as o, useState as s } from "react";
13
+ import { AlertCircle as le, RefreshCw as ue, Search as c, UserPlus as l, Users as u } from "lucide-react";
14
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
15
+ import { Badge as p, Button as m, Input as de, PageContainer as fe, Skeleton as h } from "@burdenoff/fe-libs/ui";
16
+ import { useParams as pe, useSearchParams as me } from "react-router-dom";
17
+ import { useDebounce as he } from "@burdenoff/fe-libs/shared/hooks";
18
+ import { PermissionButton as g } from "@burdenoff/fe-libs/shared/components";
19
+ import { useI18n as ge } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
20
+ import { useActorProfiles as _e } from "@burdenoff/fe-libs/shared";
20
21
  //#region src/pages/MembersListPage.tsx
21
- function b() {
22
- let { t: b } = fe(), { memberFilters: pe, setMemberFilters: x, selectedMemberIds: S, toggleMemberSelection: C, clearMemberSelection: w, openInviteMemberDialog: me } = t(), { workspaceId: he } = e(), { workspaceId: ge } = v(), T = ge || he;
23
- i("workspaces.members", {
22
+ function _() {
23
+ let { t: _ } = ge(), { memberFilters: ve, setMemberFilters: v, selectedMemberIds: y, toggleMemberSelection: b, clearMemberSelection: x, openInviteMemberDialog: S } = t(), { workspaceId: C } = e(), { workspaceId: w } = pe(), T = w || C;
24
+ ee("workspaces.members", {
24
25
  workspaceId: T,
25
26
  requireParams: !0
26
27
  });
27
- let [E, D] = c(pe.search || ""), O = de(E, 500);
28
- o(() => {
29
- x({ search: O });
30
- }, [O, x]);
31
- let { data: k, isLoading: _e, error: A } = re(T || ""), { data: j, isLoading: M } = ne(T || "", "PENDING"), { mutate: N, isPending: P } = ae(), { mutate: F, isPending: I } = ie(), [L, R] = c(null), [z, B] = c(/* @__PURE__ */ new Set()), ve = (e) => {
32
- R(e), N(e, {
28
+ let [E, ye] = s(ve.search || ""), D = he(E, 500);
29
+ a(() => {
30
+ v({ search: D });
31
+ }, [D, v]);
32
+ let { data: O, isLoading: be, error: k } = re(T || ""), { data: A, isLoading: j } = i(T || "", "PENDING"), { mutate: M, isPending: N } = ae(), { mutate: xe, isPending: Se } = ie(), [P, F] = s(null), [I, L] = s(/* @__PURE__ */ new Set()), Ce = (e) => {
33
+ F(e), M(e, {
33
34
  onSuccess: () => {
34
- R(null);
35
+ F(null);
35
36
  },
36
37
  onError: (e) => {
37
- console.error("Failed to resend invitation:", e), R(null);
38
+ console.error("Failed to resend invitation:", e), F(null);
38
39
  }
39
40
  });
40
- }, V = s(() => k?.items || [], [k?.items]), H = s(() => j?.items || [], [j?.items]), U = _e || M, W = V.length > 0, G = H.length > 0, K = V.filter((e) => O ? e.userId.toLowerCase().includes(O.toLowerCase()) : !0), q = s(() => K.filter((e) => S.has(e.id)), [K, S]), J = s(() => H.filter((e) => z.has(e.id)), [H, z]), Y = K.length > 0 && K.every((e) => S.has(e.id)), ye = K.some((e) => S.has(e.id)) && !Y, X = H.length > 0 && H.every((e) => z.has(e.id)), be = H.some((e) => z.has(e.id)) && !X;
41
- o(() => () => w(), [w]);
42
- let { canListMembers: xe, canInviteMember: Z, canRemoveMember: Q, isLoading: Se } = a();
43
- if (Se) return /* @__PURE__ */ p("div", {
41
+ }, R = o(() => O?.items || [], [O?.items]), z = o(() => A?.items || [], [A?.items]), B = be || j, V = R.length > 0, H = z.length > 0, { apiGatewayUrl: we, authToken: Te, organizationId: Ee } = e(), De = _e(o(() => R.map((e) => ({
42
+ actorId: e.userId,
43
+ actorType: "user"
44
+ })), [R]), {
45
+ apiGatewayUrl: we,
46
+ authToken: Te,
47
+ orgId: Ee
48
+ }), U = R.filter((e) => {
49
+ if (!D) return !0;
50
+ let t = D.toLowerCase(), n = De[e.userId];
51
+ return n && (n.displayName.toLowerCase().includes(t) || n.email?.toLowerCase().includes(t)) ? !0 : e.userId.toLowerCase().includes(t);
52
+ }), W = o(() => U.filter((e) => y.has(e.id)), [U, y]), G = o(() => z.filter((e) => I.has(e.id)), [z, I]), K = U.length > 0 && U.every((e) => y.has(e.id)), Oe = U.some((e) => y.has(e.id)) && !K, q = z.length > 0 && z.every((e) => I.has(e.id)), J = z.some((e) => I.has(e.id)) && !q;
53
+ a(() => () => x(), [x]);
54
+ let [Y, X] = me();
55
+ a(() => {
56
+ if (Y.get("invite") === "true" && T) {
57
+ S({ id: T });
58
+ let e = new URLSearchParams(Y);
59
+ e.delete("invite"), X(e, { replace: !0 });
60
+ }
61
+ }, [
62
+ Y,
63
+ X,
64
+ T,
65
+ S
66
+ ]);
67
+ let { canListMembers: ke, canInviteMember: Z, canRemoveMember: Q, isLoading: Ae } = ce();
68
+ if (Ae) return /* @__PURE__ */ f("div", {
44
69
  className: "space-y-4 p-6",
45
- children: [/* @__PURE__ */ f(_, { className: "h-10 w-1/3" }), /* @__PURE__ */ f(_, { className: "h-64" })]
70
+ children: [/* @__PURE__ */ d(h, { className: "h-10 w-1/3" }), /* @__PURE__ */ d(h, { className: "h-64" })]
46
71
  });
47
- if (!xe && !Z) return /* @__PURE__ */ f("div", {
72
+ if (!ke && !Z) return /* @__PURE__ */ d("div", {
48
73
  className: "flex items-center justify-center min-h-[400px]",
49
- children: /* @__PURE__ */ p("div", {
74
+ children: /* @__PURE__ */ f("div", {
50
75
  className: "text-center space-y-2",
51
- children: [/* @__PURE__ */ f("h2", {
76
+ children: [/* @__PURE__ */ d("h2", {
52
77
  className: "text-lg font-semibold",
53
- children: r(b, "membersList.accessDenied", "Access Denied")
54
- }), /* @__PURE__ */ f("p", {
78
+ children: r(_, "membersList.accessDenied", "Access Denied")
79
+ }), /* @__PURE__ */ d("p", {
55
80
  className: "text-sm text-muted-foreground",
56
- children: r(b, "membersList.noPermissionToViewMembers", "You don't have permission to view workspace members.")
81
+ children: r(_, "membersList.noPermissionToViewMembers", "You don't have permission to view workspace members.")
57
82
  })]
58
83
  })
59
84
  });
60
85
  let $ = () => {
61
- T && me({ id: T });
62
- }, Ce = (e) => {
63
- K.forEach((t) => {
64
- e !== S.has(t.id) && C(t.id);
86
+ T && S({ id: T });
87
+ }, je = (e) => {
88
+ U.forEach((t) => {
89
+ e !== y.has(t.id) && b(t.id);
65
90
  });
66
- }, we = (e, t) => {
67
- B((n) => {
91
+ }, Me = (e, t) => {
92
+ L((n) => {
68
93
  let r = new Set(n);
69
94
  return t ? r.add(e) : r.delete(e), r;
70
95
  });
71
- }, Te = (e) => {
72
- B((t) => {
96
+ }, Ne = (e) => {
97
+ L((t) => {
73
98
  let n = new Set(t);
74
- return H.forEach((t) => {
99
+ return z.forEach((t) => {
75
100
  e ? n.add(t.id) : n.delete(t.id);
76
101
  }), n;
77
102
  });
78
- }, Ee = async () => {
79
- if (q.length === 0) return;
80
- te("medium");
81
- let e = `${r(b, "membersList.bulkRemoveConfirmPrefix", "Remove")} ${q.length} ${q.length === 1 ? r(b, "membersList.bulkRemoveConfirmSingular", "selected member") : r(b, "membersList.bulkRemoveConfirmPlural", "selected members")} ${r(b, "membersList.bulkRemoveConfirmSuffix", "from this workspace?")}`, t = await ee({
103
+ }, Pe = async () => {
104
+ if (W.length === 0) return;
105
+ ne("medium");
106
+ let e = `${r(_, "membersList.bulkRemoveConfirmPrefix", "Remove")} ${W.length} ${W.length === 1 ? r(_, "membersList.bulkRemoveConfirmSingular", "selected member") : r(_, "membersList.bulkRemoveConfirmPlural", "selected members")} ${r(_, "membersList.bulkRemoveConfirmSuffix", "from this workspace?")}`, t = await te({
82
107
  title: "Remove members",
83
108
  message: e,
84
109
  okButtonTitle: "Remove",
85
110
  cancelButtonTitle: "Cancel"
86
111
  });
87
- (t === null ? window.confirm(e) : t) && (q.forEach((e) => {
88
- F(e.userId);
89
- }), w());
90
- }, De = () => {
91
- J.length !== 0 && J.forEach((e) => {
92
- N(e.id, { onSuccess: () => {
93
- B((t) => {
112
+ (t === null ? window.confirm(e) : t) && (W.forEach((e) => {
113
+ xe(e.userId);
114
+ }), x());
115
+ }, Fe = () => {
116
+ G.length !== 0 && G.forEach((e) => {
117
+ M(e.id, { onSuccess: () => {
118
+ L((t) => {
94
119
  let n = new Set(t);
95
120
  return n.delete(e.id), n;
96
121
  });
97
122
  } });
98
123
  });
99
124
  };
100
- return /* @__PURE__ */ p(ue, { children: [/* @__PURE__ */ p("div", {
101
- className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
102
- children: [
103
- /* @__PURE__ */ p("div", {
104
- className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",
105
- children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
106
- className: "text-2xl sm:text-3xl font-bold",
107
- children: r(b, "membersList.pageTitle", "Members")
108
- }), /* @__PURE__ */ f("p", {
109
- className: "text-muted-foreground text-sm sm:text-base",
110
- children: r(b, "membersList.pageSubtitle", "Manage workspace members and invitations")
111
- })] }), /* @__PURE__ */ f("div", {
112
- className: "flex gap-2",
113
- children: /* @__PURE__ */ f(y, {
114
- permission: n.MEMBER_CREATE,
115
- deniedBehavior: "disable",
116
- deniedTooltip: r(b, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
117
- children: /* @__PURE__ */ p(h, {
118
- onClick: $,
119
- disabled: !T,
120
- children: [/* @__PURE__ */ f(u, { className: "h-4 w-4 sm:mr-2" }), /* @__PURE__ */ f("span", {
121
- className: "hidden sm:inline",
122
- children: r(b, "membersList.inviteMember", "Invite Member")
123
- })]
125
+ return /* @__PURE__ */ f(fe, {
126
+ padded: !1,
127
+ children: [/* @__PURE__ */ f("div", {
128
+ className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
129
+ children: [
130
+ /* @__PURE__ */ f("div", {
131
+ className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",
132
+ children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("h1", {
133
+ className: "text-2xl sm:text-3xl font-bold",
134
+ children: r(_, "membersList.pageTitle", "Members")
135
+ }), /* @__PURE__ */ d("p", {
136
+ className: "text-muted-foreground text-sm sm:text-base",
137
+ children: r(_, "membersList.pageSubtitle", "Manage workspace members and invitations")
138
+ })] }), /* @__PURE__ */ d("div", {
139
+ className: "flex gap-2",
140
+ children: /* @__PURE__ */ d(g, {
141
+ permission: n.MEMBER_CREATE,
142
+ deniedBehavior: "disable",
143
+ deniedTooltip: r(_, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
144
+ children: /* @__PURE__ */ f(m, {
145
+ onClick: $,
146
+ disabled: !T,
147
+ children: [/* @__PURE__ */ d(l, { className: "size-4 sm:mr-2" }), /* @__PURE__ */ d("span", {
148
+ className: "hidden sm:inline",
149
+ children: r(_, "membersList.inviteMember", "Invite Member")
150
+ })]
151
+ })
124
152
  })
125
- })
126
- })]
127
- }),
128
- /* @__PURE__ */ p("div", {
129
- className: "flex flex-col sm:flex-row gap-3 sm:gap-4",
130
- children: [/* @__PURE__ */ p("div", {
131
- className: "relative flex-1",
132
- children: [/* @__PURE__ */ f(l, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ f(g, {
133
- placeholder: r(b, "membersList.searchPlaceholder", "Search members..."),
134
- value: E,
135
- onChange: (e) => D(e.target.value),
136
- className: "pl-9"
137
153
  })]
138
- }), G && /* @__PURE__ */ f("div", {
139
- className: "flex items-center gap-2",
140
- children: /* @__PURE__ */ p(m, {
141
- variant: "secondary",
142
- className: "text-sm",
143
- children: [
144
- H.length,
145
- " ",
146
- H.length === 1 ? r(b, "membersList.pendingInvitation", "Pending Invitation") : r(b, "membersList.pendingInvitations", "Pending Invitations")
147
- ]
148
- })
149
- })]
150
- }),
151
- K.length > 0 && /* @__PURE__ */ p("div", {
152
- className: "flex flex-col gap-3 rounded-lg border bg-card p-4 sm:flex-row sm:items-center sm:justify-between",
153
- children: [/* @__PURE__ */ p("label", {
154
- className: "flex items-center gap-2 text-sm text-foreground",
155
- children: [/* @__PURE__ */ f("input", {
156
- type: "checkbox",
157
- checked: Y,
158
- ref: (e) => {
159
- e && (e.indeterminate = ye && !Y);
160
- },
161
- onChange: (e) => Ce(e.target.checked),
162
- "aria-label": r(b, "membersList.selectAllMembersAriaLabel", "Select all workspace members"),
163
- className: "h-4 w-4 rounded border-border text-primary"
164
- }), /* @__PURE__ */ f("span", { children: r(b, "membersList.selectAllVisibleMembers", "Select all visible members") })]
165
- }), /* @__PURE__ */ p("div", {
166
- className: "flex flex-wrap items-center gap-2",
167
- children: [
168
- /* @__PURE__ */ p("span", {
169
- className: "text-sm text-muted-foreground",
154
+ }),
155
+ /* @__PURE__ */ f("div", {
156
+ className: "flex flex-col sm:flex-row gap-3 sm:gap-4",
157
+ children: [/* @__PURE__ */ f("div", {
158
+ className: "relative flex-1",
159
+ children: [/* @__PURE__ */ d(c, { className: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground" }), /* @__PURE__ */ d(de, {
160
+ placeholder: r(_, "membersList.searchPlaceholder", "Search members..."),
161
+ value: E,
162
+ onChange: (e) => ye(e.target.value),
163
+ className: "pl-9"
164
+ })]
165
+ }), H && /* @__PURE__ */ d("div", {
166
+ className: "flex items-center gap-2",
167
+ children: /* @__PURE__ */ f(p, {
168
+ variant: "secondary",
169
+ className: "text-sm",
170
170
  children: [
171
- S.size,
171
+ z.length,
172
172
  " ",
173
- r(b, "membersList.selected", "selected")
173
+ z.length === 1 ? r(_, "membersList.pendingInvitation", "Pending Invitation") : r(_, "membersList.pendingInvitations", "Pending Invitations")
174
174
  ]
175
+ })
176
+ })]
177
+ }),
178
+ U.length > 0 && /* @__PURE__ */ f("div", {
179
+ className: "flex flex-col gap-3 rounded-lg border bg-card p-4 sm:flex-row sm:items-center sm:justify-between",
180
+ children: [/* @__PURE__ */ f("label", {
181
+ className: "flex items-center gap-2 text-sm text-foreground",
182
+ children: [/* @__PURE__ */ d("input", {
183
+ type: "checkbox",
184
+ checked: K,
185
+ ref: (e) => {
186
+ e && (e.indeterminate = Oe && !K);
187
+ },
188
+ onChange: (e) => je(e.target.checked),
189
+ "aria-label": r(_, "membersList.selectAllMembersAriaLabel", "Select all workspace members"),
190
+ className: "size-4 rounded border-border text-primary"
191
+ }), /* @__PURE__ */ d("span", { children: r(_, "membersList.selectAllVisibleMembers", "Select all visible members") })]
192
+ }), /* @__PURE__ */ f("div", {
193
+ className: "flex flex-wrap items-center gap-2",
194
+ children: [
195
+ /* @__PURE__ */ f("span", {
196
+ className: "text-sm text-muted-foreground",
197
+ children: [
198
+ y.size,
199
+ " ",
200
+ r(_, "membersList.selected", "selected")
201
+ ]
202
+ }),
203
+ y.size > 0 && /* @__PURE__ */ d(m, {
204
+ variant: "ghost",
205
+ size: "sm",
206
+ onClick: x,
207
+ children: r(_, "membersList.clearSelection", "Clear selection")
208
+ }),
209
+ Q && /* @__PURE__ */ f(m, {
210
+ variant: "outline",
211
+ size: "sm",
212
+ onClick: Pe,
213
+ disabled: W.length === 0 || Se,
214
+ className: "text-destructive",
215
+ children: [r(_, "membersList.removeSelected", "Remove Selected"), W.length > 0 ? ` (${W.length})` : ""]
216
+ })
217
+ ]
218
+ })]
219
+ }),
220
+ B && /* @__PURE__ */ d("div", {
221
+ className: "space-y-3",
222
+ children: [...[
223
+ ,
224
+ ,
225
+ ,
226
+ ,
227
+ ,
228
+ ]].map((e, t) => /* @__PURE__ */ d(h, { className: "h-20 w-full" }, t))
229
+ }),
230
+ !B && k && /* @__PURE__ */ f("div", {
231
+ className: "flex flex-col items-center justify-center py-12 text-center",
232
+ children: [
233
+ /* @__PURE__ */ d("div", {
234
+ className: "rounded-full bg-destructive/10 p-6 mb-4",
235
+ children: /* @__PURE__ */ d(le, {
236
+ size: 48,
237
+ className: "text-destructive"
238
+ })
175
239
  }),
176
- S.size > 0 && /* @__PURE__ */ f(h, {
177
- variant: "ghost",
178
- size: "sm",
179
- onClick: w,
180
- children: r(b, "membersList.clearSelection", "Clear selection")
240
+ /* @__PURE__ */ d("h3", {
241
+ className: "text-lg font-semibold mb-2",
242
+ children: r(_, "membersList.failedToLoad", "Failed to Load Members")
181
243
  }),
182
- Q && /* @__PURE__ */ p(h, {
183
- variant: "outline",
184
- size: "sm",
185
- onClick: Ee,
186
- disabled: q.length === 0 || I,
187
- className: "text-destructive",
188
- children: [r(b, "membersList.removeSelected", "Remove Selected"), q.length > 0 ? ` (${q.length})` : ""]
244
+ /* @__PURE__ */ d("p", {
245
+ className: "text-muted-foreground max-w-sm",
246
+ children: k instanceof Error ? k.message : r(_, "membersList.errorLoadingMembers", "An error occurred while loading members")
189
247
  })
190
248
  ]
191
- })]
192
- }),
193
- U && /* @__PURE__ */ f("div", {
194
- className: "space-y-3",
195
- children: [...[
196
- ,
197
- ,
198
- ,
199
- ,
200
- ,
201
- ]].map((e, t) => /* @__PURE__ */ f(_, { className: "h-20 w-full" }, t))
202
- }),
203
- !U && A && /* @__PURE__ */ p("div", {
204
- className: "flex flex-col items-center justify-center py-12 text-center",
205
- children: [
206
- /* @__PURE__ */ f("div", {
207
- className: "rounded-full bg-destructive/10 p-6 mb-4",
208
- children: /* @__PURE__ */ f(ce, {
209
- size: 48,
210
- className: "text-destructive"
211
- })
212
- }),
213
- /* @__PURE__ */ f("h3", {
214
- className: "text-lg font-semibold mb-2",
215
- children: r(b, "membersList.failedToLoad", "Failed to Load Members")
216
- }),
217
- /* @__PURE__ */ f("p", {
218
- className: "text-muted-foreground max-w-sm",
219
- children: A instanceof Error ? A.message : r(b, "membersList.errorLoadingMembers", "An error occurred while loading members")
220
- })
221
- ]
222
- }),
223
- !U && !A && !T && /* @__PURE__ */ p("div", {
224
- className: "flex flex-col items-center justify-center py-12 text-center",
225
- children: [
226
- /* @__PURE__ */ f("div", {
227
- className: "rounded-full bg-muted p-6 mb-4",
228
- children: /* @__PURE__ */ f(d, {
229
- size: 48,
230
- className: "text-muted-foreground"
231
- })
232
- }),
233
- /* @__PURE__ */ f("h3", {
234
- className: "text-lg font-semibold mb-2",
235
- children: r(b, "membersList.noWorkspaceSelected", "No Workspace Selected")
236
- }),
237
- /* @__PURE__ */ f("p", {
238
- className: "text-muted-foreground max-w-sm",
239
- children: r(b, "membersList.selectWorkspacePrompt", "Select a workspace to view and manage its members")
240
- })
241
- ]
242
- }),
243
- !U && !A && T && !W && /* @__PURE__ */ p("div", {
244
- className: "flex flex-col items-center justify-center py-12 text-center",
245
- children: [
246
- /* @__PURE__ */ f("div", {
247
- className: "rounded-full bg-muted p-6 mb-4",
248
- children: /* @__PURE__ */ f(d, {
249
- size: 48,
250
- className: "text-muted-foreground"
249
+ }),
250
+ !B && !k && !T && /* @__PURE__ */ f("div", {
251
+ className: "flex flex-col items-center justify-center py-12 text-center",
252
+ children: [
253
+ /* @__PURE__ */ d("div", {
254
+ className: "rounded-full bg-muted p-6 mb-4",
255
+ children: /* @__PURE__ */ d(u, {
256
+ size: 48,
257
+ className: "text-muted-foreground"
258
+ })
259
+ }),
260
+ /* @__PURE__ */ d("h3", {
261
+ className: "text-lg font-semibold mb-2",
262
+ children: r(_, "membersList.noWorkspaceSelected", "No Workspace Selected")
263
+ }),
264
+ /* @__PURE__ */ d("p", {
265
+ className: "text-muted-foreground max-w-sm",
266
+ children: r(_, "membersList.selectWorkspacePrompt", "Select a workspace to view and manage its members")
251
267
  })
252
- }),
253
- /* @__PURE__ */ f("h3", {
254
- className: "text-lg font-semibold mb-2",
255
- children: r(b, "membersList.noMembersYet", "No Members Yet")
256
- }),
257
- /* @__PURE__ */ f("p", {
258
- className: "text-muted-foreground max-w-sm mb-4",
259
- children: r(b, "membersList.noMembersPrompt", "Start building your team by inviting members to this workspace")
260
- }),
261
- /* @__PURE__ */ f(y, {
262
- permission: n.MEMBER_CREATE,
263
- deniedBehavior: "disable",
264
- deniedTooltip: r(b, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
265
- children: /* @__PURE__ */ p(h, {
266
- onClick: $,
267
- children: [/* @__PURE__ */ f(u, { className: "mr-2 h-4 w-4" }), r(b, "membersList.inviteFirstMember", "Invite Your First Member")]
268
+ ]
269
+ }),
270
+ !B && !k && T && !V && /* @__PURE__ */ f("div", {
271
+ className: "flex flex-col items-center justify-center py-12 text-center",
272
+ children: [
273
+ /* @__PURE__ */ d("div", {
274
+ className: "rounded-full bg-muted p-6 mb-4",
275
+ children: /* @__PURE__ */ d(u, {
276
+ size: 48,
277
+ className: "text-muted-foreground"
278
+ })
279
+ }),
280
+ /* @__PURE__ */ d("h3", {
281
+ className: "text-lg font-semibold mb-2",
282
+ children: r(_, "membersList.noMembersYet", "No Members Yet")
283
+ }),
284
+ /* @__PURE__ */ d("p", {
285
+ className: "text-muted-foreground max-w-sm mb-4",
286
+ children: r(_, "membersList.noMembersPrompt", "Start building your team by inviting members to this workspace")
287
+ }),
288
+ /* @__PURE__ */ d(g, {
289
+ permission: n.MEMBER_CREATE,
290
+ deniedBehavior: "disable",
291
+ deniedTooltip: r(_, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
292
+ children: /* @__PURE__ */ f(m, {
293
+ onClick: $,
294
+ children: [/* @__PURE__ */ d(l, { className: "mr-2 size-4" }), r(_, "membersList.inviteFirstMember", "Invite Your First Member")]
295
+ })
268
296
  })
269
- })
270
- ]
271
- }),
272
- !U && !A && T && W && K.length === 0 && /* @__PURE__ */ p("div", {
273
- className: "flex flex-col items-center justify-center py-12 text-center",
274
- children: [
275
- /* @__PURE__ */ f("div", {
276
- className: "rounded-full bg-muted p-6 mb-4",
277
- children: /* @__PURE__ */ f(l, {
278
- size: 48,
279
- className: "text-muted-foreground"
297
+ ]
298
+ }),
299
+ !B && !k && T && V && U.length === 0 && /* @__PURE__ */ f("div", {
300
+ className: "flex flex-col items-center justify-center py-12 text-center",
301
+ children: [
302
+ /* @__PURE__ */ d("div", {
303
+ className: "rounded-full bg-muted p-6 mb-4",
304
+ children: /* @__PURE__ */ d(c, {
305
+ size: 48,
306
+ className: "text-muted-foreground"
307
+ })
308
+ }),
309
+ /* @__PURE__ */ d("h3", {
310
+ className: "text-lg font-semibold mb-2",
311
+ children: r(_, "membersList.noMembersFound", "No Members Found")
312
+ }),
313
+ /* @__PURE__ */ d("p", {
314
+ className: "text-muted-foreground max-w-sm",
315
+ children: r(_, "membersList.noMembersFoundPrompt", "No members match your search criteria. Try adjusting your search.")
280
316
  })
281
- }),
282
- /* @__PURE__ */ f("h3", {
283
- className: "text-lg font-semibold mb-2",
284
- children: r(b, "membersList.noMembersFound", "No Members Found")
285
- }),
286
- /* @__PURE__ */ f("p", {
287
- className: "text-muted-foreground max-w-sm",
288
- children: r(b, "membersList.noMembersFoundPrompt", "No members match your search criteria. Try adjusting your search.")
289
- })
290
- ]
291
- }),
292
- !U && K.length > 0 && /* @__PURE__ */ p("div", {
293
- className: "space-y-3",
294
- children: [/* @__PURE__ */ f("div", {
295
- className: "flex items-center justify-between",
296
- children: /* @__PURE__ */ p("h2", {
297
- className: "text-lg font-semibold",
298
- children: [
299
- r(b, "membersList.activeMembers", "Active Members"),
300
- " (",
301
- K.length,
302
- ")"
303
- ]
304
- })
305
- }), /* @__PURE__ */ f("div", {
306
- className: "space-y-2",
307
- children: K.map((e) => /* @__PURE__ */ f(oe, {
308
- member: e,
309
- selected: S.has(e.id),
310
- onToggleSelect: (t) => {
311
- t !== S.has(e.id) && C(e.id);
312
- },
313
- canRemove: Q
314
- }, e.id))
315
- })]
316
- }),
317
- !U && G && /* @__PURE__ */ p("div", {
318
- className: "space-y-3",
319
- children: [
320
- /* @__PURE__ */ f("h2", {
321
- className: "text-lg font-semibold",
322
- children: r(b, "membersList.pendingInvitationsHeader", "Pending Invitations")
323
- }),
324
- /* @__PURE__ */ p("div", {
325
- className: "flex flex-col gap-3 rounded-lg border bg-card p-4 sm:flex-row sm:items-center sm:justify-between",
326
- children: [/* @__PURE__ */ p("label", {
327
- className: "flex items-center gap-2 text-sm text-foreground",
328
- children: [/* @__PURE__ */ f("input", {
329
- type: "checkbox",
330
- checked: X,
331
- ref: (e) => {
332
- e && (e.indeterminate = be && !X);
333
- },
334
- onChange: (e) => Te(e.target.checked),
335
- "aria-label": r(b, "membersList.selectAllInvitationsAriaLabel", "Select all pending invitations"),
336
- className: "h-4 w-4 rounded border-border text-primary"
337
- }), /* @__PURE__ */ f("span", { children: r(b, "membersList.selectAllInvitations", "Select all invitations") })]
338
- }), /* @__PURE__ */ p("div", {
339
- className: "flex flex-wrap items-center gap-2",
317
+ ]
318
+ }),
319
+ !B && U.length > 0 && /* @__PURE__ */ f("div", {
320
+ className: "space-y-3",
321
+ children: [/* @__PURE__ */ d("div", {
322
+ className: "flex items-center justify-between",
323
+ children: /* @__PURE__ */ f("h2", {
324
+ className: "text-lg font-semibold",
340
325
  children: [
341
- /* @__PURE__ */ p("span", {
342
- className: "text-sm text-muted-foreground",
343
- children: [
344
- z.size,
345
- " ",
346
- r(b, "membersList.selected", "selected")
347
- ]
348
- }),
349
- z.size > 0 && /* @__PURE__ */ f(h, {
350
- variant: "ghost",
351
- size: "sm",
352
- onClick: () => B(/* @__PURE__ */ new Set()),
353
- children: r(b, "membersList.clearSelection", "Clear selection")
354
- }),
355
- Z && /* @__PURE__ */ p(h, {
356
- variant: "outline",
357
- size: "sm",
358
- onClick: De,
359
- disabled: J.length === 0 || P,
360
- children: [r(b, "membersList.resendSelected", "Resend Selected"), J.length > 0 ? ` (${J.length})` : ""]
361
- })
326
+ r(_, "membersList.activeMembers", "Active Members"),
327
+ " (",
328
+ U.length,
329
+ ")"
362
330
  ]
363
- })]
364
- }),
365
- /* @__PURE__ */ f("div", {
331
+ })
332
+ }), /* @__PURE__ */ d("div", {
366
333
  className: "space-y-2",
367
- children: H.map((e) => /* @__PURE__ */ p("div", {
368
- className: "flex items-center justify-between p-4 border rounded-lg bg-card",
369
- children: [/* @__PURE__ */ p("div", {
370
- className: "flex items-center gap-3",
334
+ children: U.map((e) => /* @__PURE__ */ d(oe, {
335
+ member: e,
336
+ selected: y.has(e.id),
337
+ onToggleSelect: (t) => {
338
+ t !== y.has(e.id) && b(e.id);
339
+ },
340
+ canRemove: Q
341
+ }, e.id))
342
+ })]
343
+ }),
344
+ !B && H && /* @__PURE__ */ f("div", {
345
+ className: "space-y-3",
346
+ children: [
347
+ /* @__PURE__ */ d("h2", {
348
+ className: "text-lg font-semibold",
349
+ children: r(_, "membersList.pendingInvitationsHeader", "Pending Invitations")
350
+ }),
351
+ /* @__PURE__ */ f("div", {
352
+ className: "flex flex-col gap-3 rounded-lg border bg-card p-4 sm:flex-row sm:items-center sm:justify-between",
353
+ children: [/* @__PURE__ */ f("label", {
354
+ className: "flex items-center gap-2 text-sm text-foreground",
355
+ children: [/* @__PURE__ */ d("input", {
356
+ type: "checkbox",
357
+ checked: q,
358
+ ref: (e) => {
359
+ e && (e.indeterminate = J && !q);
360
+ },
361
+ onChange: (e) => Ne(e.target.checked),
362
+ "aria-label": r(_, "membersList.selectAllInvitationsAriaLabel", "Select all pending invitations"),
363
+ className: "size-4 rounded border-border text-primary"
364
+ }), /* @__PURE__ */ d("span", { children: r(_, "membersList.selectAllInvitations", "Select all invitations") })]
365
+ }), /* @__PURE__ */ f("div", {
366
+ className: "flex flex-wrap items-center gap-2",
371
367
  children: [
372
- /* @__PURE__ */ f("input", {
373
- type: "checkbox",
374
- checked: z.has(e.id),
375
- onChange: (t) => we(e.id, t.target.checked),
376
- "aria-label": `${r(b, "membersList.selectInvitationAriaLabel", "Select invitation")} ${e.email}`,
377
- className: "h-4 w-4 rounded border-border text-primary"
378
- }),
379
- /* @__PURE__ */ f("div", {
380
- className: "w-10 h-10 rounded-full bg-status-warning/10 flex items-center justify-center transition-colors",
381
- children: /* @__PURE__ */ f(d, { className: "h-5 w-5 text-status-warning" })
382
- }),
383
- /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
384
- className: "font-medium text-sm",
385
- children: e.email
386
- }), /* @__PURE__ */ p("p", {
387
- className: "text-xs text-muted-foreground",
368
+ /* @__PURE__ */ f("span", {
369
+ className: "text-sm text-muted-foreground",
388
370
  children: [
389
- r(b, "membersList.invited", "Invited"),
371
+ I.size,
390
372
  " ",
391
- new Date(e.createdAt).toLocaleDateString()
373
+ r(_, "membersList.selected", "selected")
392
374
  ]
393
- })] })
394
- ]
395
- }), /* @__PURE__ */ p("div", {
396
- className: "flex items-center gap-2",
397
- children: [/* @__PURE__ */ f(y, {
398
- permission: n.MEMBER_CREATE,
399
- deniedBehavior: "disable",
400
- deniedTooltip: r(b, "membersList.noPermissionToResend", "You don't have permission to resend invitations"),
401
- children: /* @__PURE__ */ p(h, {
375
+ }),
376
+ I.size > 0 && /* @__PURE__ */ d(m, {
377
+ variant: "ghost",
378
+ size: "sm",
379
+ onClick: () => L(/* @__PURE__ */ new Set()),
380
+ children: r(_, "membersList.clearSelection", "Clear selection")
381
+ }),
382
+ Z && /* @__PURE__ */ f(m, {
402
383
  variant: "outline",
403
384
  size: "sm",
404
- onClick: () => ve(e.id),
405
- disabled: P && L === e.id,
406
- children: [/* @__PURE__ */ f(le, { className: `h-4 w-4 mr-1 ${P && L === e.id ? "animate-spin" : ""}` }), P && L === e.id ? r(b, "membersList.sending", "Sending...") : r(b, "membersList.resend", "Resend")]
385
+ onClick: Fe,
386
+ disabled: G.length === 0 || N,
387
+ children: [r(_, "membersList.resendSelected", "Resend Selected"), G.length > 0 ? ` (${G.length})` : ""]
407
388
  })
408
- }), /* @__PURE__ */ f(m, {
409
- variant: "outline",
410
- className: "bg-status-warning/10 text-status-warning border-status-warning/30 transition-colors",
411
- children: r(b, "membersList.pending", "Pending")
412
- })]
389
+ ]
413
390
  })]
414
- }, e.id))
415
- })
416
- ]
417
- })
418
- ]
419
- }), /* @__PURE__ */ f(se, { workspaceId: T })] });
391
+ }),
392
+ /* @__PURE__ */ d("div", {
393
+ className: "space-y-2",
394
+ children: z.map((e) => /* @__PURE__ */ f("div", {
395
+ className: "flex items-center justify-between p-4 border rounded-lg bg-card",
396
+ children: [/* @__PURE__ */ f("div", {
397
+ className: "flex items-center gap-3",
398
+ children: [
399
+ /* @__PURE__ */ d("input", {
400
+ type: "checkbox",
401
+ checked: I.has(e.id),
402
+ onChange: (t) => Me(e.id, t.target.checked),
403
+ "aria-label": `${r(_, "membersList.selectInvitationAriaLabel", "Select invitation")} ${e.email}`,
404
+ className: "size-4 rounded border-border text-primary"
405
+ }),
406
+ /* @__PURE__ */ d("div", {
407
+ className: "size-10 rounded-full bg-status-warning/10 flex items-center justify-center transition-colors",
408
+ children: /* @__PURE__ */ d(u, { className: "size-5 text-status-warning" })
409
+ }),
410
+ /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
411
+ className: "font-medium text-sm",
412
+ children: e.email
413
+ }), /* @__PURE__ */ f("p", {
414
+ className: "text-xs text-muted-foreground",
415
+ children: [
416
+ r(_, "membersList.invited", "Invited"),
417
+ " ",
418
+ new Date(e.createdAt).toLocaleDateString()
419
+ ]
420
+ })] })
421
+ ]
422
+ }), /* @__PURE__ */ f("div", {
423
+ className: "flex items-center gap-2",
424
+ children: [/* @__PURE__ */ d(g, {
425
+ permission: n.MEMBER_CREATE,
426
+ deniedBehavior: "disable",
427
+ deniedTooltip: r(_, "membersList.noPermissionToResend", "You don't have permission to resend invitations"),
428
+ children: /* @__PURE__ */ f(m, {
429
+ variant: "outline",
430
+ size: "sm",
431
+ onClick: () => Ce(e.id),
432
+ disabled: N && P === e.id,
433
+ children: [/* @__PURE__ */ d(ue, { className: `size-4 mr-1 ${N && P === e.id ? "animate-spin" : ""}` }), N && P === e.id ? r(_, "membersList.sending", "Sending...") : r(_, "membersList.resend", "Resend")]
434
+ })
435
+ }), /* @__PURE__ */ d(p, {
436
+ variant: "outline",
437
+ className: "bg-status-warning/10 text-status-warning border-status-warning/30 transition-colors",
438
+ children: r(_, "membersList.pending", "Pending")
439
+ })]
440
+ })]
441
+ }, e.id))
442
+ })
443
+ ]
444
+ })
445
+ ]
446
+ }), /* @__PURE__ */ d(se, { workspaceId: T })]
447
+ });
420
448
  }
421
449
  //#endregion
422
- export { b as MembersListPage };
450
+ export { _ as MembersListPage };
423
451
 
424
452
  //# sourceMappingURL=MembersListPage.js.map