@ltm-blueverse/alpha-semantic-hub 0.7.0 → 0.7.2

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.
Files changed (47) hide show
  1. package/README.md +307 -1567
  2. package/explorer/src/App.tsx +83 -83
  3. package/explorer/src/index.css +3 -3
  4. package/explorer/src/ui/primitives.css +25 -25
  5. package/explorer/src/workspaces/DecisionWorkspace/DecisionWorkspace.tsx +7 -7
  6. package/explorer/src/workspaces/DiffMergeWorkspace/DiffMergeWorkspace.tsx +4 -4
  7. package/explorer/src/workspaces/EnrichWorkspace/EntityResolutionTab.tsx +24 -24
  8. package/explorer/src/workspaces/EnrichWorkspace/RegistryTab.tsx +22 -22
  9. package/explorer/src/workspaces/GraphWorkspace/GraphCanvas.tsx +1 -1
  10. package/explorer/src/workspaces/GraphWorkspace/GraphInspectorPanel.tsx +18 -18
  11. package/explorer/src/workspaces/GraphWorkspace/GraphLoadingOverlay.tsx +25 -25
  12. package/explorer/src/workspaces/GraphWorkspace/GraphWorkspace.tsx +28 -28
  13. package/explorer/src/workspaces/GraphWorkspace/MarkdownContentViewer.tsx +15 -15
  14. package/explorer/src/workspaces/GraphWorkspace/graphAnalytics.ts +1 -1
  15. package/explorer/src/workspaces/GraphWorkspace/graphConfig.ts +15 -15
  16. package/explorer/src/workspaces/GraphWorkspace/graphSceneLayers.ts +8 -8
  17. package/explorer/src/workspaces/GraphWorkspace/graphSceneState.ts +11 -11
  18. package/explorer/src/workspaces/GraphWorkspace/graphTheme.ts +66 -66
  19. package/explorer/src/workspaces/GraphWorkspace/plugins/explorationEffectsPlugin.tsx +17 -17
  20. package/explorer/src/workspaces/GraphWorkspace/plugins/explorationEffectsPluginPhaseC.tsx +22 -22
  21. package/explorer/src/workspaces/GraphWorkspace/plugins/legendPlugin.tsx +7 -7
  22. package/explorer/src/workspaces/GraphWorkspace/plugins/neighborhoodPanelPlugin.tsx +10 -10
  23. package/explorer/src/workspaces/GraphWorkspace/plugins/temporalOverlayPlugin.tsx +9 -9
  24. package/explorer/src/workspaces/ImportExportWorkspace/ImportExportWorkspace.tsx +4 -4
  25. package/explorer/src/workspaces/LineageWorkspace/LineageDiagram.tsx +8 -8
  26. package/explorer/src/workspaces/ManageWorkspace/KGOverviewTab.tsx +5 -5
  27. package/explorer/src/workspaces/ManageWorkspace/OntologySummaryTab.tsx +19 -19
  28. package/explorer/src/workspaces/MemoryWorkspace.tsx +2 -2
  29. package/explorer/src/workspaces/OntologyWorkspace/AlignmentsTab.tsx +30 -30
  30. package/explorer/src/workspaces/OntologyWorkspace/HealthTab.tsx +26 -26
  31. package/explorer/src/workspaces/OntologyWorkspace/OntologyEditor.tsx +32 -32
  32. package/explorer/src/workspaces/OntologyWorkspace/OntologyLoader.tsx +22 -22
  33. package/explorer/src/workspaces/OntologyWorkspace/OntologyManager.tsx +40 -40
  34. package/explorer/src/workspaces/OntologyWorkspace/OntologySearch.tsx +22 -22
  35. package/explorer/src/workspaces/OntologyWorkspace/ProposalReview.tsx +31 -31
  36. package/explorer/src/workspaces/OntologyWorkspace/SKOSVocabularyManager.tsx +26 -26
  37. package/explorer/src/workspaces/OntologyWorkspace/ShaclStudio.tsx +21 -21
  38. package/explorer/src/workspaces/OntologyWorkspace/VersionsTab.tsx +38 -38
  39. package/explorer/src/workspaces/OntologyWorkspace/ontologyEditorModel.ts +3 -3
  40. package/explorer/src/workspaces/ReasoningWorkspace.tsx +4 -4
  41. package/explorer/src/workspaces/SparqlWorkspace/SparqlWorkspace.tsx +3 -3
  42. package/explorer/src/workspaces/VocabularyWorkspace/ConceptTree.tsx +3 -3
  43. package/explorer/src/workspaces/VocabularyWorkspace/ImportDropzone.tsx +4 -4
  44. package/explorer/src/workspaces/VocabularyWorkspace/PropertyPanel.tsx +8 -8
  45. package/explorer/src/workspaces/VocabularyWorkspace/Sidebar.tsx +4 -4
  46. package/explorer/src/workspaces/VocabularyWorkspace/VocabularyWorkspace.tsx +3 -3
  47. package/package.json +1 -1
