import { html, css } from '@design.estate/dees-element'; import type { DeesAppuiBase } from './dees-appui-base.js'; import type { IAppBarMenuItem } from './interfaces/appbarmenuitem.js'; import type { ITab } from './interfaces/tab.js'; import type { ISelectionOption } from './interfaces/selectionoption.js'; import * as plugins from './00plugins.js'; import '@design.estate/dees-wcctools/demotools'; export const demoFunc = () => { // Menu items for the appbar const menuItems: IAppBarMenuItem[] = [ { name: 'File', action: async () => {}, submenu: [ { name: 'New Project', shortcut: 'Cmd+N', iconName: 'filePlus', action: async () => console.log('New project') }, { name: 'Open Project...', shortcut: 'Cmd+O', iconName: 'folderOpen', action: async () => console.log('Open project') }, { name: 'Recent Projects', action: async () => {}, submenu: [ { name: 'my-app', action: async () => console.log('Open my-app') }, { name: 'component-lib', action: async () => console.log('Open component-lib') }, { name: 'api-server', action: async () => console.log('Open api-server') }, ]}, { divider: true }, { name: 'Save All', shortcut: 'Cmd+Shift+S', iconName: 'save', action: async () => console.log('Save all') }, { divider: true }, { name: 'Close Project', action: async () => console.log('Close project') }, ] }, { name: 'Edit', action: async () => {}, submenu: [ { name: 'Undo', shortcut: 'Cmd+Z', iconName: 'undo', action: async () => console.log('Undo') }, { name: 'Redo', shortcut: 'Cmd+Shift+Z', iconName: 'redo', action: async () => console.log('Redo') }, { divider: true }, { name: 'Cut', shortcut: 'Cmd+X', iconName: 'scissors', action: async () => console.log('Cut') }, { name: 'Copy', shortcut: 'Cmd+C', iconName: 'copy', action: async () => console.log('Copy') }, { name: 'Paste', shortcut: 'Cmd+V', iconName: 'clipboard', action: async () => console.log('Paste') }, ] }, { name: 'View', action: async () => {}, submenu: [ { name: 'Toggle Sidebar', shortcut: 'Cmd+B', action: async () => console.log('Toggle sidebar') }, { name: 'Toggle Terminal', shortcut: 'Cmd+J', iconName: 'terminal', action: async () => console.log('Toggle terminal') }, { divider: true }, { name: 'Zoom In', shortcut: 'Cmd++', iconName: 'zoomIn', action: async () => console.log('Zoom in') }, { name: 'Zoom Out', shortcut: 'Cmd+-', iconName: 'zoomOut', action: async () => console.log('Zoom out') }, { name: 'Reset Zoom', shortcut: 'Cmd+0', action: async () => console.log('Reset zoom') }, ] }, { name: 'Help', action: async () => {}, submenu: [ { name: 'Documentation', iconName: 'book', action: async () => console.log('Documentation') }, { name: 'Release Notes', iconName: 'fileText', action: async () => console.log('Release notes') }, { divider: true }, { name: 'Report Issue', iconName: 'bug', action: async () => console.log('Report issue') }, { name: 'About', iconName: 'info', action: async () => console.log('About') }, ] } ]; // Main menu tabs (left sidebar) const mainMenuTabs: ITab[] = [ { key: 'dashboard', iconName: 'home', action: () => console.log('Dashboard selected') }, { key: 'projects', iconName: 'folder', action: () => console.log('Projects selected') }, { key: 'analytics', iconName: 'lineChart', action: () => console.log('Analytics selected') }, { key: 'settings', iconName: 'settings', action: () => console.log('Settings selected') }, ]; // Selector options (second sidebar) const selectorOptions: (ISelectionOption | { divider: true })[] = [ { key: 'Overview', iconName: 'home', action: () => console.log('Overview selected') }, { key: 'Components', iconName: 'package', action: () => console.log('Components selected') }, { key: 'Services', iconName: 'server', action: () => console.log('Services selected') }, { divider: true }, { key: 'Database', iconName: 'database', action: () => console.log('Database selected') }, { key: 'Settings', iconName: 'settings', action: () => console.log('Settings selected') }, ]; // Main content tabs const mainContentTabs: ITab[] = [ { key: 'Details', iconName: 'file', action: () => console.log('Details tab') }, { key: 'Logs', iconName: 'list', action: () => console.log('Logs tab') }, { key: 'Metrics', iconName: 'lineChart', action: () => console.log('Metrics tab') }, ]; // Profile menu items const profileMenuItems: (plugins.tsclass.website.IMenuItem & { shortcut?: string } | { divider: true })[] = [ { name: 'Profile Settings', iconName: 'user', action: async () => console.log('Profile settings') }, { name: 'Account', iconName: 'settings', action: async () => console.log('Account settings') }, { divider: true }, { name: 'Help & Support', iconName: 'helpCircle', action: async () => console.log('Help') }, { name: 'Keyboard Shortcuts', iconName: 'keyboard', shortcut: 'Cmd+K', action: async () => console.log('Shortcuts') }, { divider: true }, { name: 'Sign Out', iconName: 'logOut', action: async () => console.log('Sign out') } ]; return html`
console.log('Menu selected:', e.detail)} @appbar-breadcrumb-navigate=${(e: CustomEvent) => console.log('Breadcrumb:', e.detail)} @appbar-search-click=${() => console.log('Search clicked')} @appbar-user-menu-open=${() => console.log('User menu opened')} @appbar-profile-menu-select=${(e: CustomEvent) => console.log('Profile menu selected:', e.detail)} @mainmenu-tab-select=${(e: CustomEvent) => console.log('Tab selected:', e.detail)} @mainselector-option-select=${(e: CustomEvent) => console.log('Option selected:', e.detail)} >

Application Content

This is the main content area where your application's primary interface would be displayed.

The layout includes:

  • App bar with menus, breadcrumbs, and user account
  • Main menu (left sidebar) for primary navigation
  • Selector menu (second sidebar) for sub-navigation
  • Main content area (this section)
  • Activity log (right sidebar)
`; };