@burdenoff/microfe-workspaces 2026.510.50 → 2026.511.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/generated/wspace-operations.d.ts +91 -0
  2. package/dist/generated/wspace-operations.d.ts.map +1 -1
  3. package/dist/generated/wspace-operations.js +79 -51
  4. package/dist/generated/wspace-operations.js.map +1 -1
  5. package/dist/hooks/useMemberMutations.d.ts.map +1 -1
  6. package/dist/hooks/useMemberMutations.js +141 -60
  7. package/dist/hooks/useMemberMutations.js.map +1 -1
  8. package/dist/hooks/useProjectMutations.d.ts.map +1 -1
  9. package/dist/hooks/useProjectMutations.js +84 -44
  10. package/dist/hooks/useProjectMutations.js.map +1 -1
  11. package/dist/hooks/useWorkspaceMutations.d.ts.map +1 -1
  12. package/dist/hooks/useWorkspaceMutations.js +64 -29
  13. package/dist/hooks/useWorkspaceMutations.js.map +1 -1
  14. package/dist/hooks/useWorkspacesEventEmitter.d.ts +5 -1
  15. package/dist/hooks/useWorkspacesEventEmitter.d.ts.map +1 -1
  16. package/dist/hooks/useWorkspacesEventEmitter.js +8 -7
  17. package/dist/hooks/useWorkspacesEventEmitter.js.map +1 -1
  18. package/dist/hooks/useWorkspacesPageView.d.ts +27 -0
  19. package/dist/hooks/useWorkspacesPageView.d.ts.map +1 -0
  20. package/dist/hooks/useWorkspacesPageView.js +29 -0
  21. package/dist/hooks/useWorkspacesPageView.js.map +1 -0
  22. package/dist/pages/ActivityListPage.d.ts.map +1 -1
  23. package/dist/pages/ActivityListPage.js +59 -56
  24. package/dist/pages/ActivityListPage.js.map +1 -1
  25. package/dist/pages/CreateWorkspacePage.d.ts.map +1 -1
  26. package/dist/pages/CreateWorkspacePage.js +104 -104
  27. package/dist/pages/CreateWorkspacePage.js.map +1 -1
  28. package/dist/pages/InviteAcceptancePage.d.ts.map +1 -1
  29. package/dist/pages/InviteAcceptancePage.js +197 -216
  30. package/dist/pages/InviteAcceptancePage.js.map +1 -1
  31. package/dist/pages/MembersListPage.d.ts.map +1 -1
  32. package/dist/pages/MembersListPage.js +142 -138
  33. package/dist/pages/MembersListPage.js.map +1 -1
  34. package/dist/pages/ProjectDetailPage.d.ts.map +1 -1
  35. package/dist/pages/ProjectDetailPage.js +181 -176
  36. package/dist/pages/ProjectDetailPage.js.map +1 -1
  37. package/dist/pages/ProjectsListPage.d.ts.map +1 -1
  38. package/dist/pages/ProjectsListPage.js +175 -171
  39. package/dist/pages/ProjectsListPage.js.map +1 -1
  40. package/dist/pages/WorkspaceDetailPage.d.ts.map +1 -1
  41. package/dist/pages/WorkspaceDetailPage.js +104 -101
  42. package/dist/pages/WorkspaceDetailPage.js.map +1 -1
  43. package/dist/pages/WorkspaceSettingsPage.d.ts.map +1 -1
  44. package/dist/pages/WorkspaceSettingsPage.js +182 -137
  45. package/dist/pages/WorkspaceSettingsPage.js.map +1 -1
  46. package/dist/pages/WorkspacesListPage.d.ts.map +1 -1
  47. package/dist/pages/WorkspacesListPage.js +77 -77
  48. package/dist/pages/WorkspacesListPage.js.map +1 -1
  49. package/dist/pages/dashboard/DashboardCustomizer.d.ts.map +1 -1
  50. package/dist/pages/dashboard/DashboardCustomizer.js +53 -55
  51. package/dist/pages/dashboard/DashboardCustomizer.js.map +1 -1
  52. package/dist/pages/dashboard/DashboardGrid.d.ts.map +1 -1
  53. package/dist/pages/dashboard/DashboardGrid.js +33 -36
  54. package/dist/pages/dashboard/DashboardGrid.js.map +1 -1
  55. package/dist/pages/dashboard/DashboardPage.d.ts.map +1 -1
  56. package/dist/pages/dashboard/DashboardPage.js +67 -65
  57. package/dist/pages/dashboard/DashboardPage.js.map +1 -1
  58. package/dist/pages/dashboard/WidgetWrapper.d.ts.map +1 -1
  59. package/dist/pages/dashboard/WidgetWrapper.js +3 -6
  60. package/dist/pages/dashboard/WidgetWrapper.js.map +1 -1
  61. package/dist/utils/i18n.d.ts +13 -0
  62. package/dist/utils/i18n.d.ts.map +1 -0
  63. package/dist/utils/i18n.js +12 -0
  64. package/dist/utils/i18n.js.map +1 -0
  65. package/dist/utils/telemetryError.d.ts +2 -0
  66. package/dist/utils/telemetryError.d.ts.map +1 -0
  67. package/dist/utils/telemetryError.js +28 -0
  68. package/dist/utils/telemetryError.js.map +1 -0
  69. package/package.json +9 -4
