Files
openclaw/extensions/qa-lab/web/src/ui-render.ts
Peter Steinberger e0facfcf9a refactor(qa-lab): split web UI renderer (#106537)
* refactor(qa-lab): split web UI renderer

* refactor(qa-lab): split web UI renderer
2026-07-13 09:21:29 -07:00

57 lines
1.5 KiB
TypeScript

import { renderCaptureView } from "./ui-render-capture.js";
import { renderEvidenceView } from "./ui-render-evidence.js";
import {
renderChatView,
renderEventsView,
renderHeader,
renderReportView,
renderResultsView,
renderSidebar,
renderTabBar,
} from "./ui-render-main.js";
import type { UiState } from "./ui-types.js";
export * from "./ui-types.js";
function renderActiveTab(state: UiState): string {
switch (state.activeTab) {
case "chat":
return renderChatView(state);
case "results":
return renderResultsView(state);
case "evidence":
return renderEvidenceView(state);
case "report":
return renderReportView(state);
case "events":
return renderEventsView(state);
case "capture":
return renderCaptureView(state);
default:
return renderChatView(state);
}
}
export function renderQaLabUi(state: UiState): string {
const shellClasses = [
"app-shell",
state.sidebarCollapsed ? "app-shell--sidebar-collapsed" : "",
state.activeTab === "evidence" ? "app-shell--evidence-focus" : "",
]
.filter(Boolean)
.join(" ");
return `
<div class="${shellClasses}" data-theme="${state.theme}">
${renderHeader(state)}
<div class="layout">
${renderSidebar(state)}
<main class="main-content">
${renderTabBar(state)}
<div class="tab-content">
${renderActiveTab(state)}
</div>
</main>
</div>
</div>`;
}