@burdenoff/microfe-workspaces 2026.510.50 → 2026.511.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 (69) hide show
  1. package/dist/generated/wspace-operations.d.ts +91 -0
  2. package/dist/generated/wspace-operations.d.ts.map +1 -1
  3. package/dist/generated/wspace-operations.js +79 -51
  4. package/dist/generated/wspace-operations.js.map +1 -1
  5. package/dist/hooks/useMemberMutations.d.ts.map +1 -1
  6. package/dist/hooks/useMemberMutations.js +141 -60
  7. package/dist/hooks/useMemberMutations.js.map +1 -1
  8. package/dist/hooks/useProjectMutations.d.ts.map +1 -1
  9. package/dist/hooks/useProjectMutations.js +84 -44
  10. package/dist/hooks/useProjectMutations.js.map +1 -1
  11. package/dist/hooks/useWorkspaceMutations.d.ts.map +1 -1
  12. package/dist/hooks/useWorkspaceMutations.js +64 -29
  13. package/dist/hooks/useWorkspaceMutations.js.map +1 -1
  14. package/dist/hooks/useWorkspacesEventEmitter.d.ts +5 -1
  15. package/dist/hooks/useWorkspacesEventEmitter.d.ts.map +1 -1
  16. package/dist/hooks/useWorkspacesEventEmitter.js +8 -7
  17. package/dist/hooks/useWorkspacesEventEmitter.js.map +1 -1
  18. package/dist/hooks/useWorkspacesPageView.d.ts +27 -0
  19. package/dist/hooks/useWorkspacesPageView.d.ts.map +1 -0
  20. package/dist/hooks/useWorkspacesPageView.js +29 -0
  21. package/dist/hooks/useWorkspacesPageView.js.map +1 -0
  22. package/dist/pages/ActivityListPage.d.ts.map +1 -1
  23. package/dist/pages/ActivityListPage.js +59 -56
  24. package/dist/pages/ActivityListPage.js.map +1 -1
  25. package/dist/pages/CreateWorkspacePage.d.ts.map +1 -1
  26. package/dist/pages/CreateWorkspacePage.js +104 -104
  27. package/dist/pages/CreateWorkspacePage.js.map +1 -1
  28. package/dist/pages/InviteAcceptancePage.d.ts.map +1 -1
  29. package/dist/pages/InviteAcceptancePage.js +197 -216
  30. package/dist/pages/InviteAcceptancePage.js.map +1 -1
  31. package/dist/pages/MembersListPage.d.ts.map +1 -1
  32. package/dist/pages/MembersListPage.js +142 -138
  33. package/dist/pages/MembersListPage.js.map +1 -1
  34. package/dist/pages/ProjectDetailPage.d.ts.map +1 -1
  35. package/dist/pages/ProjectDetailPage.js +181 -176
  36. package/dist/pages/ProjectDetailPage.js.map +1 -1
  37. package/dist/pages/ProjectsListPage.d.ts.map +1 -1
  38. package/dist/pages/ProjectsListPage.js +175 -171
  39. package/dist/pages/ProjectsListPage.js.map +1 -1
  40. package/dist/pages/WorkspaceDetailPage.d.ts.map +1 -1
  41. package/dist/pages/WorkspaceDetailPage.js +104 -101
  42. package/dist/pages/WorkspaceDetailPage.js.map +1 -1
  43. package/dist/pages/WorkspaceSettingsPage.d.ts.map +1 -1
  44. package/dist/pages/WorkspaceSettingsPage.js +182 -137
  45. package/dist/pages/WorkspaceSettingsPage.js.map +1 -1
  46. package/dist/pages/WorkspacesListPage.d.ts.map +1 -1
  47. package/dist/pages/WorkspacesListPage.js +77 -77
  48. package/dist/pages/WorkspacesListPage.js.map +1 -1
  49. package/dist/pages/dashboard/DashboardCustomizer.d.ts.map +1 -1
  50. package/dist/pages/dashboard/DashboardCustomizer.js +53 -55
  51. package/dist/pages/dashboard/DashboardCustomizer.js.map +1 -1
  52. package/dist/pages/dashboard/DashboardGrid.d.ts.map +1 -1
  53. package/dist/pages/dashboard/DashboardGrid.js +33 -36
  54. package/dist/pages/dashboard/DashboardGrid.js.map +1 -1
  55. package/dist/pages/dashboard/DashboardPage.d.ts.map +1 -1
  56. package/dist/pages/dashboard/DashboardPage.js +67 -65
  57. package/dist/pages/dashboard/DashboardPage.js.map +1 -1
  58. package/dist/pages/dashboard/WidgetWrapper.d.ts.map +1 -1
  59. package/dist/pages/dashboard/WidgetWrapper.js +3 -6
  60. package/dist/pages/dashboard/WidgetWrapper.js.map +1 -1
  61. package/dist/utils/i18n.d.ts +13 -0
  62. package/dist/utils/i18n.d.ts.map +1 -0
  63. package/dist/utils/i18n.js +12 -0
  64. package/dist/utils/i18n.js.map +1 -0
  65. package/dist/utils/telemetryError.d.ts +2 -0
  66. package/dist/utils/telemetryError.d.ts.map +1 -0
  67. package/dist/utils/telemetryError.js +28 -0
  68. package/dist/utils/telemetryError.js.map +1 -0
  69. package/package.json +9 -4
