@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.
@@ -1,25 +1,11 @@
1
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
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("div", {
4
- className: "flex flex-col items-center justify-center py-12 border border-dashed border-border rounded-lg",
5
- children: [
6
- n && /* @__PURE__ */ e("div", {
7
- className: "size-12 rounded-full bg-muted flex items-center justify-center mb-4",
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 * Displays when no data is available\n */\n\nimport type { FC, ReactNode } from 'react';\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 <div className=\"flex flex-col items-center justify-center py-12 border border-dashed border-border rounded-lg\">\n {icon && (\n <div className=\"size-12 rounded-full bg-muted flex items-center justify-center mb-4\">\n {icon}\n </div>\n )}\n <h3 className=\"text-lg font-medium text-foreground\">{title}</h3>\n {description && (\n <p className=\"text-sm text-muted-foreground mt-1 text-center max-w-sm\">{description}</p>\n )}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n );\n};\n"],"mappings":";;AAcA,IAAa,KAAmC,EAAE,SAAM,UAAO,gBAAa,gBAExE,kBAAC,OAAD;CAAK,WAAU;WAAf;EACG,KACC,kBAAC,OAAD;GAAK,WAAU;aACZ;GACG,CAAA;EAER,kBAAC,MAAD;GAAI,WAAU;aAAuC;GAAW,CAAA;EAC/D,KACC,kBAAC,KAAD;GAAG,WAAU;aAA2D;GAAgB,CAAA;EAEzF,KAAU,kBAAC,OAAD;GAAK,WAAU;aAAQ;GAAa,CAAA;EAC3C"}
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, jsxs as t } from "react/jsx-runtime";
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("div", {
4
- className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
5
- children: [/* @__PURE__ */ t("div", {
6
- className: "flex items-start gap-3",
7
- children: [a && /* @__PURE__ */ e("div", {
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 * Consistent header for all billing pages\n */\n\nimport type { FC, ReactNode } from 'react';\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 <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-start gap-3\">\n {icon && <div className=\"mt-1 text-muted-foreground\">{icon}</div>}\n <div>\n <h1 className=\"text-2xl font-bold text-foreground\">{title}</h1>\n {description && <p className=\"text-sm text-muted-foreground mt-1\">{description}</p>}\n </div>\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n );\n};\n"],"mappings":";;AAcA,IAAa,KAAmC,EAAE,UAAO,gBAAa,YAAS,cAE3E,kBAAC,OAAD;CAAK,WAAU;WAAf,CACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,KAAQ,kBAAC,OAAD;GAAK,WAAU;aAA8B;GAAW,CAAA,EACjE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aAAsC;GAAW,CAAA,EAC9D,KAAe,kBAAC,KAAD;GAAG,WAAU;aAAsC;GAAgB,CAAA,CAC/E,EAAA,CAAA,CACF;KACL,KAAW,kBAAC,OAAD;EAAK,WAAU;YAA2B;EAAc,CAAA,CAChE"}
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"}
@@ -5,3 +5,4 @@ import "./EmptyState.js";
5
5
  import "./ServerError.js";
6
6
  import "./GeoPricingOverridesEditor.js";
7
7
  import "./CurrencyPriceOverridesEditor.js";
8
+ import "./ActorIdentity.js";
@@ -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":";;;;;AAqBA,IAAM,IAAa;AA0BnB,SAAS,EAAQ,GAAyB;AAExC,QADI,EAAQ,UAAU,KAAW,IAC1B,GAAG,EAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,EAAQ,MAAM,GAAG;;AAGpD,SAAS,EAAa,GAA2B;AAC/C,SAAQ,EAAU,aAAa,EAA/B;EACE,KAAK,OACH,QAAO;EACT,KAAK,MACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,cACH,QAAO;EACT,QACE,QAAO,EACJ,MAAM,IAAI,CACV,KAAK,MAAY,EAAQ,OAAO,EAAE,GAAG,EAAQ,MAAM,EAAE,CAAC,aAAa,CAAC,CACpE,KAAK,IAAI;;;AAIlB,SAAS,EAAc,GAAiC;AACtD,QAAO;EACL,SAAS,EAAM;EACf,WAAW,EAAM;EACjB,aACE,EAAM,UAAU,aAAa,KAAK,SAC9B,QAAQ,EAAQ,EAAM,QAAQ,KAC9B,EAAa,EAAM,UAAU;EACnC,gBAAgB,EAAQ,EAAM,QAAQ;EACtC,UAAU;EACX;;AAGH,IAAM,oBAAQ,IAAI,KAA2B,EACvC,oBAAW,IAAI,KAAoC,EACnD,IAAe,MAAS,KACxB,oBAAiB,IAAI,KAAqB;AAEhD,SAAS,EAAS,GAA2C;CAC3D,IAAM,IAAY,EAAe,IAAI,EAAQ;AAC7C,KAAI,CAAC,KAAa,IAAY,KAAK,KAAK,EAAE;AAExC,EADA,EAAM,OAAO,EAAQ,EACrB,EAAe,OAAO,EAAQ;AAC9B;;AAEF,QAAO,EAAM,IAAI,EAAQ;;AAG3B,SAAS,EAAS,GAA6B;AAE7C,CADA,EAAM,IAAI,EAAQ,SAAS,EAAQ,EACnC,EAAe,IAAI,EAAQ,SAAS,KAAK,KAAK,GAAG,EAAa;;AAGhE,SAAgB,EAAiB,GAAuC;CACtE,IAAM,EAAE,cAAW,kBAAe,aAAU,GAAY,EAClD,CAAC,GAAY,KAAiB,QAAgC;EAClE,IAAM,IAA2B,EAAE;AACnC,OAAK,IAAM,KAAS,GAAQ;GAC1B,IAAM,IAAS,EAAS,EAAM,QAAQ;AACtC,KAAQ,EAAM,WAAW,KAAU,EAAc,EAAM;;AAEzD,SAAO;GACP,EAEI,IAAY,QAEd,EACG,KAAK,MAAM,GAAG,EAAE,QAAQ,GAAG,EAAE,YAAY,CACzC,MAAM,CACN,KAAK,IAAI,EACd,CAAC,EAAO,CACT,EACK,IAAe,EAA2B,KAAA,EAAU;AAiF1D,QA/EA,QAAgB;EACd,IAAI,IAAY;AAChB,IAAa,UAAU;EAEvB,eAAe,EAAQ,GAA0C;GAC/D,IAAM,IAAS,EAAS,EAAM,QAAQ;AACtC,OAAI,GAAQ,SAAU,QAAO;AAE7B,OAAI,EAAM,UAAU,aAAa,KAAK,QAAQ;IAC5C,IAAM,IAAU,EAAc,EAAM;AAEpC,WADA,EAAS,EAAQ,EACV;;GAGT,IAAM,IAAM,EAAM,SACZ,IAAW,EAAS,IAAI,EAAI;AAClC,OAAI,EAAU,QAAO;GAErB,IAAM,KAAW,YAAY;AAC3B,QAAI;KACF,IAAM,IAAO,MAAM,EAA0C;MAC3D;MACA;MACA;MACA,OAAO;MACP,WAAW,EAAE,IAAI,EAAM,SAAS;MACjC,CAAC;AACF,SAAI,CAAC,EAAK,MAAM;MACd,IAAM,IAAU,EAAc,EAAM;AAEpC,aADA,EAAS,EAAQ,EACV;;KAET,IAAM,IAAI,EAAK,MACT,IACJ,EAAE,MAAM,MAAM,IACd,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,IAC1D,EAAE,UAAU,MAAM,IAClB,EAAE,OAAO,MAAM,IACf,QAAQ,EAAQ,EAAM,QAAQ,IAC1B,IAAwB;MAC5B,SAAS,EAAM;MACf,WAAW,EAAM;MACjB;MACA,gBAAgB,EAAE,SAAS,EAAQ,EAAM,QAAQ;MACjD,OAAO,EAAE,SAAS,KAAA;MAClB,WAAW,EAAE,UAAU,KAAA;MACvB,UAAU;MACX;AAED,YADA,EAAS,EAAQ,EACV;YACD;AAEN,YADgB,EAAc,EAAM;cAE5B;AACR,OAAS,OAAO,EAAI;;OAEpB;AAEJ,UADA,EAAS,IAAI,GAAK,EAAQ,EACnB;;EAGT,eAAe,IAAM;GACnB,IAAM,IAAU,MAAM,QAAQ,IAAI,EAAO,IAAI,EAAQ,CAAC;AAClD,QACJ,GAAe,MAAS;IACtB,IAAM,IAAwB,EAAE,GAAG,GAAM;AACzC,SAAK,IAAM,KAAW,EACpB,GAAK,EAAQ,WAAW;AAE1B,WAAO;KACP;;AAIJ,SADK,GAAK,QACG;AACX,OAAY;;IAEb;EAAC;EAAW;EAAW;EAAe;EAAM,CAAC,EAEzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-billing",
3
- "version": "2026.527.1",
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.518.7",
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",