Загрузка данных


import { AddFileIcon } from './AddFile';
import { AddPlusIcon } from './AddPlusIcon';
import { AlertIcon } from './Alert';
import { AllowClearIcon } from './AllowClearIcon';
import { ArrowBackMini } from './ArrowBackMini';
import { ArrowBottom } from './ArrowBottom';
import { ArrowCollapse } from './ArrowCollapse';
import { ArrowDownMad } from './ArrowDownMad';
import { ArrowForChat } from './ArrowForChat';
import { ArrowForward } from './ArrowForward';
import { ArrowLeft } from './ArrowLeft';
import { ArrowRight } from './ArrowRight';
import { ArrowRightLight } from './ArrowRightLight';
import { ArrowUpMad } from './ArrowUpMad';
import { BarChartIcon } from './BarChartIcon';
import { Bookmark } from './BookmarkIcon';
import { ButtonLoadingSpinner } from './ButtonLoadingSpinner';
import { CalculatorIcon } from './CalculatorIcon';
import { CalendarIcon } from './Calendar';
import { Chart2Icon } from './Chart2';
import { ChartSquareIcon } from './ChartSquare';
import { ChartSquare2Icon } from './ChartSquare2';
import { ChatBubbleOutlined } from './ChatBubbleOutlined';
import { ChatGroup } from './ChatGroup';
import { ChatSquareIcon } from './ChatSquareIcon';
import { CheckCircle2 } from './CheckCircle2';
import { CheckedView } from './CheckedView';
import { CheckIcon } from './CheckIcon';
import { CheckIconCurrentColor } from './CheckIconCurrentColor';
import { ChevronDown } from './ChevronDown';
import { ChevronLeftMax } from './ChevronLeftMax';
import { ChevronLeftRounded } from './ChevronLeftRounded';
import { ChevronRight } from './ChevronRight';
import { ChevronRightMax } from './ChevronRightMax';
import { ChevronRightRounded } from './ChevronRightRounded';
import { ClearIcon } from './ClearIcon';
import { ClearInputIcon } from './ClearInputIcon';
import { CloseCircleIcon } from './CloseCircle';
import { CloseIcon } from './CloseIcon';
import { CloseMenuIcon } from './CloseMenuIcon';
import { CommentMessage } from './CommentMessage';
import { CommentAlt } from './CommnetAltIcon';
import { CopyIcon } from './Copy';
import { CopyrightIcon } from './CopyrightIcon';
import { CreateFolderIcon } from './CreateFolderIcon';
import { DangerIcon } from './DangerIcon';
import { DeleteOutline } from './DeleteOutline';
import { DiagramUpIcon } from './DiagramUp';
import { DragNDropIcon } from './DragNDropIcon';
import { EllipsisVerticalIcon } from './EllipsisVerticalIcon';
import { EmptyFolderIcon } from './EmptyFolderIcon';
import { EmptyStateIcon } from './EmptyState';
import { Error } from './Error';
import { EventAvailable } from './EventAvailable';
import { ExcelIcon } from './ExcelIcon';
import { ExcelIconFilled } from './ExcelIconFilled';
import { ExpandMoreIcon } from './ExpandMoreIcon';
import { ExpandTableIcon } from './ExpandTableIcon';
import { ExportIcon } from './ExportIcon';
import { EyeHiddenIcon } from './EyeHiddenIcon';
import { FileBig } from './FileBig';
import { FileIcon } from './FileIcon';
import { FilterTableIcon } from './FilterTableIcon';
import { China } from './Flags/China';
import { Eur } from './Flags/Eur';
import { India } from './Flags/India';
import { Turkey } from './Flags/Turkey';
import { Usa } from './Flags/Usa';
import { Flash } from './Flash';
import { Forward } from './Forward';
import { FullScreenIcon } from './FullScreenIcon';
import { GraphIcon } from './Graph';
import { GraphicNewIcon } from './GraphicNew';
import { GraphicPieIcon } from './GraphicPieIcon';
import { GroupAdd } from './GroupAdd';
import { GroupChatIcon } from './GroupChatIcon';
import { HalfBellIcon } from './HalfBell';
import { HelpIcon } from './HelpIcon';
import { ImageIcon } from './ImageIcon';
import { InfoIcon } from './InfoIcon';
import { InfoIcon2 } from './InfoIcon2';
import { InstallDesktop } from './InstallDesktop';
import { LaptopChromebookIcon } from './LaptopChromebookIcon';
import { LightningIcon } from './LightningIcon';
import { ListIcon } from './ListIcon';
import { LockClose } from './LockClose';
import { LockOpenIcon } from './LockOpen';
import { LogoutIcon } from './Logout';
import { MOEXLogoIcon } from './MOEXLogo';
import { MoreVertIcon } from './MoreVertIcon';
import { MultilineChartIcon } from './MultilineChartIcon';
import { NewClearInputIcon } from './NewClearInputIcon';
import { NewPlusIcon } from './NewPlusIcon';
import { NewSearchIcon } from './NewSearchIcon';
import { NewSelectArrowDown } from './NewSelectArrowDown';
import { NodeArrowDown } from './NodeArrowDown';
import { OneColumn } from './OneColumn';
import { OrderIcon } from './OrderIcon';
import { OutlineTrashIcon } from './OutlineTrash';
import { PenIcon } from './Pen';
import { PersonAdd } from './PersonAdd';
import { PersonIcon } from './PersonIcon';
import { PinIcon } from './PinIcon';
import { PircturePreview } from './PircturePreview';
import { PlusIconRaw } from './PlusIconRaw';
import { Refresh } from './Refresh';
import { RefreshIcon } from './RefreshIcon';
import { RefreshIcon2 } from './RefreshIcon2';
import { RemoveMinusIcon } from './RemoveMinusIcon';
import { ReplayIcon } from './ReplayIcon';
import { Reply } from './Reply';
import { RIcon } from './RIcon';
import { RoundedClose } from './RoundedClose';
import { SaveIcon } from './SaveIcon';
import { SearchIcon } from './SearchIcon';
import { SearchIconMad } from './SearchIconMad';
import { SelectArrowDown } from './SelectArrowDown';
import { Send } from './Send';
import { SettingsButtonIcon } from './SettingsButtonIcon';
import { SettingsIcon } from './SettingsIcon';
import { SettingsSliderIcon } from './SettingsSlider';
import { ShareForwardFilled, ShareForwardSVG } from './ShareForward';
import { ShareIOSIcon } from './ShareIOS';
import { ShowChart } from './ShowChart';
import { SortDown } from './SortDown';
import { SortUp } from './SortUp';
import { StartIcon } from './StartIcon';
import { StopSign } from './StopSign';
import { TableChartIcon } from './TableChartIcon';
import { TechSupportIcon } from './TechSupportIcon';
import { TextFormat } from './TextFormat';
import { ThreeColumn } from './ThreeColumn';
import { ToBottomIcon } from './ToBottomIcon';
import { TrashIcon } from './Trash';
import { Triangle } from './Triangle';
import { Tuning2Icon } from './Tuning2';
import { TwoColumns } from './TwoColumns';
import { UploadImage } from './UploadImage';
import { UsersGroupTwoRoundedIcon } from './UsersGroupTwoRounded';
import { VerifiedUserIcon } from './VerifiedUserIcon';
import { VisibilityIcon } from './VisibilityIcon';
import { WadOfMoneyIcon } from './WadOfMoneyIcon';
import { WarnIcon } from './WarnIcon';
import { WarningIcon } from './Warning';
import { Warning2 } from './Warning2';
import { WarningSharpIcon } from './WarningSharpIcon';
import { WarningTriangleIcon } from './WarningTriangleIcon';
import { WarningCircleIcon } from './WarningСircleIcon';
import { WarnSign } from './WarnSign';
import { WidgetBindIcon } from './WidgetBindIcon';
import { WidgetPreview } from './WidgetPreview';
import { ZoomInMap } from './ZoomInMap';
import { ZoomOutMap } from './ZoomOutMap';

