@burdenoff/microfe-organization 2026.510.110

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 (244) hide show
  1. package/README.md +64 -0
  2. package/dist/generated/global-operations.d.ts +1647 -0
  3. package/dist/generated/global-operations.d.ts.map +1 -0
  4. package/dist/generated/global-operations.js +724 -0
  5. package/dist/generated/global-operations.js.map +1 -0
  6. package/dist/generated/global-types.d.ts +20716 -0
  7. package/dist/generated/global-types.d.ts.map +1 -0
  8. package/dist/generated/global-types.js +8 -0
  9. package/dist/generated/global-types.js.map +1 -0
  10. package/dist/generated/wspace-operations.d.ts +2 -0
  11. package/dist/generated/wspace-operations.d.ts.map +1 -0
  12. package/dist/generated/wspace-types.d.ts +53363 -0
  13. package/dist/generated/wspace-types.d.ts.map +1 -0
  14. package/dist/index.d.ts +56 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +3 -0
  17. package/dist/node_modules/sonner/dist/index.js +163 -0
  18. package/dist/node_modules/sonner/dist/index.js.map +1 -0
  19. package/dist/node_modules/zod/v3/ZodError.js +82 -0
  20. package/dist/node_modules/zod/v3/ZodError.js.map +1 -0
  21. package/dist/node_modules/zod/v3/errors.js +10 -0
  22. package/dist/node_modules/zod/v3/errors.js.map +1 -0
  23. package/dist/node_modules/zod/v3/helpers/errorUtil.js +9 -0
  24. package/dist/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
  25. package/dist/node_modules/zod/v3/helpers/parseUtil.js +93 -0
  26. package/dist/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
  27. package/dist/node_modules/zod/v3/helpers/util.js +76 -0
  28. package/dist/node_modules/zod/v3/helpers/util.js.map +1 -0
  29. package/dist/node_modules/zod/v3/locales/en.js +62 -0
  30. package/dist/node_modules/zod/v3/locales/en.js.map +1 -0
  31. package/dist/node_modules/zod/v3/types.js +2441 -0
  32. package/dist/node_modules/zod/v3/types.js.map +1 -0
  33. package/dist/organization-management/AdminOrganizationRoot.d.ts +16 -0
  34. package/dist/organization-management/AdminOrganizationRoot.d.ts.map +1 -0
  35. package/dist/organization-management/AdminOrganizationRoot.js +76 -0
  36. package/dist/organization-management/AdminOrganizationRoot.js.map +1 -0
  37. package/dist/organization-management/AdminOrganizationRoutes.d.ts +16 -0
  38. package/dist/organization-management/AdminOrganizationRoutes.d.ts.map +1 -0
  39. package/dist/organization-management/AdminOrganizationRoutes.js +73 -0
  40. package/dist/organization-management/AdminOrganizationRoutes.js.map +1 -0
  41. package/dist/organization-management/UserOrganizationRoot.d.ts +17 -0
  42. package/dist/organization-management/UserOrganizationRoot.d.ts.map +1 -0
  43. package/dist/organization-management/UserOrganizationRoot.js +45 -0
  44. package/dist/organization-management/UserOrganizationRoot.js.map +1 -0
  45. package/dist/organization-management/UserOrganizationRoutes.d.ts +12 -0
  46. package/dist/organization-management/UserOrganizationRoutes.d.ts.map +1 -0
  47. package/dist/organization-management/UserOrganizationRoutes.js +30 -0
  48. package/dist/organization-management/UserOrganizationRoutes.js.map +1 -0
  49. package/dist/organization-management/constants/permissions.d.ts +30 -0
  50. package/dist/organization-management/constants/permissions.d.ts.map +1 -0
  51. package/dist/organization-management/constants/permissions.js +22 -0
  52. package/dist/organization-management/constants/permissions.js.map +1 -0
  53. package/dist/organization-management/hooks/useOrganizationEventEmitter.d.ts +19 -0
  54. package/dist/organization-management/hooks/useOrganizationEventEmitter.d.ts.map +1 -0
  55. package/dist/organization-management/hooks/useOrganizationEventEmitter.js +15 -0
  56. package/dist/organization-management/hooks/useOrganizationEventEmitter.js.map +1 -0
  57. package/dist/organization-management/hooks/useOrganizationPageView.d.ts +11 -0
  58. package/dist/organization-management/hooks/useOrganizationPageView.d.ts.map +1 -0
  59. package/dist/organization-management/hooks/useOrganizationPageView.js +24 -0
  60. package/dist/organization-management/hooks/useOrganizationPageView.js.map +1 -0
  61. package/dist/organization-management/modules/members/components/InviteMemberForm.d.ts +18 -0
  62. package/dist/organization-management/modules/members/components/InviteMemberForm.d.ts.map +1 -0
  63. package/dist/organization-management/modules/members/components/InviteMemberForm.js +119 -0
  64. package/dist/organization-management/modules/members/components/InviteMemberForm.js.map +1 -0
  65. package/dist/organization-management/modules/members/components/InviteStatusBadge.d.ts +6 -0
  66. package/dist/organization-management/modules/members/components/InviteStatusBadge.d.ts.map +1 -0
  67. package/dist/organization-management/modules/members/components/InviteStatusBadge.js +51 -0
  68. package/dist/organization-management/modules/members/components/InviteStatusBadge.js.map +1 -0
  69. package/dist/organization-management/modules/members/components/MemberRoleBadge.d.ts +11 -0
  70. package/dist/organization-management/modules/members/components/MemberRoleBadge.d.ts.map +1 -0
  71. package/dist/organization-management/modules/members/components/MemberRoleBadge.js +56 -0
  72. package/dist/organization-management/modules/members/components/MemberRoleBadge.js.map +1 -0
  73. package/dist/organization-management/modules/members/components/MyInviteCard.d.ts +22 -0
  74. package/dist/organization-management/modules/members/components/MyInviteCard.d.ts.map +1 -0
  75. package/dist/organization-management/modules/members/components/MyInviteCard.js +70 -0
  76. package/dist/organization-management/modules/members/components/MyInviteCard.js.map +1 -0
  77. package/dist/organization-management/modules/members/components/PendingInvitesList.d.ts +6 -0
  78. package/dist/organization-management/modules/members/components/PendingInvitesList.d.ts.map +1 -0
  79. package/dist/organization-management/modules/members/components/PendingInvitesList.js +141 -0
  80. package/dist/organization-management/modules/members/components/PendingInvitesList.js.map +1 -0
  81. package/dist/organization-management/modules/members/hooks/useInvites.d.ts +75 -0
  82. package/dist/organization-management/modules/members/hooks/useInvites.d.ts.map +1 -0
  83. package/dist/organization-management/modules/members/hooks/useInvites.js +253 -0
  84. package/dist/organization-management/modules/members/hooks/useInvites.js.map +1 -0
  85. package/dist/organization-management/modules/members/hooks/useMembers.d.ts +84 -0
  86. package/dist/organization-management/modules/members/hooks/useMembers.d.ts.map +1 -0
  87. package/dist/organization-management/modules/members/hooks/useMembers.js +95 -0
  88. package/dist/organization-management/modules/members/hooks/useMembers.js.map +1 -0
  89. package/dist/organization-management/modules/members/pages/InviteMemberPage.d.ts +6 -0
  90. package/dist/organization-management/modules/members/pages/InviteMemberPage.d.ts.map +1 -0
  91. package/dist/organization-management/modules/members/pages/InviteMemberPage.js +91 -0
  92. package/dist/organization-management/modules/members/pages/InviteMemberPage.js.map +1 -0
  93. package/dist/organization-management/modules/members/pages/MemberDetailPage.d.ts +6 -0
  94. package/dist/organization-management/modules/members/pages/MemberDetailPage.d.ts.map +1 -0
  95. package/dist/organization-management/modules/members/pages/MemberDetailPage.js +115 -0
  96. package/dist/organization-management/modules/members/pages/MemberDetailPage.js.map +1 -0
  97. package/dist/organization-management/modules/members/pages/MembersListPage.d.ts +2 -0
  98. package/dist/organization-management/modules/members/pages/MembersListPage.d.ts.map +1 -0
  99. package/dist/organization-management/modules/members/pages/MembersListPage.js +424 -0
  100. package/dist/organization-management/modules/members/pages/MembersListPage.js.map +1 -0
  101. package/dist/organization-management/modules/members/pages/MyInvitesPage.d.ts +6 -0
  102. package/dist/organization-management/modules/members/pages/MyInvitesPage.d.ts.map +1 -0
  103. package/dist/organization-management/modules/members/pages/MyInvitesPage.js +114 -0
  104. package/dist/organization-management/modules/members/pages/MyInvitesPage.js.map +1 -0
  105. package/dist/organization-management/modules/members/types/index.d.ts +35 -0
  106. package/dist/organization-management/modules/members/types/index.d.ts.map +1 -0
  107. package/dist/organization-management/modules/organizations/components/OrganizationForm.d.ts +13 -0
  108. package/dist/organization-management/modules/organizations/components/OrganizationForm.d.ts.map +1 -0
  109. package/dist/organization-management/modules/organizations/components/OrganizationForm.js +325 -0
  110. package/dist/organization-management/modules/organizations/components/OrganizationForm.js.map +1 -0
  111. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.d.ts +13 -0
  112. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.d.ts.map +1 -0
  113. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.js +49 -0
  114. package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.js.map +1 -0
  115. package/dist/organization-management/modules/organizations/hooks/useOrganizations.d.ts +86 -0
  116. package/dist/organization-management/modules/organizations/hooks/useOrganizations.d.ts.map +1 -0
  117. package/dist/organization-management/modules/organizations/hooks/useOrganizations.js +164 -0
  118. package/dist/organization-management/modules/organizations/hooks/useOrganizations.js.map +1 -0
  119. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.d.ts +6 -0
  120. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.d.ts.map +1 -0
  121. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js +76 -0
  122. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map +1 -0
  123. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.d.ts +2 -0
  124. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.d.ts.map +1 -0
  125. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js +306 -0
  126. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map +1 -0
  127. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.d.ts +6 -0
  128. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.d.ts.map +1 -0
  129. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js +93 -0
  130. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js.map +1 -0
  131. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.d.ts +2 -0
  132. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.d.ts.map +1 -0
  133. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js +448 -0
  134. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js.map +1 -0
  135. package/dist/organization-management/modules/organizations/schemas/index.d.ts +53 -0
  136. package/dist/organization-management/modules/organizations/schemas/index.d.ts.map +1 -0
  137. package/dist/organization-management/modules/organizations/schemas/index.js +25 -0
  138. package/dist/organization-management/modules/organizations/schemas/index.js.map +1 -0
  139. package/dist/organization-management/modules/organizations/types/index.d.ts +34 -0
  140. package/dist/organization-management/modules/organizations/types/index.d.ts.map +1 -0
  141. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.d.ts +13 -0
  142. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.d.ts.map +1 -0
  143. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.js +147 -0
  144. package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.js.map +1 -0
  145. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.d.ts +16 -0
  146. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.d.ts.map +1 -0
  147. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js +107 -0
  148. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js.map +1 -0
  149. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.d.ts +16 -0
  150. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.d.ts.map +1 -0
  151. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js +386 -0
  152. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js.map +1 -0
  153. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.d.ts +13 -0
  154. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.d.ts.map +1 -0
  155. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.js +49 -0
  156. package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.js.map +1 -0
  157. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.d.ts +47 -0
  158. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.d.ts.map +1 -0
  159. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.js +46 -0
  160. package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.js.map +1 -0
  161. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.d.ts +133 -0
  162. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.d.ts.map +1 -0
  163. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.js +111 -0
  164. package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.js.map +1 -0
  165. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.d.ts +2 -0
  166. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.d.ts.map +1 -0
  167. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js +82 -0
  168. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js.map +1 -0
  169. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.d.ts +2 -0
  170. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.d.ts.map +1 -0
  171. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js +438 -0
  172. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js.map +1 -0
  173. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.d.ts +2 -0
  174. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.d.ts.map +1 -0
  175. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js +90 -0
  176. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js.map +1 -0
  177. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.d.ts +2 -0
  178. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.d.ts.map +1 -0
  179. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js +465 -0
  180. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js.map +1 -0
  181. package/dist/organization-management/modules/workspaces/schemas/index.d.ts +44 -0
  182. package/dist/organization-management/modules/workspaces/schemas/index.d.ts.map +1 -0
  183. package/dist/organization-management/modules/workspaces/schemas/index.js +22 -0
  184. package/dist/organization-management/modules/workspaces/schemas/index.js.map +1 -0
  185. package/dist/organization-management/modules/workspaces/types/index.d.ts +39 -0
  186. package/dist/organization-management/modules/workspaces/types/index.d.ts.map +1 -0
  187. package/dist/organization-management/modules/workspaces/types/workspace-member.d.ts +48 -0
  188. package/dist/organization-management/modules/workspaces/types/workspace-member.d.ts.map +1 -0
  189. package/dist/organization-management/providers/OrgConsoleProvider.d.ts +19 -0
  190. package/dist/organization-management/providers/OrgConsoleProvider.d.ts.map +1 -0
  191. package/dist/organization-management/providers/OrgConsoleProvider.js +24 -0
  192. package/dist/organization-management/providers/OrgConsoleProvider.js.map +1 -0
  193. package/dist/organization-management/shared/components/dialog/ConfirmDialog.d.ts +28 -0
  194. package/dist/organization-management/shared/components/dialog/ConfirmDialog.d.ts.map +1 -0
  195. package/dist/organization-management/shared/components/dialog/ConfirmDialog.js +105 -0
  196. package/dist/organization-management/shared/components/dialog/ConfirmDialog.js.map +1 -0
  197. package/dist/organization-management/shared/components/feedback/EmptyState.d.ts +14 -0
  198. package/dist/organization-management/shared/components/feedback/EmptyState.d.ts.map +1 -0
  199. package/dist/organization-management/shared/components/feedback/EmptyState.js +30 -0
  200. package/dist/organization-management/shared/components/feedback/EmptyState.js.map +1 -0
  201. package/dist/organization-management/shared/components/feedback/ErrorState.d.ts +11 -0
  202. package/dist/organization-management/shared/components/feedback/ErrorState.d.ts.map +1 -0
  203. package/dist/organization-management/shared/components/feedback/ErrorState.js +37 -0
  204. package/dist/organization-management/shared/components/feedback/ErrorState.js.map +1 -0
  205. package/dist/organization-management/shared/components/feedback/LoadingState.d.ts +6 -0
  206. package/dist/organization-management/shared/components/feedback/LoadingState.d.ts.map +1 -0
  207. package/dist/organization-management/shared/components/feedback/LoadingState.js +24 -0
  208. package/dist/organization-management/shared/components/feedback/LoadingState.js.map +1 -0
  209. package/dist/organization-management/shared/components/input/SearchInput.d.ts +15 -0
  210. package/dist/organization-management/shared/components/input/SearchInput.d.ts.map +1 -0
  211. package/dist/organization-management/shared/components/input/SearchInput.js +40 -0
  212. package/dist/organization-management/shared/components/input/SearchInput.js.map +1 -0
  213. package/dist/organization-management/shared/components/input/SelectionCheckbox.d.ts +10 -0
  214. package/dist/organization-management/shared/components/input/SelectionCheckbox.d.ts.map +1 -0
  215. package/dist/organization-management/shared/components/input/SelectionCheckbox.js +21 -0
  216. package/dist/organization-management/shared/components/input/SelectionCheckbox.js.map +1 -0
  217. package/dist/organization-management/shared/hooks/useDebouncedValue.d.ts +2 -0
  218. package/dist/organization-management/shared/hooks/useDebouncedValue.d.ts.map +1 -0
  219. package/dist/organization-management/shared/hooks/useDebouncedValue.js +17 -0
  220. package/dist/organization-management/shared/hooks/useDebouncedValue.js.map +1 -0
  221. package/dist/organization-management/shared/hooks/useTr.d.ts +14 -0
  222. package/dist/organization-management/shared/hooks/useTr.d.ts.map +1 -0
  223. package/dist/organization-management/shared/hooks/useTr.js +14 -0
  224. package/dist/organization-management/shared/hooks/useTr.js.map +1 -0
  225. package/dist/organization-management/shared/logger.d.ts +11 -0
  226. package/dist/organization-management/shared/logger.d.ts.map +1 -0
  227. package/dist/organization-management/shared/logger.js +46 -0
  228. package/dist/organization-management/shared/logger.js.map +1 -0
  229. package/dist/organization-management/shared/recaptcha.d.ts +2 -0
  230. package/dist/organization-management/shared/recaptcha.d.ts.map +1 -0
  231. package/dist/organization-management/shared/recaptcha.js +6 -0
  232. package/dist/organization-management/shared/recaptcha.js.map +1 -0
  233. package/dist/organization-management/shared/types/graphql.d.ts +131 -0
  234. package/dist/organization-management/shared/types/graphql.d.ts.map +1 -0
  235. package/dist/organization-management/shared/types/graphql.js +10 -0
  236. package/dist/organization-management/shared/types/graphql.js.map +1 -0
  237. package/dist/organization-management/shared/utils/cn.d.ts +8 -0
  238. package/dist/organization-management/shared/utils/cn.d.ts.map +1 -0
  239. package/dist/organization-management/types/index.d.ts +46 -0
  240. package/dist/organization-management/types/index.d.ts.map +1 -0
  241. package/dist/utils/nativeBridge.d.ts +3 -0
  242. package/dist/utils/nativeBridge.d.ts.map +1 -0
  243. package/dist/utils/nativeBridge.js +2 -0
  244. package/package.json +116 -0
