@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,264 @@
1
+ import { useWorkspacesContext as e } from "../providers/WorkspacesProvider.js";
2
+ import { WORKSPACE_PERMISSIONS as t } from "../constants/permissions.js";
3
+ import { useCreateWorkspace as n } from "../hooks/useWorkspaceMutations.js";
4
+ import { useMyOrganizations as r, useMyTenants as i } from "../hooks/useTenants.js";
5
+ import { generateSlug as a } from "../utils/slug.js";
6
+ import { useCallback as o, useEffect as s, useMemo as c } from "react";
7
+ import { AlertCircle as l, ArrowLeft as u } from "lucide-react";
8
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
9
+ import { Button as p, Card as m, CardContent as h, CardDescription as g, CardHeader as _, CardTitle as v, Skeleton as y } from "@burdenoff/fe-libs/ui";
10
+ import { Link as b, useNavigate as x } from "react-router-dom";
11
+ import { AccessDenied as S, PermissionGate as C } from "@burdenoff/fe-libs/shared/components";
12
+ import { useI18n as w } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
13
+ import { useForm as T, z as E } from "@burdenoff/fe-libs/form";
14
+ //#region src/pages/CreateWorkspacePage.tsx
15
+ function D() {
16
+ let { t: D } = w(), O = o((e, t) => {
17
+ let n = D(e);
18
+ return n === e ? t : n;
19
+ }, [D]), k = c(() => E.object({
20
+ name: E.string().min(2, O("createWorkspace.validation.nameMin", "Name must be at least 2 characters")).max(100),
21
+ slug: E.string().min(2, O("createWorkspace.validation.slugMin", "Slug must be at least 2 characters")).max(50).regex(/^[a-z0-9-]+$/, O("createWorkspace.validation.slugFormat", "Slug can only contain lowercase letters, numbers, and hyphens")),
22
+ tenantId: E.string().min(1, O("createWorkspace.validation.tenantRequired", "Please select a tenant")),
23
+ organizationId: E.string().min(1, O("createWorkspace.validation.organizationRequired", "Please select an organization")),
24
+ type: E.enum(["TEAM", "PERSONAL"]).optional()
25
+ }), [O]), A = x(), { basePath: j = "/" } = e(), { mutate: M, isPending: N } = n(), { data: P, isLoading: F, error: I } = i(), { data: L, isLoading: R, error: z } = r(), B = P?.items ?? [], V = L?.items ?? [], H = c(() => B.find((e) => e.type === "SHARED" || e.slug === "burdenoff-shared")?.id ?? B[0]?.id ?? "", [B]), U = T({
26
+ schema: k,
27
+ defaultValues: {
28
+ name: "",
29
+ slug: "",
30
+ tenantId: "",
31
+ organizationId: "",
32
+ type: "TEAM"
33
+ }
34
+ }), W = U.watch("tenantId"), G = U.watch("name"), K = c(() => W ? V.filter((e) => e.tenantId === W) : [], [W, V]);
35
+ return s(() => {
36
+ U.setValue("slug", G ? a(G) : "");
37
+ }, [G, U]), s(() => {
38
+ U.setValue("organizationId", "");
39
+ }, [W, U]), s(() => {
40
+ !U.getValues("tenantId") && H && U.setValue("tenantId", H, {
41
+ shouldDirty: !1,
42
+ shouldTouch: !1
43
+ });
44
+ }, [H, U]), s(() => {
45
+ let e = U.getValues("organizationId");
46
+ !K.some((t) => t.id === e) && K[0]?.id && U.setValue("organizationId", K[0].id, {
47
+ shouldDirty: !1,
48
+ shouldTouch: !1
49
+ });
50
+ }, [K, U]), /* @__PURE__ */ d(C, {
51
+ permission: t.WORKSPACE_CREATE,
52
+ fallback: /* @__PURE__ */ f("div", {
53
+ className: "p-6",
54
+ children: [/* @__PURE__ */ f(b, {
55
+ to: `${j}/list`,
56
+ className: "inline-flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors mb-6",
57
+ children: [/* @__PURE__ */ d(u, { size: 20 }), O("createWorkspace.backToWorkspaces", "Back to Workspaces")]
58
+ }), /* @__PURE__ */ d(S, {
59
+ variant: "card",
60
+ title: O("createWorkspace.permissionRequiredTitle", "Permission Required"),
61
+ description: O("createWorkspace.permissionRequiredDescription", "You don't have permission to create workspaces."),
62
+ details: O("createWorkspace.permissionRequiredDetails", "Required: workspace:create"),
63
+ primaryAction: {
64
+ label: O("createWorkspace.goBack", "Go Back"),
65
+ onClick: () => A(`${j}/list`)
66
+ }
67
+ })]
68
+ }),
69
+ children: /* @__PURE__ */ f("div", {
70
+ className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
71
+ children: [/* @__PURE__ */ f(b, {
72
+ to: `${j}/list`,
73
+ className: "inline-flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors",
74
+ children: [/* @__PURE__ */ d(u, { size: 20 }), O("createWorkspace.backToWorkspaces", "Back to Workspaces")]
75
+ }), /* @__PURE__ */ f(m, {
76
+ className: "max-w-2xl mx-auto",
77
+ children: [/* @__PURE__ */ f(_, { children: [/* @__PURE__ */ d(v, { children: O("createWorkspace.title", "Create New Workspace") }), /* @__PURE__ */ d(g, { children: O("createWorkspace.subtitle", "Set up a new workspace for your team or personal use") })] }), /* @__PURE__ */ d(h, { children: /* @__PURE__ */ f("form", {
78
+ onSubmit: U.handleSubmit((e) => {
79
+ M({
80
+ name: e.name,
81
+ slug: e.slug,
82
+ tenantId: e.tenantId,
83
+ organizationId: e.organizationId,
84
+ type: e.type
85
+ }, { onSuccess: (e) => {
86
+ A(`${j}/${e.id}`);
87
+ } });
88
+ }),
89
+ className: "space-y-6",
90
+ children: [
91
+ /* @__PURE__ */ f("div", {
92
+ className: "space-y-2",
93
+ children: [
94
+ /* @__PURE__ */ d("label", {
95
+ htmlFor: "workspace-name",
96
+ className: "text-sm font-medium text-foreground",
97
+ children: O("createWorkspace.nameLabel", "Workspace Name *")
98
+ }),
99
+ /* @__PURE__ */ d("input", {
100
+ id: "workspace-name",
101
+ placeholder: O("createWorkspace.namePlaceholder", "My Workspace"),
102
+ className: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground",
103
+ ...U.register("name")
104
+ }),
105
+ /* @__PURE__ */ d("p", {
106
+ className: "text-xs text-muted-foreground",
107
+ children: O("createWorkspace.nameHint", "A descriptive name for your workspace")
108
+ }),
109
+ U.formState.errors.name?.message && /* @__PURE__ */ d("p", {
110
+ className: "text-sm text-destructive",
111
+ children: U.formState.errors.name.message
112
+ })
113
+ ]
114
+ }),
115
+ /* @__PURE__ */ f("div", {
116
+ className: "space-y-2",
117
+ children: [
118
+ /* @__PURE__ */ d("label", {
119
+ htmlFor: "workspace-slug",
120
+ className: "text-sm font-medium text-foreground",
121
+ children: O("createWorkspace.slugLabel", "Slug *")
122
+ }),
123
+ /* @__PURE__ */ d("input", {
124
+ id: "workspace-slug",
125
+ placeholder: O("createWorkspace.slugPlaceholder", "my-workspace"),
126
+ className: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground",
127
+ ...U.register("slug")
128
+ }),
129
+ /* @__PURE__ */ d("p", {
130
+ className: "text-xs text-muted-foreground",
131
+ children: O("createWorkspace.slugHint", "URL-friendly identifier (auto-generated, but you can edit it)")
132
+ }),
133
+ U.formState.errors.slug?.message && /* @__PURE__ */ d("p", {
134
+ className: "text-sm text-destructive",
135
+ children: U.formState.errors.slug.message
136
+ })
137
+ ]
138
+ }),
139
+ /* @__PURE__ */ f("div", {
140
+ className: "space-y-2",
141
+ children: [
142
+ /* @__PURE__ */ d("label", {
143
+ htmlFor: "workspace-tenant",
144
+ className: "text-sm font-medium text-foreground",
145
+ children: O("createWorkspace.tenantLabel", "Tenant *")
146
+ }),
147
+ F ? /* @__PURE__ */ d(y, { className: "h-10 w-full" }) : I ? /* @__PURE__ */ f("div", {
148
+ className: "flex items-center gap-2 text-sm text-destructive",
149
+ children: [/* @__PURE__ */ d(l, { size: 16 }), O("createWorkspace.failedToLoadTenants", "Failed to load tenants")]
150
+ }) : B.length === 0 ? /* @__PURE__ */ d("div", {
151
+ className: "text-sm text-muted-foreground",
152
+ children: O("createWorkspace.noTenantsAvailable", "No tenants available. Contact your administrator.")
153
+ }) : /* @__PURE__ */ f("select", {
154
+ id: "workspace-tenant",
155
+ className: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground",
156
+ ...U.register("tenantId"),
157
+ children: [/* @__PURE__ */ d("option", {
158
+ value: "",
159
+ children: O("createWorkspace.selectTenantPlaceholder", "Select a tenant")
160
+ }), B.map((e) => /* @__PURE__ */ d("option", {
161
+ value: e.id,
162
+ children: e.name
163
+ }, e.id))]
164
+ }),
165
+ /* @__PURE__ */ d("p", {
166
+ className: "text-xs text-muted-foreground",
167
+ children: O("createWorkspace.tenantHint", "Select which tenant this workspace belongs to")
168
+ }),
169
+ U.formState.errors.tenantId?.message && /* @__PURE__ */ d("p", {
170
+ className: "text-sm text-destructive",
171
+ children: U.formState.errors.tenantId.message
172
+ })
173
+ ]
174
+ }),
175
+ /* @__PURE__ */ f("div", {
176
+ className: "space-y-2",
177
+ children: [
178
+ /* @__PURE__ */ d("label", {
179
+ htmlFor: "workspace-organization",
180
+ className: "text-sm font-medium text-foreground",
181
+ children: O("createWorkspace.organizationLabel", "Organization *")
182
+ }),
183
+ R ? /* @__PURE__ */ d(y, { className: "h-10 w-full" }) : z ? /* @__PURE__ */ f("div", {
184
+ className: "flex items-center gap-2 text-sm text-destructive",
185
+ children: [/* @__PURE__ */ d(l, { size: 16 }), O("createWorkspace.failedToLoadOrganizations", "Failed to load organizations")]
186
+ }) : W ? K.length === 0 ? /* @__PURE__ */ d("div", {
187
+ className: "text-sm text-muted-foreground",
188
+ children: O("createWorkspace.noOrganizationsFound", "No organizations found for this tenant")
189
+ }) : /* @__PURE__ */ f("select", {
190
+ id: "workspace-organization",
191
+ className: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground",
192
+ disabled: !W,
193
+ ...U.register("organizationId"),
194
+ children: [/* @__PURE__ */ d("option", {
195
+ value: "",
196
+ children: O("createWorkspace.selectOrganizationPlaceholder", "Select an organization")
197
+ }), K.map((e) => /* @__PURE__ */ d("option", {
198
+ value: e.id,
199
+ children: e.name
200
+ }, e.id))]
201
+ }) : /* @__PURE__ */ d("div", {
202
+ className: "text-sm text-muted-foreground",
203
+ children: O("createWorkspace.selectTenantFirst", "Please select a tenant first")
204
+ }),
205
+ /* @__PURE__ */ d("p", {
206
+ className: "text-xs text-muted-foreground",
207
+ children: O("createWorkspace.organizationHint", "Select which organization owns this workspace")
208
+ }),
209
+ U.formState.errors.organizationId?.message && /* @__PURE__ */ d("p", {
210
+ className: "text-sm text-destructive",
211
+ children: U.formState.errors.organizationId.message
212
+ })
213
+ ]
214
+ }),
215
+ /* @__PURE__ */ f("div", {
216
+ className: "space-y-2",
217
+ children: [
218
+ /* @__PURE__ */ d("label", {
219
+ htmlFor: "workspace-type",
220
+ className: "text-sm font-medium text-foreground",
221
+ children: O("createWorkspace.typeLabel", "Workspace Type")
222
+ }),
223
+ /* @__PURE__ */ f("select", {
224
+ id: "workspace-type",
225
+ className: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground",
226
+ ...U.register("type"),
227
+ children: [/* @__PURE__ */ d("option", {
228
+ value: "TEAM",
229
+ children: O("createWorkspace.typeTeam", "Team Workspace")
230
+ }), /* @__PURE__ */ d("option", {
231
+ value: "PERSONAL",
232
+ children: O("createWorkspace.typePersonal", "Personal Workspace")
233
+ })]
234
+ }),
235
+ /* @__PURE__ */ d("p", {
236
+ className: "text-xs text-muted-foreground",
237
+ children: O("createWorkspace.typeHint", "Choose between a collaborative workspace or a personal one")
238
+ })
239
+ ]
240
+ }),
241
+ /* @__PURE__ */ f("div", {
242
+ className: "flex justify-end gap-3 pt-4",
243
+ children: [/* @__PURE__ */ d(p, {
244
+ type: "button",
245
+ variant: "outline",
246
+ onClick: () => A(`${j}/list`),
247
+ disabled: N,
248
+ children: O("createWorkspace.cancel", "Cancel")
249
+ }), /* @__PURE__ */ d(p, {
250
+ type: "submit",
251
+ disabled: N || F || R,
252
+ children: N ? O("createWorkspace.creating", "Creating...") : O("createWorkspace.submit", "Create Workspace")
253
+ })]
254
+ })
255
+ ]
256
+ }) })]
257
+ })]
258
+ })
259
+ });
260
+ }
261
+ //#endregion
262
+ export { D as CreateWorkspacePage };
263
+
264
+ //# sourceMappingURL=CreateWorkspacePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateWorkspacePage.js","names":[],"sources":["../../src/pages/CreateWorkspacePage.tsx"],"sourcesContent":["import { useEffect, useMemo, useCallback } from 'react';\nimport { ArrowLeft, AlertCircle } from 'lucide-react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Skeleton,\n} from '@burdenoff/fe-libs/ui';\nimport { useForm, z } from '@burdenoff/fe-libs/form';\nimport { PermissionGate, AccessDenied } from '@burdenoff/fe-libs/shared/components';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { WORKSPACE_PERMISSIONS } from '../constants/permissions';\nimport { useCreateWorkspace } from '../hooks/useWorkspaceMutations';\nimport { useMyTenants, useMyOrganizations } from '../hooks/useTenants';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport { generateSlug } from '../utils/slug';\n\ntype CreateWorkspaceFormData = {\n name: string;\n slug: string;\n tenantId: string;\n organizationId: string;\n type?: 'TEAM' | 'PERSONAL';\n};\n\nexport function CreateWorkspacePage() {\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 createWorkspaceSchema = useMemo(\n () =>\n z.object({\n name: z\n .string()\n .min(2, tr('createWorkspace.validation.nameMin', 'Name must be at least 2 characters'))\n .max(100),\n slug: z\n .string()\n .min(2, tr('createWorkspace.validation.slugMin', 'Slug must be at least 2 characters'))\n .max(50)\n .regex(\n /^[a-z0-9-]+$/,\n tr(\n 'createWorkspace.validation.slugFormat',\n 'Slug can only contain lowercase letters, numbers, and hyphens'\n )\n ),\n tenantId: z\n .string()\n .min(1, tr('createWorkspace.validation.tenantRequired', 'Please select a tenant')),\n organizationId: z\n .string()\n .min(\n 1,\n tr('createWorkspace.validation.organizationRequired', 'Please select an organization')\n ),\n type: z.enum(['TEAM', 'PERSONAL']).optional(),\n }),\n [tr]\n );\n\n const navigate = useNavigate();\n const { basePath = '/' } = useWorkspacesContext();\n const { mutate: createWorkspace, isPending } = useCreateWorkspace();\n const { data: tenantsData, isLoading: isLoadingTenants, error: tenantsError } = useMyTenants();\n const {\n data: organizationsData,\n isLoading: isLoadingOrganizations,\n error: organizationsError,\n } = useMyOrganizations();\n\n const tenants = tenantsData?.items ?? [];\n const allOrganizations = organizationsData?.items ?? [];\n\n const defaultTenantId = useMemo(() => {\n const sharedTenant = tenants.find(\n (tenant) => tenant.type === 'SHARED' || tenant.slug === 'burdenoff-shared'\n );\n return sharedTenant?.id ?? tenants[0]?.id ?? '';\n }, [tenants]);\n\n const form = useForm<CreateWorkspaceFormData>({\n schema: createWorkspaceSchema,\n defaultValues: {\n name: '',\n slug: '',\n tenantId: '',\n organizationId: '',\n type: 'TEAM',\n },\n });\n\n const selectedTenantId = form.watch('tenantId');\n const workspaceName = form.watch('name');\n\n // Filter organizations by selected tenant\n const filteredOrganizations = useMemo(() => {\n if (!selectedTenantId) return [];\n return allOrganizations.filter((org) => org.tenantId === selectedTenantId);\n }, [selectedTenantId, allOrganizations]);\n\n // Auto-generate slug from name (clear when name is empty)\n useEffect(() => {\n form.setValue('slug', workspaceName ? generateSlug(workspaceName) : '');\n }, [workspaceName, form]);\n\n // Reset organizationId when tenant changes\n useEffect(() => {\n form.setValue('organizationId', '');\n }, [selectedTenantId, form]);\n\n useEffect(() => {\n if (!form.getValues('tenantId') && defaultTenantId) {\n form.setValue('tenantId', defaultTenantId, {\n shouldDirty: false,\n shouldTouch: false,\n });\n }\n }, [defaultTenantId, form]);\n\n useEffect(() => {\n const currentOrganizationId = form.getValues('organizationId');\n const hasCurrentOrganization = filteredOrganizations.some(\n (organization) => organization.id === currentOrganizationId\n );\n\n if (!hasCurrentOrganization && filteredOrganizations[0]?.id) {\n form.setValue('organizationId', filteredOrganizations[0].id, {\n shouldDirty: false,\n shouldTouch: false,\n });\n }\n }, [filteredOrganizations, form]);\n\n const onSubmit = (data: CreateWorkspaceFormData) => {\n createWorkspace(\n {\n name: data.name,\n slug: data.slug,\n tenantId: data.tenantId,\n organizationId: data.organizationId,\n type: data.type,\n },\n {\n onSuccess: (newWorkspace) => {\n // Navigate to the new workspace\n navigate(`${basePath}/${newWorkspace.id}`);\n },\n }\n );\n };\n\n return (\n <PermissionGate\n permission={WORKSPACE_PERMISSIONS.WORKSPACE_CREATE}\n fallback={\n <div className=\"p-6\">\n <Link\n to={`${basePath}/list`}\n className=\"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors mb-6\"\n >\n <ArrowLeft size={20} />\n {tr('createWorkspace.backToWorkspaces', 'Back to Workspaces')}\n </Link>\n <AccessDenied\n variant=\"card\"\n title={tr('createWorkspace.permissionRequiredTitle', 'Permission Required')}\n description={tr(\n 'createWorkspace.permissionRequiredDescription',\n \"You don't have permission to create workspaces.\"\n )}\n details={tr('createWorkspace.permissionRequiredDetails', 'Required: workspace:create')}\n primaryAction={{\n label: tr('createWorkspace.goBack', 'Go Back'),\n onClick: () => navigate(`${basePath}/list`),\n }}\n />\n </div>\n }\n >\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6\">\n {/* Back link */}\n <Link\n to={`${basePath}/list`}\n className=\"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ArrowLeft size={20} />\n {tr('createWorkspace.backToWorkspaces', 'Back to Workspaces')}\n </Link>\n\n {/* Form card */}\n <Card className=\"max-w-2xl mx-auto\">\n <CardHeader>\n <CardTitle>{tr('createWorkspace.title', 'Create New Workspace')}</CardTitle>\n <CardDescription>\n {tr(\n 'createWorkspace.subtitle',\n 'Set up a new workspace for your team or personal use'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-6\">\n <div className=\"space-y-2\">\n <label htmlFor=\"workspace-name\" className=\"text-sm font-medium text-foreground\">\n {tr('createWorkspace.nameLabel', 'Workspace Name *')}\n </label>\n <input\n id=\"workspace-name\"\n placeholder={tr('createWorkspace.namePlaceholder', 'My Workspace')}\n className=\"h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground\"\n {...form.register('name')}\n />\n <p className=\"text-xs text-muted-foreground\">\n {tr('createWorkspace.nameHint', 'A descriptive name for your workspace')}\n </p>\n {form.formState.errors.name?.message && (\n <p className=\"text-sm text-destructive\">{form.formState.errors.name.message}</p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label htmlFor=\"workspace-slug\" className=\"text-sm font-medium text-foreground\">\n {tr('createWorkspace.slugLabel', 'Slug *')}\n </label>\n <input\n id=\"workspace-slug\"\n placeholder={tr('createWorkspace.slugPlaceholder', 'my-workspace')}\n className=\"h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground\"\n {...form.register('slug')}\n />\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'createWorkspace.slugHint',\n 'URL-friendly identifier (auto-generated, but you can edit it)'\n )}\n </p>\n {form.formState.errors.slug?.message && (\n <p className=\"text-sm text-destructive\">{form.formState.errors.slug.message}</p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label htmlFor=\"workspace-tenant\" className=\"text-sm font-medium text-foreground\">\n {tr('createWorkspace.tenantLabel', 'Tenant *')}\n </label>\n {isLoadingTenants ? (\n <Skeleton className=\"h-10 w-full\" />\n ) : tenantsError ? (\n <div className=\"flex items-center gap-2 text-sm text-destructive\">\n <AlertCircle size={16} />\n {tr('createWorkspace.failedToLoadTenants', 'Failed to load tenants')}\n </div>\n ) : tenants.length === 0 ? (\n <div className=\"text-sm text-muted-foreground\">\n {tr(\n 'createWorkspace.noTenantsAvailable',\n 'No tenants available. Contact your administrator.'\n )}\n </div>\n ) : (\n <select\n id=\"workspace-tenant\"\n className=\"h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground\"\n {...form.register('tenantId')}\n >\n <option value=\"\">\n {tr('createWorkspace.selectTenantPlaceholder', 'Select a tenant')}\n </option>\n {tenants.map((tenant) => (\n <option key={tenant.id} value={tenant.id}>\n {tenant.name}\n </option>\n ))}\n </select>\n )}\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'createWorkspace.tenantHint',\n 'Select which tenant this workspace belongs to'\n )}\n </p>\n {form.formState.errors.tenantId?.message && (\n <p className=\"text-sm text-destructive\">\n {form.formState.errors.tenantId.message}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label\n htmlFor=\"workspace-organization\"\n className=\"text-sm font-medium text-foreground\"\n >\n {tr('createWorkspace.organizationLabel', 'Organization *')}\n </label>\n {isLoadingOrganizations ? (\n <Skeleton className=\"h-10 w-full\" />\n ) : organizationsError ? (\n <div className=\"flex items-center gap-2 text-sm text-destructive\">\n <AlertCircle size={16} />\n {tr(\n 'createWorkspace.failedToLoadOrganizations',\n 'Failed to load organizations'\n )}\n </div>\n ) : !selectedTenantId ? (\n <div className=\"text-sm text-muted-foreground\">\n {tr('createWorkspace.selectTenantFirst', 'Please select a tenant first')}\n </div>\n ) : filteredOrganizations.length === 0 ? (\n <div className=\"text-sm text-muted-foreground\">\n {tr(\n 'createWorkspace.noOrganizationsFound',\n 'No organizations found for this tenant'\n )}\n </div>\n ) : (\n <select\n id=\"workspace-organization\"\n className=\"h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground\"\n disabled={!selectedTenantId}\n {...form.register('organizationId')}\n >\n <option value=\"\">\n {tr(\n 'createWorkspace.selectOrganizationPlaceholder',\n 'Select an organization'\n )}\n </option>\n {filteredOrganizations.map((org) => (\n <option key={org.id} value={org.id}>\n {org.name}\n </option>\n ))}\n </select>\n )}\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'createWorkspace.organizationHint',\n 'Select which organization owns this workspace'\n )}\n </p>\n {form.formState.errors.organizationId?.message && (\n <p className=\"text-sm text-destructive\">\n {form.formState.errors.organizationId.message}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label htmlFor=\"workspace-type\" className=\"text-sm font-medium text-foreground\">\n {tr('createWorkspace.typeLabel', 'Workspace Type')}\n </label>\n <select\n id=\"workspace-type\"\n className=\"h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground\"\n {...form.register('type')}\n >\n <option value=\"TEAM\">{tr('createWorkspace.typeTeam', 'Team Workspace')}</option>\n <option value=\"PERSONAL\">\n {tr('createWorkspace.typePersonal', 'Personal Workspace')}\n </option>\n </select>\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'createWorkspace.typeHint',\n 'Choose between a collaborative workspace or a personal one'\n )}\n </p>\n </div>\n\n <div className=\"flex justify-end gap-3 pt-4\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => navigate(`${basePath}/list`)}\n disabled={isPending}\n >\n {tr('createWorkspace.cancel', 'Cancel')}\n </Button>\n <Button\n type=\"submit\"\n disabled={isPending || isLoadingTenants || isLoadingOrganizations}\n >\n {isPending\n ? tr('createWorkspace.creating', 'Creating...')\n : tr('createWorkspace.submit', 'Create Workspace')}\n </Button>\n </div>\n </form>\n </CardContent>\n </Card>\n </div>\n </PermissionGate>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Page for accepting or rejecting workspace invitations
3
+ * Accessible via /workspaces/invite/:invitationId
4
+ */
5
+ export declare function InviteAcceptancePage(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=InviteAcceptancePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InviteAcceptancePage.d.ts","sourceRoot":"","sources":["../../src/pages/InviteAcceptancePage.tsx"],"names":[],"mappings":"AA4BA;;;GAGG;AACH,wBAAgB,oBAAoB,4CAmQnC"}