@burdenoff/microfe-workspaces 2026.510.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/README.md +88 -0
  2. package/dist/WorkspacesRoot.d.ts +35 -0
  3. package/dist/WorkspacesRoot.d.ts.map +1 -0
  4. package/dist/WorkspacesRoot.js +71 -0
  5. package/dist/WorkspacesRoot.js.map +1 -0
  6. package/dist/WorkspacesRoutes.d.ts +10 -0
  7. package/dist/WorkspacesRoutes.d.ts.map +1 -0
  8. package/dist/WorkspacesRoutes.js +111 -0
  9. package/dist/WorkspacesRoutes.js.map +1 -0
  10. package/dist/components/CreateProjectDialog.d.ts +6 -0
  11. package/dist/components/CreateProjectDialog.d.ts.map +1 -0
  12. package/dist/components/CreateProjectDialog.js +115 -0
  13. package/dist/components/CreateProjectDialog.js.map +1 -0
  14. package/dist/components/CreateWorkspaceDialog.d.ts +2 -0
  15. package/dist/components/CreateWorkspaceDialog.d.ts.map +1 -0
  16. package/dist/components/CreateWorkspaceDialog.js +172 -0
  17. package/dist/components/CreateWorkspaceDialog.js.map +1 -0
  18. package/dist/components/InviteMemberDialog.d.ts +7 -0
  19. package/dist/components/InviteMemberDialog.d.ts.map +1 -0
  20. package/dist/components/InviteMemberDialog.js +148 -0
  21. package/dist/components/InviteMemberDialog.js.map +1 -0
  22. package/dist/components/MemberListItem.d.ts +11 -0
  23. package/dist/components/MemberListItem.d.ts.map +1 -0
  24. package/dist/components/MemberListItem.js +118 -0
  25. package/dist/components/MemberListItem.js.map +1 -0
  26. package/dist/components/ProjectCard.d.ts +13 -0
  27. package/dist/components/ProjectCard.d.ts.map +1 -0
  28. package/dist/components/ProjectCard.js +150 -0
  29. package/dist/components/ProjectCard.js.map +1 -0
  30. package/dist/components/WorkspaceCard.d.ts +8 -0
  31. package/dist/components/WorkspaceCard.d.ts.map +1 -0
  32. package/dist/components/WorkspaceCard.js +79 -0
  33. package/dist/components/WorkspaceCard.js.map +1 -0
  34. package/dist/components/WorkspacesErrorBoundary.d.ts +27 -0
  35. package/dist/components/WorkspacesErrorBoundary.d.ts.map +1 -0
  36. package/dist/components/WorkspacesErrorBoundary.js +136 -0
  37. package/dist/components/WorkspacesErrorBoundary.js.map +1 -0
  38. package/dist/components/index.d.ts +8 -0
  39. package/dist/components/index.d.ts.map +1 -0
  40. package/dist/components/index.js +7 -0
  41. package/dist/constants/permissions.d.ts +33 -0
  42. package/dist/constants/permissions.d.ts.map +1 -0
  43. package/dist/constants/permissions.js +31 -0
  44. package/dist/constants/permissions.js.map +1 -0
  45. package/dist/generated/global-operations.d.ts +279 -0
  46. package/dist/generated/global-operations.d.ts.map +1 -0
  47. package/dist/generated/global-operations.js +103 -0
  48. package/dist/generated/global-operations.js.map +1 -0
  49. package/dist/generated/global-types.d.ts +20714 -0
  50. package/dist/generated/global-types.d.ts.map +1 -0
  51. package/dist/generated/wspace-operations.d.ts +2209 -0
  52. package/dist/generated/wspace-operations.d.ts.map +1 -0
  53. package/dist/generated/wspace-operations.js +576 -0
  54. package/dist/generated/wspace-operations.js.map +1 -0
  55. package/dist/generated/wspace-types.d.ts +54990 -0
  56. package/dist/generated/wspace-types.d.ts.map +1 -0
  57. package/dist/hooks/index.d.ts +8 -0
  58. package/dist/hooks/index.d.ts.map +1 -0
  59. package/dist/hooks/index.js +7 -0
  60. package/dist/hooks/useMemberMutations.d.ts +61 -0
  61. package/dist/hooks/useMemberMutations.d.ts.map +1 -0
  62. package/dist/hooks/useMemberMutations.js +263 -0
  63. package/dist/hooks/useMemberMutations.js.map +1 -0
  64. package/dist/hooks/useProjectMutations.d.ts +26 -0
  65. package/dist/hooks/useProjectMutations.d.ts.map +1 -0
  66. package/dist/hooks/useProjectMutations.js +127 -0
  67. package/dist/hooks/useProjectMutations.js.map +1 -0
  68. package/dist/hooks/useProjects.d.ts +16 -0
  69. package/dist/hooks/useProjects.d.ts.map +1 -0
  70. package/dist/hooks/useProjects.js +103 -0
  71. package/dist/hooks/useProjects.js.map +1 -0
  72. package/dist/hooks/useScopedNavigation.d.ts +4 -0
  73. package/dist/hooks/useScopedNavigation.d.ts.map +1 -0
  74. package/dist/hooks/useScopedNavigation.js +11 -0
  75. package/dist/hooks/useScopedNavigation.js.map +1 -0
  76. package/dist/hooks/useTenants.d.ts +13 -0
  77. package/dist/hooks/useTenants.d.ts.map +1 -0
  78. package/dist/hooks/useTenants.js +47 -0
  79. package/dist/hooks/useTenants.js.map +1 -0
  80. package/dist/hooks/useWorkspaceActivity.d.ts +12 -0
  81. package/dist/hooks/useWorkspaceActivity.d.ts.map +1 -0
  82. package/dist/hooks/useWorkspaceActivity.js +31 -0
  83. package/dist/hooks/useWorkspaceActivity.js.map +1 -0
  84. package/dist/hooks/useWorkspaceMembers.d.ts +24 -0
  85. package/dist/hooks/useWorkspaceMembers.d.ts.map +1 -0
  86. package/dist/hooks/useWorkspaceMembers.js +130 -0
  87. package/dist/hooks/useWorkspaceMembers.js.map +1 -0
  88. package/dist/hooks/useWorkspaceMutations.d.ts +36 -0
  89. package/dist/hooks/useWorkspaceMutations.d.ts.map +1 -0
  90. package/dist/hooks/useWorkspaceMutations.js +119 -0
  91. package/dist/hooks/useWorkspaceMutations.js.map +1 -0
  92. package/dist/hooks/useWorkspacePermissions.d.ts +29 -0
  93. package/dist/hooks/useWorkspacePermissions.d.ts.map +1 -0
  94. package/dist/hooks/useWorkspacePermissions.js +33 -0
  95. package/dist/hooks/useWorkspacePermissions.js.map +1 -0
  96. package/dist/hooks/useWorkspaceRoles.d.ts +8 -0
  97. package/dist/hooks/useWorkspaceRoles.d.ts.map +1 -0
  98. package/dist/hooks/useWorkspaceRoles.js +31 -0
  99. package/dist/hooks/useWorkspaceRoles.js.map +1 -0
  100. package/dist/hooks/useWorkspaces.d.ts +21 -0
  101. package/dist/hooks/useWorkspaces.d.ts.map +1 -0
  102. package/dist/hooks/useWorkspaces.js +75 -0
  103. package/dist/hooks/useWorkspaces.js.map +1 -0
  104. package/dist/hooks/useWorkspacesEventEmitter.d.ts +14 -0
  105. package/dist/hooks/useWorkspacesEventEmitter.d.ts.map +1 -0
  106. package/dist/hooks/useWorkspacesEventEmitter.js +14 -0
  107. package/dist/hooks/useWorkspacesEventEmitter.js.map +1 -0
  108. package/dist/index.d.ts +33 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +24 -0
  111. package/dist/pages/ActivityListPage.d.ts +2 -0
  112. package/dist/pages/ActivityListPage.d.ts.map +1 -0
  113. package/dist/pages/ActivityListPage.js +119 -0
  114. package/dist/pages/ActivityListPage.js.map +1 -0
  115. package/dist/pages/CreateWorkspacePage.d.ts +2 -0
  116. package/dist/pages/CreateWorkspacePage.d.ts.map +1 -0
  117. package/dist/pages/CreateWorkspacePage.js +264 -0
  118. package/dist/pages/CreateWorkspacePage.js.map +1 -0
  119. package/dist/pages/InviteAcceptancePage.d.ts +6 -0
  120. package/dist/pages/InviteAcceptancePage.d.ts.map +1 -0
  121. package/dist/pages/InviteAcceptancePage.js +495 -0
  122. package/dist/pages/InviteAcceptancePage.js.map +1 -0
  123. package/dist/pages/MembersListPage.d.ts +2 -0
  124. package/dist/pages/MembersListPage.d.ts.map +1 -0
  125. package/dist/pages/MembersListPage.js +420 -0
  126. package/dist/pages/MembersListPage.js.map +1 -0
  127. package/dist/pages/ProjectDetailPage.d.ts +2 -0
  128. package/dist/pages/ProjectDetailPage.d.ts.map +1 -0
  129. package/dist/pages/ProjectDetailPage.js +361 -0
  130. package/dist/pages/ProjectDetailPage.js.map +1 -0
  131. package/dist/pages/ProjectsListPage.d.ts +2 -0
  132. package/dist/pages/ProjectsListPage.d.ts.map +1 -0
  133. package/dist/pages/ProjectsListPage.js +398 -0
  134. package/dist/pages/ProjectsListPage.js.map +1 -0
  135. package/dist/pages/WorkspaceDetailPage.d.ts +2 -0
  136. package/dist/pages/WorkspaceDetailPage.d.ts.map +1 -0
  137. package/dist/pages/WorkspaceDetailPage.js +230 -0
  138. package/dist/pages/WorkspaceDetailPage.js.map +1 -0
  139. package/dist/pages/WorkspaceSettingsPage.d.ts +2 -0
  140. package/dist/pages/WorkspaceSettingsPage.d.ts.map +1 -0
  141. package/dist/pages/WorkspaceSettingsPage.js +157 -0
  142. package/dist/pages/WorkspaceSettingsPage.js.map +1 -0
  143. package/dist/pages/WorkspacesListPage.d.ts +2 -0
  144. package/dist/pages/WorkspacesListPage.d.ts.map +1 -0
  145. package/dist/pages/WorkspacesListPage.js +186 -0
  146. package/dist/pages/WorkspacesListPage.js.map +1 -0
  147. package/dist/pages/dashboard/DashboardCustomizer.d.ts +12 -0
  148. package/dist/pages/dashboard/DashboardCustomizer.d.ts.map +1 -0
  149. package/dist/pages/dashboard/DashboardCustomizer.js +136 -0
  150. package/dist/pages/dashboard/DashboardCustomizer.js.map +1 -0
  151. package/dist/pages/dashboard/DashboardGrid.d.ts +8 -0
  152. package/dist/pages/dashboard/DashboardGrid.d.ts.map +1 -0
  153. package/dist/pages/dashboard/DashboardGrid.js +58 -0
  154. package/dist/pages/dashboard/DashboardGrid.js.map +1 -0
  155. package/dist/pages/dashboard/DashboardPage.d.ts +14 -0
  156. package/dist/pages/dashboard/DashboardPage.d.ts.map +1 -0
  157. package/dist/pages/dashboard/DashboardPage.js +136 -0
  158. package/dist/pages/dashboard/DashboardPage.js.map +1 -0
  159. package/dist/pages/dashboard/WidgetWrapper.d.ts +17 -0
  160. package/dist/pages/dashboard/WidgetWrapper.d.ts.map +1 -0
  161. package/dist/pages/dashboard/WidgetWrapper.js +72 -0
  162. package/dist/pages/dashboard/WidgetWrapper.js.map +1 -0
  163. package/dist/pages/dashboard/config.d.ts +9 -0
  164. package/dist/pages/dashboard/config.d.ts.map +1 -0
  165. package/dist/pages/dashboard/config.js +214 -0
  166. package/dist/pages/dashboard/config.js.map +1 -0
  167. package/dist/pages/dashboard/hooks/useDashboardData.d.ts +9 -0
  168. package/dist/pages/dashboard/hooks/useDashboardData.d.ts.map +1 -0
  169. package/dist/pages/dashboard/hooks/useDashboardData.js +118 -0
  170. package/dist/pages/dashboard/hooks/useDashboardData.js.map +1 -0
  171. package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts +4 -0
  172. package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts.map +1 -0
  173. package/dist/pages/dashboard/hooks/useDashboardPreferences.js +32 -0
  174. package/dist/pages/dashboard/hooks/useDashboardPreferences.js.map +1 -0
  175. package/dist/pages/dashboard/types.d.ts +145 -0
  176. package/dist/pages/dashboard/types.d.ts.map +1 -0
  177. package/dist/pages/dashboard/widgets/GroupsWidget.d.ts +4 -0
  178. package/dist/pages/dashboard/widgets/GroupsWidget.d.ts.map +1 -0
  179. package/dist/pages/dashboard/widgets/GroupsWidget.js +59 -0
  180. package/dist/pages/dashboard/widgets/GroupsWidget.js.map +1 -0
  181. package/dist/pages/dashboard/widgets/MembersWidget.d.ts +4 -0
  182. package/dist/pages/dashboard/widgets/MembersWidget.d.ts.map +1 -0
  183. package/dist/pages/dashboard/widgets/MembersWidget.js +65 -0
  184. package/dist/pages/dashboard/widgets/MembersWidget.js.map +1 -0
  185. package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts +4 -0
  186. package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts.map +1 -0
  187. package/dist/pages/dashboard/widgets/ProjectsWidget.js +91 -0
  188. package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +1 -0
  189. package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts +4 -0
  190. package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts.map +1 -0
  191. package/dist/pages/dashboard/widgets/QuickActionsWidget.js +80 -0
  192. package/dist/pages/dashboard/widgets/QuickActionsWidget.js.map +1 -0
  193. package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts +4 -0
  194. package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts.map +1 -0
  195. package/dist/pages/dashboard/widgets/RecentActivityWidget.js +81 -0
  196. package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +1 -0
  197. package/dist/pages/dashboard/widgets/StorageWidget.d.ts +4 -0
  198. package/dist/pages/dashboard/widgets/StorageWidget.d.ts.map +1 -0
  199. package/dist/pages/dashboard/widgets/StorageWidget.js +69 -0
  200. package/dist/pages/dashboard/widgets/StorageWidget.js.map +1 -0
  201. package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts +4 -0
  202. package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts.map +1 -0
  203. package/dist/pages/dashboard/widgets/SystemHealthWidget.js +59 -0
  204. package/dist/pages/dashboard/widgets/SystemHealthWidget.js.map +1 -0
  205. package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts +4 -0
  206. package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts.map +1 -0
  207. package/dist/pages/dashboard/widgets/TagCloudWidget.js +61 -0
  208. package/dist/pages/dashboard/widgets/TagCloudWidget.js.map +1 -0
  209. package/dist/pages/dashboard/widgets/TipsWidget.d.ts +4 -0
  210. package/dist/pages/dashboard/widgets/TipsWidget.d.ts.map +1 -0
  211. package/dist/pages/dashboard/widgets/TipsWidget.js +67 -0
  212. package/dist/pages/dashboard/widgets/TipsWidget.js.map +1 -0
  213. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts +4 -0
  214. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts.map +1 -0
  215. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +83 -0
  216. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +1 -0
  217. package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts +4 -0
  218. package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts.map +1 -0
  219. package/dist/pages/dashboard/widgets/WelcomeWidget.js +71 -0
  220. package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +1 -0
  221. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts +4 -0
  222. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts.map +1 -0
  223. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js +97 -0
  224. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js.map +1 -0
  225. package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts +4 -0
  226. package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts.map +1 -0
  227. package/dist/pages/dashboard/widgets/WorkspacesWidget.js +67 -0
  228. package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +1 -0
  229. package/dist/providers/WorkspacesProvider.d.ts +13 -0
  230. package/dist/providers/WorkspacesProvider.d.ts.map +1 -0
  231. package/dist/providers/WorkspacesProvider.js +24 -0
  232. package/dist/providers/WorkspacesProvider.js.map +1 -0
  233. package/dist/store/workspacesStore.d.ts +82 -0
  234. package/dist/store/workspacesStore.d.ts.map +1 -0
  235. package/dist/store/workspacesStore.js +92 -0
  236. package/dist/store/workspacesStore.js.map +1 -0
  237. package/dist/types/index.d.ts +280 -0
  238. package/dist/types/index.d.ts.map +1 -0
  239. package/dist/utils/formatters.d.ts +60 -0
  240. package/dist/utils/formatters.d.ts.map +1 -0
  241. package/dist/utils/formatters.js +61 -0
  242. package/dist/utils/formatters.js.map +1 -0
  243. package/dist/utils/index.d.ts +3 -0
  244. package/dist/utils/index.d.ts.map +1 -0
  245. package/dist/utils/nativeBridge.d.ts +3 -0
  246. package/dist/utils/nativeBridge.d.ts.map +1 -0
  247. package/dist/utils/nativeBridge.js +2 -0
  248. package/dist/utils/projectTags.d.ts +6 -0
  249. package/dist/utils/projectTags.d.ts.map +1 -0
  250. package/dist/utils/projectTags.js +49 -0
  251. package/dist/utils/projectTags.js.map +1 -0
  252. package/dist/utils/slug.d.ts +13 -0
  253. package/dist/utils/slug.d.ts.map +1 -0
  254. package/dist/utils/slug.js +8 -0
  255. package/dist/utils/slug.js.map +1 -0
  256. package/dist/utils/tokenHelpers.d.ts +114 -0
  257. package/dist/utils/tokenHelpers.d.ts.map +1 -0
  258. package/dist/utils/tokenHelpers.js +80 -0
  259. package/dist/utils/tokenHelpers.js.map +1 -0
  260. package/package.json +113 -0
@@ -0,0 +1,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,2 @@
1
+ export declare function WorkspaceSettingsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=WorkspaceSettingsPage.d.ts.map
@@ -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,2 @@
1
+ export declare function WorkspacesListPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=WorkspacesListPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspacesListPage.d.ts","sourceRoot":"","sources":["../../src/pages/WorkspacesListPage.tsx"],"names":[],"mappings":"AAcA,wBAAgB,kBAAkB,4CAmOjC"}