andy-stack_vaultkeeper-ai/Views/MainView.ts
Andrew Beal eeceda00e1 refactor: migrate to Obsidian theme variables for consistent theming
Replace hardcoded color values and custom CSS variables with Obsidian's
built-in theme variables for backgrounds, borders, and interactive elements.
Removes unused isStreaming state and simplifies gradient background. Updates
view display text to "AI Agent".
2025-10-17 23:51:23 +01:00

52 lines
No EOL
1.1 KiB
TypeScript

import { ItemView, WorkspaceLeaf } from 'obsidian';
import { mount, unmount } from 'svelte';
import ChatWindow from 'Components/ChatWindow.svelte';
import TopBar from 'Components/TopBar.svelte';
export const VIEW_TYPE_MAIN = 'main-view';
export class MainView extends ItemView {
constructor(leaf: WorkspaceLeaf) {
super(leaf);
}
topBar: ReturnType<typeof TopBar> | undefined;
input: ReturnType<typeof ChatWindow> | undefined;
getViewType() {
return VIEW_TYPE_MAIN;
}
getDisplayText() {
return "AI Agent";
}
async onOpen() {
const container = this.contentEl;
container.empty();
// Mount TopBar with reference to ChatWindow's focus function
this.topBar = mount(TopBar, {
target: container,
props: {
leaf: this.leaf,
onNewConversation: () => this.input?.focusInput()
}
});
// Mount ChatWindow first
this.input = mount(ChatWindow, {
target: container,
props: {}
});
}
async onClose() {
if (this.topBar) {
unmount(this.topBar);
}
if (this.input) {
unmount(this.input);
}
}
}