import { Styles } from '@0xproject/react-shared'; import * as _ from 'lodash'; import { GridTile } from 'material-ui/GridList'; import * as React from 'react'; import { TopTokens } from 'ts/components/relayer_index/relayer_top_tokens'; import { Container } from 'ts/components/ui/container'; import { Island } from 'ts/components/ui/island'; import { colors } from 'ts/style/colors'; import { WebsiteBackendRelayerInfo } from 'ts/types'; export interface RelayerGridTileProps { relayerInfo: WebsiteBackendRelayerInfo; networkId: number; } const styles: Styles = { root: { boxSizing: 'border-box', }, innerDiv: { padding: 6, height: '100%', boxSizing: 'border-box', }, header: { height: '50%', width: '100%', objectFit: 'cover', borderBottomRightRadius: 4, borderBottomLeftRadius: 4, borderTopRightRadius: 4, borderTopLeftRadius: 4, borderWidth: 1, borderStyle: 'solid', borderColor: colors.walletBorder, }, body: { paddingLeft: 6, paddingRight: 6, height: '50%', width: '100%', boxSizing: 'border-box', }, weeklyTradeVolumeLabel: { fontSize: 14, color: colors.mediumBlue, }, subLabel: { fontSize: 12, color: colors.lightGrey, }, relayerNameLabel: { fontSize: 16, fontWeight: 'bold', color: colors.black, }, }; const FALLBACK_IMG_SRC = '/images/landing/hero_chip_image.png'; const NO_CONTENT_MESSAGE = '--'; export const RelayerGridTile: React.StatelessComponent = (props: RelayerGridTileProps) => { const link = props.relayerInfo.appUrl || props.relayerInfo.url; const topTokens = props.relayerInfo.topTokens; const weeklyTxnVolume = props.relayerInfo.weeklyTxnVolume; return (
{props.relayerInfo.name}
{!_.isUndefined(weeklyTxnVolume) && (
{props.relayerInfo.weeklyTxnVolume}
)}
{!_.isEmpty(topTokens) && }
); }; interface SectionProps { titleText: string; children?: React.ReactNode; } const Section = (props: SectionProps) => { return (
{props.titleText}
{props.children || }
); }; const NoContent = () =>
{NO_CONTENT_MESSAGE}
; interface ImgWithFallbackProps { src?: string; fallbackSrc: string; style: React.CSSProperties; } interface ImgWithFallbackState { imageLoadFailed: boolean; } class ImgWithFallback extends React.Component { constructor(props: ImgWithFallbackProps) { super(props); this.state = { imageLoadFailed: false, }; } public render(): React.ReactNode { if (this.state.imageLoadFailed || _.isUndefined(this.props.src)) { return ; } else { return ; } } private _onError(): void { this.setState({ imageLoadFailed: true, }); } }