@burdenoff/microfe-organization 2026.624.1 → 2026.625.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/organization-management/AdminOrganizationRoot.js +4 -4
- package/dist/organization-management/AdminOrganizationRoot.js.map +1 -1
- package/dist/organization-management/UserOrganizationRoot.js +4 -4
- package/dist/organization-management/UserOrganizationRoot.js.map +1 -1
- package/dist/organization-management/modules/members/components/BulkInviteForm.js +155 -174
- package/dist/organization-management/modules/members/components/BulkInviteForm.js.map +1 -1
- package/dist/organization-management/modules/members/components/PendingInvitesList.js +78 -101
- package/dist/organization-management/modules/members/components/PendingInvitesList.js.map +1 -1
- package/dist/organization-management/modules/members/pages/InviteMemberPage.js +58 -52
- package/dist/organization-management/modules/members/pages/InviteMemberPage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/InvitePeoplePage.js +42 -40
- package/dist/organization-management/modules/members/pages/InvitePeoplePage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/MemberDetailPage.js +71 -69
- package/dist/organization-management/modules/members/pages/MemberDetailPage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/MembersListPage.js +233 -204
- package/dist/organization-management/modules/members/pages/MembersListPage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/MyInvitesPage.js +38 -37
- package/dist/organization-management/modules/members/pages/MyInvitesPage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js +134 -132
- package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js +39 -37
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js +164 -167
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js +49 -47
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js +258 -230
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js +43 -50
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js +40 -38
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js +230 -299
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js +47 -45
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js +117 -74
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js.map +1 -1
- package/dist/organization-management/shared/components/feedback/EmptyState.js +1 -1
- package/dist/organization-management/shared/components/feedback/EmptyState.js.map +1 -1
- package/dist/organization-management/shared/components/feedback/ErrorState.js +1 -1
- package/dist/organization-management/shared/components/feedback/ErrorState.js.map +1 -1
- package/dist/organization-management/shared/components/feedback/LoadingState.js +1 -1
- package/dist/organization-management/shared/components/feedback/LoadingState.js.map +1 -1
- package/package.json +2 -2
|
@@ -8,71 +8,73 @@ import { useOrganizationPageView as o } from "../../../hooks/useOrganizationPage
|
|
|
8
8
|
import { useTenants as s } from "../../workspaces/hooks/useWorkspaces.js";
|
|
9
9
|
import { OrganizationForm as c } from "../components/OrganizationForm.js";
|
|
10
10
|
import { ArrowLeft as l } from "lucide-react";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { GlassCard as u } from "@burdenoff/fe-libs/ui";
|
|
12
|
+
import { usePermissions as d } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
13
|
+
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
13
14
|
//#region src/organization-management/modules/organizations/pages/OrganizationCreatePage.tsx
|
|
14
|
-
function
|
|
15
|
+
function m() {
|
|
15
16
|
o("organizations.create");
|
|
16
|
-
let
|
|
17
|
+
let m = r(), { navigate: h, basePath: g = "/organizations", tenantId: _ } = e(), { hasPermission: v, isLoading: y } = d(), { createOrganization: b, loading: x } = n(), { tenants: S } = s(100, 0, !0), C = S.find((e) => e.type === "SHARED"), w = _ ? S.find((e) => e.id === _) : C ?? (S.length >= 1 ? S[0] : void 0), T = S.length <= 1, E = async (e) => {
|
|
17
18
|
try {
|
|
18
|
-
let n = await
|
|
19
|
-
if (n.errors?.length) throw Error(n.errors[0]?.message ??
|
|
20
|
-
n.data?.createOrganization && (t.success(
|
|
19
|
+
let n = await b(e);
|
|
20
|
+
if (n.errors?.length) throw Error(n.errors[0]?.message ?? m("organizations.create.failed", "Failed to create organization"));
|
|
21
|
+
n.data?.createOrganization && (t.success(m("organizations.create.success", "Organization created successfully")), h(`${g}/${n.data.createOrganization.id}`));
|
|
21
22
|
} catch (e) {
|
|
22
|
-
t.error(e instanceof Error ? e.message :
|
|
23
|
+
t.error(e instanceof Error ? e.message : m("organizations.create.failed", "Failed to create organization"));
|
|
23
24
|
}
|
|
24
|
-
},
|
|
25
|
-
|
|
25
|
+
}, D = () => {
|
|
26
|
+
h(g);
|
|
26
27
|
};
|
|
27
|
-
return
|
|
28
|
+
return y ? /* @__PURE__ */ f("div", {
|
|
28
29
|
className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
|
|
29
|
-
children: /* @__PURE__ */
|
|
30
|
-
}) :
|
|
31
|
-
className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-
|
|
32
|
-
children: [/* @__PURE__ */
|
|
30
|
+
children: /* @__PURE__ */ f(i, { message: m("common.loadingPermissions", "Loading permissions...") })
|
|
31
|
+
}) : v(a.ORG_CREATE) ? /* @__PURE__ */ p("div", {
|
|
32
|
+
className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-200",
|
|
33
|
+
children: [/* @__PURE__ */ p("div", {
|
|
33
34
|
className: "mb-6",
|
|
34
35
|
children: [
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
+
/* @__PURE__ */ p("button", {
|
|
36
37
|
type: "button",
|
|
37
|
-
onClick:
|
|
38
|
+
onClick: D,
|
|
38
39
|
className: "\n inline-flex items-center gap-2 mb-4\n text-[var(--color-text-secondary)]\n hover:text-[var(--color-text-primary)]\n \n transition-all duration-200\n ",
|
|
39
|
-
children: [/* @__PURE__ */
|
|
40
|
+
children: [/* @__PURE__ */ f(l, { size: 20 }), /* @__PURE__ */ f("span", {
|
|
40
41
|
className: "text-sm font-medium",
|
|
41
|
-
children:
|
|
42
|
+
children: m("organizations.create.back", "Back to Organizations")
|
|
42
43
|
})]
|
|
43
44
|
}),
|
|
44
|
-
/* @__PURE__ */
|
|
45
|
+
/* @__PURE__ */ f("h1", {
|
|
45
46
|
className: "text-3xl font-bold text-[var(--color-text-primary)] mb-2",
|
|
46
|
-
children:
|
|
47
|
+
children: m("organizations.create.title", "Create Organization")
|
|
47
48
|
}),
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
+
/* @__PURE__ */ f("p", {
|
|
49
50
|
className: "text-[var(--color-text-secondary)]",
|
|
50
|
-
children:
|
|
51
|
+
children: m("organizations.create.subtitle", "Add a new organization to a tenant")
|
|
51
52
|
})
|
|
52
53
|
]
|
|
53
|
-
}), /* @__PURE__ */
|
|
54
|
+
}), /* @__PURE__ */ f("div", {
|
|
54
55
|
className: "max-w-2xl",
|
|
55
|
-
children: /* @__PURE__ */
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
56
|
+
children: /* @__PURE__ */ f(u, {
|
|
57
|
+
treatment: "plain",
|
|
58
|
+
className: "border-border-seam p-6",
|
|
59
|
+
children: /* @__PURE__ */ f(c, {
|
|
60
|
+
tenantId: _ || w?.id,
|
|
61
|
+
tenantName: w?.name,
|
|
62
|
+
hideTenantSelector: T,
|
|
63
|
+
onSubmit: E,
|
|
64
|
+
onCancel: D,
|
|
65
|
+
loading: x
|
|
64
66
|
})
|
|
65
67
|
})
|
|
66
68
|
})]
|
|
67
|
-
}) : /* @__PURE__ */
|
|
69
|
+
}) : /* @__PURE__ */ f("div", {
|
|
68
70
|
className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
|
|
69
|
-
children: /* @__PURE__ */
|
|
71
|
+
children: /* @__PURE__ */ f("div", {
|
|
70
72
|
className: "p-8 text-center text-[var(--color-text-secondary)]",
|
|
71
|
-
children:
|
|
73
|
+
children: m("organizations.create.noPermission", "You don't have permission to create organizations.")
|
|
72
74
|
})
|
|
73
75
|
});
|
|
74
76
|
}
|
|
75
77
|
//#endregion
|
|
76
|
-
export {
|
|
78
|
+
export { m as OrganizationCreatePage };
|
|
77
79
|
|
|
78
80
|
//# sourceMappingURL=OrganizationCreatePage.js.map
|
package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrganizationCreatePage.js","names":[],"sources":["../../../../../src/organization-management/modules/organizations/pages/OrganizationCreatePage.tsx"],"sourcesContent":["import { ArrowLeft } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useOrgConsole } from '../../../providers/OrgConsoleProvider';\nimport { useCreateOrganization } from '../hooks/useOrganizations';\nimport { useTenants } from '../../workspaces/hooks/useWorkspaces';\nimport { OrganizationForm } from '../components/OrganizationForm';\nimport { LoadingState } from '../../../shared/components/feedback/LoadingState';\nimport { PERMISSIONS } from '../../../constants/permissions';\nimport { useTr } from '../../../shared/hooks/useTr';\nimport { useOrganizationPageView } from '../../../hooks/useOrganizationPageView';\nimport type { CreateOrganizationInput, UpdateOrganizationInput } from '../types';\n\n/**\n * Organization Create Page\n * Form to create a new organization\n */\nexport function OrganizationCreatePage() {\n useOrganizationPageView('organizations.create');\n const tr = useTr();\n const { navigate, basePath = '/organizations', tenantId } = useOrgConsole();\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const { createOrganization, loading } = useCreateOrganization();\n const { tenants } = useTenants(100, 0, true);\n\n // Prefer an explicit context tenant; otherwise pick the shared tenant (or the\n // only one available). With a single shared tenant there is nothing to\n // choose, so we hide the tenant picker entirely and just submit it.\n const sharedTenant = tenants.find((tenant) => tenant.type === 'SHARED');\n const selectedTenant = tenantId\n ? tenants.find((tenant) => tenant.id === tenantId)\n : (sharedTenant ?? (tenants.length >= 1 ? tenants[0] : undefined));\n\n // Show the tenant picker only when the user genuinely has more than one\n // tenant to choose between (e.g. a dedicated tenant in addition to shared).\n const hideTenantSelector = tenants.length <= 1;\n\n const handleSubmit = async (data: CreateOrganizationInput | UpdateOrganizationInput) => {\n try {\n const createData = data as CreateOrganizationInput;\n const result = await createOrganization(createData);\n if (result.errors?.length) {\n throw new Error(\n result.errors[0]?.message ??\n tr('organizations.create.failed', 'Failed to create organization')\n );\n }\n\n if (result.data?.createOrganization) {\n toast.success(tr('organizations.create.success', 'Organization created successfully'));\n navigate(`${basePath}/${result.data.createOrganization.id}`);\n }\n } catch (error) {\n toast.error(\n error instanceof Error\n ? error.message\n : tr('organizations.create.failed', 'Failed to create organization')\n );\n }\n };\n\n const handleCancel = () => {\n navigate(basePath);\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_CREATE)) {\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.create.noPermission',\n \"You don't have permission to create organizations.\"\n )}\n </div>\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-
|
|
1
|
+
{"version":3,"file":"OrganizationCreatePage.js","names":[],"sources":["../../../../../src/organization-management/modules/organizations/pages/OrganizationCreatePage.tsx"],"sourcesContent":["import { ArrowLeft } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { GlassCard } from '@burdenoff/fe-libs/ui';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useOrgConsole } from '../../../providers/OrgConsoleProvider';\nimport { useCreateOrganization } from '../hooks/useOrganizations';\nimport { useTenants } from '../../workspaces/hooks/useWorkspaces';\nimport { OrganizationForm } from '../components/OrganizationForm';\nimport { LoadingState } from '../../../shared/components/feedback/LoadingState';\nimport { PERMISSIONS } from '../../../constants/permissions';\nimport { useTr } from '../../../shared/hooks/useTr';\nimport { useOrganizationPageView } from '../../../hooks/useOrganizationPageView';\nimport type { CreateOrganizationInput, UpdateOrganizationInput } from '../types';\n\n/**\n * Organization Create Page\n * Form to create a new organization\n */\nexport function OrganizationCreatePage() {\n useOrganizationPageView('organizations.create');\n const tr = useTr();\n const { navigate, basePath = '/organizations', tenantId } = useOrgConsole();\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const { createOrganization, loading } = useCreateOrganization();\n const { tenants } = useTenants(100, 0, true);\n\n // Prefer an explicit context tenant; otherwise pick the shared tenant (or the\n // only one available). With a single shared tenant there is nothing to\n // choose, so we hide the tenant picker entirely and just submit it.\n const sharedTenant = tenants.find((tenant) => tenant.type === 'SHARED');\n const selectedTenant = tenantId\n ? tenants.find((tenant) => tenant.id === tenantId)\n : (sharedTenant ?? (tenants.length >= 1 ? tenants[0] : undefined));\n\n // Show the tenant picker only when the user genuinely has more than one\n // tenant to choose between (e.g. a dedicated tenant in addition to shared).\n const hideTenantSelector = tenants.length <= 1;\n\n const handleSubmit = async (data: CreateOrganizationInput | UpdateOrganizationInput) => {\n try {\n const createData = data as CreateOrganizationInput;\n const result = await createOrganization(createData);\n if (result.errors?.length) {\n throw new Error(\n result.errors[0]?.message ??\n tr('organizations.create.failed', 'Failed to create organization')\n );\n }\n\n if (result.data?.createOrganization) {\n toast.success(tr('organizations.create.success', 'Organization created successfully'));\n navigate(`${basePath}/${result.data.createOrganization.id}`);\n }\n } catch (error) {\n toast.error(\n error instanceof Error\n ? error.message\n : tr('organizations.create.failed', 'Failed to create organization')\n );\n }\n };\n\n const handleCancel = () => {\n navigate(basePath);\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_CREATE)) {\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.create.noPermission',\n \"You don't have permission to create organizations.\"\n )}\n </div>\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-200\">\n {/* Page Header */}\n <div className=\"mb-6\">\n <button\n type=\"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 \n transition-all duration-200\n \"\n >\n <ArrowLeft size={20} />\n <span className=\"text-sm font-medium\">\n {tr('organizations.create.back', 'Back to Organizations')}\n </span>\n </button>\n\n <h1 className=\"text-3xl font-bold text-[var(--color-text-primary)] mb-2\">\n {tr('organizations.create.title', 'Create Organization')}\n </h1>\n <p className=\"text-[var(--color-text-secondary)]\">\n {tr('organizations.create.subtitle', 'Add a new organization to a tenant')}\n </p>\n </div>\n\n {/* Form Card */}\n <div className=\"max-w-2xl\">\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <OrganizationForm\n tenantId={tenantId || selectedTenant?.id}\n tenantName={selectedTenant?.name}\n hideTenantSelector={hideTenantSelector}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n loading={loading}\n />\n </GlassCard>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAkBA,SAAgB,IAAyB;AACvC,GAAwB,uBAAuB;CAC/C,IAAM,IAAK,GAAO,EACZ,EAAE,aAAU,cAAW,kBAAkB,gBAAa,GAAe,EACrE,EAAE,kBAAe,WAAW,MAAuB,GAAgB,EACnE,EAAE,uBAAoB,eAAY,GAAuB,EACzD,EAAE,eAAY,EAAW,KAAK,GAAG,GAAK,EAKtC,IAAe,EAAQ,MAAM,MAAW,EAAO,SAAS,SAAS,EACjE,IAAiB,IACnB,EAAQ,MAAM,MAAW,EAAO,OAAO,EAAS,GAC/C,MAAiB,EAAQ,UAAU,IAAI,EAAQ,KAAK,KAAA,IAInD,IAAqB,EAAQ,UAAU,GAEvC,IAAe,OAAO,MAA4D;AACtF,MAAI;GAEF,IAAM,IAAS,MAAM,EADF,EACgC;AACnD,OAAI,EAAO,QAAQ,OACjB,OAAU,MACR,EAAO,OAAO,IAAI,WAChB,EAAG,+BAA+B,gCAAgC,CACrE;AAGH,GAAI,EAAO,MAAM,uBACf,EAAM,QAAQ,EAAG,gCAAgC,oCAAoC,CAAC,EACtF,EAAS,GAAG,EAAS,GAAG,EAAO,KAAK,mBAAmB,KAAK;WAEvD,GAAO;AACd,KAAM,MACJ,aAAiB,QACb,EAAM,UACN,EAAG,+BAA+B,gCAAgC,CACvE;;IAIC,UAAqB;AACzB,IAAS,EAAS;;AAwBpB,QArBI,IAEA,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAc,SAAS,EAAG,6BAA6B,yBAAyB,EAAI,CAAA;EAChF,CAAA,GAIL,EAAc,EAAY,WAAW,GAcxC,kBAAC,OAAD;EAAK,WAAU;YAAf,CAEE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,UAAD;KACE,MAAK;KACL,SAAS;KACT,WAAU;eAHZ,CAWE,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA,EACvB,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAG,6BAA6B,wBAAwB;MACpD,CAAA,CACA;;IAET,kBAAC,MAAD;KAAI,WAAU;eACX,EAAG,8BAA8B,sBAAsB;KACrD,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eACV,EAAG,iCAAiC,qCAAqC;KACxE,CAAA;IACA;MAGN,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD;IAAW,WAAU;IAAQ,WAAU;cACrC,kBAAC,GAAD;KACE,UAAU,KAAY,GAAgB;KACtC,YAAY,GAAgB;KACR;KACpB,UAAU;KACV,UAAU;KACD;KACT,CAAA;IACQ,CAAA;GACR,CAAA,CACF;MArDJ,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aACZ,EACC,qCACA,qDACD;GACG,CAAA;EACF,CAAA"}
|