export default {
  ClearIcon,
  Send,
  StartIcon,
  PlusIconRaw,
  OneColumn,
  TwoColumns,
  TableChartIcon,
  TextFormat,
  ThreeColumn,
  CheckedView,
  GraphicPieIcon,
  CommentAlt,
  SettingsSliderIcon,
  CalculatorIcon,
  MOEXLogoIcon,
  SearchIcon,
  SettingsIcon,
  CloseIcon,
  Error,
  EventAvailable,
  GraphicNewIcon,
  Bookmark,
  ExportIcon,
  Tuning2Icon,
  WadOfMoneyIcon,
  UsersGroupTwoRoundedIcon,
  ChatSquareIcon,
  ChartSquareIcon,
  DiagramUpIcon,
  LockOpenIcon,
  LockClose,
  GraphIcon,
  ChartSquare2Icon,
  PenIcon,
  CloseCircleIcon,
  CopyIcon,
  LogoutIcon,
  CloseMenuIcon,
  ChevronRight,
  WidgetPreview,
  HelpIcon,
  CopyrightIcon,
  NewSearchIcon,
  NewPlusIcon,
  PinIcon,
  ChevronDown,
  WidgetBindIcon,
  DangerIcon,
  LaptopChromebookIcon,
  SortDown,
  SortUp,
  ArrowDownMad,
  ArrowUpMad,
  MoreVertIcon,
  MultilineChartIcon,
  SelectArrowDown,
  DragNDropIcon,
  SearchIconMad,
  UploadImage,
  ChatGroup,
  NodeArrowDown,
  FilterTableIcon,
  CheckIcon,
  AddFileIcon,
  RIcon,
  CheckIconCurrentColor,
  BarChartIcon,
  Usa,
  Eur,
  China,
  India,
  Turkey,
  WarningCircleIcon,
  WarningTriangleIcon,
  Refresh,
  ButtonLoadingSpinner,
  NewSelectArrowDown,
  GroupChatIcon,
  CommentMessage,
  WarningIcon,
  Warning2,
  ArrowBackMini,
  EmptyStateIcon,
  ExpandTableIcon,
  AddPlusIcon,
  RemoveMinusIcon,
  ReplayIcon,
  NewClearInputIcon,
  WarnSign,
  SettingsButtonIcon,
  SaveIcon,
  OutlineTrashIcon,
  ShowChart,
  AlertIcon,

  AllowClearIcon,
  ArrowBottom,
  ArrowCollapse,
  ArrowForChat,
  ArrowForward,
  ArrowLeft,
  ArrowRight,
  ArrowRightLight,
  Chart2Icon,
  ChatBubbleOutlined,
  CheckCircle2,
  ChevronLeftMax,
  ChevronLeftRounded,
  ChevronRightMax,
  ChevronRightRounded,
  ClearInputIcon,
  ExcelIcon,
  ExcelIconFilled,
  ExpandMoreIcon,
  FileBig,
  FileIcon,
  Flash,
  Forward,
  FullScreenIcon,
  ImageIcon,
  InfoIcon,
  InfoIcon2,
  InstallDesktop,
  LightningIcon,
  ListIcon,
  OrderIcon,
  PircturePreview,
  WarningSharpIcon,
  WarnIcon,
  VerifiedUserIcon,
  ToBottomIcon,
  TrashIcon,
  Triangle,
  StopSign,
  ShareForwardFilled,
  // ShareForwardSVG,
  RoundedClose,
  Reply,
  RefreshIcon,
  RefreshIcon2,
  VisibilityIcon,
  EyeHiddenIcon,
  EllipsisVerticalIcon,
  ShareIOSIcon,
  PersonIcon,
  ZoomInMap,
  ZoomOutMap,

  CalendarIcon,
  CreateFolderIcon,
  DeleteOutline,
  EmptyFolderIcon,
  GroupAdd,
  HalfBellIcon,
  PersonAdd,
  TechSupportIcon,
};



