// icons.jsx — Lucide-inspired outline icons + Logo
// All icons share viewBox 24×24, stroke=currentColor, strokeWidth=1.75

const I = {
  // Navigation
  menu:       <><path d="M4 6h16"/><path d="M4 12h16"/><path d="M4 18h16"/></>,
  scripts:    <><path d="M14 3v4a1 1 0 0 0 1 1h4"/><path d="M17 21H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2z"/><path d="M9 13h6M9 17h4"/></>,
  database:   <><ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.66 3.58 3 8 3s8-1.34 8-3V5"/><path d="M4 12c0 1.66 3.58 3 8 3s8-1.34 8-3"/></>,
  history:    <><path d="M3 12a9 9 0 1 0 3-6.7L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l3 2"/></>,
  user:       <><circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/></>,
  settings:   <><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 1 1-4 0v-.1a1.7 1.7 0 0 0-1.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 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.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 1 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 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/></>,
  // Actions
  zap:        <path d="M13 2 3 14h9l-1 8 10-12h-9z"/>,
  play:       <path d="M6 4l14 8-14 8z"/>,
  trash:      <><path d="M3 6h18"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><path d="M10 11v6M14 11v6"/></>,
  copy:       <><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></>,
  check:      <path d="m5 12 5 5L20 7"/>,
  checkCircle:<><circle cx="12" cy="12" r="10"/><path d="m8 12 3 3 5-6"/></>,
  x:          <><path d="M18 6 6 18"/><path d="m6 6 12 12"/></>,
  plus:       <><path d="M12 5v14M5 12h14"/></>,
  arrowRight: <><path d="M5 12h14"/><path d="m13 5 7 7-7 7"/></>,
  arrowLeft:  <><path d="M19 12H5"/><path d="m12 19-7-7 7-7"/></>,
  externalLink:<><path d="M15 3h6v6"/><path d="M10 14 21 3"/><path d="M21 14v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5"/></>,
  download:   <><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m7 10 5 5 5-5"/><path d="M12 15V3"/></>,
  upload:     <><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m17 8-5-5-5 5"/><path d="M12 3v12"/></>,
  // Status
  alert:      <><circle cx="12" cy="12" r="10"/><path d="M12 8v4"/><path d="M12 16h.01"/></>,
  alertTri:   <><path d="M10.3 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><path d="M12 9v4"/><path d="M12 17h.01"/></>,
  info:       <><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></>,
  // Editor
  terminal:   <><path d="m4 17 6-6-6-6"/><path d="M12 19h8"/></>,
  code:       <><path d="m16 18 6-6-6-6"/><path d="m8 6-6 6 6 6"/></>,
  search:     <><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></>,
  // Files
  file:       <><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/></>,
  folder:     <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>,
  // Theme
  sun:        <><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></>,
  moon:       <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>,
  // Misc
  logout:     <><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><path d="m16 17 5-5-5-5"/><path d="M21 12H9"/></>,
  help:       <><circle cx="12" cy="12" r="10"/><path d="M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></>,
  bell:       <><path d="M6 8a6 6 0 1 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></>,
  star:       <path d="M12 2l3 7 7 .8-5.3 4.8 1.6 7.1L12 18l-6.3 3.7 1.6-7.1L2 9.8 9 9z"/>,
  github:     <path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.1-1.4-.3-2.8-1-4 .3-1.3.3-2.7-.1-4 0 0-1.1 0-3.5 1.4a12.3 12.3 0 0 0-6.4 0C6.5 1 5.5 1 5.5 1c-.5 1.3-.5 2.7 0 4-1 1.3-1.3 2.6-1 4 0 3.5 3 5.5 6 5.5a4.6 4.6 0 0 0-1 3.4V22"/>,
  puzzle:     <path d="M19.4 13.2c-.4-.4-.9-.6-1.4-.6h-.5v-2.4c0-1.1-.9-2-2-2H13v-.5c0-1.1-.9-2-2-2s-2 .9-2 2v.5H6.5c-1.1 0-2 .9-2 2v2c0 .5.2 1 .6 1.4l.6.6c-.4.4-.6.9-.6 1.4v2c0 1.1.9 2 2 2h2v-.5c0-1.1.9-2 2-2s2 .9 2 2v.5h2.5c1.1 0 2-.9 2-2v-2.5h.5c1.1 0 2-.9 2-2s-.9-2-2-2z"/>,
  command:    <path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"/>,
  bookOpen:   <><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></>,
  mail:       <><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 5L2 7"/></>,
  lock:       <><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></>,
  eye:        <><path d="M2 12s4-8 10-8 10 8 10 8-4 8-10 8-10-8-10-8z"/><circle cx="12" cy="12" r="3"/></>,
  eyeOff:     <><path d="M9.9 5a10 10 0 0 1 2.1-.2c6 0 10 7.2 10 7.2a16.4 16.4 0 0 1-2.6 3.4M6.6 6.6A16.6 16.6 0 0 0 2 12s4 8 10 8a10 10 0 0 0 5.4-1.6"/><path d="m2 2 20 20"/><path d="M9.9 9.9a3 3 0 0 0 4.2 4.2"/></>,
  sparkles:   <><path d="M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2 2M16.4 16.4l2 2M5.6 18.4l2-2M16.4 7.6l2-2"/></>,
  hash:       <><path d="M4 9h16M4 15h16M10 3 8 21M16 3l-2 18"/></>,
  globe:      <><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15 15 0 0 1 0 20 15 15 0 0 1 0-20z"/></>,
  chevronRight:<path d="m9 6 6 6-6 6"/>,
  chevronDown: <path d="m6 9 6 6 6-6"/>,
  chevronUp:   <path d="m6 15 6-6 6 6"/>,
  chevronLeft: <path d="m15 6-6 6 6 6"/>,
  more:       <><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></>,
  filter:     <path d="M22 3H2l8 9.5V19l4 2v-8.5z"/>,
  cpu:        <><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="9" y="9" width="6" height="6"/><path d="M9 1v3M15 1v3M9 20v3M15 20v3M20 9h3M20 14h3M1 9h3M1 14h3"/></>,
  shield:     <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>,
  clock:      <><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></>,
  heart:      <path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1-1.1a5.5 5.5 0 0 0-7.8 7.8l1 1.1L12 21.3l7.8-7.8 1-1.1a5.5 5.5 0 0 0 0-7.8z"/>,
  heartFill:  <path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1-1.1a5.5 5.5 0 0 0-7.8 7.8l1 1.1L12 21.3l7.8-7.8 1-1.1a5.5 5.5 0 0 0 0-7.8z" fill="currentColor"/>,
  users:      <><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.9"/><path d="M16 3.1a4 4 0 0 1 0 7.8"/></>,
  package:    <><path d="m16.5 9.4-9-5.2"/><path d="M21 16V8a2 2 0 0 0-1-1.7l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.7l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><path d="M3.3 7 12 12l8.7-5"/><path d="M12 22V12"/></>,
  tag:        <><path d="M20.6 11.5 11.5 20.6a2 2 0 0 1-2.8 0L2 13.8V2h11.8l6.8 6.7a2 2 0 0 1 0 2.8z"/><circle cx="7" cy="7" r="1" fill="currentColor"/></>,
};

function Icon({ name, size = 16, className = "", style = {}, strokeWidth = 1.75, ...rest }) {
  const path = I[name];
  if (!path) return null;
  return (
    <svg
      width={size}
      height={size}
      viewBox="0 0 24 24"
      fill="none"
      stroke="currentColor"
      strokeWidth={strokeWidth}
      strokeLinecap="round"
      strokeLinejoin="round"
      className={className}
      style={style}
      {...rest}
    >
      {path}
    </svg>
  );
}

// FMAutoScript logo — monogram square + wordmark
function Logo({ size = 22, withText = false, style = {} }) {
  return (
    <div className="row gap-2" style={{ alignItems: "center", ...style }}>
      <img src="/logo.svg" alt="FMAutoScript" height={size} style={{ flexShrink: 0, filter: "sepia(1) saturate(3) hue-rotate(346deg) brightness(0.7)" }}/>
      {withText && (
        <span className="logo-text">
          FMAuto<span style={{ color: "var(--fg-muted)", fontWeight: 500 }}>Script</span>
        </span>
      )}
    </div>
  );
}

Object.assign(window, { Icon, Logo });
