@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.
- package/README.md +64 -0
- package/dist/generated/global-operations.d.ts +1647 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-operations.js +724 -0
- package/dist/generated/global-operations.js.map +1 -0
- package/dist/generated/global-types.d.ts +20716 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/global-types.js +8 -0
- package/dist/generated/global-types.js.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +53363 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/node_modules/sonner/dist/index.js +163 -0
- package/dist/node_modules/sonner/dist/index.js.map +1 -0
- package/dist/node_modules/zod/v3/ZodError.js +82 -0
- package/dist/node_modules/zod/v3/ZodError.js.map +1 -0
- package/dist/node_modules/zod/v3/errors.js +10 -0
- package/dist/node_modules/zod/v3/errors.js.map +1 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.js +9 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.js +93 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
- package/dist/node_modules/zod/v3/helpers/util.js +76 -0
- package/dist/node_modules/zod/v3/helpers/util.js.map +1 -0
- package/dist/node_modules/zod/v3/locales/en.js +62 -0
- package/dist/node_modules/zod/v3/locales/en.js.map +1 -0
- package/dist/node_modules/zod/v3/types.js +2441 -0
- package/dist/node_modules/zod/v3/types.js.map +1 -0
- package/dist/organization-management/AdminOrganizationRoot.d.ts +16 -0
- package/dist/organization-management/AdminOrganizationRoot.d.ts.map +1 -0
- package/dist/organization-management/AdminOrganizationRoot.js +76 -0
- package/dist/organization-management/AdminOrganizationRoot.js.map +1 -0
- package/dist/organization-management/AdminOrganizationRoutes.d.ts +16 -0
- package/dist/organization-management/AdminOrganizationRoutes.d.ts.map +1 -0
- package/dist/organization-management/AdminOrganizationRoutes.js +73 -0
- package/dist/organization-management/AdminOrganizationRoutes.js.map +1 -0
- package/dist/organization-management/UserOrganizationRoot.d.ts +17 -0
- package/dist/organization-management/UserOrganizationRoot.d.ts.map +1 -0
- package/dist/organization-management/UserOrganizationRoot.js +45 -0
- package/dist/organization-management/UserOrganizationRoot.js.map +1 -0
- package/dist/organization-management/UserOrganizationRoutes.d.ts +12 -0
- package/dist/organization-management/UserOrganizationRoutes.d.ts.map +1 -0
- package/dist/organization-management/UserOrganizationRoutes.js +30 -0
- package/dist/organization-management/UserOrganizationRoutes.js.map +1 -0
- package/dist/organization-management/constants/permissions.d.ts +30 -0
- package/dist/organization-management/constants/permissions.d.ts.map +1 -0
- package/dist/organization-management/constants/permissions.js +22 -0
- package/dist/organization-management/constants/permissions.js.map +1 -0
- package/dist/organization-management/hooks/useOrganizationEventEmitter.d.ts +19 -0
- package/dist/organization-management/hooks/useOrganizationEventEmitter.d.ts.map +1 -0
- package/dist/organization-management/hooks/useOrganizationEventEmitter.js +15 -0
- package/dist/organization-management/hooks/useOrganizationEventEmitter.js.map +1 -0
- package/dist/organization-management/hooks/useOrganizationPageView.d.ts +11 -0
- package/dist/organization-management/hooks/useOrganizationPageView.d.ts.map +1 -0
- package/dist/organization-management/hooks/useOrganizationPageView.js +24 -0
- package/dist/organization-management/hooks/useOrganizationPageView.js.map +1 -0
- package/dist/organization-management/modules/members/components/InviteMemberForm.d.ts +18 -0
- package/dist/organization-management/modules/members/components/InviteMemberForm.d.ts.map +1 -0
- package/dist/organization-management/modules/members/components/InviteMemberForm.js +119 -0
- package/dist/organization-management/modules/members/components/InviteMemberForm.js.map +1 -0
- package/dist/organization-management/modules/members/components/InviteStatusBadge.d.ts +6 -0
- package/dist/organization-management/modules/members/components/InviteStatusBadge.d.ts.map +1 -0
- package/dist/organization-management/modules/members/components/InviteStatusBadge.js +51 -0
- package/dist/organization-management/modules/members/components/InviteStatusBadge.js.map +1 -0
- package/dist/organization-management/modules/members/components/MemberRoleBadge.d.ts +11 -0
- package/dist/organization-management/modules/members/components/MemberRoleBadge.d.ts.map +1 -0
- package/dist/organization-management/modules/members/components/MemberRoleBadge.js +56 -0
- package/dist/organization-management/modules/members/components/MemberRoleBadge.js.map +1 -0
- package/dist/organization-management/modules/members/components/MyInviteCard.d.ts +22 -0
- package/dist/organization-management/modules/members/components/MyInviteCard.d.ts.map +1 -0
- package/dist/organization-management/modules/members/components/MyInviteCard.js +70 -0
- package/dist/organization-management/modules/members/components/MyInviteCard.js.map +1 -0
- package/dist/organization-management/modules/members/components/PendingInvitesList.d.ts +6 -0
- package/dist/organization-management/modules/members/components/PendingInvitesList.d.ts.map +1 -0
- package/dist/organization-management/modules/members/components/PendingInvitesList.js +141 -0
- package/dist/organization-management/modules/members/components/PendingInvitesList.js.map +1 -0
- package/dist/organization-management/modules/members/hooks/useInvites.d.ts +75 -0
- package/dist/organization-management/modules/members/hooks/useInvites.d.ts.map +1 -0
- package/dist/organization-management/modules/members/hooks/useInvites.js +253 -0
- package/dist/organization-management/modules/members/hooks/useInvites.js.map +1 -0
- package/dist/organization-management/modules/members/hooks/useMembers.d.ts +84 -0
- package/dist/organization-management/modules/members/hooks/useMembers.d.ts.map +1 -0
- package/dist/organization-management/modules/members/hooks/useMembers.js +95 -0
- package/dist/organization-management/modules/members/hooks/useMembers.js.map +1 -0
- package/dist/organization-management/modules/members/pages/InviteMemberPage.d.ts +6 -0
- package/dist/organization-management/modules/members/pages/InviteMemberPage.d.ts.map +1 -0
- package/dist/organization-management/modules/members/pages/InviteMemberPage.js +91 -0
- package/dist/organization-management/modules/members/pages/InviteMemberPage.js.map +1 -0
- package/dist/organization-management/modules/members/pages/MemberDetailPage.d.ts +6 -0
- package/dist/organization-management/modules/members/pages/MemberDetailPage.d.ts.map +1 -0
- package/dist/organization-management/modules/members/pages/MemberDetailPage.js +115 -0
- package/dist/organization-management/modules/members/pages/MemberDetailPage.js.map +1 -0
- package/dist/organization-management/modules/members/pages/MembersListPage.d.ts +2 -0
- package/dist/organization-management/modules/members/pages/MembersListPage.d.ts.map +1 -0
- package/dist/organization-management/modules/members/pages/MembersListPage.js +424 -0
- package/dist/organization-management/modules/members/pages/MembersListPage.js.map +1 -0
- package/dist/organization-management/modules/members/pages/MyInvitesPage.d.ts +6 -0
- package/dist/organization-management/modules/members/pages/MyInvitesPage.d.ts.map +1 -0
- package/dist/organization-management/modules/members/pages/MyInvitesPage.js +114 -0
- package/dist/organization-management/modules/members/pages/MyInvitesPage.js.map +1 -0
- package/dist/organization-management/modules/members/types/index.d.ts +35 -0
- package/dist/organization-management/modules/members/types/index.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/components/OrganizationForm.d.ts +13 -0
- package/dist/organization-management/modules/organizations/components/OrganizationForm.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/components/OrganizationForm.js +325 -0
- package/dist/organization-management/modules/organizations/components/OrganizationForm.js.map +1 -0
- package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.d.ts +13 -0
- package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.js +49 -0
- package/dist/organization-management/modules/organizations/components/OrganizationStatusBadge.js.map +1 -0
- package/dist/organization-management/modules/organizations/hooks/useOrganizations.d.ts +86 -0
- package/dist/organization-management/modules/organizations/hooks/useOrganizations.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/hooks/useOrganizations.js +164 -0
- package/dist/organization-management/modules/organizations/hooks/useOrganizations.js.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.d.ts +6 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js +76 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.d.ts +2 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js +306 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.d.ts +6 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js +93 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.d.ts +2 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js +448 -0
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js.map +1 -0
- package/dist/organization-management/modules/organizations/schemas/index.d.ts +53 -0
- package/dist/organization-management/modules/organizations/schemas/index.d.ts.map +1 -0
- package/dist/organization-management/modules/organizations/schemas/index.js +25 -0
- package/dist/organization-management/modules/organizations/schemas/index.js.map +1 -0
- package/dist/organization-management/modules/organizations/types/index.d.ts +34 -0
- package/dist/organization-management/modules/organizations/types/index.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.d.ts +13 -0
- package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.js +147 -0
- package/dist/organization-management/modules/workspaces/components/AddWorkspaceMemberDialog.js.map +1 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.d.ts +16 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js +107 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js.map +1 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceForm.d.ts +16 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceForm.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js +386 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js.map +1 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.d.ts +13 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.js +49 -0
- package/dist/organization-management/modules/workspaces/components/WorkspaceStatusBadge.js.map +1 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.d.ts +47 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.js +46 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaceMembers.js.map +1 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.d.ts +133 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.js +111 -0
- package/dist/organization-management/modules/workspaces/hooks/useWorkspaces.js.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.d.ts +2 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js +82 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.d.ts +2 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js +438 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.d.ts +2 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js +90 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.d.ts +2 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js +465 -0
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js.map +1 -0
- package/dist/organization-management/modules/workspaces/schemas/index.d.ts +44 -0
- package/dist/organization-management/modules/workspaces/schemas/index.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/schemas/index.js +22 -0
- package/dist/organization-management/modules/workspaces/schemas/index.js.map +1 -0
- package/dist/organization-management/modules/workspaces/types/index.d.ts +39 -0
- package/dist/organization-management/modules/workspaces/types/index.d.ts.map +1 -0
- package/dist/organization-management/modules/workspaces/types/workspace-member.d.ts +48 -0
- package/dist/organization-management/modules/workspaces/types/workspace-member.d.ts.map +1 -0
- package/dist/organization-management/providers/OrgConsoleProvider.d.ts +19 -0
- package/dist/organization-management/providers/OrgConsoleProvider.d.ts.map +1 -0
- package/dist/organization-management/providers/OrgConsoleProvider.js +24 -0
- package/dist/organization-management/providers/OrgConsoleProvider.js.map +1 -0
- package/dist/organization-management/shared/components/dialog/ConfirmDialog.d.ts +28 -0
- package/dist/organization-management/shared/components/dialog/ConfirmDialog.d.ts.map +1 -0
- package/dist/organization-management/shared/components/dialog/ConfirmDialog.js +105 -0
- package/dist/organization-management/shared/components/dialog/ConfirmDialog.js.map +1 -0
- package/dist/organization-management/shared/components/feedback/EmptyState.d.ts +14 -0
- package/dist/organization-management/shared/components/feedback/EmptyState.d.ts.map +1 -0
- package/dist/organization-management/shared/components/feedback/EmptyState.js +30 -0
- package/dist/organization-management/shared/components/feedback/EmptyState.js.map +1 -0
- package/dist/organization-management/shared/components/feedback/ErrorState.d.ts +11 -0
- package/dist/organization-management/shared/components/feedback/ErrorState.d.ts.map +1 -0
- package/dist/organization-management/shared/components/feedback/ErrorState.js +37 -0
- package/dist/organization-management/shared/components/feedback/ErrorState.js.map +1 -0
- package/dist/organization-management/shared/components/feedback/LoadingState.d.ts +6 -0
- package/dist/organization-management/shared/components/feedback/LoadingState.d.ts.map +1 -0
- package/dist/organization-management/shared/components/feedback/LoadingState.js +24 -0
- package/dist/organization-management/shared/components/feedback/LoadingState.js.map +1 -0
- package/dist/organization-management/shared/components/input/SearchInput.d.ts +15 -0
- package/dist/organization-management/shared/components/input/SearchInput.d.ts.map +1 -0
- package/dist/organization-management/shared/components/input/SearchInput.js +40 -0
- package/dist/organization-management/shared/components/input/SearchInput.js.map +1 -0
- package/dist/organization-management/shared/components/input/SelectionCheckbox.d.ts +10 -0
- package/dist/organization-management/shared/components/input/SelectionCheckbox.d.ts.map +1 -0
- package/dist/organization-management/shared/components/input/SelectionCheckbox.js +21 -0
- package/dist/organization-management/shared/components/input/SelectionCheckbox.js.map +1 -0
- package/dist/organization-management/shared/hooks/useDebouncedValue.d.ts +2 -0
- package/dist/organization-management/shared/hooks/useDebouncedValue.d.ts.map +1 -0
- package/dist/organization-management/shared/hooks/useDebouncedValue.js +17 -0
- package/dist/organization-management/shared/hooks/useDebouncedValue.js.map +1 -0
- package/dist/organization-management/shared/hooks/useTr.d.ts +14 -0
- package/dist/organization-management/shared/hooks/useTr.d.ts.map +1 -0
- package/dist/organization-management/shared/hooks/useTr.js +14 -0
- package/dist/organization-management/shared/hooks/useTr.js.map +1 -0
- package/dist/organization-management/shared/logger.d.ts +11 -0
- package/dist/organization-management/shared/logger.d.ts.map +1 -0
- package/dist/organization-management/shared/logger.js +46 -0
- package/dist/organization-management/shared/logger.js.map +1 -0
- package/dist/organization-management/shared/recaptcha.d.ts +2 -0
- package/dist/organization-management/shared/recaptcha.d.ts.map +1 -0
- package/dist/organization-management/shared/recaptcha.js +6 -0
- package/dist/organization-management/shared/recaptcha.js.map +1 -0
- package/dist/organization-management/shared/types/graphql.d.ts +131 -0
- package/dist/organization-management/shared/types/graphql.d.ts.map +1 -0
- package/dist/organization-management/shared/types/graphql.js +10 -0
- package/dist/organization-management/shared/types/graphql.js.map +1 -0
- package/dist/organization-management/shared/utils/cn.d.ts +8 -0
- package/dist/organization-management/shared/utils/cn.d.ts.map +1 -0
- package/dist/organization-management/types/index.d.ts +46 -0
- package/dist/organization-management/types/index.d.ts.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/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
|
package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map
ADDED
|
@@ -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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"}
|
package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.d.ts.map
ADDED
|
@@ -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"}
|
package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.d.ts.map
ADDED
|
@@ -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"}
|