class TimelineTasks extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.render(); } render() { this.shadowRoot.innerHTML = `

Timeline

`; } updateTasks(tasks) { const container = this.shadowRoot.getElementById('timeline-task-list'); container.innerHTML = tasks.map(task => `
${task.title}
${formatTime(task.estimatedTime)}
`).join(''); } } customElements.define('timeline-tasks', TimelineTasks); function formatTime(minutes) { const h = Math.floor(minutes / 60); const m = minutes % 60; return `${h}h ${m}m`; }