@@ -0,0 +1,306 @@
1
+ import { useOrgConsole as e } from "../../../providers/OrgConsoleProvider.js";
2
+ import { useOrganization as t } from "../hooks/useOrganizations.js";
3
+ import { OrganizationStatusBadge as n } from "../components/OrganizationStatusBadge.js";
4
+ import { useTr as r } from "../../../shared/hooks/useTr.js";
5
+ import { LoadingState as i } from "../../../shared/components/feedback/LoadingState.js";
6
+ import { ErrorState as a } from "../../../shared/components/feedback/ErrorState.js";
7
+ import { EmptyState as o } from "../../../shared/components/feedback/EmptyState.js";
8
+ import { PERMISSIONS as s } from "../../../constants/permissions.js";
9
+ import { useOrganizationPageView as c } from "../../../hooks/useOrganizationPageView.js";
10
+ import { useWorkspacesByOrganization as l } from "../../workspaces/hooks/useWorkspaces.js";
11
+ import { WorkspaceCard as u } from "../../workspaces/components/WorkspaceCard.js";
12
+ import { useMemo as d, useState as f } from "react";
13
+ import { ArrowLeft as p, Briefcase as m, Building as h, Edit as g, Users as _ } from "lucide-react";
14
+ import { usePermissions as v } from "@burdenoff/fe-libs/shared/providers/shell";
15
+ import { jsx as y, jsxs as b } from "react/jsx-runtime";
16
+ import { useParams as x } from "react-router-dom";
17
+ //#region src/organization-management/modules/organizations/pages/OrganizationDetailPage.tsx
18
+ function S(e) {
19
+ return new Date(e).toLocaleDateString("en-US", {
20
+ year: "numeric",
21
+ month: "long",
22
+ day: "numeric",
23
+ hour: "2-digit",
24
+ minute: "2-digit"
25
+ });
26
+ }
27
+ function C() {
28
+ let C = r(), { id: w } = x();
29
+ c("organizations.detail", { organizationId: w });
30
+ let { navigate: T, basePath: E = "/organizations" } = e(), { hasPermission: D, isLoading: O } = v(), { organization: k, loading: A, error: j } = t(w ?? ""), [M, N] = f("overview"), { workspaces: P, loading: F, error: I, refetch: L } = l(M === "workspaces" && w ? w ?? "" : "", 50, 0), R = d(() => [{
31
+ id: "overview",
32
+ label: C("organizations.detail.tab.overview", "Overview")
33
+ }, {
34
+ id: "workspaces",
35
+ label: `${C("organizations.detail.tab.workspaces", "Workspaces")} (${M === "workspaces" ? P.length : k?.workspaceCount ?? 0})`
36
+ }], [
37
+ M,
38
+ k?.workspaceCount,
39
+ C,
40
+ P.length
41
+ ]);
42
+ return O ? /* @__PURE__ */ y("div", {
43
+ className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
44
+ children: /* @__PURE__ */ y(i, { message: C("common.loadingPermissions", "Loading permissions...") })
45
+ }) : D(s.ORG_READ) ? A ? /* @__PURE__ */ y("div", {
46
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
47
+ children: /* @__PURE__ */ y(i, { message: C("organizations.detail.loading", "Loading organization details...") })
48
+ }) : j || !k ? /* @__PURE__ */ y("div", {
49
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
50
+ children: /* @__PURE__ */ y(a, {
51
+ message: j?.message || C("organizations.detail.notFound", "Organization not found"),
52
+ action: {
53
+ label: C("organizations.create.back", "Back to Organizations"),
54
+ onClick: () => T(E)
55
+ }
56
+ })
57
+ }) : /* @__PURE__ */ y("div", {
58
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-300",
59
+ children: /* @__PURE__ */ b("div", {
60
+ className: "mx-auto flex w-full max-w-7xl flex-col gap-6",
61
+ children: [/* @__PURE__ */ b("div", {
62
+ className: "space-y-4",
63
+ children: [/* @__PURE__ */ b("button", {
64
+ onClick: () => T(E),
65
+ className: "inline-flex min-h-10 items-center gap-2 text-[var(--color-text-secondary)] transition-all duration-200 hover:text-[var(--color-text-primary)] active:scale-[0.98]",
66
+ children: [/* @__PURE__ */ y(p, {
67
+ size: 20,
68
+ "aria-hidden": "true"
69
+ }), /* @__PURE__ */ y("span", {
70
+ className: "text-sm font-medium",
71
+ children: C("organizations.create.back", "Back to Organizations")
72
+ })]
73
+ }), /* @__PURE__ */ b("div", {
74
+ className: "flex flex-col gap-4 rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-5 shadow-[var(--shadow-elevation-1)] lg:flex-row lg:items-start lg:justify-between",
75
+ children: [/* @__PURE__ */ b("div", {
76
+ className: "flex min-w-0 items-start gap-4",
77
+ children: [/* @__PURE__ */ y("div", {
78
+ className: "flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--color-status-info-bgSubtle)] text-[var(--color-status-info-text)]",
79
+ children: /* @__PURE__ */ y(h, {
80
+ size: 28,
81
+ "aria-hidden": "true"
82
+ })
83
+ }), /* @__PURE__ */ b("div", {
84
+ className: "min-w-0 space-y-2",
85
+ children: [
86
+ /* @__PURE__ */ b("div", {
87
+ className: "flex flex-wrap items-start gap-3",
88
+ children: [/* @__PURE__ */ y("h1", {
89
+ className: "text-3xl font-bold text-[var(--color-text-primary)]",
90
+ children: k.name
91
+ }), /* @__PURE__ */ y(n, { status: k.status })]
92
+ }),
93
+ /* @__PURE__ */ b("p", {
94
+ className: "break-all font-mono text-sm text-[var(--color-text-secondary)]",
95
+ children: ["/", k.slug]
96
+ }),
97
+ k.description ? /* @__PURE__ */ y("p", {
98
+ className: "max-w-2xl text-sm text-[var(--color-text-secondary)]",
99
+ children: k.description
100
+ }) : null
101
+ ]
102
+ })]
103
+ }), /* @__PURE__ */ b("div", {
104
+ className: "flex flex-col gap-3 sm:flex-row",
105
+ children: [/* @__PURE__ */ b("button", {
106
+ onClick: () => T(`${E}/${w}/members`),
107
+ className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg border border-[var(--color-border-default)] px-4 py-2.5 text-[var(--color-text-primary)] transition-all duration-200 hover:bg-[var(--color-bg-subtle)]",
108
+ children: [/* @__PURE__ */ y(_, {
109
+ size: 16,
110
+ "aria-hidden": "true"
111
+ }), /* @__PURE__ */ y("span", { children: C("organizations.detail.manageMembers", "Manage Members") })]
112
+ }), D(s.ORG_UPDATE) && /* @__PURE__ */ b("button", {
113
+ onClick: () => T(`${E}/${w}/edit`),
114
+ className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2.5 text-[var(--color-action-primary-text)] transition-all duration-200 hover:opacity-90 active:scale-[0.98]",
115
+ children: [/* @__PURE__ */ y(g, {
116
+ size: 16,
117
+ "aria-hidden": "true"
118
+ }), /* @__PURE__ */ y("span", { children: C("organizations.edit.title", "Edit Organization") })]
119
+ })]
120
+ })]
121
+ })]
122
+ }), /* @__PURE__ */ b("div", {
123
+ className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] shadow-[var(--shadow-elevation-1)]",
124
+ children: [/* @__PURE__ */ y("div", {
125
+ className: "overflow-x-auto border-b border-[var(--color-border-default)]",
126
+ children: /* @__PURE__ */ y("div", {
127
+ className: "flex min-w-max gap-2 px-4 pt-4 sm:px-6",
128
+ children: R.map((e) => {
129
+ let t = M === e.id;
130
+ return /* @__PURE__ */ y("button", {
131
+ onClick: () => N(e.id),
132
+ className: `inline-flex min-h-11 items-center rounded-t-lg border-b-2 px-4 py-3 text-sm font-medium transition-colors ${t ? "border-[var(--color-action-primary-bg)] text-[var(--color-action-primary-bg)]" : "border-transparent text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)]"}`,
133
+ "aria-pressed": t,
134
+ children: e.label
135
+ }, e.id);
136
+ })
137
+ })
138
+ }), /* @__PURE__ */ y("div", {
139
+ className: "p-4 sm:p-6",
140
+ children: M === "overview" ? /* @__PURE__ */ b("div", {
141
+ className: "grid grid-cols-1 gap-6 xl:grid-cols-[minmax(0,1fr)_320px]",
142
+ children: [/* @__PURE__ */ b("section", {
143
+ className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-5",
144
+ children: [/* @__PURE__ */ y("h2", {
145
+ className: "text-lg font-semibold text-[var(--color-text-primary)]",
146
+ children: C("organizations.detail.detailsSection", "Organization details")
147
+ }), /* @__PURE__ */ b("dl", {
148
+ className: "mt-5 grid grid-cols-1 gap-4 sm:grid-cols-2",
149
+ children: [
150
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("dt", {
151
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
152
+ children: C("common.name", "Name")
153
+ }), /* @__PURE__ */ y("dd", {
154
+ className: "mt-1 text-sm text-[var(--color-text-primary)]",
155
+ children: k.name
156
+ })] }),
157
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("dt", {
158
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
159
+ children: C("common.slug", "Slug")
160
+ }), /* @__PURE__ */ y("dd", {
161
+ className: "mt-1 break-all font-mono text-sm text-[var(--color-text-primary)]",
162
+ children: k.slug
163
+ })] }),
164
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("dt", {
165
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
166
+ children: C("common.status", "Status")
167
+ }), /* @__PURE__ */ y("dd", {
168
+ className: "mt-1",
169
+ children: /* @__PURE__ */ y(n, { status: k.status })
170
+ })] }),
171
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("dt", {
172
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
173
+ children: C("organizations.detail.workspaceCount", "Workspace count")
174
+ }), /* @__PURE__ */ y("dd", {
175
+ className: "mt-1 text-sm text-[var(--color-text-primary)]",
176
+ children: k.workspaceCount ?? 0
177
+ })] }),
178
+ k.website ? /* @__PURE__ */ b("div", {
179
+ className: "sm:col-span-2",
180
+ children: [/* @__PURE__ */ y("dt", {
181
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
182
+ children: C("organizations.detail.website", "Website")
183
+ }), /* @__PURE__ */ y("dd", {
184
+ className: "mt-1 break-all text-sm",
185
+ children: /* @__PURE__ */ y("a", {
186
+ href: k.website,
187
+ target: "_blank",
188
+ rel: "noreferrer",
189
+ className: "text-[var(--color-action-primary-bg)] underline-offset-2 hover:underline",
190
+ children: k.website
191
+ })
192
+ })]
193
+ }) : null,
194
+ k.description ? /* @__PURE__ */ b("div", {
195
+ className: "sm:col-span-2",
196
+ children: [/* @__PURE__ */ y("dt", {
197
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
198
+ children: C("common.description", "Description")
199
+ }), /* @__PURE__ */ y("dd", {
200
+ className: "mt-1 text-sm leading-6 text-[var(--color-text-primary)]",
201
+ children: k.description
202
+ })]
203
+ }) : null
204
+ ]
205
+ })]
206
+ }), /* @__PURE__ */ b("aside", {
207
+ className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-5",
208
+ children: [/* @__PURE__ */ y("h2", {
209
+ className: "text-lg font-semibold text-[var(--color-text-primary)]",
210
+ children: C("common.metadata", "Metadata")
211
+ }), /* @__PURE__ */ b("dl", {
212
+ className: "mt-5 space-y-4",
213
+ children: [
214
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("dt", {
215
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
216
+ children: C("common.created", "Created")
217
+ }), /* @__PURE__ */ y("dd", {
218
+ className: "mt-1 text-sm text-[var(--color-text-primary)]",
219
+ children: S(k.createdAt)
220
+ })] }),
221
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("dt", {
222
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
223
+ children: C("common.lastUpdated", "Last updated")
224
+ }), /* @__PURE__ */ y("dd", {
225
+ className: "mt-1 text-sm text-[var(--color-text-primary)]",
226
+ children: S(k.updatedAt)
227
+ })] }),
228
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("dt", {
229
+ className: "text-sm font-medium text-[var(--color-text-secondary)]",
230
+ children: C("organizations.detail.tenantId", "Tenant ID")
231
+ }), /* @__PURE__ */ y("dd", {
232
+ className: "mt-1 break-all font-mono text-sm text-[var(--color-text-primary)]",
233
+ children: k.tenantId
234
+ })] })
235
+ ]
236
+ })]
237
+ })]
238
+ }) : /* @__PURE__ */ b("section", {
239
+ className: "space-y-4",
240
+ children: [/* @__PURE__ */ b("div", {
241
+ className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",
242
+ children: [/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h2", {
243
+ className: "text-lg font-semibold text-[var(--color-text-primary)]",
244
+ children: C("organizations.detail.workspacesTitle", "Organization workspaces")
245
+ }), /* @__PURE__ */ y("p", {
246
+ className: "text-sm text-[var(--color-text-secondary)]",
247
+ children: C("organizations.detail.workspacesSubtitle", "Create and manage workspaces for this organization.")
248
+ })] }), D(s.WORKSPACE_CREATE) && /* @__PURE__ */ b("button", {
249
+ onClick: () => T(`${E}/workspaces/new?organizationId=${w}`),
250
+ className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2.5 text-[var(--color-action-primary-text)] transition-all duration-200 hover:opacity-90 active:scale-[0.98]",
251
+ children: [/* @__PURE__ */ y(m, {
252
+ size: 16,
253
+ "aria-hidden": "true"
254
+ }), /* @__PURE__ */ y("span", { children: C("workspaces.create.button", "Create Workspace") })]
255
+ })]
256
+ }), F ? /* @__PURE__ */ y("div", {
257
+ className: "py-8",
258
+ children: /* @__PURE__ */ y(i, { message: C("workspaces.list.loading", "Loading workspaces...") })
259
+ }) : I ? /* @__PURE__ */ y(a, {
260
+ message: I.message,
261
+ action: {
262
+ label: C("common.retry", "Retry"),
263
+ onClick: () => {
264
+ L();
265
+ }
266
+ }
267
+ }) : P.length > 0 ? /* @__PURE__ */ y("div", {
268
+ className: "grid grid-cols-1 gap-4 xl:grid-cols-2",
269
+ children: P.map((e) => /* @__PURE__ */ y(u, {
270
+ workspace: e,
271
+ showActions: !1,
272
+ onClick: (e) => {
273
+ T(`${E}/workspaces/${e.id}`);
274
+ }
275
+ }, e.id))
276
+ }) : /* @__PURE__ */ y("div", {
277
+ className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-6",
278
+ children: /* @__PURE__ */ y(o, {
279
+ icon: /* @__PURE__ */ y(m, {
280
+ size: 40,
281
+ "aria-hidden": "true"
282
+ }),
283
+ title: C("workspaces.list.emptyTitle", "No workspaces yet"),
284
+ description: C("workspaces.list.emptyDescription", "Create a workspace when this organization is ready to collaborate with teams or projects."),
285
+ action: {
286
+ label: C("workspaces.create.button", "Create Workspace"),
287
+ onClick: () => T(`${E}/workspaces/new?organizationId=${w}`)
288
+ }
289
+ })
290
+ })]
291
+ })
292
+ })]
293
+ })]
294
+ })
295
+ }) : /* @__PURE__ */ y("div", {
296
+ className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
297
+ children: /* @__PURE__ */ y("div", {
298
+ className: "p-8 text-center text-[var(--color-text-secondary)]",
299
+ children: C("organizations.detail.noPermission", "You don't have permission to view this organization.")
300
+ })
301
+ });
302
+ }
303
+ //#endregion
304
+ export { C as OrganizationDetailPage };
305
+
306
+ //# sourceMappingURL=OrganizationDetailPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationDetailPage.js","names":[],"sources":["../../../../../src/organization-management/modules/organizations/pages/OrganizationDetailPage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { ArrowLeft, Briefcase, Building, Edit, Users } from 'lucide-react';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useOrgConsole } from '../../../providers/OrgConsoleProvider';\nimport { useOrganization } from '../hooks/useOrganizations';\nimport { OrganizationStatusBadge } from '../components/OrganizationStatusBadge';\nimport { LoadingState } from '../../../shared/components/feedback/LoadingState';\nimport { ErrorState } from '../../../shared/components/feedback/ErrorState';\nimport { EmptyState } from '../../../shared/components/feedback/EmptyState';\nimport { useWorkspacesByOrganization } from '../../workspaces/hooks/useWorkspaces';\nimport { WorkspaceCard } from '../../workspaces/components/WorkspaceCard';\nimport { PERMISSIONS } from '../../../constants/permissions';\nimport { useTr } from '../../../shared/hooks/useTr';\nimport { useOrganizationPageView } from '../../../hooks/useOrganizationPageView';\n\ntype ActiveTab = 'overview' | 'workspaces';\n\nfunction formatDate(dateString: string) {\n return new Date(dateString).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n}\n\nexport function OrganizationDetailPage() {\n const tr = useTr();\n const { id } = useParams<{ id: string }>();\n useOrganizationPageView('organizations.detail', { organizationId: id });\n const { navigate, basePath = '/organizations' } = useOrgConsole();\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const { organization, loading, error } = useOrganization(id ?? '');\n const [activeTab, setActiveTab] = useState<ActiveTab>('overview');\n\n const shouldFetchWorkspaces = activeTab === 'workspaces' && Boolean(id);\n const {\n workspaces,\n loading: workspacesLoading,\n error: workspacesError,\n refetch: refetchWorkspaces,\n } = useWorkspacesByOrganization(shouldFetchWorkspaces ? (id ?? '') : '', 50, 0);\n\n const tabItems = useMemo(\n () => [\n { id: 'overview' as const, label: tr('organizations.detail.tab.overview', 'Overview') },\n {\n id: 'workspaces' as const,\n label: `${tr('organizations.detail.tab.workspaces', 'Workspaces')} (${activeTab === 'workspaces' ? workspaces.length : (organization?.workspaceCount ?? 0)})`,\n },\n ],\n [activeTab, organization?.workspaceCount, tr, workspaces.length]\n );\n\n if (permissionsLoading) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] p-6\">\n <LoadingState message={tr('common.loadingPermissions', 'Loading permissions...')} />\n </div>\n );\n }\n\n if (!hasPermission(PERMISSIONS.ORG_READ)) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] p-6\">\n <div className=\"p-8 text-center text-[var(--color-text-secondary)]\">\n {tr(\n 'organizations.detail.noPermission',\n \"You don't have permission to view this organization.\"\n )}\n </div>\n </div>\n );\n }\n\n if (loading) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6\">\n <LoadingState\n message={tr('organizations.detail.loading', 'Loading organization details...')}\n />\n </div>\n );\n }\n\n if (error || !organization) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6\">\n <ErrorState\n message={error?.message || tr('organizations.detail.notFound', 'Organization not found')}\n action={{\n label: tr('organizations.create.back', 'Back to Organizations'),\n onClick: () => navigate(basePath),\n }}\n />\n </div>\n );\n }\n\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-300\">\n <div className=\"mx-auto flex w-full max-w-7xl flex-col gap-6\">\n <div className=\"space-y-4\">\n <button\n onClick={() => navigate(basePath)}\n className=\"inline-flex min-h-10 items-center gap-2 text-[var(--color-text-secondary)] transition-all duration-200 hover:text-[var(--color-text-primary)] active:scale-[0.98]\"\n >\n <ArrowLeft size={20} aria-hidden=\"true\" />\n <span className=\"text-sm font-medium\">\n {tr('organizations.create.back', 'Back to Organizations')}\n </span>\n </button>\n\n <div className=\"flex flex-col gap-4 rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-5 shadow-[var(--shadow-elevation-1)] lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"flex min-w-0 items-start gap-4\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--color-status-info-bgSubtle)] text-[var(--color-status-info-text)]\">\n <Building size={28} aria-hidden=\"true\" />\n </div>\n\n <div className=\"min-w-0 space-y-2\">\n <div className=\"flex flex-wrap items-start gap-3\">\n <h1 className=\"text-3xl font-bold text-[var(--color-text-primary)]\">\n {organization.name}\n </h1>\n <OrganizationStatusBadge status={organization.status} />\n </div>\n <p className=\"break-all font-mono text-sm text-[var(--color-text-secondary)]\">\n /{organization.slug}\n </p>\n {organization.description ? (\n <p className=\"max-w-2xl text-sm text-[var(--color-text-secondary)]\">\n {organization.description}\n </p>\n ) : null}\n </div>\n </div>\n\n <div className=\"flex flex-col gap-3 sm:flex-row\">\n <button\n onClick={() => navigate(`${basePath}/${id}/members`)}\n className=\"inline-flex min-h-11 items-center justify-center gap-2 rounded-lg border border-[var(--color-border-default)] px-4 py-2.5 text-[var(--color-text-primary)] transition-all duration-200 hover:bg-[var(--color-bg-subtle)]\"\n >\n <Users size={16} aria-hidden=\"true\" />\n <span>{tr('organizations.detail.manageMembers', 'Manage Members')}</span>\n </button>\n {hasPermission(PERMISSIONS.ORG_UPDATE) && (\n <button\n onClick={() => navigate(`${basePath}/${id}/edit`)}\n className=\"inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2.5 text-[var(--color-action-primary-text)] transition-all duration-200 hover:opacity-90 active:scale-[0.98]\"\n >\n <Edit size={16} aria-hidden=\"true\" />\n <span>{tr('organizations.edit.title', 'Edit Organization')}</span>\n </button>\n )}\n </div>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] shadow-[var(--shadow-elevation-1)]\">\n <div className=\"overflow-x-auto border-b border-[var(--color-border-default)]\">\n <div className=\"flex min-w-max gap-2 px-4 pt-4 sm:px-6\">\n {tabItems.map((tabItem) => {\n const isActive = activeTab === tabItem.id;\n return (\n <button\n key={tabItem.id}\n onClick={() => setActiveTab(tabItem.id)}\n className={`inline-flex min-h-11 items-center rounded-t-lg border-b-2 px-4 py-3 text-sm font-medium transition-colors ${\n isActive\n ? 'border-[var(--color-action-primary-bg)] text-[var(--color-action-primary-bg)]'\n : 'border-transparent text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)]'\n }`}\n aria-pressed={isActive}\n >\n {tabItem.label}\n </button>\n );\n })}\n </div>\n </div>\n\n <div className=\"p-4 sm:p-6\">\n {activeTab === 'overview' ? (\n <div className=\"grid grid-cols-1 gap-6 xl:grid-cols-[minmax(0,1fr)_320px]\">\n <section className=\"rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-5\">\n <h2 className=\"text-lg font-semibold text-[var(--color-text-primary)]\">\n {tr('organizations.detail.detailsSection', 'Organization details')}\n </h2>\n\n <dl className=\"mt-5 grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('common.name', 'Name')}\n </dt>\n <dd className=\"mt-1 text-sm text-[var(--color-text-primary)]\">\n {organization.name}\n </dd>\n </div>\n <div>\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('common.slug', 'Slug')}\n </dt>\n <dd className=\"mt-1 break-all font-mono text-sm text-[var(--color-text-primary)]\">\n {organization.slug}\n </dd>\n </div>\n <div>\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('common.status', 'Status')}\n </dt>\n <dd className=\"mt-1\">\n <OrganizationStatusBadge status={organization.status} />\n </dd>\n </div>\n <div>\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('organizations.detail.workspaceCount', 'Workspace count')}\n </dt>\n <dd className=\"mt-1 text-sm text-[var(--color-text-primary)]\">\n {organization.workspaceCount ?? 0}\n </dd>\n </div>\n {organization.website ? (\n <div className=\"sm:col-span-2\">\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('organizations.detail.website', 'Website')}\n </dt>\n <dd className=\"mt-1 break-all text-sm\">\n <a\n href={organization.website}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-[var(--color-action-primary-bg)] underline-offset-2 hover:underline\"\n >\n {organization.website}\n </a>\n </dd>\n </div>\n ) : null}\n {organization.description ? (\n <div className=\"sm:col-span-2\">\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('common.description', 'Description')}\n </dt>\n <dd className=\"mt-1 text-sm leading-6 text-[var(--color-text-primary)]\">\n {organization.description}\n </dd>\n </div>\n ) : null}\n </dl>\n </section>\n\n <aside className=\"rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-5\">\n <h2 className=\"text-lg font-semibold text-[var(--color-text-primary)]\">\n {tr('common.metadata', 'Metadata')}\n </h2>\n\n <dl className=\"mt-5 space-y-4\">\n <div>\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('common.created', 'Created')}\n </dt>\n <dd className=\"mt-1 text-sm text-[var(--color-text-primary)]\">\n {formatDate(organization.createdAt)}\n </dd>\n </div>\n <div>\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('common.lastUpdated', 'Last updated')}\n </dt>\n <dd className=\"mt-1 text-sm text-[var(--color-text-primary)]\">\n {formatDate(organization.updatedAt)}\n </dd>\n </div>\n <div>\n <dt className=\"text-sm font-medium text-[var(--color-text-secondary)]\">\n {tr('organizations.detail.tenantId', 'Tenant ID')}\n </dt>\n <dd className=\"mt-1 break-all font-mono text-sm text-[var(--color-text-primary)]\">\n {organization.tenantId}\n </dd>\n </div>\n </dl>\n </aside>\n </div>\n ) : (\n <section className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h2 className=\"text-lg font-semibold text-[var(--color-text-primary)]\">\n {tr('organizations.detail.workspacesTitle', 'Organization workspaces')}\n </h2>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">\n {tr(\n 'organizations.detail.workspacesSubtitle',\n 'Create and manage workspaces for this organization.'\n )}\n </p>\n </div>\n\n {hasPermission(PERMISSIONS.WORKSPACE_CREATE) && (\n <button\n onClick={() => navigate(`${basePath}/workspaces/new?organizationId=${id}`)}\n className=\"inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2.5 text-[var(--color-action-primary-text)] transition-all duration-200 hover:opacity-90 active:scale-[0.98]\"\n >\n <Briefcase size={16} aria-hidden=\"true\" />\n <span>{tr('workspaces.create.button', 'Create Workspace')}</span>\n </button>\n )}\n </div>\n\n {workspacesLoading ? (\n <div className=\"py-8\">\n <LoadingState\n message={tr('workspaces.list.loading', 'Loading workspaces...')}\n />\n </div>\n ) : workspacesError ? (\n <ErrorState\n message={workspacesError.message}\n action={{\n label: tr('common.retry', 'Retry'),\n onClick: () => {\n void refetchWorkspaces();\n },\n }}\n />\n ) : workspaces.length > 0 ? (\n <div className=\"grid grid-cols-1 gap-4 xl:grid-cols-2\">\n {workspaces.map((workspace) => (\n <WorkspaceCard\n key={workspace.id}\n workspace={workspace}\n showActions={false}\n onClick={(selectedWorkspace) => {\n navigate(`${basePath}/workspaces/${selectedWorkspace.id}`);\n }}\n />\n ))}\n </div>\n ) : (\n <div className=\"rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-6\">\n <EmptyState\n icon={<Briefcase size={40} aria-hidden=\"true\" />}\n title={tr('workspaces.list.emptyTitle', 'No workspaces yet')}\n description={tr(\n 'workspaces.list.emptyDescription',\n 'Create a workspace when this organization is ready to collaborate with teams or projects.'\n )}\n action={{\n label: tr('workspaces.create.button', 'Create Workspace'),\n onClick: () => navigate(`${basePath}/workspaces/new?organizationId=${id}`),\n }}\n />\n </div>\n )}\n </section>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Organization Edit Page
3
+ * Form to edit an existing organization
4
+ */
5
+ export declare function OrganizationEditPage(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=OrganizationEditPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationEditPage.d.ts","sourceRoot":"","sources":["../../../../../src/organization-management/modules/organizations/pages/OrganizationEditPage.tsx"],"names":[],"mappings":"AAcA;;;GAGG;AACH,wBAAgB,oBAAoB,4CAwHnC"}
@@ -0,0 +1,93 @@
1
+ import { useOrgConsole as e } from "../../../providers/OrgConsoleProvider.js";
2
+ import { toast as t } from "../../../../node_modules/sonner/dist/index.js";
3
+ import { useOrganization as n, useUpdateOrganization as r } from "../hooks/useOrganizations.js";
4
+ import { useTr as i } from "../../../shared/hooks/useTr.js";
5
+ import { LoadingState as a } from "../../../shared/components/feedback/LoadingState.js";
6
+ import { ErrorState as o } from "../../../shared/components/feedback/ErrorState.js";
7
+ import { PERMISSIONS as s } from "../../../constants/permissions.js";
8
+ import { useOrganizationPageView as c } from "../../../hooks/useOrganizationPageView.js";
9
+ import { OrganizationForm as l } from "../components/OrganizationForm.js";
10
+ import { ArrowLeft as u } from "lucide-react";
11
+ import { usePermissions as d } from "@burdenoff/fe-libs/shared/providers/shell";
12
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
13
+ import { useParams as m } from "react-router-dom";
14
+ //#region src/organization-management/modules/organizations/pages/OrganizationEditPage.tsx
15
+ function h() {
16
+ let h = i(), { id: g } = m();
17
+ c("organizations.edit", { organizationId: g });
18
+ let { navigate: _, basePath: v = "/organizations" } = e(), { hasPermission: y, isLoading: b } = d(), { organization: x, loading: S, error: C } = n(g), { updateOrganization: w, loading: T } = r(), E = async (e) => {
19
+ if (g) try {
20
+ let n = await w(g, e);
21
+ if (n.errors?.length) throw Error(n.errors[0]?.message ?? h("organizations.edit.failed", "Failed to update organization"));
22
+ t.success(h("organizations.edit.success", "Organization updated successfully")), _(`${v}/${g}`);
23
+ } catch (e) {
24
+ t.error(e instanceof Error ? e.message : h("organizations.edit.failed", "Failed to update organization"));
25
+ }
26
+ }, D = () => {
27
+ _(`${v}/${g}`);
28
+ };
29
+ return b ? /* @__PURE__ */ f("div", {
30
+ className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
31
+ children: /* @__PURE__ */ f(a, { message: h("common.loadingPermissions", "Loading permissions...") })
32
+ }) : y(s.ORG_UPDATE) ? S ? /* @__PURE__ */ f("div", {
33
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
34
+ children: /* @__PURE__ */ f(a, { message: h("organizations.edit.loading", "Loading organization...") })
35
+ }) : C || !x ? /* @__PURE__ */ f("div", {
36
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
37
+ children: /* @__PURE__ */ f(o, {
38
+ message: C?.message || h("organizations.detail.notFound", "Organization not found"),
39
+ action: {
40
+ label: h("organizations.create.back", "Back to Organizations"),
41
+ onClick: () => _(v)
42
+ }
43
+ })
44
+ }) : /* @__PURE__ */ p("div", {
45
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-300",
46
+ children: [/* @__PURE__ */ p("div", {
47
+ className: "mb-6",
48
+ children: [
49
+ /* @__PURE__ */ p("button", {
50
+ onClick: D,
51
+ className: "\n inline-flex items-center gap-2 mb-4\n text-[var(--color-text-secondary)]\n hover:text-[var(--color-text-primary)]\n active:scale-[0.98]\n transition-all duration-200\n ",
52
+ children: [/* @__PURE__ */ f(u, { size: 20 }), /* @__PURE__ */ p("span", {
53
+ className: "text-sm font-medium",
54
+ children: [
55
+ h("common.backTo", "Back to"),
56
+ " ",
57
+ x.name
58
+ ]
59
+ })]
60
+ }),
61
+ /* @__PURE__ */ f("h1", {
62
+ className: "text-3xl font-bold text-[var(--color-text-primary)] mb-2",
63
+ children: h("organizations.edit.title", "Edit Organization")
64
+ }),
65
+ /* @__PURE__ */ f("p", {
66
+ className: "text-[var(--color-text-secondary)]",
67
+ children: h("organizations.edit.subtitle", "Update organization information")
68
+ })
69
+ ]
70
+ }), /* @__PURE__ */ f("div", {
71
+ className: "max-w-2xl",
72
+ children: /* @__PURE__ */ f("div", {
73
+ className: "bg-[var(--color-bg-surface)] border border-[var(--color-border-default)] rounded-lg p-6 shadow-[var(--shadow-elevation-1)]",
74
+ children: /* @__PURE__ */ f(l, {
75
+ organization: x,
76
+ onSubmit: E,
77
+ onCancel: D,
78
+ loading: T
79
+ })
80
+ })
81
+ })]
82
+ }) : /* @__PURE__ */ f("div", {
83
+ className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
84
+ children: /* @__PURE__ */ f("div", {
85
+ className: "p-8 text-center text-[var(--color-text-secondary)]",
86
+ children: h("organizations.edit.noPermission", "You don't have permission to edit organizations.")
87
+ })
88
+ });
89
+ }
90
+ //#endregion
91
+ export { h as OrganizationEditPage };
92
+
93
+ //# sourceMappingURL=OrganizationEditPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationEditPage.js","names":[],"sources":["../../../../../src/organization-management/modules/organizations/pages/OrganizationEditPage.tsx"],"sourcesContent":["import { useParams } from 'react-router-dom';\nimport { ArrowLeft } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useOrgConsole } from '../../../providers/OrgConsoleProvider';\nimport { useOrganization, useUpdateOrganization } from '../hooks/useOrganizations';\nimport { OrganizationForm } from '../components/OrganizationForm';\nimport { LoadingState } from '../../../shared/components/feedback/LoadingState';\nimport { ErrorState } from '../../../shared/components/feedback/ErrorState';\nimport { PERMISSIONS } from '../../../constants/permissions';\nimport { useTr } from '../../../shared/hooks/useTr';\nimport { useOrganizationPageView } from '../../../hooks/useOrganizationPageView';\nimport type { UpdateOrganizationInput } from '../types';\n\n/**\n * Organization Edit Page\n * Form to edit an existing organization\n */\nexport function OrganizationEditPage() {\n const tr = useTr();\n const { id } = useParams<{ id: string }>();\n useOrganizationPageView('organizations.edit', { organizationId: id });\n const { navigate, basePath = '/organizations' } = useOrgConsole();\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const { organization, loading: fetchLoading, error } = useOrganization(id!);\n const { updateOrganization, loading: updateLoading } = useUpdateOrganization();\n\n const handleSubmit = async (data: UpdateOrganizationInput) => {\n if (!id) return;\n\n try {\n const result = await updateOrganization(id, data);\n if (result.errors?.length) {\n throw new Error(\n result.errors[0]?.message ??\n tr('organizations.edit.failed', 'Failed to update organization')\n );\n }\n\n toast.success(tr('organizations.edit.success', 'Organization updated successfully'));\n navigate(`${basePath}/${id}`);\n } catch (error) {\n toast.error(\n error instanceof Error\n ? error.message\n : tr('organizations.edit.failed', 'Failed to update organization')\n );\n }\n };\n\n const handleCancel = () => {\n navigate(`${basePath}/${id}`);\n };\n\n if (permissionsLoading) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] p-6\">\n <LoadingState message={tr('common.loadingPermissions', 'Loading permissions...')} />\n </div>\n );\n }\n\n if (!hasPermission(PERMISSIONS.ORG_UPDATE)) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] p-6\">\n <div className=\"p-8 text-center text-[var(--color-text-secondary)]\">\n {tr(\n 'organizations.edit.noPermission',\n \"You don't have permission to edit organizations.\"\n )}\n </div>\n </div>\n );\n }\n\n if (fetchLoading) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6\">\n <LoadingState message={tr('organizations.edit.loading', 'Loading organization...')} />\n </div>\n );\n }\n\n if (error || !organization) {\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6\">\n <ErrorState\n message={error?.message || tr('organizations.detail.notFound', 'Organization not found')}\n action={{\n label: tr('organizations.create.back', 'Back to Organizations'),\n onClick: () => navigate(basePath),\n }}\n />\n </div>\n );\n }\n\n return (\n <div className=\"min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-300\">\n {/* Page Header */}\n <div className=\"mb-6\">\n <button\n onClick={handleCancel}\n className=\"\n inline-flex items-center gap-2 mb-4\n text-[var(--color-text-secondary)]\n hover:text-[var(--color-text-primary)]\n active:scale-[0.98]\n transition-all duration-200\n \"\n >\n <ArrowLeft size={20} />\n <span className=\"text-sm font-medium\">\n {tr('common.backTo', 'Back to')} {organization.name}\n </span>\n </button>\n\n <h1 className=\"text-3xl font-bold text-[var(--color-text-primary)] mb-2\">\n {tr('organizations.edit.title', 'Edit Organization')}\n </h1>\n <p className=\"text-[var(--color-text-secondary)]\">\n {tr('organizations.edit.subtitle', 'Update organization information')}\n </p>\n </div>\n\n {/* Form Card */}\n <div className=\"max-w-2xl\">\n <div className=\"bg-[var(--color-bg-surface)] border border-[var(--color-border-default)] rounded-lg p-6 shadow-[var(--shadow-elevation-1)]\">\n <OrganizationForm\n organization={organization}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n loading={updateLoading}\n />\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAkBA,SAAgB,IAAuB;CACrC,IAAM,IAAK,GAAO,EACZ,EAAE,UAAO,GAA2B;AAC1C,GAAwB,sBAAsB,EAAE,gBAAgB,GAAI,CAAC;CACrE,IAAM,EAAE,aAAU,cAAW,qBAAqB,GAAe,EAC3D,EAAE,kBAAe,WAAW,MAAuB,GAAgB,EACnE,EAAE,iBAAc,SAAS,GAAc,aAAU,EAAgB,EAAI,EACrE,EAAE,uBAAoB,SAAS,MAAkB,GAAuB,EAExE,IAAe,OAAO,MAAkC;AACvD,QAEL,KAAI;GACF,IAAM,IAAS,MAAM,EAAmB,GAAI,EAAK;AACjD,OAAI,EAAO,QAAQ,OACjB,OAAU,MACR,EAAO,OAAO,IAAI,WAChB,EAAG,6BAA6B,gCAAgC,CACnE;AAIH,GADA,EAAM,QAAQ,EAAG,8BAA8B,oCAAoC,CAAC,EACpF,EAAS,GAAG,EAAS,GAAG,IAAK;WACtB,GAAO;AACd,KAAM,MACJ,aAAiB,QACb,EAAM,UACN,EAAG,6BAA6B,gCAAgC,CACrE;;IAIC,UAAqB;AACzB,IAAS,GAAG,EAAS,GAAG,IAAK;;AA8C/B,QA3CI,IAEA,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAc,SAAS,EAAG,6BAA6B,yBAAyB,EAAI,CAAA;EAChF,CAAA,GAIL,EAAc,EAAY,WAAW,GAatC,IAEA,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAc,SAAS,EAAG,8BAA8B,0BAA0B,EAAI,CAAA;EAClF,CAAA,GAIN,KAAS,CAAC,IAEV,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GACE,SAAS,GAAO,WAAW,EAAG,iCAAiC,yBAAyB;GACxF,QAAQ;IACN,OAAO,EAAG,6BAA6B,wBAAwB;IAC/D,eAAe,EAAS,EAAS;IAClC;GACD,CAAA;EACE,CAAA,GAKR,kBAAC,OAAD;EAAK,WAAU;YAAf,CAEE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,UAAD;KACE,SAAS;KACT,WAAU;eAFZ,CAUE,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA,EACvB,kBAAC,QAAD;MAAM,WAAU;gBAAhB;OACG,EAAG,iBAAiB,UAAU;OAAC;OAAE,EAAa;OAC1C;QACA;;IAET,kBAAC,MAAD;KAAI,WAAU;eACX,EAAG,4BAA4B,oBAAoB;KACjD,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eACV,EAAG,+BAA+B,kCAAkC;KACnE,CAAA;IACA;MAGN,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KACgB;KACd,UAAU;KACV,UAAU;KACV,SAAS;KACT,CAAA;IACE,CAAA;GACF,CAAA,CACF;MAxEJ,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aACZ,EACC,mCACA,mDACD;GACG,CAAA;EACF,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function OrganizationsListPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=OrganizationsListPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationsListPage.d.ts","sourceRoot":"","sources":["../../../../../src/organization-management/modules/organizations/pages/OrganizationsListPage.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,qBAAqB,4CAohBpC"}