From a4ddedaf46963628b67f08c6f8140db8dc3cfba1 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Tue, 17 Feb 2026 10:57:27 +0000 Subject: [PATCH] fix(icons): standardize icon identifiers to lucide-prefixed names across operational views --- changelog.md | 8 +++++++ ts/00_commitinfo_data.ts | 2 +- ts_web/00_commitinfo_data.ts | 2 +- ts_web/elements/ops-view-certificates.ts | 16 ++++++------- ts_web/elements/ops-view-network.ts | 16 ++++++------- ts_web/elements/ops-view-overview.ts | 30 ++++++++++++------------ ts_web/elements/ops-view-security.ts | 20 ++++++++-------- 7 files changed, 51 insertions(+), 43 deletions(-) diff --git a/changelog.md b/changelog.md index fbf8b46..e050ecb 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,13 @@ # Changelog +## 2026-02-17 - 6.6.1 - fix(icons) +standardize icon identifiers to lucide-prefixed names across operational views + +- Replaced legacy/ambiguous icon names with 'lucide:...' identifiers in four UI modules: ts_web/elements/ops-view-certificates.ts, ops-view-network.ts, ops-view-overview.ts, and ops-view-security.ts. +- Updated common action/menu icons (e.g. arrowsRotate -> lucide:RefreshCw, magnifyingGlass -> lucide:Search, copy -> lucide:Copy, fileExport -> lucide:FileOutput). +- Mapped dashboard/tile icons to lucide equivalents (e.g. server -> lucide:Server, networkWired/sitemap -> lucide:Network, download/upload -> lucide:Download/Upload, microchip/memory -> lucide:Cpu/MemoryStick). +- Normalized alert and status icons to lucide names (e.g. triangleExclamation -> lucide:TriangleAlert, shield/userShield -> lucide:Shield/ShieldCheck, clock/clockRotateLeft -> lucide:Clock/History). + ## 2026-02-17 - 6.6.0 - feat(remoteingress) derive effective remote ingress listen ports from route configs and expose them via ops API diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 4c3a485..1928b36 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@serve.zone/dcrouter', - version: '6.6.0', + version: '6.6.1', description: 'A multifaceted routing service handling mail and SMS delivery functions.' } diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index 4c3a485..1928b36 100644 --- a/ts_web/00_commitinfo_data.ts +++ b/ts_web/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@serve.zone/dcrouter', - version: '6.6.0', + version: '6.6.1', description: 'A multifaceted routing service handling mail and SMS delivery functions.' } diff --git a/ts_web/elements/ops-view-certificates.ts b/ts_web/elements/ops-view-certificates.ts index 70fdcbf..f58464d 100644 --- a/ts_web/elements/ops-view-certificates.ts +++ b/ts_web/elements/ops-view-certificates.ts @@ -175,7 +175,7 @@ export class OpsViewCertificates extends DeesElement { title: 'Total Certificates', value: summary.total, type: 'number', - icon: 'shieldHalved', + icon: 'lucide:ShieldHalf', color: '#3b82f6', }, { @@ -183,7 +183,7 @@ export class OpsViewCertificates extends DeesElement { title: 'Valid', value: summary.valid, type: 'number', - icon: 'check', + icon: 'lucide:Check', color: '#22c55e', }, { @@ -191,7 +191,7 @@ export class OpsViewCertificates extends DeesElement { title: 'Expiring Soon', value: summary.expiring, type: 'number', - icon: 'clock', + icon: 'lucide:Clock', color: '#f59e0b', }, { @@ -199,7 +199,7 @@ export class OpsViewCertificates extends DeesElement { title: 'Failed / Expired', value: summary.failed + summary.expired, type: 'number', - icon: 'triangleExclamation', + icon: 'lucide:TriangleAlert', color: '#ef4444', }, ]; @@ -211,7 +211,7 @@ export class OpsViewCertificates extends DeesElement { .gridActions=${[ { name: 'Refresh', - iconName: 'arrowsRotate', + iconName: 'lucide:RefreshCw', action: async () => { await appstate.certificateStatePart.dispatchAction( appstate.fetchCertificateOverviewAction, @@ -243,7 +243,7 @@ export class OpsViewCertificates extends DeesElement { .dataActions=${[ { name: 'Reprovision', - iconName: 'arrowsRotate', + iconName: 'lucide:RefreshCw', type: ['inRow'], actionFunc: async (actionData: { item: interfaces.requests.ICertificateInfo }) => { const cert = actionData.item; @@ -270,7 +270,7 @@ export class OpsViewCertificates extends DeesElement { }, { name: 'View Details', - iconName: 'magnifyingGlass', + iconName: 'lucide:Search', type: ['doubleClick', 'contextmenu'], actionFunc: async (actionData: { item: interfaces.requests.ICertificateInfo }) => { const cert = actionData.item; @@ -289,7 +289,7 @@ export class OpsViewCertificates extends DeesElement { menuOptions: [ { name: 'Copy Domain', - iconName: 'copy', + iconName: 'lucide:Copy', action: async () => { await navigator.clipboard.writeText(cert.domain); }, diff --git a/ts_web/elements/ops-view-network.ts b/ts_web/elements/ops-view-network.ts index 2e9cf3a..59fdb19 100644 --- a/ts_web/elements/ops-view-network.ts +++ b/ts_web/elements/ops-view-network.ts @@ -287,7 +287,7 @@ export class OpsViewNetwork extends DeesElement { .dataActions=${[ { name: 'View Details', - iconName: 'magnifyingGlass', + iconName: 'lucide:Search', type: ['inRow', 'doubleClick', 'contextmenu'], actionFunc: async (actionData) => { await this.showRequestDetails(actionData.item); @@ -336,7 +336,7 @@ export class OpsViewNetwork extends DeesElement { menuOptions: [ { name: 'Copy Request ID', - iconName: 'copy', + iconName: 'lucide:Copy', action: async () => { await navigator.clipboard.writeText(request.id); } @@ -429,13 +429,13 @@ export class OpsViewNetwork extends DeesElement { title: 'Active Connections', value: activeConnections, type: 'number', - icon: 'plug', + icon: 'lucide:Plug', color: activeConnections > 100 ? '#f59e0b' : '#22c55e', description: `Total: ${this.networkState.requestsTotal || this.statsState.serverStats?.totalConnections || 0}`, actions: [ { name: 'View Details', - iconName: 'magnifyingGlass', + iconName: 'lucide:Search', action: async () => { }, }, @@ -446,7 +446,7 @@ export class OpsViewNetwork extends DeesElement { title: 'Requests/sec', value: reqPerSec, type: 'trend', - icon: 'chartLine', + icon: 'lucide:ChartLine', color: '#3b82f6', trendData: trendData, description: `Total: ${this.formatNumber(this.networkState.requestsTotal || 0)} requests`, @@ -457,7 +457,7 @@ export class OpsViewNetwork extends DeesElement { value: this.formatBitsPerSecond(throughput.in), unit: '', type: 'number', - icon: 'download', + icon: 'lucide:Download', color: '#22c55e', description: `Total: ${this.formatBytes(this.networkState.totalBytes?.in || 0)}`, }, @@ -467,7 +467,7 @@ export class OpsViewNetwork extends DeesElement { value: this.formatBitsPerSecond(throughput.out), unit: '', type: 'number', - icon: 'upload', + icon: 'lucide:Upload', color: '#8b5cf6', description: `Total: ${this.formatBytes(this.networkState.totalBytes?.out || 0)}`, }, @@ -480,7 +480,7 @@ export class OpsViewNetwork extends DeesElement { .gridActions=${[ { name: 'Export Data', - iconName: 'fileExport', + iconName: 'lucide:FileOutput', action: async () => { console.log('Export feature coming soon'); }, diff --git a/ts_web/elements/ops-view-overview.ts b/ts_web/elements/ops-view-overview.ts index 52e3072..abe308e 100644 --- a/ts_web/elements/ops-view-overview.ts +++ b/ts_web/elements/ops-view-overview.ts @@ -163,7 +163,7 @@ export class OpsViewOverview extends DeesElement { title: 'Server Status', value: this.statsState.serverStats.uptime ? 'Online' : 'Offline', type: 'text', - icon: 'server', + icon: 'lucide:Server', color: this.statsState.serverStats.uptime ? '#22c55e' : '#ef4444', description: `Uptime: ${this.formatUptime(this.statsState.serverStats.uptime)}`, }, @@ -172,7 +172,7 @@ export class OpsViewOverview extends DeesElement { title: 'Active Connections', value: this.statsState.serverStats.activeConnections, type: 'number', - icon: 'networkWired', + icon: 'lucide:Network', color: '#3b82f6', description: `Total: ${this.statsState.serverStats.totalConnections}`, }, @@ -181,7 +181,7 @@ export class OpsViewOverview extends DeesElement { title: 'Throughput In', value: this.formatBitsPerSecond(this.statsState.serverStats.throughput?.bytesInPerSecond || 0), type: 'text', - icon: 'download', + icon: 'lucide:Download', color: '#22c55e', description: `Total: ${this.formatBytes(this.statsState.serverStats.throughput?.bytesIn || 0)}`, }, @@ -190,7 +190,7 @@ export class OpsViewOverview extends DeesElement { title: 'Throughput Out', value: this.formatBitsPerSecond(this.statsState.serverStats.throughput?.bytesOutPerSecond || 0), type: 'text', - icon: 'upload', + icon: 'lucide:Upload', color: '#8b5cf6', description: `Total: ${this.formatBytes(this.statsState.serverStats.throughput?.bytesOut || 0)}`, }, @@ -199,7 +199,7 @@ export class OpsViewOverview extends DeesElement { title: 'CPU Usage', value: cpuUsage, type: 'gauge', - icon: 'microchip', + icon: 'lucide:Cpu', gaugeOptions: { min: 0, max: 100, @@ -215,7 +215,7 @@ export class OpsViewOverview extends DeesElement { title: 'Memory Usage', value: memoryUsage, type: 'percentage', - icon: 'memory', + icon: 'lucide:MemoryStick', color: memoryUsage > 80 ? '#ef4444' : memoryUsage > 60 ? '#f59e0b' : '#22c55e', description: this.statsState.serverStats.memoryUsage.actualUsageBytes !== undefined && this.statsState.serverStats.memoryUsage.maxMemoryMB !== undefined ? `${this.formatBytes(this.statsState.serverStats.memoryUsage.actualUsageBytes)} / ${this.formatBytes(this.statsState.serverStats.memoryUsage.maxMemoryMB * 1024 * 1024)}` @@ -229,7 +229,7 @@ export class OpsViewOverview extends DeesElement { .gridActions=${[ { name: 'Refresh', - iconName: 'arrowsRotate', + iconName: 'lucide:RefreshCw', action: async () => { await appstate.statsStatePart.dispatchAction(appstate.fetchAllStatsAction, null); }, @@ -251,7 +251,7 @@ export class OpsViewOverview extends DeesElement { title: 'Emails Sent', value: this.statsState.emailStats.sent, type: 'number', - icon: 'paperPlane', + icon: 'lucide:Send', color: '#22c55e', description: `Delivery rate: ${(deliveryRate * 100).toFixed(1)}%`, }, @@ -260,7 +260,7 @@ export class OpsViewOverview extends DeesElement { title: 'Emails Received', value: this.statsState.emailStats.received, type: 'number', - icon: 'envelope', + icon: 'lucide:Mail', color: '#3b82f6', }, { @@ -268,7 +268,7 @@ export class OpsViewOverview extends DeesElement { title: 'Queued', value: this.statsState.emailStats.queued, type: 'number', - icon: 'clock', + icon: 'lucide:Clock', color: '#f59e0b', description: 'Pending delivery', }, @@ -277,7 +277,7 @@ export class OpsViewOverview extends DeesElement { title: 'Failed', value: this.statsState.emailStats.failed, type: 'number', - icon: 'triangleExclamation', + icon: 'lucide:TriangleAlert', color: '#ef4444', description: `Bounce rate: ${(bounceRate * 100).toFixed(1)}%`, }, @@ -300,7 +300,7 @@ export class OpsViewOverview extends DeesElement { title: 'DNS Queries', value: this.statsState.dnsStats.totalQueries, type: 'number', - icon: 'globe', + icon: 'lucide:Globe', color: '#3b82f6', description: 'Total queries handled', }, @@ -309,7 +309,7 @@ export class OpsViewOverview extends DeesElement { title: 'Cache Hit Rate', value: cacheHitRate, type: 'percentage', - icon: 'database', + icon: 'lucide:Database', color: cacheHitRate > 80 ? '#22c55e' : cacheHitRate > 60 ? '#f59e0b' : '#ef4444', description: `${this.statsState.dnsStats.cacheHits} hits / ${this.statsState.dnsStats.cacheMisses} misses`, }, @@ -318,7 +318,7 @@ export class OpsViewOverview extends DeesElement { title: 'Active Domains', value: this.statsState.dnsStats.activeDomains, type: 'number', - icon: 'sitemap', + icon: 'lucide:Network', color: '#8b5cf6', }, { @@ -327,7 +327,7 @@ export class OpsViewOverview extends DeesElement { value: this.statsState.dnsStats.averageResponseTime.toFixed(1), unit: 'ms', type: 'number', - icon: 'clockRotateLeft', + icon: 'lucide:History', color: this.statsState.dnsStats.averageResponseTime < 50 ? '#22c55e' : '#f59e0b', }, ]; diff --git a/ts_web/elements/ops-view-security.ts b/ts_web/elements/ops-view-security.ts index 2b5670f..5a5c85a 100644 --- a/ts_web/elements/ops-view-security.ts +++ b/ts_web/elements/ops-view-security.ts @@ -256,7 +256,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Threat Level', value: threatScore, type: 'gauge', - icon: 'shield', + icon: 'lucide:Shield', gaugeOptions: { min: 0, max: 100, @@ -273,7 +273,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Blocked Threats', value: metrics.blockedIPs.length + metrics.spamDetected, type: 'number', - icon: 'userShield', + icon: 'lucide:ShieldCheck', color: '#ef4444', description: 'Total threats blocked today', }, @@ -282,7 +282,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Active Sessions', value: 0, type: 'number', - icon: 'users', + icon: 'lucide:Users', color: '#22c55e', description: 'Current authenticated sessions', }, @@ -291,7 +291,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Auth Failures', value: metrics.authenticationFailures, type: 'number', - icon: 'lockOpen', + icon: 'lucide:LockOpen', color: metrics.authenticationFailures > 10 ? '#ef4444' : '#f59e0b', description: 'Failed login attempts today', }, @@ -355,7 +355,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Authentication Failures', value: metrics.authenticationFailures, type: 'number', - icon: 'lockOpen', + icon: 'lucide:LockOpen', color: metrics.authenticationFailures > 10 ? '#ef4444' : '#f59e0b', description: 'Failed authentication attempts today', }, @@ -364,7 +364,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Successful Logins', value: 0, type: 'number', - icon: 'lock', + icon: 'lucide:Lock', color: '#22c55e', description: 'Successful logins today', }, @@ -399,7 +399,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Malware Detection', value: metrics.malwareDetected, type: 'number', - icon: 'virusSlash', + icon: 'lucide:BugOff', color: metrics.malwareDetected > 0 ? '#ef4444' : '#22c55e', description: 'Malware detected', }, @@ -408,7 +408,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Phishing Detection', value: metrics.phishingDetected, type: 'number', - icon: 'fishFins', + icon: 'lucide:Fish', color: metrics.phishingDetected > 0 ? '#ef4444' : '#22c55e', description: 'Phishing attempts detected', }, @@ -417,7 +417,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Suspicious Activities', value: metrics.suspiciousActivities, type: 'number', - icon: 'triangleExclamation', + icon: 'lucide:TriangleAlert', color: metrics.suspiciousActivities > 5 ? '#ef4444' : '#f59e0b', description: 'Suspicious activities detected', }, @@ -426,7 +426,7 @@ export class OpsViewSecurity extends DeesElement { title: 'Spam Detection', value: metrics.spamDetected, type: 'number', - icon: 'ban', + icon: 'lucide:Ban', color: '#f59e0b', description: 'Spam emails blocked', },