/** * admin-workdesk.js * Admin Team workdesk - System settings and project management */ import BaseWorkdesk from './base-workdesk.js'; import '../components/admin/ds-admin-settings.js'; import '../components/admin/ds-project-list.js'; export default class AdminWorkdesk extends BaseWorkdesk { constructor(shell) { super(shell); this.teamId = 'admin'; this.teamName = 'Admin'; this.tools = [ { id: 'settings', name: 'System Settings', description: 'Configure DSS hostname, port, and setup type', component: 'ds-admin-settings' }, { id: 'projects', name: 'Projects', description: 'Create and manage design system projects', component: 'ds-project-list' } ]; this.currentTab = 'settings'; } /** * Admin sidebar shows tab navigation for Settings and Projects */ renderSidebar() { const sidebar = this.shell.sidebarContent; if (!sidebar) return; sidebar.innerHTML = `
${this.tools.map(tool => ` `).join('')}
`; // Setup tab click handlers sidebar.querySelectorAll('.tab-btn').forEach(btn => { btn.addEventListener('click', () => { const tabId = btn.dataset.tab; this.switchTab(tabId); }); }); } /** * Admin stage shows tab content - either Settings or Projects */ renderStage() { const stage = this.shell.stageContent; if (!stage) return; stage.innerHTML = `
${this.renderTabContent()}
`; // Trigger connectedCallback on custom elements this.hydrateComponents(); } /** * Render content based on current tab */ renderTabContent() { switch (this.currentTab) { case 'settings': return ''; case 'projects': return ''; default: return ''; } } /** * Switch to a different tab and re-render */ switchTab(tabId) { this.currentTab = tabId; this.renderSidebar(); this.renderStage(); } /** * Hydrate custom elements after rendering */ hydrateComponents() { const stage = this.shell.stageContent; if (!stage) return; // Find and trigger connectedCallback on custom elements stage.querySelectorAll('ds-admin-settings, ds-project-list').forEach(el => { // Web components auto-trigger connectedCallback when inserted into DOM // No manual trigger needed }); } /** * Admin panel shows minimal system log */ renderPanel() { const panel = this.shell.querySelector('ds-panel'); if (panel) { // Configure panel with admin config panel.configure('admin', false); } } }