@@ -1,157 +1,202 @@
1
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";
2
+ import { useGetWorkspaceTagsQuery as t, useReplaceWorkspaceTagsMutation as n } from "../generated/wspace-operations.js";
3
+ import { useWorkspace as r } from "../hooks/useWorkspaces.js";
4
+ import { WORKSPACE_PERMISSIONS as i } from "../constants/permissions.js";
5
+ import { tWithFallback as a } from "../utils/i18n.js";
6
+ import { useWorkspacesPageView as o } from "../hooks/useWorkspacesPageView.js";
7
+ import { useUpdateWorkspace as s } from "../hooks/useWorkspaceMutations.js";
8
+ import { useMemo as c } from "react";
9
+ import { ArrowLeft as l, Save as u } from "lucide-react";
10
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
11
+ import { Button as p, Card as m, CardContent as h, CardHeader as g, CardTitle as _ } from "@burdenoff/fe-libs/ui";
12
+ import { useNavigate as v, useParams as y } from "react-router-dom";
13
+ import { AccessDenied as b, PermissionGate as x } from "@burdenoff/fe-libs/shared/components";
14
+ import { useI18n as S } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
+ import { Form as C, FormControl as w, FormField as T, FormItem as E, FormLabel as D, FormMessage as O, Input as k, z as A } from "@burdenoff/fe-libs/form";
16
+ import { TagsWidget as j } from "@burdenoff/fe-libs/tag";
13
17
  //#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(""))
