From 57cff69f075b4f8de7ae408e16f3802a89cbca59 Mon Sep 17 00:00:00 2001 From: gin-lsl Date: Thu, 11 Apr 2024 15:10:32 +0800 Subject: [PATCH 01/10] feat(solana): Add Solflare (metamask snap) wallet --- packages/solana/src/wallets/built-in.ts | 4 ++++ packages/web3/src/solana/demos/more-wallets.tsx | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/solana/src/wallets/built-in.ts b/packages/solana/src/wallets/built-in.ts index c0f244ac4..6c3b2d3d4 100644 --- a/packages/solana/src/wallets/built-in.ts +++ b/packages/solana/src/wallets/built-in.ts @@ -1,6 +1,7 @@ import { metadata_Backpack, metadata_CoinbaseWallet, + metadata_MetaMask, metadata_OkxWallet, metadata_Phantom, metadata_Trust, @@ -8,6 +9,7 @@ import { } from '@ant-design/web3-assets'; import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-coinbase'; import { TrustWalletAdapter } from '@solana/wallet-adapter-trust'; +import { SolflareWalletAdapter } from '@solana/wallet-adapter-solflare'; import { WalletConnectWalletAdapter } from '../wallet-connect-adapter'; import { StandardWalletFactory, WalletConnectWalletFactory, WalletFactory } from './factory'; @@ -15,6 +17,8 @@ import { StandardWalletFactory, WalletConnectWalletFactory, WalletFactory } from export const CoinbaseWallet = () => WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet); export const TrustWallet = () => WalletFactory(new TrustWalletAdapter(), metadata_Trust); +export const MetamaskSnapWallet = () => + WalletFactory(new SolflareWalletAdapter(), metadata_MetaMask); export const PhantomWallet = () => StandardWalletFactory(metadata_Phantom); export const OKXWallet = () => StandardWalletFactory(metadata_OkxWallet); diff --git a/packages/web3/src/solana/demos/more-wallets.tsx b/packages/web3/src/solana/demos/more-wallets.tsx index 332387b0e..b9cd0cbc0 100644 --- a/packages/web3/src/solana/demos/more-wallets.tsx +++ b/packages/web3/src/solana/demos/more-wallets.tsx @@ -1,9 +1,17 @@ import { ConnectButton, Connector } from '@ant-design/web3'; -import { CoinbaseWallet, PhantomWallet, SolanaWeb3ConfigProvider } from '@ant-design/web3-solana'; +import { + CoinbaseWallet, + MetamaskSnapWallet, + PhantomWallet, + SolanaWeb3ConfigProvider, +} from '@ant-design/web3-solana'; const App: React.FC = () => { return ( - + From d73ca89fa158931be990c7dc72657769e3d1e2ad Mon Sep 17 00:00:00 2001 From: gin-lsl Date: Tue, 30 Apr 2024 17:28:53 +0800 Subject: [PATCH 02/10] feat: add Solflare icons --- .../components/solflare-circle-colorful.tsx | 26 +++++++++++++++++++ .../src/components/solflare-circle-filled.tsx | 26 +++++++++++++++++++ .../src/components/solflare-colorful.tsx | 26 +++++++++++++++++++ .../icons/src/components/solflare-filled.tsx | 26 +++++++++++++++++++ packages/icons/src/index.ts | 4 +++ .../src/svgs/solflare-circle-colorful.svg | 16 ++++++++++++ .../icons/src/svgs/solflare-circle-filled.svg | 6 +++++ packages/icons/src/svgs/solflare-colorful.svg | 16 ++++++++++++ packages/icons/src/svgs/solflare-filled.svg | 3 +++ 9 files changed, 149 insertions(+) create mode 100644 packages/icons/src/components/solflare-circle-colorful.tsx create mode 100644 packages/icons/src/components/solflare-circle-filled.tsx create mode 100644 packages/icons/src/components/solflare-colorful.tsx create mode 100644 packages/icons/src/components/solflare-filled.tsx create mode 100644 packages/icons/src/svgs/solflare-circle-colorful.svg create mode 100644 packages/icons/src/svgs/solflare-circle-filled.svg create mode 100644 packages/icons/src/svgs/solflare-colorful.svg create mode 100644 packages/icons/src/svgs/solflare-filled.svg diff --git a/packages/icons/src/components/solflare-circle-colorful.tsx b/packages/icons/src/components/solflare-circle-colorful.tsx new file mode 100644 index 000000000..56b578f65 --- /dev/null +++ b/packages/icons/src/components/solflare-circle-colorful.tsx @@ -0,0 +1,26 @@ +// GENERATE BY ./scripts/generate.ts +// DON NOT EDIT IT MANUALLY +import * as React from 'react'; +import AntdIcon from '@ant-design/icons'; +import { type IconBaseProps } from '@ant-design/icons/lib/components/Icon'; +import { ConfigProvider } from 'antd'; +import classnames from 'classnames'; + +import SVGComponent from '../svgs/solflare-circle-colorful.svg'; + +/**![SolflareCircleColorful](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+CjxkZWZzPgogIDxsaW5lYXJHcmFkaWVudCBpZD0iYW50LXdlYjMtaWNvbi1zb2xmbGFyZS1jaXJjbGUtY29sb3JmdWwtMDEiIHgxPSIxMy4zNzUlIiB4Mj0iNzAuMjQxJSIgeTE9IjE1LjkwNyUiIHkyPSI2Ny42MDIlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNGRkMxMEIiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI0ZCM0YyRSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJhbnQtd2ViMy1pY29uLXNvbGZsYXJlLWNpcmNsZS1jb2xvcmZ1bC0wMiIgY3g9IjM4LjU4JSIgY3k9IjMxLjU0JSIgcj0iNzMuNDkzJSIgZng9IjM4LjU4JSIgZnk9IjMxLjU0JSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguMzc4MiAuOTI0MDEgLS45MTM5NCAuMzgyMzcgLjUyOCAtLjE2MikiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI0ZGQzEwQiIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjRkIzRjJFIi8+CiAgPC9yYWRpYWxHcmFkaWVudD4KICA8L2RlZnM+CiAgPGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgIDxwYXRoIGZpbGw9InVybCgjYW50LXdlYjMtaWNvbi1zb2xmbGFyZS1jaXJjbGUtY29sb3JmdWwtMDEpIiBkPSJNMzg4LjI0MiA3MzkuMDAxYzguMTEzIDAgMTQuNjY5IDYuNDk0IDE0LjY2OSAxNC41IDAgOC4wMi02LjU1NiAxNC40OTktMTQuNjU0IDE0LjQ5OS04LjA0Ny4wMzQtMTQuNjAyLTYuNDUzLTE0LjY1My0xNC41IDAtOC4wMDUgNi41NTUtMTQuNDk5IDE0LjY1My0xNC40OTl6TTM3Mi4zMzkgNDYuMTk3YTE1LjI3IDE1LjI3IDAgMCAxIDEzLjkyOCAxMy4wNjVsMTcuNDMgMTI2LjcxNWM1Ljg2MiA0MS44NzggNTYuMzYyIDYwLjAwMiA4Ny41MzYgMzEuNTU5TDY2NS45NjUgNTguNDljNC4yMjktMy44MjggMTAuNzQzLTMuNTY3IDE0LjY1My41ODZhMTAuMTggMTAuMTggMCAwIDEgLjI2MyAxMy42MmwtMTUyLjM5NyAxNzUuNzhjLTI4LjA0MiAzMi4zLTcuMzQyIDgyLjc0IDM1LjQxNSA4Ni4zMzNsMTM0LjQ1OCAxMi45NTdhMTIuMDggMTIuMDggMCAwIDEgMTAuOTUxIDEzLjE1NyAxMi4wOSAxMi4wOSAwIDAgMS0xMC4yNDIgMTAuNzJsLTE0MS4yNzUgMjIuMDU4Yy00MS4wMyA1LjYtNTkuNjAxIDU0LjE3Mi0zMi45MTcgODUuNzMxbDQ5LjY2OCA1OC41NTJhMTEuMDQ0IDExLjA0NCAwIDAgMS0xLjM4OCAxNS43MDMgMTEuMzggMTEuMzggMCAwIDEtMTQuMTE0LjMwOGwtNjEuMjItNDYuMjQzYy0zMy4wNC0yNC44MzQtODAuNjcyLTMuNzE4LTg0LjE1OCAzNy40MDVsLTEzLjQ5NyAxNjAuMzcxYy0uNjA0IDYuNjYtNi40OCAxMS41NzgtMTMuMTQyIDEwLjk5OGExMi4xMjQgMTIuMTI0IDAgMCAxLTExLjA2LTEwLjM2NUwzNTQuNTcgNTUxLjIzNWMtNS43MzgtNDEuODYzLTU2LjIzOC02MC4wMDItODcuNTM1LTMxLjU1OWwtMTg1LjkgMTY5LjI3MmE5LjU2MyA5LjU2MyAwIDAgMS0xMy4zODgtLjU0IDkuMjcgOS4yNyAwIDAgMS0uMjMyLTEyLjQzMkwyMjkuNzY4IDQ4OC43NWMyOC4wNDItMzIuMyA3LjQ2NS04Mi43MzktMzUuMjkyLTg2LjM0OEw1OS45ODcgMzg5LjQ0NWExMi4wOCAxMi4wOCAwIDAgMS0xMC45NTItMTMuMTU4IDEyLjExIDEyLjExIDAgMCAxIDEwLjI0Mi0xMC43MkwyMDAuNDYgMzQzLjUxYzQxLjAzLTUuNTg0IDU5LjcyNS01NC4xNTcgMzMuMDQtODUuNzE2bC0zMy44MS0zOS44NTdhMTMuNjk3IDEzLjY5NyAwIDAgMSAxLjc0Mi0xOS40NjYgMTQuMTE0IDE0LjExNCAwIDAgMSAxNy40NzYtLjM4Nmw0MS41MjQgMzEuMzc0YzMzLjA0IDI0Ljg1IDgwLjY3MiAzLjczMyA4NC4xNTgtMzcuMzlsMTEuMTY3LTEzMi4wMzZjLjc2Ny04LjM4OSA4LjE3NS0xNC41NzYgMTYuNTY2LTEzLjgzNnpNMTQuNjY5IDM2MS40OGM4LjA5OCAwIDE0LjY1NCA2LjQ3OCAxNC42NTQgMTQuNDk5IDAgOC4wMDUtNi41NTYgMTQuNS0xNC42NTQgMTQuNS04LjA1My4wNDItMTQuNjE4LTYuNDQ3LTE0LjY2OS0xNC41IDAtOC4wMiA2LjU3MS0xNC41IDE0LjY1NC0xNC41em03MzUuNDUzLTE0LjczMWM4LjA4MyAwIDE0LjY1NCA2LjQ3OCAxNC42NTQgMTQuNSAwIDguMDItNi41NzEgMTQuNDk5LTE0LjY1NCAxNC40OTktOC4wNTIuMDQyLTE0LjYxOC02LjQ0Ny0xNC42NjktMTQuNSAwLTguMDIgNi41NTYtMTQuNDk5IDE0LjY1NC0xNC40OTl6TTM3MC4xOTUgMGM4LjA5OCAwIDE0LjY1MyA2LjQ5NCAxNC42NTMgMTQuNSAwIDguMDItNi41NTUgMTQuNDk5LTE0LjY1MyAxNC40OTlhMTQuNTc3IDE0LjU3NyAwIDAgMS0xNC42NTQtMTQuNUMzNTUuNTQxIDYuNDk0IDM2Mi4wOTcgMCAzNzAuMTk1IDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzMCAxMjgpIi8+CiAgICA8cGF0aCBmaWxsPSJ1cmwoI2FudC13ZWIzLWljb24tc29sZmxhcmUtY2lyY2xlLWNvbG9yZnVsLTAyKSIgZD0iTTM3OS4wMDIgNTA1LjYyNGM3Ni41MDcgMCAxMzguNTE1LTYxLjM0NCAxMzguNTE1LTEzNy4wMTggMC03NS42NTktNjIuMDA4LTEzNy4wMDMtMTM4LjUxNS0xMzcuMDAzcy0xMzguNTE0IDYxLjM0NC0xMzguNTE0IDEzNy4wMDNjMCA3NS42NzQgNjIuMDA3IDEzNy4wMDMgMTM4LjUxNCAxMzcuMDAzeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwIDEyOCkiLz4KICA8L2c+Cjwvc3ZnPgo=) */ +export const SolflareCircleColorful = React.forwardRef((props, ref) => { + const { getPrefixCls } = React.useContext(ConfigProvider.ConfigContext); + const prefixCls = getPrefixCls('web3-icon-solflare-circle-colorful'); + + return ( + + ); +}); + +SolflareCircleColorful.displayName = 'SolflareCircleColorful'; diff --git a/packages/icons/src/components/solflare-circle-filled.tsx b/packages/icons/src/components/solflare-circle-filled.tsx new file mode 100644 index 000000000..be96732e6 --- /dev/null +++ b/packages/icons/src/components/solflare-circle-filled.tsx @@ -0,0 +1,26 @@ +// GENERATE BY ./scripts/generate.ts +// DON NOT EDIT IT MANUALLY +import * as React from 'react'; +import AntdIcon from '@ant-design/icons'; +import { type IconBaseProps } from '@ant-design/icons/lib/components/Icon'; +import { ConfigProvider } from 'antd'; +import classnames from 'classnames'; + +import SVGComponent from '../svgs/solflare-circle-filled.svg'; + +/**![SolflareCircleFilled](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+CiAgPGcgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgIDxjaXJjbGUgY3g9IjUxMiIgY3k9IjUxMiIgcj0iNTExLjUiIC8+CiAgICA8cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik01MTcuODkgODY2Ljk5NWM4LjEzNCAwIDE0LjcyNSA2LjQ5MSAxNC43MjUgMTQuNTAxUzUyNi4wMjQgODk2IDUxNy44OTEgODk2Yy04LjEzNCAwLTE0LjcyNy02LjQ5My0xNC43MjctMTQuNTA0czYuNTkzLTE0LjUwMSAxNC43MjctMTQuNTAxbS0xNS45OTctNjkyLjgwMmM3LjE5Ni41OTEgMTMuMDA4IDYuMDIxIDEzLjk4MiAxMy4wNjFsMTcuNTE0IDEyNi43MjRjNS44ODMgNDEuODY2IDU2LjU5MiA2MC4wMDcgODcuODk0IDMxLjU1NmwxNzUuNDg2LTE1OS4wNWM0LjIzMy0zLjgzNyAxMC44MjUtMy41NyAxNC43MjQuNTk0YTEwLjEzIDEwLjEzIDAgMCAxIC4yNTIgMTMuNjE2TDY1OC43MTkgMzc2LjQ3Yy0yOC4xNzIgMzIuMzAyLTcuMzg3IDgyLjc0MyAzNS41NTggODYuMzQzbDEzNS4wMiAxMi45NjFjNi43MjYuNjQ2IDExLjY0NSA2LjUzMiAxMC45ODggMTMuMTQ3LS41NDEgNS40NTYtNC43NjEgOS44NjUtMTAuMjY2IDEwLjcxOWwtMTQxLjg3NiAyMi4wNmMtNDEuMTk0IDUuNTkyLTU5Ljg0OSA1NC4xNjYtMzMuMDU1IDg1LjcyM2w0OS44NzggNTguNTUyYzQuMDE4IDQuNzE4IDMuMzg5IDExLjc0Ny0xLjQwOCAxNS43LTQuMDYyIDMuMzUtOS45NDEgMy40ODEtMTQuMTU0LjMxM2wtNjEuNDg2LTQ2LjI0Yy0zMy4xOC0yNC44NDYtODEuMDA3LTMuNzI4LTg0LjUxMyAzNy4zOTVsLTEzLjU0OSAxNjAuMzc3Yy0uNTYgNi42MjQtNi40NzIgMTEuNTUtMTMuMjA2IDEwLjk5OC01LjcxNC0uNDY2LTEwLjMzMS00Ljc3Ny0xMS4xMDctMTAuMzY4TDQ4NC4wNTggNjc5LjIzYy01Ljc2LTQxLjg2Ny01Ni40NjctNjAuMDA4LTg3Ljg5NC0zMS41NTVMMjA5LjQ4MiA4MTYuOTQyYy0zLjg2NSAzLjUwNC05Ljg4NCAzLjI2Mi0xMy40NDUtLjU0YTkuMjUgOS4yNSAwIDAgMS0uMjMyLTEyLjQzMUwzNTguNzI4IDYxNi43NGMyOC4xNzItMzIuMzAyIDcuNTEzLTgyLjc0My0zNS40MzMtODYuMzQzbC0xMzUuMDUxLTEyLjk2M2MtNi43MjQtLjY0Ni0xMS42NDQtNi41MzItMTAuOTg4LTEzLjE0OS41NDEtNS40NTYgNC43NjItOS44NjMgMTAuMjY1LTEwLjcxOWwxNDEuNzgzLTIyLjA1N2M0MS4xOTQtNS41OSA1OS45NzUtNTQuMTY1IDMzLjE4Mi04NS43MjJsLTMzLjk1NC0zOS44NTdjLTQuOTgyLTUuODUtNC4yMDItMTQuNTY3IDEuNzQ0LTE5LjQ3IDUuMDQtNC4xNTQgMTIuMzM0LTQuMzEzIDE3LjU1Ni0uMzgzbDQxLjY5NyAzMS4zODRjMzMuMTggMjQuODQ3IDgxLjAwNyAzLjcyOSA4NC41MTMtMzcuMzk0bDExLjIxNi0xMzIuMDMzYy43MDktOC4zNDIgOC4xNTYtMTQuNTM5IDE2LjYzNS0xMy44NDFNMTQyLjcyNiA0ODkuNDY1YzguMTMyIDAgMTQuNzI1IDYuNDkzIDE0LjcyNSAxNC41MDJzLTYuNTkzIDE0LjUwMy0xNC43MjUgMTQuNTAzUzEyOCA1MTEuOTc3IDEyOCA1MDMuOTY3czYuNTkzLTE0LjUwMiAxNC43MjYtMTQuNTAybTczOC41NDgtMTQuNzI2YzguMTMzIDAgMTQuNzI2IDYuNDkzIDE0LjcyNiAxNC41MDEgMCA4LjAxLTYuNTkzIDE0LjUwNC0xNC43MjYgMTQuNTA0LTguMTMyIDAtMTQuNzI1LTYuNDkzLTE0LjcyNS0xNC41MDQgMC04LjAwOCA2LjU5My0xNC41MDEgMTQuNzI1LTE0LjUwMU00OTkuNzY2IDEyOGM4LjEzMyAwIDE0LjcyNiA2LjQ5MyAxNC43MjYgMTQuNTAzcy02LjU5MyAxNC41MDMtMTQuNzI2IDE0LjUwM2MtOC4xMzEgMC0xNC43MjUtNi40OTMtMTQuNzI1LTE0LjUwM1M0OTEuNjM1IDEyOCA0OTkuNzY2IDEyOCIvPgogIDwvZz4KPC9zdmc+Cg==) */ +export const SolflareCircleFilled = React.forwardRef((props, ref) => { + const { getPrefixCls } = React.useContext(ConfigProvider.ConfigContext); + const prefixCls = getPrefixCls('web3-icon-solflare-circle-filled'); + + return ( + + ); +}); + +SolflareCircleFilled.displayName = 'SolflareCircleFilled'; diff --git a/packages/icons/src/components/solflare-colorful.tsx b/packages/icons/src/components/solflare-colorful.tsx new file mode 100644 index 000000000..0be8b57fa --- /dev/null +++ b/packages/icons/src/components/solflare-colorful.tsx @@ -0,0 +1,26 @@ +// GENERATE BY ./scripts/generate.ts +// DON NOT EDIT IT MANUALLY +import * as React from 'react'; +import AntdIcon from '@ant-design/icons'; +import { type IconBaseProps } from '@ant-design/icons/lib/components/Icon'; +import { ConfigProvider } from 'antd'; +import classnames from 'classnames'; + +import SVGComponent from '../svgs/solflare-colorful.svg'; + +/**![SolflareColorful](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImFudC13ZWIzLWljb24tc29sZmxhcmUtY2lyY2xlLWNvbG9yZnVsLTAxIiB4MT0iMTMuMzc1JSIgeDI9IjcwLjI0MSUiIHkxPSIxNS45MDclIiB5Mj0iNjcuNjAyJSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNGRkMxMEIiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjRkIzRjJFIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJhbnQtd2ViMy1pY29uLXNvbGZsYXJlLWNpcmNsZS1jb2xvcmZ1bC0wMiIgY3g9IjM4LjU4JSIgY3k9IjMxLjU0JSIgcj0iNzMuNDkzJSIgZng9IjM4LjU4JSIgZnk9IjMxLjU0JSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguMzc4MiAuOTI0MDEgLS45MTM5NCAuMzgyMzcgLjUyOCAtLjE2MikiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjRkZDMTBCIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI0ZCM0YyRSIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICA8L2RlZnM+CiAgPGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgPHBhdGggZmlsbD0idXJsKCNhbnQtd2ViMy1pY29uLXNvbGZsYXJlLWNpcmNsZS1jb2xvcmZ1bC0wMSkiIGQ9Ik01MTcuNjU2IDk4NS4zMzVjMTAuODE3IDAgMTkuNTU4IDguNjU4IDE5LjU1OCAxOS4zMzIgMCAxMC42OTUtOC43NCAxOS4zMzMtMTkuNTM4IDE5LjMzMy0xMC43My4wNDUtMTkuNDctOC42MDQtMTkuNTM4LTE5LjMzMyAwLTEwLjY3NCA4Ljc0LTE5LjMzMiAxOS41MzgtMTkuMzMyek00OTYuNDUyIDYxLjU5NmEyMC4zNiAyMC4zNiAwIDAgMSAxOC41NzEgMTcuNDJsMjMuMjQgMTY4Ljk1M2M3LjgxNSA1NS44MzcgNzUuMTUgODAuMDAzIDExNi43MTQgNDIuMDc5bDIzMi45NzYtMjEyLjA2YzUuNjM5LTUuMTA0IDE0LjMyNS00Ljc1NiAxOS41MzguNzgxYTEzLjU3NCAxMy41NzQgMCAwIDEgLjM1IDE4LjE2TDcwNC42NDUgMzMxLjMwNGMtMzcuMzkgNDMuMDY2LTkuNzkgMTEwLjMxOCA0Ny4yMiAxMTUuMTFsMTc5LjI3NyAxNy4yNzVhMTYuMTAzIDE2LjEwMyAwIDAgMSAxNC42MDMgMTcuNTQ0IDE2LjEyNCAxNi4xMjQgMCAwIDEtMTMuNjU2IDE0LjI5M2wtMTg4LjM2OCAyOS40MWMtNTQuNzA2IDcuNDY2LTc5LjQ2OCA3Mi4yMy00My44ODkgMTE0LjMwOGw2Ni4yMjQgNzguMDdhMTQuNzI2IDE0LjcyNiAwIDAgMS0xLjg1IDIwLjkzNiAxNS4xOCAxNS4xOCAwIDAgMS0xOC44MTkuNDEybC04MS42MjgtNjEuNjU4Yy00NC4wNTMtMzMuMTEyLTEwNy41NjItNC45NTctMTEyLjIxIDQ5Ljg3M2wtMTcuOTk2IDIxMy44MjljLS44MDQgOC44OC04LjY0IDE1LjQzNi0xNy41MjIgMTQuNjY0YTE2LjE2NSAxNi4xNjUgMCAwIDEtMTQuNzQ2LTEzLjgybC0yOC41MjYtMjA2LjU3Yy03LjY1LTU1LjgxNy03NC45ODUtODAuMDAzLTExNi43MTQtNDIuMDc4TDEwOC4xNzkgOTE4LjU5N2MtNS4xNTIgNC42NjYtMTMuMDkyIDQuMzQ2LTE3Ljg1MS0uNzJhMTIuMzYgMTIuMzYgMCAwIDEtLjMwOS0xNi41NzZsMjE2LjMzOC0yNDkuNjM1YzM3LjM5LTQzLjA2NiA5Ljk1NC0xMTAuMzE4LTQ3LjA1Ni0xMTUuMTNMNzkuOTgzIDUxOS4yNmExNi4xMDMgMTYuMTAzIDAgMCAxLTE0LjYwMy0xNy41NDMgMTYuMTQ1IDE2LjE0NSAwIDAgMSAxMy42NTctMTQuMjk0bDE4OC4yNDQtMjkuNDFjNTQuNzA2LTcuNDQ1IDc5LjYzMy03Mi4yMDggNDQuMDUzLTExNC4yODdsLTQ1LjA4Mi01My4xNDRhMTguMjYzIDE4LjI2MyAwIDAgMSAyLjMyNC0yNS45NTQgMTguODIgMTguODIgMCAwIDEgMjMuMzAyLS41MTVsNTUuMzY1IDQxLjgzMmM0NC4wNTMgMzMuMTMzIDEwNy41NjIgNC45NzcgMTEyLjIxLTQ5Ljg1M2wxNC44OS0xNzYuMDQ4YzEuMDIyLTExLjE4NSAxMC45LTE5LjQzNSAyMi4wODgtMTguNDQ4ek0xOS41NTkgNDgxLjk3M2MxMC43OTcgMCAxOS41MzggOC42MzggMTkuNTM4IDE5LjMzMiAwIDEwLjY3NC04Ljc0MSAxOS4zMzMtMTkuNTM4IDE5LjMzM0M4LjgyIDUyMC42OTUuMDY4IDUxMi4wNDIgMCA1MDEuMzA1YzAtMTAuNjk0IDguNzYxLTE5LjMzMiAxOS41MzgtMTkuMzMyem05ODAuNjA0LTE5LjY0MWMxMC43NzcgMCAxOS41MzggOC42MzggMTkuNTM4IDE5LjMzMnMtOC43NjEgMTkuMzMzLTE5LjUzOCAxOS4zMzNjLTEwLjczNy4wNTctMTkuNDktOC41OTUtMTkuNTU4LTE5LjMzMyAwLTEwLjY5NCA4Ljc0LTE5LjMzMiAxOS41MzgtMTkuMzMyek00OTMuNTkzIDBjMTAuNzk3IDAgMTkuNTM4IDguNjU4IDE5LjUzOCAxOS4zMzIgMCAxMC42OTUtOC43NCAxOS4zMzMtMTkuNTM4IDE5LjMzM2ExOS40MzcgMTkuNDM3IDAgMCAxLTE5LjUzOC0xOS4zMzNDNDc0LjA1NSA4LjY1OCA0ODIuNzk1IDAgNDkzLjU5MyAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyKSIvPgogICAgICA8cGF0aCBmaWxsPSJ1cmwoI2FudC13ZWIzLWljb24tc29sZmxhcmUtY2lyY2xlLWNvbG9yZnVsLTAyKSIgZD0iTTUwNS4zMzYgNjc0LjE2NmMxMDIuMDEgMCAxODQuNjg2LTgxLjc5MyAxODQuNjg2LTE4Mi42OTEgMC0xMDAuODc4LTgyLjY3Ni0xODIuNjctMTg0LjY4Ni0xODIuNjctMTAyLjAwOSAwLTE4NC42ODYgODEuNzkyLTE4NC42ODYgMTgyLjY3IDAgMTAwLjg5OCA4Mi42NzcgMTgyLjY3IDE4NC42ODYgMTgyLjY3eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMikiLz4KICA8L2c+Cjwvc3ZnPgo=) */ +export const SolflareColorful = React.forwardRef((props, ref) => { + const { getPrefixCls } = React.useContext(ConfigProvider.ConfigContext); + const prefixCls = getPrefixCls('web3-icon-solflare-colorful'); + + return ( + + ); +}); + +SolflareColorful.displayName = 'SolflareColorful'; diff --git a/packages/icons/src/components/solflare-filled.tsx b/packages/icons/src/components/solflare-filled.tsx new file mode 100644 index 000000000..f4202a764 --- /dev/null +++ b/packages/icons/src/components/solflare-filled.tsx @@ -0,0 +1,26 @@ +// GENERATE BY ./scripts/generate.ts +// DON NOT EDIT IT MANUALLY +import * as React from 'react'; +import AntdIcon from '@ant-design/icons'; +import { type IconBaseProps } from '@ant-design/icons/lib/components/Icon'; +import { ConfigProvider } from 'antd'; +import classnames from 'classnames'; + +import SVGComponent from '../svgs/solflare-filled.svg'; + +/**![SolflareFilled](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+CiAgPHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNNTE3Ljg5IDg2Ni45OTVjOC4xMzQgMCAxNC43MjUgNi40OTEgMTQuNzI1IDE0LjUwMVM1MjYuMDI0IDg5NiA1MTcuODkxIDg5NmMtOC4xMzQgMC0xNC43MjctNi40OTMtMTQuNzI3LTE0LjUwNHM2LjU5My0xNC41MDEgMTQuNzI3LTE0LjUwMW0tMTUuOTk3LTY5Mi44MDJjNy4xOTYuNTkxIDEzLjAwOCA2LjAyMSAxMy45ODIgMTMuMDYxbDE3LjUxNCAxMjYuNzI0YzUuODgzIDQxLjg2NiA1Ni41OTIgNjAuMDA3IDg3Ljg5NCAzMS41NTZsMTc1LjQ4Ni0xNTkuMDVjNC4yMzMtMy44MzcgMTAuODI1LTMuNTcgMTQuNzI0LjU5NGExMC4xMyAxMC4xMyAwIDAgMSAuMjUyIDEzLjYxNkw2NTguNzE5IDM3Ni40N2MtMjguMTcyIDMyLjMwMi03LjM4NyA4Mi43NDMgMzUuNTU4IDg2LjM0M2wxMzUuMDIgMTIuOTYxYzYuNzI2LjY0NiAxMS42NDUgNi41MzIgMTAuOTg4IDEzLjE0Ny0uNTQxIDUuNDU2LTQuNzYxIDkuODY1LTEwLjI2NiAxMC43MTlsLTE0MS44NzYgMjIuMDZjLTQxLjE5NCA1LjU5Mi01OS44NDkgNTQuMTY2LTMzLjA1NSA4NS43MjNsNDkuODc4IDU4LjU1MmM0LjAxOCA0LjcxOCAzLjM4OSAxMS43NDctMS40MDggMTUuNy00LjA2MiAzLjM1LTkuOTQxIDMuNDgxLTE0LjE1NC4zMTNsLTYxLjQ4Ni00Ni4yNGMtMzMuMTgtMjQuODQ2LTgxLjAwNy0zLjcyOC04NC41MTMgMzcuMzk1bC0xMy41NDkgMTYwLjM3N2MtLjU2IDYuNjI0LTYuNDcyIDExLjU1LTEzLjIwNiAxMC45OTgtNS43MTQtLjQ2Ni0xMC4zMzEtNC43NzctMTEuMTA3LTEwLjM2OEw0ODQuMDU4IDY3OS4yM2MtNS43Ni00MS44NjctNTYuNDY3LTYwLjAwOC04Ny44OTQtMzEuNTU1TDIwOS40ODIgODE2Ljk0MmMtMy44NjUgMy41MDQtOS44ODQgMy4yNjItMTMuNDQ1LS41NGE5LjI1IDkuMjUgMCAwIDEtLjIzMi0xMi40MzFMMzU4LjcyOCA2MTYuNzRjMjguMTcyLTMyLjMwMiA3LjUxMy04Mi43NDMtMzUuNDMzLTg2LjM0M2wtMTM1LjA1MS0xMi45NjNjLTYuNzI0LS42NDYtMTEuNjQ0LTYuNTMyLTEwLjk4OC0xMy4xNDkuNTQxLTUuNDU2IDQuNzYyLTkuODYzIDEwLjI2NS0xMC43MTlsMTQxLjc4My0yMi4wNTdjNDEuMTk0LTUuNTkgNTkuOTc1LTU0LjE2NSAzMy4xODItODUuNzIybC0zMy45NTQtMzkuODU3Yy00Ljk4Mi01Ljg1LTQuMjAyLTE0LjU2NyAxLjc0NC0xOS40NyA1LjA0LTQuMTU0IDEyLjMzNC00LjMxMyAxNy41NTYtLjM4M2w0MS42OTcgMzEuMzg0YzMzLjE4IDI0Ljg0NyA4MS4wMDcgMy43MjkgODQuNTEzLTM3LjM5NGwxMS4yMTYtMTMyLjAzM2MuNzA5LTguMzQyIDguMTU2LTE0LjUzOSAxNi42MzUtMTMuODQxTTE0Mi43MjYgNDg5LjQ2NWM4LjEzMiAwIDE0LjcyNSA2LjQ5MyAxNC43MjUgMTQuNTAycy02LjU5MyAxNC41MDMtMTQuNzI1IDE0LjUwM1MxMjggNTExLjk3NyAxMjggNTAzLjk2N3M2LjU5My0xNC41MDIgMTQuNzI2LTE0LjUwMm03MzguNTQ4LTE0LjcyNmM4LjEzMyAwIDE0LjcyNiA2LjQ5MyAxNC43MjYgMTQuNTAxIDAgOC4wMS02LjU5MyAxNC41MDQtMTQuNzI2IDE0LjUwNC04LjEzMiAwLTE0LjcyNS02LjQ5My0xNC43MjUtMTQuNTA0IDAtOC4wMDggNi41OTMtMTQuNTAxIDE0LjcyNS0xNC41MDFNNDk5Ljc2NiAxMjhjOC4xMzMgMCAxNC43MjYgNi40OTMgMTQuNzI2IDE0LjUwM3MtNi41OTMgMTQuNTAzLTE0LjcyNiAxNC41MDNjLTguMTMxIDAtMTQuNzI1LTYuNDkzLTE0LjcyNS0xNC41MDNTNDkxLjYzNSAxMjggNDk5Ljc2NiAxMjgiLz4KPC9zdmc+Cg==) */ +export const SolflareFilled = React.forwardRef((props, ref) => { + const { getPrefixCls } = React.useContext(ConfigProvider.ConfigContext); + const prefixCls = getPrefixCls('web3-icon-solflare-filled'); + + return ( + + ); +}); + +SolflareFilled.displayName = 'SolflareFilled'; diff --git a/packages/icons/src/index.ts b/packages/icons/src/index.ts index 4393d43fb..16d0ec6e3 100644 --- a/packages/icons/src/index.ts +++ b/packages/icons/src/index.ts @@ -490,6 +490,10 @@ export * from './components/solana-circle-colorful'; export * from './components/solana-circle-filled'; export * from './components/solana-colorful'; export * from './components/solana-filled'; +export * from './components/solflare-circle-colorful'; +export * from './components/solflare-circle-filled'; +export * from './components/solflare-colorful'; +export * from './components/solflare-filled'; export * from './components/soul-colorful'; export * from './components/srm-colorful'; export * from './components/srn-circle-colorful'; diff --git a/packages/icons/src/svgs/solflare-circle-colorful.svg b/packages/icons/src/svgs/solflare-circle-colorful.svg new file mode 100644 index 000000000..0797d49e5 --- /dev/null +++ b/packages/icons/src/svgs/solflare-circle-colorful.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/packages/icons/src/svgs/solflare-circle-filled.svg b/packages/icons/src/svgs/solflare-circle-filled.svg new file mode 100644 index 000000000..ebf88e857 --- /dev/null +++ b/packages/icons/src/svgs/solflare-circle-filled.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/icons/src/svgs/solflare-colorful.svg b/packages/icons/src/svgs/solflare-colorful.svg new file mode 100644 index 000000000..58c8b42c6 --- /dev/null +++ b/packages/icons/src/svgs/solflare-colorful.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/packages/icons/src/svgs/solflare-filled.svg b/packages/icons/src/svgs/solflare-filled.svg new file mode 100644 index 000000000..48a65eb7e --- /dev/null +++ b/packages/icons/src/svgs/solflare-filled.svg @@ -0,0 +1,3 @@ + + + From 803b1053073f40268971f420ae855b4ba75c3e6b Mon Sep 17 00:00:00 2001 From: gin-lsl Date: Tue, 30 Apr 2024 18:06:54 +0800 Subject: [PATCH 03/10] add wallet metadata --- packages/assets/src/wallets/index.ts | 1 + packages/assets/src/wallets/solflare.tsx | 25 ++++++++++++++++++++++++ packages/solana/src/wallets/built-in.ts | 8 +++++--- packages/solana/src/wallets/types.ts | 10 +++++++--- 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 packages/assets/src/wallets/solflare.tsx diff --git a/packages/assets/src/wallets/index.ts b/packages/assets/src/wallets/index.ts index 1e4792819..01d2253f9 100644 --- a/packages/assets/src/wallets/index.ts +++ b/packages/assets/src/wallets/index.ts @@ -10,3 +10,4 @@ export * from './xverse'; export * from './unisat-wallet'; export * from './backpack'; export * from './trust'; +export * from './solflare'; diff --git a/packages/assets/src/wallets/solflare.tsx b/packages/assets/src/wallets/solflare.tsx new file mode 100644 index 000000000..2388278d5 --- /dev/null +++ b/packages/assets/src/wallets/solflare.tsx @@ -0,0 +1,25 @@ +import type { WalletMetadata } from '@ant-design/web3-common'; +import { ChromeCircleColorful, SolflareColorful } from '@ant-design/web3-icons'; + +export const metadata_Solflare: WalletMetadata = { + icon: , + name: 'Solflare', + remark: 'Solflare Wallet', + app: { + link: 'https://solflare.com/', + }, + extensions: [ + { + key: 'Chrome', + browserIcon: , + browserName: 'Chrome', + link: 'https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic', + description: 'Access your wallet right from your favorite web browser.', + }, + ], +}; + +export const metadata_SolflareMetaMaskSnap: WalletMetadata & { isMetaMaskSnap: true } = { + ...metadata_Solflare, + isMetaMaskSnap: true, +}; diff --git a/packages/solana/src/wallets/built-in.ts b/packages/solana/src/wallets/built-in.ts index 6c3b2d3d4..2fcb357ed 100644 --- a/packages/solana/src/wallets/built-in.ts +++ b/packages/solana/src/wallets/built-in.ts @@ -1,9 +1,10 @@ import { metadata_Backpack, metadata_CoinbaseWallet, - metadata_MetaMask, metadata_OkxWallet, metadata_Phantom, + metadata_Solflare, + metadata_SolflareMetaMaskSnap, metadata_Trust, metadata_WalletConnect, } from '@ant-design/web3-assets'; @@ -17,12 +18,13 @@ import { StandardWalletFactory, WalletConnectWalletFactory, WalletFactory } from export const CoinbaseWallet = () => WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet); export const TrustWallet = () => WalletFactory(new TrustWalletAdapter(), metadata_Trust); -export const MetamaskSnapWallet = () => - WalletFactory(new SolflareWalletAdapter(), metadata_MetaMask); +export const SolflareMetaMaskSnapWallet = () => + WalletFactory(new SolflareWalletAdapter(), metadata_SolflareMetaMaskSnap); export const PhantomWallet = () => StandardWalletFactory(metadata_Phantom); export const OKXWallet = () => StandardWalletFactory(metadata_OkxWallet); export const BackpackWallet = () => StandardWalletFactory(metadata_Backpack); +export const SolflareWallet = () => StandardWalletFactory(metadata_Solflare); export const WalletConnectWallet = () => WalletConnectWalletFactory(new WalletConnectWalletAdapter(), metadata_WalletConnect); diff --git a/packages/solana/src/wallets/types.ts b/packages/solana/src/wallets/types.ts index 0917e0e5f..345692295 100644 --- a/packages/solana/src/wallets/types.ts +++ b/packages/solana/src/wallets/types.ts @@ -8,15 +8,19 @@ export interface StandardWallet extends Wallet { isStandardWallet: boolean; } -export interface WalletFactory { - create: (getWalletConnect?: () => Promise) => Wallet; +export interface AdapterWallet extends Wallet { + isMetaMaskSnap?: boolean; +} + +export interface WalletFactory { + create: (getWalletConnect?: () => Promise) => W; } export interface StandardWalletFactory extends WalletFactory { create: () => StandardWallet; } -export interface AdapterWalletFactory extends WalletFactory { +export interface AdapterWalletFactory extends WalletFactory { // Only need when use `@solana/wallet-adapter-*` adapter: Adapter; } From 7fba8d5c42357c310e35c0de3f733daba968c87d Mon Sep 17 00:00:00 2001 From: gin-lsl Date: Tue, 30 Apr 2024 18:07:44 +0800 Subject: [PATCH 04/10] add snap icon at WalletList --- packages/web3/src/connect-modal/components/WalletList.tsx | 8 +++++++- packages/web3/src/connect-modal/style/index.tsx | 7 +++++++ packages/web3/src/solana/demos/more-wallets.tsx | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/web3/src/connect-modal/components/WalletList.tsx b/packages/web3/src/connect-modal/components/WalletList.tsx index b0920abac..13eade8a4 100644 --- a/packages/web3/src/connect-modal/components/WalletList.tsx +++ b/packages/web3/src/connect-modal/components/WalletList.tsx @@ -1,5 +1,6 @@ import React, { forwardRef, useContext, useImperativeHandle, useMemo } from 'react'; import { QrcodeOutlined } from '@ant-design/icons'; +import { MetaMaskColorful } from '@ant-design/web3-icons'; import { Button, List, Space, Typography } from 'antd'; import classNames from 'classnames'; @@ -91,7 +92,12 @@ const WalletList = forwardRef((props, r {typeof item.icon === 'string' || item.icon === undefined ? ( {item.name} ) : ( -
{item.icon}
+
+ {item.icon} + {(item as any).isMetaMaskSnap && ( + + )} +
)} {item.name} diff --git a/packages/web3/src/connect-modal/style/index.tsx b/packages/web3/src/connect-modal/style/index.tsx index d3ec7ca76..ef2973977 100644 --- a/packages/web3/src/connect-modal/style/index.tsx +++ b/packages/web3/src/connect-modal/style/index.tsx @@ -129,6 +129,7 @@ const getThemeStyle = (token: ConnectModalToken): CSSInterpolation => { width: '100%', overflow: 'hidden', [`${componentCls}-icon`]: { + position: 'relative', borderRadius: 8, overflow: 'hidden', width: token.iconSize, @@ -136,6 +137,12 @@ const getThemeStyle = (token: ConnectModalToken): CSSInterpolation => { fontSize: token.iconSize, lineHeight: `${token.iconSize}px`, flexShrink: 0, + [`${componentCls}-icon-metamask-snap`]: { + position: 'absolute', + right: 2, + bottom: 2, + fontSize: 12, + }, }, [`${componentCls}-img`]: { borderRadius: 8, diff --git a/packages/web3/src/solana/demos/more-wallets.tsx b/packages/web3/src/solana/demos/more-wallets.tsx index b9cd0cbc0..e1c51f2fa 100644 --- a/packages/web3/src/solana/demos/more-wallets.tsx +++ b/packages/web3/src/solana/demos/more-wallets.tsx @@ -1,16 +1,16 @@ import { ConnectButton, Connector } from '@ant-design/web3'; import { CoinbaseWallet, - MetamaskSnapWallet, PhantomWallet, SolanaWeb3ConfigProvider, + SolflareMetaMaskSnapWallet, } from '@ant-design/web3-solana'; const App: React.FC = () => { return ( From 39f74f86d986733eee990a3667eb61be0f4dd9de Mon Sep 17 00:00:00 2001 From: gin-lsl Date: Mon, 20 May 2024 10:53:10 +0800 Subject: [PATCH 05/10] refactor: Lazy instantiation of adapters --- packages/assets/src/wallets/solflare.tsx | 5 - .../src/solana-provider/config-provider.tsx | 12 +- packages/solana/src/solana-provider/index.tsx | 106 +++++++++--------- packages/solana/src/utils.ts | 28 +++-- packages/solana/src/wallets/built-in.ts | 25 +++-- packages/solana/src/wallets/factory.ts | 90 ++++++++------- packages/solana/src/wallets/types.ts | 25 +++-- .../web3/src/solana/demos/more-wallets.tsx | 12 +- 8 files changed, 158 insertions(+), 145 deletions(-) diff --git a/packages/assets/src/wallets/solflare.tsx b/packages/assets/src/wallets/solflare.tsx index 2388278d5..48860098f 100644 --- a/packages/assets/src/wallets/solflare.tsx +++ b/packages/assets/src/wallets/solflare.tsx @@ -18,8 +18,3 @@ export const metadata_Solflare: WalletMetadata = { }, ], }; - -export const metadata_SolflareMetaMaskSnap: WalletMetadata & { isMetaMaskSnap: true } = { - ...metadata_Solflare, - isMetaMaskSnap: true, -}; diff --git a/packages/solana/src/solana-provider/config-provider.tsx b/packages/solana/src/solana-provider/config-provider.tsx index 1470980c2..47f4f8748 100644 --- a/packages/solana/src/solana-provider/config-provider.tsx +++ b/packages/solana/src/solana-provider/config-provider.tsx @@ -25,7 +25,7 @@ export interface AntDesignWeb3ConfigProviderProps { availableChains: SolanaChainConfig[]; balance?: boolean; currentChain?: SolanaChainConfig; - availableWallets: Wallet[]; + availableWallets?: Wallet[]; connectionError?: WalletConnectionError; autoAddRegisteredWallets?: boolean; onCurrentChainChange?: (chain?: SolanaChainConfig) => void; @@ -137,8 +137,8 @@ export const AntDesignWeb3ConfigProvider: React.FC< .filter((item) => item !== null) as (Chain & SolanaChainConfig)[]; }, [props.availableChains, props.chainAssets]); - const availableWallets = useMemo(() => { - const providedWallets = props.availableWallets.map((w) => { + const availableWallets = useMemo(() => { + const providedWallets = props.availableWallets?.map((w) => { const adapter = wallets?.find((item) => item.adapter.name === w.name)?.adapter; const isWalletConnectAdapter = adapter instanceof WalletConnectWalletAdapter; @@ -161,10 +161,10 @@ export const AntDesignWeb3ConfigProvider: React.FC< return providedWallets; } - const providedWalletNames = providedWallets.map((w) => w.name); + const providedWalletNames = providedWallets?.map((w) => w.name); const autoRegisteredWallets = wallets - .filter((w) => !providedWalletNames.includes(w.adapter.name)) + .filter((w) => !providedWalletNames?.includes(w.adapter.name)) .map((w) => { const adapter = w.adapter; @@ -182,7 +182,7 @@ export const AntDesignWeb3ConfigProvider: React.FC< }; }); - return [...providedWallets, ...autoRegisteredWallets]; + return [...(providedWallets || []), ...(autoRegisteredWallets || [])]; }, [props.availableWallets, wallets, props.autoAddRegisteredWallets]); const currentChain = useMemo(() => { diff --git a/packages/solana/src/solana-provider/index.tsx b/packages/solana/src/solana-provider/index.tsx index 37fddd4d0..3c38c6072 100644 --- a/packages/solana/src/solana-provider/index.tsx +++ b/packages/solana/src/solana-provider/index.tsx @@ -1,6 +1,6 @@ -import { useMemo, useState, type FC, type PropsWithChildren } from 'react'; +import { useEffect, useMemo, useState, type FC, type PropsWithChildren } from 'react'; import { Solana, SolanaDevnet, SolanaTestnet } from '@ant-design/web3-assets/solana'; -import type { Locale } from '@ant-design/web3-common'; +import type { Locale, Wallet } from '@ant-design/web3-common'; import { WalletConnectionError } from '@solana/wallet-adapter-base'; import { ConnectionProvider, @@ -11,7 +11,7 @@ import { import { type UniversalProviderOpts } from '@walletconnect/universal-provider'; import { solana, type SolanaChainConfig } from '../chains'; -import { isAdapterWalletFactory, isWalletConnectFactory } from '../utils'; +import { isAdapterWallet, isWalletConnectWallet } from '../utils'; import { type WalletFactory } from '../wallets/types'; import { AntDesignWeb3ConfigProvider } from './config-provider'; import { useWalletConnectProvider } from './useWalletConnectProvider'; @@ -19,7 +19,7 @@ import { useWalletConnectProvider } from './useWalletConnectProvider'; export interface SolanaWeb3ConfigProviderProps { locale?: Locale; chains?: SolanaChainConfig[]; - wallets?: WalletFactory[]; + wallets: WalletFactory[]; balance?: boolean; autoAddRegisteredWallets?: boolean; @@ -41,7 +41,7 @@ export interface SolanaWeb3ConfigProviderProps { export const SolanaWeb3ConfigProvider: FC> = ({ locale, chains = [solana], - wallets: walletFactories = [], + wallets: walletFactories, balance, rpcProvider, connectionConfig, @@ -55,6 +55,8 @@ export const SolanaWeb3ConfigProvider: FC(); const walletConnectProviderGetter = useWalletConnectProvider(walletConnect); + const [walletInstances, setWalletInstances] = useState(); + const endpoint = useMemo(() => { if (typeof rpcProvider === 'function') { return rpcProvider(currentChain); @@ -63,59 +65,57 @@ export const SolanaWeb3ConfigProvider: FC - factory.create(walletConnectProviderGetter), - ); + useEffect(() => { + const allWallets = walletFactories.map((factory) => factory.create()); - // Only filter out the wallets that have an adapter - const walletAdapters = useMemo( - () => - walletFactories - .filter(isAdapterWalletFactory) - - .map((w) => { - if (isWalletConnectFactory(w)) { - w.adapter.setWalletConnectProviderGetter(walletConnectProviderGetter); - w.adapter.setWalletConnectConfigGetter(() => ({ - walletConnect, - currentChain, - rpcEndpoint: endpoint, - })); - } - - return w.adapter; - }), - [currentChain, endpoint, walletConnect, walletConnectProviderGetter, walletFactories], - ); + setWalletInstances(allWallets); + }, [walletFactories]); + + const availableWalletAdapters = useMemo(() => { + return walletInstances?.filter(isAdapterWallet).map((w) => { + if (isWalletConnectWallet(w)) { + w.adapter.setWalletConnectProviderGetter(walletConnectProviderGetter); + w.adapter.setWalletConnectConfigGetter(() => ({ + walletConnect, + currentChain, + rpcEndpoint: endpoint, + })); + } + + return w.adapter!; + }); + }, [currentChain, endpoint, walletConnect, walletConnectProviderGetter, walletInstances]); return ( - { - if (error instanceof WalletConnectionError) { - setConnectionError(error); - } - - walletProviderProps?.onError?.(error, adapter); - }} - > - setCurrentChain(chain)} - availableChains={chains} - connectionError={connectionError} - autoAddRegisteredWallets={autoAddRegisteredWallets} + {!!availableWalletAdapters && ( + { + if (error instanceof WalletConnectionError) { + setConnectionError(error); + } + + walletProviderProps?.onError?.(error, adapter); + }} > - {children} - - + setCurrentChain(chain)} + availableChains={chains} + connectionError={connectionError} + autoAddRegisteredWallets={autoAddRegisteredWallets} + > + {children} + + + )} ); }; diff --git a/packages/solana/src/utils.ts b/packages/solana/src/utils.ts index bb3d53ef6..ebdf10a13 100644 --- a/packages/solana/src/utils.ts +++ b/packages/solana/src/utils.ts @@ -1,21 +1,31 @@ +import type { Wallet } from '@ant-design/web3-common'; import { WalletReadyState } from '@solana/wallet-adapter-base'; import type { - AdapterWalletFactory as AdapterWalletFactoryType, - WalletConnectWalletFactory as WalletConnectWalletFactoryType, + AdapterWallet, + MetaMaskSnapWalletFactory as MetaMaskSnapWalletFactoryType, + StandardWallet, + WalletConnectWallet, WalletFactory as WalletFactoryType, } from './wallets/types'; export const hasWalletReady = (readyState?: WalletReadyState) => readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable; -export const isWalletConnectFactory = ( +export const isMetaMaskSnapWalletFactory = ( factory: WalletFactoryType, -): factory is WalletConnectWalletFactoryType => - !!(factory as WalletConnectWalletFactoryType).isWalletConnect; +): factory is MetaMaskSnapWalletFactoryType => { + return (factory as MetaMaskSnapWalletFactoryType).isMetaMaskSnap === true; +}; -export const isAdapterWalletFactory = ( - factory: WalletFactoryType, -): factory is AdapterWalletFactoryType => { - return (factory as AdapterWalletFactoryType).adapter !== undefined; +export const isStandardWallet = (wallet: Wallet): wallet is StandardWallet => { + return (wallet as StandardWallet).isStandardWallet === true; +}; + +export const isAdapterWallet = (wallet: Wallet): wallet is AdapterWallet => { + return (wallet as AdapterWallet).adapter !== undefined; +}; + +export const isWalletConnectWallet = (wallet: Wallet): wallet is WalletConnectWallet => { + return (wallet as WalletConnectWallet).isWalletConnect !== undefined; }; diff --git a/packages/solana/src/wallets/built-in.ts b/packages/solana/src/wallets/built-in.ts index 2fcb357ed..8f7a87e7b 100644 --- a/packages/solana/src/wallets/built-in.ts +++ b/packages/solana/src/wallets/built-in.ts @@ -4,7 +4,6 @@ import { metadata_OkxWallet, metadata_Phantom, metadata_Solflare, - metadata_SolflareMetaMaskSnap, metadata_Trust, metadata_WalletConnect, } from '@ant-design/web3-assets'; @@ -15,16 +14,18 @@ import { SolflareWalletAdapter } from '@solana/wallet-adapter-solflare'; import { WalletConnectWalletAdapter } from '../wallet-connect-adapter'; import { StandardWalletFactory, WalletConnectWalletFactory, WalletFactory } from './factory'; -export const CoinbaseWallet = () => - WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet); -export const TrustWallet = () => WalletFactory(new TrustWalletAdapter(), metadata_Trust); -export const SolflareMetaMaskSnapWallet = () => - WalletFactory(new SolflareWalletAdapter(), metadata_SolflareMetaMaskSnap); +export const CoinbaseWallet = WalletFactory( + () => new CoinbaseWalletAdapter(), + metadata_CoinbaseWallet, +); +export const TrustWallet = WalletFactory(() => new TrustWalletAdapter(), metadata_Trust); -export const PhantomWallet = () => StandardWalletFactory(metadata_Phantom); -export const OKXWallet = () => StandardWalletFactory(metadata_OkxWallet); -export const BackpackWallet = () => StandardWalletFactory(metadata_Backpack); -export const SolflareWallet = () => StandardWalletFactory(metadata_Solflare); +export const PhantomWallet = StandardWalletFactory(metadata_Phantom); +export const OKXWallet = StandardWalletFactory(metadata_OkxWallet); +export const BackpackWallet = StandardWalletFactory(metadata_Backpack); +export const SolflareWallet = StandardWalletFactory(metadata_Solflare); -export const WalletConnectWallet = () => - WalletConnectWalletFactory(new WalletConnectWalletAdapter(), metadata_WalletConnect); +export const WalletConnectWallet = WalletConnectWalletFactory( + new WalletConnectWalletAdapter(), + metadata_WalletConnect, +); diff --git a/packages/solana/src/wallets/factory.ts b/packages/solana/src/wallets/factory.ts index e2eb5608f..94adc96a3 100644 --- a/packages/solana/src/wallets/factory.ts +++ b/packages/solana/src/wallets/factory.ts @@ -4,29 +4,35 @@ import type { WalletFactoryBuilder, } from './types'; -export const WalletFactory: WalletFactoryBuilder = (adapter, metadata) => { - return { - adapter, - create: () => { - return { - ...metadata, - name: adapter.name, - remark: metadata.remark, - adapter: adapter, - }; - }, +export const WalletFactory: WalletFactoryBuilder = (adapterBuilder, metadata) => { + return () => { + return { + // adapter, + create: () => { + const adapter = typeof adapterBuilder === 'function' ? adapterBuilder() : adapterBuilder; + + return { + ...metadata, + name: adapter.name, + remark: metadata.remark, + adapter: adapter, + }; + }, + }; }; }; // For Standard wallets export const StandardWalletFactory: StandardWalletFactoryBuilder = (metadata) => { - return { - create: () => { - return { - ...metadata, - isStandardWallet: true, - }; - }, + return () => { + return { + create: () => { + return { + ...metadata, + isStandardWallet: true, + }; + }, + }; }; }; @@ -35,32 +41,34 @@ export const WalletConnectWalletFactory: WalletConnectWalletFactoryBuilder = ( adapter, metadata, ) => { - return { - isWalletConnect: true, - adapter, - create: (getWalletConnectProvider) => { - return { - ...metadata, - name: adapter.name, - remark: metadata.remark, - adapter, + return () => { + return { + create: (getWalletConnectProvider) => { + return { + ...metadata, + name: adapter.name, + remark: metadata.remark, - getQrCode: getWalletConnectProvider - ? async () => { - const walletConnectProvider = await getWalletConnectProvider(); + adapter, + isWalletConnect: true, - if (!walletConnectProvider) { - return Promise.reject(new Error('WalletConnect is not available')); - } + getQrCode: getWalletConnectProvider + ? async () => { + const walletConnectProvider = await getWalletConnectProvider(); - return new Promise((resolve) => { - walletConnectProvider.on('display_uri', (uri: string) => { - resolve({ uri }); + if (!walletConnectProvider) { + return Promise.reject(new Error('WalletConnect is not available')); + } + + return new Promise((resolve) => { + walletConnectProvider.on('display_uri', (uri: string) => { + resolve({ uri }); + }); }); - }); - } - : undefined, - }; - }, + } + : undefined, + }; + }, + }; }; }; diff --git a/packages/solana/src/wallets/types.ts b/packages/solana/src/wallets/types.ts index 345692295..5c6ff64a6 100644 --- a/packages/solana/src/wallets/types.ts +++ b/packages/solana/src/wallets/types.ts @@ -10,6 +10,12 @@ export interface StandardWallet extends Wallet { export interface AdapterWallet extends Wallet { isMetaMaskSnap?: boolean; + adapter?: Adapter; +} + +export interface WalletConnectWallet extends Wallet { + isWalletConnect: boolean; + adapter: WalletConnectWalletAdapter; } export interface WalletFactory { @@ -20,26 +26,27 @@ export interface StandardWalletFactory extends WalletFactory { create: () => StandardWallet; } -export interface AdapterWalletFactory extends WalletFactory { - // Only need when use `@solana/wallet-adapter-*` - adapter: Adapter; +export interface AdapterWalletFactory extends WalletFactory {} + +export interface MetaMaskSnapWalletFactory extends WalletFactory { + isMetaMaskSnap: boolean; + adapterBuilder: () => Adapter; } export interface WalletConnectWalletFactory extends WalletFactory { - adapter: WalletConnectWalletAdapter; - isWalletConnect: boolean; + create: (getWalletConnectProvider: any) => WalletConnectWallet; } export type WalletFactoryBuilder = ( - adapter: Adapter, + adapter: Adapter | (() => Adapter), walletMetadata: WalletMetadata, -) => AdapterWalletFactory; +) => () => AdapterWalletFactory; export type StandardWalletFactoryBuilder = ( walletMetadata: WalletMetadata, -) => StandardWalletFactory; +) => () => StandardWalletFactory; export type WalletConnectWalletFactoryBuilder = ( adapter: WalletConnectWalletAdapter, walletMetadata: WalletMetadata, -) => WalletConnectWalletFactory; +) => () => WalletConnectWalletFactory; diff --git a/packages/web3/src/solana/demos/more-wallets.tsx b/packages/web3/src/solana/demos/more-wallets.tsx index e1c51f2fa..332387b0e 100644 --- a/packages/web3/src/solana/demos/more-wallets.tsx +++ b/packages/web3/src/solana/demos/more-wallets.tsx @@ -1,17 +1,9 @@ import { ConnectButton, Connector } from '@ant-design/web3'; -import { - CoinbaseWallet, - PhantomWallet, - SolanaWeb3ConfigProvider, - SolflareMetaMaskSnapWallet, -} from '@ant-design/web3-solana'; +import { CoinbaseWallet, PhantomWallet, SolanaWeb3ConfigProvider } from '@ant-design/web3-solana'; const App: React.FC = () => { return ( - + From c429884ad3c0867ecc5e17f3c8965ca67829dddf Mon Sep 17 00:00:00 2001 From: gin-lsl Date: Mon, 20 May 2024 10:53:51 +0800 Subject: [PATCH 06/10] chore: update tests --- .../__snapshots__/index.test.tsx.snap | 1172 ++++++++++------- .../__tests__/balance.test.tsx | 4 +- .../solana-provider/__tests__/basic.test.tsx | 17 +- .../__tests__/connect.test.tsx | 37 +- .../__tests__/get-nft-metadata.test.tsx | 2 +- .../__tests__/rpc-provider.test.tsx | 4 +- .../__tests__/standard-wallet.test.tsx | 2 +- .../__tests__/switch-chain.test.tsx | 8 +- .../__tests__/switch-wallet.test.tsx | 4 +- .../__tests__/wallet-connect.test.tsx | 4 +- 10 files changed, 730 insertions(+), 524 deletions(-) diff --git a/packages/icons/src/__tests__/__snapshots__/index.test.tsx.snap b/packages/icons/src/__tests__/__snapshots__/index.test.tsx.snap index 55610640a..c9af1f58f 100644 --- a/packages/icons/src/__tests__/__snapshots__/index.test.tsx.snap +++ b/packages/icons/src/__tests__/__snapshots__/index.test.tsx.snap @@ -8725,6 +8725,202 @@ exports[`Test Icons > should render all icons 156`] = ` `; exports[`Test Icons > should render all icons 157`] = ` + + + +`; + +exports[`Test Icons > should render all icons 158`] = ` + + + +`; + +exports[`Test Icons > should render all icons 159`] = ` + + + +`; + +exports[`Test Icons > should render all icons 160`] = ` + + + +`; + +exports[`Test Icons > should render all icons 161`] = ` should render all icons 157`] = ` `; -exports[`Test Icons > should render all icons 158`] = ` +exports[`Test Icons > should render all icons 162`] = ` should render all icons 158`] = ` `; -exports[`Test Icons > should render all icons 159`] = ` +exports[`Test Icons > should render all icons 163`] = ` should render all icons 159`] = ` `; -exports[`Test Icons > should render all icons 160`] = ` +exports[`Test Icons > should render all icons 164`] = ` should render all icons 160`] = ` `; -exports[`Test Icons > should render all icons 161`] = ` +exports[`Test Icons > should render all icons 165`] = ` should render all icons 161`] = ` `; -exports[`Test Icons > should render all icons 162`] = ` +exports[`Test Icons > should render all icons 166`] = ` should render all icons 162`] = ` `; -exports[`Test Icons > should render all icons 163`] = ` +exports[`Test Icons > should render all icons 167`] = ` should render all icons 163`] = ` `; -exports[`Test Icons > should render all icons 164`] = ` +exports[`Test Icons > should render all icons 168`] = ` should render all icons 164`] = ` `; -exports[`Test Icons > should render all icons 165`] = ` +exports[`Test Icons > should render all icons 169`] = ` should render all icons 165`] = ` `; -exports[`Test Icons > should render all icons 166`] = ` +exports[`Test Icons > should render all icons 170`] = ` should render all icons 166`] = ` `; -exports[`Test Icons > should render all icons 167`] = ` +exports[`Test Icons > should render all icons 171`] = ` should render all icons 167`] = ` `; -exports[`Test Icons > should render all icons 168`] = ` +exports[`Test Icons > should render all icons 172`] = ` should render all icons 168`] = ` `; -exports[`Test Icons > should render all icons 169`] = ` +exports[`Test Icons > should render all icons 173`] = ` should render all icons 169`] = ` `; -exports[`Test Icons > should render all icons 170`] = ` +exports[`Test Icons > should render all icons 174`] = ` should render all icons 170`] = ` `; -exports[`Test Icons > should render all icons 171`] = ` +exports[`Test Icons > should render all icons 175`] = ` should render all icons 171`] = ` `; -exports[`Test Icons > should render all icons 172`] = ` +exports[`Test Icons > should render all icons 176`] = ` should render all icons 172`] = ` `; -exports[`Test Icons > should render all icons 173`] = ` +exports[`Test Icons > should render all icons 177`] = ` should render all icons 173`] = ` `; -exports[`Test Icons > should render all icons 174`] = ` +exports[`Test Icons > should render all icons 178`] = ` should render all icons 174`] = ` `; -exports[`Test Icons > should render all icons 175`] = ` +exports[`Test Icons > should render all icons 179`] = ` should render all icons 175`] = ` `; -exports[`Test Icons > should render all icons 176`] = ` +exports[`Test Icons > should render all icons 180`] = ` should render all icons 176`] = ` `; -exports[`Test Icons > should render all icons 177`] = ` +exports[`Test Icons > should render all icons 181`] = ` should render all icons 177`] = ` `; -exports[`Test Icons > should render all icons 178`] = ` +exports[`Test Icons > should render all icons 182`] = ` should render all icons 178`] = ` `; -exports[`Test Icons > should render all icons 179`] = ` +exports[`Test Icons > should render all icons 183`] = ` should render all icons 179`] = ` `; -exports[`Test Icons > should render all icons 180`] = ` +exports[`Test Icons > should render all icons 184`] = ` should render all icons 180`] = ` `; -exports[`Test Icons > should render all icons 181`] = ` +exports[`Test Icons > should render all icons 185`] = ` should render all icons 181`] = ` `; -exports[`Test Icons > should render all icons 182`] = ` +exports[`Test Icons > should render all icons 186`] = ` should render all icons 182`] = ` `; -exports[`Test Icons > should render all icons 183`] = ` +exports[`Test Icons > should render all icons 187`] = ` should render all icons 183`] = ` `; -exports[`Test Icons > should render all icons 184`] = ` +exports[`Test Icons > should render all icons 188`] = ` should render all icons 184`] = ` `; -exports[`Test Icons > should render all icons 185`] = ` +exports[`Test Icons > should render all icons 189`] = ` should render all icons 185`] = ` `; -exports[`Test Icons > should render all icons 186`] = ` +exports[`Test Icons > should render all icons 190`] = ` should render all icons 186`] = ` `; -exports[`Test Icons > should render all icons 187`] = ` +exports[`Test Icons > should render all icons 191`] = ` should render all icons 187`] = ` `; -exports[`Test Icons > should render all icons 188`] = ` +exports[`Test Icons > should render all icons 192`] = ` should render all icons 188`] = ` `; -exports[`Test Icons > should render all icons 189`] = ` +exports[`Test Icons > should render all icons 193`] = ` should render all icons 189`] = ` `; -exports[`Test Icons > should render all icons 190`] = ` +exports[`Test Icons > should render all icons 194`] = ` should render all icons 190`] = ` `; -exports[`Test Icons > should render all icons 191`] = ` +exports[`Test Icons > should render all icons 195`] = ` should render all icons 191`] = ` `; -exports[`Test Icons > should render all icons 192`] = ` +exports[`Test Icons > should render all icons 196`] = ` should render all icons 192`] = ` `; -exports[`Test Icons > should render all icons 193`] = ` +exports[`Test Icons > should render all icons 197`] = ` should render all icons 193`] = ` `; -exports[`Test Icons > should render all icons 194`] = ` +exports[`Test Icons > should render all icons 198`] = ` should render all icons 194`] = ` `; -exports[`Test Icons > should render all icons 195`] = ` +exports[`Test Icons > should render all icons 199`] = ` should render all icons 195`] = ` `; -exports[`Test Icons > should render all icons 196`] = ` +exports[`Test Icons > should render all icons 200`] = ` should render all icons 196`] = ` `; -exports[`Test Icons > should render all icons 197`] = ` +exports[`Test Icons > should render all icons 201`] = ` should render all icons 197`] = ` `; -exports[`Test Icons > should render all icons 198`] = ` +exports[`Test Icons > should render all icons 202`] = ` should render all icons 198`] = ` `; -exports[`Test Icons > should render all icons 199`] = ` +exports[`Test Icons > should render all icons 203`] = ` should render all icons 199`] = ` `; -exports[`Test Icons > should render all icons 200`] = ` +exports[`Test Icons > should render all icons 204`] = ` should render all icons 200`] = ` `; -exports[`Test Icons > should render all icons 201`] = ` +exports[`Test Icons > should render all icons 205`] = ` should render all icons 201`] = ` `; -exports[`Test Icons > should render all icons 202`] = ` +exports[`Test Icons > should render all icons 206`] = ` should render all icons 202`] = ` `; -exports[`Test Icons > should render all icons 203`] = ` +exports[`Test Icons > should render all icons 207`] = ` should render all icons 203`] = ` `; -exports[`Test Icons > should render all icons 204`] = ` +exports[`Test Icons > should render all icons 208`] = ` should render all icons 204`] = ` `; -exports[`Test Icons > should render all icons 205`] = ` +exports[`Test Icons > should render all icons 209`] = ` should render all icons 205`] = ` `; -exports[`Test Icons > should render all icons 206`] = ` +exports[`Test Icons > should render all icons 210`] = ` should render all icons 206`] = ` `; -exports[`Test Icons > should render all icons 207`] = ` +exports[`Test Icons > should render all icons 211`] = ` should render all icons 207`] = ` `; -exports[`Test Icons > should render all icons 208`] = ` +exports[`Test Icons > should render all icons 212`] = ` should render all icons 208`] = ` `; -exports[`Test Icons > should render all icons 209`] = ` +exports[`Test Icons > should render all icons 213`] = ` should render all icons 209`] = ` `; -exports[`Test Icons > should render all icons 210`] = ` +exports[`Test Icons > should render all icons 214`] = ` should render all icons 210`] = ` `; -exports[`Test Icons > should render all icons 211`] = ` +exports[`Test Icons > should render all icons 215`] = ` should render all icons 211`] = ` `; -exports[`Test Icons > should render all icons 212`] = ` +exports[`Test Icons > should render all icons 216`] = ` should render all icons 212`] = ` `; -exports[`Test Icons > should render all icons 213`] = ` +exports[`Test Icons > should render all icons 217`] = ` should render all icons 213`] = ` `; -exports[`Test Icons > should render all icons 214`] = ` +exports[`Test Icons > should render all icons 218`] = ` should render all icons 214`] = ` `; -exports[`Test Icons > should render all icons 215`] = ` +exports[`Test Icons > should render all icons 219`] = ` should render all icons 215`] = ` `; -exports[`Test Icons > should render all icons 216`] = ` +exports[`Test Icons > should render all icons 220`] = ` should render all icons 216`] = ` `; -exports[`Test Icons > should render all icons 217`] = ` +exports[`Test Icons > should render all icons 221`] = ` should render all icons 217`] = ` `; -exports[`Test Icons > should render all icons 218`] = ` +exports[`Test Icons > should render all icons 222`] = ` should render all icons 218`] = ` `; -exports[`Test Icons > should render all icons 219`] = ` +exports[`Test Icons > should render all icons 223`] = ` should render all icons 219`] = ` `; -exports[`Test Icons > should render all icons 220`] = ` +exports[`Test Icons > should render all icons 224`] = ` should render all icons 220`] = ` `; -exports[`Test Icons > should render all icons 221`] = ` +exports[`Test Icons > should render all icons 225`] = ` should render all icons 221`] = ` `; -exports[`Test Icons > should render all icons 222`] = ` +exports[`Test Icons > should render all icons 226`] = ` should render all icons 222`] = ` `; -exports[`Test Icons > should render all icons 223`] = ` +exports[`Test Icons > should render all icons 227`] = ` should render all icons 223`] = ` `; -exports[`Test Icons > should render all icons 224`] = ` +exports[`Test Icons > should render all icons 228`] = ` should render all icons 224`] = ` `; -exports[`Test Icons > should render all icons 225`] = ` +exports[`Test Icons > should render all icons 229`] = ` should render all icons 225`] = ` `; -exports[`Test Icons > should render all icons 226`] = ` +exports[`Test Icons > should render all icons 230`] = ` should render all icons 226`] = ` `; -exports[`Test Icons > should render all icons 227`] = ` +exports[`Test Icons > should render all icons 231`] = ` should render all icons 227`] = ` `; -exports[`Test Icons > should render all icons 228`] = ` +exports[`Test Icons > should render all icons 232`] = ` should render all icons 228`] = ` `; -exports[`Test Icons > should render all icons 229`] = ` +exports[`Test Icons > should render all icons 233`] = ` should render all icons 229`] = ` `; -exports[`Test Icons > should render all icons 230`] = ` +exports[`Test Icons > should render all icons 234`] = ` should render all icons 230`] = ` `; -exports[`Test Icons > should render all icons 231`] = ` +exports[`Test Icons > should render all icons 235`] = ` should render all icons 231`] = ` `; -exports[`Test Icons > should render all icons 232`] = ` +exports[`Test Icons > should render all icons 236`] = ` should render all icons 232`] = ` `; -exports[`Test Icons > should render all icons 233`] = ` +exports[`Test Icons > should render all icons 237`] = ` should render all icons 233`] = ` `; -exports[`Test Icons > should render all icons 234`] = ` +exports[`Test Icons > should render all icons 238`] = ` should render all icons 234`] = ` `; -exports[`Test Icons > should render all icons 235`] = ` +exports[`Test Icons > should render all icons 239`] = ` should render all icons 235`] = ` `; -exports[`Test Icons > should render all icons 236`] = ` +exports[`Test Icons > should render all icons 240`] = ` should render all icons 236`] = ` `; -exports[`Test Icons > should render all icons 237`] = ` +exports[`Test Icons > should render all icons 241`] = ` should render all icons 237`] = ` `; -exports[`Test Icons > should render all icons 238`] = ` +exports[`Test Icons > should render all icons 242`] = ` should render all icons 238`] = ` `; -exports[`Test Icons > should render all icons 239`] = ` +exports[`Test Icons > should render all icons 243`] = ` should render all icons 239`] = ` `; -exports[`Test Icons > should render all icons 240`] = ` +exports[`Test Icons > should render all icons 244`] = ` should render all icons 240`] = ` `; -exports[`Test Icons > should render all icons 241`] = ` +exports[`Test Icons > should render all icons 245`] = ` should render all icons 241`] = ` `; -exports[`Test Icons > should render all icons 242`] = ` +exports[`Test Icons > should render all icons 246`] = ` should render all icons 242`] = ` `; -exports[`Test Icons > should render all icons 243`] = ` +exports[`Test Icons > should render all icons 247`] = ` should render all icons 243`] = ` `; -exports[`Test Icons > should render all icons 244`] = ` +exports[`Test Icons > should render all icons 248`] = ` should render all icons 244`] = ` `; -exports[`Test Icons > should render all icons 245`] = ` +exports[`Test Icons > should render all icons 249`] = ` should render all icons 245`] = ` `; -exports[`Test Icons > should render all icons 246`] = ` +exports[`Test Icons > should render all icons 250`] = ` should render all icons 246`] = ` `; -exports[`Test Icons > should render all icons 247`] = ` +exports[`Test Icons > should render all icons 251`] = ` should render all icons 247`] = ` `; -exports[`Test Icons > should render all icons 248`] = ` +exports[`Test Icons > should render all icons 252`] = ` should render all icons 248`] = ` `; -exports[`Test Icons > should render all icons 249`] = ` +exports[`Test Icons > should render all icons 253`] = ` should render all icons 249`] = ` `; -exports[`Test Icons > should render all icons 250`] = ` +exports[`Test Icons > should render all icons 254`] = ` should render all icons 250`] = ` `; -exports[`Test Icons > should render all icons 251`] = ` +exports[`Test Icons > should render all icons 255`] = ` should render all icons 251`] = ` `; -exports[`Test Icons > should render all icons 252`] = ` +exports[`Test Icons > should render all icons 256`] = ` should render all icons 252`] = ` `; -exports[`Test Icons > should render all icons 253`] = ` +exports[`Test Icons > should render all icons 257`] = ` should render all icons 253`] = ` `; -exports[`Test Icons > should render all icons 254`] = ` +exports[`Test Icons > should render all icons 258`] = ` should render all icons 254`] = ` `; -exports[`Test Icons > should render all icons 255`] = ` +exports[`Test Icons > should render all icons 259`] = ` should render all icons 255`] = ` `; -exports[`Test Icons > should render all icons 256`] = ` +exports[`Test Icons > should render all icons 260`] = ` should render all icons 256`] = ` `; -exports[`Test Icons > should render all icons 257`] = ` +exports[`Test Icons > should render all icons 261`] = ` should render all icons 257`] = ` `; -exports[`Test Icons > should render all icons 258`] = ` +exports[`Test Icons > should render all icons 262`] = ` should render all icons 258`] = ` `; -exports[`Test Icons > should render all icons 259`] = ` +exports[`Test Icons > should render all icons 263`] = ` should render all icons 259`] = ` `; -exports[`Test Icons > should render all icons 260`] = ` +exports[`Test Icons > should render all icons 264`] = ` should render all icons 260`] = ` `; -exports[`Test Icons > should render all icons 261`] = ` +exports[`Test Icons > should render all icons 265`] = ` should render all icons 261`] = ` `; -exports[`Test Icons > should render all icons 262`] = ` +exports[`Test Icons > should render all icons 266`] = ` should render all icons 262`] = ` `; -exports[`Test Icons > should render all icons 263`] = ` +exports[`Test Icons > should render all icons 267`] = ` should render all icons 263`] = ` `; -exports[`Test Icons > should render all icons 264`] = ` +exports[`Test Icons > should render all icons 268`] = ` should render all icons 264`] = ` `; -exports[`Test Icons > should render all icons 265`] = ` +exports[`Test Icons > should render all icons 269`] = ` should render all icons 265`] = ` `; -exports[`Test Icons > should render all icons 266`] = ` +exports[`Test Icons > should render all icons 270`] = ` should render all icons 266`] = ` `; -exports[`Test Icons > should render all icons 267`] = ` +exports[`Test Icons > should render all icons 271`] = ` should render all icons 267`] = ` `; -exports[`Test Icons > should render all icons 268`] = ` +exports[`Test Icons > should render all icons 272`] = ` should render all icons 268`] = ` `; -exports[`Test Icons > should render all icons 269`] = ` +exports[`Test Icons > should render all icons 273`] = ` should render all icons 269`] = ` `; -exports[`Test Icons > should render all icons 270`] = ` +exports[`Test Icons > should render all icons 274`] = ` should render all icons 270`] = ` `; -exports[`Test Icons > should render all icons 271`] = ` +exports[`Test Icons > should render all icons 275`] = ` should render all icons 271`] = ` `; -exports[`Test Icons > should render all icons 272`] = ` +exports[`Test Icons > should render all icons 276`] = ` should render all icons 272`] = ` `; -exports[`Test Icons > should render all icons 273`] = ` +exports[`Test Icons > should render all icons 277`] = ` should render all icons 273`] = ` `; -exports[`Test Icons > should render all icons 274`] = ` +exports[`Test Icons > should render all icons 278`] = ` should render all icons 274`] = ` `; -exports[`Test Icons > should render all icons 275`] = ` +exports[`Test Icons > should render all icons 279`] = ` should render all icons 275`] = ` `; -exports[`Test Icons > should render all icons 276`] = ` +exports[`Test Icons > should render all icons 280`] = ` should render all icons 276`] = ` `; -exports[`Test Icons > should render all icons 277`] = ` +exports[`Test Icons > should render all icons 281`] = ` should render all icons 277`] = ` `; -exports[`Test Icons > should render all icons 278`] = ` +exports[`Test Icons > should render all icons 282`] = ` should render all icons 278`] = ` `; -exports[`Test Icons > should render all icons 279`] = ` +exports[`Test Icons > should render all icons 283`] = ` should render all icons 279`] = ` `; -exports[`Test Icons > should render all icons 280`] = ` +exports[`Test Icons > should render all icons 284`] = ` should render all icons 280`] = ` `; -exports[`Test Icons > should render all icons 281`] = ` +exports[`Test Icons > should render all icons 285`] = ` should render all icons 281`] = ` `; -exports[`Test Icons > should render all icons 282`] = ` +exports[`Test Icons > should render all icons 286`] = ` should render all icons 282`] = ` `; -exports[`Test Icons > should render all icons 283`] = ` +exports[`Test Icons > should render all icons 287`] = ` should render all icons 283`] = ` `; -exports[`Test Icons > should render all icons 284`] = ` +exports[`Test Icons > should render all icons 288`] = ` should render all icons 284`] = ` `; -exports[`Test Icons > should render all icons 285`] = ` +exports[`Test Icons > should render all icons 289`] = ` should render all icons 285`] = ` `; -exports[`Test Icons > should render all icons 286`] = ` +exports[`Test Icons > should render all icons 290`] = ` should render all icons 286`] = ` `; -exports[`Test Icons > should render all icons 287`] = ` +exports[`Test Icons > should render all icons 291`] = ` should render all icons 287`] = ` `; -exports[`Test Icons > should render all icons 288`] = ` +exports[`Test Icons > should render all icons 292`] = ` should render all icons 288`] = ` `; -exports[`Test Icons > should render all icons 289`] = ` +exports[`Test Icons > should render all icons 293`] = ` should render all icons 289`] = ` `; -exports[`Test Icons > should render all icons 290`] = ` +exports[`Test Icons > should render all icons 294`] = ` should render all icons 290`] = ` `; -exports[`Test Icons > should render all icons 291`] = ` +exports[`Test Icons > should render all icons 295`] = ` should render all icons 291`] = ` `; -exports[`Test Icons > should render all icons 292`] = ` +exports[`Test Icons > should render all icons 296`] = ` should render all icons 292`] = ` `; -exports[`Test Icons > should render all icons 293`] = ` +exports[`Test Icons > should render all icons 297`] = ` should render all icons 293`] = ` `; -exports[`Test Icons > should render all icons 294`] = ` +exports[`Test Icons > should render all icons 298`] = ` should render all icons 294`] = ` `; -exports[`Test Icons > should render all icons 295`] = ` +exports[`Test Icons > should render all icons 299`] = ` should render all icons 295`] = ` `; -exports[`Test Icons > should render all icons 296`] = ` +exports[`Test Icons > should render all icons 300`] = ` should render all icons 296`] = ` `; -exports[`Test Icons > should render all icons 297`] = ` +exports[`Test Icons > should render all icons 301`] = ` should render all icons 297`] = ` `; -exports[`Test Icons > should render all icons 298`] = ` +exports[`Test Icons > should render all icons 302`] = ` should render all icons 298`] = ` `; -exports[`Test Icons > should render all icons 299`] = ` +exports[`Test Icons > should render all icons 303`] = ` should render all icons 299`] = ` `; -exports[`Test Icons > should render all icons 300`] = ` +exports[`Test Icons > should render all icons 304`] = ` should render all icons 300`] = ` `; -exports[`Test Icons > should render all icons 301`] = ` +exports[`Test Icons > should render all icons 305`] = ` should render all icons 301`] = ` `; -exports[`Test Icons > should render all icons 302`] = ` +exports[`Test Icons > should render all icons 306`] = ` should render all icons 302`] = ` `; -exports[`Test Icons > should render all icons 303`] = ` +exports[`Test Icons > should render all icons 307`] = ` should render all icons 303`] = ` `; -exports[`Test Icons > should render all icons 304`] = ` +exports[`Test Icons > should render all icons 308`] = ` should render all icons 304`] = ` `; -exports[`Test Icons > should render all icons 305`] = ` +exports[`Test Icons > should render all icons 309`] = ` should render all icons 305`] = ` `; -exports[`Test Icons > should render all icons 306`] = ` +exports[`Test Icons > should render all icons 310`] = ` should render all icons 306`] = ` `; -exports[`Test Icons > should render all icons 307`] = ` +exports[`Test Icons > should render all icons 311`] = ` should render all icons 307`] = ` `; -exports[`Test Icons > should render all icons 308`] = ` +exports[`Test Icons > should render all icons 312`] = ` should render all icons 308`] = ` `; -exports[`Test Icons > should render all icons 309`] = ` +exports[`Test Icons > should render all icons 313`] = ` should render all icons 309`] = ` `; -exports[`Test Icons > should render all icons 310`] = ` +exports[`Test Icons > should render all icons 314`] = ` should render all icons 310`] = ` `; -exports[`Test Icons > should render all icons 311`] = ` +exports[`Test Icons > should render all icons 315`] = ` should render all icons 311`] = ` `; -exports[`Test Icons > should render all icons 312`] = ` +exports[`Test Icons > should render all icons 316`] = ` should render all icons 312`] = ` `; -exports[`Test Icons > should render all icons 313`] = ` +exports[`Test Icons > should render all icons 317`] = ` should render all icons 313`] = ` `; -exports[`Test Icons > should render all icons 314`] = ` +exports[`Test Icons > should render all icons 318`] = ` should render all icons 314`] = ` `; -exports[`Test Icons > should render all icons 315`] = ` +exports[`Test Icons > should render all icons 319`] = ` should render all icons 315`] = ` `; -exports[`Test Icons > should render all icons 316`] = ` +exports[`Test Icons > should render all icons 320`] = ` `; -exports[`Test Icons > should render all icons 317`] = ` +exports[`Test Icons > should render all icons 321`] = ` should render all icons 317`] = ` `; -exports[`Test Icons > should render all icons 318`] = ` +exports[`Test Icons > should render all icons 322`] = ` should render all icons 318`] = ` `; -exports[`Test Icons > should render all icons 319`] = ` +exports[`Test Icons > should render all icons 323`] = ` should render all icons 319`] = ` `; -exports[`Test Icons > should render all icons 320`] = ` +exports[`Test Icons > should render all icons 324`] = ` should render all icons 320`] = ` `; -exports[`Test Icons > should render all icons 321`] = ` +exports[`Test Icons > should render all icons 325`] = ` should render all icons 321`] = ` `; -exports[`Test Icons > should render all icons 322`] = ` +exports[`Test Icons > should render all icons 326`] = ` should render all icons 322`] = ` `; -exports[`Test Icons > should render all icons 323`] = ` +exports[`Test Icons > should render all icons 327`] = ` should render all icons 323`] = ` `; -exports[`Test Icons > should render all icons 324`] = ` +exports[`Test Icons > should render all icons 328`] = ` should render all icons 324`] = ` `; -exports[`Test Icons > should render all icons 325`] = ` +exports[`Test Icons > should render all icons 329`] = ` should render all icons 325`] = ` `; -exports[`Test Icons > should render all icons 326`] = ` +exports[`Test Icons > should render all icons 330`] = ` should render all icons 326`] = ` `; -exports[`Test Icons > should render all icons 327`] = ` +exports[`Test Icons > should render all icons 331`] = ` should render all icons 327`] = ` `; -exports[`Test Icons > should render all icons 328`] = ` +exports[`Test Icons > should render all icons 332`] = ` should render all icons 328`] = ` `; -exports[`Test Icons > should render all icons 329`] = ` +exports[`Test Icons > should render all icons 333`] = ` should render all icons 329`] = ` `; -exports[`Test Icons > should render all icons 330`] = ` +exports[`Test Icons > should render all icons 334`] = ` should render all icons 330`] = ` `; -exports[`Test Icons > should render all icons 331`] = ` +exports[`Test Icons > should render all icons 335`] = ` should render all icons 331`] = ` `; -exports[`Test Icons > should render all icons 332`] = ` +exports[`Test Icons > should render all icons 336`] = ` should render all icons 332`] = ` `; -exports[`Test Icons > should render all icons 333`] = ` +exports[`Test Icons > should render all icons 337`] = ` should render all icons 333`] = ` `; -exports[`Test Icons > should render all icons 334`] = ` +exports[`Test Icons > should render all icons 338`] = ` should render all icons 334`] = ` `; -exports[`Test Icons > should render all icons 335`] = ` +exports[`Test Icons > should render all icons 339`] = ` should render all icons 335`] = ` `; -exports[`Test Icons > should render all icons 336`] = ` +exports[`Test Icons > should render all icons 340`] = ` should render all icons 336`] = ` `; -exports[`Test Icons > should render all icons 337`] = ` +exports[`Test Icons > should render all icons 341`] = ` should render all icons 337`] = ` `; -exports[`Test Icons > should render all icons 338`] = ` +exports[`Test Icons > should render all icons 342`] = ` should render all icons 338`] = ` `; -exports[`Test Icons > should render all icons 339`] = ` +exports[`Test Icons > should render all icons 343`] = ` should render all icons 339`] = ` `; -exports[`Test Icons > should render all icons 340`] = ` +exports[`Test Icons > should render all icons 344`] = ` should render all icons 340`] = ` `; -exports[`Test Icons > should render all icons 341`] = ` +exports[`Test Icons > should render all icons 345`] = ` should render all icons 341`] = ` `; -exports[`Test Icons > should render all icons 342`] = ` +exports[`Test Icons > should render all icons 346`] = ` should render all icons 342`] = ` `; -exports[`Test Icons > should render all icons 343`] = ` +exports[`Test Icons > should render all icons 347`] = ` should render all icons 343`] = ` `; -exports[`Test Icons > should render all icons 344`] = ` +exports[`Test Icons > should render all icons 348`] = ` should render all icons 344`] = ` `; -exports[`Test Icons > should render all icons 345`] = ` +exports[`Test Icons > should render all icons 349`] = ` should render all icons 345`] = ` `; -exports[`Test Icons > should render all icons 346`] = ` +exports[`Test Icons > should render all icons 350`] = ` should render all icons 346`] = ` `; -exports[`Test Icons > should render all icons 347`] = ` +exports[`Test Icons > should render all icons 351`] = ` should render all icons 347`] = ` `; -exports[`Test Icons > should render all icons 348`] = ` +exports[`Test Icons > should render all icons 352`] = ` should render all icons 348`] = ` `; -exports[`Test Icons > should render all icons 349`] = ` +exports[`Test Icons > should render all icons 353`] = ` should render all icons 349`] = ` `; -exports[`Test Icons > should render all icons 350`] = ` +exports[`Test Icons > should render all icons 354`] = ` should render all icons 350`] = ` `; -exports[`Test Icons > should render all icons 351`] = ` +exports[`Test Icons > should render all icons 355`] = ` should render all icons 351`] = ` `; -exports[`Test Icons > should render all icons 352`] = ` +exports[`Test Icons > should render all icons 356`] = ` should render all icons 352`] = ` `; -exports[`Test Icons > should render all icons 353`] = ` +exports[`Test Icons > should render all icons 357`] = ` should render all icons 353`] = ` `; -exports[`Test Icons > should render all icons 354`] = ` +exports[`Test Icons > should render all icons 358`] = ` should render all icons 354`] = ` `; -exports[`Test Icons > should render all icons 355`] = ` +exports[`Test Icons > should render all icons 359`] = ` should render all icons 355`] = ` `; -exports[`Test Icons > should render all icons 356`] = ` +exports[`Test Icons > should render all icons 360`] = ` should render all icons 356`] = ` `; -exports[`Test Icons > should render all icons 357`] = ` +exports[`Test Icons > should render all icons 361`] = ` should render all icons 357`] = ` `; -exports[`Test Icons > should render all icons 358`] = ` +exports[`Test Icons > should render all icons 362`] = ` should render all icons 358`] = ` `; -exports[`Test Icons > should render all icons 359`] = ` +exports[`Test Icons > should render all icons 363`] = ` should render all icons 359`] = ` `; -exports[`Test Icons > should render all icons 360`] = ` +exports[`Test Icons > should render all icons 364`] = ` should render all icons 360`] = ` `; -exports[`Test Icons > should render all icons 361`] = ` +exports[`Test Icons > should render all icons 365`] = ` should render all icons 361`] = ` `; -exports[`Test Icons > should render all icons 362`] = ` +exports[`Test Icons > should render all icons 366`] = ` should render all icons 362`] = ` `; -exports[`Test Icons > should render all icons 363`] = ` +exports[`Test Icons > should render all icons 367`] = ` should render all icons 363`] = ` `; -exports[`Test Icons > should render all icons 364`] = ` +exports[`Test Icons > should render all icons 368`] = ` should render all icons 364`] = ` `; -exports[`Test Icons > should render all icons 365`] = ` +exports[`Test Icons > should render all icons 369`] = ` should render all icons 365`] = ` `; -exports[`Test Icons > should render all icons 366`] = ` +exports[`Test Icons > should render all icons 370`] = ` should render all icons 366`] = ` `; -exports[`Test Icons > should render all icons 367`] = ` +exports[`Test Icons > should render all icons 371`] = ` should render all icons 367`] = ` `; -exports[`Test Icons > should render all icons 368`] = ` +exports[`Test Icons > should render all icons 372`] = ` should render all icons 368`] = ` `; -exports[`Test Icons > should render all icons 369`] = ` +exports[`Test Icons > should render all icons 373`] = ` should render all icons 369`] = ` `; -exports[`Test Icons > should render all icons 370`] = ` +exports[`Test Icons > should render all icons 374`] = ` should render all icons 370`] = ` `; -exports[`Test Icons > should render all icons 371`] = ` +exports[`Test Icons > should render all icons 375`] = ` should render all icons 371`] = ` `; -exports[`Test Icons > should render all icons 372`] = ` +exports[`Test Icons > should render all icons 376`] = ` should render all icons 372`] = ` `; -exports[`Test Icons > should render all icons 373`] = ` +exports[`Test Icons > should render all icons 377`] = ` should render all icons 373`] = ` `; -exports[`Test Icons > should render all icons 374`] = ` +exports[`Test Icons > should render all icons 378`] = ` should render all icons 374`] = ` `; -exports[`Test Icons > should render all icons 375`] = ` +exports[`Test Icons > should render all icons 379`] = ` should render all icons 375`] = ` `; -exports[`Test Icons > should render all icons 376`] = ` +exports[`Test Icons > should render all icons 380`] = ` should render all icons 376`] = ` `; -exports[`Test Icons > should render all icons 377`] = ` +exports[`Test Icons > should render all icons 381`] = ` should render all icons 377`] = ` `; -exports[`Test Icons > should render all icons 378`] = ` +exports[`Test Icons > should render all icons 382`] = ` should render all icons 378`] = ` `; -exports[`Test Icons > should render all icons 379`] = ` +exports[`Test Icons > should render all icons 383`] = ` should render all icons 379`] = ` `; -exports[`Test Icons > should render all icons 380`] = ` +exports[`Test Icons > should render all icons 384`] = ` should render all icons 380`] = ` `; -exports[`Test Icons > should render all icons 381`] = ` +exports[`Test Icons > should render all icons 385`] = ` should render all icons 381`] = ` `; -exports[`Test Icons > should render all icons 382`] = ` +exports[`Test Icons > should render all icons 386`] = ` should render all icons 382`] = ` `; -exports[`Test Icons > should render all icons 383`] = ` +exports[`Test Icons > should render all icons 387`] = ` should render all icons 383`] = ` `; -exports[`Test Icons > should render all icons 384`] = ` +exports[`Test Icons > should render all icons 388`] = ` should render all icons 384`] = ` `; -exports[`Test Icons > should render all icons 385`] = ` +exports[`Test Icons > should render all icons 389`] = ` should render all icons 385`] = ` `; -exports[`Test Icons > should render all icons 386`] = ` +exports[`Test Icons > should render all icons 390`] = ` should render all icons 386`] = ` `; -exports[`Test Icons > should render all icons 387`] = ` +exports[`Test Icons > should render all icons 391`] = ` should render all icons 387`] = ` `; -exports[`Test Icons > should render all icons 388`] = ` +exports[`Test Icons > should render all icons 392`] = ` should render all icons 388`] = ` `; -exports[`Test Icons > should render all icons 389`] = ` +exports[`Test Icons > should render all icons 393`] = ` should render all icons 389`] = ` `; -exports[`Test Icons > should render all icons 390`] = ` +exports[`Test Icons > should render all icons 394`] = ` should render all icons 390`] = ` `; -exports[`Test Icons > should render all icons 391`] = ` +exports[`Test Icons > should render all icons 395`] = ` should render all icons 391`] = ` `; -exports[`Test Icons > should render all icons 392`] = ` +exports[`Test Icons > should render all icons 396`] = ` should render all icons 392`] = ` `; -exports[`Test Icons > should render all icons 393`] = ` +exports[`Test Icons > should render all icons 397`] = ` should render all icons 393`] = ` `; -exports[`Test Icons > should render all icons 394`] = ` +exports[`Test Icons > should render all icons 398`] = ` should render all icons 394`] = ` `; -exports[`Test Icons > should render all icons 395`] = ` +exports[`Test Icons > should render all icons 399`] = ` should render all icons 395`] = ` `; -exports[`Test Icons > should render all icons 396`] = ` +exports[`Test Icons > should render all icons 400`] = ` should render all icons 396`] = ` `; -exports[`Test Icons > should render all icons 397`] = ` +exports[`Test Icons > should render all icons 401`] = ` should render all icons 397`] = ` `; -exports[`Test Icons > should render all icons 398`] = ` +exports[`Test Icons > should render all icons 402`] = ` should render all icons 398`] = ` `; -exports[`Test Icons > should render all icons 399`] = ` +exports[`Test Icons > should render all icons 403`] = ` should render all icons 399`] = ` `; -exports[`Test Icons > should render all icons 400`] = ` +exports[`Test Icons > should render all icons 404`] = ` should render all icons 400`] = ` `; -exports[`Test Icons > should render all icons 401`] = ` +exports[`Test Icons > should render all icons 405`] = ` should render all icons 401`] = ` `; -exports[`Test Icons > should render all icons 402`] = ` +exports[`Test Icons > should render all icons 406`] = ` should render all icons 402`] = ` `; -exports[`Test Icons > should render all icons 403`] = ` +exports[`Test Icons > should render all icons 407`] = ` should render all icons 403`] = ` `; -exports[`Test Icons > should render all icons 404`] = ` +exports[`Test Icons > should render all icons 408`] = ` should render all icons 404`] = ` `; -exports[`Test Icons > should render all icons 405`] = ` +exports[`Test Icons > should render all icons 409`] = ` should render all icons 405`] = ` `; -exports[`Test Icons > should render all icons 406`] = ` +exports[`Test Icons > should render all icons 410`] = ` should render all icons 406`] = ` `; -exports[`Test Icons > should render all icons 407`] = ` +exports[`Test Icons > should render all icons 411`] = ` should render all icons 407`] = ` `; -exports[`Test Icons > should render all icons 408`] = ` +exports[`Test Icons > should render all icons 412`] = ` should render all icons 408`] = ` `; -exports[`Test Icons > should render all icons 409`] = ` +exports[`Test Icons > should render all icons 413`] = ` should render all icons 409`] = ` `; -exports[`Test Icons > should render all icons 410`] = ` +exports[`Test Icons > should render all icons 414`] = ` should render all icons 410`] = ` `; -exports[`Test Icons > should render all icons 411`] = ` +exports[`Test Icons > should render all icons 415`] = ` should render all icons 411`] = ` `; -exports[`Test Icons > should render all icons 412`] = ` +exports[`Test Icons > should render all icons 416`] = ` should render all icons 412`] = ` `; -exports[`Test Icons > should render all icons 413`] = ` +exports[`Test Icons > should render all icons 417`] = ` should render all icons 413`] = ` `; -exports[`Test Icons > should render all icons 414`] = ` +exports[`Test Icons > should render all icons 418`] = ` should render all icons 414`] = ` `; -exports[`Test Icons > should render all icons 415`] = ` +exports[`Test Icons > should render all icons 419`] = ` should render all icons 415`] = ` `; -exports[`Test Icons > should render all icons 416`] = ` +exports[`Test Icons > should render all icons 420`] = ` should render all icons 416`] = ` `; -exports[`Test Icons > should render all icons 417`] = ` +exports[`Test Icons > should render all icons 421`] = ` should render all icons 417`] = ` `; -exports[`Test Icons > should render all icons 418`] = ` +exports[`Test Icons > should render all icons 422`] = ` should render all icons 418`] = ` `; -exports[`Test Icons > should render all icons 419`] = ` +exports[`Test Icons > should render all icons 423`] = ` should render all icons 419`] = ` `; -exports[`Test Icons > should render all icons 420`] = ` +exports[`Test Icons > should render all icons 424`] = ` should render all icons 420`] = ` `; -exports[`Test Icons > should render all icons 421`] = ` +exports[`Test Icons > should render all icons 425`] = ` should render all icons 421`] = ` `; -exports[`Test Icons > should render all icons 422`] = ` +exports[`Test Icons > should render all icons 426`] = ` should render all icons 422`] = ` `; -exports[`Test Icons > should render all icons 423`] = ` +exports[`Test Icons > should render all icons 427`] = ` should render all icons 423`] = ` `; -exports[`Test Icons > should render all icons 424`] = ` +exports[`Test Icons > should render all icons 428`] = ` should render all icons 424`] = ` `; -exports[`Test Icons > should render all icons 425`] = ` +exports[`Test Icons > should render all icons 429`] = ` should render all icons 425`] = ` `; -exports[`Test Icons > should render all icons 426`] = ` +exports[`Test Icons > should render all icons 430`] = ` should render all icons 426`] = ` `; -exports[`Test Icons > should render all icons 427`] = ` +exports[`Test Icons > should render all icons 431`] = ` should render all icons 427`] = ` `; -exports[`Test Icons > should render all icons 428`] = ` +exports[`Test Icons > should render all icons 432`] = ` should render all icons 428`] = ` `; -exports[`Test Icons > should render all icons 429`] = ` +exports[`Test Icons > should render all icons 433`] = ` should render all icons 429`] = ` `; -exports[`Test Icons > should render all icons 430`] = ` +exports[`Test Icons > should render all icons 434`] = ` should render all icons 430`] = ` `; -exports[`Test Icons > should render all icons 431`] = ` +exports[`Test Icons > should render all icons 435`] = ` should render all icons 431`] = ` `; -exports[`Test Icons > should render all icons 432`] = ` +exports[`Test Icons > should render all icons 436`] = ` should render all icons 432`] = ` `; -exports[`Test Icons > should render all icons 433`] = ` +exports[`Test Icons > should render all icons 437`] = ` should render all icons 433`] = ` `; -exports[`Test Icons > should render all icons 434`] = ` +exports[`Test Icons > should render all icons 438`] = ` should render all icons 434`] = ` `; -exports[`Test Icons > should render all icons 435`] = ` +exports[`Test Icons > should render all icons 439`] = ` should render all icons 435`] = ` `; -exports[`Test Icons > should render all icons 436`] = ` +exports[`Test Icons > should render all icons 440`] = ` should render all icons 436`] = ` `; -exports[`Test Icons > should render all icons 437`] = ` +exports[`Test Icons > should render all icons 441`] = ` should render all icons 437`] = ` `; -exports[`Test Icons > should render all icons 438`] = ` +exports[`Test Icons > should render all icons 442`] = ` should render all icons 438`] = ` `; -exports[`Test Icons > should render all icons 439`] = ` +exports[`Test Icons > should render all icons 443`] = ` should render all icons 439`] = ` `; -exports[`Test Icons > should render all icons 440`] = ` +exports[`Test Icons > should render all icons 444`] = ` should render all icons 440`] = ` `; -exports[`Test Icons > should render all icons 441`] = ` +exports[`Test Icons > should render all icons 445`] = ` should render all icons 441`] = ` `; -exports[`Test Icons > should render all icons 442`] = ` +exports[`Test Icons > should render all icons 446`] = ` should render all icons 442`] = ` `; -exports[`Test Icons > should render all icons 443`] = ` +exports[`Test Icons > should render all icons 447`] = ` should render all icons 443`] = ` `; -exports[`Test Icons > should render all icons 444`] = ` +exports[`Test Icons > should render all icons 448`] = ` should render all icons 444`] = ` `; -exports[`Test Icons > should render all icons 445`] = ` +exports[`Test Icons > should render all icons 449`] = ` should render all icons 445`] = ` `; -exports[`Test Icons > should render all icons 446`] = ` +exports[`Test Icons > should render all icons 450`] = ` should render all icons 446`] = ` `; -exports[`Test Icons > should render all icons 447`] = ` +exports[`Test Icons > should render all icons 451`] = ` should render all icons 447`] = ` `; -exports[`Test Icons > should render all icons 448`] = ` +exports[`Test Icons > should render all icons 452`] = ` should render all icons 448`] = ` `; -exports[`Test Icons > should render all icons 449`] = ` +exports[`Test Icons > should render all icons 453`] = ` should render all icons 449`] = ` `; -exports[`Test Icons > should render all icons 450`] = ` +exports[`Test Icons > should render all icons 454`] = ` should render all icons 450`] = ` `; -exports[`Test Icons > should render all icons 451`] = ` +exports[`Test Icons > should render all icons 455`] = ` should render all icons 451`] = ` `; -exports[`Test Icons > should render all icons 452`] = ` +exports[`Test Icons > should render all icons 456`] = ` should render all icons 452`] = ` `; -exports[`Test Icons > should render all icons 453`] = ` +exports[`Test Icons > should render all icons 457`] = ` should render all icons 453`] = ` `; -exports[`Test Icons > should render all icons 454`] = ` +exports[`Test Icons > should render all icons 458`] = ` should render all icons 454`] = ` `; -exports[`Test Icons > should render all icons 455`] = ` +exports[`Test Icons > should render all icons 459`] = ` should render all icons 455`] = ` `; -exports[`Test Icons > should render all icons 456`] = ` +exports[`Test Icons > should render all icons 460`] = ` should render all icons 456`] = ` `; -exports[`Test Icons > should render all icons 457`] = ` +exports[`Test Icons > should render all icons 461`] = ` should render all icons 457`] = ` `; -exports[`Test Icons > should render all icons 458`] = ` +exports[`Test Icons > should render all icons 462`] = ` should render all icons 458`] = ` `; -exports[`Test Icons > should render all icons 459`] = ` +exports[`Test Icons > should render all icons 463`] = ` should render all icons 459`] = ` `; -exports[`Test Icons > should render all icons 460`] = ` +exports[`Test Icons > should render all icons 464`] = ` should render all icons 460`] = ` `; -exports[`Test Icons > should render all icons 461`] = ` +exports[`Test Icons > should render all icons 465`] = ` should render all icons 461`] = ` `; -exports[`Test Icons > should render all icons 462`] = ` +exports[`Test Icons > should render all icons 466`] = ` should render all icons 462`] = ` `; -exports[`Test Icons > should render all icons 463`] = ` +exports[`Test Icons > should render all icons 467`] = ` should render all icons 463`] = ` `; -exports[`Test Icons > should render all icons 464`] = ` +exports[`Test Icons > should render all icons 468`] = ` should render all icons 464`] = ` `; -exports[`Test Icons > should render all icons 465`] = ` +exports[`Test Icons > should render all icons 469`] = ` should render all icons 465`] = ` `; -exports[`Test Icons > should render all icons 466`] = ` +exports[`Test Icons > should render all icons 470`] = ` should render all icons 466`] = ` `; -exports[`Test Icons > should render all icons 467`] = ` +exports[`Test Icons > should render all icons 471`] = ` should render all icons 467`] = ` `; -exports[`Test Icons > should render all icons 468`] = ` +exports[`Test Icons > should render all icons 472`] = ` should render all icons 468`] = ` `; -exports[`Test Icons > should render all icons 469`] = ` +exports[`Test Icons > should render all icons 473`] = ` should render all icons 469`] = ` `; -exports[`Test Icons > should render all icons 470`] = ` +exports[`Test Icons > should render all icons 474`] = ` should render all icons 470`] = ` `; -exports[`Test Icons > should render all icons 471`] = ` +exports[`Test Icons > should render all icons 475`] = ` should render all icons 471`] = ` `; -exports[`Test Icons > should render all icons 472`] = ` +exports[`Test Icons > should render all icons 476`] = ` should render all icons 472`] = ` `; -exports[`Test Icons > should render all icons 473`] = ` +exports[`Test Icons > should render all icons 477`] = ` should render all icons 473`] = ` `; -exports[`Test Icons > should render all icons 474`] = ` +exports[`Test Icons > should render all icons 478`] = ` should render all icons 474`] = ` `; -exports[`Test Icons > should render all icons 475`] = ` +exports[`Test Icons > should render all icons 479`] = ` should render all icons 475`] = ` `; -exports[`Test Icons > should render all icons 476`] = ` +exports[`Test Icons > should render all icons 480`] = ` should render all icons 476`] = ` `; -exports[`Test Icons > should render all icons 477`] = ` +exports[`Test Icons > should render all icons 481`] = ` should render all icons 477`] = ` `; -exports[`Test Icons > should render all icons 478`] = ` +exports[`Test Icons > should render all icons 482`] = ` should render all icons 478`] = ` `; -exports[`Test Icons > should render all icons 479`] = ` +exports[`Test Icons > should render all icons 483`] = ` should render all icons 479`] = ` `; -exports[`Test Icons > should render all icons 480`] = ` +exports[`Test Icons > should render all icons 484`] = ` should render all icons 480`] = ` `; -exports[`Test Icons > should render all icons 481`] = ` +exports[`Test Icons > should render all icons 485`] = ` should render all icons 481`] = ` `; -exports[`Test Icons > should render all icons 482`] = ` +exports[`Test Icons > should render all icons 486`] = ` should render all icons 482`] = ` `; -exports[`Test Icons > should render all icons 483`] = ` +exports[`Test Icons > should render all icons 487`] = ` should render all icons 483`] = ` `; -exports[`Test Icons > should render all icons 484`] = ` +exports[`Test Icons > should render all icons 488`] = ` should render all icons 484`] = ` `; -exports[`Test Icons > should render all icons 485`] = ` +exports[`Test Icons > should render all icons 489`] = ` should render all icons 485`] = ` `; -exports[`Test Icons > should render all icons 486`] = ` +exports[`Test Icons > should render all icons 490`] = ` should render all icons 486`] = ` `; -exports[`Test Icons > should render all icons 487`] = ` +exports[`Test Icons > should render all icons 491`] = ` should render all icons 487`] = ` `; -exports[`Test Icons > should render all icons 488`] = ` +exports[`Test Icons > should render all icons 492`] = ` should render all icons 488`] = ` `; -exports[`Test Icons > should render all icons 489`] = ` +exports[`Test Icons > should render all icons 493`] = ` should render all icons 489`] = ` `; -exports[`Test Icons > should render all icons 490`] = ` +exports[`Test Icons > should render all icons 494`] = ` should render all icons 490`] = ` `; -exports[`Test Icons > should render all icons 491`] = ` +exports[`Test Icons > should render all icons 495`] = ` should render all icons 491`] = ` `; -exports[`Test Icons > should render all icons 492`] = ` +exports[`Test Icons > should render all icons 496`] = ` should render all icons 492`] = ` `; -exports[`Test Icons > should render all icons 493`] = ` +exports[`Test Icons > should render all icons 497`] = ` should render all icons 493`] = ` `; -exports[`Test Icons > should render all icons 494`] = ` +exports[`Test Icons > should render all icons 498`] = ` should render all icons 494`] = ` `; -exports[`Test Icons > should render all icons 495`] = ` +exports[`Test Icons > should render all icons 499`] = ` should render all icons 495`] = ` `; -exports[`Test Icons > should render all icons 496`] = ` +exports[`Test Icons > should render all icons 500`] = ` should render all icons 496`] = ` `; -exports[`Test Icons > should render all icons 497`] = ` +exports[`Test Icons > should render all icons 501`] = ` should render all icons 497`] = ` `; -exports[`Test Icons > should render all icons 498`] = ` +exports[`Test Icons > should render all icons 502`] = ` should render all icons 498`] = ` `; -exports[`Test Icons > should render all icons 499`] = ` +exports[`Test Icons > should render all icons 503`] = ` should render all icons 499`] = ` `; -exports[`Test Icons > should render all icons 500`] = ` +exports[`Test Icons > should render all icons 504`] = ` should render all icons 500`] = ` `; -exports[`Test Icons > should render all icons 501`] = ` +exports[`Test Icons > should render all icons 505`] = ` should render all icons 501`] = ` `; -exports[`Test Icons > should render all icons 502`] = ` +exports[`Test Icons > should render all icons 506`] = ` should render all icons 502`] = ` `; -exports[`Test Icons > should render all icons 503`] = ` +exports[`Test Icons > should render all icons 507`] = ` should render all icons 503`] = ` `; -exports[`Test Icons > should render all icons 504`] = ` +exports[`Test Icons > should render all icons 508`] = ` should render all icons 504`] = ` `; -exports[`Test Icons > should render all icons 505`] = ` +exports[`Test Icons > should render all icons 509`] = ` should render all icons 505`] = ` `; -exports[`Test Icons > should render all icons 506`] = ` +exports[`Test Icons > should render all icons 510`] = ` should render all icons 506`] = ` `; -exports[`Test Icons > should render all icons 507`] = ` +exports[`Test Icons > should render all icons 511`] = ` should render all icons 507`] = ` `; -exports[`Test Icons > should render all icons 508`] = ` +exports[`Test Icons > should render all icons 512`] = ` should render all icons 508`] = ` `; -exports[`Test Icons > should render all icons 509`] = ` +exports[`Test Icons > should render all icons 513`] = ` should render all icons 509`] = ` `; -exports[`Test Icons > should render all icons 510`] = ` +exports[`Test Icons > should render all icons 514`] = ` should render all icons 510`] = ` `; -exports[`Test Icons > should render all icons 511`] = ` +exports[`Test Icons > should render all icons 515`] = ` should render all icons 511`] = ` `; -exports[`Test Icons > should render all icons 512`] = ` +exports[`Test Icons > should render all icons 516`] = ` should render all icons 512`] = ` `; -exports[`Test Icons > should render all icons 513`] = ` +exports[`Test Icons > should render all icons 517`] = ` should render all icons 513`] = ` `; -exports[`Test Icons > should render all icons 514`] = ` +exports[`Test Icons > should render all icons 518`] = ` should render all icons 514`] = ` `; -exports[`Test Icons > should render all icons 515`] = ` +exports[`Test Icons > should render all icons 519`] = ` should render all icons 515`] = ` `; -exports[`Test Icons > should render all icons 516`] = ` +exports[`Test Icons > should render all icons 520`] = ` should render all icons 516`] = ` `; -exports[`Test Icons > should render all icons 517`] = ` +exports[`Test Icons > should render all icons 521`] = ` should render all icons 517`] = ` `; -exports[`Test Icons > should render all icons 518`] = ` +exports[`Test Icons > should render all icons 522`] = ` should render all icons 518`] = ` `; -exports[`Test Icons > should render all icons 519`] = ` +exports[`Test Icons > should render all icons 523`] = ` should render all icons 519`] = ` `; -exports[`Test Icons > should render all icons 520`] = ` +exports[`Test Icons > should render all icons 524`] = ` should render all icons 520`] = ` `; -exports[`Test Icons > should render all icons 521`] = ` +exports[`Test Icons > should render all icons 525`] = ` should render all icons 521`] = ` `; -exports[`Test Icons > should render all icons 522`] = ` +exports[`Test Icons > should render all icons 526`] = ` should render all icons 522`] = ` `; -exports[`Test Icons > should render all icons 523`] = ` +exports[`Test Icons > should render all icons 527`] = ` should render all icons 523`] = ` `; -exports[`Test Icons > should render all icons 524`] = ` +exports[`Test Icons > should render all icons 528`] = ` should render all icons 524`] = ` `; -exports[`Test Icons > should render all icons 525`] = ` +exports[`Test Icons > should render all icons 529`] = ` should render all icons 525`] = ` `; -exports[`Test Icons > should render all icons 526`] = ` +exports[`Test Icons > should render all icons 530`] = ` should render all icons 526`] = ` `; -exports[`Test Icons > should render all icons 527`] = ` +exports[`Test Icons > should render all icons 531`] = ` should render all icons 527`] = ` `; -exports[`Test Icons > should render all icons 528`] = ` +exports[`Test Icons > should render all icons 532`] = ` should render all icons 528`] = ` `; -exports[`Test Icons > should render all icons 529`] = ` +exports[`Test Icons > should render all icons 533`] = ` should render all icons 529`] = ` `; -exports[`Test Icons > should render all icons 530`] = ` +exports[`Test Icons > should render all icons 534`] = ` should render all icons 530`] = ` `; -exports[`Test Icons > should render all icons 531`] = ` +exports[`Test Icons > should render all icons 535`] = ` should render all icons 531`] = ` `; -exports[`Test Icons > should render all icons 532`] = ` +exports[`Test Icons > should render all icons 536`] = ` should render all icons 532`] = ` `; -exports[`Test Icons > should render all icons 533`] = ` +exports[`Test Icons > should render all icons 537`] = ` should render all icons 533`] = ` `; -exports[`Test Icons > should render all icons 534`] = ` +exports[`Test Icons > should render all icons 538`] = ` should render all icons 534`] = ` `; -exports[`Test Icons > should render all icons 535`] = ` +exports[`Test Icons > should render all icons 539`] = ` should render all icons 535`] = ` `; -exports[`Test Icons > should render all icons 536`] = ` +exports[`Test Icons > should render all icons 540`] = ` should render all icons 536`] = ` `; -exports[`Test Icons > should render all icons 537`] = ` +exports[`Test Icons > should render all icons 541`] = ` should render all icons 537`] = ` `; -exports[`Test Icons > should render all icons 538`] = ` +exports[`Test Icons > should render all icons 542`] = ` should render all icons 538`] = ` `; -exports[`Test Icons > should render all icons 539`] = ` +exports[`Test Icons > should render all icons 543`] = ` should render all icons 539`] = ` `; -exports[`Test Icons > should render all icons 540`] = ` +exports[`Test Icons > should render all icons 544`] = ` should render all icons 540`] = ` `; -exports[`Test Icons > should render all icons 541`] = ` +exports[`Test Icons > should render all icons 545`] = ` should render all icons 541`] = ` `; -exports[`Test Icons > should render all icons 542`] = ` +exports[`Test Icons > should render all icons 546`] = ` should render all icons 542`] = ` `; -exports[`Test Icons > should render all icons 543`] = ` +exports[`Test Icons > should render all icons 547`] = ` should render all icons 543`] = ` `; -exports[`Test Icons > should render all icons 544`] = ` +exports[`Test Icons > should render all icons 548`] = ` should render all icons 544`] = ` `; -exports[`Test Icons > should render all icons 545`] = ` +exports[`Test Icons > should render all icons 549`] = ` should render all icons 545`] = ` `; -exports[`Test Icons > should render all icons 546`] = ` +exports[`Test Icons > should render all icons 550`] = ` should render all icons 546`] = ` `; -exports[`Test Icons > should render all icons 547`] = ` +exports[`Test Icons > should render all icons 551`] = ` should render all icons 547`] = ` `; -exports[`Test Icons > should render all icons 548`] = ` +exports[`Test Icons > should render all icons 552`] = ` should render all icons 548`] = ` `; -exports[`Test Icons > should render all icons 549`] = ` +exports[`Test Icons > should render all icons 553`] = ` should render all icons 549`] = ` `; -exports[`Test Icons > should render all icons 550`] = ` +exports[`Test Icons > should render all icons 554`] = ` should render all icons 550`] = ` `; -exports[`Test Icons > should render all icons 551`] = ` +exports[`Test Icons > should render all icons 555`] = ` should render all icons 551`] = ` `; -exports[`Test Icons > should render all icons 552`] = ` +exports[`Test Icons > should render all icons 556`] = ` should render all icons 552`] = ` `; -exports[`Test Icons > should render all icons 553`] = ` +exports[`Test Icons > should render all icons 557`] = ` should render all icons 553`] = ` `; -exports[`Test Icons > should render all icons 554`] = ` +exports[`Test Icons > should render all icons 558`] = ` should render all icons 554`] = ` `; -exports[`Test Icons > should render all icons 555`] = ` +exports[`Test Icons > should render all icons 559`] = ` should render all icons 555`] = ` `; -exports[`Test Icons > should render all icons 556`] = ` +exports[`Test Icons > should render all icons 560`] = ` should render all icons 556`] = ` `; -exports[`Test Icons > should render all icons 557`] = ` +exports[`Test Icons > should render all icons 561`] = ` should render all icons 557`] = ` `; -exports[`Test Icons > should render all icons 558`] = ` +exports[`Test Icons > should render all icons 562`] = ` should render all icons 558`] = ` `; -exports[`Test Icons > should render all icons 559`] = ` +exports[`Test Icons > should render all icons 563`] = ` should render all icons 559`] = ` `; -exports[`Test Icons > should render all icons 560`] = ` +exports[`Test Icons > should render all icons 564`] = ` should render all icons 560`] = ` `; -exports[`Test Icons > should render all icons 561`] = ` +exports[`Test Icons > should render all icons 565`] = ` should render all icons 561`] = ` `; -exports[`Test Icons > should render all icons 562`] = ` +exports[`Test Icons > should render all icons 566`] = ` should render all icons 562`] = ` `; -exports[`Test Icons > should render all icons 563`] = ` +exports[`Test Icons > should render all icons 567`] = ` should render all icons 563`] = ` `; -exports[`Test Icons > should render all icons 564`] = ` +exports[`Test Icons > should render all icons 568`] = ` should render all icons 564`] = ` `; -exports[`Test Icons > should render all icons 565`] = ` +exports[`Test Icons > should render all icons 569`] = ` should render all icons 565`] = ` `; -exports[`Test Icons > should render all icons 566`] = ` +exports[`Test Icons > should render all icons 570`] = ` should render all icons 566`] = ` `; -exports[`Test Icons > should render all icons 567`] = ` +exports[`Test Icons > should render all icons 571`] = ` should render all icons 567`] = ` `; -exports[`Test Icons > should render all icons 568`] = ` +exports[`Test Icons > should render all icons 572`] = ` should render all icons 568`] = ` `; -exports[`Test Icons > should render all icons 569`] = ` +exports[`Test Icons > should render all icons 573`] = ` should render all icons 569`] = ` `; -exports[`Test Icons > should render all icons 570`] = ` +exports[`Test Icons > should render all icons 574`] = ` should render all icons 570`] = ` `; -exports[`Test Icons > should render all icons 571`] = ` +exports[`Test Icons > should render all icons 575`] = ` should render all icons 571`] = ` `; -exports[`Test Icons > should render all icons 572`] = ` +exports[`Test Icons > should render all icons 576`] = ` should render all icons 572`] = ` `; -exports[`Test Icons > should render all icons 573`] = ` +exports[`Test Icons > should render all icons 577`] = ` should render all icons 573`] = ` `; -exports[`Test Icons > should render all icons 574`] = ` +exports[`Test Icons > should render all icons 578`] = ` should render all icons 574`] = ` `; -exports[`Test Icons > should render all icons 575`] = ` +exports[`Test Icons > should render all icons 579`] = ` should render all icons 575`] = ` `; -exports[`Test Icons > should render all icons 576`] = ` +exports[`Test Icons > should render all icons 580`] = ` should render all icons 576`] = ` `; -exports[`Test Icons > should render all icons 577`] = ` +exports[`Test Icons > should render all icons 581`] = ` should render all icons 577`] = ` `; -exports[`Test Icons > should render all icons 578`] = ` +exports[`Test Icons > should render all icons 582`] = ` should render all icons 578`] = ` `; -exports[`Test Icons > should render all icons 579`] = ` +exports[`Test Icons > should render all icons 583`] = ` should render all icons 579`] = ` `; -exports[`Test Icons > should render all icons 580`] = ` +exports[`Test Icons > should render all icons 584`] = ` should render all icons 580`] = ` `; -exports[`Test Icons > should render all icons 581`] = ` +exports[`Test Icons > should render all icons 585`] = ` should render all icons 581`] = ` `; -exports[`Test Icons > should render all icons 582`] = ` +exports[`Test Icons > should render all icons 586`] = ` should render all icons 582`] = ` `; -exports[`Test Icons > should render all icons 583`] = ` +exports[`Test Icons > should render all icons 587`] = ` should render all icons 583`] = ` `; -exports[`Test Icons > should render all icons 584`] = ` +exports[`Test Icons > should render all icons 588`] = ` should render all icons 584`] = ` `; -exports[`Test Icons > should render all icons 585`] = ` +exports[`Test Icons > should render all icons 589`] = ` should render all icons 585`] = ` `; -exports[`Test Icons > should render all icons 586`] = ` +exports[`Test Icons > should render all icons 590`] = ` should render all icons 586`] = ` `; -exports[`Test Icons > should render all icons 587`] = ` +exports[`Test Icons > should render all icons 591`] = ` should render all icons 587`] = ` `; -exports[`Test Icons > should render all icons 588`] = ` +exports[`Test Icons > should render all icons 592`] = ` should render all icons 588`] = ` `; -exports[`Test Icons > should render all icons 589`] = ` +exports[`Test Icons > should render all icons 593`] = ` should render all icons 589`] = ` `; -exports[`Test Icons > should render all icons 590`] = ` +exports[`Test Icons > should render all icons 594`] = ` should render all icons 590`] = ` `; -exports[`Test Icons > should render all icons 591`] = ` +exports[`Test Icons > should render all icons 595`] = ` should render all icons 591`] = ` `; -exports[`Test Icons > should render all icons 592`] = ` +exports[`Test Icons > should render all icons 596`] = ` should render all icons 592`] = ` `; -exports[`Test Icons > should render all icons 593`] = ` +exports[`Test Icons > should render all icons 597`] = ` should render all icons 593`] = ` `; -exports[`Test Icons > should render all icons 594`] = ` +exports[`Test Icons > should render all icons 598`] = ` should render all icons 594`] = ` `; -exports[`Test Icons > should render all icons 595`] = ` +exports[`Test Icons > should render all icons 599`] = ` should render all icons 595`] = ` `; -exports[`Test Icons > should render all icons 596`] = ` +exports[`Test Icons > should render all icons 600`] = ` should render all icons 596`] = ` `; -exports[`Test Icons > should render all icons 597`] = ` +exports[`Test Icons > should render all icons 601`] = ` should render all icons 597`] = ` `; -exports[`Test Icons > should render all icons 598`] = ` +exports[`Test Icons > should render all icons 602`] = ` should render all icons 598`] = ` `; -exports[`Test Icons > should render all icons 599`] = ` +exports[`Test Icons > should render all icons 603`] = ` should render all icons 599`] = ` `; -exports[`Test Icons > should render all icons 600`] = ` +exports[`Test Icons > should render all icons 604`] = ` should render all icons 600`] = ` `; -exports[`Test Icons > should render all icons 601`] = ` +exports[`Test Icons > should render all icons 605`] = ` should render all icons 601`] = ` `; -exports[`Test Icons > should render all icons 602`] = ` +exports[`Test Icons > should render all icons 606`] = ` should render all icons 602`] = ` `; -exports[`Test Icons > should render all icons 603`] = ` +exports[`Test Icons > should render all icons 607`] = ` should render all icons 603`] = ` `; -exports[`Test Icons > should render all icons 604`] = ` +exports[`Test Icons > should render all icons 608`] = ` should render all icons 604`] = ` `; -exports[`Test Icons > should render all icons 605`] = ` +exports[`Test Icons > should render all icons 609`] = ` should render all icons 605`] = ` `; -exports[`Test Icons > should render all icons 606`] = ` +exports[`Test Icons > should render all icons 610`] = ` should render all icons 606`] = ` `; -exports[`Test Icons > should render all icons 607`] = ` +exports[`Test Icons > should render all icons 611`] = ` should render all icons 607`] = ` `; -exports[`Test Icons > should render all icons 608`] = ` +exports[`Test Icons > should render all icons 612`] = ` should render all icons 608`] = ` `; -exports[`Test Icons > should render all icons 609`] = ` +exports[`Test Icons > should render all icons 613`] = ` should render all icons 609`] = ` `; -exports[`Test Icons > should render all icons 610`] = ` +exports[`Test Icons > should render all icons 614`] = ` should render all icons 610`] = ` `; -exports[`Test Icons > should render all icons 611`] = ` +exports[`Test Icons > should render all icons 615`] = ` should render all icons 611`] = ` `; -exports[`Test Icons > should render all icons 612`] = ` +exports[`Test Icons > should render all icons 616`] = ` should render all icons 612`] = ` `; -exports[`Test Icons > should render all icons 613`] = ` +exports[`Test Icons > should render all icons 617`] = ` should render all icons 613`] = ` `; -exports[`Test Icons > should render all icons 614`] = ` +exports[`Test Icons > should render all icons 618`] = ` should render all icons 614`] = ` `; -exports[`Test Icons > should render all icons 615`] = ` +exports[`Test Icons > should render all icons 619`] = ` should render all icons 615`] = ` `; -exports[`Test Icons > should render all icons 616`] = ` +exports[`Test Icons > should render all icons 620`] = ` should render all icons 616`] = ` `; -exports[`Test Icons > should render all icons 617`] = ` +exports[`Test Icons > should render all icons 621`] = ` should render all icons 617`] = ` `; -exports[`Test Icons > should render all icons 618`] = ` +exports[`Test Icons > should render all icons 622`] = ` should render all icons 618`] = ` `; -exports[`Test Icons > should render all icons 619`] = ` +exports[`Test Icons > should render all icons 623`] = ` should render all icons 619`] = ` `; -exports[`Test Icons > should render all icons 620`] = ` +exports[`Test Icons > should render all icons 624`] = ` should render all icons 620`] = ` `; -exports[`Test Icons > should render all icons 621`] = ` +exports[`Test Icons > should render all icons 625`] = ` should render all icons 621`] = ` `; -exports[`Test Icons > should render all icons 622`] = ` +exports[`Test Icons > should render all icons 626`] = ` should render all icons 622`] = ` `; -exports[`Test Icons > should render all icons 623`] = ` +exports[`Test Icons > should render all icons 627`] = ` should render all icons 623`] = ` `; -exports[`Test Icons > should render all icons 624`] = ` +exports[`Test Icons > should render all icons 628`] = ` should render all icons 624`] = ` `; -exports[`Test Icons > should render all icons 625`] = ` +exports[`Test Icons > should render all icons 629`] = ` should render all icons 625`] = ` `; -exports[`Test Icons > should render all icons 626`] = ` +exports[`Test Icons > should render all icons 630`] = ` should render all icons 626`] = ` `; -exports[`Test Icons > should render all icons 627`] = ` +exports[`Test Icons > should render all icons 631`] = ` should render all icons 627`] = ` `; -exports[`Test Icons > should render all icons 628`] = ` +exports[`Test Icons > should render all icons 632`] = ` should render all icons 628`] = ` `; -exports[`Test Icons > should render all icons 629`] = ` +exports[`Test Icons > should render all icons 633`] = ` should render all icons 629`] = ` `; -exports[`Test Icons > should render all icons 630`] = ` +exports[`Test Icons > should render all icons 634`] = ` should render all icons 630`] = ` `; -exports[`Test Icons > should render all icons 631`] = ` +exports[`Test Icons > should render all icons 635`] = ` should render all icons 631`] = ` `; -exports[`Test Icons > should render all icons 632`] = ` +exports[`Test Icons > should render all icons 636`] = ` should render all icons 632`] = ` `; -exports[`Test Icons > should render all icons 633`] = ` +exports[`Test Icons > should render all icons 637`] = ` should render all icons 633`] = ` `; -exports[`Test Icons > should render all icons 634`] = ` +exports[`Test Icons > should render all icons 638`] = ` should render all icons 634`] = ` `; -exports[`Test Icons > should render all icons 635`] = ` +exports[`Test Icons > should render all icons 639`] = ` should render all icons 635`] = ` `; -exports[`Test Icons > should render all icons 636`] = ` +exports[`Test Icons > should render all icons 640`] = ` should render all icons 636`] = ` `; -exports[`Test Icons > should render all icons 637`] = ` +exports[`Test Icons > should render all icons 641`] = ` should render all icons 637`] = ` `; -exports[`Test Icons > should render all icons 638`] = ` +exports[`Test Icons > should render all icons 642`] = ` should render all icons 638`] = ` `; -exports[`Test Icons > should render all icons 639`] = ` +exports[`Test Icons > should render all icons 643`] = ` should render all icons 639`] = ` `; -exports[`Test Icons > should render all icons 640`] = ` +exports[`Test Icons > should render all icons 644`] = ` should render all icons 640`] = ` `; -exports[`Test Icons > should render all icons 641`] = ` +exports[`Test Icons > should render all icons 645`] = ` should render all icons 641`] = ` `; -exports[`Test Icons > should render all icons 642`] = ` +exports[`Test Icons > should render all icons 646`] = ` should render all icons 642`] = ` `; -exports[`Test Icons > should render all icons 643`] = ` +exports[`Test Icons > should render all icons 647`] = ` should render all icons 643`] = ` `; -exports[`Test Icons > should render all icons 644`] = ` +exports[`Test Icons > should render all icons 648`] = ` should render all icons 644`] = ` `; -exports[`Test Icons > should render all icons 645`] = ` +exports[`Test Icons > should render all icons 649`] = ` { }; }); - it('availabel show balance', async () => { + it('available show balance', async () => { const BalanceDisplay: FC = () => { const { balance } = useProvider(); @@ -82,7 +82,7 @@ describe('SolanaWeb3ConfigProvider balance', () => { }; const App: FC = () => ( - +
test
diff --git a/packages/solana/src/solana-provider/__tests__/basic.test.tsx b/packages/solana/src/solana-provider/__tests__/basic.test.tsx index 67b260a3f..c8189a303 100644 --- a/packages/solana/src/solana-provider/__tests__/basic.test.tsx +++ b/packages/solana/src/solana-provider/__tests__/basic.test.tsx @@ -100,7 +100,7 @@ describe('SolanaWeb3ConfigProvider', () => { it('mount correctly', () => { const App = () => ( - +
test
); @@ -120,7 +120,7 @@ describe('SolanaWeb3ConfigProvider', () => { }; const App = () => ( - +
test
); @@ -156,7 +156,7 @@ describe('SolanaWeb3ConfigProvider', () => { const switchChain = vi.fn(); const App = () => ( - + @@ -172,7 +172,7 @@ describe('SolanaWeb3ConfigProvider', () => { const mockRpcProvider = vi.fn(() => mockRpcEndpoint); const App = () => ( - +
test
); @@ -185,7 +185,10 @@ describe('SolanaWeb3ConfigProvider', () => { it('ConnectionProvider', () => { const App = () => ( - `https://main-beta.fake-domain.com/`}> + `https://main-beta.fake-domain.com/`} + >
test
); @@ -206,7 +209,7 @@ describe('SolanaWeb3ConfigProvider', () => { const App = () => { const { connect } = useWallet(); return ( - +
test
+
{availableWallets?.length || 0}
); }; const App = () => { return ( - +
test
@@ -272,11 +275,15 @@ describe('Solana Connect', () => { const { selector } = xrender(App); expect(selector('.content')?.textContent).toBe('test'); + expect(selector('.availableWallets')?.textContent).toBe('0'); const connectBtn = selector('.btn-connect')!; expect(connectBtn).not.toBeNull(); fireEvent.click(connectBtn); + await vi.waitFor(() => { + expect(availableWalletFound).toBeCalledWith(0); + }); await vi.waitFor(() => { expect(connectRunned).toBeCalled(); expect(mockSelectWalletFnNotWalletName).toBeCalledWith(null); @@ -289,7 +296,7 @@ describe('Solana Connect', () => { const [hasExtensionInstalled, setHasExtensionInstalled] = useState(false); useEffect(() => { - availableWallets![0]?.hasExtensionInstalled?.().then((v) => { + availableWallets?.[0]?.hasExtensionInstalled?.().then((v) => { setHasExtensionInstalled(v); }); }, [availableWallets]); diff --git a/packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx b/packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx index 39b5ec090..0b6e51f70 100644 --- a/packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx +++ b/packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx @@ -91,7 +91,7 @@ describe('GetNFTMetadata', () => { const App: React.FC = () => { return ( diff --git a/packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx b/packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx index abbd7c341..d0435af8d 100644 --- a/packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx +++ b/packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx @@ -98,7 +98,7 @@ describe('SolanaWeb3ConfigProvider rpcProvider', () => { const mockRpcProvider = vi.fn(() => mockRpcEndpoint); const App = () => ( - +
test
); @@ -111,7 +111,7 @@ describe('SolanaWeb3ConfigProvider rpcProvider', () => { it('use default solana rpcProvider if not chain connected', async () => { const App = () => ( - +
test
); diff --git a/packages/solana/src/solana-provider/__tests__/standard-wallet.test.tsx b/packages/solana/src/solana-provider/__tests__/standard-wallet.test.tsx index b8d084482..d514c4d82 100644 --- a/packages/solana/src/solana-provider/__tests__/standard-wallet.test.tsx +++ b/packages/solana/src/solana-provider/__tests__/standard-wallet.test.tsx @@ -114,7 +114,7 @@ describe('SolanaWeb3ConfigProvider Standard wallet', () => { const [walletReady, setWalletReady] = useState(false); useEffect(() => { - availableWallets![0]?.hasWalletReady?.().then((v) => { + availableWallets?.[0]?.hasWalletReady?.().then((v) => { setWalletReady(v); }); }, [availableWallets]); diff --git a/packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx b/packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx index cd2c4f24c..424bc2a3b 100644 --- a/packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx +++ b/packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx @@ -79,7 +79,7 @@ describe('Switch network', () => { ); }; const App = () => ( - + ); @@ -104,7 +104,7 @@ describe('Switch network', () => { ); }; const App = () => ( - + ); @@ -126,7 +126,7 @@ describe('Switch network', () => { balance={false} autoConnect chains={[solana, solanaDevnet, solanaTestnet]} - wallets={[WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet)]} + wallets={[WalletFactory(() => new CoinbaseWalletAdapter(), metadata_CoinbaseWallet)()]} > @@ -180,7 +180,7 @@ describe('Switch network', () => { availableChains={[solanaDevnet]} balance={false} availableWallets={[ - WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet).create(), + WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet)().create(), ]} onCurrentChainChange={(chain) => { mockSwitchChain(chain?.id); diff --git a/packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx b/packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx index 6b1664399..0a5f0f569 100644 --- a/packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx +++ b/packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx @@ -127,8 +127,8 @@ describe('AntDesignWeb3ConfigProvider wallet', () => { availableChains={[solana, solanaDevnet]} chainAssets={[Solana, SolanaDevnet]} availableWallets={[ - WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet).create(), - WalletFactory(new PhantomWalletAdapter(), metadata_Phantom).create(), + WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet)().create(), + WalletFactory(new PhantomWalletAdapter(), metadata_Phantom)().create(), ]} > diff --git a/packages/solana/src/solana-provider/__tests__/wallet-connect.test.tsx b/packages/solana/src/solana-provider/__tests__/wallet-connect.test.tsx index e8df1cfd5..fa83c9cd5 100644 --- a/packages/solana/src/solana-provider/__tests__/wallet-connect.test.tsx +++ b/packages/solana/src/solana-provider/__tests__/wallet-connect.test.tsx @@ -139,7 +139,7 @@ describe('SolanaWeb3ConfigProvider WalletConnect', () => { return (