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