// ===== Elejemais — Icon set (minimal line icons) =====
// Available on window.Icon.{name}

const I = (children, props = {}) => {
  const { size = 16, stroke = "currentColor", strokeWidth = 1.6, ...rest } = props;
  return (
    <svg
      width={size}
      height={size}
      viewBox="0 0 24 24"
      fill="none"
      stroke={stroke}
      strokeWidth={strokeWidth}
      strokeLinecap="round"
      strokeLinejoin="round"
      {...rest}
    >
      {children}
    </svg>
  );
};

const Icon = {
  Dashboard: (p) => I(<>
    <path d="M3 13a9 9 0 0 1 18 0" />
    <path d="M12 13l4-4" />
    <circle cx="12" cy="13" r="1.2" fill="currentColor" />
  </>, p),
  Map: (p) => I(<>
    <path d="M9 4L3 6v14l6-2 6 2 6-2V4l-6 2-6-2z" />
    <path d="M9 4v14" />
    <path d="M15 6v14" />
  </>, p),
  Users: (p) => I(<>
    <circle cx="9" cy="9" r="3.2" />
    <path d="M3 19c0-3.3 2.7-6 6-6s6 2.7 6 6" />
    <circle cx="17" cy="7" r="2.4" />
    <path d="M15 13c2.8 0 5 2.2 5 5" />
  </>, p),
  Heart: (p) => I(<>
    <path d="M12 20s-7-4.6-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.4-7 10-7 10z" />
  </>, p),
  Report: (p) => I(<>
    <rect x="5" y="3" width="14" height="18" rx="2" />
    <path d="M9 8h6M9 12h6M9 16h4" />
  </>, p),
  Plus: (p) => I(<><path d="M12 5v14M5 12h14" /></>, p),
  Search: (p) => I(<><circle cx="11" cy="11" r="6" /><path d="M20 20l-3.5-3.5" /></>, p),
  Bell: (p) => I(<>
    <path d="M6 16V11a6 6 0 1 1 12 0v5l1.5 2h-15z" />
    <path d="M10 21a2 2 0 0 0 4 0" />
  </>, p),
  Filter: (p) => I(<><path d="M4 5h16l-6 8v6l-4-2v-4z" /></>, p),
  Download: (p) => I(<><path d="M12 4v12M6 11l6 6 6-6" /><path d="M4 20h16" /></>, p),
  Arrow: (p) => I(<><path d="M5 12h14M13 5l7 7-7 7" /></>, p),
  ArrowUp: (p) => I(<><path d="M7 14l5-5 5 5" /></>, p),
  ArrowDown: (p) => I(<><path d="M7 10l5 5 5-5" /></>, p),
  Check: (p) => I(<><path d="M5 12.5l4.5 4.5L19 7" /></>, p),
  X: (p) => I(<><path d="M6 6l12 12M18 6L6 18" /></>, p),
  Edit: (p) => I(<><path d="M4 20h4l10-10-4-4L4 16v4z" /><path d="M14 6l4 4" /></>, p),
  Trash: (p) => I(<><path d="M4 7h16M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" /><path d="M6 7l1 13a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-13" /></>, p),
  More: (p) => I(<><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" /></>, p),
  Pin: (p) => I(<>
    <path d="M12 22s7-7.5 7-13a7 7 0 0 0-14 0c0 5.5 7 13 7 13z" />
    <circle cx="12" cy="9" r="2.6" />
  </>, p),
  Calendar: (p) => I(<>
    <rect x="4" y="5" width="16" height="16" rx="2" />
    <path d="M4 10h16M9 3v4M15 3v4" />
  </>, p),
  Target: (p) => I(<>
    <circle cx="12" cy="12" r="8" />
    <circle cx="12" cy="12" r="4" />
    <circle cx="12" cy="12" r="1.2" fill="currentColor" />
  </>, p),
  Settings: (p) => I(<>
    <circle cx="12" cy="12" r="3" />
    <path d="M19.4 14a1.7 1.7 0 0 0 .3 1.9l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.5V20a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.9.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.9 1.7 1.7 0 0 0-1.5-1H4a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.9l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.9.3h.1a1.7 1.7 0 0 0 1-1.5V4a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.9-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.9v.1a1.7 1.7 0 0 0 1.5 1H20a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z" />
  </>, p),
  Sparkle: (p) => I(<>
    <path d="M12 4l1.6 4.4L18 10l-4.4 1.6L12 16l-1.6-4.4L6 10l4.4-1.6z" />
  </>, p),
  Star: (p) => I(<>
    <path d="M12 3l2.6 5.5 6 .9-4.3 4.2 1 6L12 16.8 6.7 19.6l1-6L3.4 9.4l6-.9z" />
  </>, p),
  Trend: (p) => I(<><path d="M4 17l6-6 4 4 6-7" /><path d="M14 8h6v6" /></>, p),
  Link: (p) => I(<>
    <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" />
    <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />
  </>, p),
  Lock: (p) => I(<>
    <rect x="5" y="11" width="14" height="10" rx="2" />
    <path d="M8 11V7a4 4 0 0 1 8 0v4" />
  </>, p),
  Camera: (p) => I(<>
    <path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z" />
    <circle cx="12" cy="13" r="4" />
  </>, p),
  Logo: (p) => {
    const { size = 28 } = p || {};
    return (
      <svg width={size} height={size} viewBox="0 0 32 32" fill="none">
        <rect x="2" y="2" width="28" height="28" rx="8" fill="currentColor" />
        <path d="M11 9h9M11 16h7M11 23h9" stroke="var(--surface)" strokeWidth="2" strokeLinecap="round" />
        <circle cx="22" cy="9" r="2.2" fill="oklch(0.78 0.18 70)" />
      </svg>
    );
  },
};

window.Icon = Icon;
