// Lucide-style icons, matching shadcn's default stroke system
const Icon = ({ d, size = 20, stroke = 'currentColor', sw = 2, fill = 'none', children, ...rest }) => (
  <svg
    width={size} height={size} viewBox="0 0 24 24" fill={fill}
    stroke={stroke} strokeWidth={sw} strokeLinecap="round" strokeLinejoin="round"
    {...rest}
  >{d ? <path d={d} /> : children}</svg>
);

const IconBarcode = (p) => (
  <Icon {...p}><path d="M3 5v14M7 5v14M11 5v10M11 17v2M15 5v14M19 5v14"/></Icon>
);
const IconCamera = (p) => (
  <Icon {...p}>
    <path d="M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3Z"/>
    <circle cx="12" cy="13" r="3.5"/>
  </Icon>
);
const IconCheck = (p) => <Icon {...p} d="M5 12l5 5L20 7"/>;
const IconX = (p) => <Icon {...p} d="M18 6 6 18M6 6l12 12"/>;
const IconChevronLeft = (p) => <Icon {...p} d="M15 18l-6-6 6-6"/>;
const IconChevronRight = (p) => <Icon {...p} d="M9 18l6-6-6-6"/>;
const IconChevronDown = (p) => <Icon {...p} d="M6 9l6 6 6-6"/>;
const IconInfo = (p) => (
  <Icon {...p}><circle cx="12" cy="12" r="10"/><path d="M12 16v-5M12 8h.01"/></Icon>
);
const IconCalendar = (p) => (
  <Icon {...p}>
    <rect x="3" y="4" width="18" height="18" rx="2"/>
    <path d="M16 2v4M8 2v4M3 10h18"/>
  </Icon>
);
const IconMail = (p) => (
  <Icon {...p}>
    <rect x="2" y="4" width="20" height="16" rx="2"/>
    <path d="m22 7-10 6L2 7"/>
  </Icon>
);
const IconPhone = (p) => (
  <Icon {...p}><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.37 1.9.72 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.35 1.85.59 2.81.72A2 2 0 0 1 22 16.92Z"/></Icon>
);
const IconMapPin = (p) => (
  <Icon {...p}><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></Icon>
);
const IconUser = (p) => (
  <Icon {...p}><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></Icon>
);
const IconZap = (p) => <Icon {...p} fill="currentColor" stroke="none" d="M13 2 3 14h7l-1 8 10-12h-7l1-8Z"/>;
const IconFlashOff = (p) => <Icon {...p}><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8Z"/><path d="M2 2l20 20"/></Icon>;
const IconCopy = (p) => (
  <Icon {...p}>
    <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"/>
  </Icon>
);
const IconUpload = (p) => (
  <Icon {...p}><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M17 8l-5-5-5 5M12 3v12"/></Icon>
);
const IconPackage = (p) => (
  <Icon {...p}>
    <path d="m7.5 4.27 9 5.15"/>
    <path d="M21 8L12 3 3 8v8l9 5 9-5V8Z"/>
    <path d="M3.3 7 12 12l8.7-5"/>
    <path d="M12 22V12"/>
  </Icon>
);
const IconGift = (p) => (
  <Icon {...p}>
    <path d="M20 12v10H4V12"/>
    <path d="M2 7h20v5H2z"/>
    <path d="M12 22V7"/>
    <path d="M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7zM12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z"/>
  </Icon>
);
const IconClock = (p) => <Icon {...p}><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></Icon>;
const IconAlertCircle = (p) => <Icon {...p}><circle cx="12" cy="12" r="10"/><path d="M12 8v4M12 16h.01"/></Icon>;
const IconSearch = (p) => <Icon {...p}><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></Icon>;
const IconSparkle = (p) => <Icon {...p}><path d="M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8"/></Icon>;
const IconFileText = (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 2v6h6M16 13H8M16 17H8M10 9H8"/>
  </Icon>
);

function IconWhatsapp({ size = 16, className = '' }) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor" className={className} aria-hidden>
      <path d="M17.6 14.4c-.3-.15-1.77-.87-2.04-.97-.27-.1-.47-.15-.67.15-.2.3-.77.97-.94 1.17-.17.2-.35.22-.64.07-.3-.15-1.26-.46-2.4-1.48-.89-.79-1.48-1.77-1.65-2.07-.17-.3-.02-.46.13-.61.14-.14.3-.35.44-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.02-.52-.07-.15-.67-1.62-.92-2.21-.24-.58-.49-.5-.67-.51-.17-.01-.37-.01-.57-.01-.2 0-.52.07-.79.37-.27.3-1.04 1.02-1.04 2.48 0 1.46 1.07 2.87 1.22 3.07.15.2 2.1 3.21 5.1 4.5 1.22.53 2.17.84 2.91 1.07 1.22.39 2.33.33 3.21.2.98-.15 3.01-1.23 3.43-2.42.42-1.18.42-2.2.3-2.42-.13-.22-.47-.35-.97-.6zM12 2a10 10 0 0 0-8.45 15.36L2 22l4.76-1.5A10 10 0 1 0 12 2z"/>
    </svg>
  );
}

Object.assign(window, {
  IconBarcode, IconCamera, IconCheck, IconX, IconChevronLeft, IconChevronRight, IconChevronDown,
  IconInfo, IconCalendar, IconMail, IconPhone, IconMapPin, IconUser, IconZap, IconFlashOff,
  IconCopy, IconUpload, IconPackage, IconGift, IconClock, IconAlertCircle, IconSearch,
  IconSparkle, IconFileText,
  IconWhatsapp,
});
