import React from 'react';

type IconProps = {
    name: string;
    size?: number;
    stroke?: number;
    className?: string;
    style?: React.CSSProperties;
};

const P: Record<string, React.ReactNode> = {
    dashboard: <><rect x="3" y="3" width="7" height="9" rx="1.5" /><rect x="14" y="3" width="7" height="5" rx="1.5" /><rect x="14" y="12" width="7" height="9" rx="1.5" /><rect x="3" y="16" width="7" height="5" rx="1.5" /></>,
    income: <><path d="M12 2v20" /><path d="M17 6.5C17 4.6 14.8 3.5 12 3.5S7 4.6 7 6.5s2.2 3 5 3.5 5 1.5 5 4-2.2 3.5-5 3.5-5-1.4-5-3.5" /></>,
    quote: <><path d="M5 3h9l5 5v13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z" /><path d="M14 3v5h5" /><path d="M8 13h8M8 17h5" /></>,
    invoice: <><path d="M6 2h9l4 4v15.5L16.5 20 14 22l-2.5-2L9 22l-2.5-2L4 21.5V4a2 2 0 0 1 2-2Z" /><path d="M8 8h6M8 12h8M8 16h5" /></>,
    receipt: <><path d="M5 21V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v17l-3-2-3 2-3-2-3 2Z" /><path d="M9 8h6M9 12h6" /></>,
    expense: <><circle cx="12" cy="12" r="9" /><path d="M8 12h8" /></>,
    staff: <><circle cx="9" cy="8" r="3.2" /><path d="M3.5 20a5.5 5.5 0 0 1 11 0" /><path d="M16 4.5a3.2 3.2 0 0 1 0 6.4" /><path d="M17.5 14.5A5.5 5.5 0 0 1 21 20" /></>,
    salary: <><rect x="2.5" y="6" width="19" height="12" rx="2" /><circle cx="12" cy="12" r="2.6" /><path d="M6 9.5v5M18 9.5v5" /></>,
    resource: <><path d="M12 2 3 7l9 5 9-5-9-5Z" /><path d="m3 12 9 5 9-5M3 17l9 5 9-5" /></>,
    contact: <><rect x="3" y="5" width="18" height="14" rx="2" /><circle cx="9" cy="11" r="2.2" /><path d="M5.5 16.5a3.5 3.5 0 0 1 7 0" /><path d="M15 9h4M15 13h4" /></>,
    product: <><path d="M21 8 12 3 3 8v8l9 5 9-5V8Z" /><path d="m3 8 9 5 9-5M12 13v8" /></>,
    shareholder: <><circle cx="12" cy="12" r="9" /><path d="M12 12V3a9 9 0 0 1 7.8 4.5L12 12Z" /></>,
    loan: <><rect x="2.5" y="5" width="19" height="14" rx="2" /><path d="M2.5 9.5h19" /><path d="M6 14h4" /></>,
    accounting: <><rect x="4" y="3" width="16" height="18" rx="2" /><path d="M8 3v18" /><path d="M11.5 7h6M11.5 11h6M11.5 15h3" /></>,
    balance: <><path d="M12 3v18" /><path d="M5 7h14" /><path d="M5 7 2.5 13a3 3 0 0 0 5 0L5 7ZM19 7l-2.5 6a3 3 0 0 0 5 0L19 7Z" /><path d="M8 21h8" /></>,
    news: <><path d="M4 5a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v14a2 2 0 0 0 2 2H6a2 2 0 0 1-2-2V5Z" /><path d="M17 8h2a1 1 0 0 1 1 1v10a2 2 0 0 1-2 2" /><path d="M8 8h5M8 12h5M8 16h3" /></>,
    search: <><circle cx="11" cy="11" r="7" /><path d="m20 20-3.2-3.2" /></>,
    filter: <><path d="M3 5h18l-7 8v6l-4 2v-8L3 5Z" /></>,
    plus: <><path d="M12 5v14M5 12h14" /></>,
    bell: <><path d="M18 8a6 6 0 1 0-12 0c0 7-3 8-3 8h18s-3-1-3-8Z" /><path d="M10.5 21a2 2 0 0 0 3 0" /></>,
    chevron: <><path d="m9 6 6 6-6 6" /></>,
    chevronDown: <><path d="m6 9 6 6 6-6" /></>,
    arrowUp: <><path d="M12 19V5M6 11l6-6 6 6" /></>,
    arrowDown: <><path d="M12 5v14M6 13l6 6 6-6" /></>,
    download: <><path d="M12 3v12M7 11l5 5 5-5" /><path d="M5 21h14" /></>,
    more: <><circle cx="5" cy="12" r="1.4" /><circle cx="12" cy="12" r="1.4" /><circle cx="19" cy="12" r="1.4" /></>,
    settings: <><circle cx="12" cy="12" r="3" /><path d="M19.4 14a1.5 1.5 0 0 0 .3 1.7l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.5 1.5 0 0 0-2.5 1V20a2 2 0 1 1-4 0v-.1a1.5 1.5 0 0 0-2.5-1l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.5 1.5 0 0 0-1-2.5H4a2 2 0 1 1 0-4h.1a1.5 1.5 0 0 0 1-2.5l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.5 1.5 0 0 0 2.5-1V4a2 2 0 1 1 4 0v.1a1.5 1.5 0 0 0 2.5 1l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.5 1.5 0 0 0 1 2.5H20a2 2 0 1 1 0 4h-.1a1.5 1.5 0 0 0-1.4 1Z" /></>,
    shield: <><path d="M12 3l7.5 3v5.5c0 4.6-3.1 8.4-7.5 10-4.4-1.6-7.5-5.4-7.5-10V6L12 3Z" /></>,
    key: <><circle cx="8" cy="12" r="4.2" /><path d="M12 12h9" /><path d="M17.5 12v3.5M20.5 12v2.5" /></>,
    copy: <><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5a2 2 0 0 1 2-2h8" /></>,
    trash: <><path d="M4 7h16" /><path d="M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2" /><path d="M6 7v13a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V7" /><path d="M10 11v6M14 11v6" /></>,
    power: <><path d="M12 3v9" /><path d="M18.4 6.6a9 9 0 1 1-12.8 0" /></>,
    check: <><path d="m5 12 5 5L20 7" /></>,
    clock: <><circle cx="12" cy="12" r="9" /><path d="M12 7v5l3 2" /></>,
    calendar: <><rect x="3" y="4" width="18" height="17" rx="2" /><path d="M3 9h18M8 2v4M16 2v4" /></>,
    wallet: <><path d="M3 7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v0H5" /><path d="M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-3" /><path d="M21 11h-5a1.5 1.5 0 0 0 0 3h5v-3Z" /></>,
    send: <><path d="M22 2 11 13M22 2l-7 20-4-9-9-4 20-7Z" /></>,
    print: <><path d="M6 9V3h12v6M6 18H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-2" /><rect x="6" y="14" width="12" height="7" rx="1" /></>,
    edit: <><path d="M12 20h9" /><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5Z" /></>,
    trend: <><path d="M3 17l6-6 4 4 7-8" /><path d="M21 7h-4M21 7v4" /></>,
    menu: <><path d="M4 7h16M4 12h16M4 17h16" /></>,
    logout: <><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" /><path d="M16 17l5-5-5-5" /><path d="M21 12H9" /></>,
    eye: <><path d="M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12Z" /><circle cx="12" cy="12" r="3" /></>,
    eyeOff: <><path d="M3 3l18 18" /><path d="M10.6 6.2A9.7 9.7 0 0 1 12 6c6.4 0 10 6 10 6a16 16 0 0 1-3 3.5M6.3 7.8A16 16 0 0 0 2 12s3.6 7 10 7a9.6 9.6 0 0 0 3.7-.7" /><path d="M9.5 10.4a3 3 0 0 0 4.1 4.2" /></>,
    x: <><path d="M6 6l12 12M18 6 6 18" /></>,
};

export const Icon = ({ name, size = 18, stroke = 1.7, className = '', style }: IconProps) => (
    <svg
        width={size} height={size} viewBox="0 0 24 24" fill="none"
        stroke="currentColor" strokeWidth={stroke}
        strokeLinecap="round" strokeLinejoin="round"
        className={className} style={style}
    >
        {P[name] || P.dashboard}
    </svg>
);

export default Icon;
