diff --git a/.husky/lint-staged.config.json b/.husky/lint-staged.config.json
index 57227fc..6107d5e 100644
--- a/.husky/lint-staged.config.json
+++ b/.husky/lint-staged.config.json
@@ -1,3 +1,3 @@
{
- "*.{js,json,sol,ts}": "prettier --write"
+ "*.{js,jsx,json,sol,ts,tsx}": "prettier --write"
}
diff --git a/ui/package.json b/ui/package.json
index 79d86f4..143d800 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -39,6 +39,7 @@
"eslint-plugin-react": "^7.31.11",
"ethers": "^5.7.2",
"prettier": "^2.8.0",
+ "react-icons": "^4.7.1",
"react-query": "^3.39.2",
"ts-loader": "^9.4.1",
"typescript": "^4.9.3",
diff --git a/ui/src/components/attributes-detail/attributes-detail.tsx b/ui/src/components/attributes-detail/attributes-detail.tsx
index f1ee114..865be94 100644
--- a/ui/src/components/attributes-detail/attributes-detail.tsx
+++ b/ui/src/components/attributes-detail/attributes-detail.tsx
@@ -16,13 +16,16 @@ export const AttributesDetail = ({
return (
- {attributes.map((attribute) => (
-
- ))}
+ {attributes.map(
+ (attribute) =>
+ attribute.value !== '' && (
+
+ )
+ )}
);
diff --git a/ui/src/components/card/card-attributes.tsx b/ui/src/components/card/card-attributes.tsx
index fc51e45..cbb1295 100644
--- a/ui/src/components/card/card-attributes.tsx
+++ b/ui/src/components/card/card-attributes.tsx
@@ -1,4 +1,4 @@
-import { Card, CardBody } from '@chakra-ui/react';
+import { Card, CardBody, Tooltip } from '@chakra-ui/react';
import { TileInfo } from '../tile-info';
type CardAttributesProps = {
@@ -15,9 +15,11 @@ export const CardAttributes = ({ heading, info }: CardAttributesProps) => (
variant="outline"
width="200px"
>
-
-
-
+
+
+
+
+
);
diff --git a/ui/src/components/card/card-site.tsx b/ui/src/components/card/card-site.tsx
index b8e2287..27b155b 100644
--- a/ui/src/components/card/card-site.tsx
+++ b/ui/src/components/card/card-site.tsx
@@ -47,9 +47,10 @@ export const SiteCard: React.FC = ({ tokenId }) => {
const { name, owner, image, external_url: externalUrl } = data as any;
return (
= ({ tokenId }) => {
>
= (props) => {
+ const { width = '1.5em', height = '1.5em' } = props;
+ return (
+
+ MetaMask
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/ui/src/components/icon/icon-types.tsx b/ui/src/components/icon/icon-types.tsx
new file mode 100644
index 0000000..3f362f7
--- /dev/null
+++ b/ui/src/components/icon/icon-types.tsx
@@ -0,0 +1,15 @@
+import { FaWallet } from 'react-icons/fa';
+import { IoExitOutline } from 'react-icons/io5';
+import { AiOutlineCopy } from 'react-icons/ai';
+import { MetamaskIcon } from './custom';
+
+export const IconLibrary = Object.freeze({
+ copy: AiOutlineCopy,
+ 'log-out': IoExitOutline,
+ metamask: MetamaskIcon,
+ wallet: FaWallet,
+});
+
+export type IconName = keyof typeof IconLibrary;
+
+export type IconType = typeof IconLibrary[Name];
diff --git a/ui/src/components/icon/icon.tsx b/ui/src/components/icon/icon.tsx
new file mode 100644
index 0000000..eeb8115
--- /dev/null
+++ b/ui/src/components/icon/icon.tsx
@@ -0,0 +1,16 @@
+import {
+ forwardRef,
+ IconProps as IconPropsChakra,
+ Icon as IconChakra,
+} from '@chakra-ui/react';
+import { IconLibrary, IconName, IconType } from './icon-types';
+
+export type IconComponentProps = IconPropsChakra & { name: IconName };
+
+export const Icon = forwardRef(
+ ({ name, ...iconProps }, ref) => {
+ const IconElement: IconType = IconLibrary[name];
+ return ;
+ }
+);
+
diff --git a/ui/src/components/icon/index.ts b/ui/src/components/icon/index.ts
new file mode 100644
index 0000000..bd7846d
--- /dev/null
+++ b/ui/src/components/icon/index.ts
@@ -0,0 +1 @@
+export * from './icon';
diff --git a/ui/src/components/wallet-button/index.ts b/ui/src/components/wallet-button/index.ts
index 5e6feaf..d1199ac 100644
--- a/ui/src/components/wallet-button/index.ts
+++ b/ui/src/components/wallet-button/index.ts
@@ -1 +1,2 @@
export * from './wallet-button';
+export * from './wallet.utils';
diff --git a/ui/src/components/wallet-button/wallet-button.tsx b/ui/src/components/wallet-button/wallet-button.tsx
index c56874b..9d86966 100644
--- a/ui/src/components/wallet-button/wallet-button.tsx
+++ b/ui/src/components/wallet-button/wallet-button.tsx
@@ -1,7 +1,16 @@
import { useCallback } from 'react';
import { useAppDispatch, useWalletStore, walletActions } from '@/store';
import { contractAddress } from '@/utils';
-import { Menu, MenuButton, MenuList, MenuItem, Button } from '@chakra-ui/react';
+import {
+ Menu,
+ MenuButton,
+ MenuList,
+ MenuItem,
+ Button,
+ Flex,
+} from '@chakra-ui/react';
+import { Icon } from '../icon';
+import { WalletType } from './wallet.utils';
const WalletMenu: React.FC = () => {
const { account = '', provider } = useWalletStore();
@@ -17,13 +26,33 @@ const WalletMenu: React.FC = () => {
}, [dispatch]);
return (
-