import { DeesElement, customElement, html, css, cssManager, type TemplateResult, } from '@design.estate/dees-element'; import type { DeesAppui } from '@design.estate/dees-catalog'; import './index.js'; declare global { interface HTMLElementTagNameMap { 'sz-demo-view-dashboard': SzDemoViewDashboard; } } @customElement('sz-demo-view-dashboard') export class SzDemoViewDashboard extends DeesElement { private appui: DeesAppui | null = null; async onActivate(context: { appui: DeesAppui; viewId: string }) { this.appui = context.appui; // Dashboard secondary menu with quick actions this.appui.setSecondaryMenu({ heading: 'Dashboard', groups: [ { name: 'Quick Actions', items: [ { type: 'action', key: 'Deploy Service', iconName: 'lucide:Rocket', action: () => { console.log('Deploy service'); } }, { type: 'action', key: 'Add Domain', iconName: 'lucide:Globe', action: () => { console.log('Add domain'); } }, { type: 'action', key: 'Create Token', iconName: 'lucide:Key', action: () => { console.log('Create token'); } }, ], }, { name: 'System', items: [ { type: 'action', key: 'Refresh Stats', iconName: 'lucide:RefreshCw', action: () => { console.log('Refresh'); } }, { type: 'action', key: 'View Logs', iconName: 'lucide:Terminal', action: () => { console.log('View logs'); } }, ], }, ], }); } onDeactivate() { // Cleanup if needed } public static styles = [ cssManager.defaultStyles, css` :host { display: block; padding: 24px; height: 100%; overflow-y: auto; box-sizing: border-box; } .page-header { margin-bottom: 24px; } .page-title { font-size: 24px; font-weight: 700; color: ${cssManager.bdTheme('#18181b', '#fafafa')}; margin: 0 0 8px 0; } .page-subtitle { font-size: 14px; color: ${cssManager.bdTheme('#71717a', '#a1a1aa')}; margin: 0; } `, ]; public render(): TemplateResult { return html`
Overview of your onebox infrastructure