class AppHeader extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
}
connectedCallback() {
this.render();
this.setupEventListeners();
}
render() {
this.shadowRoot.innerHTML = `
`;
}
setupEventListeners() {
// App title click - new chat
const appTitle = this.shadowRoot.querySelector('.app-title');
appTitle.addEventListener('click', () => {
if (window.claudeApp) {
window.claudeApp.newChat();
}
});
// Model selector change
const modelSelector = this.shadowRoot.querySelector('.model-selector');
// Set initial value
if (window.claudeApp) {
modelSelector.value = window.claudeApp.selectedModel;
}
modelSelector.addEventListener('change', (e) => {
if (window.claudeApp) {
window.claudeApp.changeModel(e.target.value);
}
});
// Update model selector when app state changes
if (window.claudeApp) {
const originalChangeModel = window.claudeApp.changeModel.bind(window.claudeApp);
window.claudeApp.changeModel = (newModel) => {
originalChangeModel(newModel);
modelSelector.value = newModel;
};
}
}
}
customElements.define('app-header', AppHeader);