// Lucide-style icons rendered as small components. Single-stroke SVGs.
const Icon = ({ size = 16, strokeWidth = 1.75, children, ...rest }) => (
  <svg className="icon" viewBox="0 0 24 24" width={size} height={size} fill="none" stroke="currentColor" strokeWidth={strokeWidth} strokeLinecap="round" strokeLinejoin="round" {...rest}>
    {children}
  </svg>
);

const Icons = {
  Home:    (p) => <Icon {...p}><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2h-4v-7H10v7H6a2 2 0 0 1-2-2z"/></Icon>,
  Dash:    (p) => <Icon {...p}><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></Icon>,
  Users:   (p) => <Icon {...p}><circle cx="9" cy="8" r="4"/><path d="M2 21v-1a6 6 0 0 1 6-6h2"/><circle cx="17" cy="10" r="3"/><path d="M14 21v-1a4 4 0 0 1 4-4h2a4 4 0 0 1 4 4v1"/></Icon>,
  User:    (p) => <Icon {...p}><circle cx="12" cy="8" r="4"/><path d="M4 21v-1a8 8 0 0 1 16 0v1"/></Icon>,
  Calendar:(p) => <Icon {...p}><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></Icon>,
  Clock:   (p) => <Icon {...p}><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></Icon>,
  CheckSq: (p) => <Icon {...p}><path d="M9 11l3 3 7-7"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></Icon>,
  Doc:     (p) => <Icon {...p}><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"/></Icon>,
  Receipt: (p) => <Icon {...p}><path d="M4 2v20l3-2 3 2 3-2 3 2 3-2 V2L18 4l-3-2-3 2-3-2-3 2z"/><path d="M8 8h8M8 12h8M8 16h5"/></Icon>,
  Pipeline:(p) => <Icon {...p}><rect x="3" y="4" width="4" height="16" rx="1"/><rect x="10" y="4" width="4" height="11" rx="1"/><rect x="17" y="4" width="4" height="7" rx="1"/></Icon>,
  Building:(p) => <Icon {...p}><rect x="4" y="3" width="16" height="18" rx="1"/><path d="M9 8h2M13 8h2M9 12h2M13 12h2M9 16h2M13 16h2"/></Icon>,
  Plus:    (p) => <Icon {...p}><path d="M12 5v14M5 12h14"/></Icon>,
  X:       (p) => <Icon {...p}><path d="M18 6L6 18M6 6l12 12"/></Icon>,
  Search:  (p) => <Icon {...p}><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></Icon>,
  Bell:    (p) => <Icon {...p}><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10 21a2 2 0 0 0 4 0"/></Icon>,
  Filter:  (p) => <Icon {...p}><path d="M3 5h18l-7 8v6l-4 2v-8z"/></Icon>,
  Download:(p) => <Icon {...p}><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3"/></Icon>,
  Upload:  (p) => <Icon {...p}><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12"/></Icon>,
  ChevronRight: (p) => <Icon {...p}><path d="M9 18l6-6-6-6"/></Icon>,
  ChevronLeft:  (p) => <Icon {...p}><path d="M15 18l-6-6 6-6"/></Icon>,
  ChevronDown:  (p) => <Icon {...p}><path d="M6 9l6 6 6-6"/></Icon>,
  ArrowUpRight: (p) => <Icon {...p}><path d="M7 17L17 7M7 7h10v10"/></Icon>,
  ArrowRight:   (p) => <Icon {...p}><path d="M5 12h14M12 5l7 7-7 7"/></Icon>,
  ArrowUp: (p) => <Icon {...p}><path d="M12 19V5M5 12l7-7 7 7"/></Icon>,
  ArrowDown:(p) => <Icon {...p}><path d="M12 5v14M19 12l-7 7-7-7"/></Icon>,
  Trend:   (p) => <Icon {...p}><path d="M3 17l6-6 4 4 7-7M14 8h7v7"/></Icon>,
  Settings:(p) => <Icon {...p}><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"/></Icon>,
  More:    (p) => <Icon {...p}><circle cx="12" cy="5" r="1"/><circle cx="12" cy="12" r="1"/><circle cx="12" cy="19" r="1"/></Icon>,
  MoreH:   (p) => <Icon {...p}><circle cx="5" cy="12" r="1"/><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/></Icon>,
  Tool:    (p) => <Icon {...p}><path d="M14.7 6.3a4 4 0 0 0 5 5L21 12a9 9 0 1 1-9-9l.7 1.3a4 4 0 0 0 2 2z"/></Icon>,
  Edit:    (p) => <Icon {...p}><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"/></Icon>,
  Tag:     (p) => <Icon {...p}><path d="M20.6 13.4L13.4 20.6a2 2 0 0 1-2.8 0L2 12V2h10l8.6 8.6a2 2 0 0 1 0 2.8z"/><circle cx="7" cy="7" r="1.2"/></Icon>,
  Check:   (p) => <Icon {...p}><path d="M5 12l5 5L20 6"/></Icon>,
  CheckCircle: (p) => <Icon {...p}><circle cx="12" cy="12" r="10"/><path d="M8 12l3 3 5-6"/></Icon>,
  Eye:     (p) => <Icon {...p}><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></Icon>,
  Phone:   (p) => <Icon {...p}><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3.1-8.7A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7 12.8 12.8 0 0 0 .7 2.8 2 2 0 0 1-.4 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4 12.8 12.8 0 0 0 2.8.7A2 2 0 0 1 22 16.9z"/></Icon>,
  Mail:    (p) => <Icon {...p}><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 6l-10 7L2 6"/></Icon>,
  Whatsapp:(p) => <Icon {...p}><path d="M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.4A10 10 0 1 0 12 2z"/><path d="M9 8c0-.6.5-1 1-1h1c.5 0 1 .4 1.1.9.1.5.3 1.2.6 1.8.1.4 0 .9-.4 1.1l-.6.5c.5 1.2 1.4 2.2 2.5 2.7l.5-.5c.3-.4.8-.5 1.2-.3.6.3 1.3.5 1.8.6.5.1.9.6.9 1.1v1c0 .5-.4 1-1 1A9 9 0 0 1 9 8z"/></Icon>,
  MapPin:  (p) => <Icon {...p}><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 1 1 18 0z"/><circle cx="12" cy="10" r="3"/></Icon>,
  Map:     (p) => <Icon {...p}><path d="M3 6l6-3 6 3 6-3v15l-6 3-6-3-6 3z"/><path d="M9 3v15M15 6v15"/></Icon>,
  Globe:   (p) => <Icon {...p}><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18 14 14 0 0 1 0-18z"/></Icon>,
  Alert:   (p) => <Icon {...p}><path d="M12 9v4M12 17h.01M10.3 3.9l-8.4 14.5A2 2 0 0 0 3.6 21h16.8a2 2 0 0 0 1.7-2.6L13.7 3.9a2 2 0 0 0-3.4 0z"/></Icon>,
  Info:    (p) => <Icon {...p}><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></Icon>,
  Flame:   (p) => <Icon {...p}><path d="M8.5 14.5a4.5 4.5 0 1 0 7 0c0-2.6-2-4.5-3.5-7-1.5 2.5-3.5 4.4-3.5 7z"/><path d="M12 2c.3 1 .3 2 0 3-1 2.5-3 4-3 6.5"/></Icon>,
  Trophy:  (p) => <Icon {...p}><path d="M6 4h12v4a6 6 0 1 1-12 0z"/><path d="M6 6H3a3 3 0 0 0 3 3M18 6h3a3 3 0 0 1-3 3"/><path d="M10 14v4h4v-4M8 22h8"/></Icon>,
  Star:    (p) => <Icon {...p}><path d="M12 2l3 7h7l-6 4.5L18 21l-6-4-6 4 2-7.5L2 9h7z"/></Icon>,
  StarFill:(p) => <svg viewBox="0 0 24 24" width={p?.size || 14} height={p?.size || 14} fill="currentColor"><path d="M12 2l3 7h7l-6 4.5L18 21l-6-4-6 4 2-7.5L2 9h7z"/></svg>,
  Heart:   (p) => <Icon {...p}><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 1L12 21l7.8-7.6 1-1a5.5 5.5 0 0 0 0-7.8z"/></Icon>,
  Bath:    (p) => <Icon {...p}><path d="M4 12h18a0 0 0 0 1 0 0v3a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4v-3z"/><path d="M6 12V6a2 2 0 0 1 4 0M4 19v2M20 19v2"/></Icon>,
  Bed:     (p) => <Icon {...p}><path d="M2 18V8h11a4 4 0 0 1 4 4v6M2 14h20v4M2 21v-3M22 21v-3"/><circle cx="7" cy="11" r="2"/></Icon>,
  Sqm:     (p) => <Icon {...p}><rect x="3" y="3" width="18" height="18" rx="1"/><path d="M3 9h6M9 3v6"/></Icon>,
  Image:   (p) => <Icon {...p}><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="9" cy="9" r="2"/><path d="M21 15l-5-5L5 21"/></Icon>,
  Folder:  (p) => <Icon {...p}><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"/></Icon>,
  Euro:    (p) => <Icon {...p}><path d="M18 4a8 8 0 1 0 0 16M3 10h11M3 14h10"/></Icon>,
  Layout:  (p) => <Icon {...p}><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></Icon>,
  Grid:    (p) => <Icon {...p}><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></Icon>,
  List:    (p) => <Icon {...p}><path d="M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"/></Icon>,
  Send:    (p) => <Icon {...p}><path d="M22 2L11 13M22 2l-7 20-4-9-9-4z"/></Icon>,
  Compass: (p) => <Icon {...p}><circle cx="12" cy="12" r="10"/><path d="M16.2 7.8l-2.4 6.4-6.4 2.4 2.4-6.4z"/></Icon>,
  Crosshair:(p)=> <Icon {...p}><circle cx="12" cy="12" r="9"/><path d="M22 12h-4M6 12H2M12 6V2M12 22v-4"/></Icon>,
  Sparkles:(p) => <Icon {...p}><path d="M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM19 14l.75 2.25L22 17l-2.25.75L19 20l-.75-2.25L16 17l2.25-.75zM5 5l.6 1.8L7.4 7.4 5.6 8l-.6 1.8L4.4 8 2.6 7.4 4.4 6.8z"/></Icon>,
  Lightning:(p)=> <Icon {...p}><path d="M13 2L3 14h7l-1 8 10-12h-7z"/></Icon>,
  ExternalLink:(p)=> <Icon {...p}><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14L21 3"/></Icon>,
  Logout:  (p) => <Icon {...p}><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9"/></Icon>,
  Sun:     (p) => <Icon {...p}><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.5 1.5M17.6 17.6l1.5 1.5M2 12h2M20 12h2M4.9 19.1l1.5-1.5M17.6 6.4l1.5-1.5"/></Icon>,
  Moon:    (p) => <Icon {...p}><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/></Icon>,
};

// Star rating helper
const StarRating = ({ value, max = 5, size = 14 }) => {
  const stars = [];
  for (let i = 0; i < max; i++) {
    const fill = i < value ? "var(--revin-red)" : "var(--border-2)";
    stars.push(
      <svg key={i} className="star" viewBox="0 0 24 24" width={size} height={size} fill={fill} stroke="none"><path d="M12 2l3 7h7l-6 4.5L18 21l-6-4-6 4 2-7.5L2 9h7z"/></svg>
    );
  }
  return <div className="visit-rating">{stars}</div>;
};

window.Icons = Icons;
window.StarRating = StarRating;