import { CSSProperties } from 'react';

/** deprecated */
export enum IconVariants {
  EMAIL_OUTLINED = 'email-outlined',
  FILE_COPY_OUTLINED = 'file-copy-outlined',
  COMPARE_ARROWS_ROUNDED = 'compare-arrows-rounded',
  FORUM_OUTLINED = 'forum-outlined',
  PHONE_OUTLINED = 'phone-outlined',
  HEADSET_MIC_OUTLINED = 'headset-mic-outlined',
  POST_ADD_OUTLINED = 'post-add-outlined',
  SEND_ROUNDED = 'send-rounded',
  MOVE_TO_INBOX_ROUNDED = 'move-to-inbox-rounded',
  PRINT_OUTLINED = 'print-outlined',
  BLOCK_ROUNDED = 'block-rounded',
  LINK_ROUNDED = 'link-rounded',
  PERSON_ADD_OUTLINED = 'person-add-outlined',
  CALCULATE = 'calculate',
  CHEVRON_LEFT_OUTLINED = 'chevron-left-outlined',
  MY_MESSAGE_STATE_SENT = 'my-message-state-sent',
  MY_MESSAGE_STATE_DELIVERED = 'my-message-state-delivered',
  INFO_OUTLINED = 'info-outlined',
}

export type IconVariant =
  | 'chart-column-decreasing'
  | 'ban'
  | 'bell'
  | 'bookmark'
  | 'calculator'
  | 'calendar-check-2'
  | 'calendar'
  | 'chart-line'
  | 'chart-pie'
  | 'check'
  | 'chevron-up'
  | 'chevron-down'
  | 'chevron-left'
  | 'chevron-right'
  | 'circle-minus'
  | 'circle-question-mark'
  | 'columns-2'
  | 'columns-3'
  | 'circle-x'
  | 'copy'
  | 'copyright'
  | 'ellipsis-vertical'
  | 'expand'
  | 'eye-closed'
  | 'eye'
  | 'file-plus-corner'
  | 'file-up'
  | 'file-x'
  | 'file'
  | 'folder-plus'
  | 'forward'
  | 'fullscreen'
  | 'headset'
  | 'image'
  | 'inbox'
  | 'info'
  | 'laptop-minimal'
  | 'link-2'
  | 'list'
  | 'lock-open'
  | 'lock'
  | 'log-out'
  | 'mail'
  | 'message-square-text'
  | 'message-square'
  | 'messages-square'
  | 'monitor-down'
  | 'pencil'
  | 'phone'
  | 'pin'
  | 'plus'
  | 'printer'
  | 'refresh-cw'
  | 'reply'
  | 'rotate-ccw'
  | 'rotate-cw'
  | 'search'
  | 'send-horizontal'
  | 'settings'
  | 'share'
  | 'shield-check'
  | 'shrink'
  | 'square-split-horizontal'
  | 'square'
  | 'table-2'
  | 'trash-2'
  | 'triangle-alert'
  | 'underline'
  | 'user-group-plus'
  | 'user-plus'
  | 'user-round'
  | 'users'
  | 'x'
  | 'zap'
  | 'arrow-right-left'
  | 'arrow-left'
  | 'chart-no-axes-column-increasing'
  | 'chart-no-axes-combined'
  | 'circle-alert'
  | 'circle-arrow-right'
  | 'circle-check'
  | 'circle-chevron-left'
  | 'circle-chevron-right'
  | 'image-plus'
  | 'list-filter'
  | 'list-sort-ascending'
  | 'list-sort-descending'
  | 'loader-circle'
  | 'menu'
  | 'minus'
  | 'move-down'
  | 'move-up'
  | 'paperclip'
  | 'save'
  | 'megaphone';

