aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/components/blockIconLink.tsx
diff options
context:
space:
mode:
authorfragosti <francesco.agosti93@gmail.com>2018-12-21 08:01:53 +0800
committerfragosti <francesco.agosti93@gmail.com>2018-12-21 08:01:53 +0800
commitabdf91c691b924b75d71db49fba296da9c8ddcac (patch)
tree78e62a107f1de7f3b16dd63bdbc039ab26b561a3 /packages/website/ts/components/blockIconLink.tsx
parent9b540fd8e52e7578d3749e6d9ef9cd97d602ffb3 (diff)
downloaddexon-sol-tools-abdf91c691b924b75d71db49fba296da9c8ddcac.tar
dexon-sol-tools-abdf91c691b924b75d71db49fba296da9c8ddcac.tar.gz
dexon-sol-tools-abdf91c691b924b75d71db49fba296da9c8ddcac.tar.bz2
dexon-sol-tools-abdf91c691b924b75d71db49fba296da9c8ddcac.tar.lz
dexon-sol-tools-abdf91c691b924b75d71db49fba296da9c8ddcac.tar.xz
dexon-sol-tools-abdf91c691b924b75d71db49fba296da9c8ddcac.tar.zst
dexon-sol-tools-abdf91c691b924b75d71db49fba296da9c8ddcac.zip
feat: move all @next files to non @next directory
Diffstat (limited to 'packages/website/ts/components/blockIconLink.tsx')
-rw-r--r--packages/website/ts/components/blockIconLink.tsx84
1 files changed, 84 insertions, 0 deletions
diff --git a/packages/website/ts/components/blockIconLink.tsx b/packages/website/ts/components/blockIconLink.tsx
new file mode 100644
index 000000000..8d66a4afa
--- /dev/null
+++ b/packages/website/ts/components/blockIconLink.tsx
@@ -0,0 +1,84 @@
+import { History, Location } from 'history';
+import * as React from 'react';
+import { match, withRouter } from 'react-router-dom';
+import styled from 'styled-components';
+
+import { Button } from 'ts/@next/components/button';
+import { Icon } from 'ts/@next/components/icon';
+
+interface BaseComponentProps {
+ icon?: string;
+ iconComponent?: React.ReactNode;
+ title: string;
+ linkLabel: string;
+ linkUrl?: string;
+ linkAction?: () => void;
+ history: History;
+ location: Location;
+ match: match<any>;
+}
+
+class BaseComponent extends React.PureComponent<BaseComponentProps> {
+ public onClick = (): void => {
+ const { linkAction, linkUrl } = this.props;
+
+ if (linkAction) {
+ linkAction();
+ } else {
+ this.props.history.push(linkUrl);
+ }
+ };
+
+ public render(): React.ReactNode {
+ const { icon, iconComponent, linkUrl, linkAction, title, linkLabel } = this.props;
+
+ return (
+ <Wrap onClick={this.onClick}>
+ <div>
+ <Icon name={icon} component={iconComponent} size="large" margin={[0, 0, 'default', 0]} />
+
+ <Title>{title}</Title>
+
+ <Button isWithArrow={true} isTransparent={true} href={linkUrl} onClick={linkAction}>
+ {linkLabel}
+ </Button>
+ </div>
+ </Wrap>
+ );
+ }
+}
+
+export const BlockIconLink = withRouter<BaseComponentProps>(BaseComponent);
+
+const Wrap = styled.div`
+ width: calc(50% - 15px);
+ height: 400px;
+ padding: 40px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ transition: background-color 0.25s;
+ background-color: ${props => props.theme.lightBgColor};
+ cursor: pointer;
+
+ a,
+ button {
+ pointer-events: none;
+ }
+
+ @media (max-width: 900px) {
+ width: 100%;
+ margin-top: 30px;
+ }
+
+ &:hover {
+ background-color: #002d28;
+ }
+`;
+
+const Title = styled.h2`
+ font-size: 20px;
+ margin-bottom: 30px;
+ color: ${props => props.theme.linkColor};
+`;