From 0e70b45e8a557500cf3a600ef5c1bc9e6aa06383 Mon Sep 17 00:00:00 2001 From: findthelorax Date: Mon, 20 Apr 2026 12:33:20 -0400 Subject: [PATCH] code aligned cleanup --- frontend/src/utils/nodeIcons.ts | 112 ++++++++++---------- frontend/src/utils/themes.ts | 176 ++++++++++++++++---------------- 2 files changed, 144 insertions(+), 144 deletions(-) diff --git a/frontend/src/utils/nodeIcons.ts b/frontend/src/utils/nodeIcons.ts index 74504c2..8287d1d 100644 --- a/frontend/src/utils/nodeIcons.ts +++ b/frontend/src/utils/nodeIcons.ts @@ -32,21 +32,21 @@ export interface IconEntry { export const ICON_REGISTRY: IconEntry[] = [ // --- Infrastructure --- - { key: 'globe', label: 'Globe / ISP', category: 'Infrastructure', icon: Globe }, - { key: 'router', label: 'Router', category: 'Infrastructure', icon: Router }, - { key: 'network', label: 'Switch / Network', category: 'Infrastructure', icon: Network }, - { key: 'server', label: 'Server', category: 'Infrastructure', icon: Server }, + { key: 'globe', label: 'Globe / ISP', category: 'Infrastructure', icon: Globe }, + { key: 'router', label: 'Router', category: 'Infrastructure', icon: Router }, + { key: 'network', label: 'Switch / Network', category: 'Infrastructure', icon: Network }, + { key: 'server', label: 'Server', category: 'Infrastructure', icon: Server }, { key: 'layers', label: 'Proxmox / Hypervisor', category: 'Infrastructure', icon: Layers }, - { key: 'box', label: 'VM', category: 'Infrastructure', icon: Box }, - { key: 'container', label: 'Container / LXC', category: 'Infrastructure', icon: Container }, - { key: 'harddrive', label: 'NAS / Storage', category: 'Infrastructure', icon: HardDrive }, - { key: 'cpu', label: 'IoT / Embedded', category: 'Infrastructure', icon: Cpu }, - { key: 'wifi', label: 'Access Point', category: 'Infrastructure', icon: Wifi }, - { key: 'circle', label: 'Generic', category: 'Infrastructure', icon: Circle }, - { key: 'monitor', label: 'Workstation', category: 'Infrastructure', icon: Monitor }, - { key: 'smartphone', label: 'Phone / Mobile', category: 'Infrastructure', icon: Smartphone }, - { key: 'printer', label: 'Printer', category: 'Infrastructure', icon: Printer }, - { key: 'plugzap', label: 'CPL / Powerline', category: 'Infrastructure', icon: PlugZap }, + { key: 'box', label: 'VM', category: 'Infrastructure', icon: Box }, + { key: 'container', label: 'Container / LXC', category: 'Infrastructure', icon: Container }, + { key: 'harddrive', label: 'NAS / Storage', category: 'Infrastructure', icon: HardDrive }, + { key: 'cpu', label: 'IoT / Embedded', category: 'Infrastructure', icon: Cpu }, + { key: 'wifi', label: 'Access Point', category: 'Infrastructure', icon: Wifi }, + { key: 'circle', label: 'Generic', category: 'Infrastructure', icon: Circle }, + { key: 'monitor', label: 'Workstation', category: 'Infrastructure', icon: Monitor }, + { key: 'smartphone', label: 'Phone / Mobile', category: 'Infrastructure', icon: Smartphone }, + { key: 'printer', label: 'Printer', category: 'Infrastructure', icon: Printer }, + { key: 'plugzap', label: 'CPL / Powerline', category: 'Infrastructure', icon: PlugZap }, // --- Media --- { key: 'play', label: 'Jellyfin / Emby', category: 'Media', icon: Play }, @@ -62,40 +62,40 @@ export const ICON_REGISTRY: IconEntry[] = [ { key: 'cctv', label: 'CCTV / IP Camera', category: 'Media', icon: Cctv }, // --- Monitoring --- - { key: 'activity', label: 'Prometheus / Uptime', category: 'Monitoring', icon: Activity }, - { key: 'barchart', label: 'Grafana / Kibana', category: 'Monitoring', icon: BarChart2 }, - { key: 'linechart', label: 'InfluxDB / Metrics', category: 'Monitoring', icon: LineChart }, + { key: 'activity', label: 'Prometheus / Uptime', category: 'Monitoring', icon: Activity }, + { key: 'barchart', label: 'Grafana / Kibana', category: 'Monitoring', icon: BarChart2 }, + { key: 'linechart', label: 'InfluxDB / Metrics', category: 'Monitoring', icon: LineChart }, { key: 'eye', label: 'Overseerr / Watchlist', category: 'Monitoring', icon: Eye }, - { key: 'bell', label: 'Alerts / Notifiarr', category: 'Monitoring', icon: Bell }, - { key: 'gauge', label: 'Dashboard / Status', category: 'Monitoring', icon: Gauge }, + { key: 'bell', label: 'Alerts / Notifiarr', category: 'Monitoring', icon: Bell }, + { key: 'gauge', label: 'Dashboard / Status', category: 'Monitoring', icon: Gauge }, // --- Storage & Databases --- - { key: 'database', label: 'Database (SQL/NoSQL)', category: 'Storage', icon: Database }, - { key: 'archive', label: 'Backup / Archive', category: 'Storage', icon: Archive }, - { key: 'cloud', label: 'Nextcloud / S3', category: 'Storage', icon: Cloud }, - { key: 'folder', label: 'Files / Filebrowser', category: 'Storage', icon: FolderOpen }, + { key: 'database', label: 'Database (SQL/NoSQL)', category: 'Storage', icon: Database }, + { key: 'archive', label: 'Backup / Archive', category: 'Storage', icon: Archive }, + { key: 'cloud', label: 'Nextcloud / S3', category: 'Storage', icon: Cloud }, + { key: 'folder', label: 'Files / Filebrowser', category: 'Storage', icon: FolderOpen }, { key: 'download', label: 'Downloader (Torrent/NZB)', category: 'Storage', icon: Download }, - { key: 'upload', label: 'Upload / Sync', category: 'Storage', icon: Upload }, - { key: 'refresh', label: 'Sync / Resilio', category: 'Storage', icon: RefreshCw }, + { key: 'upload', label: 'Upload / Sync', category: 'Storage', icon: Upload }, + { key: 'refresh', label: 'Sync / Resilio', category: 'Storage', icon: RefreshCw }, // --- Security & Auth --- - { key: 'shield', label: 'Pi-hole / DNS Block', category: 'Security', icon: Shield }, - { key: 'shieldcheck', label: 'AdGuard Home', category: 'Security', icon: ShieldCheck }, + { key: 'shield', label: 'Pi-hole / DNS Block', category: 'Security', icon: Shield }, + { key: 'shieldcheck', label: 'AdGuard Home', category: 'Security', icon: ShieldCheck }, { key: 'lock', label: 'Authelia / Authentik', category: 'Security', icon: Lock }, - { key: 'key', label: 'Vaultwarden / Vault', category: 'Security', icon: Key }, - { key: 'users', label: 'LDAP / SSO', category: 'Security', icon: Users }, - { key: 'usercheck', label: 'Keycloak', category: 'Security', icon: UserCheck }, - { key: 'filter', label: 'Prowlarr / Jackett', category: 'Security', icon: Filter }, - { key: 'search', label: 'Search / Indexer', category: 'Security', icon: Search }, + { key: 'key', label: 'Vaultwarden / Vault', category: 'Security', icon: Key }, + { key: 'users', label: 'LDAP / SSO', category: 'Security', icon: Users }, + { key: 'usercheck', label: 'Keycloak', category: 'Security', icon: UserCheck }, + { key: 'filter', label: 'Prowlarr / Jackett', category: 'Security', icon: Filter }, + { key: 'search', label: 'Search / Indexer', category: 'Security', icon: Search }, // --- Automation & Smart Home --- - { key: 'home', label: 'Home Assistant', category: 'Automation', icon: Home }, - { key: 'zap', label: 'ESPHome / Node-RED', category: 'Automation', icon: Zap }, - { key: 'workflow', label: 'n8n / Node-RED', category: 'Automation', icon: Workflow }, - { key: 'bot', label: 'Bot / Automation', category: 'Automation', icon: Bot }, + { key: 'home', label: 'Home Assistant', category: 'Automation', icon: Home }, + { key: 'zap', label: 'ESPHome / Node-RED', category: 'Automation', icon: Zap }, + { key: 'workflow', label: 'n8n / Node-RED', category: 'Automation', icon: Workflow }, + { key: 'bot', label: 'Bot / Automation', category: 'Automation', icon: Bot }, { key: 'thermometer', label: 'Sensor / Temperature', category: 'Automation', icon: Thermometer }, - { key: 'lightbulb', label: 'Smart Light / Zigbee', category: 'Automation', icon: Lightbulb }, - { key: 'radio', label: 'MQTT / RTL-SDR', category: 'Automation', icon: Radio }, + { key: 'lightbulb', label: 'Smart Light / Zigbee', category: 'Automation', icon: Lightbulb }, + { key: 'radio', label: 'MQTT / RTL-SDR', category: 'Automation', icon: Radio }, // --- Containers & Dev --- { key: 'anchor', label: 'Portainer / Docker', category: 'Dev & Containers', icon: Anchor }, @@ -118,24 +118,24 @@ export const ICON_MAP: Record = Object.fromEntries( ) export const NODE_TYPE_DEFAULT_ICONS: Record = { - isp: Globe, - router: Router, - switch: Network, - server: Server, - proxmox: Layers, - vm: Box, - lxc: Container, - nas: HardDrive, - iot: Cpu, - ap: Wifi, - camera: Cctv, - printer: Printer, - computer: Monitor, - cpl: PlugZap, - docker_host: Anchor, - generic: Circle, - group: Circle, - groupRect: Circle, + isp: Globe, + router: Router, + switch: Network, + server: Server, + proxmox: Layers, + vm: Box, + lxc: Container, + nas: HardDrive, + iot: Cpu, + ap: Wifi, + camera: Cctv, + printer: Printer, + computer: Monitor, + cpl: PlugZap, + docker_host: Anchor, + generic: Circle, + group: Circle, + groupRect: Circle, } /** Resolve the display icon for a node — custom_icon takes priority over type default. */ diff --git a/frontend/src/utils/themes.ts b/frontend/src/utils/themes.ts index 7f86382..2880b66 100644 --- a/frontend/src/utils/themes.ts +++ b/frontend/src/utils/themes.ts @@ -42,24 +42,24 @@ export const THEMES: Record = { description: 'Dark futuristic — the original Homelable look', colors: { nodeAccents: { - isp: { border: '#00d4ff', icon: '#00d4ff' }, - router: { border: '#00d4ff', icon: '#00d4ff' }, - switch: { border: '#39d353', icon: '#39d353' }, - server: { border: '#a855f7', icon: '#a855f7' }, - proxmox: { border: '#ff6e00', icon: '#ff6e00' }, - vm: { border: '#a855f7', icon: '#a855f7' }, - lxc: { border: '#00d4ff', icon: '#00d4ff' }, - nas: { border: '#39d353', icon: '#39d353' }, - iot: { border: '#e3b341', icon: '#e3b341' }, - ap: { border: '#00d4ff', icon: '#00d4ff' }, - camera: { border: '#8b949e', icon: '#8b949e' }, - printer: { border: '#8b949e', icon: '#8b949e' }, - computer: { border: '#a855f7', icon: '#a855f7' }, - cpl: { border: '#e3b341', icon: '#e3b341' }, - docker_host: { border: '#2496ED', icon: '#2496ED' }, - generic: { border: '#8b949e', icon: '#8b949e' }, - groupRect:{ border: '#00d4ff', icon: '#00d4ff' }, - group: { border: '#00d4ff', icon: '#00d4ff' }, + isp: { border: '#00d4ff', icon: '#00d4ff' }, + router: { border: '#00d4ff', icon: '#00d4ff' }, + switch: { border: '#39d353', icon: '#39d353' }, + server: { border: '#a855f7', icon: '#a855f7' }, + proxmox: { border: '#ff6e00', icon: '#ff6e00' }, + vm: { border: '#a855f7', icon: '#a855f7' }, + lxc: { border: '#00d4ff', icon: '#00d4ff' }, + nas: { border: '#39d353', icon: '#39d353' }, + iot: { border: '#e3b341', icon: '#e3b341' }, + ap: { border: '#00d4ff', icon: '#00d4ff' }, + camera: { border: '#8b949e', icon: '#8b949e' }, + printer: { border: '#8b949e', icon: '#8b949e' }, + computer: { border: '#a855f7', icon: '#a855f7' }, + cpl: { border: '#e3b341', icon: '#e3b341' }, + docker_host: { border: '#2496ED', icon: '#2496ED' }, + generic: { border: '#8b949e', icon: '#8b949e' }, + groupRect: { border: '#00d4ff', icon: '#00d4ff' }, + group: { border: '#00d4ff', icon: '#00d4ff' }, }, nodeCardBackground: '#21262d', nodeIconBackground: '#161b22', @@ -97,24 +97,24 @@ export const THEMES: Record = { description: 'Pure black with maximum contrast', colors: { nodeAccents: { - isp: { border: '#22d3ee', icon: '#22d3ee' }, - router: { border: '#22d3ee', icon: '#22d3ee' }, - switch: { border: '#4ade80', icon: '#4ade80' }, - server: { border: '#c084fc', icon: '#c084fc' }, - proxmox: { border: '#fb923c', icon: '#fb923c' }, - vm: { border: '#c084fc', icon: '#c084fc' }, - lxc: { border: '#22d3ee', icon: '#22d3ee' }, - nas: { border: '#4ade80', icon: '#4ade80' }, - iot: { border: '#fbbf24', icon: '#fbbf24' }, - ap: { border: '#22d3ee', icon: '#22d3ee' }, - camera: { border: '#94a3b8', icon: '#94a3b8' }, - printer: { border: '#94a3b8', icon: '#94a3b8' }, - computer: { border: '#c084fc', icon: '#c084fc' }, - cpl: { border: '#fbbf24', icon: '#fbbf24' }, + isp: { border: '#22d3ee', icon: '#22d3ee' }, + router: { border: '#22d3ee', icon: '#22d3ee' }, + switch: { border: '#4ade80', icon: '#4ade80' }, + server: { border: '#c084fc', icon: '#c084fc' }, + proxmox: { border: '#fb923c', icon: '#fb923c' }, + vm: { border: '#c084fc', icon: '#c084fc' }, + lxc: { border: '#22d3ee', icon: '#22d3ee' }, + nas: { border: '#4ade80', icon: '#4ade80' }, + iot: { border: '#fbbf24', icon: '#fbbf24' }, + ap: { border: '#22d3ee', icon: '#22d3ee' }, + camera: { border: '#94a3b8', icon: '#94a3b8' }, + printer: { border: '#94a3b8', icon: '#94a3b8' }, + computer: { border: '#c084fc', icon: '#c084fc' }, + cpl: { border: '#fbbf24', icon: '#fbbf24' }, docker_host: { border: '#2496ED', icon: '#2496ED' }, - generic: { border: '#94a3b8', icon: '#94a3b8' }, - groupRect:{ border: '#22d3ee', icon: '#22d3ee' }, - group: { border: '#22d3ee', icon: '#22d3ee' }, + generic: { border: '#94a3b8', icon: '#94a3b8' }, + groupRect: { border: '#22d3ee', icon: '#22d3ee' }, + group: { border: '#22d3ee', icon: '#22d3ee' }, }, nodeCardBackground: '#0a0a0a', nodeIconBackground: '#111111', @@ -152,24 +152,24 @@ export const THEMES: Record = { description: 'Clean light theme with dark text', colors: { nodeAccents: { - isp: { border: '#0284c7', icon: '#0284c7' }, - router: { border: '#0284c7', icon: '#0284c7' }, - switch: { border: '#16a34a', icon: '#16a34a' }, - server: { border: '#7c3aed', icon: '#7c3aed' }, - proxmox: { border: '#ea580c', icon: '#ea580c' }, - vm: { border: '#7c3aed', icon: '#7c3aed' }, - lxc: { border: '#0284c7', icon: '#0284c7' }, - nas: { border: '#16a34a', icon: '#16a34a' }, - iot: { border: '#b45309', icon: '#b45309' }, - ap: { border: '#0284c7', icon: '#0284c7' }, - camera: { border: '#6b7280', icon: '#6b7280' }, - printer: { border: '#6b7280', icon: '#6b7280' }, - computer: { border: '#7c3aed', icon: '#7c3aed' }, - cpl: { border: '#b45309', icon: '#b45309' }, + isp: { border: '#0284c7', icon: '#0284c7' }, + router: { border: '#0284c7', icon: '#0284c7' }, + switch: { border: '#16a34a', icon: '#16a34a' }, + server: { border: '#7c3aed', icon: '#7c3aed' }, + proxmox: { border: '#ea580c', icon: '#ea580c' }, + vm: { border: '#7c3aed', icon: '#7c3aed' }, + lxc: { border: '#0284c7', icon: '#0284c7' }, + nas: { border: '#16a34a', icon: '#16a34a' }, + iot: { border: '#b45309', icon: '#b45309' }, + ap: { border: '#0284c7', icon: '#0284c7' }, + camera: { border: '#6b7280', icon: '#6b7280' }, + printer: { border: '#6b7280', icon: '#6b7280' }, + computer: { border: '#7c3aed', icon: '#7c3aed' }, + cpl: { border: '#b45309', icon: '#b45309' }, docker_host: { border: '#2496ED', icon: '#2496ED' }, - generic: { border: '#6b7280', icon: '#6b7280' }, - groupRect:{ border: '#0284c7', icon: '#0284c7' }, - group: { border: '#0284c7', icon: '#0284c7' }, + generic: { border: '#6b7280', icon: '#6b7280' }, + groupRect: { border: '#0284c7', icon: '#0284c7' }, + group: { border: '#0284c7', icon: '#0284c7' }, }, nodeCardBackground: '#ffffff', nodeIconBackground: '#f0f6ff', @@ -207,24 +207,24 @@ export const THEMES: Record = { description: 'Cyberpunk vibes with vivid glowing accents', colors: { nodeAccents: { - isp: { border: '#00ffff', icon: '#00ffff' }, - router: { border: '#00ffff', icon: '#00ffff' }, - switch: { border: '#00ff80', icon: '#00ff80' }, - server: { border: '#ff00ff', icon: '#ff00ff' }, - proxmox: { border: '#ff8800', icon: '#ff8800' }, - vm: { border: '#ff00ff', icon: '#ff00ff' }, - lxc: { border: '#00ffff', icon: '#00ffff' }, - nas: { border: '#00ff80', icon: '#00ff80' }, - iot: { border: '#ffff00', icon: '#ffff00' }, - ap: { border: '#00ffff', icon: '#00ffff' }, - camera: { border: '#8888ff', icon: '#8888ff' }, - printer: { border: '#8888ff', icon: '#8888ff' }, - computer: { border: '#ff00ff', icon: '#ff00ff' }, - cpl: { border: '#ffff00', icon: '#ffff00' }, - docker_host: { border: '#00aaff', icon: '#00aaff' }, - generic: { border: '#8888ff', icon: '#8888ff' }, - groupRect:{ border: '#00ffff', icon: '#00ffff' }, - group: { border: '#00ffff', icon: '#00ffff' }, + isp: { border: '#00ffff', icon: '#00ffff' }, + router: { border: '#00ffff', icon: '#00ffff' }, + switch: { border: '#00ff80', icon: '#00ff80' }, + server: { border: '#ff00ff', icon: '#ff00ff' }, + proxmox: { border: '#ff8800', icon: '#ff8800' }, + vm: { border: '#ff00ff', icon: '#ff00ff' }, + lxc: { border: '#00ffff', icon: '#00ffff' }, + nas: { border: '#00ff80', icon: '#00ff80' }, + iot: { border: '#ffff00', icon: '#ffff00' }, + ap: { border: '#00ffff', icon: '#00ffff' }, + camera: { border: '#8888ff', icon: '#8888ff' }, + printer: { border: '#8888ff', icon: '#8888ff' }, + computer: { border: '#ff00ff', icon: '#ff00ff' }, + cpl: { border: '#ffff00', icon: '#ffff00' }, + docker_host: { border: '#00aaff', icon: '#00aaff' }, + generic: { border: '#8888ff', icon: '#8888ff' }, + groupRect: { border: '#00ffff', icon: '#00ffff' }, + group: { border: '#00ffff', icon: '#00ffff' }, }, nodeCardBackground: '#0f0f2a', nodeIconBackground: '#0a0a1a', @@ -262,24 +262,24 @@ export const THEMES: Record = { description: 'Everything in terminal green', colors: { nodeAccents: { - isp: { border: '#00ff41', icon: '#00ff41' }, - router: { border: '#00ff41', icon: '#00ff41' }, - switch: { border: '#00cc33', icon: '#00cc33' }, - server: { border: '#008822', icon: '#008822' }, - proxmox: { border: '#33ff66', icon: '#33ff66' }, - vm: { border: '#008822', icon: '#008822' }, - lxc: { border: '#00ff41', icon: '#00ff41' }, - nas: { border: '#00cc33', icon: '#00cc33' }, - iot: { border: '#66ff33', icon: '#66ff33' }, - ap: { border: '#00ff41', icon: '#00ff41' }, - camera: { border: '#005500', icon: '#005500' }, - printer: { border: '#005500', icon: '#005500' }, - computer: { border: '#008822', icon: '#008822' }, - cpl: { border: '#66ff33', icon: '#66ff33' }, - docker_host: { border: '#00cc88', icon: '#00cc88' }, - generic: { border: '#006600', icon: '#006600' }, - groupRect:{ border: '#00ff41', icon: '#00ff41' }, - group: { border: '#00ff41', icon: '#00ff41' }, + isp: { border: '#00ff41', icon: '#00ff41' }, + router: { border: '#00ff41', icon: '#00ff41' }, + switch: { border: '#00cc33', icon: '#00cc33' }, + server: { border: '#008822', icon: '#008822' }, + proxmox: { border: '#33ff66', icon: '#33ff66' }, + vm: { border: '#008822', icon: '#008822' }, + lxc: { border: '#00ff41', icon: '#00ff41' }, + nas: { border: '#00cc33', icon: '#00cc33' }, + iot: { border: '#66ff33', icon: '#66ff33' }, + ap: { border: '#00ff41', icon: '#00ff41' }, + camera: { border: '#005500', icon: '#005500' }, + printer: { border: '#005500', icon: '#005500' }, + computer: { border: '#008822', icon: '#008822' }, + cpl: { border: '#66ff33', icon: '#66ff33' }, + docker_host: { border: '#00cc88', icon: '#00cc88' }, + generic: { border: '#006600', icon: '#006600' }, + groupRect: { border: '#00ff41', icon: '#00ff41' }, + group: { border: '#00ff41', icon: '#00ff41' }, }, nodeCardBackground: '#001100', nodeIconBackground: '#002200',