import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import "./Icon.scss"; import { v4 as uuidv4 } from 'uuid'; import hexRgb from "hex-rgb"; import AlignRight from "./Icons/AlignRight"; import Anchor from "./Icons/Anchor"; import Aperture from "./Icons/Aperture"; import Archive from "./Icons/Archive"; import ArrowBack from "./Icons/ArrowBack"; import ArrowDown from "./Icons/ArrowDown"; import ArrowDownCircle from "./Icons/ArrowDownCircle"; import ArrowDownLeft from "./Icons/ArrowDownLeft"; import ArrowDownRight from "./Icons/ArrowDownRight"; import ArrowForward from "./Icons/ArrowForward"; import ArrowLeft from "./Icons/ArrowLeft"; import ArrowLeftCircle from "./Icons/ArrowLeftCircle"; import ArrowRight from "./Icons/ArrowRight"; import ArrowRightCircle from "./Icons/ArrowRightCircle"; import ArrowTop from "./Icons/ArrowTop"; import ArrowUp from "./Icons/ArrowUp"; import ArrowUpCircle from "./Icons/ArrowUpCircle"; import ArrowUpLeft from "./Icons/ArrowUpLeft"; import ArrowUpRight from "./Icons/ArrowUpRight"; import AtSign from "./Icons/AtSign"; import Award from "./Icons/Award"; import BarChart from "./Icons/BarChart"; import BarChart2 from "./Icons/BarChart2"; import Battery from "./Icons/Battery"; import BatteryCharging from "./Icons/BatteryCharging"; import Bell from "./Icons/Bell"; import Bell2 from "./Icons/Bell2"; import BellOff from "./Icons/BellOff"; import BellOutlined from "./Icons/BellOutlined"; import Bluetooth from "./Icons/Bluetooth"; import Bold from "./Icons/Bold"; import Book from "./Icons/Book"; import BookOpen from "./Icons/BookOpen"; import Bookmark from "./Icons/Bookmark"; import Bookmark2 from "./Icons/Bookmark2"; import BookmarkOutlined from "./Icons/BookmarkOutlined"; import Box from "./Icons/Box"; import Briefcase from "./Icons/Briefcase"; import Calendar from "./Icons/Calendar"; import Camera from "./Icons/Camera"; import CameraOff from "./Icons/CameraOff"; import Card from "./Icons/Card"; import Cart from "./Icons/Cart"; import Cash from "./Icons/Cash"; import Cast from "./Icons/Cast"; import Chat from "./Icons/Chat"; import Check from "./Icons/Check"; import CheckCircle from "./Icons/CheckCircle"; import CheckMark from "./Icons/CheckMark"; import ChevronDown from "./Icons/ChevronDown"; import ChevronLeft from "./Icons/ChevronLeft"; import ChevronRight from "./Icons/ChevronRight"; import ChevronUp from "./Icons/ChevronUp"; import ChevronsDown from "./Icons/ChevronsDown"; import ChevronsLeft from "./Icons/ChevronsLeft"; import ChevronsRight from "./Icons/ChevronsRight"; import ChevronsUp from "./Icons/ChevronsUp"; import Chrome from "./Icons/Chrome"; import Circle from "./Icons/Circle"; import Clap from "./Icons/Clap"; import Clipboard from "./Icons/Clipboard"; import Clock from "./Icons/Clock"; import CloseIcon from "./Icons/CloseIcon"; import Cloud from "./Icons/Cloud"; import CloudDownload from "./Icons/CloudDownload"; import CloudDrizzle from "./Icons/CloudDrizzle"; import CloudLightning from "./Icons/CloudLightning"; import CloudOff from "./Icons/CloudOff"; import CloudOutlined from "./Icons/CloudOutlined"; import CloudRain from "./Icons/CloudRain"; import CloudSnow from "./Icons/CloudSnow"; import CloudUpload from "./Icons/CloudUpload"; import Code from "./Icons/Code"; import CodeSandbox from "./Icons/CodeSandbox"; import Codepen from "./Icons/Codepen"; import Coffee from "./Icons/Coffee"; import Columns from "./Icons/Columns"; import Command from "./Icons/Command"; import Compass from "./Icons/Compass"; import Copy from "./Icons/Copy"; import CornerDownLeft from "./Icons/CornerDownLeft"; import CornerDownRight from "./Icons/CornerDownRight"; import CornerLeftDown from "./Icons/CornerLeftDown"; import CornerLeftUp from "./Icons/CornerLeftUp"; import CornerRightDown from "./Icons/CornerRightDown"; import CornerRightUp from "./Icons/CornerRightUp"; import CornerUpLeft from "./Icons/CornerUpLeft"; import CornerUpRight from "./Icons/CornerUpRight"; import CreditCard from "./Icons/CreditCard"; import Crop from "./Icons/Crop"; import Crosshair from "./Icons/Crosshair"; import Cycling from "./Icons/Cycling"; import Database from "./Icons/Database"; import Delete from "./Icons/Delete"; import Edit from "./Icons/Edit"; import Flash from "./Icons/Flash"; import Globe from "./Icons/Globe"; import Hand from "./Icons/Hand"; import Heart from "./Icons/Heart"; import HeartOutlined from "./Icons/HeartOutlined"; import Home from "./Icons/Home"; import LineChart from "./Icons/LineChart"; import Link from "./Icons/Link"; import Loader from "./Icons/Loader"; import Lock from "./Icons/Lock"; import Menu from "./Icons/Menu"; import Minus from "./Icons/Minus"; import Plus from "./Icons/Plus"; import Refresh from "./Icons/Refresh"; import RockOn from "./Icons/RockOn"; import Save from "./Icons/Save"; import Search from "./Icons/Search"; import Settings from "./Icons/Settings"; import Star from "./Icons/Star"; import StarHalf from "./Icons/StarHalf"; import StarOutlined from "./Icons/StarOutlined"; import Stop from "./Icons/Stop"; import Sync from "./Icons/Sync"; import ThumbDown from "./Icons/ThumbDown"; import ThumbUp from "./Icons/ThumbUp"; import Time from "./Icons/Time"; import UnLock from "./Icons/UnLock"; import User from "./Icons/User"; import Wifi from "./Icons/Wifi"; import Activity from "./Icons/activity"; import Airplay from "./Icons/airplay"; import AlertCircle from "./Icons/alert-circle"; import AlertOctagon from "./Icons/alert-octagon"; import AlertTriangle from "./Icons/alert-triangle"; import AlignCenter from "./Icons/align-center"; import AlignJustify from "./Icons/align-justify"; import AlignLeft from "./Icons/align-left"; import Cpu from "./Icons/cpu"; const Icon = (props) => { const [iconId] = useState(`icon_${uuidv4()}`); const [size, setSize] = useState(null); const [color, setColor] = useState(null); const [opacity, setOpacity] = useState(null); useEffect(() => { const { size: propSize, color: propColor } = props; if (!propSize || !propColor) { const parent = document.getElementById(iconId).parentNode; const parentStyle = getComputedStyle(parent); let iconSize = propSize; if (!propSize) { const pxSize = parentStyle['font-size'].split('px')[0] * 1.3; iconSize = `${pxSize}px`; } let iconColor = propColor ? propColor : parentStyle['color']; let iconOpacity = 1; if (iconColor.split('#').length > 1) { iconColor = `rgba(${hexRgb(iconColor, { format: 'array' }).join(', ')})`; } if (iconColor.split('rgba').length > 1) { iconOpacity = Number(iconColor.split(',')[3].split(')')[0]); const iconColorNum = iconColor.split('rgba(')[1].split(',').slice(0, 3).join(','); iconColor = `rgb(${iconColorNum})`; } setSize(iconSize); setColor(iconColor); setOpacity(iconOpacity); } else { setSize(propSize); setColor(propColor); setOpacity(1); } }, [props, iconId]); let chosenIcon; switch (props.type) { case "alignRight": chosenIcon = ; break; case "anchor": chosenIcon = ; break; case "aperture": chosenIcon = ; break; case "archive": chosenIcon = ; break; case "arrowBack": chosenIcon = ; break; case "arrowDown": chosenIcon = ; break; case "arrowDownCircle": chosenIcon = ; break; case "arrowDownLeft": chosenIcon = ; break; case "arrowDownRight": chosenIcon = ; break; case "arrowForward": chosenIcon = ; break; case "arrowLeft": chosenIcon = ; break; case "arrowLeftCircle": chosenIcon = ; break; case "arrowRight": chosenIcon = ; break; case "arrowRightCircle": chosenIcon = ; break; case "arrowTop": chosenIcon = ; break; case "arrowUp": chosenIcon = ; break; case "arrowUpCircle": chosenIcon = ; break; case "arrowUpLeft": chosenIcon = ; break; case "arrowUpRight": chosenIcon = ; break; case "atSign": chosenIcon = ; break; case "award": chosenIcon = ; break; case "barChart": chosenIcon = ; break; case "barChart2": chosenIcon = ; break; case "battery": chosenIcon = ; break; case "batteryCharging": chosenIcon = ; break; case "bell": chosenIcon = ; break; case "bell2": chosenIcon = ; break; case "bellOff": chosenIcon = ; break; case "bellOutlined": chosenIcon = ; break; case "bluetooth": chosenIcon = ; break; case "bold": chosenIcon = ; break; case "book": chosenIcon = ; break; case "bookOpen": chosenIcon = ; break; case "bookmark": chosenIcon = ; break; case "bookmark2": chosenIcon = ; break; case "bookmarkOutlined": chosenIcon = ; break; case "box": chosenIcon = ; break; case "briefcase": chosenIcon = ; break; case "calendar": chosenIcon = ; break; case "camera": chosenIcon = ; break; case "cameraOff": chosenIcon = ; break; case "card": chosenIcon = ; break; case "cart": chosenIcon = ; break; case "cash": chosenIcon = ; break; case "cast": chosenIcon = ; break; case "chat": chosenIcon = ; break; case "check": chosenIcon = ; break; case "checkCircle": chosenIcon = ; break; case "checkMark": chosenIcon = ; break; case "chevronDown": chosenIcon = ; break; case "chevronLeft": chosenIcon = ; break; case "chevronRight": chosenIcon = ; break; case "chevronUp": chosenIcon = ; break; case "chevronsDown": chosenIcon = ; break; case "chevronsLeft": chosenIcon = ; break; case "chevronsRight": chosenIcon = ; break; case "chevronsUp": chosenIcon = ; break; case "chrome": chosenIcon = ; break; case "circle": chosenIcon = ; break; case "clap": chosenIcon = ; break; case "clipboard": chosenIcon = ; break; case "clock": chosenIcon = ; break; case "closeIcon": chosenIcon = ; break; case "cloud": chosenIcon = ; break; case "cloudDownload": chosenIcon = ; break; case "cloudDrizzle": chosenIcon = ; break; case "cloudLightning": chosenIcon = ; break; case "cloudOff": chosenIcon = ; break; case "cloudOutlined": chosenIcon = ; break; case "cloudRain": chosenIcon = ; break; case "cloudSnow": chosenIcon = ; break; case "cloudUpload": chosenIcon = ; break; case "code": chosenIcon = ; break; case "codeSandbox": chosenIcon = ; break; case "codepen": chosenIcon = ; break; case "coffee": chosenIcon = ; break; case "columns": chosenIcon = ; break; case "command": chosenIcon = ; break; case "compass": chosenIcon = ; break; case "copy": chosenIcon = ; break; case "cornerDownLeft": chosenIcon = ; break; case "cornerDownRight": chosenIcon = ; break; case "cornerLeftDown": chosenIcon = ; break; case "cornerLeftUp": chosenIcon = ; break; case "cornerRightDown": chosenIcon = ; break; case "cornerRightUp": chosenIcon = ; break; case "cornerUpLeft": chosenIcon = ; break; case "cornerUpRight": chosenIcon = ; break; case "creditCard": chosenIcon = ; break; case "crop": chosenIcon = ; break; case "crosshair": chosenIcon = ; break; case "cycling": chosenIcon = ; break; case "database": chosenIcon = ; break; case "delete": chosenIcon = ; break; case "edit": chosenIcon = ; break; case "flash": chosenIcon = ; break; case "globe": chosenIcon = ; break; case "hand": chosenIcon = ; break; case "heart": chosenIcon = ; break; case "heartOutlined": chosenIcon = ; break; case "home": chosenIcon = ; break; case "lineChart": chosenIcon = ; break; case "link": chosenIcon = ; break; case "loader": chosenIcon = ; break; case "lock": chosenIcon = ; break; case "menu": chosenIcon = ; break; case "minus": chosenIcon = ; break; case "plus": chosenIcon = ; break; case "refresh": chosenIcon = ; break; case "rockOn": chosenIcon = ; break; case "save": chosenIcon = ; break; case "search": chosenIcon = ; break; case "settings": chosenIcon = ; break; case "star": chosenIcon = ; break; case "starHalf": chosenIcon = ; break; case "starOutlined": chosenIcon = ; break; case "stop": chosenIcon = ; break; case "sync": chosenIcon = ; break; case "thumbDown": chosenIcon = ; break; case "thumbUp": chosenIcon = ; break; case "time": chosenIcon =