/* EasyFly — SVG icon set (typed). Exports components to window. */
;(() => {
interface IconProps {
  s?: number;
  c?: string;
  style?: React.CSSProperties;
  dir?: "up" | "down" | "left" | "right";
}
type IconCmp = (p: IconProps) => JSX.Element;

const Ic: Record<string, IconCmp> = {};

Ic.Plane = ({ s = 20, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M21 16v-2l-8-5V3.5a1.5 1.5 0 0 0-3 0V9l-8 5v2l8-2.5V18l-2 1.5V21l3.5-1 3.5 1v-1.5L11 18v-4.5l8 2.5Z"
      fill={c} />
  </svg>
);

Ic.PlaneDiag = ({ s = 20, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M2.5 13.5 21 4 13 19.5l-2.6-5.3-2.4 3.1-1.2-.4.5-3.6L2.5 13.5Z" fill={c}/>
  </svg>
);

Ic.Swap = ({ s = 18, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M7 4 4 7l3 3M4 7h13M17 20l3-3-3-3M20 17H7" stroke={c} strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round"/>
  </svg>
);

Ic.Cal = ({ s = 18, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <rect x="3" y="4.5" width="18" height="16" rx="3" stroke={c} strokeWidth="1.7"/>
    <path d="M3 9h18M8 2.5v4M16 2.5v4" stroke={c} strokeWidth="1.7" strokeLinecap="round"/>
  </svg>
);

Ic.User = ({ s = 18, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <circle cx="12" cy="8" r="3.6" stroke={c} strokeWidth="1.7"/>
    <path d="M4.5 20c1.2-3.6 4-5.4 7.5-5.4s6.3 1.8 7.5 5.4" stroke={c} strokeWidth="1.7" strokeLinecap="round"/>
  </svg>
);

Ic.Pin = ({ s = 18, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M12 21c4.5-4.2 7-7.6 7-11a7 7 0 1 0-14 0c0 3.4 2.5 6.8 7 11Z" stroke={c} strokeWidth="1.7"/>
    <circle cx="12" cy="10" r="2.4" stroke={c} strokeWidth="1.7"/>
  </svg>
);

Ic.Search = ({ s = 18, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <circle cx="11" cy="11" r="7" stroke={c} strokeWidth="1.9"/>
    <path d="m20 20-3.6-3.6" stroke={c} strokeWidth="1.9" strokeLinecap="round"/>
  </svg>
);

Ic.Clock = ({ s = 16, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <circle cx="12" cy="12" r="9" stroke={c} strokeWidth="1.7"/>
    <path d="M12 7v5l3.5 2" stroke={c} strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round"/>
  </svg>
);

Ic.Bag = ({ s = 16, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <rect x="5" y="8" width="14" height="12" rx="2.5" stroke={c} strokeWidth="1.7"/>
    <path d="M9 8V6a3 3 0 0 1 6 0v2M9.5 12v4M14.5 12v4" stroke={c} strokeWidth="1.7" strokeLinecap="round"/>
  </svg>
);

Ic.Leaf = ({ s = 15, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M20 4C9 4 4 9.5 4 17c0 1 .2 2 .5 3M5 20C9 10 14 8 20 8c0 7-4.5 12-11 12-1.5 0-3-.5-4-1.2Z"
      stroke={c} strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"/>
  </svg>
);

Ic.Check = ({ s = 16, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="m5 12.5 4.5 4.5L19 6.5" stroke={c} strokeWidth="2.1" strokeLinecap="round" strokeLinejoin="round"/>
  </svg>
);

Ic.Chevron = ({ s = 16, c = "currentColor", style, dir = "down" }: IconProps) => {
  const r: number = { down: 0, up: 180, left: 90, right: -90 }[dir];
  return (
    <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={{ ...style, transform: `rotate(${r}deg)` }}>
      <path d="m6 9 6 6 6-6" stroke={c} strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round"/>
    </svg>
  );
};

Ic.Arrow = ({ s = 16, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M5 12h14M13 6l6 6-6 6" stroke={c} strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round"/>
  </svg>
);

Ic.Shield = ({ s = 18, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M12 3 5 6v5c0 4.5 3 8 7 10 4-2 7-5.5 7-10V6l-7-3Z" stroke={c} strokeWidth="1.6"/>
    <path d="m9 12 2 2 4-4" stroke={c} strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"/>
  </svg>
);

Ic.Wifi = ({ s = 16, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M2 9a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8 16a5 5 0 0 1 8 0" stroke={c} strokeWidth="1.7" strokeLinecap="round"/>
    <circle cx="12" cy="19.5" r="1.3" fill={c}/>
  </svg>
);

Ic.Seat = ({ s = 16, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <path d="M6 4v9a2 2 0 0 0 2 2h7M6 19h11M16 15l1 4M7 15v4" stroke={c} strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round"/>
    <path d="M6 13h9" stroke={c} strokeWidth="1.7" strokeLinecap="round"/>
  </svg>
);

Ic.Card = ({ s = 18, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <rect x="3" y="5" width="18" height="14" rx="2.5" stroke={c} strokeWidth="1.7"/>
    <path d="M3 9.5h18" stroke={c} strokeWidth="1.7"/>
  </svg>
);

Ic.Lock = ({ s = 15, c = "currentColor", style }: IconProps) => (
  <svg width={s} height={s} viewBox="0 0 24 24" fill="none" style={style}>
    <rect x="5" y="10.5" width="14" height="10" rx="2.5" stroke={c} strokeWidth="1.7"/>
    <path d="M8 10.5V8a4 4 0 0 1 8 0v2.5" stroke={c} strokeWidth="1.7"/>
  </svg>
);

window.Ic = Ic;
})();