@@ -1,361 +1,366 @@
1
1
  import { useWorkspacesContext as e } from "../providers/WorkspacesProvider.js";
2
2
  import { getProjectStatusClasses as t } from "../utils/tokenHelpers.js";
3
- import { useScopedNavigation as n } from "../hooks/useScopedNavigation.js";
4
- import { nativeImpact as r, nativeNotify as i } from "../utils/nativeBridge.js";
5
- import { useProject as a, useProjectMembersCount as ee } from "../hooks/useProjects.js";
6
- import { useArchiveProject as te, useDeleteProject as ne, useUnarchiveProject as re, useUpdateProject as o } from "../hooks/useProjectMutations.js";
7
- import { formatDate as s } from "../utils/formatters.js";
8
- import { normalizeProjectTags as c, toProjectTag as l } from "../utils/projectTags.js";
3
+ import { useScopedNavigation as ee } from "../hooks/useScopedNavigation.js";
4
+ import { tWithFallback as n } from "../utils/i18n.js";
5
+ import { useWorkspacesPageView as te } from "../hooks/useWorkspacesPageView.js";
6
+ import { nativeImpact as ne, nativeNotify as r } from "../utils/nativeBridge.js";
7
+ import { useProject as re, useProjectMembersCount as i } from "../hooks/useProjects.js";
8
+ import { useArchiveProject as a, useDeleteProject as o, useUnarchiveProject as s, useUpdateProject as c } from "../hooks/useProjectMutations.js";
9
+ import { formatDate as l } from "../utils/formatters.js";
10
+ import { normalizeProjectTags as u, toProjectTag as d } from "../utils/projectTags.js";
9
11
  import { useWorkspaceActivity as ie } from "../hooks/useWorkspaceActivity.js";
10
12
  import { useWorkspacePermissions as ae } from "../hooks/useWorkspacePermissions.js";
11
- import { useCallback as oe, useEffect as se, useMemo as ce, useState as u } from "react";
12
- import { Activity as d, Archive as f, ArrowLeft as p, Clock as m, FolderKanban as h, MoreVertical as g, Users as _ } from "lucide-react";
13
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
14
- import { AlertDialog as le, AlertDialogAction as ue, AlertDialogCancel as de, AlertDialogContent as fe, AlertDialogDescription as pe, AlertDialogFooter as me, AlertDialogHeader as he, AlertDialogTitle as ge, Badge as b, Button as x, Card as S, CardContent as C, CardHeader as w, CardTitle as T, DropdownMenu as _e, DropdownMenuContent as E, DropdownMenuItem as D, DropdownMenuSeparator as O, DropdownMenuTrigger as k, Skeleton as A } from "@burdenoff/fe-libs/ui";
15
- import { useNavigate as j, useParams as M } from "react-router-dom";
16
- import { useI18n as N } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
17
- import { TagsWidget as P } from "@burdenoff/fe-libs/tag";
13
+ import { useEffect as oe, useMemo as se, useState as f } from "react";
14
+ import { Activity as p, Archive as m, ArrowLeft as h, Clock as g, FolderKanban as _, MoreVertical as ce, Users as v } from "lucide-react";
15
+ import { jsx as y, jsxs as b } from "react/jsx-runtime";
16
+ import { AlertDialog as le, AlertDialogAction as ue, AlertDialogCancel as de, AlertDialogContent as fe, AlertDialogDescription as pe, AlertDialogFooter as me, AlertDialogHeader as he, AlertDialogTitle as ge, Badge as x, Button as S, Card as C, CardContent as w, CardHeader as T, CardTitle as E, DropdownMenu as D, DropdownMenuContent as O, DropdownMenuItem as k, DropdownMenuSeparator as A, DropdownMenuTrigger as j, Skeleton as M } from "@burdenoff/fe-libs/ui";
17
+ import { useNavigate as N, useParams as P } from "react-router-dom";
18
+ import { useI18n as F } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
19
+ import { TagsWidget as I } from "@burdenoff/fe-libs/tag";
18
20
  //#region src/pages/ProjectDetailPage.tsx
