/* Lumino Icons — minimal monoline SVGs, currentColor
   Using plain geometric forms, no overdone illustrations. */

const Icon = ({ name, size = 16, stroke = 1.6, style }) => {
  const s = size;
  const props = {
    width: s, height: s, viewBox: "0 0 24 24",
    fill: "none", stroke: "currentColor",
    strokeWidth: stroke, strokeLinecap: "round", strokeLinejoin: "round",
    style,
  };
  switch (name) {
    case "graph": return (
      <svg {...props}>
        <circle cx="6" cy="6" r="2"/><circle cx="18" cy="6" r="2"/>
        <circle cx="6" cy="18" r="2"/><circle cx="18" cy="18" r="2"/>
        <circle cx="12" cy="12" r="2.2"/>
        <path d="M7.5 7.2l3.2 3.2M16.5 7.2l-3.2 3.2M7.5 16.8l3.2-3.2M16.5 16.8l-3.2-3.2"/>
      </svg>
    );
    case "home": return (<svg {...props}><path d="M3 11l9-7 9 7v9a1 1 0 0 1-1 1h-5v-6h-6v6H4a1 1 0 0 1-1-1z"/></svg>);
    case "book": return (<svg {...props}><path d="M4 4h10a4 4 0 0 1 4 4v12H8a4 4 0 0 1-4-4z"/><path d="M4 4v12a4 4 0 0 0 4 4"/></svg>);
    case "trophy": return (<svg {...props}><path d="M7 4h10v4a5 5 0 1 1-10 0z"/><path d="M7 5H4v2a3 3 0 0 0 3 3M17 5h3v2a3 3 0 0 1-3 3M10 18h4M12 13v5M9 21h6"/></svg>);
    case "calendar": return (<svg {...props}><rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 10h18M8 3v4M16 3v4"/></svg>);
    case "flask": return (<svg {...props}><path d="M9 3h6M10 3v6l-5 9a2 2 0 0 0 1.8 3h10.4A2 2 0 0 0 19 18l-5-9V3"/><path d="M7 14h10"/></svg>);
    case "users": return (<svg {...props}><circle cx="9" cy="8" r="3"/><path d="M3 20c0-3 3-5 6-5s6 2 6 5"/><circle cx="17" cy="9" r="2.5"/><path d="M15 20c0-2.5 2-4 4-4s2 1 2 2"/></svg>);
    case "user": return (<svg {...props}><circle cx="12" cy="8" r="3.5"/><path d="M5 20c0-4 3-6 7-6s7 2 7 6"/></svg>);
    case "settings": return (<svg {...props}><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/></svg>);
    case "search": return (<svg {...props}><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>);
    case "bell": return (<svg {...props}><path d="M18 16v-5a6 6 0 1 0-12 0v5l-2 3h16z"/><path d="M10 20a2 2 0 0 0 4 0"/></svg>);
    case "sun": return (<svg {...props}><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg>);
    case "moon": return (<svg {...props}><path d="M20 14A8 8 0 1 1 10 4a6 6 0 0 0 10 10z"/></svg>);
    case "pencil": return (<svg {...props}><path d="M4 20h4l10-10-4-4L4 16z"/><path d="M14 6l4 4"/></svg>);
    case "eraser": return (<svg {...props}><path d="M14 4l6 6-8 8H6l-2-2z"/><path d="M8 12l6 6"/></svg>);
    case "circle-tool": return (<svg {...props}><circle cx="12" cy="12" r="7"/></svg>);
    case "square-tool": return (<svg {...props}><rect x="5" y="5" width="14" height="14" rx="1"/></svg>);
    case "arrow-tool": return (<svg {...props}><path d="M4 12h14M14 6l6 6-6 6"/></svg>);
    case "text-tool": return (<svg {...props}><path d="M6 5h12M12 5v14M9 19h6"/></svg>);
    case "record": return (<svg {...props} fill="currentColor" stroke="none"><circle cx="12" cy="12" r="6"/></svg>);
    case "stop": return (<svg {...props} fill="currentColor" stroke="none"><rect x="7" y="7" width="10" height="10" rx="1"/></svg>);
    case "eye": return (<svg {...props}><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg>);
    case "upload": return (<svg {...props}><path d="M12 16V4M6 10l6-6 6 6M4 20h16"/></svg>);
    case "sparkle": return (<svg {...props}><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/><path d="M19 4l.6 1.4L21 6l-1.4.6L19 8l-.6-1.4L17 6l1.4-.6z"/></svg>);
    case "play": return (<svg {...props} fill="currentColor" stroke="none"><path d="M7 5v14l12-7z"/></svg>);
    case "pause": return (<svg {...props} fill="currentColor" stroke="none"><rect x="6" y="5" width="4" height="14" rx="1"/><rect x="14" y="5" width="4" height="14" rx="1"/></svg>);
    case "prev": return (<svg {...props}><path d="M15 18l-6-6 6-6"/></svg>);
    case "next": return (<svg {...props}><path d="M9 6l6 6-6 6"/></svg>);
    case "plus": return (<svg {...props}><path d="M12 5v14M5 12h14"/></svg>);
    case "close": return (<svg {...props}><path d="M6 6l12 12M18 6L6 18"/></svg>);
    case "check": return (<svg {...props}><path d="M5 12l5 5L20 6"/></svg>);
    case "zoom-in": return (<svg {...props}><circle cx="11" cy="11" r="7"/><path d="M11 8v6M8 11h6M21 21l-4.3-4.3"/></svg>);
    case "zoom-out": return (<svg {...props}><circle cx="11" cy="11" r="7"/><path d="M8 11h6M21 21l-4.3-4.3"/></svg>);
    case "recenter": return (<svg {...props}><circle cx="12" cy="12" r="3"/><path d="M12 3v3M12 18v3M3 12h3M18 12h3"/></svg>);
    case "layers": return (<svg {...props}><path d="M12 3l9 5-9 5-9-5z"/><path d="M3 13l9 5 9-5M3 17l9 5 9-5"/></svg>);
    case "filter": return (<svg {...props}><path d="M4 5h16l-6 8v6l-4-2v-4z"/></svg>);
    case "clock": return (<svg {...props}><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></svg>);
    case "mic": return (<svg {...props}><rect x="9" y="3" width="6" height="12" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3M8 21h8"/></svg>);
    case "message": return (<svg {...props}><path d="M21 12a8 8 0 1 1-3.5-6.6L21 5l-1 3.5A8 8 0 0 1 21 12z"/></svg>);
    case "robot": return (<svg {...props}><rect x="4" y="8" width="16" height="12" rx="2"/><circle cx="9" cy="14" r="1.2"/><circle cx="15" cy="14" r="1.2"/><path d="M12 4v4M9 8h6"/></svg>);
    case "brain": return (<svg {...props}><path d="M9 4a3 3 0 0 0-3 3v0a3 3 0 0 0-2 3v1a3 3 0 0 0 1 2v1a3 3 0 0 0 3 3h1v3"/><path d="M15 4a3 3 0 0 1 3 3v0a3 3 0 0 1 2 3v1a3 3 0 0 1-1 2v1a3 3 0 0 1-3 3h-1v3"/><path d="M9 10h2M13 10h2"/></svg>);
    case "check-circle": return (<svg {...props}><circle cx="12" cy="12" r="9"/><path d="M8 12l3 3 5-6"/></svg>);
    case "lock": return (<svg {...props}><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V7a4 4 0 0 1 8 0v4"/></svg>);
    case "flag": return (<svg {...props}><path d="M5 21V4h10l-2 3 2 3H5"/></svg>);
    case "dots": return (<svg {...props}><circle cx="6" cy="12" r="1.2" fill="currentColor"/><circle cx="12" cy="12" r="1.2" fill="currentColor"/><circle cx="18" cy="12" r="1.2" fill="currentColor"/></svg>);
    case "menu": return (<svg {...props}><path d="M4 7h16M4 12h16M4 17h16"/></svg>);
    case "arrow-right": return (<svg {...props}><path d="M5 12h14M13 6l6 6-6 6"/></svg>);
    case "arrow-left": return (<svg {...props}><path d="M19 12H5M11 6l-6 6 6 6"/></svg>);
    case "code": return (<svg {...props}><path d="M8 6L2 12l6 6M16 6l6 6-6 6M14 4l-4 16"/></svg>);
    case "spark-path": return (<svg {...props}><path d="M4 18c4-4 6-8 10-8s6 4 6 4"/><circle cx="4" cy="18" r="1.5" fill="currentColor"/><circle cx="20" cy="14" r="1.5" fill="currentColor"/></svg>);
    case "ping": return (<svg {...props}><circle cx="12" cy="12" r="3" fill="currentColor"/><circle cx="12" cy="12" r="7"/></svg>);
    case "shield": return (<svg {...props}><path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z"/></svg>);
    case "volume": return (<svg {...props}><path d="M4 10v4h3l5 4V6L7 10z"/><path d="M16 9a4 4 0 0 1 0 6M19 7a7 7 0 0 1 0 10"/></svg>);
    case "quiz": return (<svg {...props}><circle cx="12" cy="12" r="9"/><path d="M9.5 9a2.5 2.5 0 1 1 3.5 2.3c-.7.4-1 .8-1 1.7M12 16.5v.1"/></svg>);
    case "slides": return (<svg {...props}><rect x="3" y="4" width="18" height="13" rx="2"/><path d="M9 21h6M12 17v4"/></svg>);
    case "video": return (<svg {...props}><rect x="3" y="6" width="13" height="12" rx="2"/><path d="M16 10l5-3v10l-5-3z"/></svg>);
    case "sim": return (<svg {...props}><circle cx="12" cy="12" r="9"/><path d="M4 12h16M12 4a12 12 0 0 1 0 16A12 12 0 0 1 12 4z"/></svg>);
    default: return null;
  }
};

window.Icon = Icon;
