import { subscribe } from '../app-state'; import { renderDayNav } from './day-nav'; import { renderHourList } from './hour-list'; import { renderHourView } from './hour-view'; import { renderLanguageToggle } from './bilingual-toggle'; export function mountShell(root: HTMLElement): void { root.innerHTML = `
`; const dayNavEl = root.querySelector('[data-slot="day-nav"]'); const hourListEl = root.querySelector('[data-slot="hour-list"]'); const hourViewEl = root.querySelector('[data-slot="hour-view"]'); const languageToggleEl = root.querySelector('[data-slot="language-toggle"]'); if (!dayNavEl || !hourListEl || !hourViewEl || !languageToggleEl) { throw new Error('shell markup is missing an expected slot'); } function render(): void { renderDayNav(dayNavEl!); renderHourList(hourListEl!); renderHourView(hourViewEl!); renderLanguageToggle(languageToggleEl!); } render(); subscribe(render); }