export interface IconProps {
  variant: IconVariant;
  size?: 16 | 24 | 'original';
  className?: string;
  style?: CSSProperties;
  onClick?: (e: React.MouseEvent) => void;
}


import {
  ArrowLeft,
  ArrowRightLeft,
  Ban,
  Bell,
  Bookmark,
  Calculator,
  Calendar,
  CalendarCheck,
  ChartColumnDecreasing,
  ChartLine,
  ChartNoAxesColumnIncreasing,
  ChartNoAxesCombined,
  ChartPie,
  Check,
  ChevronDown,
  ChevronLeft,
  ChevronRight,
  ChevronUp,
  CircleAlert,
  CircleArrowRight,
  CircleCheck,
  CircleChevronLeft,
  CircleChevronRight,
  CircleMinus,
  CircleQuestionMark,
  CircleX,
  Columns2,
  Columns3,
  Copy,
  Copyright,
  EllipsisVertical,
  Expand,
  Eye,
  EyeClosed,
  File,
  FilePlusCorner,
  FileUp,
  FileX,
  FolderPlus,
  Forward,
  Fullscreen,
  Headset,
  Image,
  ImagePlus,
  Inbox,
  Info,
  LaptopMinimal,
  Link,
  List,
  ListFilter,
  ListSortAscending,
  ListSortDescending,
  LoaderCircle,
  Lock,
  LockOpen,
  LogOut,
  Mail,
  Megaphone,
  Menu,
  MessageSquare,
  MessageSquareText,
  MessagesSquare,
  Minus,
  MonitorDown,
  MoveDown,
  MoveUp,
  Paperclip,
  Pencil,
  Phone,
  Pin,
  Plus,
  Printer,
  RefreshCw,
  Reply,
  RotateCcw,
  RotateCw,
  Save,
  Search,
  SendHorizontal,
  Settings,
  Share,
  ShieldCheck,
  Shrink,
  Square,
  SquareSplitHorizontal,
  Table2,
  Trash2,
  TriangleAlert,
  Underline,
  UserPlus,
  UserRound,
  Users,
  X,
  Zap,
} from 'lucide-react';

