@burdenoff/microfe-billing 2026.527.1 → 2026.528.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/billing/modules/settings/pages/SettingsPage.js +338 -337
- package/dist/billing/modules/settings/pages/SettingsPage.js.map +1 -1
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.js +157 -123
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.js.map +1 -1
- package/dist/billing/shared/components/ActorIdentity.js +67 -0
- package/dist/billing/shared/components/ActorIdentity.js.map +1 -0
- package/dist/billing/shared/components/EmptyState.js +7 -21
- package/dist/billing/shared/components/EmptyState.js.map +1 -1
- package/dist/billing/shared/components/PageHeader.js +7 -19
- package/dist/billing/shared/components/PageHeader.js.map +1 -1
- package/dist/billing/shared/components/index.js +1 -0
- package/dist/billing/shared/hooks/index.js +1 -0
- package/dist/billing/shared/hooks/useActorProfiles.js +113 -0
- package/dist/billing/shared/hooks/useActorProfiles.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,25 +1,11 @@
|
|
|
1
|
-
import { jsx as e
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { EmptyState as t } from "@burdenoff/fe-libs/ui";
|
|
2
3
|
//#region src/billing/shared/components/EmptyState.tsx
|
|
3
|
-
var n = ({ icon: n, title: r, description: i, action: a }) => /* @__PURE__ */ t
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
children: n
|
|
9
|
-
}),
|
|
10
|
-
/* @__PURE__ */ e("h3", {
|
|
11
|
-
className: "text-lg font-medium text-foreground",
|
|
12
|
-
children: r
|
|
13
|
-
}),
|
|
14
|
-
i && /* @__PURE__ */ e("p", {
|
|
15
|
-
className: "text-sm text-muted-foreground mt-1 text-center max-w-sm",
|
|
16
|
-
children: i
|
|
17
|
-
}),
|
|
18
|
-
a && /* @__PURE__ */ e("div", {
|
|
19
|
-
className: "mt-4",
|
|
20
|
-
children: a
|
|
21
|
-
})
|
|
22
|
-
]
|
|
4
|
+
var n = ({ icon: n, title: r, description: i, action: a }) => /* @__PURE__ */ e(t, {
|
|
5
|
+
icon: n,
|
|
6
|
+
title: r,
|
|
7
|
+
description: i,
|
|
8
|
+
action: a
|
|
23
9
|
});
|
|
24
10
|
//#endregion
|
|
25
11
|
export { n as EmptyState };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.js","names":[],"sources":["../../../../src/billing/shared/components/EmptyState.tsx"],"sourcesContent":["/**\n * Shared Empty State Component\n *
|
|
1
|
+
{"version":3,"file":"EmptyState.js","names":[],"sources":["../../../../src/billing/shared/components/EmptyState.tsx"],"sourcesContent":["/**\n * Shared Empty State Component\n *\n * Local wrapper around `EmptyState` from `@burdenoff/fe-libs/ui`.\n * Keeps the existing microfe-billing call sites stable while routing all\n * empty-state rendering through the canonical primitive.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { EmptyState as CanonicalEmptyState } from '@burdenoff/fe-libs/ui';\n\ninterface EmptyStateProps {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport const EmptyState: FC<EmptyStateProps> = ({ icon, title, description, action }) => {\n return (\n <CanonicalEmptyState icon={icon} title={title} description={description} action={action} />\n );\n};\n"],"mappings":";;;AAkBA,IAAa,KAAmC,EAAE,SAAM,UAAO,gBAAa,gBAExE,kBAAC,GAAD;CAA2B;CAAa;CAAoB;CAAqB;CAAU,CAAA"}
|
|
@@ -1,23 +1,11 @@
|
|
|
1
|
-
import { jsx as e
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { PageHeader as t } from "@burdenoff/fe-libs/chrome";
|
|
2
3
|
//#region src/billing/shared/components/PageHeader.tsx
|
|
3
|
-
var n = ({ title: n, description: r, actions: i, icon: a }) => /* @__PURE__ */ t
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
className: "mt-1 text-muted-foreground",
|
|
9
|
-
children: a
|
|
10
|
-
}), /* @__PURE__ */ t("div", { children: [/* @__PURE__ */ e("h1", {
|
|
11
|
-
className: "text-2xl font-bold text-foreground",
|
|
12
|
-
children: n
|
|
13
|
-
}), r && /* @__PURE__ */ e("p", {
|
|
14
|
-
className: "text-sm text-muted-foreground mt-1",
|
|
15
|
-
children: r
|
|
16
|
-
})] })]
|
|
17
|
-
}), i && /* @__PURE__ */ e("div", {
|
|
18
|
-
className: "flex items-center gap-2",
|
|
19
|
-
children: i
|
|
20
|
-
})]
|
|
4
|
+
var n = ({ title: n, description: r, actions: i, icon: a }) => /* @__PURE__ */ e(t, {
|
|
5
|
+
title: n,
|
|
6
|
+
description: r,
|
|
7
|
+
actions: i,
|
|
8
|
+
icon: a
|
|
21
9
|
});
|
|
22
10
|
//#endregion
|
|
23
11
|
export { n as PageHeader };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHeader.js","names":[],"sources":["../../../../src/billing/shared/components/PageHeader.tsx"],"sourcesContent":["/**\n * Shared Page Header Component\n *
|
|
1
|
+
{"version":3,"file":"PageHeader.js","names":[],"sources":["../../../../src/billing/shared/components/PageHeader.tsx"],"sourcesContent":["/**\n * Shared Page Header Component\n *\n * Local wrapper around `PageHeader` from `@burdenoff/fe-libs/chrome`.\n * Routes all billing page headers through the canonical primitive so they\n * inherit responsive layout, breadcrumb support, and one-primary-action\n * styling from the design system.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { PageHeader as CanonicalPageHeader } from '@burdenoff/fe-libs/chrome';\n\ninterface PageHeaderProps {\n title: string;\n description?: string;\n actions?: ReactNode;\n icon?: ReactNode;\n}\n\nexport const PageHeader: FC<PageHeaderProps> = ({ title, description, actions, icon }) => {\n return (\n <CanonicalPageHeader title={title} description={description} actions={actions} icon={icon} />\n );\n};\n"],"mappings":";;;AAmBA,IAAa,KAAmC,EAAE,UAAO,gBAAa,YAAS,cAE3E,kBAAC,GAAD;CAA4B;CAAoB;CAAsB;CAAe;CAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./useActorProfiles.js";
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { useBilling as e } from "../../providers/BillingProvider.js";
|
|
2
|
+
import { directBillingGraphqlRequest as t } from "../utils/directBillingGraphql.js";
|
|
3
|
+
import "../utils/index.js";
|
|
4
|
+
import { useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
|
|
5
|
+
//#region src/billing/shared/hooks/useActorProfiles.ts
|
|
6
|
+
var o = "\n query ActorProfileUser($id: ID!) {\n user(id: $id) {\n id\n email\n firstName\n lastName\n name\n username\n avatar\n }\n }\n";
|
|
7
|
+
function s(e) {
|
|
8
|
+
return e.length <= 12 ? e : `${e.slice(0, 8)}…${e.slice(-4)}`;
|
|
9
|
+
}
|
|
10
|
+
function c(e) {
|
|
11
|
+
switch (e.toLowerCase()) {
|
|
12
|
+
case "user": return "User";
|
|
13
|
+
case "app": return "App";
|
|
14
|
+
case "service": return "Service";
|
|
15
|
+
case "super_admin": return "Super Admin";
|
|
16
|
+
default: return e.split("_").map((e) => e.charAt(0) + e.slice(1).toLowerCase()).join(" ");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function l(e) {
|
|
20
|
+
return {
|
|
21
|
+
actorId: e.actorId,
|
|
22
|
+
actorType: e.actorType,
|
|
23
|
+
displayName: e.actorType.toLowerCase() === "user" ? `User ${s(e.actorId)}` : c(e.actorType),
|
|
24
|
+
secondaryLabel: s(e.actorId),
|
|
25
|
+
resolved: !1
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
var u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = 300 * 1e3, p = /* @__PURE__ */ new Map();
|
|
29
|
+
function m(e) {
|
|
30
|
+
let t = p.get(e);
|
|
31
|
+
if (!t || t < Date.now()) {
|
|
32
|
+
u.delete(e), p.delete(e);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
return u.get(e);
|
|
36
|
+
}
|
|
37
|
+
function h(e) {
|
|
38
|
+
u.set(e.actorId, e), p.set(e.actorId, Date.now() + f);
|
|
39
|
+
}
|
|
40
|
+
function g(c) {
|
|
41
|
+
let { authToken: u, apiGatewayUrl: f, orgId: p } = e(), [g, _] = a(() => {
|
|
42
|
+
let e = {};
|
|
43
|
+
for (let t of c) {
|
|
44
|
+
let n = m(t.actorId);
|
|
45
|
+
e[t.actorId] = n ?? l(t);
|
|
46
|
+
}
|
|
47
|
+
return e;
|
|
48
|
+
}), v = r(() => c.map((e) => `${e.actorId}|${e.actorType}`).sort().join(","), [c]), y = i(void 0);
|
|
49
|
+
return n(() => {
|
|
50
|
+
let e = !1;
|
|
51
|
+
y.current = u;
|
|
52
|
+
async function n(e) {
|
|
53
|
+
let n = m(e.actorId);
|
|
54
|
+
if (n?.resolved) return n;
|
|
55
|
+
if (e.actorType.toLowerCase() !== "user") {
|
|
56
|
+
let t = l(e);
|
|
57
|
+
return h(t), t;
|
|
58
|
+
}
|
|
59
|
+
let r = e.actorId, i = d.get(r);
|
|
60
|
+
if (i) return i;
|
|
61
|
+
let a = (async () => {
|
|
62
|
+
try {
|
|
63
|
+
let n = await t({
|
|
64
|
+
apiGatewayUrl: f,
|
|
65
|
+
authToken: u,
|
|
66
|
+
orgId: p,
|
|
67
|
+
query: o,
|
|
68
|
+
variables: { id: e.actorId }
|
|
69
|
+
});
|
|
70
|
+
if (!n.user) {
|
|
71
|
+
let t = l(e);
|
|
72
|
+
return h(t), t;
|
|
73
|
+
}
|
|
74
|
+
let r = n.user, i = r.name?.trim() || [r.firstName, r.lastName].filter(Boolean).join(" ").trim() || r.username?.trim() || r.email?.trim() || `User ${s(e.actorId)}`, a = {
|
|
75
|
+
actorId: e.actorId,
|
|
76
|
+
actorType: e.actorType,
|
|
77
|
+
displayName: i,
|
|
78
|
+
secondaryLabel: r.email ?? s(e.actorId),
|
|
79
|
+
email: r.email ?? void 0,
|
|
80
|
+
avatarUrl: r.avatar ?? void 0,
|
|
81
|
+
resolved: !0
|
|
82
|
+
};
|
|
83
|
+
return h(a), a;
|
|
84
|
+
} catch {
|
|
85
|
+
return l(e);
|
|
86
|
+
} finally {
|
|
87
|
+
d.delete(r);
|
|
88
|
+
}
|
|
89
|
+
})();
|
|
90
|
+
return d.set(r, a), a;
|
|
91
|
+
}
|
|
92
|
+
async function r() {
|
|
93
|
+
let t = await Promise.all(c.map(n));
|
|
94
|
+
e || _((e) => {
|
|
95
|
+
let n = { ...e };
|
|
96
|
+
for (let e of t) n[e.actorId] = e;
|
|
97
|
+
return n;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return r(), () => {
|
|
101
|
+
e = !0;
|
|
102
|
+
};
|
|
103
|
+
}, [
|
|
104
|
+
v,
|
|
105
|
+
u,
|
|
106
|
+
f,
|
|
107
|
+
p
|
|
108
|
+
]), g;
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
export { g as useActorProfiles };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=useActorProfiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useActorProfiles.js","names":[],"sources":["../../../../src/billing/shared/hooks/useActorProfiles.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useBilling } from '../../providers/BillingProvider';\nimport { directBillingGraphqlRequest } from '../utils';\n\nexport interface ActorProfile {\n actorId: string;\n actorType: string;\n displayName: string;\n secondaryLabel: string;\n email?: string;\n avatarUrl?: string;\n resolved: boolean;\n}\n\nexport type ActorProfileMap = Record<string, ActorProfile>;\n\ninterface ActorInput {\n actorId: string;\n actorType: string;\n}\n\nconst USER_QUERY = `\n query ActorProfileUser($id: ID!) {\n user(id: $id) {\n id\n email\n firstName\n lastName\n name\n username\n avatar\n }\n }\n`;\n\ninterface UserResponse {\n user: {\n id: string;\n email?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n name?: string | null;\n username?: string | null;\n avatar?: string | null;\n } | null;\n}\n\nfunction shortId(actorId: string): string {\n if (actorId.length <= 12) return actorId;\n return `${actorId.slice(0, 8)}…${actorId.slice(-4)}`;\n}\n\nfunction humanizeType(actorType: string): string {\n switch (actorType.toLowerCase()) {\n case 'user':\n return 'User';\n case 'app':\n return 'App';\n case 'service':\n return 'Service';\n case 'super_admin':\n return 'Super Admin';\n default:\n return actorType\n .split('_')\n .map((segment) => segment.charAt(0) + segment.slice(1).toLowerCase())\n .join(' ');\n }\n}\n\nfunction buildFallback(actor: ActorInput): ActorProfile {\n return {\n actorId: actor.actorId,\n actorType: actor.actorType,\n displayName:\n actor.actorType.toLowerCase() === 'user'\n ? `User ${shortId(actor.actorId)}`\n : humanizeType(actor.actorType),\n secondaryLabel: shortId(actor.actorId),\n resolved: false,\n };\n}\n\nconst cache = new Map<string, ActorProfile>();\nconst inflight = new Map<string, Promise<ActorProfile>>();\nconst CACHE_TTL_MS = 5 * 60 * 1000;\nconst cacheExpiresAt = new Map<string, number>();\n\nfunction cacheGet(actorId: string): ActorProfile | undefined {\n const expiresAt = cacheExpiresAt.get(actorId);\n if (!expiresAt || expiresAt < Date.now()) {\n cache.delete(actorId);\n cacheExpiresAt.delete(actorId);\n return undefined;\n }\n return cache.get(actorId);\n}\n\nfunction cacheSet(profile: ActorProfile): void {\n cache.set(profile.actorId, profile);\n cacheExpiresAt.set(profile.actorId, Date.now() + CACHE_TTL_MS);\n}\n\nexport function useActorProfiles(actors: ActorInput[]): ActorProfileMap {\n const { authToken, apiGatewayUrl, orgId } = useBilling();\n const [profileMap, setProfileMap] = useState<ActorProfileMap>(() => {\n const initial: ActorProfileMap = {};\n for (const actor of actors) {\n const cached = cacheGet(actor.actorId);\n initial[actor.actorId] = cached ?? buildFallback(actor);\n }\n return initial;\n });\n\n const actorsKey = useMemo(\n () =>\n actors\n .map((a) => `${a.actorId}|${a.actorType}`)\n .sort()\n .join(','),\n [actors]\n );\n const lastTokenRef = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n let cancelled = false;\n lastTokenRef.current = authToken;\n\n async function loadOne(actor: ActorInput): Promise<ActorProfile> {\n const cached = cacheGet(actor.actorId);\n if (cached?.resolved) return cached;\n\n if (actor.actorType.toLowerCase() !== 'user') {\n const profile = buildFallback(actor);\n cacheSet(profile);\n return profile;\n }\n\n const key = actor.actorId;\n const existing = inflight.get(key);\n if (existing) return existing;\n\n const promise = (async () => {\n try {\n const data = await directBillingGraphqlRequest<UserResponse>({\n apiGatewayUrl,\n authToken,\n orgId,\n query: USER_QUERY,\n variables: { id: actor.actorId },\n });\n if (!data.user) {\n const profile = buildFallback(actor);\n cacheSet(profile);\n return profile;\n }\n const u = data.user;\n const displayName =\n u.name?.trim() ||\n [u.firstName, u.lastName].filter(Boolean).join(' ').trim() ||\n u.username?.trim() ||\n u.email?.trim() ||\n `User ${shortId(actor.actorId)}`;\n const profile: ActorProfile = {\n actorId: actor.actorId,\n actorType: actor.actorType,\n displayName,\n secondaryLabel: u.email ?? shortId(actor.actorId),\n email: u.email ?? undefined,\n avatarUrl: u.avatar ?? undefined,\n resolved: true,\n };\n cacheSet(profile);\n return profile;\n } catch {\n const profile = buildFallback(actor);\n return profile;\n } finally {\n inflight.delete(key);\n }\n })();\n inflight.set(key, promise);\n return promise;\n }\n\n async function run() {\n const results = await Promise.all(actors.map(loadOne));\n if (cancelled) return;\n setProfileMap((prev) => {\n const next: ActorProfileMap = { ...prev };\n for (const profile of results) {\n next[profile.actorId] = profile;\n }\n return next;\n });\n }\n\n void run();\n return () => {\n cancelled = true;\n };\n }, [actorsKey, authToken, apiGatewayUrl, orgId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return profileMap;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-billing",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.528.1",
|
|
4
4
|
"description": "Billing microfrontend for Burdenoff products",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@apollo/client": "^4.1.4",
|
|
46
|
-
"@burdenoff/fe-libs": "2026.
|
|
46
|
+
"@burdenoff/fe-libs": "2026.528.2",
|
|
47
47
|
"@tanstack/react-query": "^5.90.16",
|
|
48
48
|
"clsx": "^2.1.1",
|
|
49
49
|
"graphql": "^16.10.0",
|