// Icons & small components for Copia de llaves landing const { useState, useEffect, useRef } = React; const Icon = ({ name, size = 24, stroke = 1.6 }) => { const common = { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: stroke, strokeLinecap: "round", strokeLinejoin: "round", }; switch (name) { case "phone": return ( ); case "wa": return ( ); case "key": return ( ); case "bolt": return ( ); case "clock": return ( ); case "pin": return ( ); case "remote": return ( ); case "lost": return ( ); case "unlock": return ( ); case "wrench": return ( ); case "home": return ( ); case "arrow": return ( ); case "left": return ( ); case "right": return ( ); case "google": return ( ); case "spark": return ( ); default: return null; } }; // Animated key SVG that rotates with scroll const ScrollKey = ({ rotation }) => ( {/* Key fob (top) */} {/* Key fob highlight */} {/* Buttons */} {/* Lock icons on buttons */} LOCK UNLK SOS {/* Key blade (bottom) */} {/* Key teeth */} {/* Hole at top */} ); // Stylized Castilla-La Mancha map with pins const ServiceMap = () => { // Approx coordinates within a viewBox (relative; not to scale) const places = [ { name: "La Solana", x: 480, y: 420, home: true }, { name: "Manzanares", x: 450, y: 400 }, { name: "Valdepeñas", x: 470, y: 480 }, { name: "Tomelloso", x: 540, y: 360 }, { name: "Alcázar", x: 530, y: 280 }, { name: "Daimiel", x: 380, y: 380 }, { name: "Almagro", x: 360, y: 460 }, { name: "Ciudad Real", x: 320, y: 440 }, { name: "Puertollano", x: 310, y: 540 }, { name: "Miguelturra", x: 330, y: 430 }, { name: "Bolaños", x: 380, y: 450 }, { name: "Membrilla", x: 460, y: 440 }, { name: "Argamasilla", x: 510, y: 380 }, { name: "Campo de Criptana", x: 540, y: 300 }, { name: "Herencia", x: 500, y: 250 }, { name: "Socuéllamos", x: 600, y: 320 }, { name: "Consuegra", x: 460, y: 220 }, { name: "Madridejos", x: 440, y: 200 }, { name: "Villarrobledo", x: 660, y: 320 }, { name: "La Roda", x: 720, y: 360 }, ]; return ( {/* Stylized region outline */} {/* Halo on home */} {/* Connector lines from home to others */} {places.filter(p => !p.home).slice(0, 10).map((p, i) => ( ))} {/* Pins */} {places.map((p) => ( {p.home && ( <> )} {(p.home || ["Valdepeñas","Tomelloso","Alcázar","Ciudad Real","Daimiel","Puertollano","Villarrobledo"].includes(p.name)) && ( {p.name} )} ))} ); }; Object.assign(window, { Icon, ScrollKey, ServiceMap });