import { ReactComponent as InfoOutlined } from '../../../public/project-icons/info/info-outlined.svg';

import { ReactComponent as BlockRounded } from './icons/migration/block/block-rounded.svg';
import { ReactComponent as Calculate } from './icons/migration/calculate/calculate.svg';
import { ReactComponent as ChevronLeftOutlined } from './icons/migration/chevron-left/chevron-left-outlined.svg';
import { ReactComponent as CompareArrowsRounded } from './icons/migration/compare-arrows/compare-arrows-rounded.svg';
import { ReactComponent as EmailOutLined } from './icons/migration/email/email-outlined.svg';
import { ReactComponent as FileCopyOutlined } from './icons/migration/file-copy/file-copy-outlined.svg';
import { ReactComponent as ForumOutlined } from './icons/migration/forum/forum-outlined.svg';
import { ReactComponent as HeadsetMicOutlined } from './icons/migration/headset-mic/headset-mic-outlined.svg';
import { ReactComponent as LinkRounded } from './icons/migration/link/link-rounded.svg';
import { ReactComponent as MoveToInboxRounded } from './icons/migration/move-to-inbox/move-to-inbox-rounded.svg';
import { ReactComponent as MyMsgStateDlvrd } from './icons/migration/my-message-state/my-message-state-delivered.svg';
import { ReactComponent as MyMessageStateSent } from './icons/migration/my-message-state/my-message-state-sent.svg';
import { ReactComponent as PersonAddOutlined } from './icons/migration/person-add/person-add-outlined.svg';
import { ReactComponent as PhoneOutlined } from './icons/migration/phone/phone-outlined.svg';
import { ReactComponent as PostAddOutlined } from './icons/migration/post-add/post-add-outlined.svg';
import { ReactComponent as PrintOutlined } from './icons/migration/print/print-outlined.svg';
import { ReactComponent as SendRounded } from './icons/migration/send/send-rounded.svg';

import { ReactComponent as UserGroupPlus } from './icons/user-group-plus.svg';

import { IconVariant, IconVariants } from './types';

export const ICON_MAP: Record<IconVariant, React.FC<React.SVGProps<SVGSVGElement>>> = {
  'chart-column-decreasing': ChartColumnDecreasing,
  bell: Bell,
  ban: Ban,
  bookmark: Bookmark,
  calculator: Calculator,
  'calendar-check-2': CalendarCheck,
  calendar: Calendar,
  'chart-line': ChartLine,
  'chart-pie': ChartPie,
  check: Check,
  'chevron-down': ChevronDown,
  'chevron-up': ChevronUp,
  'chevron-left': ChevronLeft,
  'chevron-right': ChevronRight,
  'circle-minus': CircleMinus,
  'circle-question-mark': CircleQuestionMark,
  'circle-x': CircleX,
  'columns-2': Columns2,
  'columns-3': Columns3,
  copy: Copy,
  copyright: Copyright,
  'ellipsis-vertical': EllipsisVertical,
  expand: Expand,
  'eye-closed': EyeClosed,
  eye: Eye,
  'file-plus-corner': FilePlusCorner,
  'file-up': FileUp,
  'file-x': FileX,
  file: File,
  'folder-plus': FolderPlus,
  forward: Forward,
  fullscreen: Fullscreen,
  headset: Headset,
  image: Image,
  inbox: Inbox,
  info: Info,
  'laptop-minimal': LaptopMinimal,
  'link-2': Link,
  list: List,
  'lock-open': LockOpen,
  lock: Lock,
  'log-out': LogOut,
  mail: Mail,
  megaphone: Megaphone,
  'message-square-text': MessageSquareText,
  'message-square': MessageSquare,
  'messages-square': MessagesSquare,
  'monitor-down': MonitorDown,
  pencil: Pencil,
  phone: Phone,
  pin: Pin,
  plus: Plus,
  printer: Printer,
  'refresh-cw': RefreshCw,
  reply: Reply,
  'rotate-ccw': RotateCcw,
  'rotate-cw': RotateCw,
  search: Search,
  'send-horizontal': SendHorizontal,
  settings: Settings,
  share: Share,
  'shield-check': ShieldCheck,
  shrink: Shrink,
  'square-split-horizontal': SquareSplitHorizontal,
  square: Square,
  'table-2': Table2,
  'trash-2': Trash2,
  'triangle-alert': TriangleAlert,
  underline: Underline,
  'user-group-plus': UserGroupPlus,
  'user-plus': UserPlus,
  'user-round': UserRound,
  users: Users,
  x: X,
  zap: Zap,
  'arrow-right-left': ArrowRightLeft,

  'arrow-left': ArrowLeft,
  'chart-no-axes-column-increasing': ChartNoAxesColumnIncreasing,
  'chart-no-axes-combined': ChartNoAxesCombined,
  'circle-alert': CircleAlert,
  'circle-arrow-right': CircleArrowRight,
  'circle-check': CircleCheck,
  'circle-chevron-left': CircleChevronLeft,
  'circle-chevron-right': CircleChevronRight,
  'image-plus': ImagePlus,
  'list-filter': ListFilter,
  'list-sort-ascending': ListSortAscending,
  'list-sort-descending': ListSortDescending,
  'loader-circle': LoaderCircle,
  menu: Menu,
  minus: Minus,
  'move-down': MoveDown,
  'move-up': MoveUp,
  paperclip: Paperclip,
  save: Save,
};

