blob: 1c12b2cb101f1839b4cacc90d67a71a4233861f3 [file] [log] [blame]
import { html } from "lit";
import { customElement } from "lit/decorators.js";
import { ref } from "lit/directives/ref.js";
import { SketchAppShellBase } from "./sketch-app-shell-base";
@customElement("sketch-app-shell")
export class SketchAppShell extends SketchAppShellBase {
connectedCallback(): void {
super.connectedCallback();
this.dataManager.addEventListener("sessionEnded", () => {
this.handleSessionEnded();
});
}
async handleSessionEnded() {
await this.navigateToMessagesArchiveView();
}
render() {
return html`
<!-- Main container: flex column, full height, system font, hidden overflow-x -->
<div
class="block font-sans text-gray-800 dark:text-gray-200 leading-relaxed h-screen w-full relative overflow-x-hidden flex flex-col bg-white dark:bg-gray-900"
>
${this.renderTopBanner()}
<!-- Main content area: scrollable, flex-1 -->
<div
id="view-container"
${ref(this.scrollContainerRef)}
class="self-stretch overflow-y-auto flex-1 flex flex-col min-h-0"
>
<div
id="view-container-inner"
class="${this.viewMode === "diff2"
? "max-w-full w-full h-full p-0 flex flex-col flex-1 min-h-0"
: this._todoPanelVisible && this.viewMode === "chat"
? "max-w-none w-full m-0 px-5"
: "max-w-6xl w-[calc(100%-40px)] mx-auto"} relative pb-2.5 pt-2.5 flex flex-col h-full"
>
${this.renderMainViews()}
</div>
</div>
${this.renderChatInput()}
</div>
`;
}
}
declare global {
interface HTMLElementTagNameMap {
"sketch-app-shell": SketchAppShell;
}
}