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:
Codex
2026-09-13 14:26:39 +02:00
parent 2d1b714ebe
commit d8a29bfbdd
207 changed files with 8570 additions and 2164 deletions
+5 -3
View File
@@ -12,6 +12,7 @@ import {
} from "react";
import { createPortal } from "react-dom";
import { X } from "lucide-react";
import { useI18n } from "../i18n";
import { Button } from "../components/ui/button";
@@ -148,7 +149,7 @@ export const WorkAreaPanel = forwardRef<HTMLElement, WorkAreaPanelProps>(
title,
description,
onClose,
closeLabel = "Close panel",
closeLabel,
children,
bodyClassName,
footer,
@@ -160,6 +161,7 @@ export const WorkAreaPanel = forwardRef<HTMLElement, WorkAreaPanelProps>(
},
forwardedRef,
) {
const { t: translate } = useI18n();
const panelHost = useContext(WorkAreaPanelHostContext);
const titleId = useId();
const descriptionId = useId();
@@ -236,8 +238,8 @@ export const WorkAreaPanel = forwardRef<HTMLElement, WorkAreaPanelProps>(
data-drawer-close
onClick={onClose}
disabled={busy}
aria-label={closeLabel}
title={closeLabel}
aria-label={closeLabel ?? translate("Close panel")}
title={closeLabel ?? translate("Close panel")}
>
<X aria-hidden="true" />
</Button>