/* eslint-disable @typescript-eslint/no-explicit-any */
/**
 * Demo module for sketch-app-shell component
 */

import { DemoModule } from "./demo-framework/types";
import { demoUtils } from "./demo-fixtures/index";

const demo: DemoModule = {
  title: "Sketch App Shell Demo",
  description:
    "Full sketch application shell with chat, diff, and terminal views",
  imports: ["../sketch-app-shell"],
  styles: ["/src/sketch-app-shell.css"],

  setup: async (container: HTMLElement) => {
    // Mock the service worker for data services
    const { worker } = await import("./mocks/browser");
    await worker.start();

    // Create demo sections
    const mainSection = demoUtils.createDemoSection(
      "Sketch App Shell",
      "Interactive sketch application shell with multiple view modes",
    );

    // Create the app shell
    const appShell = document.createElement("sketch-app-shell") as any;

    // Set up the shell to be contained within the demo
    appShell.style.cssText = `
      border: 1px solid #d1d9e0;
      overflow: hidden;
      display: block;
    `;

    // Assemble the demo
    mainSection.appendChild(appShell);

    container.appendChild(mainSection);

    // Wait a bit for the component to initialize
    await demoUtils.delay(100);
  },

  cleanup: async () => {
    // Clean up any global state if needed
    console.log("Cleaning up sketch-app-shell demo");
  },
};

export default demo;
