Add full shell, replaceable Omics adapter and bilingual interaction
Implement approved specification #32 and tickets #33-#37. Keep host authentication server-verified and pin session interaction language. Compile scoped base selectors for browser compatibility and retain full gutters during CSS pruning.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import type { ReactElement } from "react";
|
||||
import { useI18n } from "../i18n";
|
||||
import { SqlViewer, type SqlBlock } from "./SqlViewer";
|
||||
import { SchemaLinkingViewer, type SchemaLinking } from "./SchemaLinkingViewer";
|
||||
import { MarkdownView } from "./MarkdownView";
|
||||
@@ -105,6 +106,7 @@ function humanizeKey(k: string): string {
|
||||
* visual hierarchy: top-level sections are split by hairline rules, nested fields
|
||||
* sit tighter, and object-arrays become grouped cards. */
|
||||
function StructuredValue({ value, depth = 0 }: { value: unknown; depth?: number }): ReactElement {
|
||||
const { t } = useI18n();
|
||||
if (value === null || value === undefined || value === "") {
|
||||
return <p className="text-sm text-muted-foreground">—</p>;
|
||||
}
|
||||
@@ -136,7 +138,7 @@ function StructuredValue({ value, depth = 0 }: { value: unknown; depth?: number
|
||||
}
|
||||
const entries = Object.entries(value as Record<string, unknown>);
|
||||
if (entries.length === 0) {
|
||||
return <p className="text-sm text-muted-foreground">No artifact content available.</p>;
|
||||
return <p className="text-sm text-muted-foreground">{t("No artifact content available.")}</p>;
|
||||
}
|
||||
return (
|
||||
<div className="flex flex-col">
|
||||
|
||||
Reference in New Issue
Block a user