@xemahq/ui-kernel 0.16.2 → 0.17.0
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/lib/biome-host/biome-builders.d.ts.map +1 -1
- package/dist/lib/biome-host/biome-builders.js +6 -0
- package/dist/lib/biome-host/biome-builders.js.map +1 -1
- package/dist/lib/biome-host/define-web-biome.d.ts +2 -2
- package/dist/lib/biome-host/define-web-biome.d.ts.map +1 -1
- package/dist/lib/biome-host/define-web-biome.js +7 -0
- package/dist/lib/biome-host/define-web-biome.js.map +1 -1
- package/dist/lib/biome-host/frontend-biome.d.ts +32 -0
- package/dist/lib/biome-host/frontend-biome.d.ts.map +1 -1
- package/dist/lib/biome-host/frontend-biome.js +79 -0
- package/dist/lib/biome-host/frontend-biome.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-builders.d.ts","sourceRoot":"","sources":["../../../src/lib/biome-host/biome-builders.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"biome-builders.d.ts","sourceRoot":"","sources":["../../../src/lib/biome-host/biome-builders.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAe5E,wBAAgB,SAAS,CACvB,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,GAAE,SAAgB,GACzB,MAAM,SAAS,CAMjB;AAED,MAAM,WAAW,oBAAoB;IAEnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAKnC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAEhC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAElC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAElC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;CACtC;AAoBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAuB9E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Suspense, createElement, lazy, } from 'react';
|
|
2
|
+
import { assertNavCategoryAccessCoherent } from './frontend-biome';
|
|
2
3
|
export function lazyRoute(importFn, fallback = null) {
|
|
3
4
|
const Lazy = lazy(importFn);
|
|
4
5
|
const LazyRoute = () => createElement(Suspense, { fallback }, createElement(Lazy));
|
|
@@ -7,6 +8,11 @@ export function lazyRoute(importFn, fallback = null) {
|
|
|
7
8
|
}
|
|
8
9
|
export function defineSinglePageBiome(spec) {
|
|
9
10
|
const { route } = spec;
|
|
11
|
+
assertNavCategoryAccessCoherent({
|
|
12
|
+
where: `single-page biome '${spec.id}' route '${route.path}'`,
|
|
13
|
+
category: spec.nav.category,
|
|
14
|
+
access: route.access,
|
|
15
|
+
});
|
|
10
16
|
const contribution = {
|
|
11
17
|
path: route.path,
|
|
12
18
|
projectScoped: route.projectScoped,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-builders.js","sourceRoot":"","sources":["../../../src/lib/biome-host/biome-builders.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,IAAI,GAGL,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"biome-builders.js","sourceRoot":"","sources":["../../../src/lib/biome-host/biome-builders.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,IAAI,GAGL,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AAyBnE,MAAM,UAAU,SAAS,CACvB,QAA6B,EAC7B,WAAsB,IAAI;IAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,aAAa,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC;AA+CD,MAAM,UAAU,qBAAqB,CAAC,IAAyB;IAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAKvB,+BAA+B,CAAC;QAC9B,KAAK,EAAE,sBAAsB,IAAI,CAAC,EAAE,YAAY,KAAK,CAAC,IAAI,GAAG;QAC7D,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;QAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC;IACH,MAAM,YAAY,GAAsB;QACtC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;QACtD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;IACF,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,MAAM,EAAE,CAAC,YAAY,CAAC;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FrontendBiome, FrontendBiomeFactory, PageChrome, RouteAccess, RouteScope } from './frontend-biome';
|
|
1
|
+
import type { FrontendBiome, FrontendBiomeFactory, NavCategory, PageChrome, RouteAccess, RouteScope } from './frontend-biome';
|
|
2
2
|
import type { ComponentType } from 'react';
|
|
3
3
|
export interface WebBiomePage {
|
|
4
4
|
readonly slug: string;
|
|
@@ -7,7 +7,7 @@ export interface WebBiomePage {
|
|
|
7
7
|
readonly icon?: ComponentType<{
|
|
8
8
|
className?: string | undefined;
|
|
9
9
|
}>;
|
|
10
|
-
readonly category?:
|
|
10
|
+
readonly category?: NavCategory;
|
|
11
11
|
readonly scope?: RouteScope;
|
|
12
12
|
readonly access?: RouteAccess;
|
|
13
13
|
readonly chrome?: PageChrome;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-web-biome.d.ts","sourceRoot":"","sources":["../../../src/lib/biome-host/define-web-biome.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define-web-biome.d.ts","sourceRoot":"","sources":["../../../src/lib/biome-host/define-web-biome.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,WAAW,EAEX,UAAU,EACV,WAAW,EAEX,UAAU,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,YAAY;IAM3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAOtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAYlE,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAShC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAM5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAK9B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAE7B,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAKlE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAE5C,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAExC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE1C,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAE5C,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC7D;AA+CD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAyDtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { lazyRoute } from './biome-builders';
|
|
2
|
+
import { assertNavCategoryAccessCoherent } from './frontend-biome';
|
|
2
3
|
const DEFAULT_PAGE_CHROME = 'host';
|
|
3
4
|
function assertPageScopeAccessLocked(biomeId, page) {
|
|
4
5
|
const scope = page.scope ?? 'org';
|
|
@@ -20,6 +21,12 @@ function assertPageScopeAccessLocked(biomeId, page) {
|
|
|
20
21
|
export function defineWebBiome(options) {
|
|
21
22
|
for (const page of options.pages) {
|
|
22
23
|
assertPageScopeAccessLocked(options.id, page);
|
|
24
|
+
assertNavCategoryAccessCoherent({
|
|
25
|
+
where: `web biome '${options.id}' page '${page.slug}'`,
|
|
26
|
+
category: page.category,
|
|
27
|
+
access: page.access,
|
|
28
|
+
navHidden: page.navHidden === true || page.scope === 'public',
|
|
29
|
+
});
|
|
23
30
|
}
|
|
24
31
|
return () => {
|
|
25
32
|
const navItems = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-web-biome.js","sourceRoot":"","sources":["../../../src/lib/biome-host/define-web-biome.ts"],"names":[],"mappings":"AAwCA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"define-web-biome.js","sourceRoot":"","sources":["../../../src/lib/biome-host/define-web-biome.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,40 @@ export interface NavItemContribution {
|
|
|
10
10
|
}>;
|
|
11
11
|
readonly category?: string;
|
|
12
12
|
}
|
|
13
|
+
export declare const NAV_CATEGORY_VALUES: readonly ["primary", "build", "connect", "run", "knowledge", "admin", "operations", "account"];
|
|
14
|
+
export type NavCategory = (typeof NAV_CATEGORY_VALUES)[number];
|
|
15
|
+
export declare const NavCategory: {
|
|
16
|
+
readonly Primary: "primary";
|
|
17
|
+
readonly Build: "build";
|
|
18
|
+
readonly Connect: "connect";
|
|
19
|
+
readonly Run: "run";
|
|
20
|
+
readonly Knowledge: "knowledge";
|
|
21
|
+
readonly Admin: "admin";
|
|
22
|
+
readonly Operations: "operations";
|
|
23
|
+
readonly Account: "account";
|
|
24
|
+
};
|
|
25
|
+
export declare function isNavCategory(value: string): value is NavCategory;
|
|
13
26
|
export declare const ROUTE_ACCESS_VALUES: readonly ["member", "org-admin", "platform-admin", "public"];
|
|
14
27
|
export type RouteAccess = (typeof ROUTE_ACCESS_VALUES)[number];
|
|
28
|
+
export interface AccessViewer {
|
|
29
|
+
readonly isOrgAdmin: boolean;
|
|
30
|
+
readonly isPlatformAdmin: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare function satisfiesRouteAccess(access: RouteAccess, viewer: AccessViewer): boolean;
|
|
33
|
+
export declare const NAV_CATEGORY_REQUIRED_ACCESS: {
|
|
34
|
+
readonly admin: "org-admin";
|
|
35
|
+
readonly operations: "platform-admin";
|
|
36
|
+
};
|
|
37
|
+
export type AdministrativeNavCategory = keyof typeof NAV_CATEGORY_REQUIRED_ACCESS;
|
|
38
|
+
export declare function requiredAccessForNavCategory(category: NavCategory): RouteAccess | undefined;
|
|
39
|
+
export declare function navCategoryForRequiredAccess(access: RouteAccess): AdministrativeNavCategory | undefined;
|
|
40
|
+
export interface NavCategoryAccessSubject {
|
|
41
|
+
readonly where: string;
|
|
42
|
+
readonly category?: string | undefined;
|
|
43
|
+
readonly access?: RouteAccess | undefined;
|
|
44
|
+
readonly navHidden?: boolean | undefined;
|
|
45
|
+
}
|
|
46
|
+
export declare function assertNavCategoryAccessCoherent(subject: NavCategoryAccessSubject): void;
|
|
15
47
|
export declare const ROUTE_SCOPE_VALUES: readonly ["org", "project", "public"];
|
|
16
48
|
export type RouteScope = (typeof ROUTE_SCOPE_VALUES)[number];
|
|
17
49
|
export declare const PAGE_CHROME_VALUES: readonly ["host", "none"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-biome.d.ts","sourceRoot":"","sources":["../../../src/lib/biome-host/frontend-biome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYtD,MAAM,WAAW,mBAAmB;IAElC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAQvB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"frontend-biome.d.ts","sourceRoot":"","sources":["../../../src/lib/biome-host/frontend-biome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYtD,MAAM,WAAW,mBAAmB;IAElC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAQvB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAiBlE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AA0BD,eAAO,MAAM,mBAAmB,gGAStB,CAAC;AAGX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAY/D,eAAO,MAAM,WAAW;;;;;;;;;CASwB,CAAC;AAGjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,CAEjE;AAuBD,eAAO,MAAM,mBAAmB,8DAKtB,CAAC;AAGX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAY/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAsBD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,YAAY,GACnB,OAAO,CAcT;AAiBD,eAAO,MAAM,4BAA4B;;;CAGqB,CAAC;AAG/D,MAAM,MAAM,yBAAyB,GAAG,MAAM,OAAO,4BAA4B,CAAC;AAOlF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,WAAW,GACpB,WAAW,GAAG,SAAS,CAIzB;AAGD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,WAAW,GAClB,yBAAyB,GAAG,SAAS,CAIvC;AAGD,MAAM,WAAW,wBAAwB;IAEvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAE1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AA8BD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,wBAAwB,GAChC,IAAI,CA+CN;AAeD,eAAO,MAAM,kBAAkB,uCAAwC,CAAC;AAGxE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiB7D,eAAO,MAAM,kBAAkB,2BAA4B,CAAC;AAG5D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,CAAC;IASlC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAMhC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAM9B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAQD,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC;IAEjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAUD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAE5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAQ7B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAOhE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAO/C,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAexC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAClE;AAYD,MAAM,WAAW,0BAA0B;IAOzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAQ5B,QAAQ,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE;AAaD,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,aAAa,CAAC"}
|
|
@@ -1,9 +1,88 @@
|
|
|
1
|
+
export const NAV_CATEGORY_VALUES = [
|
|
2
|
+
'primary',
|
|
3
|
+
'build',
|
|
4
|
+
'connect',
|
|
5
|
+
'run',
|
|
6
|
+
'knowledge',
|
|
7
|
+
'admin',
|
|
8
|
+
'operations',
|
|
9
|
+
'account',
|
|
10
|
+
];
|
|
11
|
+
export const NavCategory = {
|
|
12
|
+
Primary: 'primary',
|
|
13
|
+
Build: 'build',
|
|
14
|
+
Connect: 'connect',
|
|
15
|
+
Run: 'run',
|
|
16
|
+
Knowledge: 'knowledge',
|
|
17
|
+
Admin: 'admin',
|
|
18
|
+
Operations: 'operations',
|
|
19
|
+
Account: 'account',
|
|
20
|
+
};
|
|
21
|
+
export function isNavCategory(value) {
|
|
22
|
+
return NAV_CATEGORY_VALUES.includes(value);
|
|
23
|
+
}
|
|
1
24
|
export const ROUTE_ACCESS_VALUES = [
|
|
2
25
|
'member',
|
|
3
26
|
'org-admin',
|
|
4
27
|
'platform-admin',
|
|
5
28
|
'public',
|
|
6
29
|
];
|
|
30
|
+
export function satisfiesRouteAccess(access, viewer) {
|
|
31
|
+
switch (access) {
|
|
32
|
+
case 'member':
|
|
33
|
+
return true;
|
|
34
|
+
case 'org-admin':
|
|
35
|
+
return viewer.isOrgAdmin;
|
|
36
|
+
case 'platform-admin':
|
|
37
|
+
return viewer.isPlatformAdmin;
|
|
38
|
+
case 'public':
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export const NAV_CATEGORY_REQUIRED_ACCESS = {
|
|
43
|
+
admin: 'org-admin',
|
|
44
|
+
operations: 'platform-admin',
|
|
45
|
+
};
|
|
46
|
+
export function requiredAccessForNavCategory(category) {
|
|
47
|
+
return NAV_CATEGORY_REQUIRED_ACCESS[category];
|
|
48
|
+
}
|
|
49
|
+
export function navCategoryForRequiredAccess(access) {
|
|
50
|
+
return Object.keys(NAV_CATEGORY_REQUIRED_ACCESS).find((key) => NAV_CATEGORY_REQUIRED_ACCESS[key] === access);
|
|
51
|
+
}
|
|
52
|
+
export function assertNavCategoryAccessCoherent(subject) {
|
|
53
|
+
const { where, category, access, navHidden } = subject;
|
|
54
|
+
if (category !== undefined && !isNavCategory(category)) {
|
|
55
|
+
throw new Error(`${where}: unknown menu category '${category}'. Valid categories: ` +
|
|
56
|
+
`${NAV_CATEGORY_VALUES.join(', ')}.`);
|
|
57
|
+
}
|
|
58
|
+
if (navHidden === true) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (category !== undefined) {
|
|
62
|
+
const required = requiredAccessForNavCategory(category);
|
|
63
|
+
if (required !== undefined && access !== required) {
|
|
64
|
+
const got = access === undefined
|
|
65
|
+
? `no access tier (which defaults to 'member')`
|
|
66
|
+
: `'${access}'`;
|
|
67
|
+
throw new Error(`${where}: category '${category}' requires access: '${required}', but ` +
|
|
68
|
+
`the surface declares ${got}. The '${category}' menu group promises ` +
|
|
69
|
+
`every item under it is ${required} territory; declare ` +
|
|
70
|
+
`access: '${required}', or move it to a category that matches what ` +
|
|
71
|
+
`its API actually enforces.`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (access !== undefined) {
|
|
75
|
+
const expected = navCategoryForRequiredAccess(access);
|
|
76
|
+
if (expected !== undefined && category !== expected) {
|
|
77
|
+
throw new Error(`${where}: access: '${access}' belongs in the '${expected}' menu ` +
|
|
78
|
+
`category, but the surface declares ` +
|
|
79
|
+
`${category === undefined ? 'no category' : `'${category}'`}. An ` +
|
|
80
|
+
`administrative surface filed elsewhere in the menu is one a reader ` +
|
|
81
|
+
`has no reason to expect. Set category: '${expected}', or mark it ` +
|
|
82
|
+
`nav-hidden if it should not appear in the menu at all.`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
7
86
|
export const ROUTE_SCOPE_VALUES = ['org', 'project', 'public'];
|
|
8
87
|
export const PAGE_CHROME_VALUES = ['host', 'none'];
|
|
9
88
|
//# sourceMappingURL=frontend-biome.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-biome.js","sourceRoot":"","sources":["../../../src/lib/biome-host/frontend-biome.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frontend-biome.js","sourceRoot":"","sources":["../../../src/lib/biome-host/frontend-biome.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/ui-kernel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "Host-framework-agnostic UI kernel for the Xema OS. Defines the SystemBus orchestration contract (capability.invoke, cross-biome intents, command palette, xema:// deeplinks, window manager) AND the biome-host contract surface (FrontendBiome/FrontendBiomeFactory, HostBridge, the singleton biomeRegistry, session contributions) that every frontend biome composes against. No Vite, Next.js, or React-Router — React itself IS allowed as the shared component model (the contracts traffic in ReactNode/ComponentType and a React context). Concrete host adapters (router/auth/toast wiring) live in separate packages that consume this kernel. The SystemBus is pure orchestration: it never authorizes, the backend capability-router enforces all policy.",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"@types/node": "25.2.3",
|
|
75
75
|
"@types/react": "^18.3.30",
|
|
76
76
|
"@types/react-dom": "^18.3.7",
|
|
77
|
-
"@xemahq/kernel-contracts": "^
|
|
77
|
+
"@xemahq/kernel-contracts": "^19.0.0",
|
|
78
78
|
"prettier": "3.6.2",
|
|
79
79
|
"react": "^18.3.1",
|
|
80
80
|
"react-dom": "^18.3.1",
|