import React, { FC, useState } from 'react'; import styled from 'styled-components'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import QRCode from 'qrcode.react'; import { Flex } from 'reflexbox/styled-components'; import Button from '../Button'; import Loading from '../PageLoading'; import { fadeIn } from '../../helpers/animations'; import TBodyButton from '../Table/TBody/TBodyButton'; import Modal from '../Modal'; // TODO: types interface Props { copyHandler: any; isCopied: boolean; loading: boolean; url: { list: any[]; }; } const Wrapper = styled(Flex).attrs({ justifyContent: 'center', alignItems: 'center', })` position: relative; button { margin-left: 24px; } `; const Url = styled.h2` margin: 8px 0; font-size: 32px; font-weight: 300; border-bottom: 2px dotted #aaa; cursor: pointer; transition: all 0.2s ease; :hover { opacity: 0.5; } @media only screen and (max-width: 448px) { font-size: 24px; } `; const CopyMessage = styled.p` position: absolute; top: -32px; left: 0; font-size: 14px; color: #689f38; animation: ${fadeIn} 0.3s ease-out; `; const QRButton = styled(TBodyButton)` width: 36px; height: 36px; margin-left: 12px !important; box-shadow: 0 4px 10px rgba(100, 100, 100, 0.2); :hover { box-shadow: 0 4px 10px rgba(100, 100, 100, 0.3); } @media only screen and (max-width: 768px) { height: 32px; width: 32px; img { width: 14px; height: 14px; } } `; const Icon = styled.img` width: 16px; height: 16px; `; const ShortenerResult: FC = ({ copyHandler, isCopied, loading, url, }) => { const [qrModal, setQrModal] = useState(false); const toggleQrCodeModal = () => setQrModal(current => !current); const showQrCode = window.innerWidth > 420; if (loading) return ; return ( {isCopied && Copied to clipboard.} {url.list[0].shortLink.replace(/^https?:\/\//, '')} {showQrCode && ( )} ); }; export default ShortenerResult;