@@ -105,7 +105,7 @@ export function HealthTab({ onFixInEditor }: HealthTabProps) {
105
105
  {health.dimensions.map((dimension) => (
106
106
  <div key={dimension.key} style={dimensionCardStyle}>
107
107
  <div style={dimensionHeadStyle}>
108
- <span style={{ color: "#fff0f2", fontWeight: 900 }}>{dimension.label}</span>
108
+ <span style={{ color: "#2d1619", fontWeight: 900 }}>{dimension.label}</span>
109
109
  <span style={statusBadgeStyle(dimension.status)}>{dimension.status}</span>
110
110
  </div>
111
111
  <div style={barTrackStyle}>
@@ -141,8 +141,8 @@ function IssueRow({ issue, onFixInEditor }: { issue: HealthIssue; onFixInEditor?
141
141
  <div style={issueRowStyle}>
142
142
  <div style={severityDotStyle(issue.severity)} />
143
143
  <div>
144
- <div style={{ color: "#fff0f2", fontWeight: 800 }}>{issue.entity_label || issue.category}</div>
145
- <div style={{ color: "#c99aa3", fontSize: 13, lineHeight: 1.45 }}>{issue.message}</div>
144
+ <div style={{ color: "#2d1619", fontWeight: 800 }}>{issue.entity_label || issue.category}</div>
145
+ <div style={{ color: "#aa485b", fontSize: 13, lineHeight: 1.45 }}>{issue.message}</div>
146
146
  {issue.entity_uri ? <div style={monoStyle}>{issue.entity_uri}</div> : null}
147
147
  </div>
148
148
  <span style={categoryStyle}>{issue.category}</span>
@@ -160,13 +160,13 @@ function IssueRow({ issue, onFixInEditor }: { issue: HealthIssue; onFixInEditor?
160
160
 
161
161
  function dimensionColor(score: number, status: string) {
162
162
  if (status === "unavailable") return "#9c7a82";
163
- if (score >= 80) return "#7ce7d3";
164
- if (score >= 55) return "#ff7a45";
165
- return "#ff9daf";
163
+ if (score >= 80) return "#0e8571";
164
+ if (score >= 55) return "#e86a2e";
165
+ return "#e0556d";
166
166
  }
167
167
 
168
168
  function statusBadgeStyle(status: string): CSSProperties {
169
- const color = status === "ok" ? "#7ce7d3" : status === "unavailable" ? "#9c7a82" : "#ff7a45";
169
+ const color = status === "ok" ? "#0e8571" : status === "unavailable" ? "#9c7a82" : "#e86a2e";
170
170
  return {
171
171
  color,
172
172
  background: `${color}18`,
@@ -180,35 +180,35 @@ function statusBadgeStyle(status: string): CSSProperties {
180
180
  }
181
181
 
182
182
  function severityDotStyle(severity: string): CSSProperties {
183
- const color = severity === "critical" ? "#ff9daf" : severity === "warning" ? "#ff7a45" : "#ff2d4b";
183
+ const color = severity === "critical" ? "#e0556d" : severity === "warning" ? "#e86a2e" : "#ff2d4b";
184
184
  return { width: 10, height: 10, borderRadius: "50%", background: color, boxShadow: `0 0 18px ${color}55`, marginTop: 5 };
185
185
  }
186
186
 
187
187
  const pageStyle: CSSProperties = { height: "100%", overflow: "auto", padding: 22, display: "flex", flexDirection: "column", gap: 16 };
188
- const heroStyle: CSSProperties = { display: "flex", justifyContent: "space-between", gap: 18, padding: 22, border: "1px solid rgba(255,107,129,0.12)", borderRadius: 22, background: "linear-gradient(135deg, rgba(11,25,42,0.94), rgba(7,14,25,0.9))" };
189
- const kickerStyle: CSSProperties = { display: "inline-flex", gap: 8, alignItems: "center", color: "#9ee8d7", fontSize: 11, fontWeight: 900, letterSpacing: "0.12em", textTransform: "uppercase" };
190
- const titleStyle: CSSProperties = { margin: "8px 0", color: "#fff0f2", fontSize: 26, letterSpacing: "-0.04em" };
191
- const textStyle: CSSProperties = { margin: 0, color: "#c99aa3", lineHeight: 1.6, maxWidth: 620 };
188
+ const heroStyle: CSSProperties = { display: "flex", justifyContent: "space-between", gap: 18, padding: 22, border: "1px solid rgba(255,107,129,0.12)", borderRadius: 22, background: "linear-gradient(135deg, rgba(255, 255, 255,0.94), rgba(255, 255, 255,0.9))" };
189
+ const kickerStyle: CSSProperties = { display: "inline-flex", gap: 8, alignItems: "center", color: "#0e7f66", fontSize: 11, fontWeight: 900, letterSpacing: "0.12em", textTransform: "uppercase" };
190
+ const titleStyle: CSSProperties = { margin: "8px 0", color: "#2d1619", fontSize: 26, letterSpacing: "-0.04em" };
191
+ const textStyle: CSSProperties = { margin: 0, color: "#aa485b", lineHeight: 1.6, maxWidth: 620 };
192
192
  const selectorShellStyle: CSSProperties = { minWidth: 320 };
193
193
  const labelStyle: CSSProperties = { display: "block", color: "#9c7a82", fontSize: 11, fontWeight: 800, margin: "0 0 6px", textTransform: "uppercase", letterSpacing: "0.08em" };
194
- const inputStyle: CSSProperties = { width: "100%", boxSizing: "border-box", border: "1px solid rgba(255,107,129,0.14)", borderRadius: 12, padding: "10px 12px", background: "rgba(6,3,5,0.8)", color: "#fff0f2" };
194
+ const inputStyle: CSSProperties = { width: "100%", boxSizing: "border-box", border: "1px solid rgba(255,107,129,0.14)", borderRadius: 12, padding: "10px 12px", background: "rgba(255, 255, 255,0.8)", color: "#2d1619" };
195
195
  const scoreGridStyle: CSSProperties = { display: "grid", gridTemplateColumns: "220px repeat(5, minmax(180px, 1fr))", gap: 12 };
196
- const scoreCardStyle: CSSProperties = { padding: 18, borderRadius: 20, background: "rgba(15,35,52,0.88)", border: "1px solid rgba(124,231,211,0.2)", display: "flex", flexDirection: "column", gap: 10 };
197
- const scoreValueStyle: CSSProperties = { color: "#9ee8d7", fontSize: 52, lineHeight: 1, fontWeight: 950, letterSpacing: "-0.06em" };
198
- const dimensionCardStyle: CSSProperties = { padding: 16, borderRadius: 18, background: "rgba(12,6,9,0.78)", border: "1px solid rgba(255,107,129,0.12)" };
196
+ const scoreCardStyle: CSSProperties = { padding: 18, borderRadius: 20, background: "rgba(255, 255, 255,0.88)", border: "1px solid rgba(124,231,211,0.2)", display: "flex", flexDirection: "column", gap: 10 };
197
+ const scoreValueStyle: CSSProperties = { color: "#0e7f66", fontSize: 52, lineHeight: 1, fontWeight: 950, letterSpacing: "-0.06em" };
198
+ const dimensionCardStyle: CSSProperties = { padding: 16, borderRadius: 18, background: "rgba(255, 255, 255,0.78)", border: "1px solid rgba(255,107,129,0.12)" };
199
199
  const dimensionHeadStyle: CSSProperties = { display: "flex", justifyContent: "space-between", gap: 8, alignItems: "center", marginBottom: 12 };
200
- const barTrackStyle: CSSProperties = { height: 8, borderRadius: 999, background: "rgba(255,255,255,0.06)", overflow: "hidden" };
200
+ const barTrackStyle: CSSProperties = { height: 8, borderRadius: 999, background: "rgba(28, 20, 24,0.06)", overflow: "hidden" };
201
201
  const barFillStyle: CSSProperties = { height: "100%", borderRadius: 999 };
202
- const dimensionFootStyle: CSSProperties = { display: "flex", flexDirection: "column", gap: 6, color: "#c99aa3", fontSize: 12, marginTop: 10 };
203
- const cardStyle: CSSProperties = { padding: 18, border: "1px solid rgba(255,107,129,0.12)", borderRadius: 20, background: "rgba(12,6,9,0.78)" };
204
- const sectionTitleStyle: CSSProperties = { margin: "0 0 14px", color: "#fff0f2", fontSize: 16 };
202
+ const dimensionFootStyle: CSSProperties = { display: "flex", flexDirection: "column", gap: 6, color: "#aa485b", fontSize: 12, marginTop: 10 };
203
+ const cardStyle: CSSProperties = { padding: 18, border: "1px solid rgba(255,107,129,0.12)", borderRadius: 20, background: "rgba(255, 255, 255,0.78)" };
204
+ const sectionTitleStyle: CSSProperties = { margin: "0 0 14px", color: "#2d1619", fontSize: 16 };
205
205
  const issueListStyle: CSSProperties = { display: "flex", flexDirection: "column", gap: 8 };
206
- const issueRowStyle: CSSProperties = { display: "grid", gridTemplateColumns: "14px 1fr auto auto", gap: 12, alignItems: "start", padding: 12, borderRadius: 14, background: "rgba(255,255,255,0.03)", border: "1px solid rgba(255,107,129,0.08)" };
207
- const categoryStyle: CSSProperties = { color: "#9ee8d7", border: "1px solid rgba(158,232,215,0.22)", borderRadius: 999, padding: "4px 8px", fontSize: 10, fontWeight: 900 };
208
- const smallButtonStyle: CSSProperties = { display: "inline-flex", gap: 6, alignItems: "center", border: "1px solid rgba(255,107,129,0.16)", borderRadius: 10, padding: "7px 9px", background: "rgba(255,107,129,0.08)", color: "#fff0f2", cursor: "pointer", fontWeight: 800 };
209
- const secondaryButtonStyle: CSSProperties = { display: "inline-flex", gap: 8, alignItems: "center", justifyContent: "center", border: "1px solid rgba(255,107,129,0.16)", borderRadius: 12, padding: "10px 12px", background: "rgba(255,107,129,0.08)", color: "#fff0f2", cursor: "pointer", fontWeight: 900 };
206
+ const issueRowStyle: CSSProperties = { display: "grid", gridTemplateColumns: "14px 1fr auto auto", gap: 12, alignItems: "start", padding: 12, borderRadius: 14, background: "rgba(28, 20, 24,0.03)", border: "1px solid rgba(255,107,129,0.08)" };
207
+ const categoryStyle: CSSProperties = { color: "#0e7f66", border: "1px solid rgba(158,232,215,0.22)", borderRadius: 999, padding: "4px 8px", fontSize: 10, fontWeight: 900 };
208
+ const smallButtonStyle: CSSProperties = { display: "inline-flex", gap: 6, alignItems: "center", border: "1px solid rgba(255,107,129,0.16)", borderRadius: 10, padding: "7px 9px", background: "rgba(255,107,129,0.08)", color: "#2d1619", cursor: "pointer", fontWeight: 800 };
209
+ const secondaryButtonStyle: CSSProperties = { display: "inline-flex", gap: 8, alignItems: "center", justifyContent: "center", border: "1px solid rgba(255,107,129,0.16)", borderRadius: 12, padding: "10px 12px", background: "rgba(255,107,129,0.08)", color: "#2d1619", cursor: "pointer", fontWeight: 900 };
210
210
  const monoStyle: CSSProperties = { marginTop: 4, color: "#9c7a82", fontSize: 11, fontFamily: "JetBrains Mono, monospace", wordBreak: "break-all" };
211
211
  const mutedStyle: CSSProperties = { margin: 0, color: "#9c7a82", fontSize: 13 };
212
- const loadingStyle: CSSProperties = { display: "inline-flex", alignItems: "center", gap: 8, color: "#c99aa3", padding: 18 };
212
+ const loadingStyle: CSSProperties = { display: "inline-flex", alignItems: "center", gap: 8, color: "#aa485b", padding: 18 };
213
213
  const emptyStyle: CSSProperties = { color: "#9c7a82", padding: 22 };
214
- const errorStyle: CSSProperties = { display: "flex", alignItems: "center", gap: 8, padding: 12, borderRadius: 14, color: "#ffb4c2", background: "rgba(255,157,175,0.1)", border: "1px solid rgba(255,157,175,0.18)" };
214
+ const errorStyle: CSSProperties = { display: "flex", alignItems: "center", gap: 8, padding: 12, borderRadius: 14, color: "#e98498", background: "rgba(255,157,175,0.1)", border: "1px solid rgba(255,157,175,0.18)" };
@@ -66,7 +66,7 @@ const ontologyFlowThemeCss = `
66
66
  overflow: hidden;
67
67
  border: 1px solid rgba(255, 107, 129, 0.2);
68
68
  border-radius: 9px;
69
- background: rgba(6, 13, 26, 0.96);
69
+ background: rgba(255, 255, 255, 0.96);
70
70
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.38);
71
71
  }
72
72
 
@@ -75,24 +75,24 @@ const ontologyFlowThemeCss = `
75
75
  height: 30px;
76
76
  background: transparent;
77
77
  border-bottom-color: rgba(255, 107, 129, 0.14);
78
- color: #c99aa3;
78
+ color: #aa485b;
79
79
  transition: color 140ms ease, background 140ms ease;
80
80
  }
81
81
 
82
82
  .ontology-editor-flow .react-flow__controls-button:hover {
83
83
  background: rgba(255, 45, 75, 0.14);
84
- color: #fff0f2;
84
+ color: #2d1619;
85
85
  }
86
86
 
87
87
  .ontology-editor-flow .react-flow__controls-button:focus-visible {
88
88
  position: relative;
89
89
  z-index: 1;
90
- outline: 2px solid #ff6b81;
90
+ outline: 2px solid #d41736;
91
91
  outline-offset: -2px;
92
92
  }
93
93
 
94
94
  .ontology-editor-flow .react-flow__controls-button:disabled {
95
- background: rgba(6, 3, 5, 0.32);
95
+ background: rgba(255, 255, 255, 0.32);
96
96
  color: #40566f;
97
97
  }
98
98
  `;
@@ -102,7 +102,7 @@ const classNodeStyle: React.CSSProperties = {
102
102
  borderRadius: "8px",
103
103
  background: "linear-gradient(135deg, rgba(255, 45, 75, 0.15), rgba(255, 45, 75, 0.05))",
104
104
  border: "1px solid rgba(255, 107, 129, 0.3)",
105
- color: "#fff0f2",
105
+ color: "#2d1619",
106
106
  fontSize: "13px",
107
107
  fontWeight: "600",
108
108
  minWidth: "140px",
@@ -118,7 +118,7 @@ const classNodeHeader: React.CSSProperties = {
118
118
 
119
119
  const classNodeSub: React.CSSProperties = {
120
120
  fontSize: "11px",
121
- color: "#c99aa3",
121
+ color: "#aa485b",
122
122
  fontWeight: "500",
123
123
  };
124
124
 
@@ -216,8 +216,8 @@ function buildEditorElements(apiNodes: OntologyGraphNode[], apiEdges: OntologyGr
216
216
  type: "default",
217
217
  markerEnd: { type: MarkerType.ArrowClosed },
218
218
  style: { stroke: "rgba(255, 107, 129, 0.72)", strokeWidth: 1.5 },
219
- labelStyle: { fill: "#c8dcf5", fontSize: 11, fontWeight: 600 },
220
- labelBgStyle: { fill: "#0b0508", fillOpacity: 0.9 },
219
+ labelStyle: { fill: "#2a4261", fontSize: 11, fontWeight: 600 },
220
+ labelBgStyle: { fill: "#ffffff", fillOpacity: 0.9 },
221
221
  }));
222
222
  return { nodes, edges };
223
223
  }
@@ -491,7 +491,7 @@ export function OntologyEditor() {
491
491
  display: "flex",
492
492
  gap: "8px",
493
493
  padding: "12px 16px",
494
- background: "rgba(6, 3, 5, 0.92)",
494
+ background: "rgba(255, 255, 255, 0.92)",
495
495
  borderBottom: "1px solid rgba(255, 120, 140, 0.12)",
496
496
  flexWrap: "wrap",
497
497
  };
@@ -504,7 +504,7 @@ export function OntologyEditor() {
504
504
  borderRadius: "8px",
505
505
  border: "1px solid rgba(255, 107, 129, 0.18)",
506
506
  background: "rgba(255, 45, 75, 0.08)",
507
- color: "#fff0f2",
507
+ color: "#2d1619",
508
508
  fontSize: "12px",
509
509
  fontWeight: "600",
510
510
  cursor: "pointer",
@@ -515,15 +515,15 @@ export function OntologyEditor() {
515
515
  padding: "8px 12px",
516
516
  borderRadius: "8px",
517
517
  border: "1px solid rgba(255, 107, 129, 0.18)",
518
- background: "rgba(6, 3, 5, 0.88)",
519
- color: "#fff0f2",
518
+ background: "rgba(255, 255, 255, 0.88)",
519
+ color: "#2d1619",
520
520
  fontSize: "12px",
521
521
  minWidth: "260px",
522
522
  };
523
523
 
524
524
  const contextMenuStyle: React.CSSProperties = {
525
525
  position: "fixed",
526
- background: "rgba(12, 6, 9, 0.95)",
526
+ background: "rgba(255, 255, 255, 0.95)",
527
527
  border: "1px solid rgba(255, 107, 129, 0.3)",
528
528
  borderRadius: "8px",
529
529
  padding: "8px 0",
@@ -537,7 +537,7 @@ export function OntologyEditor() {
537
537
  display: "flex",
538
538
  alignItems: "center",
539
539
  gap: "10px",
540
- color: "#fff0f2",
540
+ color: "#2d1619",
541
541
  fontSize: "13px",
542
542
  cursor: "pointer",
543
543
  transition: "160ms ease",
@@ -548,7 +548,7 @@ export function OntologyEditor() {
548
548
  width: "320px",
549
549
  minWidth: "320px",
550
550
  boxSizing: "border-box",
551
- background: "rgba(12, 6, 9, 0.95)",
551
+ background: "rgba(255, 255, 255, 0.95)",
552
552
  borderLeft: "1px solid rgba(255, 120, 140, 0.12)",
553
553
  padding: "20px",
554
554
  overflow: "auto",
@@ -556,7 +556,7 @@ export function OntologyEditor() {
556
556
  };
557
557
 
558
558
  return (
559
- <div style={{ display: "flex", flexDirection: "column", height: "100%", background: "#0b0508" }}>
559
+ <div style={{ display: "flex", flexDirection: "column", height: "100%", background: "#ffffff" }}>
560
560
  <style>{ontologyFlowThemeCss}</style>
561
561
  <div style={toolbarStyle}>
562
562
  <select
@@ -624,9 +624,9 @@ export function OntologyEditor() {
624
624
  onEdgeContextMenu={handleEdgeContextMenu}
625
625
  nodeTypes={nodeTypes}
626
626
  fitView
627
- style={{ background: "#0b0508" }}
627
+ style={{ background: "#ffffff" }}
628
628
  >
629
- <Background color="#1a2d3d" gap={20} />
629
+ <Background color="#f9fafa" gap={20} />
630
630
  <Controls />
631
631
  <MiniMap {...ONTOLOGY_MINIMAP_THEME} />
632
632
  </ReactFlow>
@@ -635,10 +635,10 @@ export function OntologyEditor() {
635
635
  <div style={canvasMessageStyle}>Loading ontology structure…</div>
636
636
  )}
637
637
  {!isLoadingGraph && graphError && (
638
- <div style={{ ...canvasMessageStyle, color: "#ff9a8d" }}>{graphError}</div>
638
+ <div style={{ ...canvasMessageStyle, color: "#3f1f1b" }}>{graphError}</div>
639
639
  )}
640
640
  {!isLoadingGraph && !graphError && unownedEntity && (
641
- <div style={{ ...canvasMessageStyle, color: "#ff7a45" }}>
641
+ <div style={{ ...canvasMessageStyle, color: "#e86a2e" }}>
642
642
  No registered ontology owns {unownedEntity}. Pick an ontology above to start editing.
643
643
  </div>
644
644
  )}
@@ -662,7 +662,7 @@ export function OntologyEditor() {
662
662
  </div>
663
663
  </>
664
664
  ) : (
665
- <div style={{ ...contextItemStyle, cursor: "default", color: "#c99aa3" }}>
665
+ <div style={{ ...contextItemStyle, cursor: "default", color: "#aa485b" }}>
666
666
  This term is read-only
667
667
  </div>
668
668
  )}
@@ -672,7 +672,7 @@ export function OntologyEditor() {
672
672
 
673
673
  {selectedElement && (
674
674
  <div style={detailPanelStyle}>
675
- <h3 style={{ margin: "0 0 16px", color: "#fff0f2", fontSize: "16px" }}>
675
+ <h3 style={{ margin: "0 0 16px", color: "#2d1619", fontSize: "16px" }}>
676
676
  {"source" in selectedElement
677
677
  ? "Relationship Details"
678
678
  : selectedElement.data.entityType === "property"
@@ -684,17 +684,17 @@ export function OntologyEditor() {
684
684
  : "Class Details"}
685
685
  </h3>
686
686
  <div style={{ marginBottom: "12px" }}>
687
- <label style={{ display: "block", color: "#c99aa3", fontSize: "12px", marginBottom: "4px" }}>
687
+ <label style={{ display: "block", color: "#aa485b", fontSize: "12px", marginBottom: "4px" }}>
688
688
  ID
689
689
  </label>
690
- <div style={{ color: "#fff0f2", fontSize: "13px", wordBreak: "break-all" }}>
690
+ <div style={{ color: "#2d1619", fontSize: "13px", wordBreak: "break-all" }}>
691
691
  {selectedElement.id}
692
692
  </div>
693
693
  </div>
694
694
  {!("source" in selectedElement) && (
695
695
  <>
696
696
  <div style={{ marginBottom: "12px" }}>
697
- <label style={{ display: "block", color: "#c99aa3", fontSize: "12px", marginBottom: "4px" }}>
697
+ <label style={{ display: "block", color: "#aa485b", fontSize: "12px", marginBottom: "4px" }}>
698
698
  Label
699
699
  </label>
700
700
  <input
@@ -732,17 +732,17 @@ export function OntologyEditor() {
732
732
  padding: "8px",
733
733
  borderRadius: "6px",
734
734
  border: "1px solid rgba(255, 107, 129, 0.2)",
735
- background: "rgba(6, 3, 5, 0.8)",
736
- color: "#fff0f2",
735
+ background: "rgba(255, 255, 255, 0.8)",
736
+ color: "#2d1619",
737
737
  fontSize: "13px",
738
738
  }}
739
739
  />
740
740
  </div>
741
741
  <div style={{ marginBottom: "12px" }}>
742
- <label style={{ display: "block", color: "#c99aa3", fontSize: "12px", marginBottom: "4px" }}>
742
+ <label style={{ display: "block", color: "#aa485b", fontSize: "12px", marginBottom: "4px" }}>
743
743
  Type
744
744
  </label>
745
- <div style={{ color: "#fff0f2", fontSize: "13px" }}>
745
+ <div style={{ color: "#2d1619", fontSize: "13px" }}>
746
746
  {selectedElement.data.type || "owl:Class"}
747
747
  </div>
748
748
  </div>
@@ -763,8 +763,8 @@ const canvasMessageStyle: React.CSSProperties = {
763
763
  padding: "10px 14px",
764
764
  borderRadius: "8px",
765
765
  border: "1px solid rgba(255, 107, 129, 0.18)",
766
- background: "rgba(6, 3, 5, 0.9)",
767
- color: "#c99aa3",
766
+ background: "rgba(255, 255, 255, 0.9)",
767
+ color: "#aa485b",
768
768
  fontSize: "13px",
769
769
  pointerEvents: "none",
770
770
  };
@@ -113,8 +113,8 @@ function PreviewCard({ preview }: { preview: OntologyPreview }) {
113
113
  return (
114
114
  <div style={previewCardStyle}>
115
115
  <div style={{ display: "flex", alignItems: "center", gap: 8, marginBottom: 12 }}>
116
- <CheckCircle2 size={16} color="#4cc38a" />
117
- <span style={{ color: "#4cc38a", fontSize: 12, fontWeight: 700 }}>
116
+ <CheckCircle2 size={16} color="#1f9d5f" />
117
+ <span style={{ color: "#1f9d5f", fontSize: 12, fontWeight: 700 }}>
118
118
  Preview ready
119
119
  </span>
120
120
  <Badge label={preview.format} color="#ff2d4b" />
@@ -122,7 +122,7 @@ function PreviewCard({ preview }: { preview: OntologyPreview }) {
122
122
 
123
123
  <div style={previewTitleStyle}>{preview.name}</div>
124
124
  {preview.description && (
125
- <div style={{ color: "#c99aa3", fontSize: 12, marginTop: 6, lineHeight: 1.5 }}>
125
+ <div style={{ color: "#aa485b", fontSize: 12, marginTop: 6, lineHeight: 1.5 }}>
126
126
  {preview.description}
127
127
  </div>
128
128
  )}
@@ -156,7 +156,7 @@ function PreviewRow({
156
156
  </span>
157
157
  <span
158
158
  style={{
159
- color: "#f0cdd3",
159
+ color: "#602b34",
160
160
  fontSize: 11,
161
161
  fontFamily: mono ? "monospace" : undefined,
162
162
  wordBreak: "break-all",
@@ -426,10 +426,10 @@ function FileUploadPanel({ onLoaded }: { onLoaded: () => void }) {
426
426
  >
427
427
  <FileUp size={24} color="#ff2d4b" />
428
428
  {fileName ? (
429
- <div style={{ color: "#fff0f2", fontSize: 13, fontWeight: 600 }}>{fileName}</div>
429
+ <div style={{ color: "#2d1619", fontSize: 13, fontWeight: 600 }}>{fileName}</div>
430
430
  ) : (
431
431
  <>
432
- <div style={{ color: "#c99aa3", fontSize: 13 }}>
432
+ <div style={{ color: "#aa485b", fontSize: 13 }}>
433
433
  Drop a file here or <span style={{ color: "#ff2d4b" }}>browse</span>
434
434
  </div>
435
435
  <div style={{ color: "#8f6d75", fontSize: 11 }}>
@@ -649,8 +649,8 @@ export function OntologyLoader({ onLoaded, onClose }: LoaderProps) {
649
649
  <div style={modalStyle}>
650
650
  <div style={modalHeaderStyle}>
651
651
  <div>
652
- <div style={{ color: "#fff0f2", fontSize: 16, fontWeight: 800 }}>Load Ontology</div>
653
- <div style={{ color: "#c99aa3", fontSize: 12, marginTop: 2 }}>
652
+ <div style={{ color: "#2d1619", fontSize: 16, fontWeight: 800 }}>Load Ontology</div>
653
+ <div style={{ color: "#aa485b", fontSize: 12, marginTop: 2 }}>
654
654
  Import from URL, upload a file, or create a new ontology
655
655
  </div>
656
656
  </div>
@@ -695,7 +695,7 @@ export function OntologyLoader({ onLoaded, onClose }: LoaderProps) {
695
695
  const overlayStyle: React.CSSProperties = {
696
696
  position: "fixed",
697
697
  inset: 0,
698
- background: "rgba(6,3,5,0.78)",
698
+ background: "rgba(255, 255, 255,0.78)",
699
699
  backdropFilter: "blur(6px)",
700
700
  display: "flex",
701
701
  alignItems: "center",
@@ -710,8 +710,8 @@ const modalStyle: React.CSSProperties = {
710
710
  flexDirection: "column",
711
711
  borderRadius: 20,
712
712
  border: "1px solid rgba(255,107,129,0.16)",
713
- background: "linear-gradient(180deg, rgba(11,21,34,0.98), rgba(6,13,22,0.96))",
714
- boxShadow: "0 32px 80px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06)",
713
+ background: "linear-gradient(180deg, rgba(255, 255, 255,0.98), rgba(255, 255, 255,0.96))",
714
+ boxShadow: "0 32px 80px rgba(0,0,0,0.5), inset 0 1px 0 rgba(28, 20, 24,0.06)",
715
715
  overflow: "hidden",
716
716
  };
717
717
 
@@ -749,7 +749,7 @@ const modalTabBase: React.CSSProperties = {
749
749
  };
750
750
 
751
751
  const modalTabIdle: React.CSSProperties = {
752
- color: "#c99aa3",
752
+ color: "#aa485b",
753
753
  };
754
754
 
755
755
  const modalTabActive: React.CSSProperties = {
@@ -760,7 +760,7 @@ const modalTabActive: React.CSSProperties = {
760
760
  const closeIconBtnStyle: React.CSSProperties = {
761
761
  background: "transparent",
762
762
  border: "none",
763
- color: "#c99aa3",
763
+ color: "#aa485b",
764
764
  cursor: "pointer",
765
765
  padding: 4,
766
766
  borderRadius: 8,
@@ -769,7 +769,7 @@ const closeIconBtnStyle: React.CSSProperties = {
769
769
  };
770
770
 
771
771
  const fieldLabelStyle: React.CSSProperties = {
772
- color: "#c99aa3",
772
+ color: "#aa485b",
773
773
  fontSize: 11,
774
774
  fontWeight: 700,
775
775
  letterSpacing: "0.05em",
@@ -781,7 +781,7 @@ const inputStyle: React.CSSProperties = {
781
781
  borderRadius: 8,
782
782
  border: "1px solid rgba(255,107,129,0.16)",
783
783
  background: "rgba(0,0,0,0.24)",
784
- color: "#fff0f2",
784
+ color: "#2d1619",
785
785
  fontSize: 13,
786
786
  outline: "none",
787
787
  boxSizing: "border-box",
@@ -798,7 +798,7 @@ const previewBtnStyle: React.CSSProperties = {
798
798
  borderRadius: 8,
799
799
  border: "1px solid rgba(255,107,129,0.2)",
800
800
  background: "rgba(255,45,75,0.08)",
801
- color: "#ff6b81",
801
+ color: "#d41736",
802
802
  fontSize: 12,
803
803
  fontWeight: 600,
804
804
  cursor: "pointer",
@@ -816,7 +816,7 @@ const primaryBtnStyle: React.CSSProperties = {
816
816
  borderRadius: 10,
817
817
  border: "1px solid rgba(255,45,75,0.3)",
818
818
  background: "linear-gradient(135deg, rgba(255,45,75,0.2), rgba(255,45,75,0.1))",
819
- color: "#ff6b81",
819
+ color: "#d41736",
820
820
  fontSize: 13,
821
821
  fontWeight: 700,
822
822
  cursor: "pointer",
@@ -842,7 +842,7 @@ const previewCardStyle: React.CSSProperties = {
842
842
  };
843
843
 
844
844
  const previewTitleStyle: React.CSSProperties = {
845
- color: "#fff0f2",
845
+ color: "#2d1619",
846
846
  fontSize: 15,
847
847
  fontWeight: 800,
848
848
  letterSpacing: "-0.03em",
@@ -875,7 +875,7 @@ const successBoxStyle: React.CSSProperties = {
875
875
  borderRadius: 8,
876
876
  border: "1px solid rgba(76,195,138,0.22)",
877
877
  background: "rgba(76,195,138,0.06)",
878
- color: "#4cc38a",
878
+ color: "#1f9d5f",
879
879
  fontSize: 12,
880
880
  };
881
881
 
@@ -887,7 +887,7 @@ const errorBoxStyle: React.CSSProperties = {
887
887
  borderRadius: 8,
888
888
  border: "1px solid rgba(255,157,175,0.22)",
889
889
  background: "rgba(255,157,175,0.06)",
890
- color: "#ff9daf",
890
+ color: "#e0556d",
891
891
  fontSize: 12,
892
892
  };
893
893
 
@@ -902,12 +902,12 @@ const modeTabBase: React.CSSProperties = {
902
902
 
903
903
  const modeTabIdle: React.CSSProperties = {
904
904
  background: "transparent",
905
- color: "#c99aa3",
905
+ color: "#aa485b",
906
906
  borderColor: "rgba(255,107,129,0.1)",
907
907
  };
908
908
 
909
909
  const modeTabActive: React.CSSProperties = {
910
910
  background: "rgba(255,45,75,0.14)",
911
- color: "#fff0f2",
911
+ color: "#2d1619",
912
912
  borderColor: "rgba(255,107,129,0.24)",
913
913
  };