| 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 { |
| 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; |
| } |
| } |