From 1874d791b2026c55a75eef6f7f94f4d7b3edc9ab Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Thu, 21 May 2026 11:18:06 +0000 Subject: [PATCH] feat(web): group dashboard navigation --- ts_web/elements/cloudly-dashboard.ts | 112 +++++++++------------------ 1 file changed, 38 insertions(+), 74 deletions(-) diff --git a/ts_web/elements/cloudly-dashboard.ts b/ts_web/elements/cloudly-dashboard.ts index da15e74..208e2df 100644 --- a/ts_web/elements/cloudly-dashboard.ts +++ b/ts_web/elements/cloudly-dashboard.ts @@ -53,100 +53,64 @@ export class CloudlyDashboard extends DeesElement { element: CloudlyViewOverview, }, { - name: 'Settings', + name: 'Platform', iconName: 'lucide:Settings', - element: CloudlyViewSettings, + subViews: [ + { name: 'Settings', iconName: 'lucide:Settings', element: CloudlyViewSettings }, + { name: 'BaseOS', iconName: 'lucide:HardDriveDownload', element: CloudlyViewBaseOs }, + { name: 'Fleet', iconName: 'lucide:Truck', element: CloudlyViewBackups }, + ], }, { - name: 'SecretGroups', - iconName: 'lucide:ShieldCheck', - element: CloudlyViewSecretGroups, - }, - { - name: 'SecretBundles', - iconName: 'lucide:LockKeyhole', - element: CloudlyViewSecretBundles, - }, - { - name: 'Clusters', + name: 'Runtime', iconName: 'lucide:Network', - element: CloudlyViewClusters, + subViews: [ + { name: 'Clusters', iconName: 'lucide:Network', element: CloudlyViewClusters }, + { name: 'Services', iconName: 'lucide:Layers', element: CloudlyViewServices }, + { name: 'Images', iconName: 'lucide:Image', element: CloudlyViewImages }, + { name: 'Deployments', iconName: 'lucide:Rocket', element: CloudlyViewDeployments }, + { name: 'Tasks', iconName: 'lucide:ListChecks', element: CloudlyViewTasks }, + ], }, { - name: 'ExternalRegistries', + name: 'Registry & Build', iconName: 'lucide:Package', - element: CloudlyViewExternalRegistries, + subViews: [ + { name: 'ExternalRegistries', iconName: 'lucide:Package', element: CloudlyViewExternalRegistries }, + { name: 'Testing & Building', iconName: 'lucide:HardHat', element: CloudlyViewServices }, + ], }, { - name: 'Images', - iconName: 'lucide:Image', - element: CloudlyViewImages, + name: 'Secrets', + iconName: 'lucide:ShieldCheck', + subViews: [ + { name: 'SecretGroups', iconName: 'lucide:ShieldCheck', element: CloudlyViewSecretGroups }, + { name: 'SecretBundles', iconName: 'lucide:LockKeyhole', element: CloudlyViewSecretBundles }, + ], }, { - name: 'Services', - iconName: 'lucide:Layers', - element: CloudlyViewServices, - }, - { - name: 'Testing & Building', - iconName: 'lucide:HardHat', - element: CloudlyViewServices, - }, - { - name: 'Deployments', - iconName: 'lucide:Rocket', - element: CloudlyViewDeployments, - }, - { - name: 'Tasks', - iconName: 'lucide:ListChecks', - element: CloudlyViewTasks, - }, - { - name: 'Domains', + name: 'Domains & Messaging', iconName: 'lucide:Globe2', - element: CloudlyViewDomains, + subViews: [ + { name: 'Domains', iconName: 'lucide:Globe2', element: CloudlyViewDomains }, + { name: 'DNS', iconName: 'lucide:Globe', element: CloudlyViewDns }, + { name: 'Mails', iconName: 'lucide:Mail', element: CloudlyViewMails }, + ], }, { - name: 'DNS', - iconName: 'lucide:Globe', - element: CloudlyViewDns, - }, - { - name: 'Mails', - iconName: 'lucide:Mail', - element: CloudlyViewMails, + name: 'Storage', + iconName: 'lucide:Database', + subViews: [ + { name: 's3', iconName: 'lucide:Cloud', element: CloudlyViewS3 }, + { name: 'DBs', iconName: 'lucide:Database', element: CloudlyViewDbs }, + { name: 'Backups', iconName: 'lucide:Save', element: CloudlyViewBackups }, + ], }, { name: 'Logs', iconName: 'lucide:FileText', element: CloudlyViewLogs, }, - { - name: 's3', - iconName: 'lucide:Cloud', - element: CloudlyViewS3, - }, - { - name: 'DBs', - iconName: 'lucide:Database', - element: CloudlyViewDbs, - }, - { - name: 'Backups', - iconName: 'lucide:Save', - element: CloudlyViewBackups, - }, - { - name: 'BaseOS', - iconName: 'lucide:HardDriveDownload', - element: CloudlyViewBaseOs, - }, - { - name: 'Fleet', - iconName: 'lucide:Truck', - element: CloudlyViewBackups, - }, ]; constructor() {