/**
* 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);
}
}
}