/** * ux-workdesk.js * UX Team workdesk - Visual diff, accessibility audits, component gallery * MVP2: Added metrics frontpage as default view */ import BaseWorkdesk from './base-workdesk.js'; import { hydrateComponent } from '../config/component-registry.js'; export default class UXWorkdesk extends BaseWorkdesk { constructor(shell) { super(shell); this.teamId = 'ux'; this.teamName = 'UX Team'; this.tools = [ { id: 'frontpage', name: 'Dashboard', description: 'Team metrics and quick actions', component: 'ds-frontpage' }, { id: 'figma-plugin', name: 'Figma Plugin', description: 'Export tokens/assets/components from Figma', component: 'ds-figma-plugin' }, { id: 'token-list', name: 'Token List', description: 'View all design tokens', component: 'ds-token-list' }, { id: 'asset-list', name: 'Asset List', description: 'Gallery of design assets', component: 'ds-asset-list' }, { id: 'component-list', name: 'Component List', description: 'Design system components', component: 'ds-component-list' }, { id: 'navigation-demos', name: 'Navigation Demos', description: 'Generate navigation flow demos', component: 'ds-navigation-demos' } ]; this.currentTool = 'frontpage'; } async loadTool(tool) { const stage = this.shell.stageContent; if (!stage) return; // Show loading state stage.innerHTML = `
Loading ${tool.name}...
`; try { // Clear the stage and hydrate the component stage.innerHTML = ''; await hydrateComponent(tool.component, stage); console.log(`[UXWorkdesk] Loaded component: ${tool.component}`); } catch (error) { console.error(`[UXWorkdesk] Failed to load tool ${tool.component}:`, error); stage.innerHTML = `

Error Loading Tool

${error.message}

`; } } renderStage() { const stage = this.shell.stageContent; if (!stage) return; stage.innerHTML = `

UX Team Workdesk

Design system assets, tokens, and component management

${this.createCard('Figma Integration', `

Export from Figma:

`)} ${this.createCard('Asset Management', `

Manage design assets:

`)} ${this.createCard('Navigation', `

Navigation flow demos:

`)}

Quick Actions

`; // Setup button handlers stage.querySelector('#figma-btn')?.addEventListener('click', () => { this.onToolClick('figma-plugin'); }); stage.querySelector('#tokens-btn')?.addEventListener('click', () => { this.onToolClick('token-list'); }); stage.querySelector('#assets-btn')?.addEventListener('click', () => { this.onToolClick('asset-list'); }); stage.querySelector('#components-btn')?.addEventListener('click', () => { this.onToolClick('component-list'); }); } }