/** * External dependencies */ import clsx from 'clsx'; /** * Internal dependencies */ import { Tooltip } from '../tooltip'; import './style.scss'; import defaultIcon from './assets/default.svg'; import androidIcon from './assets/android.svg'; import appleIcon from './assets/apple.svg'; import appleIOSIcon from './assets/apple-ios.svg'; import arrowULeftIcon from './assets/arrow-u-left.svg'; import calendarIcon from './assets/calendar.svg'; import cellphoneIcon from './assets/cellphone.svg'; import chevronDownIcon from './assets/chevron-down.svg'; import chevronLeftIcon from './assets/chevron-left.svg'; import chevronRightIcon from './assets/chevron-right.svg'; import chevronUpIcon from './assets/chevron-up.svg'; import columnsIcon from './assets/columns.svg'; import deadIcon from './assets/dead.svg'; import downloadIcon from './assets/download.svg'; import exitIcon from './assets/exit.svg'; import filterIcon from './assets/filter.svg'; import firefoxIcon from './assets/firefox.svg'; import googleChromeIcon from './assets/google-chrome.svg'; import inputIcon from './assets/input.svg'; import internetExplorerIcon from './assets/internet-explorer.svg'; import landingIcon from './assets/landing.svg'; import linkIcon from './assets/link.svg'; import linuxIcon from './assets/linux.svg'; import microsoftEdgeIcon from './assets/microsoft-edge.svg'; import monitorIcon from './assets/monitor.svg'; import monitorCellphoneIcon from './assets/monitor-cellphone.svg'; import mouseClickIcon from './assets/mouse-click.svg'; import mouseMoveIcon from './assets/mouse-move.svg'; import nabLogoIcon from './assets/nab-logo.svg'; import operaIcon from './assets/opera.svg'; import pageIcon from './assets/page.svg'; import pageReloadIcon from './assets/page-reload.svg'; import pageUTurnIcon from './assets/page-uturn.svg'; import pauseIcon from './assets/pause.svg'; import playIcon from './assets/play.svg'; import rageIcon from './assets/rage.svg'; import refreshIcon from './assets/refresh.svg'; import resizeIcon from './assets/resize.svg'; import safariIcon from './assets/safari.svg'; import scrollIcon from './assets/scroll.svg'; import selectionIcon from './assets/selection.svg'; import tabletIcon from './assets/tablet.svg'; import trashIcon from './assets/trash.svg'; import ubuntuIcon from './assets/ubuntu.svg'; import videoIcon from './assets/video.svg'; import volumeIcon from './assets/volume.svg'; import webIcon from './assets/web.svg'; import windowsIcon from './assets/windows.svg'; const icons = { default: defaultIcon, android: androidIcon, apple: appleIcon, appleIOS: appleIOSIcon, arrowULeft: arrowULeftIcon, calendar: calendarIcon, cellphone: cellphoneIcon, chevronDown: chevronDownIcon, chevronLeft: chevronLeftIcon, chevronRight: chevronRightIcon, chevronUp: chevronUpIcon, columns: columnsIcon, dead: deadIcon, download: downloadIcon, exit: exitIcon, filter: filterIcon, firefox: firefoxIcon, googleChrome: googleChromeIcon, input: inputIcon, internetExplorer: internetExplorerIcon, landing: landingIcon, link: linkIcon, linux: linuxIcon, microsoftEdge: microsoftEdgeIcon, monitor: monitorIcon, monitorCellphone: monitorCellphoneIcon, mouseClick: mouseClickIcon, mouseMove: mouseMoveIcon, nabLogo: nabLogoIcon, opera: operaIcon, page: pageIcon, pageReload: pageReloadIcon, pageUTurn: pageUTurnIcon, pause: pauseIcon, play: playIcon, rage: rageIcon, refresh: refreshIcon, resize: resizeIcon, safari: safariIcon, scroll: scrollIcon, selection: selectionIcon, tablet: tabletIcon, trash: trashIcon, ubuntu: ubuntuIcon, video: videoIcon, volume: volumeIcon, web: webIcon, windows: windowsIcon, }; export type IconProps = { readonly icon?: keyof typeof icons; readonly className?: string; readonly tooltip?: string; }; export const Icon = ( { icon, className, tooltip, }: IconProps ): JSX.Element => { const MaybeIcon = icon ? icons[ icon ] : undefined; const Component = MaybeIcon ?? icons.default; className = clsx( [ 'neliosr-icon', className ] ); return !! tooltip ? (
) : ( ); };