@elevasis/ui 2.50.0 → 2.51.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/knowledge/index.d.ts +48 -2
- package/dist/knowledge/index.js +321 -80
- package/package.json +5 -5
- package/src/knowledge/README.md +4 -2
|
@@ -1512,6 +1512,52 @@ interface KnowledgeBrowserProps {
|
|
|
1512
1512
|
*/
|
|
1513
1513
|
declare function KnowledgeBrowser({ graph, knowledgeNodes, organizationModel, initialNodeId, onNavigateToNode, onSelectNode }: KnowledgeBrowserProps): react_jsx_runtime.JSX.Element;
|
|
1514
1514
|
|
|
1515
|
+
interface KnowledgeItemRouteId {
|
|
1516
|
+
domainKey: string;
|
|
1517
|
+
itemId: string;
|
|
1518
|
+
}
|
|
1519
|
+
type KnowledgeRouteTarget = {
|
|
1520
|
+
kind: 'domain';
|
|
1521
|
+
domainKey: string;
|
|
1522
|
+
} | {
|
|
1523
|
+
kind: 'group';
|
|
1524
|
+
groupKey: string;
|
|
1525
|
+
label?: string;
|
|
1526
|
+
domainKeys: readonly string[];
|
|
1527
|
+
} | {
|
|
1528
|
+
kind: 'folder';
|
|
1529
|
+
folderId: string;
|
|
1530
|
+
} | {
|
|
1531
|
+
kind: 'item';
|
|
1532
|
+
domainKey: string;
|
|
1533
|
+
itemId: string;
|
|
1534
|
+
} | {
|
|
1535
|
+
kind: 'knowledge';
|
|
1536
|
+
node: OrgKnowledgeNode;
|
|
1537
|
+
} | {
|
|
1538
|
+
kind: 'graph';
|
|
1539
|
+
node: OrganizationGraphNode;
|
|
1540
|
+
} | {
|
|
1541
|
+
kind: 'unresolved';
|
|
1542
|
+
nodeId: string;
|
|
1543
|
+
};
|
|
1544
|
+
declare function decodeKnowledgeRouteNodeId(nodeId: string): string;
|
|
1545
|
+
declare function formatKnowledgeRouteTitle(id: string): string;
|
|
1546
|
+
declare function formatKnowledgeDomainLabel(domainKey: string): string;
|
|
1547
|
+
declare function parseKnowledgeItemRouteId(nodeId: string): KnowledgeItemRouteId | undefined;
|
|
1548
|
+
declare function resolveKnowledgeGraphNodeByRouteId(graph: OrganizationGraph, routeNodeId: string): OrganizationGraphNode | undefined;
|
|
1549
|
+
declare function resolveKnowledgeRouteTarget(graph: OrganizationGraph, knowledgeNodes: OrgKnowledgeNode[], nodeId: string | undefined): KnowledgeRouteTarget | null;
|
|
1550
|
+
declare function getKnowledgeRouteBreadcrumbLabel(nodeId: string, graph: OrganizationGraph): string | undefined;
|
|
1551
|
+
|
|
1552
|
+
interface KnowledgeNodeDetailRouteViewProps {
|
|
1553
|
+
nodeId: string;
|
|
1554
|
+
graph: OrganizationGraph;
|
|
1555
|
+
knowledgeNodes: OrgKnowledgeNode[];
|
|
1556
|
+
organizationModel: OrganizationModel;
|
|
1557
|
+
onNavigateToNode?: (nodeId: string) => void;
|
|
1558
|
+
}
|
|
1559
|
+
declare function KnowledgeNodeDetailRouteView({ nodeId, graph, knowledgeNodes, organizationModel, onNavigateToNode }: KnowledgeNodeDetailRouteViewProps): react_jsx_runtime.JSX.Element;
|
|
1560
|
+
|
|
1515
1561
|
/**
|
|
1516
1562
|
* Identifies how to dispatch a favorited entry on click. Maps onto the
|
|
1517
1563
|
* `onSelect*` callback surface that `KnowledgeTree` already exposes.
|
|
@@ -2030,5 +2076,5 @@ interface NodeDescribeShellProps {
|
|
|
2030
2076
|
}
|
|
2031
2077
|
declare function NodeDescribeShell({ header, content, relationships, footer }: NodeDescribeShellProps): react_jsx_runtime.JSX.Element;
|
|
2032
2078
|
|
|
2033
|
-
export { DescribeNodeView, DomainPanelDispatcher, EdgeRelationshipGroup, FILTERABLE_DOMAIN_KEYS, GenericDescribeView, KNOWLEDGE_ALLOWLIST, KNOWLEDGE_BODIES, KNOWLEDGE_DOMAINS_WITH_PANELS, KNOWLEDGE_ICON_TOKEN_BY_KIND, KNOWLEDGE_ITEMS, KindChip, KnowledgeBrowser, KnowledgeMDXProvider, KnowledgeNodeList, KnowledgeNodeView, KnowledgeSearchBar, KnowledgeTree, NodeDescribeShell, NodeHeader, NodeMetadataFooter, OM_NESTED_TREE_GROUPS, OM_TREE_GROUPS, OrganizationDescribeView, RelatedKnowledgeSection, ResourceDescribeView, SemanticIcon, SystemDescribeView, buildKnowledgeOmTreeData, extendSemanticIconRegistry, findKnowledgeTreeNodeByValue, findOmTreeGroup, getKnowledgeIconToken, getSemanticIconComponent, getSharedOrganizationGraph, resolveSemanticIconComponent, useKnowledgeAllowlist };
|
|
2034
|
-
export type { DescribeNodeViewProps, DomainPanelDispatcherProps, DomainPanelKey, EdgeRelationshipGroupProps, GenericDescribeViewProps, KindChipProps, KindChipTone, KnowledgeBrowserProps, KnowledgeFacetStates, KnowledgeNodeListProps, KnowledgeNodeViewProps, KnowledgeSearchBarProps, KnowledgeTreeNodeData, KnowledgeTreeProps, NodeDescribeShellProps, NodeHeaderProps, NodeMetadataFooterProps, OrganizationDescribeViewProps, RelatedKnowledgeSectionProps, ResourceDescribeViewProps, SemanticIconProps, SemanticIconRegistry, SemanticIconToken, SystemDescribeViewProps };
|
|
2079
|
+
export { DescribeNodeView, DomainPanelDispatcher, EdgeRelationshipGroup, FILTERABLE_DOMAIN_KEYS, GenericDescribeView, KNOWLEDGE_ALLOWLIST, KNOWLEDGE_BODIES, KNOWLEDGE_DOMAINS_WITH_PANELS, KNOWLEDGE_ICON_TOKEN_BY_KIND, KNOWLEDGE_ITEMS, KindChip, KnowledgeBrowser, KnowledgeMDXProvider, KnowledgeNodeDetailRouteView, KnowledgeNodeList, KnowledgeNodeView, KnowledgeSearchBar, KnowledgeTree, NodeDescribeShell, NodeHeader, NodeMetadataFooter, OM_NESTED_TREE_GROUPS, OM_TREE_GROUPS, OrganizationDescribeView, RelatedKnowledgeSection, ResourceDescribeView, SemanticIcon, SystemDescribeView, buildKnowledgeOmTreeData, decodeKnowledgeRouteNodeId, extendSemanticIconRegistry, findKnowledgeTreeNodeByValue, findOmTreeGroup, formatKnowledgeDomainLabel, formatKnowledgeRouteTitle, getKnowledgeIconToken, getKnowledgeRouteBreadcrumbLabel, getSemanticIconComponent, getSharedOrganizationGraph, parseKnowledgeItemRouteId, resolveKnowledgeGraphNodeByRouteId, resolveKnowledgeRouteTarget, resolveSemanticIconComponent, useKnowledgeAllowlist };
|
|
2080
|
+
export type { DescribeNodeViewProps, DomainPanelDispatcherProps, DomainPanelKey, EdgeRelationshipGroupProps, GenericDescribeViewProps, KindChipProps, KindChipTone, KnowledgeBrowserProps, KnowledgeFacetStates, KnowledgeItemRouteId, KnowledgeNodeDetailRouteViewProps, KnowledgeNodeListProps, KnowledgeNodeViewProps, KnowledgeRouteTarget, KnowledgeSearchBarProps, KnowledgeTreeNodeData, KnowledgeTreeProps, NodeDescribeShellProps, NodeHeaderProps, NodeMetadataFooterProps, OrganizationDescribeViewProps, RelatedKnowledgeSectionProps, ResourceDescribeViewProps, SemanticIconProps, SemanticIconRegistry, SemanticIconToken, SystemDescribeViewProps };
|
package/dist/knowledge/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getConceptDefinition, normaliseConceptKey, SemanticIcon, getKnowledgeIconToken, PageContainer, getKnowledgeGraphNodeCommand, IdentityDomainSchema, WorkflowResourceEntrySchema, AgentResourceEntrySchema, IntegrationResourceEntrySchema, ScriptResourceEntrySchema, getKnowledgeNodeReadCommand, getKnowledgeOntologyProjection, getPrimaryOntologyItemsForDomain, projectNavigationSurfaces, projectNavigationGroups, SurfaceDefinitionSchema, RoleSchema, PolicySchema, getOntologyDomainLabel, getKnowledgeDomainFolderCommand, getKnowledgeTreeFolderCommand, KNOWLEDGE_DOMAINS_WITH_PANELS } from '../chunk-SBNC3FRX.js';
|
|
1
|
+
import { getConceptDefinition, normaliseConceptKey, SemanticIcon, getKnowledgeIconToken, PageContainer, getKnowledgeGraphNodeCommand, IdentityDomainSchema, WorkflowResourceEntrySchema, AgentResourceEntrySchema, IntegrationResourceEntrySchema, ScriptResourceEntrySchema, findOmTreeGroup, SubshellContentContainer, getKnowledgeNodeReadCommand, getKnowledgeOntologyProjection, getPrimaryOntologyItemsForDomain, projectNavigationSurfaces, projectNavigationGroups, SurfaceDefinitionSchema, RoleSchema, PolicySchema, getOntologyDomainLabel, getKnowledgeDomainFolderCommand, buildKnowledgeOmTreeData, findKnowledgeTreeNodeByValue, getKnowledgeTreeFolderCommand, KNOWLEDGE_DOMAINS_WITH_PANELS } from '../chunk-SBNC3FRX.js';
|
|
2
2
|
export { FILTERABLE_DOMAIN_KEYS, KNOWLEDGE_DOMAINS_WITH_PANELS, KNOWLEDGE_ICON_TOKEN_BY_KIND, KnowledgeSearchBar, KnowledgeTree, OM_NESTED_TREE_GROUPS, OM_TREE_GROUPS, SemanticIcon, buildKnowledgeOmTreeData, extendSemanticIconRegistry, findKnowledgeTreeNodeByValue, findOmTreeGroup, getKnowledgeIconToken, getSemanticIconComponent, getSharedOrganizationGraph, resolveSemanticIconComponent } from '../chunk-SBNC3FRX.js';
|
|
3
3
|
import { usePresetsContext } from '../chunk-NZ2F5RQ4.js';
|
|
4
4
|
import '../chunk-OJJK27GC.js';
|
|
@@ -10887,6 +10887,98 @@ function DescribeNodeView({
|
|
|
10887
10887
|
) });
|
|
10888
10888
|
}
|
|
10889
10889
|
}
|
|
10890
|
+
|
|
10891
|
+
// src/knowledge/KnowledgeRouteIds.ts
|
|
10892
|
+
var DOMAIN_PREFIX = "domain:";
|
|
10893
|
+
var GROUP_PREFIX = "group:";
|
|
10894
|
+
var FOLDER_PREFIX = "folder:";
|
|
10895
|
+
var ITEM_PREFIX = "item:";
|
|
10896
|
+
function decodeKnowledgeRouteNodeId(nodeId) {
|
|
10897
|
+
try {
|
|
10898
|
+
return decodeURIComponent(nodeId);
|
|
10899
|
+
} catch {
|
|
10900
|
+
return nodeId;
|
|
10901
|
+
}
|
|
10902
|
+
}
|
|
10903
|
+
function formatKnowledgeRouteTitle(id) {
|
|
10904
|
+
const localId = id.includes("/") ? id.slice(id.lastIndexOf("/") + 1) : id;
|
|
10905
|
+
return localId.replace(/[-_.]+/g, " ").replace(/\s+/g, " ").trim().replace(/\b\w/g, (char) => char.toUpperCase());
|
|
10906
|
+
}
|
|
10907
|
+
function formatKnowledgeDomainLabel(domainKey) {
|
|
10908
|
+
return domainKey.split("-").flatMap((part) => part.split("_")).map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`).join(" ");
|
|
10909
|
+
}
|
|
10910
|
+
function parseKnowledgeItemRouteId(nodeId) {
|
|
10911
|
+
if (!nodeId.startsWith(ITEM_PREFIX)) return void 0;
|
|
10912
|
+
const rest = nodeId.slice(ITEM_PREFIX.length);
|
|
10913
|
+
const separatorIndex = rest.indexOf(":");
|
|
10914
|
+
if (separatorIndex === -1) return void 0;
|
|
10915
|
+
return {
|
|
10916
|
+
domainKey: rest.slice(0, separatorIndex),
|
|
10917
|
+
itemId: rest.slice(separatorIndex + 1)
|
|
10918
|
+
};
|
|
10919
|
+
}
|
|
10920
|
+
function resolveBareOntologyGraphNodeId(nodeId) {
|
|
10921
|
+
const ontologyId = OntologyIdSchema.safeParse(nodeId);
|
|
10922
|
+
return ontologyId.success ? ontologyGraphNodeId(ontologyId.data) : void 0;
|
|
10923
|
+
}
|
|
10924
|
+
function resolveKnowledgeGraphNodeByRouteId(graph, routeNodeId) {
|
|
10925
|
+
const graphNodesById = new Map(graph.nodes.map((node) => [node.id, node]));
|
|
10926
|
+
return graphNodesById.get(routeNodeId) ?? graphNodesById.get(resolveBareOntologyGraphNodeId(routeNodeId) ?? "") ?? graphNodesById.get(`system:${routeNodeId}`) ?? graph.nodes.find((node) => node.sourceId === routeNodeId) ?? graphNodesById.get(`knowledge:${routeNodeId}`);
|
|
10927
|
+
}
|
|
10928
|
+
function resolveKnowledgeNodeFromGraphNode(graphNode, knowledgeNodesById) {
|
|
10929
|
+
if (graphNode.sourceId) return knowledgeNodesById.get(graphNode.sourceId);
|
|
10930
|
+
return graphNode.id.startsWith("knowledge:") ? knowledgeNodesById.get(graphNode.id.slice("knowledge:".length)) : void 0;
|
|
10931
|
+
}
|
|
10932
|
+
function resolveKnowledgeRouteTarget(graph, knowledgeNodes, nodeId) {
|
|
10933
|
+
if (!nodeId) return null;
|
|
10934
|
+
const routeNodeId = decodeKnowledgeRouteNodeId(nodeId);
|
|
10935
|
+
if (routeNodeId.startsWith(DOMAIN_PREFIX)) {
|
|
10936
|
+
return { kind: "domain", domainKey: routeNodeId.slice(DOMAIN_PREFIX.length) };
|
|
10937
|
+
}
|
|
10938
|
+
if (routeNodeId.startsWith(GROUP_PREFIX)) {
|
|
10939
|
+
const groupKey = routeNodeId.slice(GROUP_PREFIX.length);
|
|
10940
|
+
const group = findOmTreeGroup(groupKey);
|
|
10941
|
+
return group ? { kind: "group", groupKey: group.key, label: group.label, domainKeys: group.domains } : { kind: "unresolved", nodeId: routeNodeId };
|
|
10942
|
+
}
|
|
10943
|
+
if (routeNodeId.startsWith(FOLDER_PREFIX)) {
|
|
10944
|
+
return { kind: "folder", folderId: routeNodeId };
|
|
10945
|
+
}
|
|
10946
|
+
const itemRoute = parseKnowledgeItemRouteId(routeNodeId);
|
|
10947
|
+
if (itemRoute) {
|
|
10948
|
+
return { kind: "item", domainKey: itemRoute.domainKey, itemId: itemRoute.itemId };
|
|
10949
|
+
}
|
|
10950
|
+
const knowledgeNodesById = new Map(knowledgeNodes.map((node) => [node.id, node]));
|
|
10951
|
+
const directKnowledgeNode = knowledgeNodesById.get(routeNodeId);
|
|
10952
|
+
if (directKnowledgeNode) return { kind: "knowledge", node: directKnowledgeNode };
|
|
10953
|
+
const graphNode = resolveKnowledgeGraphNodeByRouteId(graph, routeNodeId);
|
|
10954
|
+
if (!graphNode) return { kind: "unresolved", nodeId: routeNodeId };
|
|
10955
|
+
if (graphNode.kind === "knowledge") {
|
|
10956
|
+
const knowledgeNode = resolveKnowledgeNodeFromGraphNode(graphNode, knowledgeNodesById);
|
|
10957
|
+
if (knowledgeNode) return { kind: "knowledge", node: knowledgeNode };
|
|
10958
|
+
}
|
|
10959
|
+
return { kind: "graph", node: graphNode };
|
|
10960
|
+
}
|
|
10961
|
+
function getKnowledgeRouteBreadcrumbLabel(nodeId, graph) {
|
|
10962
|
+
const routeNodeId = decodeKnowledgeRouteNodeId(nodeId);
|
|
10963
|
+
if (routeNodeId.startsWith(DOMAIN_PREFIX)) {
|
|
10964
|
+
return formatKnowledgeDomainLabel(routeNodeId.slice(DOMAIN_PREFIX.length));
|
|
10965
|
+
}
|
|
10966
|
+
if (routeNodeId.startsWith(GROUP_PREFIX)) {
|
|
10967
|
+
const groupKey = routeNodeId.slice(GROUP_PREFIX.length);
|
|
10968
|
+
return findOmTreeGroup(groupKey)?.label;
|
|
10969
|
+
}
|
|
10970
|
+
if (routeNodeId.startsWith(FOLDER_PREFIX)) {
|
|
10971
|
+
const segments = routeNodeId.slice(FOLDER_PREFIX.length).split(":");
|
|
10972
|
+
const last = segments[segments.length - 1];
|
|
10973
|
+
return formatKnowledgeRouteTitle(last);
|
|
10974
|
+
}
|
|
10975
|
+
const itemRoute = parseKnowledgeItemRouteId(routeNodeId);
|
|
10976
|
+
if (itemRoute) {
|
|
10977
|
+
return formatKnowledgeRouteTitle(itemRoute.itemId);
|
|
10978
|
+
}
|
|
10979
|
+
const node = resolveKnowledgeGraphNodeByRouteId(graph, routeNodeId);
|
|
10980
|
+
return node?.label;
|
|
10981
|
+
}
|
|
10890
10982
|
function KnowledgeBrowser({
|
|
10891
10983
|
graph,
|
|
10892
10984
|
knowledgeNodes,
|
|
@@ -10940,35 +11032,12 @@ function createKindCounts(nodes) {
|
|
|
10940
11032
|
{ playbook: 0, strategy: 0, reference: 0 }
|
|
10941
11033
|
);
|
|
10942
11034
|
}
|
|
10943
|
-
function resolveKnowledgeNodeFromGraphNode(graphNode, knowledgeNodesById) {
|
|
10944
|
-
if (graphNode.sourceId) return knowledgeNodesById.get(graphNode.sourceId);
|
|
10945
|
-
return graphNode.id.startsWith("knowledge:") ? knowledgeNodesById.get(graphNode.id.slice("knowledge:".length)) : void 0;
|
|
10946
|
-
}
|
|
10947
|
-
function resolveBareOntologyGraphNodeId(nodeId) {
|
|
10948
|
-
const ontologyId = OntologyIdSchema.safeParse(nodeId);
|
|
10949
|
-
return ontologyId.success ? ontologyGraphNodeId(ontologyId.data) : void 0;
|
|
10950
|
-
}
|
|
10951
|
-
function decodeInitialNodeId(nodeId) {
|
|
10952
|
-
try {
|
|
10953
|
-
return decodeURIComponent(nodeId);
|
|
10954
|
-
} catch {
|
|
10955
|
-
return nodeId;
|
|
10956
|
-
}
|
|
10957
|
-
}
|
|
10958
11035
|
function resolveInitialFocus(graph, knowledgeNodes, initialNodeId) {
|
|
10959
|
-
|
|
10960
|
-
|
|
10961
|
-
|
|
10962
|
-
|
|
10963
|
-
|
|
10964
|
-
const graphNodesById = new Map(graph.nodes.map((node) => [node.id, node]));
|
|
10965
|
-
const graphNode = graphNodesById.get(routeNodeId) ?? graphNodesById.get(resolveBareOntologyGraphNodeId(routeNodeId) ?? "") ?? graphNodesById.get(`system:${routeNodeId}`);
|
|
10966
|
-
if (!graphNode) return null;
|
|
10967
|
-
if (graphNode.kind === "knowledge") {
|
|
10968
|
-
const knowledgeNode = resolveKnowledgeNodeFromGraphNode(graphNode, knowledgeNodesById);
|
|
10969
|
-
if (knowledgeNode) return { kind: "knowledge", node: knowledgeNode };
|
|
10970
|
-
}
|
|
10971
|
-
return { kind: "graph", node: graphNode };
|
|
11036
|
+
const target = resolveKnowledgeRouteTarget(graph, knowledgeNodes, initialNodeId);
|
|
11037
|
+
if (!target) return null;
|
|
11038
|
+
if (target.kind === "knowledge") return { kind: "knowledge", node: target.node };
|
|
11039
|
+
if (target.kind === "graph") return { kind: "graph", node: target.node };
|
|
11040
|
+
return null;
|
|
10972
11041
|
}
|
|
10973
11042
|
function resolveKnowledgeGraphIds(graph) {
|
|
10974
11043
|
return new Set(graph.nodes.filter((node) => node.kind === "knowledge").map((node) => node.id));
|
|
@@ -11183,6 +11252,228 @@ function KnowledgeOverviewRow({
|
|
|
11183
11252
|
}
|
|
11184
11253
|
);
|
|
11185
11254
|
}
|
|
11255
|
+
function DomainPanelDispatcher({
|
|
11256
|
+
domainKey,
|
|
11257
|
+
model,
|
|
11258
|
+
onNavigateToNode,
|
|
11259
|
+
filterToItemId
|
|
11260
|
+
}) {
|
|
11261
|
+
switch (domainKey) {
|
|
11262
|
+
case "identity":
|
|
11263
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(IdentityPanel, { model, onNavigateToNode }) });
|
|
11264
|
+
case "branding":
|
|
11265
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(BrandingPanel, { model, onNavigateToNode }) });
|
|
11266
|
+
case "customers":
|
|
11267
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(CustomersPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11268
|
+
case "clients":
|
|
11269
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(ClientsPanel, { model, filterToItemId }) });
|
|
11270
|
+
case "offerings":
|
|
11271
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(OfferingsPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11272
|
+
case "goals":
|
|
11273
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(GoalsPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11274
|
+
case "roles":
|
|
11275
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(RolesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11276
|
+
case "statuses":
|
|
11277
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(StatusesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11278
|
+
case "navigation":
|
|
11279
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(NavigationPanel, { model, onNavigateToNode }) });
|
|
11280
|
+
case "policies":
|
|
11281
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(PoliciesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11282
|
+
case "ontology-objects":
|
|
11283
|
+
case "ontology-links":
|
|
11284
|
+
case "ontology-actions":
|
|
11285
|
+
case "ontology-catalogs":
|
|
11286
|
+
case "ontology-events":
|
|
11287
|
+
case "ontology-interfaces":
|
|
11288
|
+
case "ontology-value-types":
|
|
11289
|
+
case "ontology-properties":
|
|
11290
|
+
case "ontology-groups":
|
|
11291
|
+
case "ontology-endpoints":
|
|
11292
|
+
case "ontology-resources":
|
|
11293
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(OntologyPanel, { model, domainKey, filterToItemId }) });
|
|
11294
|
+
default:
|
|
11295
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "xs", children: [
|
|
11296
|
+
/* @__PURE__ */ jsx(Text, { fw: 650, children: "Unknown domain" }),
|
|
11297
|
+
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
11298
|
+
"No panel for `",
|
|
11299
|
+
domainKey,
|
|
11300
|
+
"`."
|
|
11301
|
+
] })
|
|
11302
|
+
] }) });
|
|
11303
|
+
}
|
|
11304
|
+
}
|
|
11305
|
+
function treeNodeToDescribeChild(child) {
|
|
11306
|
+
const label = String(child.label);
|
|
11307
|
+
const value = typeof child.value === "string" ? child.value : void 0;
|
|
11308
|
+
const nodeType = child.nodeType === "group" ? "group" : child.nodeType === "domain" ? "domain" : child.nodeType === "item" ? "item" : "group";
|
|
11309
|
+
return {
|
|
11310
|
+
value,
|
|
11311
|
+
label,
|
|
11312
|
+
nodeType,
|
|
11313
|
+
domainKey: child.domainKey,
|
|
11314
|
+
itemId: child.itemId,
|
|
11315
|
+
children: child.children ? child.children.map(treeNodeToDescribeChild) : void 0
|
|
11316
|
+
};
|
|
11317
|
+
}
|
|
11318
|
+
function FolderDetailView({
|
|
11319
|
+
nodeId,
|
|
11320
|
+
graph,
|
|
11321
|
+
knowledgeNodes,
|
|
11322
|
+
organizationModel,
|
|
11323
|
+
onNavigateToNode
|
|
11324
|
+
}) {
|
|
11325
|
+
const treeData = useMemo(
|
|
11326
|
+
() => buildKnowledgeOmTreeData(graph, knowledgeNodes, {}, organizationModel),
|
|
11327
|
+
[graph, knowledgeNodes, organizationModel]
|
|
11328
|
+
);
|
|
11329
|
+
const folderNode = useMemo(() => findKnowledgeTreeNodeByValue(treeData, nodeId), [treeData, nodeId]);
|
|
11330
|
+
const folderLabel = folderNode ? String(folderNode.label) : formatKnowledgeRouteTitle(nodeId.slice("folder:".length));
|
|
11331
|
+
const children = folderNode?.children ? folderNode.children.map(treeNodeToDescribeChild) : [];
|
|
11332
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsx(
|
|
11333
|
+
DescribeNodeView,
|
|
11334
|
+
{
|
|
11335
|
+
node: {
|
|
11336
|
+
value: nodeId,
|
|
11337
|
+
label: folderLabel,
|
|
11338
|
+
nodeType: "group",
|
|
11339
|
+
children
|
|
11340
|
+
},
|
|
11341
|
+
graph,
|
|
11342
|
+
organizationModel,
|
|
11343
|
+
knowledgeNodes,
|
|
11344
|
+
onNavigateToNode
|
|
11345
|
+
}
|
|
11346
|
+
) });
|
|
11347
|
+
}
|
|
11348
|
+
function KnowledgeNodeFallback({ missingId, graph, knowledgeNodes, onNavigateToNode }) {
|
|
11349
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
11350
|
+
/* @__PURE__ */ jsx(
|
|
11351
|
+
Alert,
|
|
11352
|
+
{
|
|
11353
|
+
variant: "light",
|
|
11354
|
+
color: "gray",
|
|
11355
|
+
icon: /* @__PURE__ */ jsx(IconInfoCircle, { size: 18 }),
|
|
11356
|
+
title: `${formatKnowledgeRouteTitle(missingId)} is not available`,
|
|
11357
|
+
children: "This knowledge item could not be found. It may have been renamed, moved, or not yet generated for this organization. Browse the full knowledge base below."
|
|
11358
|
+
}
|
|
11359
|
+
),
|
|
11360
|
+
/* @__PURE__ */ jsx(KnowledgeBrowser, { graph, knowledgeNodes, onSelectNode: onNavigateToNode })
|
|
11361
|
+
] }) });
|
|
11362
|
+
}
|
|
11363
|
+
function KnowledgeNodeDetailRouteView({
|
|
11364
|
+
nodeId,
|
|
11365
|
+
graph,
|
|
11366
|
+
knowledgeNodes,
|
|
11367
|
+
organizationModel,
|
|
11368
|
+
onNavigateToNode
|
|
11369
|
+
}) {
|
|
11370
|
+
const routeNodeId = useMemo(() => decodeKnowledgeRouteNodeId(nodeId), [nodeId]);
|
|
11371
|
+
const target = useMemo(
|
|
11372
|
+
() => resolveKnowledgeRouteTarget(graph, knowledgeNodes, routeNodeId),
|
|
11373
|
+
[graph, knowledgeNodes, routeNodeId]
|
|
11374
|
+
);
|
|
11375
|
+
if (!target) {
|
|
11376
|
+
return /* @__PURE__ */ jsx(
|
|
11377
|
+
KnowledgeNodeFallback,
|
|
11378
|
+
{
|
|
11379
|
+
missingId: routeNodeId,
|
|
11380
|
+
graph,
|
|
11381
|
+
knowledgeNodes,
|
|
11382
|
+
onNavigateToNode
|
|
11383
|
+
}
|
|
11384
|
+
);
|
|
11385
|
+
}
|
|
11386
|
+
switch (target.kind) {
|
|
11387
|
+
case "domain":
|
|
11388
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsx(
|
|
11389
|
+
DomainPanelDispatcher,
|
|
11390
|
+
{
|
|
11391
|
+
domainKey: target.domainKey,
|
|
11392
|
+
model: organizationModel,
|
|
11393
|
+
onNavigateToNode
|
|
11394
|
+
}
|
|
11395
|
+
) });
|
|
11396
|
+
case "group":
|
|
11397
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsx(
|
|
11398
|
+
DescribeNodeView,
|
|
11399
|
+
{
|
|
11400
|
+
node: {
|
|
11401
|
+
value: `group:${target.groupKey}`,
|
|
11402
|
+
label: target.label ?? formatKnowledgeRouteTitle(target.groupKey),
|
|
11403
|
+
nodeType: "group",
|
|
11404
|
+
children: target.domainKeys.map((domainKey) => ({
|
|
11405
|
+
value: `domain:${domainKey}`,
|
|
11406
|
+
label: formatKnowledgeDomainLabel(domainKey),
|
|
11407
|
+
nodeType: "domain",
|
|
11408
|
+
domainKey
|
|
11409
|
+
}))
|
|
11410
|
+
},
|
|
11411
|
+
graph,
|
|
11412
|
+
organizationModel,
|
|
11413
|
+
knowledgeNodes,
|
|
11414
|
+
onNavigateToNode
|
|
11415
|
+
}
|
|
11416
|
+
) });
|
|
11417
|
+
case "folder":
|
|
11418
|
+
return /* @__PURE__ */ jsx(
|
|
11419
|
+
FolderDetailView,
|
|
11420
|
+
{
|
|
11421
|
+
nodeId: target.folderId,
|
|
11422
|
+
graph,
|
|
11423
|
+
knowledgeNodes,
|
|
11424
|
+
organizationModel,
|
|
11425
|
+
onNavigateToNode
|
|
11426
|
+
}
|
|
11427
|
+
);
|
|
11428
|
+
case "item":
|
|
11429
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsx(
|
|
11430
|
+
DomainPanelDispatcher,
|
|
11431
|
+
{
|
|
11432
|
+
domainKey: target.domainKey,
|
|
11433
|
+
model: organizationModel,
|
|
11434
|
+
filterToItemId: target.itemId,
|
|
11435
|
+
onNavigateToNode
|
|
11436
|
+
}
|
|
11437
|
+
) });
|
|
11438
|
+
case "knowledge":
|
|
11439
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsx(
|
|
11440
|
+
DescribeNodeView,
|
|
11441
|
+
{
|
|
11442
|
+
node: {
|
|
11443
|
+
id: `knowledge:${target.node.id}`,
|
|
11444
|
+
kind: "knowledge",
|
|
11445
|
+
label: target.node.title,
|
|
11446
|
+
sourceId: target.node.id
|
|
11447
|
+
},
|
|
11448
|
+
graph,
|
|
11449
|
+
organizationModel,
|
|
11450
|
+
knowledgeNodes,
|
|
11451
|
+
onNavigateToNode
|
|
11452
|
+
}
|
|
11453
|
+
) });
|
|
11454
|
+
case "graph":
|
|
11455
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsx(
|
|
11456
|
+
DescribeNodeView,
|
|
11457
|
+
{
|
|
11458
|
+
node: target.node,
|
|
11459
|
+
graph,
|
|
11460
|
+
organizationModel,
|
|
11461
|
+
knowledgeNodes,
|
|
11462
|
+
onNavigateToNode
|
|
11463
|
+
}
|
|
11464
|
+
) });
|
|
11465
|
+
case "unresolved":
|
|
11466
|
+
return /* @__PURE__ */ jsx(
|
|
11467
|
+
KnowledgeNodeFallback,
|
|
11468
|
+
{
|
|
11469
|
+
missingId: target.nodeId,
|
|
11470
|
+
graph,
|
|
11471
|
+
knowledgeNodes,
|
|
11472
|
+
onNavigateToNode
|
|
11473
|
+
}
|
|
11474
|
+
);
|
|
11475
|
+
}
|
|
11476
|
+
}
|
|
11186
11477
|
function KnowledgeNodeList({ nodes, onSelect, selectedNodeId, label }) {
|
|
11187
11478
|
if (nodes.length === 0) {
|
|
11188
11479
|
return /* @__PURE__ */ jsxs(Stack, { gap: "xs", style: { padding: "var(--mantine-spacing-md)" }, children: [
|
|
@@ -11270,55 +11561,5 @@ function KnowledgeNodeList({ nodes, onSelect, selectedNodeId, label }) {
|
|
|
11270
11561
|
] });
|
|
11271
11562
|
}
|
|
11272
11563
|
var KNOWLEDGE_ITEMS = [{ label: "Knowledge", to: "/knowledge", icon: IconBook, exact: true }];
|
|
11273
|
-
function DomainPanelDispatcher({
|
|
11274
|
-
domainKey,
|
|
11275
|
-
model,
|
|
11276
|
-
onNavigateToNode,
|
|
11277
|
-
filterToItemId
|
|
11278
|
-
}) {
|
|
11279
|
-
switch (domainKey) {
|
|
11280
|
-
case "identity":
|
|
11281
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(IdentityPanel, { model, onNavigateToNode }) });
|
|
11282
|
-
case "branding":
|
|
11283
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(BrandingPanel, { model, onNavigateToNode }) });
|
|
11284
|
-
case "customers":
|
|
11285
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(CustomersPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11286
|
-
case "clients":
|
|
11287
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(ClientsPanel, { model, filterToItemId }) });
|
|
11288
|
-
case "offerings":
|
|
11289
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(OfferingsPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11290
|
-
case "goals":
|
|
11291
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(GoalsPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11292
|
-
case "roles":
|
|
11293
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(RolesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11294
|
-
case "statuses":
|
|
11295
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(StatusesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11296
|
-
case "navigation":
|
|
11297
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(NavigationPanel, { model, onNavigateToNode }) });
|
|
11298
|
-
case "policies":
|
|
11299
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(PoliciesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
11300
|
-
case "ontology-objects":
|
|
11301
|
-
case "ontology-links":
|
|
11302
|
-
case "ontology-actions":
|
|
11303
|
-
case "ontology-catalogs":
|
|
11304
|
-
case "ontology-events":
|
|
11305
|
-
case "ontology-interfaces":
|
|
11306
|
-
case "ontology-value-types":
|
|
11307
|
-
case "ontology-properties":
|
|
11308
|
-
case "ontology-groups":
|
|
11309
|
-
case "ontology-endpoints":
|
|
11310
|
-
case "ontology-resources":
|
|
11311
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(OntologyPanel, { model, domainKey, filterToItemId }) });
|
|
11312
|
-
default:
|
|
11313
|
-
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "xs", children: [
|
|
11314
|
-
/* @__PURE__ */ jsx(Text, { fw: 650, children: "Unknown domain" }),
|
|
11315
|
-
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
11316
|
-
"No panel for `",
|
|
11317
|
-
domainKey,
|
|
11318
|
-
"`."
|
|
11319
|
-
] })
|
|
11320
|
-
] }) });
|
|
11321
|
-
}
|
|
11322
|
-
}
|
|
11323
11564
|
|
|
11324
|
-
export { DescribeNodeView, DomainPanelDispatcher, EdgeRelationshipGroup, GenericDescribeView, KNOWLEDGE_ALLOWLIST, KNOWLEDGE_BODIES, KNOWLEDGE_ITEMS, KindChip, KnowledgeBrowser, KnowledgeMDXProvider, KnowledgeNodeList, KnowledgeNodeView, NodeDescribeShell, NodeHeader, NodeMetadataFooter, OrganizationDescribeView, RelatedKnowledgeSection, ResourceDescribeView, SystemDescribeView, useKnowledgeAllowlist };
|
|
11565
|
+
export { DescribeNodeView, DomainPanelDispatcher, EdgeRelationshipGroup, GenericDescribeView, KNOWLEDGE_ALLOWLIST, KNOWLEDGE_BODIES, KNOWLEDGE_ITEMS, KindChip, KnowledgeBrowser, KnowledgeMDXProvider, KnowledgeNodeDetailRouteView, KnowledgeNodeList, KnowledgeNodeView, NodeDescribeShell, NodeHeader, NodeMetadataFooter, OrganizationDescribeView, RelatedKnowledgeSection, ResourceDescribeView, SystemDescribeView, decodeKnowledgeRouteNodeId, formatKnowledgeDomainLabel, formatKnowledgeRouteTitle, getKnowledgeRouteBreadcrumbLabel, parseKnowledgeItemRouteId, resolveKnowledgeGraphNodeByRouteId, resolveKnowledgeRouteTarget, useKnowledgeAllowlist };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.51.0",
|
|
4
4
|
"description": "UI components and platform-aware hooks for building custom frontends on the Elevasis platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -274,11 +274,11 @@
|
|
|
274
274
|
"typescript": "5.9.2",
|
|
275
275
|
"vite": "^7.0.0",
|
|
276
276
|
"vitest": "^3.2.4",
|
|
277
|
-
"@
|
|
278
|
-
"@repo/eslint-config": "0.0.0",
|
|
279
|
-
"@repo/core": "0.47.0",
|
|
277
|
+
"@repo/core": "0.48.0",
|
|
280
278
|
"@repo/elevasis-core": "1.0.0",
|
|
281
|
-
"@repo/typescript-config": "0.0.0"
|
|
279
|
+
"@repo/typescript-config": "0.0.0",
|
|
280
|
+
"@elevasis/sdk": "1.35.0",
|
|
281
|
+
"@repo/eslint-config": "0.0.0"
|
|
282
282
|
},
|
|
283
283
|
"dependencies": {
|
|
284
284
|
"@dagrejs/dagre": "^1.1.4",
|
package/src/knowledge/README.md
CHANGED
|
@@ -10,8 +10,10 @@ Read-only browser primitives for the Organization Model knowledge graph.
|
|
|
10
10
|
| `KnowledgeTree` | By-feature primary tree with hierarchical features and multi-governance duplication. |
|
|
11
11
|
| `KnowledgeNodeList` | Legacy flat list of node summary cards; exported for compatibility. |
|
|
12
12
|
| `KnowledgeNodeView` | Single knowledge-node detail view using `NodeDescribeShell` and relationship groups. |
|
|
13
|
-
| `KnowledgeSearchBar` | Client-side search over `_generated/knowledge-search-index.json`. |
|
|
14
|
-
| `
|
|
13
|
+
| `KnowledgeSearchBar` | Client-side search over `_generated/knowledge-search-index.json`. |
|
|
14
|
+
| `KnowledgeNodeDetailRouteView` | Shared `/knowledge/$nodeId` content route view; apps keep TanStack route adapters and navigation wiring local. |
|
|
15
|
+
| `KnowledgeRouteIds` helpers | Decode route ids, resolve Knowledge route targets, and derive route labels for app-local breadcrumbs. |
|
|
16
|
+
| `KnowledgeSidebarMiddle` | Deprecated legacy sidebar middle section; active sidebar lives under `features/knowledge/sidebar`. |
|
|
15
17
|
| `KNOWLEDGE_ITEMS` | Deprecated default sidebar nav items retained for compatibility. |
|
|
16
18
|
| `KnowledgeMDXProvider`, `useKnowledgeAllowlist`, `KNOWLEDGE_ALLOWLIST` | MDX runtime allowlist (`Card`, `Cards`, `Step`, `Steps`, `Callout`, `Tab`, `Tabs`). |
|
|
17
19
|
| `KNOWLEDGE_BODIES` | Build-time-compiled MDX components keyed by node id. |
|