diff --git a/package.json b/package.json index babafb0d..6db461a8 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,8 @@ "typescript": "3.9.2", "webpack": "4.43.0", "webpack-cli": "^3.3.10", - "webpack-node-externals": "^1.7.2" + "webpack-node-externals": "^1.7.2", + "ethereum-blockies-base64": "^1.0.2" }, "peerDependencies": { "react": "^16.x.x", diff --git a/src/theme.ts b/src/theme.ts index 3743ee37..6cce6dce 100644 --- a/src/theme.ts +++ b/src/theme.ts @@ -109,6 +109,13 @@ const theme = { sm: '16', md: '24' } + }, + identicon: { + size: { + sm: '16px', + md: '32px', + lg: '60px' + } } }; diff --git a/src/utils/Identicon/index.stories.tsx b/src/utils/Identicon/index.stories.tsx new file mode 100644 index 00000000..44ff269a --- /dev/null +++ b/src/utils/Identicon/index.stories.tsx @@ -0,0 +1,21 @@ +import React from 'react'; + +import Identicon from './index'; + +export default { + title: 'Utils/Identicon', + component: Identicon, + parameters: { + componentSubtitle: 'Identicon Component.' + } +}; + +export const sizes = () => { + return ( + <> + + + + + ); +}; diff --git a/src/utils/Identicon/index.tsx b/src/utils/Identicon/index.tsx new file mode 100644 index 00000000..c934ea3a --- /dev/null +++ b/src/utils/Identicon/index.tsx @@ -0,0 +1,24 @@ +import * as React from 'react'; + +import makeBlockie from 'ethereum-blockies-base64'; +import styled from 'styled-components'; +import { Theme } from '../../theme'; + +type Props = { + address: string; + size: keyof Theme['identicon']['size']; +}; + +const StyledImg = styled.img<{ size: string }>` + height: ${({ size, theme }) => theme.identicon.size[size]}; + width: ${({ size, theme }) => theme.identicon.size[size]}; + border-radius: 50%; +`; + +const Identicon = ({ size = 'md', address, ...rest }: Props) => { + const iconSrc = React.useMemo(() => makeBlockie(address), [address]); + + return ; +}; + +export default Identicon; diff --git a/src/utils/index.ts b/src/utils/index.ts index ab70100e..12d1530e 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1 +1,2 @@ -export * from './modals' +export { default as Identicon } from './Identicon'; +export * from './modals' \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 093d3884..5b6480b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5007,6 +5007,13 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +ethereum-blockies-base64@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ethereum-blockies-base64/-/ethereum-blockies-base64-1.0.2.tgz#4aebca52142bf4d16a3144e6e2b59303e39ed2b3" + integrity sha512-Vg2HTm7slcWNKaRhCUl/L3b4KrB8ohQXdd5Pu3OI897EcR6tVRvUqdTwAyx+dnmoDzj8e2bwBLDQ50ByFmcz6w== + dependencies: + pnglib "0.0.1" + eventemitter3@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" @@ -8293,6 +8300,11 @@ pkg-up@2.0.0, pkg-up@^2.0.0: dependencies: find-up "^2.1.0" +pnglib@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/pnglib/-/pnglib-0.0.1.tgz#f9ab6f9c688f4a9d579ad8be28878a716e30c096" + integrity sha1-+atvnGiPSp1Xmti+KIeKcW4wwJY= + pnp-webpack-plugin@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb"