// Floating Smart Home brand/standard chips for Hero background // Generic icons (no recreation of brand logos) + name tooltips on hover const BRAND_ITEMS_HOME = [ // Standards & Protocols (links bias) { name: "KNX", kind: "Bus-Standard", glyph: "text", text: "KNX", x: 5, y: 18, anim: "a", delay: 0 }, { name: "Zigbee", kind: "Funk-Standard", glyph: "mesh", x: 14, y: 62, anim: "b", delay: 1.2 }, { name: "Z-Wave", kind: "Funk-Standard", glyph: "wave", x: 26, y: 10, anim: "c", delay: 0.4 }, { name: "Matter", kind: "Standard", glyph: "matter", x: 4, y: 42, anim: "b", delay: 2.0 }, { name: "Thread", kind: "Mesh-Funk", glyph: "thread", x: 38, y: 70, anim: "a", delay: 1.5 }, { name: "WLAN", kind: "Konnektivität", glyph: "wifi", x: 22, y: 36, anim: "c", delay: 2.4 }, { name: "Bluetooth", kind: "Funk", glyph: "bt", x: 10, y: 84, anim: "a", delay: 0.8 }, { name: "DALI", kind: "Lichtsteuerung", glyph: "text", text: "DALI", x: 32, y: 92, anim: "b", delay: 1.9 }, { name: "Modbus", kind: "Industrie-Bus", glyph: "text", text: "MOD", x: 30, y: 50, anim: "a", delay: 2.6 }, { name: "M-Bus", kind: "Zähler-Bus", glyph: "text", text: "M-BUS", x: 18, y: 22, anim: "c", delay: 0.6 }, { name: "EnOcean", kind: "Energy Harvesting", glyph: "leaf", x: 40, y: 14, anim: "b", delay: 1.4 }, { name: "LoRaWAN", kind: "Long-Range Funk", glyph: "tower", x: 44, y: 42, anim: "c", delay: 2.1 }, // Hubs / Software (mitte) { name: "Home Assistant", kind: "Smart-Home OS", glyph: "ha", x: 88, y: 14, anim: "b", delay: 0.6 }, { name: "MQTT", kind: "Protokoll", glyph: "mqtt", x: 76, y: 6, anim: "a", delay: 1.8 }, { name: "Node-RED", kind: "Automation", glyph: "node", x: 86, y: 60, anim: "c", delay: 0 }, { name: "ESPHome", kind: "DIY-Firmware", glyph: "chip", x: 56, y: 88, anim: "a", delay: 0.5 }, { name: "openHAB", kind: "Smart-Home OS", glyph: "ha", x: 50, y: 8, anim: "b", delay: 2.3 }, { name: "ioBroker", kind: "Smart-Home OS", glyph: "node", x: 62, y: 76, anim: "c", delay: 1.1 }, { name: "InfluxDB", kind: "Zeitreihen-DB", glyph: "db", x: 50, y: 56, anim: "a", delay: 1.7 }, { name: "Grafana", kind: "Dashboards", glyph: "chart", x: 60, y: 30, anim: "b", delay: 0.4 }, // Hardware brands (rechts bias) — alle nur abstrakte Icons, keine Logo-Replikate { name: "Shelly", kind: "Aktoren · Schalter", glyph: "shelly", x: 80, y: 46, anim: "a", delay: 2.2 }, { name: "Loxone", kind: "Miniserver", glyph: "lox", x: 68, y: 86, anim: "b", delay: 0.3 }, { name: "Philips Hue", kind: "Beleuchtung", glyph: "bulb", x: 94, y: 36, anim: "c", delay: 1.0 }, { name: "Sonos", kind: "Multiroom Audio", glyph: "audio", x: 90, y: 80, anim: "a", delay: 1.6 }, { name: "Fronius", kind: "PV · Wechselrichter", glyph: "pv", x: 73, y: 26, anim: "c", delay: 2.6 }, { name: "Starlink", kind: "Konnektivität", glyph: "starlink", x: 54, y: 4, anim: "b", delay: 0.9 }, { name: "Sonoff", kind: "Aktoren · Schalter", glyph: "shelly", x: 96, y: 56, anim: "b", delay: 1.3 }, { name: "Aqara", kind: "Sensoren", glyph: "sensor", x: 66, y: 12, anim: "a", delay: 1.0 }, { name: "IKEA Tradfri", kind: "Beleuchtung", glyph: "bulb", x: 82, y: 30, anim: "c", delay: 0.2 }, { name: "Bosch Smart Home", kind: "Sensoren · Heizung", glyph: "sensor", x: 70, y: 56, anim: "b", delay: 2.5 }, { name: "Tasmota", kind: "Open Firmware", glyph: "chip", x: 78, y: 70, anim: "a", delay: 0.7 }, { name: "Reolink", kind: "Kameras", glyph: "cam", x: 92, y: 22, anim: "c", delay: 1.5 }, { name: "Ubiquiti", kind: "Netzwerk", glyph: "net", x: 84, y: 92, anim: "b", delay: 0.8 }, { name: "Nuki", kind: "Smart Lock", glyph: "lock", x: 72, y: 40, anim: "a", delay: 2.0 }, { name: "Tuya", kind: "Cloud-Plattform", glyph: "cloud", x: 58, y: 60, anim: "c", delay: 1.6 }, { name: "Viessmann", kind: "Heizung", glyph: "flame", x: 64, y: 46, anim: "b", delay: 0.1 }, { name: "KEBA", kind: "Wallbox · E-Auto", glyph: "plug", x: 46, y: 84, anim: "a", delay: 2.8 }, ]; const BRAND_ITEMS_GEWERBE = [ // Industrieroboter & Automatisierung { name: "KUKA", kind: "Industrieroboter", glyph: "robot", x: 6, y: 18, anim: "a", delay: 0 }, { name: "FANUC", kind: "Industrieroboter", glyph: "robot", x: 16, y: 64, anim: "b", delay: 1.2 }, { name: "ABB", kind: "Robotik · Automation", glyph: "text", text: "ABB", x: 28, y: 12, anim: "c", delay: 0.4 }, { name: "Stäubli", kind: "Roboter · Greifer", glyph: "robot", x: 4, y: 42, anim: "b", delay: 2.0 }, { name: "Yaskawa Motoman", kind: "Industrieroboter", glyph: "robot", x: 38, y: 72, anim: "a", delay: 1.5 }, { name: "Universal Robots", kind: "Cobots", glyph: "cobot", x: 22, y: 36, anim: "c", delay: 2.4 }, { name: "Mitsubishi Electric", kind: "Automation", glyph: "text", text: "MEAU", x: 10, y: 84, anim: "a", delay: 0.8 }, { name: "Kawasaki Robotics", kind: "Industrieroboter", glyph: "robot", x: 32, y: 92, anim: "b", delay: 1.9 }, // SPS / Steuerung { name: "Siemens SIMATIC", kind: "SPS · S7-1500", glyph: "plc", x: 18, y: 22, anim: "c", delay: 0.6 }, { name: "Beckhoff", kind: "TwinCAT · IPC", glyph: "plc", x: 30, y: 50, anim: "a", delay: 2.6 }, { name: "B&R Automation", kind: "SPS · Antriebe", glyph: "plc", x: 40, y: 14, anim: "b", delay: 1.4 }, { name: "Rockwell · Allen-Bradley", kind: "SPS · ControlLogix", glyph: "plc", x: 44, y: 42, anim: "c", delay: 2.1 }, { name: "Schneider Electric", kind: "Modicon · SPS", glyph: "plc", x: 50, y: 84, anim: "a", delay: 0.3 }, { name: "Omron", kind: "Sensorik · SPS", glyph: "sensor", x: 26, y: 8, anim: "b", delay: 1.7 }, // Werkzeugmaschinen / Fräsen / Drehen { name: "DMG MORI", kind: "CNC-Fräsen · Drehen", glyph: "mill", x: 88, y: 14, anim: "b", delay: 0.6 }, { name: "Mazak", kind: "Werkzeugmaschinen", glyph: "mill", x: 76, y: 6, anim: "a", delay: 1.8 }, { name: "Trumpf", kind: "Laserschneiden · Stanzen", glyph: "laser", x: 86, y: 62, anim: "c", delay: 0 }, { name: "Heller", kind: "Bearbeitungszentren", glyph: "mill", x: 56, y: 88, anim: "a", delay: 0.5 }, { name: "Hermle", kind: "5-Achs-Fräsen", glyph: "mill", x: 68, y: 22, anim: "b", delay: 2.3 }, { name: "GROB", kind: "Werkzeugmaschinen", glyph: "mill", x: 80, y: 86, anim: "c", delay: 1.1 }, { name: "Doosan", kind: "CNC · Robotik", glyph: "mill", x: 50, y: 56, anim: "a", delay: 1.7 }, { name: "Okuma", kind: "CNC-Drehmaschinen", glyph: "lathe", x: 60, y: 30, anim: "b", delay: 0.4 }, { name: "EMCO", kind: "CNC-Drehen · Fräsen", glyph: "lathe", x: 96, y: 50, anim: "a", delay: 2.2 }, // Antriebstechnik / Sensoren / Sicherheit { name: "SEW Eurodrive", kind: "Antriebstechnik", glyph: "motor", x: 70, y: 76, anim: "b", delay: 0.3 }, { name: "SICK", kind: "Sicherheit · Sensorik", glyph: "scanner", x: 92, y: 36, anim: "c", delay: 1.0 }, { name: "Pilz", kind: "Maschinensicherheit", glyph: "shield", x: 90, y: 80, anim: "a", delay: 1.6 }, { name: "Festo", kind: "Pneumatik · Automation", glyph: "valve", x: 74, y: 42, anim: "c", delay: 2.6 }, { name: "Bosch Rexroth", kind: "Hydraulik · Antriebe", glyph: "motor", x: 54, y: 4, anim: "b", delay: 0.9 }, { name: "Schunk", kind: "Greifer · Spanntechnik", glyph: "gripper", x: 96, y: 22, anim: "b", delay: 1.3 }, { name: "ifm electronic", kind: "Industriesensoren", glyph: "sensor", x: 64, y: 12, anim: "a", delay: 1.0 }, { name: "Pepperl+Fuchs", kind: "Industriesensoren", glyph: "sensor", x: 82, y: 30, anim: "c", delay: 0.2 }, // Industrie-Standards / IT { name: "OPC UA", kind: "M2M · Standard", glyph: "text", text: "OPC", x: 46, y: 64, anim: "b", delay: 2.5 }, { name: "PROFINET", kind: "Industrial Ethernet", glyph: "text", text: "PNet", x: 78, y: 70, anim: "a", delay: 0.7 }, { name: "EtherCAT", kind: "Echtzeit-Bus", glyph: "text", text: "ECAT", x: 84, y: 92, anim: "b", delay: 0.8 }, { name: "MQTT Sparkplug", kind: "IIoT-Protokoll", glyph: "mqtt", x: 72, y: 50, anim: "a", delay: 2.0 }, { name: "Ignition SCADA", kind: "Visualisierung", glyph: "scada", x: 58, y: 60, anim: "c", delay: 1.6 }, ]; // path-spezifische Auswahl function getBrandItems(pathKey) { if (pathKey === "gewerbe") return BRAND_ITEMS_GEWERBE; return BRAND_ITEMS_HOME; } // Compact icon set — geometric, never logo-replicas function ChipGlyph({ kind, text }) { const stroke = "#8DDBEA"; const accent = "#3ABDD0"; switch (kind) { case "text": return {text}; case "mesh": // Zigbee-style mesh dots return ( ); case "wave": // Z-Wave: zigzag return ( ); case "matter": // Matter: 4 rays from center return ( ); case "thread": return ( ); case "wifi": return ( ); case "bt": return ( ); case "ha": // Home Assistant — generic house with circle (not a logo replica) return ( ); case "mqtt": // Pub/sub arrows return ( ); case "node": // Node-RED — connected nodes return ( ); case "shelly": // Switch / relay return ( ); case "lox": // Mini-server / rack return ( ); case "bulb": return ( ); case "audio": return ( ); case "pv": // Solar panel return ( ); case "starlink": // Satellite dish return ( ); case "leaf": // EnOcean — energy harvesting / blatt return ( ); case "tower": // LoRa — Funkturm mit Wellen return ( ); case "chip": // ESPHome / Tasmota — IC chip return ( {[ [4, 10], [4, 13], [4, 16], [22, 10], [22, 13], [22, 16], [10, 4], [13, 4], [16, 4], [10, 22], [13, 22], [16, 22], ].map(([x, y], i) => { const isVert = y === 4 || y === 22; return isVert ? : ; })} ); case "db": // InfluxDB — cylindrical database return ( ); case "chart": // Grafana — bar/line dashboard return ( ); case "sensor": // Aqara/Bosch — multi-sensor puck return ( ); case "cam": // Reolink — security camera return ( ); case "net": // Ubiquiti — network nodes return ( ); case "lock": // Nuki — smart lock return ( ); case "cloud": // Tuya — cloud platform return ( ); case "flame": // Viessmann — heating/flame return ( ); case "plug": // KEBA Wallbox / EV charging plug return ( ); /* ── Industrial glyphs (Gewerbe) ─────────────────────────── */ case "robot": // 6-axis articulated arm — generic return ( ); case "cobot": // Slim collaborative arm — vertical posture return ( ); case "plc": // PLC module on DIN rail return ( ); case "mill": // CNC mill / machining center — gantry with spindle return ( ); case "lathe": // CNC lathe — chuck + workpiece + tailstock return ( ); case "laser": // Laser cutter — beam + sheet return ( ); case "motor": // Servo drive / motor return ( ); case "scanner": // Safety light scanner / lidar sensor return ( ); case "shield": // Safety / Pilz — shield + checkmark return ( ); case "valve": // Pneumatic valve / Festo return ( ); case "gripper": // Robot gripper / Schunk return ( ); case "scada": // SCADA / Ignition — multi-pane dashboard return ( ); default: return null; } } function BrandCloud({ pathKey = "altbau" }) { const items = getBrandItems(pathKey); return ( ); } window.BrandCloud = BrandCloud;