export const ICON_MAP_LEGACY: Record<IconVariants, React.FC<React.SVGProps<SVGSVGElement>>> = {
  [IconVariants.EMAIL_OUTLINED]: EmailOutLined,
  [IconVariants.FORUM_OUTLINED]: ForumOutlined,
  [IconVariants.FILE_COPY_OUTLINED]: FileCopyOutlined,
  [IconVariants.COMPARE_ARROWS_ROUNDED]: CompareArrowsRounded,
  [IconVariants.PHONE_OUTLINED]: PhoneOutlined,
  [IconVariants.HEADSET_MIC_OUTLINED]: HeadsetMicOutlined,
  [IconVariants.POST_ADD_OUTLINED]: PostAddOutlined,
  [IconVariants.SEND_ROUNDED]: SendRounded,
  [IconVariants.MOVE_TO_INBOX_ROUNDED]: MoveToInboxRounded,
  [IconVariants.PRINT_OUTLINED]: PrintOutlined,
  [IconVariants.BLOCK_ROUNDED]: BlockRounded,
  [IconVariants.LINK_ROUNDED]: LinkRounded,
  [IconVariants.PERSON_ADD_OUTLINED]: PersonAddOutlined,
  [IconVariants.CALCULATE]: Calculate,
  [IconVariants.CHEVRON_LEFT_OUTLINED]: ChevronLeftOutlined,
  [IconVariants.MY_MESSAGE_STATE_SENT]: MyMessageStateSent,
  [IconVariants.MY_MESSAGE_STATE_DELIVERED]: MyMsgStateDlvrd,
  [IconVariants.INFO_OUTLINED]: InfoOutlined,
};



export { Icon } from './Icon';
export { IconDeprecated, type IconDeprecatedProps } from './IconL';
export type { IconVariant, IconVariants } from './types';


import React, { CSSProperties } from 'react';

import { ICON_MAP_LEGACY } from './const';
import { IconVariants } from './types';

export interface IconDeprecatedProps {
  variant: IconVariants;
  size?: 16 | 24 | 'original';
  className?: string;
  style?: CSSProperties;
  onClick?: (e: React.MouseEvent) => void;
}

export const IconDeprecated: React.FC<IconDeprecatedProps> = ({ variant, className = '', style, ...restProps }) => {
  const IconComponent = ICON_MAP_LEGACY[variant];

  return (
    <IconComponent
      className={className}
      style={style}
      {...restProps}
    />
  );
};



import React from 'react';

import { ICON_MAP } from './const';
import { IconProps } from './types';

export const Icon: React.FC<IconProps> = ({ variant, className = '', style, size = 16, ...restProps }) => {
  const IconComponent = ICON_MAP[variant];

  const sizeProps = size === 'original'
    ? {}
    : { width: size, height: size }

  return (
    <IconComponent
      className={className}
      style={style}
      {...sizeProps}
      {...restProps}
    />
  );
};