18
+ var M = A.object({
19
+ name: A.string().min(2).max(100),
20
+ contactEmail: A.string().email().optional().or(A.literal("")),
21
+ domain: A.string().optional(),
22
+ website: A.string().url().optional().or(A.literal(""))
19
23
  });
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", {
24
+ function N() {
25
+ let { t: A } = S(), { workspaceId: N } = y();
26
+ o("workspaces.settings", {
27
+ workspaceId: N,
28
+ requireParams: !0
29
+ });
30
+ let P = v(), { basePath: F = "/" } = e(), { data: I, isLoading: L } = r(N || ""), { mutate: R, isPending: z } = s(), { data: B, refetch: V } = t({
31
+ variables: { input: { workspaceId: N ?? "" } },
32
+ skip: !N,
33
+ fetchPolicy: "cache-and-network"
34
+ }), [H, { loading: U }] = n(), W = c(() => (B?.getWorkspaceTags ?? []).flatMap((e) => e.tag ? [{
35
+ id: e.tagId,
36
+ key: e.tag.key,
37
+ label: e.tag.label,
38
+ value: e.tag.value ?? null,
39
+ vocabularyId: e.tag.vocabularyId ?? null,
40
+ parentId: e.tag.parentId ?? null,
41
+ hierarchyPath: e.tag.hierarchyPath ?? null,
42
+ color: e.tag.color ?? null,
43
+ icon: e.tag.icon ?? null,
44
+ description: e.tag.description ?? null
45
+ }] : []), [B?.getWorkspaceTags]), G = async (e) => {
46
+ N && (await H({ variables: { input: {
47
+ workspaceId: N,
48
+ tagIds: e.map((e) => e.id)
49
+ } } }), await V());
50
+ };
51
+ return L ? /* @__PURE__ */ d("div", {
26
52
  className: "p-6",
27
- children: O("workspaceSettings.loading", "Loading...")
28
- }) : M ? /* @__PURE__ */ s(_, {
29
- permission: n.WORKSPACE_UPDATE,
30
- fallback: /* @__PURE__ */ c("div", {
53
+ children: a(A, "workspaceSettings.loading", "Loading...")
54
+ }) : I ? /* @__PURE__ */ d(x, {
55
+ permission: i.WORKSPACE_UPDATE,
56
+ fallback: /* @__PURE__ */ f("div", {
31
57
  className: "p-6",
32
- children: [/* @__PURE__ */ c(l, {
58
+ children: [/* @__PURE__ */ f(p, {
33
59
  variant: "ghost",
34
- onClick: () => A(`${j}/${k}`),
60
+ onClick: () => P(`${F}/${N}`),
35
61
  className: "gap-2 mb-6 -ml-2",
36
- children: [/* @__PURE__ */ s(a, { size: 20 }), O("workspaceSettings.backToWorkspace", "Back to Workspace")]
37
- }), /* @__PURE__ */ s(g, {
62
+ children: [/* @__PURE__ */ d(l, { size: 20 }), a(A, "workspaceSettings.backToWorkspace", "Back to Workspace")]
63
+ }), /* @__PURE__ */ d(b, {
38
64
  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"),
65
+ title: a(A, "workspaceSettings.permissionRequired", "Permission Required"),
66
+ description: a(A, "workspaceSettings.permissionRequiredDesc", "You don't have permission to edit workspace settings."),
67
+ details: a(A, "workspaceSettings.permissionRequiredDetails", "Required: workspace:update"),
42
68
  primaryAction: {
43
- label: O("workspaceSettings.goBack", "Go Back"),
44
- onClick: () => A(`${j}/${k}`)
69
+ label: a(A, "workspaceSettings.goBack", "Go Back"),
70
+ onClick: () => P(`${F}/${N}`)
45
71
  }
46
72
  })]
47
73
  }),
48
- children: /* @__PURE__ */ c("div", {
74
+ children: /* @__PURE__ */ f("div", {
49
75
  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
- }) })] })]
76
+ children: [
77
+ /* @__PURE__ */ f("div", { children: [
78
+ /* @__PURE__ */ f(p, {
79
+ variant: "ghost",
80
+ onClick: () => P(`${F}/${N}`),
81
+ className: "gap-2 mb-2 -ml-2",
82
+ children: [/* @__PURE__ */ d(l, { size: 20 }), a(A, "workspaceSettings.backToWorkspace", "Back to Workspace")]
83
+ }),
84
+ /* @__PURE__ */ d("h1", {
85
+ className: "text-2xl sm:text-3xl font-bold",
86
+ children: a(A, "workspaceSettings.title", "Workspace Settings")
87
+ }),
88
+ /* @__PURE__ */ d("p", {
89
+ className: "text-muted-foreground",
90
+ children: a(A, "workspaceSettings.subtitle", "Manage workspace configuration")
91
+ })
92
+ ] }),
93
+ /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(g, { children: /* @__PURE__ */ d(_, { children: a(A, "workspaceSettings.generalSettings", "General Settings") }) }), /* @__PURE__ */ d(h, { children: /* @__PURE__ */ d(C, {
94
+ schema: M,
95
+ onSubmit: (e) => {
96
+ N && R({
97
+ id: N,
98
+ input: {
99
+ ...e,
100
+ contactEmail: e.contactEmail || void 0,
101
+ domain: e.domain || void 0,
102
+ website: e.website || void 0
103
+ }
104
+ }, { onSuccess: () => {
105
+ P(`${F}/${N}`);
106
+ } });
107
+ },
108
+ formOptions: { defaultValues: {
109
+ name: I?.name || "",
110
+ contactEmail: I?.contactEmail || "",
111
+ domain: I?.domain || "",
112
+ website: I?.website || ""
113
+ } },
114
+ children: (e) => /* @__PURE__ */ f("div", {
115
+ className: "space-y-4",
116
+ children: [
117
+ /* @__PURE__ */ d(T, {
118
+ control: e.control,
119
+ name: "name",
120
+ render: ({ field: e }) => /* @__PURE__ */ f(E, { children: [
121
+ /* @__PURE__ */ d(D, { children: a(A, "workspaceSettings.workspaceName", "Workspace Name") }),
122
+ /* @__PURE__ */ d(w, { children: /* @__PURE__ */ d(k, { ...e }) }),
123
+ /* @__PURE__ */ d(O, {})
124
+ ] })
125
+ }),
126
+ /* @__PURE__ */ d(T, {
127
+ control: e.control,
128
+ name: "contactEmail",
129
+ render: ({ field: e }) => /* @__PURE__ */ f(E, { children: [
130
+ /* @__PURE__ */ d(D, { children: a(A, "workspaceSettings.contactEmail", "Contact Email") }),
131
+ /* @__PURE__ */ d(w, { children: /* @__PURE__ */ d(k, {
132
+ type: "email",
133
+ ...e
134
+ }) }),
135
+ /* @__PURE__ */ d(O, {})
136
+ ] })
137
+ }),
138
+ /* @__PURE__ */ d(T, {
139
+ control: e.control,
140
+ name: "domain",
141
+ render: ({ field: e }) => /* @__PURE__ */ f(E, { children: [
142
+ /* @__PURE__ */ d(D, { children: a(A, "workspaceSettings.domain", "Domain") }),
143
+ /* @__PURE__ */ d(w, { children: /* @__PURE__ */ d(k, { ...e }) }),
144
+ /* @__PURE__ */ d(O, {})
145
+ ] })
146
+ }),
147
+ /* @__PURE__ */ d(T, {
148
+ control: e.control,
149
+ name: "website",
150
+ render: ({ field: e }) => /* @__PURE__ */ f(E, { children: [
151
+ /* @__PURE__ */ d(D, { children: a(A, "workspaceSettings.website", "Website") }),
152
+ /* @__PURE__ */ d(w, { children: /* @__PURE__ */ d(k, {
153
+ type: "url",
154
+ ...e
155
+ }) }),
156
+ /* @__PURE__ */ d(O, {})
157
+ ] })
158
+ }),
159
+ /* @__PURE__ */ f("div", {
160
+ className: "flex gap-2",
161
+ children: [/* @__PURE__ */ f(p, {
162
+ type: "submit",
163
+ disabled: z,
164
+ className: "gap-2",
165
+ children: [/* @__PURE__ */ d(u, { size: 20 }), z ? a(A, "workspaceSettings.saving", "Saving...") : a(A, "workspaceSettings.saveChanges", "Save Changes")]
166
+ }), /* @__PURE__ */ d(p, {
167
+ type: "button",
168
+ variant: "outline",
169
+ onClick: () => P(`${F}/${N}`),
170
+ children: a(A, "workspaceSettings.cancel", "Cancel")
171
+ })]
172
+ })
173
+ ]
174
+ })
175
+ }) })] }),
176
+ N && /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(g, { children: /* @__PURE__ */ d(_, { children: a(A, "workspaceSettings.tags", "Tags") }) }), /* @__PURE__ */ f(h, {
177
+ className: "space-y-3",
178
+ children: [/* @__PURE__ */ d("p", {
179
+ className: "text-sm text-muted-foreground",
180
+ children: a(A, "workspaceSettings.tagsDescription", "Use universal tags to classify and filter this workspace.")
181
+ }), /* @__PURE__ */ d(j, {
182
+ entityType: "Workspace",
183
+ entityId: N,
184
+ workspaceId: N,
185
+ tags: W,
186
+ onAdd: (e) => G([...W, e]),
187
+ onRemove: (e) => G(W.filter((t) => t.id !== e)),
188
+ syncGraphNotifications: !1,
189
+ className: U ? "pointer-events-none opacity-75" : void 0
190
+ })]
191
+ })] })
192
+ ]
148
193
  })
