const RIcon = ({ name, size = 22, color = 'currentColor', fill = 'none', sw = 1.7 }) => {
  const props = {
    width: size, height: size, viewBox: '0 0 24 24',
    fill, stroke: color, strokeWidth: sw,
    strokeLinecap: 'round', strokeLinejoin: 'round',
  };
  const paths = {
    home: <><path d="M3 10.5L12 3l9 7.5V20a1 1 0 01-1 1h-5v-6h-6v6H4a1 1 0 01-1-1v-9.5z"/></>,
    homeFill: <><path fill={color} stroke="none" d="M3 10.5L12 3l9 7.5V20a1 1 0 01-1 1h-5v-6h-6v6H4a1 1 0 01-1-1v-9.5z"/></>,
    search: <><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></>,
    heart: <><path d="M12 20.5s-7.5-4.5-7.5-10A4.5 4.5 0 0112 6a4.5 4.5 0 017.5 4.5c0 5.5-7.5 10-7.5 10z"/></>,
    heartFill: <><path fill={color} stroke={color} d="M12 20.5s-7.5-4.5-7.5-10A4.5 4.5 0 0112 6a4.5 4.5 0 017.5 4.5c0 5.5-7.5 10-7.5 10z"/></>,
    bookmark: <><path d="M6 3h12v18l-6-4-6 4V3z"/></>,
    bookmarkFill: <><path fill={color} stroke={color} d="M6 3h12v18l-6-4-6 4V3z"/></>,
    user: <><circle cx="12" cy="8" r="4"/><path d="M4 21c0-4.4 3.6-8 8-8s8 3.6 8 8"/></>,
    userFill: <><circle fill={color} stroke="none" cx="12" cy="8" r="4"/><path fill={color} stroke="none" d="M4 21c0-4.4 3.6-8 8-8s8 3.6 8 8H4z"/></>,
    chevronLeft: <><path d="M15 6l-6 6 6 6"/></>,
    chevronRight: <><path d="M9 6l6 6-6 6"/></>,
    chevronDown: <><path d="M6 9l6 6 6-6"/></>,
    chevronUp: <><path d="M6 15l6-6 6 6"/></>,
    arrowLeft: <><path d="M19 12H5M5 12l6-6M5 12l6 6"/></>,
    arrowRight: <><path d="M5 12h14M14 6l6 6-6 6"/></>,
    star: <><path d="M12 3l2.9 5.9 6.5.9-4.7 4.6 1.1 6.5L12 17.8 6.2 21l1.1-6.5L2.6 9.8l6.5-.9L12 3z"/></>,
    starFill: <><path fill={color} stroke={color} d="M12 3l2.9 5.9 6.5.9-4.7 4.6 1.1 6.5L12 17.8 6.2 21l1.1-6.5L2.6 9.8l6.5-.9L12 3z"/></>,
    pin: <><path d="M12 21s-7-7-7-12a7 7 0 0114 0c0 5-7 12-7 12z"/><circle cx="12" cy="9" r="2.5"/></>,
    bed: <><path d="M3 18v-7h18v7M3 14h18M6 11V8a2 2 0 012-2h8a2 2 0 012 2v3M3 18v2M21 18v2"/></>,
    bath: <><path d="M3 11h18v2a5 5 0 01-5 5H8a5 5 0 01-5-5v-2zM7 11V6a2 2 0 012-2h1a2 2 0 012 2M6 19l-1 2M18 19l1 2"/></>,
    ruler: <><path d="M3 9h18v6H3zM7 9v3M11 9v4M15 9v3M19 9v4"/></>,
    filter: <><path d="M3 6h18M6 12h12M10 18h4"/></>,
    sliders: <><path d="M4 6h8M16 6h4M4 12h2M10 12h10M4 18h12M20 18h0"/><circle cx="14" cy="6" r="2"/><circle cx="8" cy="12" r="2"/><circle cx="18" cy="18" r="2"/></>,
    calendar: <><rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 10h18M8 3v4M16 3v4"/></>,
    map: <><path d="M9 4l-6 2v14l6-2m0-14l6 2m-6-2v14m6-12l6-2v14l-6 2m0-14v14"/></>,
    plus: <><path d="M12 5v14M5 12h14"/></>,
    minus: <><path d="M5 12h14"/></>,
    close: <><path d="M6 6l12 12M18 6l-12 12"/></>,
    share: <><circle cx="6" cy="12" r="2.5"/><circle cx="18" cy="6" r="2.5"/><circle cx="18" cy="18" r="2.5"/><path d="M8.5 10.5l7-3M8.5 13.5l7 3"/></>,
    bell: <><path d="M6 9a6 6 0 0112 0v4l2 3H4l2-3V9zM10 19a2 2 0 004 0"/></>,
    globe: <><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 010 18M12 3a14 14 0 000 18"/></>,
    eye: <><path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z"/><circle cx="12" cy="12" r="3"/></>,
    check: <><path d="M4 12l5 5 11-11"/></>,
    sparkle: <><path d="M12 3v6M12 15v6M3 12h6M15 12h6M5.6 5.6l4.2 4.2M14.2 14.2l4.2 4.2M18.4 5.6l-4.2 4.2M9.8 14.2l-4.2 4.2"/></>,
    sun: <><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4 12H2M22 12h-2M5.6 5.6L4.2 4.2M19.8 19.8l-1.4-1.4M18.4 5.6l1.4-1.4M4.2 19.8l1.4-1.4"/></>,
    palm: <><path d="M12 22V10M12 10c-3-2-7-1-7-1s1 3 4 3M12 10c3-2 7-1 7-1s-1 3-4 3M12 10c-1-3-5-4-5-4s-1 3 2 5M12 10c1-3 5-4 5-4s1 3-2 5M12 10c0-3 3-6 3-6s3 2 1 6"/></>,
    utensils: <><path d="M6 3v8a3 3 0 006 0V3M9 3v18M15 3c-2 0-3 4-3 7s1 4 3 4v7"/></>,
    shopping: <><path d="M4 7h16l-1.5 12a2 2 0 01-2 1.7H7.5a2 2 0 01-2-1.7L4 7zM9 7V5a3 3 0 016 0v2"/></>,
    activity: <><path d="M3 13l4-4 4 4 5-5 5 5M3 13v6h18v-6"/></>,
    medical: <><rect x="4" y="6" width="16" height="14" rx="2"/><path d="M12 10v6M9 13h6M8 6V4h8v2"/></>,
    wifi: <><path d="M2 8.5a15 15 0 0120 0M5 12a10 10 0 0114 0M8.5 15.5a5 5 0 017 0"/><circle cx="12" cy="19" r="1" fill={color}/></>,
    ac: <><path d="M12 2v20M2 12h20M5 5l14 14M19 5L5 19"/></>,
    parking: <><rect x="4" y="4" width="16" height="16" rx="2"/><path d="M10 16V8h3a2.5 2.5 0 010 5h-3"/></>,
    pool: <><path d="M2 17c2 0 2-1 4-1s2 1 4 1 2-1 4-1 2 1 4 1 2-1 4-1M2 21c2 0 2-1 4-1s2 1 4 1 2-1 4-1 2 1 4 1 2-1 4-1M8 13V5a2 2 0 012-2M16 13V5a2 2 0 00-2-2M8 9h8"/></>,
    shield: <><path d="M12 2l8 3v7c0 5-4 8-8 10-4-2-8-5-8-10V5l8-3z"/></>,
    phone: <><path d="M5 4h4l2 5-2.5 1.5a11 11 0 005 5L15 13l5 2v4a2 2 0 01-2 2A16 16 0 013 6a2 2 0 012-2z"/></>,
    message: <><path d="M4 5h16v11H9l-5 4V5z"/></>,
    logout: <><path d="M10 17l5-5-5-5M15 12H3M12 3h7a2 2 0 012 2v14a2 2 0 01-2 2h-7"/></>,
    language: <><path d="M5 5h10M10 5v12M6 12h8M14 14l3 7 3-7M14 14h6M15 17h4"/></>,
    mic: <><rect x="9" y="3" width="6" height="12" rx="3"/><path d="M5 11a7 7 0 0014 0M12 18v3"/></>,
    grid: <><rect x="4" y="4" width="7" height="7" rx="1"/><rect x="13" y="4" width="7" height="7" rx="1"/><rect x="4" y="13" width="7" height="7" rx="1"/><rect x="13" y="13" width="7" height="7" rx="1"/></>,
    list: <><path d="M3 6h18M3 12h18M3 18h18"/></>,
    key: <><circle cx="8" cy="15" r="4"/><path d="M10.8 12.2L20 3M16 7l3 3M13 10l3 3"/></>,
    wallet: <><path d="M3 7a2 2 0 012-2h14v4H5a2 2 0 01-2-2zM3 7v10a2 2 0 002 2h16V9H5a2 2 0 01-2-2z"/><circle cx="17" cy="14" r="1" fill={color}/></>,
    flame: <><path d="M12 3s4 5 4 9a4 4 0 11-8 0c0-2 1-3 1-5s3-4 3-4zM9 16a3 3 0 006 0"/></>,
    compass: <><circle cx="12" cy="12" r="9"/><path d="M15.5 8.5l-2 5-5 2 2-5 5-2z"/></>,
  };

  return <svg {...props}>{paths[name] || null}</svg>;
};

window.RIcon = RIcon;