import {
  ArrowLeft,
  ArrowRightLeft,
  Ban,
  Bell,
  Bookmark,
  Calculator,
  Calendar,
  CalendarCheck,
  ChartColumnDecreasing,
  ChartLine,
  ChartNoAxesColumnIncreasing,
  ChartNoAxesCombined,
  ChartPie,
  Check,
  ChevronDown,
  ChevronLeft,
  ChevronRight,
  ChevronUp,
  CircleAlert,
  CircleArrowRight,
  CircleCheck,
  CircleChevronLeft,
  CircleChevronRight,
  CircleMinus,
  CircleQuestionMark,
  CircleX,
  Columns2,
  Columns3,
  Copy,
  Copyright,
  EllipsisVertical,
  Expand,
  Eye,
  EyeClosed,
  File,
  FilePlusCorner,
  FileUp,
  FileX,
  FolderPlus,
  Forward,
  Fullscreen,
  Headset,
  Image,
  ImagePlus,
  Inbox,
  Info,
  LaptopMinimal,
  Link,
  List,
  ListFilter,
  ListSortAscending,
  ListSortDescending,
  LoaderCircle,
  Lock,
  LockOpen,
  LogOut,
  Mail,
  Megaphone,
  Menu,
  MessageSquare,
  MessageSquareText,
  MessagesSquare,
  Minus,
  MonitorDown,
  MoveDown,
  MoveUp,
  Paperclip,
  Pencil,
  Phone,
  Pin,
  Plus,
  Printer,
  RefreshCw,
  Reply,
  RotateCcw,
  RotateCw,
  Save,
  Search,
  SendHorizontal,
  Settings,
  Share,
  ShieldCheck,
  Shrink,
  Square,
  SquareSplitHorizontal,
  Table2,
  Trash2,
  TriangleAlert,
  Underline,
  UserPlus,
  UserRound,
  Users,
  X,
  Zap,
} from 'lucide-react';

import { ReactComponent as InfoOutlined } from '../../../public/project-icons/info/info-outlined.svg';

import { ReactComponent as BlockRounded } from './icons/migration/block/block-rounded.svg';
import { ReactComponent as Calculate } from './icons/migration/calculate/calculate.svg';
import { ReactComponent as ChevronLeftOutlined } from './icons/migration/chevron-left/chevron-left-outlined.svg';
import { ReactComponent as CompareArrowsRounded } from './icons/migration/compare-arrows/compare-arrows-rounded.svg';
import { ReactComponent as EmailOutLined } from './icons/migration/email/email-outlined.svg';
import { ReactComponent as FileCopyOutlined } from './icons/migration/file-copy/file-copy-outlined.svg';
import { ReactComponent as ForumOutlined } from './icons/migration/forum/forum-outlined.svg';
import { ReactComponent as HeadsetMicOutlined } from './icons/migration/headset-mic/headset-mic-outlined.svg';
import { ReactComponent as LinkRounded } from './icons/migration/link/link-rounded.svg';
import { ReactComponent as MoveToInboxRounded } from './icons/migration/move-to-inbox/move-to-inbox-rounded.svg';
import { ReactComponent as MyMsgStateDlvrd } from './icons/migration/my-message-state/my-message-state-delivered.svg';
import { ReactComponent as MyMessageStateSent } from './icons/migration/my-message-state/my-message-state-sent.svg';
import { ReactComponent as PersonAddOutlined } from './icons/migration/person-add/person-add-outlined.svg';
import { ReactComponent as PhoneOutlined } from './icons/migration/phone/phone-outlined.svg';
import { ReactComponent as PostAddOutlined } from './icons/migration/post-add/post-add-outlined.svg';
import { ReactComponent as PrintOutlined } from './icons/migration/print/print-outlined.svg';
import { ReactComponent as SendRounded } from './icons/migration/send/send-rounded.svg';

import { ReactComponent as UserGroupPlus } from './icons/user-group-plus.svg';

import { IconVariant, IconVariants } from './types';