149
- }) : /* @__PURE__ */ s("div", {
194
+ }) : /* @__PURE__ */ d("div", {
150
195
  className: "p-6",
151
- children: O("workspaceSettings.notFound", "Workspace not found")
196
+ children: a(A, "workspaceSettings.notFound", "Workspace not found")
152
197
  });
153
198
  }
154
199
  //#endregion
155
- export { O as WorkspaceSettingsPage };
200
+ export { N as WorkspaceSettingsPage };
156
201
 
157
202
  //# sourceMappingURL=WorkspaceSettingsPage.js.map
@@ -1 +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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"}
1
+ {"version":3,"file":"WorkspaceSettingsPage.js","names":[],"sources":["../../src/pages/WorkspaceSettingsPage.tsx"],"sourcesContent":["import { useMemo } 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 { type TagItem, TagsWidget } from '@burdenoff/fe-libs/tag';\nimport { tWithFallback } from '../utils/i18n';\nimport { Button, Card, CardHeader, CardTitle, CardContent } from '@burdenoff/fe-libs/ui';\nimport {\n useGetWorkspaceTagsQuery,\n useReplaceWorkspaceTagsMutation,\n type WorkspaceTagAssignmentFieldsFragment,\n} from '../generated/wspace-operations';\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';\nimport { useWorkspacesPageView } from '../hooks/useWorkspacesPageView';\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 { workspaceId } = useParams<{ workspaceId: string }>();\n useWorkspacesPageView('workspaces.settings', { workspaceId, requireParams: true });\n const navigate = useNavigate();\n const { basePath = '/' } = useWorkspacesContext();\n const { data: workspace, isLoading } = useWorkspace(workspaceId || '');\n const { mutate: updateWorkspace, isPending } = useUpdateWorkspace();\n\n // Workspace tags (universal-tags assignments) — backend exposed via\n // wspace-workspace-svc workspace-tags.gql; this UI is the canonical\n // editor for them. Identical pattern to ProjectDetailPage.\n const { data: tagsData, refetch: refetchTags } = useGetWorkspaceTagsQuery({\n variables: { input: { workspaceId: workspaceId ?? '' } },\n skip: !workspaceId,\n fetchPolicy: 'cache-and-network',\n });\n const [replaceWorkspaceTags, { loading: tagsUpdating }] = useReplaceWorkspaceTagsMutation();\n // The widget keys tags by `id` for add/remove. We store the\n // assignment's tagId there so the round-trip back to\n // replaceWorkspaceTags has the right value to send. Display fields\n // come from the embedded `tag: UniversalTag` resolved by the\n // assignment — assignments without a hydrated tag (deleted or\n // unresolved) are dropped so the widget never renders empty badges.\n const widgetTags = useMemo<TagItem[]>(() => {\n const assignments = tagsData?.getWorkspaceTags ?? [];\n return assignments.flatMap((a: WorkspaceTagAssignmentFieldsFragment) => {\n if (!a.tag) return [];\n return [\n {\n id: a.tagId,\n key: a.tag.key,\n label: a.tag.label,\n value: a.tag.value ?? null,\n vocabularyId: a.tag.vocabularyId ?? null,\n parentId: a.tag.parentId ?? null,\n hierarchyPath: a.tag.hierarchyPath ?? null,\n color: a.tag.color ?? null,\n icon: a.tag.icon ?? null,\n description: a.tag.description ?? null,\n } satisfies TagItem,\n ];\n });\n }, [tagsData?.getWorkspaceTags]);\n\n const persistTags = async (next: TagItem[]) => {\n if (!workspaceId) return;\n await replaceWorkspaceTags({\n variables: {\n input: {\n workspaceId,\n tagIds: next.map((t) => t.id),\n },\n },\n });\n await refetchTags();\n };\n\n const handleAddTag = (tag: TagItem) => persistTags([...widgetTags, tag]);\n const handleRemoveTag = (tagId: string) => persistTags(widgetTags.filter((t) => t.id !== tagId));\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\">{tWithFallback(t, 'workspaceSettings.loading', 'Loading...')}</div>;\n }\n\n if (!workspace) {\n return (\n <div className=\"p-6\">\n {tWithFallback(t, 'workspaceSettings.notFound', 'Workspace not found')}\n </div>\n );\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 {tWithFallback(t, 'workspaceSettings.backToWorkspace', 'Back to Workspace')}\n </Button>\n <AccessDenied\n variant=\"card\"\n title={tWithFallback(t, 'workspaceSettings.permissionRequired', 'Permission Required')}\n description={tWithFallback(\n t,\n 'workspaceSettings.permissionRequiredDesc',\n \"You don't have permission to edit workspace settings.\"\n )}\n details={tWithFallback(\n t,\n 'workspaceSettings.permissionRequiredDetails',\n 'Required: workspace:update'\n )}\n primaryAction={{\n label: tWithFallback(t, '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 {tWithFallback(t, 'workspaceSettings.backToWorkspace', 'Back to Workspace')}\n </Button>\n <h1 className=\"text-2xl sm:text-3xl font-bold\">\n {tWithFallback(t, 'workspaceSettings.title', 'Workspace Settings')}\n </h1>\n <p className=\"text-muted-foreground\">\n {tWithFallback(t, 'workspaceSettings.subtitle', 'Manage workspace configuration')}\n </p>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>\n {tWithFallback(t, 'workspaceSettings.generalSettings', 'General Settings')}\n </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 {tWithFallback(t, '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 {tWithFallback(t, '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>\n {tWithFallback(t, 'workspaceSettings.domain', 'Domain')}\n </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>\n {tWithFallback(t, 'workspaceSettings.website', 'Website')}\n </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 ? tWithFallback(t, 'workspaceSettings.saving', 'Saving...')\n : tWithFallback(t, 'workspaceSettings.saveChanges', 'Save Changes')}\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => navigate(`${basePath}/${workspaceId}`)}\n >\n {tWithFallback(t, 'workspaceSettings.cancel', 'Cancel')}\n </Button>\n </div>\n </div>\n )}\n </Form>\n </CardContent>\n </Card>\n\n {workspaceId && (\n <Card>\n <CardHeader>\n <CardTitle>{tWithFallback(t, 'workspaceSettings.tags', 'Tags')}</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-sm text-muted-foreground\">\n {tWithFallback(\n t,\n 'workspaceSettings.tagsDescription',\n 'Use universal tags to classify and filter this workspace.'\n )}\n </p>\n <TagsWidget\n entityType=\"Workspace\"\n entityId={workspaceId}\n workspaceId={workspaceId}\n tags={widgetTags}\n onAdd={handleAddTag}\n onRemove={handleRemoveTag}\n syncGraphNotifications={false}\n className={tagsUpdating ? 'pointer-events-none opacity-75' : undefined}\n />\n </CardContent>\n </Card>\n )}\n </div>\n </PermissionGate>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspacesListPage.d.ts","sourceRoot":"","sources":["../../src/pages/WorkspacesListPage.tsx"],"names":[],"mappings":"AAcA,wBAAgB,kBAAkB,4CAmOjC"}
1
+ {"version":3,"file":"WorkspacesListPage.d.ts","sourceRoot":"","sources":["../../src/pages/WorkspacesListPage.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,kBAAkB,4CAmPjC"}