19
- function F() {
20
- let { t: F } = N(), I = oe((e, t) => {
21
- let n = F(e);
22
- return n === e ? t : n;
23
- }, [F]), { workspaceId: L, projectId: R } = M(), z = j(), { basePath: B = "/workspaces" } = e(), { withCurrentSearch: V } = n(), { data: H, isLoading: ve, error: ye } = a(R || "", L), [be, U] = u(!1), [W, G] = u(() => c(H?.tags)), { mutate: xe, isPending: K } = te(L), { mutate: Se, isPending: q } = re(L), { mutate: Ce, isPending: J } = ne(L), { mutateAsync: we, isPending: Te } = o(L), { data: Ee } = ee(R || "", L), { data: De } = ie(L), Y = (De ?? []).filter((e) => e.resourceId === R || e.resourceType?.toLowerCase() === "project").length, { canViewProject: Oe, canDeleteProject: X, canArchiveProject: Z, isLoading: ke } = ae();
24
- se(() => {
25
- G(c(H?.tags));
26
- }, [H?.tags]);
27
- let Ae = ce(() => W, [W]);
28
- if (ke) return /* @__PURE__ */ y("div", {
21
+ function L() {
22
+ let { t: L } = F(), { workspaceId: R, projectId: z } = P();
23
+ te("workspaces.project-detail", {
24
+ workspaceId: R,
25
+ projectId: z,
26
+ requireParams: !0
27
+ });
28
+ let B = N(), { basePath: V = "/workspaces" } = e(), { withCurrentSearch: H } = ee(), { data: U, isLoading: _e, error: ve } = re(z || "", R), [ye, W] = f(!1), [G, K] = f(() => u(U?.tags)), { mutate: be, isPending: q } = a(R), { mutate: xe, isPending: J } = s(R), { mutate: Se, isPending: Y } = o(R), { mutateAsync: Ce, isPending: we } = c(R), { data: Te } = i(z || "", R), { data: Ee } = ie(R), De = (Ee ?? []).filter((e) => e.resourceId === z || e.resourceType?.toLowerCase() === "project").length, { canViewProject: Oe, canDeleteProject: X, canArchiveProject: Z, isLoading: ke } = ae();
29
+ oe(() => {
30
+ K(u(U?.tags));
31
+ }, [U?.tags]);
32
+ let Ae = se(() => G, [G]);
33
+ if (ke) return /* @__PURE__ */ b("div", {
29
34
  className: "space-y-4 p-6",
30
- children: [/* @__PURE__ */ v(A, { className: "h-10 w-1/3" }), /* @__PURE__ */ v(A, { className: "h-64" })]
35
+ children: [/* @__PURE__ */ y(M, { className: "h-10 w-1/3" }), /* @__PURE__ */ y(M, { className: "h-64" })]
31
36
  });
32
- if (!Oe) return /* @__PURE__ */ v("div", {
37
+ if (!Oe) return /* @__PURE__ */ y("div", {
33
38
  className: "flex items-center justify-center min-h-[400px]",
34
- children: /* @__PURE__ */ y("div", {
39
+ children: /* @__PURE__ */ b("div", {
35
40
  className: "text-center space-y-2",
36
- children: [/* @__PURE__ */ v("h2", {
41
+ children: [/* @__PURE__ */ y("h2", {
37
42
  className: "text-lg font-semibold",
38
- children: I("projectDetail.accessDenied", "Access Denied")
39
- }), /* @__PURE__ */ v("p", {
43
+ children: n(L, "projectDetail.accessDenied", "Access Denied")
44
+ }), /* @__PURE__ */ y("p", {
40
45
  className: "text-sm text-muted-foreground",
41
- children: I("projectDetail.noPermissionToViewProject", "You don't have permission to view this project.")
46
+ children: n(L, "projectDetail.noPermissionToViewProject", "You don't have permission to view this project.")
42
47
  })]
43
48
  })
44
49
  });
45
50
  let Q = () => {
46
- z(V(`${B}/${L}/projects`));
51
+ B(H(`${V}/${R}/projects`));
47
52
  }, je = () => {
48
- H && (H.archived ? Se(H.id, { onError: (e) => {
53
+ U && (U.archived ? xe(U.id, { onError: (e) => {
49
54
  console.error("Failed to unarchive project:", e);
50
- } }) : xe(H.id, { onError: (e) => {
55
+ } }) : be(U.id, { onError: (e) => {
51
56
  console.error("Failed to archive project:", e);
52
57
  } }));
53
58
  }, Me = () => {
54
- H && (r("medium"), Ce(H.id, {
59
+ U && (ne("medium"), Se(U.id, {
55
60
  onSuccess: () => {
56
- i("success"), U(!1), z(V(`${B}/${L}/projects`));
61
+ r("success"), W(!1), B(H(`${V}/${R}/projects`));
57
62
  },
58
63
  onError: (e) => {
59
- i("error"), console.error("Failed to delete project:", e);
64
+ r("error"), console.error("Failed to delete project:", e);
60
65
  }
61
66
  }));
62
67
  }, $ = async (e) => {
63
- if (!H) return;
64
- let t = e.map((e) => l(e));
65
- G(t);
68
+ if (!U) return;
69
+ let t = e.map((e) => d(e));
70
+ K(t);
66
71
  try {
67
- await we({
68
- id: H.id,
72
+ await Ce({
73
+ id: U.id,
69
74
  input: { tags: t }
70
75
  });
71
76
  } catch (e) {
72
- throw G(c(H.tags)), e;
77
+ throw K(u(U.tags)), e;
73
78
  }
74
79
  };
75
- return ve ? /* @__PURE__ */ y("div", {
80
+ return _e ? /* @__PURE__ */ b("div", {
76
81
  className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
77
82
  children: [
78
- /* @__PURE__ */ v(A, { className: "h-10 w-32" }),
79
- /* @__PURE__ */ v(A, { className: "h-10 w-1/3" }),
80
- /* @__PURE__ */ y("div", {
83
+ /* @__PURE__ */ y(M, { className: "h-10 w-32" }),
84
+ /* @__PURE__ */ y(M, { className: "h-10 w-1/3" }),
85
+ /* @__PURE__ */ b("div", {
81
86
  className: "grid grid-cols-1 md:grid-cols-3 gap-4",
82
87
  children: [
83
- /* @__PURE__ */ v(A, { className: "h-32" }),
84
- /* @__PURE__ */ v(A, { className: "h-32" }),
85
- /* @__PURE__ */ v(A, { className: "h-32" })
88
+ /* @__PURE__ */ y(M, { className: "h-32" }),
89
+ /* @__PURE__ */ y(M, { className: "h-32" }),
90
+ /* @__PURE__ */ y(M, { className: "h-32" })
86
91
  ]
87
92
  }),
88
- /* @__PURE__ */ v(A, { className: "h-48" })
93
+ /* @__PURE__ */ y(M, { className: "h-48" })
89
94
  ]
90
- }) : ye || !H ? /* @__PURE__ */ y("div", {
95
+ }) : ve || !U ? /* @__PURE__ */ b("div", {
91
96
  className: "space-y-4 p-6",
92
- children: [/* @__PURE__ */ y(x, {
97
+ children: [/* @__PURE__ */ b(S, {
93
98
  variant: "ghost",
94
99
  onClick: Q,
95
100
  className: "gap-2",
96
- children: [/* @__PURE__ */ v(p, { size: 20 }), I("projectDetail.backToProjects", "Back to Projects")]
97
- }), /* @__PURE__ */ y("div", {
101
+ children: [/* @__PURE__ */ y(h, { size: 20 }), n(L, "projectDetail.backToProjects", "Back to Projects")]
102
+ }), /* @__PURE__ */ b("div", {
98
103
  className: "text-center py-12",
99
104
  children: [
100
- /* @__PURE__ */ v("div", {
105
+ /* @__PURE__ */ y("div", {
101
106
  className: "rounded-full bg-muted p-6 mb-4 inline-block",
102
- children: /* @__PURE__ */ v(h, {
107
+ children: /* @__PURE__ */ y(_, {
103
108
  size: 48,
104
109
  className: "text-muted-foreground"
105
110
  })
106
111
  }),
107
- /* @__PURE__ */ v("h3", {
112
+ /* @__PURE__ */ y("h3", {
108
113
  className: "text-lg font-semibold mb-2",
109
- children: I("projectDetail.projectNotFound", "Project not found")
114
+ children: n(L, "projectDetail.projectNotFound", "Project not found")
110
115
  }),
111
- /* @__PURE__ */ v("p", {
116
+ /* @__PURE__ */ y("p", {
112
117
  className: "text-muted-foreground max-w-sm mx-auto mb-4",
113
- children: I("projectDetail.projectNotFoundDescription", "The project you're looking for doesn't exist or you don't have permission to view it.")
118
+ children: n(L, "projectDetail.projectNotFoundDescription", "The project you're looking for doesn't exist or you don't have permission to view it.")
114
119
  }),
115
- /* @__PURE__ */ y(x, {
120
+ /* @__PURE__ */ b(S, {
116
121
  onClick: Q,
117
- children: [/* @__PURE__ */ v(p, {
122
+ children: [/* @__PURE__ */ y(h, {
118
123
  size: 16,
119
124
  className: "mr-2"
120
- }), I("projectDetail.backToProjects", "Back to Projects")]
125
+ }), n(L, "projectDetail.backToProjects", "Back to Projects")]
121
126
  })
122
127
  ]
123
128
  })]
124
- }) : /* @__PURE__ */ y("div", {
129
+ }) : /* @__PURE__ */ b("div", {
125
130
  className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
126
131
  children: [
127
- /* @__PURE__ */ y("div", {
132
+ /* @__PURE__ */ b("div", {
128
133
  className: "flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3",
129
- children: [/* @__PURE__ */ y("div", { children: [
130
- /* @__PURE__ */ y(x, {
134
+ children: [/* @__PURE__ */ b("div", { children: [
135
+ /* @__PURE__ */ b(S, {
131
136
  variant: "ghost",
132
137
  onClick: Q,
133
138
  className: "gap-2 mb-2 -ml-2",
134
- children: [/* @__PURE__ */ v(p, { size: 20 }), I("projectDetail.backToProjects", "Back to Projects")]
139
+ children: [/* @__PURE__ */ y(h, { size: 20 }), n(L, "projectDetail.backToProjects", "Back to Projects")]
135
140
  }),
136
- /* @__PURE__ */ y("div", {
141
+ /* @__PURE__ */ b("div", {
137
142
  className: "flex items-center gap-3",
138
- children: [/* @__PURE__ */ v("div", {
143
+ children: [/* @__PURE__ */ y("div", {
139
144
  className: "p-3 rounded-lg bg-primary/10",
140
- children: /* @__PURE__ */ v(h, {
145
+ children: /* @__PURE__ */ y(_, {
141
146
  className: "text-primary",
142
147
  size: 28
143
148
  })
144
- }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
149
+ }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h1", {
145
150
  className: "text-2xl sm:text-3xl font-bold",
146
- children: H.name
147
- }), /* @__PURE__ */ v("p", {
151
+ children: U.name
152
+ }), /* @__PURE__ */ y("p", {
148
153
  className: "text-sm text-muted-foreground font-mono",
149
- children: H.key
154
+ children: U.key
150
155
  })] })]
151
156
  }),
152
- /* @__PURE__ */ y("div", {
157
+ /* @__PURE__ */ b("div", {
153
158
  className: "flex items-center gap-2 mt-3",
154
- children: [/* @__PURE__ */ v(b, {
155
- className: `border ${t(H.status)}`,
156
- children: H.status
157
- }), H.archived && /* @__PURE__ */ y(b, {
159
+ children: [/* @__PURE__ */ y(x, {
160
+ className: `border ${t(U.status)}`,
161
+ children: U.status
162
+ }), U.archived && /* @__PURE__ */ b(x, {
158
163
  variant: "outline",
159
164
  className: "border-workspace-archived-border text-workspace-archived-text",
160
- children: [/* @__PURE__ */ v(f, {
165
+ children: [/* @__PURE__ */ y(m, {
161
166
  size: 12,
162
167
  className: "mr-1"
163
- }), I("projectDetail.archived", "Archived")]
168
+ }), n(L, "projectDetail.archived", "Archived")]
164
169
  })]
165
170
  })
166
- ] }), /* @__PURE__ */ v("div", {
171
+ ] }), /* @__PURE__ */ y("div", {
167
172
  className: "flex items-center gap-2",
168
- children: /* @__PURE__ */ y(_e, { children: [/* @__PURE__ */ v(k, {
173
+ children: /* @__PURE__ */ b(D, { children: [/* @__PURE__ */ y(j, {
169
174
  asChild: !0,
170
- children: /* @__PURE__ */ v(x, {
175
+ children: /* @__PURE__ */ y(S, {
171
176
  variant: "outline",
172
177
  size: "icon",
173
- "aria-label": I("projectDetail.openProjectActionsAriaLabel", "Open project actions"),
174
- children: /* @__PURE__ */ v(g, { size: 20 })
178
+ "aria-label": n(L, "projectDetail.openProjectActionsAriaLabel", "Open project actions"),
179
+ children: /* @__PURE__ */ y(ce, { size: 20 })
175
180
  })
176
- }), /* @__PURE__ */ y(E, {
181
+ }), /* @__PURE__ */ b(O, {
177
182
  align: "end",
178
183
  children: [
179
- Z && /* @__PURE__ */ y(D, {
184
+ Z && /* @__PURE__ */ b(k, {
180
185
  onClick: je,
181
- disabled: K || q,
182
- children: [/* @__PURE__ */ v(f, {
186
+ disabled: q || J,
187
+ children: [/* @__PURE__ */ y(m, {
183
188
  size: 16,
184
189
  className: "mr-2"
185
- }), K || q ? I("projectDetail.processing", "Processing...") : H.archived ? I("projectDetail.unarchive", "Unarchive") : I("projectDetail.archive", "Archive")]
190
+ }), q || J ? n(L, "projectDetail.processing", "Processing...") : U.archived ? n(L, "projectDetail.unarchive", "Unarchive") : n(L, "projectDetail.archive", "Archive")]
186
191
  }),
187
- Z && X && /* @__PURE__ */ v(O, {}),
188
- X && /* @__PURE__ */ v(D, {
189
- onClick: () => U(!0),
192
+ Z && X && /* @__PURE__ */ y(A, {}),
193
+ X && /* @__PURE__ */ y(k, {
194
+ onClick: () => W(!0),
190
195
  className: "text-destructive",
191
- children: I("projectDetail.deleteProject", "Delete Project")
196
+ children: n(L, "projectDetail.deleteProject", "Delete Project")
192
197
  })
193
198
  ]
194
199
  })] })
195
200
  })]
196
201
  }),
197
- /* @__PURE__ */ y("div", {
202
+ /* @__PURE__ */ b("div", {
198
203
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
199
- children: [/* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, {
204
+ children: [/* @__PURE__ */ b(C, { children: [/* @__PURE__ */ y(T, {
200
205
  className: "flex flex-row items-center justify-between pb-2",
201
- children: /* @__PURE__ */ y(T, {
206
+ children: /* @__PURE__ */ b(E, {
202
207
  className: "flex items-center gap-2 text-base",
203
- children: [/* @__PURE__ */ v(_, {
208
+ children: [/* @__PURE__ */ y(v, {
204
209
  size: 20,
205
210
  className: "text-muted-foreground"
206
- }), I("projectDetail.membersCardTitle", "Members")]
211
+ }), n(L, "projectDetail.membersCardTitle", "Members")]
207
212
  })
208
- }), /* @__PURE__ */ y(C, { children: [/* @__PURE__ */ v("p", {
213
+ }), /* @__PURE__ */ b(w, { children: [/* @__PURE__ */ y("p", {
209
214
  className: "text-3xl font-bold",
210
- children: Ee ?? 0
211
- }), /* @__PURE__ */ v("p", {
215
+ children: Te ?? 0
216
+ }), /* @__PURE__ */ y("p", {
212
217
  className: "text-sm text-muted-foreground",
213
- children: I("projectDetail.projectMembers", "Project members")
214
- })] })] }), /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, {
218
+ children: n(L, "projectDetail.projectMembers", "Project members")
219
+ })] })] }), /* @__PURE__ */ b(C, { children: [/* @__PURE__ */ y(T, {
215
220
  className: "flex flex-row items-center justify-between pb-2",
216
- children: /* @__PURE__ */ y(T, {
221
+ children: /* @__PURE__ */ b(E, {
217
222
  className: "flex items-center gap-2 text-base",
218
- children: [/* @__PURE__ */ v(d, {
223
+ children: [/* @__PURE__ */ y(p, {
219
224
  size: 20,
220
225
  className: "text-muted-foreground"
221
- }), I("projectDetail.activityCardTitle", "Activity")]
226
+ }), n(L, "projectDetail.activityCardTitle", "Activity")]
222
227
  })
223
- }), /* @__PURE__ */ y(C, { children: [/* @__PURE__ */ v("p", {
228
+ }), /* @__PURE__ */ b(w, { children: [/* @__PURE__ */ y("p", {
224
229
  className: "text-3xl font-bold",
225
- children: Y
226
- }), /* @__PURE__ */ v("p", {
230
+ children: De
231
+ }), /* @__PURE__ */ y("p", {
227
232
  className: "text-sm text-muted-foreground",
228
- children: I("projectDetail.recentActivityItems", "Recent activity items")
233
+ children: n(L, "projectDetail.recentActivityItems", "Recent activity items")
229
234
  })] })] })]
230
235
  }),
231
- /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, { children: I("projectDetail.tagsTitle", "Tags") }) }), /* @__PURE__ */ y(C, {
236
+ /* @__PURE__ */ b(C, { children: [/* @__PURE__ */ y(T, { children: /* @__PURE__ */ y(E, { children: n(L, "projectDetail.tagsTitle", "Tags") }) }), /* @__PURE__ */ b(w, {
232
237
  className: "space-y-3",
233
- children: [/* @__PURE__ */ v("p", {
238
+ children: [/* @__PURE__ */ y("p", {
234
239
  className: "text-sm text-muted-foreground",
235
- children: I("projectDetail.tagsDescription", "Use universal tags to classify and filter this project across the workspace.")
236
- }), /* @__PURE__ */ v(P, {
240
+ children: n(L, "projectDetail.tagsDescription", "Use universal tags to classify and filter this project across the workspace.")
241
+ }), /* @__PURE__ */ y(I, {
237
242
  entityType: "Project",
238
- entityId: H.id,
239
- workspaceId: L,
243
+ entityId: U.id,
244
+ workspaceId: R,
240
245
  tags: Ae,
241
246
  onAdd: async (e) => {
242
- await $([...W, l(e)]);
247
+ await $([...G, d(e)]);
243
248
  },
244
249
  onRemove: async (e) => {
245
- await $(W.filter((t) => t.tagId !== e && t.id !== e));
250
+ await $(G.filter((t) => t.tagId !== e && t.id !== e));
246
251
  },
247
252
  syncGraphNotifications: !1,
248
- className: Te ? "pointer-events-none opacity-75" : void 0
253
+ className: we ? "pointer-events-none opacity-75" : void 0
249
254
  })]
250
255
  })] }),
251
- /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, { children: I("projectDetail.projectInformation", "Project Information") }) }), /* @__PURE__ */ y(C, {
256
+ /* @__PURE__ */ b(C, { children: [/* @__PURE__ */ y(T, { children: /* @__PURE__ */ y(E, { children: n(L, "projectDetail.projectInformation", "Project Information") }) }), /* @__PURE__ */ b(w, {
252
257
  className: "space-y-4",
253
- children: [/* @__PURE__ */ y("div", {
258
+ children: [/* @__PURE__ */ b("div", {
254
259
  className: "grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm",
255
260
  children: [
256
- /* @__PURE__ */ y("div", {
261
+ /* @__PURE__ */ b("div", {
257
262
  className: "space-y-1",
258
- children: [/* @__PURE__ */ y("span", {
263
+ children: [/* @__PURE__ */ b("span", {
259
264
  className: "text-muted-foreground flex items-center gap-2",
260
- children: [/* @__PURE__ */ v(h, { size: 14 }), I("projectDetail.projectId", "Project ID")]
261
- }), /* @__PURE__ */ v("span", {
265
+ children: [/* @__PURE__ */ y(_, { size: 14 }), n(L, "projectDetail.projectId", "Project ID")]
266
+ }), /* @__PURE__ */ y("span", {
262
267
  className: "font-mono text-xs block",
263
- children: H.id
268
+ children: U.id
264
269
  })]
265
270
  }),
266
- /* @__PURE__ */ y("div", {
271
+ /* @__PURE__ */ b("div", {
267
272
  className: "space-y-1",
268
- children: [/* @__PURE__ */ y("span", {
273
+ children: [/* @__PURE__ */ b("span", {
269
274
  className: "text-muted-foreground flex items-center gap-2",
270
- children: [/* @__PURE__ */ v(h, { size: 14 }), I("projectDetail.projectKey", "Project Key")]
271
- }), /* @__PURE__ */ v("span", {
275
+ children: [/* @__PURE__ */ y(_, { size: 14 }), n(L, "projectDetail.projectKey", "Project Key")]
276
+ }), /* @__PURE__ */ y("span", {
272
277
  className: "font-medium",
273
- children: H.key
278
+ children: U.key
274
279
  })]
275
280
  }),
276
- /* @__PURE__ */ y("div", {
281
+ /* @__PURE__ */ b("div", {
277
282
  className: "space-y-1",
278
- children: [/* @__PURE__ */ y("span", {
283
+ children: [/* @__PURE__ */ b("span", {
279
284
  className: "text-muted-foreground flex items-center gap-2",
280
- children: [/* @__PURE__ */ v(m, { size: 14 }), I("projectDetail.created", "Created")]
281
- }), /* @__PURE__ */ v("span", { children: s(H.createdAt) })]
285
+ children: [/* @__PURE__ */ y(g, { size: 14 }), n(L, "projectDetail.created", "Created")]
286
+ }), /* @__PURE__ */ y("span", { children: l(U.createdAt) })]
282
287
  }),
283
- /* @__PURE__ */ y("div", {
288
+ /* @__PURE__ */ b("div", {
284
289
  className: "space-y-1",
285
- children: [/* @__PURE__ */ y("span", {
290
+ children: [/* @__PURE__ */ b("span", {
286
291
  className: "text-muted-foreground flex items-center gap-2",
287
- children: [/* @__PURE__ */ v(m, { size: 14 }), I("projectDetail.lastUpdated", "Last Updated")]
288
- }), /* @__PURE__ */ v("span", { children: s(H.updatedAt) })]
292
+ children: [/* @__PURE__ */ y(g, { size: 14 }), n(L, "projectDetail.lastUpdated", "Last Updated")]
293
+ }), /* @__PURE__ */ y("span", { children: l(U.updatedAt) })]
289
294
  }),
290
- /* @__PURE__ */ y("div", {
295
+ /* @__PURE__ */ b("div", {
291
296
  className: "space-y-1",
292
- children: [/* @__PURE__ */ y("span", {
297
+ children: [/* @__PURE__ */ b("span", {
293
298
  className: "text-muted-foreground flex items-center gap-2",
294
- children: [/* @__PURE__ */ v(_, { size: 14 }), I("projectDetail.workspaceId", "Workspace ID")]
295
- }), /* @__PURE__ */ v("span", {
299
+ children: [/* @__PURE__ */ y(v, { size: 14 }), n(L, "projectDetail.workspaceId", "Workspace ID")]
300
+ }), /* @__PURE__ */ y("span", {
296
301
  className: "font-mono text-xs block",
297
- children: H.workspaceId
302
+ children: U.workspaceId
298
303
  })]
299
304
  }),
300
- /* @__PURE__ */ y("div", {
305
+ /* @__PURE__ */ b("div", {
301
306
  className: "space-y-1",
302
- children: [/* @__PURE__ */ y("span", {
307
+ children: [/* @__PURE__ */ b("span", {
303
308
  className: "text-muted-foreground flex items-center gap-2",
304
- children: [/* @__PURE__ */ v(_, { size: 14 }), I("projectDetail.creatorId", "Creator ID")]
305
- }), /* @__PURE__ */ v("span", {
309
+ children: [/* @__PURE__ */ y(v, { size: 14 }), n(L, "projectDetail.creatorId", "Creator ID")]
310
+ }), /* @__PURE__ */ y("span", {
306
311
  className: "font-mono text-xs block",
307
- children: H.creatorId
312
+ children: U.creatorId
308
313
  })]
309
314
  })
310
315
  ]
311
- }), H.config && Object.keys(H.config).length > 0 && /* @__PURE__ */ y("div", {
316
+ }), U.config && Object.keys(U.config).length > 0 && /* @__PURE__ */ b("div", {
312
317
  className: "pt-4 border-t",
313
- children: [/* @__PURE__ */ v("h4", {
318
+ children: [/* @__PURE__ */ y("h4", {
314
319
  className: "text-sm font-medium mb-2",
315
- children: I("projectDetail.configuration", "Configuration")
316
- }), /* @__PURE__ */ v("pre", {
320
+ children: n(L, "projectDetail.configuration", "Configuration")
321
+ }), /* @__PURE__ */ y("pre", {
317
322
  className: "text-xs bg-muted p-3 rounded-lg overflow-auto",
318
- children: JSON.stringify(H.config, null, 2)
323
+ children: JSON.stringify(U.config, null, 2)
319
324
  })]
320
325
  })]
321
326
  })] }),
322
- /* @__PURE__ */ y(S, { children: [/* @__PURE__ */ v(w, { children: /* @__PURE__ */ v(T, { children: I("projectDetail.quickActions", "Quick Actions") }) }), /* @__PURE__ */ v(C, { children: /* @__PURE__ */ y("div", {
327
+ /* @__PURE__ */ b(C, { children: [/* @__PURE__ */ y(T, { children: /* @__PURE__ */ y(E, { children: n(L, "projectDetail.quickActions", "Quick Actions") }) }), /* @__PURE__ */ y(w, { children: /* @__PURE__ */ b("div", {
323
328
  className: "flex flex-wrap gap-2",
324
- children: [/* @__PURE__ */ y(x, {
329
+ children: [/* @__PURE__ */ b(S, {
325
330
  variant: "outline",
326
331
  size: "sm",
327
- onClick: () => z(V(`${B}/${L}/members`)),
328
- children: [/* @__PURE__ */ v(_, {
332
+ onClick: () => B(H(`${V}/${R}/members`)),
333
+ children: [/* @__PURE__ */ y(v, {
329
334
  size: 16,
330
335
  className: "mr-2"
331
- }), I("projectDetail.workspaceMembers", "Workspace Members")]
332
- }), /* @__PURE__ */ y(x, {
336
+ }), n(L, "projectDetail.workspaceMembers", "Workspace Members")]
337
+ }), /* @__PURE__ */ b(S, {
333
338
  variant: "outline",
334
339
  size: "sm",
335
- onClick: () => z(V(`${B}/${L}/activity`)),
336
- children: [/* @__PURE__ */ v(d, {
340
+ onClick: () => B(H(`${V}/${R}/activity`)),
341
+ children: [/* @__PURE__ */ y(p, {
337
342
  size: 16,
338
343
  className: "mr-2"
339
- }), I("projectDetail.workspaceActivity", "Workspace Activity")]
344
+ }), n(L, "projectDetail.workspaceActivity", "Workspace Activity")]
340
345
  })]
341
346
  }) })] }),
342
- /* @__PURE__ */ v(le, {
343
- open: be,
344
- onOpenChange: U,
345
- children: /* @__PURE__ */ y(fe, { children: [/* @__PURE__ */ y(he, { children: [/* @__PURE__ */ v(ge, { children: I("projectDetail.deleteDialogTitle", "Delete Project") }), /* @__PURE__ */ v(pe, { children: I("projectDetail.deleteConfirmPrefix", "Are you sure you want to delete \"") + H.name + I("projectDetail.deleteConfirmSuffix", "\"? This action cannot be undone and all project data will be permanently removed.") })] }), /* @__PURE__ */ y(me, { children: [/* @__PURE__ */ v(de, {
346
- disabled: J,
347
- children: I("projectDetail.cancel", "Cancel")
348
- }), /* @__PURE__ */ v(ue, {
347
+ /* @__PURE__ */ y(le, {
348
+ open: ye,
349
+ onOpenChange: W,
350
+ children: /* @__PURE__ */ b(fe, { children: [/* @__PURE__ */ b(he, { children: [/* @__PURE__ */ y(ge, { children: n(L, "projectDetail.deleteDialogTitle", "Delete Project") }), /* @__PURE__ */ y(pe, { children: n(L, "projectDetail.deleteConfirmPrefix", "Are you sure you want to delete \"") + U.name + n(L, "projectDetail.deleteConfirmSuffix", "\"? This action cannot be undone and all project data will be permanently removed.") })] }), /* @__PURE__ */ b(me, { children: [/* @__PURE__ */ y(de, {
351
+ disabled: Y,
352
+ children: n(L, "projectDetail.cancel", "Cancel")
353
+ }), /* @__PURE__ */ y(ue, {
349
354
  onClick: Me,
350
- disabled: J,
355
+ disabled: Y,
351
356
  className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
352
- children: J ? I("projectDetail.deleting", "Deleting...") : I("projectDetail.deleteProject", "Delete Project")
357
+ children: Y ? n(L, "projectDetail.deleting", "Deleting...") : n(L, "projectDetail.deleteProject", "Delete Project")
353
358
  })] })] })
354
359
  })
355
360
  ]
356
361
  });
357
362
  }
358
363
  //#endregion
359
- export { F as ProjectDetailPage };
364
+ export { L as ProjectDetailPage };
360
365
 
361
366
  //# sourceMappingURL=ProjectDetailPage.js.map