@burdenoff/microfe-workspaces 2026.510.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -0
- package/dist/WorkspacesRoot.d.ts +35 -0
- package/dist/WorkspacesRoot.d.ts.map +1 -0
- package/dist/WorkspacesRoot.js +71 -0
- package/dist/WorkspacesRoot.js.map +1 -0
- package/dist/WorkspacesRoutes.d.ts +10 -0
- package/dist/WorkspacesRoutes.d.ts.map +1 -0
- package/dist/WorkspacesRoutes.js +111 -0
- package/dist/WorkspacesRoutes.js.map +1 -0
- package/dist/components/CreateProjectDialog.d.ts +6 -0
- package/dist/components/CreateProjectDialog.d.ts.map +1 -0
- package/dist/components/CreateProjectDialog.js +115 -0
- package/dist/components/CreateProjectDialog.js.map +1 -0
- package/dist/components/CreateWorkspaceDialog.d.ts +2 -0
- package/dist/components/CreateWorkspaceDialog.d.ts.map +1 -0
- package/dist/components/CreateWorkspaceDialog.js +172 -0
- package/dist/components/CreateWorkspaceDialog.js.map +1 -0
- package/dist/components/InviteMemberDialog.d.ts +7 -0
- package/dist/components/InviteMemberDialog.d.ts.map +1 -0
- package/dist/components/InviteMemberDialog.js +148 -0
- package/dist/components/InviteMemberDialog.js.map +1 -0
- package/dist/components/MemberListItem.d.ts +11 -0
- package/dist/components/MemberListItem.d.ts.map +1 -0
- package/dist/components/MemberListItem.js +118 -0
- package/dist/components/MemberListItem.js.map +1 -0
- package/dist/components/ProjectCard.d.ts +13 -0
- package/dist/components/ProjectCard.d.ts.map +1 -0
- package/dist/components/ProjectCard.js +150 -0
- package/dist/components/ProjectCard.js.map +1 -0
- package/dist/components/WorkspaceCard.d.ts +8 -0
- package/dist/components/WorkspaceCard.d.ts.map +1 -0
- package/dist/components/WorkspaceCard.js +79 -0
- package/dist/components/WorkspaceCard.js.map +1 -0
- package/dist/components/WorkspacesErrorBoundary.d.ts +27 -0
- package/dist/components/WorkspacesErrorBoundary.d.ts.map +1 -0
- package/dist/components/WorkspacesErrorBoundary.js +136 -0
- package/dist/components/WorkspacesErrorBoundary.js.map +1 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/constants/permissions.d.ts +33 -0
- package/dist/constants/permissions.d.ts.map +1 -0
- package/dist/constants/permissions.js +31 -0
- package/dist/constants/permissions.js.map +1 -0
- package/dist/generated/global-operations.d.ts +279 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-operations.js +103 -0
- package/dist/generated/global-operations.js.map +1 -0
- package/dist/generated/global-types.d.ts +20714 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2209 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-operations.js +576 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +54990 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/useMemberMutations.d.ts +61 -0
- package/dist/hooks/useMemberMutations.d.ts.map +1 -0
- package/dist/hooks/useMemberMutations.js +263 -0
- package/dist/hooks/useMemberMutations.js.map +1 -0
- package/dist/hooks/useProjectMutations.d.ts +26 -0
- package/dist/hooks/useProjectMutations.d.ts.map +1 -0
- package/dist/hooks/useProjectMutations.js +127 -0
- package/dist/hooks/useProjectMutations.js.map +1 -0
- package/dist/hooks/useProjects.d.ts +16 -0
- package/dist/hooks/useProjects.d.ts.map +1 -0
- package/dist/hooks/useProjects.js +103 -0
- package/dist/hooks/useProjects.js.map +1 -0
- package/dist/hooks/useScopedNavigation.d.ts +4 -0
- package/dist/hooks/useScopedNavigation.d.ts.map +1 -0
- package/dist/hooks/useScopedNavigation.js +11 -0
- package/dist/hooks/useScopedNavigation.js.map +1 -0
- package/dist/hooks/useTenants.d.ts +13 -0
- package/dist/hooks/useTenants.d.ts.map +1 -0
- package/dist/hooks/useTenants.js +47 -0
- package/dist/hooks/useTenants.js.map +1 -0
- package/dist/hooks/useWorkspaceActivity.d.ts +12 -0
- package/dist/hooks/useWorkspaceActivity.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceActivity.js +31 -0
- package/dist/hooks/useWorkspaceActivity.js.map +1 -0
- package/dist/hooks/useWorkspaceMembers.d.ts +24 -0
- package/dist/hooks/useWorkspaceMembers.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceMembers.js +130 -0
- package/dist/hooks/useWorkspaceMembers.js.map +1 -0
- package/dist/hooks/useWorkspaceMutations.d.ts +36 -0
- package/dist/hooks/useWorkspaceMutations.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceMutations.js +119 -0
- package/dist/hooks/useWorkspaceMutations.js.map +1 -0
- package/dist/hooks/useWorkspacePermissions.d.ts +29 -0
- package/dist/hooks/useWorkspacePermissions.d.ts.map +1 -0
- package/dist/hooks/useWorkspacePermissions.js +33 -0
- package/dist/hooks/useWorkspacePermissions.js.map +1 -0
- package/dist/hooks/useWorkspaceRoles.d.ts +8 -0
- package/dist/hooks/useWorkspaceRoles.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceRoles.js +31 -0
- package/dist/hooks/useWorkspaceRoles.js.map +1 -0
- package/dist/hooks/useWorkspaces.d.ts +21 -0
- package/dist/hooks/useWorkspaces.d.ts.map +1 -0
- package/dist/hooks/useWorkspaces.js +75 -0
- package/dist/hooks/useWorkspaces.js.map +1 -0
- package/dist/hooks/useWorkspacesEventEmitter.d.ts +14 -0
- package/dist/hooks/useWorkspacesEventEmitter.d.ts.map +1 -0
- package/dist/hooks/useWorkspacesEventEmitter.js +14 -0
- package/dist/hooks/useWorkspacesEventEmitter.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/pages/ActivityListPage.d.ts +2 -0
- package/dist/pages/ActivityListPage.d.ts.map +1 -0
- package/dist/pages/ActivityListPage.js +119 -0
- package/dist/pages/ActivityListPage.js.map +1 -0
- package/dist/pages/CreateWorkspacePage.d.ts +2 -0
- package/dist/pages/CreateWorkspacePage.d.ts.map +1 -0
- package/dist/pages/CreateWorkspacePage.js +264 -0
- package/dist/pages/CreateWorkspacePage.js.map +1 -0
- package/dist/pages/InviteAcceptancePage.d.ts +6 -0
- package/dist/pages/InviteAcceptancePage.d.ts.map +1 -0
- package/dist/pages/InviteAcceptancePage.js +495 -0
- package/dist/pages/InviteAcceptancePage.js.map +1 -0
- package/dist/pages/MembersListPage.d.ts +2 -0
- package/dist/pages/MembersListPage.d.ts.map +1 -0
- package/dist/pages/MembersListPage.js +420 -0
- package/dist/pages/MembersListPage.js.map +1 -0
- package/dist/pages/ProjectDetailPage.d.ts +2 -0
- package/dist/pages/ProjectDetailPage.d.ts.map +1 -0
- package/dist/pages/ProjectDetailPage.js +361 -0
- package/dist/pages/ProjectDetailPage.js.map +1 -0
- package/dist/pages/ProjectsListPage.d.ts +2 -0
- package/dist/pages/ProjectsListPage.d.ts.map +1 -0
- package/dist/pages/ProjectsListPage.js +398 -0
- package/dist/pages/ProjectsListPage.js.map +1 -0
- package/dist/pages/WorkspaceDetailPage.d.ts +2 -0
- package/dist/pages/WorkspaceDetailPage.d.ts.map +1 -0
- package/dist/pages/WorkspaceDetailPage.js +230 -0
- package/dist/pages/WorkspaceDetailPage.js.map +1 -0
- package/dist/pages/WorkspaceSettingsPage.d.ts +2 -0
- package/dist/pages/WorkspaceSettingsPage.d.ts.map +1 -0
- package/dist/pages/WorkspaceSettingsPage.js +157 -0
- package/dist/pages/WorkspaceSettingsPage.js.map +1 -0
- package/dist/pages/WorkspacesListPage.d.ts +2 -0
- package/dist/pages/WorkspacesListPage.d.ts.map +1 -0
- package/dist/pages/WorkspacesListPage.js +186 -0
- package/dist/pages/WorkspacesListPage.js.map +1 -0
- package/dist/pages/dashboard/DashboardCustomizer.d.ts +12 -0
- package/dist/pages/dashboard/DashboardCustomizer.d.ts.map +1 -0
- package/dist/pages/dashboard/DashboardCustomizer.js +136 -0
- package/dist/pages/dashboard/DashboardCustomizer.js.map +1 -0
- package/dist/pages/dashboard/DashboardGrid.d.ts +8 -0
- package/dist/pages/dashboard/DashboardGrid.d.ts.map +1 -0
- package/dist/pages/dashboard/DashboardGrid.js +58 -0
- package/dist/pages/dashboard/DashboardGrid.js.map +1 -0
- package/dist/pages/dashboard/DashboardPage.d.ts +14 -0
- package/dist/pages/dashboard/DashboardPage.d.ts.map +1 -0
- package/dist/pages/dashboard/DashboardPage.js +136 -0
- package/dist/pages/dashboard/DashboardPage.js.map +1 -0
- package/dist/pages/dashboard/WidgetWrapper.d.ts +17 -0
- package/dist/pages/dashboard/WidgetWrapper.d.ts.map +1 -0
- package/dist/pages/dashboard/WidgetWrapper.js +72 -0
- package/dist/pages/dashboard/WidgetWrapper.js.map +1 -0
- package/dist/pages/dashboard/config.d.ts +9 -0
- package/dist/pages/dashboard/config.d.ts.map +1 -0
- package/dist/pages/dashboard/config.js +214 -0
- package/dist/pages/dashboard/config.js.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardData.d.ts +9 -0
- package/dist/pages/dashboard/hooks/useDashboardData.d.ts.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardData.js +118 -0
- package/dist/pages/dashboard/hooks/useDashboardData.js.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts +4 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.js +32 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.js.map +1 -0
- package/dist/pages/dashboard/types.d.ts +145 -0
- package/dist/pages/dashboard/types.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.js +59 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/MembersWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/MembersWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/MembersWidget.js +65 -0
- package/dist/pages/dashboard/widgets/MembersWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.js +91 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.js +80 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js +81 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/StorageWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/StorageWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/StorageWidget.js +69 -0
- package/dist/pages/dashboard/widgets/StorageWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.js +59 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.js +61 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/TipsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/TipsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/TipsWidget.js +67 -0
- package/dist/pages/dashboard/widgets/TipsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +83 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.js +71 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js +97 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js +67 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +1 -0
- package/dist/providers/WorkspacesProvider.d.ts +13 -0
- package/dist/providers/WorkspacesProvider.d.ts.map +1 -0
- package/dist/providers/WorkspacesProvider.js +24 -0
- package/dist/providers/WorkspacesProvider.js.map +1 -0
- package/dist/store/workspacesStore.d.ts +82 -0
- package/dist/store/workspacesStore.d.ts.map +1 -0
- package/dist/store/workspacesStore.js +92 -0
- package/dist/store/workspacesStore.js.map +1 -0
- package/dist/types/index.d.ts +280 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/formatters.d.ts +60 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +61 -0
- package/dist/utils/formatters.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/dist/utils/projectTags.d.ts +6 -0
- package/dist/utils/projectTags.d.ts.map +1 -0
- package/dist/utils/projectTags.js +49 -0
- package/dist/utils/projectTags.js.map +1 -0
- package/dist/utils/slug.d.ts +13 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +8 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/utils/tokenHelpers.d.ts +114 -0
- package/dist/utils/tokenHelpers.d.ts.map +1 -0
- package/dist/utils/tokenHelpers.js +80 -0
- package/dist/utils/tokenHelpers.js.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { useWorkspacesContext as e } from "../providers/WorkspacesProvider.js";
|
|
2
|
+
import { useWorkspace as t } from "../hooks/useWorkspaces.js";
|
|
3
|
+
import { useScopedNavigation as n } from "../hooks/useScopedNavigation.js";
|
|
4
|
+
import { useWorkspaceMembers as r } from "../hooks/useWorkspaceMembers.js";
|
|
5
|
+
import { useProjects as i } from "../hooks/useProjects.js";
|
|
6
|
+
import { useWorkspaceActivity as a } from "../hooks/useWorkspaceActivity.js";
|
|
7
|
+
import { useWorkspacePermissions as o } from "../hooks/useWorkspacePermissions.js";
|
|
8
|
+
import { useCallback as s } from "react";
|
|
9
|
+
import { Activity as c, ArrowLeft as l, ChevronRight as u, FolderKanban as d, Settings as f, Users as p } from "lucide-react";
|
|
10
|
+
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
11
|
+
import { Badge as _, Button as v, Card as y, CardContent as b, CardHeader as x, CardTitle as S, Skeleton as C } from "@burdenoff/fe-libs/ui";
|
|
12
|
+
import { useNavigate as w, useParams as T } from "react-router-dom";
|
|
13
|
+
import { useI18n as E } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
14
|
+
//#region src/pages/WorkspaceDetailPage.tsx
|
|
15
|
+
function D() {
|
|
16
|
+
let { t: D } = E(), O = s((e, t) => {
|
|
17
|
+
let n = D(e);
|
|
18
|
+
return n === e ? t : n;
|
|
19
|
+
}, [D]), { workspaceId: k } = T(), A = w(), { basePath: j = "/" } = e(), { withCurrentSearch: M } = n(), { data: N, isLoading: P, error: F } = t(k || ""), { data: I } = i({ workspaceId: k }, { limit: 1 }, k), { data: L } = r(k || "", { limit: 1 }), { data: R } = a(k), { canViewWorkspace: z, canUpdateWorkspace: B, isLoading: V } = o();
|
|
20
|
+
if (V) return /* @__PURE__ */ g("div", {
|
|
21
|
+
className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
|
|
22
|
+
children: [/* @__PURE__ */ h(C, { className: "h-10 w-1/3" }), /* @__PURE__ */ g("div", {
|
|
23
|
+
className: "grid grid-cols-1 md:grid-cols-3 gap-4",
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ h(C, { className: "h-32" }),
|
|
26
|
+
/* @__PURE__ */ h(C, { className: "h-32" }),
|
|
27
|
+
/* @__PURE__ */ h(C, { className: "h-32" })
|
|
28
|
+
]
|
|
29
|
+
})]
|
|
30
|
+
});
|
|
31
|
+
if (!z) return /* @__PURE__ */ h("div", {
|
|
32
|
+
className: "flex items-center justify-center min-h-[400px]",
|
|
33
|
+
children: /* @__PURE__ */ g("div", {
|
|
34
|
+
className: "text-center space-y-2",
|
|
35
|
+
children: [/* @__PURE__ */ h("h2", {
|
|
36
|
+
className: "text-lg font-semibold",
|
|
37
|
+
children: O("workspaceDetail.accessDenied", "Access Denied")
|
|
38
|
+
}), /* @__PURE__ */ h("p", {
|
|
39
|
+
className: "text-sm text-muted-foreground",
|
|
40
|
+
children: O("workspaceDetail.accessDeniedDesc", "You don't have permission to view this workspace.")
|
|
41
|
+
})]
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
if (P) return /* @__PURE__ */ g("div", {
|
|
45
|
+
className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
|
|
46
|
+
children: [/* @__PURE__ */ h(C, { className: "h-10 w-1/3" }), /* @__PURE__ */ g("div", {
|
|
47
|
+
className: "grid grid-cols-1 md:grid-cols-3 gap-4",
|
|
48
|
+
children: [
|
|
49
|
+
/* @__PURE__ */ h(C, { className: "h-32" }),
|
|
50
|
+
/* @__PURE__ */ h(C, { className: "h-32" }),
|
|
51
|
+
/* @__PURE__ */ h(C, { className: "h-32" })
|
|
52
|
+
]
|
|
53
|
+
})]
|
|
54
|
+
});
|
|
55
|
+
if (F || !N) return /* @__PURE__ */ g("div", {
|
|
56
|
+
className: "space-y-4 p-6",
|
|
57
|
+
children: [/* @__PURE__ */ g(v, {
|
|
58
|
+
variant: "ghost",
|
|
59
|
+
onClick: () => A(M(`${j}/list`)),
|
|
60
|
+
className: "gap-2",
|
|
61
|
+
children: [/* @__PURE__ */ h(l, { size: 20 }), O("workspaceDetail.backToWorkspaces", "Back to Workspaces")]
|
|
62
|
+
}), /* @__PURE__ */ h("div", {
|
|
63
|
+
className: "text-center py-12",
|
|
64
|
+
children: /* @__PURE__ */ h("p", {
|
|
65
|
+
className: "text-destructive",
|
|
66
|
+
children: O("workspaceDetail.notFound", "Workspace not found")
|
|
67
|
+
})
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
let H = (e, t) => {
|
|
71
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), A(t));
|
|
72
|
+
};
|
|
73
|
+
return /* @__PURE__ */ g("div", {
|
|
74
|
+
className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ g("div", {
|
|
77
|
+
className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",
|
|
78
|
+
children: [/* @__PURE__ */ g("div", { children: [
|
|
79
|
+
/* @__PURE__ */ g(v, {
|
|
80
|
+
variant: "ghost",
|
|
81
|
+
onClick: () => A(M(`${j}/list`)),
|
|
82
|
+
className: "gap-2 mb-2 -ml-2",
|
|
83
|
+
children: [/* @__PURE__ */ h(l, { size: 20 }), O("workspaceDetail.backToWorkspaces", "Back to Workspaces")]
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ h("h1", {
|
|
86
|
+
className: "text-2xl sm:text-3xl font-bold",
|
|
87
|
+
children: N.name
|
|
88
|
+
}),
|
|
89
|
+
/* @__PURE__ */ g("div", {
|
|
90
|
+
className: "flex items-center gap-2 mt-2",
|
|
91
|
+
children: [/* @__PURE__ */ h(_, {
|
|
92
|
+
variant: "outline",
|
|
93
|
+
children: N.type
|
|
94
|
+
}), /* @__PURE__ */ h(_, { children: N.status })]
|
|
95
|
+
})
|
|
96
|
+
] }), B && /* @__PURE__ */ g(v, {
|
|
97
|
+
onClick: () => A(M(`${j}/${k}/settings`)),
|
|
98
|
+
className: "gap-2",
|
|
99
|
+
children: [/* @__PURE__ */ h(f, { size: 20 }), O("workspaceDetail.settings", "Settings")]
|
|
100
|
+
})]
|
|
101
|
+
}),
|
|
102
|
+
/* @__PURE__ */ g("div", {
|
|
103
|
+
className: "grid grid-cols-1 md:grid-cols-3 gap-4",
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ g(y, {
|
|
106
|
+
className: "cursor-pointer hover:border-primary/50 hover:shadow-md transition-all duration-200",
|
|
107
|
+
onClick: () => A(M(`${j}/${k}/projects`)),
|
|
108
|
+
role: "button",
|
|
109
|
+
tabIndex: 0,
|
|
110
|
+
onKeyDown: (e) => H(e, M(`${j}/${k}/projects`)),
|
|
111
|
+
children: [/* @__PURE__ */ g(x, {
|
|
112
|
+
className: "flex flex-row items-center justify-between pb-2",
|
|
113
|
+
children: [/* @__PURE__ */ g(S, {
|
|
114
|
+
className: "flex items-center gap-2",
|
|
115
|
+
children: [/* @__PURE__ */ h(d, {
|
|
116
|
+
size: 20,
|
|
117
|
+
className: "text-muted-foreground"
|
|
118
|
+
}), O("workspaceDetail.projects", "Projects")]
|
|
119
|
+
}), /* @__PURE__ */ h(u, {
|
|
120
|
+
size: 20,
|
|
121
|
+
className: "text-muted-foreground"
|
|
122
|
+
})]
|
|
123
|
+
}), /* @__PURE__ */ g(b, { children: [/* @__PURE__ */ h("p", {
|
|
124
|
+
className: "text-3xl font-bold",
|
|
125
|
+
children: I?.total ?? N.projectCount ?? 0
|
|
126
|
+
}), /* @__PURE__ */ h("p", {
|
|
127
|
+
className: "text-sm text-muted-foreground",
|
|
128
|
+
children: O("workspaceDetail.projectsDesc", "Projects in this workspace")
|
|
129
|
+
})] })]
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ g(y, {
|
|
132
|
+
className: "cursor-pointer hover:border-primary/50 hover:shadow-md transition-all duration-200",
|
|
133
|
+
onClick: () => A(M(`${j}/${k}/members`)),
|
|
134
|
+
role: "button",
|
|
135
|
+
tabIndex: 0,
|
|
136
|
+
onKeyDown: (e) => H(e, M(`${j}/${k}/members`)),
|
|
137
|
+
children: [/* @__PURE__ */ g(x, {
|
|
138
|
+
className: "flex flex-row items-center justify-between pb-2",
|
|
139
|
+
children: [/* @__PURE__ */ g(S, {
|
|
140
|
+
className: "flex items-center gap-2",
|
|
141
|
+
children: [/* @__PURE__ */ h(p, {
|
|
142
|
+
size: 20,
|
|
143
|
+
className: "text-muted-foreground"
|
|
144
|
+
}), O("workspaceDetail.members", "Members")]
|
|
145
|
+
}), /* @__PURE__ */ h(u, {
|
|
146
|
+
size: 20,
|
|
147
|
+
className: "text-muted-foreground"
|
|
148
|
+
})]
|
|
149
|
+
}), /* @__PURE__ */ g(b, { children: [/* @__PURE__ */ h("p", {
|
|
150
|
+
className: "text-3xl font-bold",
|
|
151
|
+
children: L?.total ?? N.memberCount ?? 0
|
|
152
|
+
}), /* @__PURE__ */ h("p", {
|
|
153
|
+
className: "text-sm text-muted-foreground",
|
|
154
|
+
children: O("workspaceDetail.membersDesc", "Workspace members")
|
|
155
|
+
})] })]
|
|
156
|
+
}),
|
|
157
|
+
/* @__PURE__ */ g(y, {
|
|
158
|
+
className: "cursor-pointer hover:border-primary/50 hover:shadow-md transition-all duration-200",
|
|
159
|
+
onClick: () => A(M(`${j}/${k}/activity`)),
|
|
160
|
+
role: "button",
|
|
161
|
+
tabIndex: 0,
|
|
162
|
+
onKeyDown: (e) => H(e, M(`${j}/${k}/activity`)),
|
|
163
|
+
children: [/* @__PURE__ */ g(x, {
|
|
164
|
+
className: "flex flex-row items-center justify-between pb-2",
|
|
165
|
+
children: [/* @__PURE__ */ g(S, {
|
|
166
|
+
className: "flex items-center gap-2",
|
|
167
|
+
children: [/* @__PURE__ */ h(c, {
|
|
168
|
+
size: 20,
|
|
169
|
+
className: "text-muted-foreground"
|
|
170
|
+
}), O("workspaceDetail.activity", "Activity")]
|
|
171
|
+
}), /* @__PURE__ */ h(u, {
|
|
172
|
+
size: 20,
|
|
173
|
+
className: "text-muted-foreground"
|
|
174
|
+
})]
|
|
175
|
+
}), /* @__PURE__ */ g(b, { children: [/* @__PURE__ */ h("p", {
|
|
176
|
+
className: "text-3xl font-bold",
|
|
177
|
+
children: R?.length ?? 0
|
|
178
|
+
}), /* @__PURE__ */ h("p", {
|
|
179
|
+
className: "text-sm text-muted-foreground",
|
|
180
|
+
children: O("workspaceDetail.activityDesc", "Recent activity items")
|
|
181
|
+
})] })]
|
|
182
|
+
})
|
|
183
|
+
]
|
|
184
|
+
}),
|
|
185
|
+
/* @__PURE__ */ g(y, { children: [/* @__PURE__ */ h(x, { children: /* @__PURE__ */ h(S, { children: O("workspaceDetail.workspaceInformation", "Workspace Information") }) }), /* @__PURE__ */ h(b, {
|
|
186
|
+
className: "space-y-2",
|
|
187
|
+
children: /* @__PURE__ */ g("div", {
|
|
188
|
+
className: "grid grid-cols-2 gap-2 text-sm",
|
|
189
|
+
children: [
|
|
190
|
+
/* @__PURE__ */ h("span", {
|
|
191
|
+
className: "text-muted-foreground",
|
|
192
|
+
children: O("workspaceDetail.id", "ID:")
|
|
193
|
+
}),
|
|
194
|
+
/* @__PURE__ */ h("span", {
|
|
195
|
+
className: "font-mono text-xs",
|
|
196
|
+
children: N.id
|
|
197
|
+
}),
|
|
198
|
+
N.domain && /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h("span", {
|
|
199
|
+
className: "text-muted-foreground",
|
|
200
|
+
children: O("workspaceDetail.domain", "Domain:")
|
|
201
|
+
}), /* @__PURE__ */ h("span", { children: N.domain })] }),
|
|
202
|
+
N.contactEmail && /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h("span", {
|
|
203
|
+
className: "text-muted-foreground",
|
|
204
|
+
children: O("workspaceDetail.contactEmail", "Contact Email:")
|
|
205
|
+
}), /* @__PURE__ */ h("span", { children: N.contactEmail })] }),
|
|
206
|
+
N.website && /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h("span", {
|
|
207
|
+
className: "text-muted-foreground",
|
|
208
|
+
children: O("workspaceDetail.website", "Website:")
|
|
209
|
+
}), /* @__PURE__ */ h("a", {
|
|
210
|
+
href: N.website,
|
|
211
|
+
target: "_blank",
|
|
212
|
+
rel: "noopener noreferrer",
|
|
213
|
+
className: "text-primary hover:underline transition-colors duration-200",
|
|
214
|
+
children: N.website
|
|
215
|
+
})] }),
|
|
216
|
+
/* @__PURE__ */ h("span", {
|
|
217
|
+
className: "text-muted-foreground",
|
|
218
|
+
children: O("workspaceDetail.created", "Created:")
|
|
219
|
+
}),
|
|
220
|
+
/* @__PURE__ */ h("span", { children: new Date(N.createdAt).toLocaleDateString() })
|
|
221
|
+
]
|
|
222
|
+
})
|
|
223
|
+
})] })
|
|
224
|
+
]
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
//#endregion
|
|
228
|
+
export { D as WorkspaceDetailPage };
|
|
229
|
+
|
|
230
|
+
//# sourceMappingURL=WorkspaceDetailPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceDetailPage.js","names":[],"sources":["../../src/pages/WorkspaceDetailPage.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { Settings, ArrowLeft, FolderKanban, Users, Activity, ChevronRight } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n Button,\n Card,\n CardHeader,\n CardTitle,\n CardContent,\n Badge,\n Skeleton,\n} from '@burdenoff/fe-libs/ui';\nimport { useWorkspace } from '../hooks/useWorkspaces';\nimport { useProjects } from '../hooks/useProjects';\nimport { useWorkspaceMembers } from '../hooks/useWorkspaceMembers';\nimport { useWorkspaceActivity } from '../hooks/useWorkspaceActivity';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport { useScopedNavigation } from '../hooks/useScopedNavigation';\nimport { useWorkspacePermissions } from '../hooks/useWorkspacePermissions';\n\nexport function WorkspaceDetailPage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n const { workspaceId } = useParams<{ workspaceId: string }>();\n const navigate = useNavigate();\n const { basePath = '/' } = useWorkspacesContext();\n const { withCurrentSearch } = useScopedNavigation();\n const { data: workspace, isLoading, error } = useWorkspace(workspaceId || '');\n const { data: projects } = useProjects({ workspaceId }, { limit: 1 }, workspaceId);\n const { data: members } = useWorkspaceMembers(workspaceId || '', { limit: 1 });\n const { data: activities } = useWorkspaceActivity(workspaceId);\n const {\n canViewWorkspace,\n canUpdateWorkspace,\n isLoading: permissionsLoading,\n } = useWorkspacePermissions();\n\n if (permissionsLoading) {\n return (\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6\">\n <Skeleton className=\"h-10 w-1/3\" />\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <Skeleton className=\"h-32\" />\n <Skeleton className=\"h-32\" />\n <Skeleton className=\"h-32\" />\n </div>\n </div>\n );\n }\n\n if (!canViewWorkspace) {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">\n {tr('workspaceDetail.accessDenied', 'Access Denied')}\n </h2>\n <p className=\"text-sm text-muted-foreground\">\n {tr(\n 'workspaceDetail.accessDeniedDesc',\n \"You don't have permission to view this workspace.\"\n )}\n </p>\n </div>\n </div>\n );\n }\n\n if (isLoading) {\n return (\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6\">\n <Skeleton className=\"h-10 w-1/3\" />\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <Skeleton className=\"h-32\" />\n <Skeleton className=\"h-32\" />\n <Skeleton className=\"h-32\" />\n </div>\n </div>\n );\n }\n\n if (error || !workspace) {\n return (\n <div className=\"space-y-4 p-6\">\n <Button\n variant=\"ghost\"\n onClick={() => navigate(withCurrentSearch(`${basePath}/list`))}\n className=\"gap-2\"\n >\n <ArrowLeft size={20} />\n {tr('workspaceDetail.backToWorkspaces', 'Back to Workspaces')}\n </Button>\n <div className=\"text-center py-12\">\n <p className=\"text-destructive\">\n {tr('workspaceDetail.notFound', 'Workspace not found')}\n </p>\n </div>\n </div>\n );\n }\n\n const handleCardKeyDown = (e: React.KeyboardEvent, path: string) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n navigate(path);\n }\n };\n\n return (\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6\">\n {/* Header */}\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3\">\n <div>\n <Button\n variant=\"ghost\"\n onClick={() => navigate(withCurrentSearch(`${basePath}/list`))}\n className=\"gap-2 mb-2 -ml-2\"\n >\n <ArrowLeft size={20} />\n {tr('workspaceDetail.backToWorkspaces', 'Back to Workspaces')}\n </Button>\n <h1 className=\"text-2xl sm:text-3xl font-bold\">{workspace.name}</h1>\n <div className=\"flex items-center gap-2 mt-2\">\n <Badge variant=\"outline\">{workspace.type}</Badge>\n <Badge>{workspace.status}</Badge>\n </div>\n </div>\n {canUpdateWorkspace && (\n <Button\n onClick={() => navigate(withCurrentSearch(`${basePath}/${workspaceId}/settings`))}\n className=\"gap-2\"\n >\n <Settings size={20} />\n {tr('workspaceDetail.settings', 'Settings')}\n </Button>\n )}\n </div>\n\n {/* Stats Cards */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <Card\n className=\"cursor-pointer hover:border-primary/50 hover:shadow-md transition-all duration-200\"\n onClick={() => navigate(withCurrentSearch(`${basePath}/${workspaceId}/projects`))}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) =>\n handleCardKeyDown(e, withCurrentSearch(`${basePath}/${workspaceId}/projects`))\n }\n >\n <CardHeader className=\"flex flex-row items-center justify-between pb-2\">\n <CardTitle className=\"flex items-center gap-2\">\n <FolderKanban size={20} className=\"text-muted-foreground\" />\n {tr('workspaceDetail.projects', 'Projects')}\n </CardTitle>\n <ChevronRight size={20} className=\"text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <p className=\"text-3xl font-bold\">{projects?.total ?? workspace.projectCount ?? 0}</p>\n <p className=\"text-sm text-muted-foreground\">\n {tr('workspaceDetail.projectsDesc', 'Projects in this workspace')}\n </p>\n </CardContent>\n </Card>\n\n <Card\n className=\"cursor-pointer hover:border-primary/50 hover:shadow-md transition-all duration-200\"\n onClick={() => navigate(withCurrentSearch(`${basePath}/${workspaceId}/members`))}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) =>\n handleCardKeyDown(e, withCurrentSearch(`${basePath}/${workspaceId}/members`))\n }\n >\n <CardHeader className=\"flex flex-row items-center justify-between pb-2\">\n <CardTitle className=\"flex items-center gap-2\">\n <Users size={20} className=\"text-muted-foreground\" />\n {tr('workspaceDetail.members', 'Members')}\n </CardTitle>\n <ChevronRight size={20} className=\"text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <p className=\"text-3xl font-bold\">{members?.total ?? workspace.memberCount ?? 0}</p>\n <p className=\"text-sm text-muted-foreground\">\n {tr('workspaceDetail.membersDesc', 'Workspace members')}\n </p>\n </CardContent>\n </Card>\n\n <Card\n className=\"cursor-pointer hover:border-primary/50 hover:shadow-md transition-all duration-200\"\n onClick={() => navigate(withCurrentSearch(`${basePath}/${workspaceId}/activity`))}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) =>\n handleCardKeyDown(e, withCurrentSearch(`${basePath}/${workspaceId}/activity`))\n }\n >\n <CardHeader className=\"flex flex-row items-center justify-between pb-2\">\n <CardTitle className=\"flex items-center gap-2\">\n <Activity size={20} className=\"text-muted-foreground\" />\n {tr('workspaceDetail.activity', 'Activity')}\n </CardTitle>\n <ChevronRight size={20} className=\"text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <p className=\"text-3xl font-bold\">{activities?.length ?? 0}</p>\n <p className=\"text-sm text-muted-foreground\">\n {tr('workspaceDetail.activityDesc', 'Recent activity items')}\n </p>\n </CardContent>\n </Card>\n </div>\n\n {/* Workspace Info */}\n <Card>\n <CardHeader>\n <CardTitle>\n {tr('workspaceDetail.workspaceInformation', 'Workspace Information')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"grid grid-cols-2 gap-2 text-sm\">\n <span className=\"text-muted-foreground\">{tr('workspaceDetail.id', 'ID:')}</span>\n <span className=\"font-mono text-xs\">{workspace.id}</span>\n\n {workspace.domain && (\n <>\n <span className=\"text-muted-foreground\">\n {tr('workspaceDetail.domain', 'Domain:')}\n </span>\n <span>{workspace.domain}</span>\n </>\n )}\n\n {workspace.contactEmail && (\n <>\n <span className=\"text-muted-foreground\">\n {tr('workspaceDetail.contactEmail', 'Contact Email:')}\n </span>\n <span>{workspace.contactEmail}</span>\n </>\n )}\n\n {workspace.website && (\n <>\n <span className=\"text-muted-foreground\">\n {tr('workspaceDetail.website', 'Website:')}\n </span>\n <a\n href={workspace.website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:underline transition-colors duration-200\"\n >\n {workspace.website}\n </a>\n </>\n )}\n\n <span className=\"text-muted-foreground\">\n {tr('workspaceDetail.created', 'Created:')}\n </span>\n <span>{new Date(workspace.createdAt).toLocaleDateString()}</span>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceSettingsPage.d.ts","sourceRoot":"","sources":["../../src/pages/WorkspaceSettingsPage.tsx"],"names":[],"mappings":"AA8BA,wBAAgB,qBAAqB,4CAoMpC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { useWorkspacesContext as e } from "../providers/WorkspacesProvider.js";
|
|
2
|
+
import { useWorkspace as t } from "../hooks/useWorkspaces.js";
|
|
3
|
+
import { WORKSPACE_PERMISSIONS as n } from "../constants/permissions.js";
|
|
4
|
+
import { useUpdateWorkspace as r } from "../hooks/useWorkspaceMutations.js";
|
|
5
|
+
import { useCallback as i } from "react";
|
|
6
|
+
import { ArrowLeft as a, Save as o } from "lucide-react";
|
|
7
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
|
+
import { Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p } from "@burdenoff/fe-libs/ui";
|
|
9
|
+
import { useNavigate as m, useParams as h } from "react-router-dom";
|
|
10
|
+
import { AccessDenied as g, PermissionGate as _ } from "@burdenoff/fe-libs/shared/components";
|
|
11
|
+
import { useI18n as v } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
12
|
+
import { Form as y, FormControl as b, FormField as x, FormItem as S, FormLabel as C, FormMessage as w, Input as T, z as E } from "@burdenoff/fe-libs/form";
|
|
13
|
+
//#region src/pages/WorkspaceSettingsPage.tsx
|
|
14
|
+
var D = E.object({
|
|
15
|
+
name: E.string().min(2).max(100),
|
|
16
|
+
contactEmail: E.string().email().optional().or(E.literal("")),
|
|
17
|
+
domain: E.string().optional(),
|
|
18
|
+
website: E.string().url().optional().or(E.literal(""))
|
|
19
|
+
});
|
|
20
|
+
function O() {
|
|
21
|
+
let { t: E } = v(), O = i((e, t) => {
|
|
22
|
+
let n = E(e);
|
|
23
|
+
return n === e ? t : n;
|
|
24
|
+
}, [E]), { workspaceId: k } = h(), A = m(), { basePath: j = "/" } = e(), { data: M, isLoading: N } = t(k || ""), { mutate: P, isPending: F } = r();
|
|
25
|
+
return N ? /* @__PURE__ */ s("div", {
|
|
26
|
+
className: "p-6",
|
|
27
|
+
children: O("workspaceSettings.loading", "Loading...")
|
|
28
|
+
}) : M ? /* @__PURE__ */ s(_, {
|
|
29
|
+
permission: n.WORKSPACE_UPDATE,
|
|
30
|
+
fallback: /* @__PURE__ */ c("div", {
|
|
31
|
+
className: "p-6",
|
|
32
|
+
children: [/* @__PURE__ */ c(l, {
|
|
33
|
+
variant: "ghost",
|
|
34
|
+
onClick: () => A(`${j}/${k}`),
|
|
35
|
+
className: "gap-2 mb-6 -ml-2",
|
|
36
|
+
children: [/* @__PURE__ */ s(a, { size: 20 }), O("workspaceSettings.backToWorkspace", "Back to Workspace")]
|
|
37
|
+
}), /* @__PURE__ */ s(g, {
|
|
38
|
+
variant: "card",
|
|
39
|
+
title: O("workspaceSettings.permissionRequired", "Permission Required"),
|
|
40
|
+
description: O("workspaceSettings.permissionRequiredDesc", "You don't have permission to edit workspace settings."),
|
|
41
|
+
details: O("workspaceSettings.permissionRequiredDetails", "Required: workspace:update"),
|
|
42
|
+
primaryAction: {
|
|
43
|
+
label: O("workspaceSettings.goBack", "Go Back"),
|
|
44
|
+
onClick: () => A(`${j}/${k}`)
|
|
45
|
+
}
|
|
46
|
+
})]
|
|
47
|
+
}),
|
|
48
|
+
children: /* @__PURE__ */ c("div", {
|
|
49
|
+
className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
|
|
50
|
+
children: [/* @__PURE__ */ c("div", { children: [
|
|
51
|
+
/* @__PURE__ */ c(l, {
|
|
52
|
+
variant: "ghost",
|
|
53
|
+
onClick: () => A(`${j}/${k}`),
|
|
54
|
+
className: "gap-2 mb-2 -ml-2",
|
|
55
|
+
children: [/* @__PURE__ */ s(a, { size: 20 }), O("workspaceSettings.backToWorkspace", "Back to Workspace")]
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ s("h1", {
|
|
58
|
+
className: "text-2xl sm:text-3xl font-bold",
|
|
59
|
+
children: O("workspaceSettings.title", "Workspace Settings")
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ s("p", {
|
|
62
|
+
className: "text-muted-foreground",
|
|
63
|
+
children: O("workspaceSettings.subtitle", "Manage workspace configuration")
|
|
64
|
+
})
|
|
65
|
+
] }), /* @__PURE__ */ c(u, { children: [/* @__PURE__ */ s(f, { children: /* @__PURE__ */ s(p, { children: O("workspaceSettings.generalSettings", "General Settings") }) }), /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s(y, {
|
|
66
|
+
schema: D,
|
|
67
|
+
onSubmit: (e) => {
|
|
68
|
+
k && P({
|
|
69
|
+
id: k,
|
|
70
|
+
input: {
|
|
71
|
+
...e,
|
|
72
|
+
contactEmail: e.contactEmail || void 0,
|
|
73
|
+
domain: e.domain || void 0,
|
|
74
|
+
website: e.website || void 0
|
|
75
|
+
}
|
|
76
|
+
}, { onSuccess: () => {
|
|
77
|
+
A(`${j}/${k}`);
|
|
78
|
+
} });
|
|
79
|
+
},
|
|
80
|
+
formOptions: { defaultValues: {
|
|
81
|
+
name: M?.name || "",
|
|
82
|
+
contactEmail: M?.contactEmail || "",
|
|
83
|
+
domain: M?.domain || "",
|
|
84
|
+
website: M?.website || ""
|
|
85
|
+
} },
|
|
86
|
+
children: (e) => /* @__PURE__ */ c("div", {
|
|
87
|
+
className: "space-y-4",
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ s(x, {
|
|
90
|
+
control: e.control,
|
|
91
|
+
name: "name",
|
|
92
|
+
render: ({ field: e }) => /* @__PURE__ */ c(S, { children: [
|
|
93
|
+
/* @__PURE__ */ s(C, { children: O("workspaceSettings.workspaceName", "Workspace Name") }),
|
|
94
|
+
/* @__PURE__ */ s(b, { children: /* @__PURE__ */ s(T, { ...e }) }),
|
|
95
|
+
/* @__PURE__ */ s(w, {})
|
|
96
|
+
] })
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ s(x, {
|
|
99
|
+
control: e.control,
|
|
100
|
+
name: "contactEmail",
|
|
101
|
+
render: ({ field: e }) => /* @__PURE__ */ c(S, { children: [
|
|
102
|
+
/* @__PURE__ */ s(C, { children: O("workspaceSettings.contactEmail", "Contact Email") }),
|
|
103
|
+
/* @__PURE__ */ s(b, { children: /* @__PURE__ */ s(T, {
|
|
104
|
+
type: "email",
|
|
105
|
+
...e
|
|
106
|
+
}) }),
|
|
107
|
+
/* @__PURE__ */ s(w, {})
|
|
108
|
+
] })
|
|
109
|
+
}),
|
|
110
|
+
/* @__PURE__ */ s(x, {
|
|
111
|
+
control: e.control,
|
|
112
|
+
name: "domain",
|
|
113
|
+
render: ({ field: e }) => /* @__PURE__ */ c(S, { children: [
|
|
114
|
+
/* @__PURE__ */ s(C, { children: O("workspaceSettings.domain", "Domain") }),
|
|
115
|
+
/* @__PURE__ */ s(b, { children: /* @__PURE__ */ s(T, { ...e }) }),
|
|
116
|
+
/* @__PURE__ */ s(w, {})
|
|
117
|
+
] })
|
|
118
|
+
}),
|
|
119
|
+
/* @__PURE__ */ s(x, {
|
|
120
|
+
control: e.control,
|
|
121
|
+
name: "website",
|
|
122
|
+
render: ({ field: e }) => /* @__PURE__ */ c(S, { children: [
|
|
123
|
+
/* @__PURE__ */ s(C, { children: O("workspaceSettings.website", "Website") }),
|
|
124
|
+
/* @__PURE__ */ s(b, { children: /* @__PURE__ */ s(T, {
|
|
125
|
+
type: "url",
|
|
126
|
+
...e
|
|
127
|
+
}) }),
|
|
128
|
+
/* @__PURE__ */ s(w, {})
|
|
129
|
+
] })
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ c("div", {
|
|
132
|
+
className: "flex gap-2",
|
|
133
|
+
children: [/* @__PURE__ */ c(l, {
|
|
134
|
+
type: "submit",
|
|
135
|
+
disabled: F,
|
|
136
|
+
className: "gap-2",
|
|
137
|
+
children: [/* @__PURE__ */ s(o, { size: 20 }), F ? O("workspaceSettings.saving", "Saving...") : O("workspaceSettings.saveChanges", "Save Changes")]
|
|
138
|
+
}), /* @__PURE__ */ s(l, {
|
|
139
|
+
type: "button",
|
|
140
|
+
variant: "outline",
|
|
141
|
+
onClick: () => A(`${j}/${k}`),
|
|
142
|
+
children: O("workspaceSettings.cancel", "Cancel")
|
|
143
|
+
})]
|
|
144
|
+
})
|
|
145
|
+
]
|
|
146
|
+
})
|
|
147
|
+
}) })] })]
|
|
148
|
+
})
|
|
149
|
+
}) : /* @__PURE__ */ s("div", {
|
|
150
|
+
className: "p-6",
|
|
151
|
+
children: O("workspaceSettings.notFound", "Workspace not found")
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
//#endregion
|
|
155
|
+
export { O as WorkspaceSettingsPage };
|
|
156
|
+
|
|
157
|
+
//# sourceMappingURL=WorkspaceSettingsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceSettingsPage.js","names":[],"sources":["../../src/pages/WorkspaceSettingsPage.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { ArrowLeft, Save } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Button, Card, CardHeader, CardTitle, CardContent } from '@burdenoff/fe-libs/ui';\nimport {\n Form,\n FormField,\n FormItem,\n FormLabel,\n FormControl,\n FormMessage,\n Input,\n z,\n} from '@burdenoff/fe-libs/form';\nimport { PermissionGate, AccessDenied } from '@burdenoff/fe-libs/shared/components';\nimport { WORKSPACE_PERMISSIONS } from '../constants/permissions';\nimport { useWorkspace } from '../hooks/useWorkspaces';\nimport { useUpdateWorkspace } from '../hooks/useWorkspaceMutations';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\n\nconst updateWorkspaceSchema = z.object({\n name: z.string().min(2).max(100),\n contactEmail: z.string().email().optional().or(z.literal('')),\n domain: z.string().optional(),\n website: z.string().url().optional().or(z.literal('')),\n});\n\ntype UpdateWorkspaceFormData = z.infer<typeof updateWorkspaceSchema>;\n\nexport function WorkspaceSettingsPage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n const { workspaceId } = useParams<{ workspaceId: string }>();\n const navigate = useNavigate();\n const { basePath = '/' } = useWorkspacesContext();\n const { data: workspace, isLoading } = useWorkspace(workspaceId || '');\n const { mutate: updateWorkspace, isPending } = useUpdateWorkspace();\n\n const handleSubmit = (data: UpdateWorkspaceFormData) => {\n if (!workspaceId) return;\n\n updateWorkspace(\n {\n id: workspaceId,\n input: {\n ...data,\n contactEmail: data.contactEmail || undefined,\n domain: data.domain || undefined,\n website: data.website || undefined,\n },\n },\n {\n onSuccess: () => {\n navigate(`${basePath}/${workspaceId}`);\n },\n }\n );\n };\n\n if (isLoading) {\n return <div className=\"p-6\">{tr('workspaceSettings.loading', 'Loading...')}</div>;\n }\n\n if (!workspace) {\n return <div className=\"p-6\">{tr('workspaceSettings.notFound', 'Workspace not found')}</div>;\n }\n\n return (\n <PermissionGate\n permission={WORKSPACE_PERMISSIONS.WORKSPACE_UPDATE}\n fallback={\n <div className=\"p-6\">\n <Button\n variant=\"ghost\"\n onClick={() => navigate(`${basePath}/${workspaceId}`)}\n className=\"gap-2 mb-6 -ml-2\"\n >\n <ArrowLeft size={20} />\n {tr('workspaceSettings.backToWorkspace', 'Back to Workspace')}\n </Button>\n <AccessDenied\n variant=\"card\"\n title={tr('workspaceSettings.permissionRequired', 'Permission Required')}\n description={tr(\n 'workspaceSettings.permissionRequiredDesc',\n \"You don't have permission to edit workspace settings.\"\n )}\n details={tr(\n 'workspaceSettings.permissionRequiredDetails',\n 'Required: workspace:update'\n )}\n primaryAction={{\n label: tr('workspaceSettings.goBack', 'Go Back'),\n onClick: () => navigate(`${basePath}/${workspaceId}`),\n }}\n />\n </div>\n }\n >\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6\">\n <div>\n <Button\n variant=\"ghost\"\n onClick={() => navigate(`${basePath}/${workspaceId}`)}\n className=\"gap-2 mb-2 -ml-2\"\n >\n <ArrowLeft size={20} />\n {tr('workspaceSettings.backToWorkspace', 'Back to Workspace')}\n </Button>\n <h1 className=\"text-2xl sm:text-3xl font-bold\">\n {tr('workspaceSettings.title', 'Workspace Settings')}\n </h1>\n <p className=\"text-muted-foreground\">\n {tr('workspaceSettings.subtitle', 'Manage workspace configuration')}\n </p>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>{tr('workspaceSettings.generalSettings', 'General Settings')}</CardTitle>\n </CardHeader>\n <CardContent>\n <Form\n schema={updateWorkspaceSchema}\n onSubmit={handleSubmit}\n formOptions={{\n defaultValues: {\n name: workspace?.name || '',\n contactEmail: workspace?.contactEmail || '',\n domain: workspace?.domain || '',\n website: workspace?.website || '',\n },\n }}\n >\n {(form) => (\n <div className=\"space-y-4\">\n <FormField\n control={form.control}\n name=\"name\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>\n {tr('workspaceSettings.workspaceName', 'Workspace Name')}\n </FormLabel>\n <FormControl>\n <Input {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"contactEmail\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>\n {tr('workspaceSettings.contactEmail', 'Contact Email')}\n </FormLabel>\n <FormControl>\n <Input type=\"email\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"domain\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>{tr('workspaceSettings.domain', 'Domain')}</FormLabel>\n <FormControl>\n <Input {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"website\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>{tr('workspaceSettings.website', 'Website')}</FormLabel>\n <FormControl>\n <Input type=\"url\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <div className=\"flex gap-2\">\n <Button type=\"submit\" disabled={isPending} className=\"gap-2\">\n <Save size={20} />\n {isPending\n ? tr('workspaceSettings.saving', 'Saving...')\n : tr('workspaceSettings.saveChanges', 'Save Changes')}\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => navigate(`${basePath}/${workspaceId}`)}\n >\n {tr('workspaceSettings.cancel', 'Cancel')}\n </Button>\n </div>\n </div>\n )}\n </Form>\n </CardContent>\n </Card>\n </div>\n </PermissionGate>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspacesListPage.d.ts","sourceRoot":"","sources":["../../src/pages/WorkspacesListPage.tsx"],"names":[],"mappings":"AAcA,wBAAgB,kBAAkB,4CAmOjC"}
|