From 220d831cf10b0e1061fc375b1a5fbbb0c0fbe8dc Mon Sep 17 00:00:00 2001 From: Pouzor Date: Sun, 8 Mar 2026 20:42:00 +0100 Subject: [PATCH] feat: add CPL / Powerline node type with PlugZap icon --- frontend/src/components/canvas/nodes/index.tsx | 3 ++- frontend/src/components/canvas/nodes/nodeTypes.ts | 3 ++- frontend/src/types/index.ts | 2 ++ frontend/src/utils/nodeIcons.ts | 3 ++- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/canvas/nodes/index.tsx b/frontend/src/components/canvas/nodes/index.tsx index 1543835..4b83423 100644 --- a/frontend/src/components/canvas/nodes/index.tsx +++ b/frontend/src/components/canvas/nodes/index.tsx @@ -1,7 +1,7 @@ import { type NodeProps, type Node } from '@xyflow/react' import { Globe, Router, Network, Server, Layers, Box, Container, - HardDrive, Cpu, Wifi, Circle, Cctv, Printer, Monitor, + HardDrive, Cpu, Wifi, Circle, Cctv, Printer, Monitor, PlugZap, } from 'lucide-react' import { BaseNode } from './BaseNode' import type { NodeData } from '@/types' @@ -21,4 +21,5 @@ export const ApNode = (props: N) => export const CameraNode = (props: N) => export const PrinterNode = (props: N) => export const ComputerNode = (props: N) => +export const CplNode = (props: N) => export const GenericNode = (props: N) => diff --git a/frontend/src/components/canvas/nodes/nodeTypes.ts b/frontend/src/components/canvas/nodes/nodeTypes.ts index 517c540..ea757b3 100644 --- a/frontend/src/components/canvas/nodes/nodeTypes.ts +++ b/frontend/src/components/canvas/nodes/nodeTypes.ts @@ -1,4 +1,4 @@ -import { IspNode, RouterNode, SwitchNode, ServerNode, VmNode, LxcNode, NasNode, IotNode, ApNode, CameraNode, PrinterNode, ComputerNode, GenericNode } from './index' +import { IspNode, RouterNode, SwitchNode, ServerNode, VmNode, LxcNode, NasNode, IotNode, ApNode, CameraNode, PrinterNode, ComputerNode, CplNode, GenericNode } from './index' import { ProxmoxGroupNode } from './ProxmoxGroupNode' export const nodeTypes = { @@ -15,5 +15,6 @@ export const nodeTypes = { camera: CameraNode, printer: PrinterNode, computer: ComputerNode, + cpl: CplNode, generic: GenericNode, } diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index b7a1d3e..1311c5b 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -12,6 +12,7 @@ export type NodeType = | 'camera' | 'printer' | 'computer' + | 'cpl' | 'generic' export type EdgeType = 'ethernet' | 'wifi' | 'iot' | 'vlan' | 'virtual' | 'cluster' @@ -73,6 +74,7 @@ export const NODE_TYPE_LABELS: Record = { camera: 'Camera', printer: 'Printer', computer: 'Computer', + cpl: 'CPL / Powerline', generic: 'Generic Device', } diff --git a/frontend/src/utils/nodeIcons.ts b/frontend/src/utils/nodeIcons.ts index d63058b..a22c227 100644 --- a/frontend/src/utils/nodeIcons.ts +++ b/frontend/src/utils/nodeIcons.ts @@ -18,7 +18,7 @@ import { // Communications Mail, MessageSquare, Phone, // Misc devices - Printer, Smartphone, Search, Filter, BookOpen, + Printer, Smartphone, Search, Filter, BookOpen, PlugZap, } from 'lucide-react' import type { LucideIcon } from 'lucide-react' @@ -45,6 +45,7 @@ export const ICON_REGISTRY: IconEntry[] = [ { 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 },