export const ICON_MAP: Record<IconVariant, React.FC<React.SVGProps<SVGSVGElement>>> = {
  'chart-column-decreasing': ChartColumnDecreasing,
  bell: Bell,
  ban: Ban,
  bookmark: Bookmark,
  calculator: Calculator,
  'calendar-check-2': CalendarCheck,
  calendar: Calendar,
  'chart-line': ChartLine,
  'chart-pie': ChartPie,
  check: Check,
  'chevron-down': ChevronDown,
  'chevron-up': ChevronUp,
  'chevron-left': ChevronLeft,
  'chevron-right': ChevronRight,
  'circle-minus': CircleMinus,
  'circle-question-mark': CircleQuestionMark,
  'circle-x': CircleX,
  'columns-2': Columns2,
  'columns-3': Columns3,
  copy: Copy,
  copyright: Copyright,
  'ellipsis-vertical': EllipsisVertical,
  expand: Expand,
  'eye-closed': EyeClosed,
  eye: Eye,
  'file-plus-corner': FilePlusCorner,
  'file-up': FileUp,
  'file-x': FileX,
  file: File,
  'folder-plus': FolderPlus,
  forward: Forward,
  fullscreen: Fullscreen,
  headset: Headset,
  image: Image,
  inbox: Inbox,
  info: Info,
  'laptop-minimal': LaptopMinimal,
  'link-2': Link,
  list: List,
  'lock-open': LockOpen,
  lock: Lock,
  'log-out': LogOut,
  mail: Mail,
  megaphone: Megaphone,
  'message-square-text': MessageSquareText,
  'message-square': MessageSquare,
  'messages-square': MessagesSquare,
  'monitor-down': MonitorDown,
  pencil: Pencil,
  phone: Phone,
  pin: Pin,
  plus: Plus,
  printer: Printer,
  'refresh-cw': RefreshCw,
  reply: Reply,
  'rotate-ccw': RotateCcw,
  'rotate-cw': RotateCw,
  search: Search,
  'send-horizontal': SendHorizontal,
  settings: Settings,
  share: Share,
  'shield-check': ShieldCheck,
  shrink: Shrink,
  'square-split-horizontal': SquareSplitHorizontal,
  square: Square,
  'table-2': Table2,
  'trash-2': Trash2,
  'triangle-alert': TriangleAlert,
  underline: Underline,
  'user-group-plus': UserGroupPlus,
  'user-plus': UserPlus,
  'user-round': UserRound,
  users: Users,
  x: X,
  zap: Zap,
  'arrow-right-left': ArrowRightLeft,

  'arrow-left': ArrowLeft,
  'chart-no-axes-column-increasing': ChartNoAxesColumnIncreasing,
  'chart-no-axes-combined': ChartNoAxesCombined,
  'circle-alert': CircleAlert,
  'circle-arrow-right': CircleArrowRight,
  'circle-check': CircleCheck,
  'circle-chevron-left': CircleChevronLeft,
  'circle-chevron-right': CircleChevronRight,
  'image-plus': ImagePlus,
  'list-filter': ListFilter,
  'list-sort-ascending': ListSortAscending,
  'list-sort-descending': ListSortDescending,
  'loader-circle': LoaderCircle,
  menu: Menu,
  minus: Minus,
  'move-down': MoveDown,
  'move-up': MoveUp,
  paperclip: Paperclip,
  save: Save,
};

export const ICON_MAP_LEGACY: Record<IconVariants, React.FC<React.SVGProps<SVGSVGElement>>> = {
  [IconVariants.EMAIL_OUTLINED]: EmailOutLined,
  [IconVariants.FORUM_OUTLINED]: ForumOutlined,
  [IconVariants.FILE_COPY_OUTLINED]: FileCopyOutlined,
  [IconVariants.COMPARE_ARROWS_ROUNDED]: CompareArrowsRounded,
  [IconVariants.PHONE_OUTLINED]: PhoneOutlined,
  [IconVariants.HEADSET_MIC_OUTLINED]: HeadsetMicOutlined,
  [IconVariants.POST_ADD_OUTLINED]: PostAddOutlined,
  [IconVariants.SEND_ROUNDED]: SendRounded,
  [IconVariants.MOVE_TO_INBOX_ROUNDED]: MoveToInboxRounded,
  [IconVariants.PRINT_OUTLINED]: PrintOutlined,
  [IconVariants.BLOCK_ROUNDED]: BlockRounded,
  [IconVariants.LINK_ROUNDED]: LinkRounded,
  [IconVariants.PERSON_ADD_OUTLINED]: PersonAddOutlined,
  [IconVariants.CALCULATE]: Calculate,
  [IconVariants.CHEVRON_LEFT_OUTLINED]: ChevronLeftOutlined,
  [IconVariants.MY_MESSAGE_STATE_SENT]: MyMessageStateSent,
  [IconVariants.MY_MESSAGE_STATE_DELIVERED]: MyMsgStateDlvrd,
  [IconVariants.INFO_OUTLINED]: InfoOutlined,
};