diff --git a/package.json b/package.json
index 3c642fbdcc31..02ed29abc266 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"yarn": ">=999.0.0",
"npm": ">=999.0.0"
},
- "version": "2.23.6",
+ "version": "2.23.7",
"private": true,
"license": "AGPL-3.0-or-later",
"scripts": {
diff --git a/packages/icons/general/Lock.svg b/packages/icons/general/Lock.svg
index 79a1f7e5de78..95c3b16efb9c 100644
--- a/packages/icons/general/Lock.svg
+++ b/packages/icons/general/Lock.svg
@@ -1 +1,6 @@
-
\ No newline at end of file
+
diff --git a/packages/icons/icon-generated-as-jsx.js b/packages/icons/icon-generated-as-jsx.js
index 07a19fffd6ac..4e458ba74cc7 100644
--- a/packages/icons/icon-generated-as-jsx.js
+++ b/packages/icons/icon-generated-as-jsx.js
@@ -2205,11 +2205,35 @@ export const LocalBackup = /*#__PURE__*/ __createIcon('LocalBackup', [
u: () => new URL('./general/LocalBackup.png', import.meta.url),
},
])
-export const Lock = /*#__PURE__*/ __createIcon('Lock', [
- {
- u: () => new URL('./general/Lock.svg', import.meta.url),
- },
-])
+export const Lock = /*#__PURE__*/ __createIcon(
+ 'Lock',
+ [
+ {
+ u: () => new URL('./general/Lock.svg', import.meta.url),
+ j: () =>
+ /*#__PURE__*/ _jsx('svg', {
+ xmlns: 'http://www.w3.org/2000/svg',
+ fill: 'none',
+ viewBox: '0 0 24 25',
+ children: /*#__PURE__*/ _jsxs('g', {
+ fill: 'currentColor',
+ fillRule: 'evenodd',
+ clipRule: 'evenodd',
+ children: [
+ /*#__PURE__*/ _jsx('path', {
+ d: 'M7.748 5.01c-.697.866-.948 2.132-.948 3.74v2a.8.8 0 0 1-1.6 0v-2c0-1.704.25-3.438 1.302-4.744C7.585 2.662 9.363 1.95 12 1.95s4.416.713 5.498 2.057C18.55 5.312 18.8 7.046 18.8 8.75v2a.8.8 0 0 1-1.6 0v-2c0-1.607-.25-2.873-.948-3.74-.667-.828-1.889-1.46-4.252-1.46s-3.584.632-4.252 1.46zM12 15.05a1.7 1.7 0 1 0 0 3.4 1.7 1.7 0 0 0 0-3.4zm-3.3 1.7a3.3 3.3 0 1 1 6.6 0 3.3 3.3 0 0 1-6.6 0z',
+ }),
+ /*#__PURE__*/ _jsx('path', {
+ d: 'M3.566 12.315c-.496.495-.766 1.428-.766 3.434v2c0 2.006.27 2.939.766 3.434.495.496 1.428.766 3.434.766h10c2.006 0 2.939-.27 3.434-.766.496-.495.766-1.428.766-3.434v-2c0-2.006-.27-2.939-.765-3.434-.496-.496-1.43-.766-3.435-.766H7c-2.006 0-2.939.27-3.434.766zm-1.131-1.131C3.439 10.178 5.005 9.949 7 9.949h10c1.994 0 3.561.23 4.566 1.235 1.004 1.004 1.234 2.57 1.234 4.565v2c0 1.995-.23 3.562-1.234 4.566-1.005 1.004-2.572 1.234-4.566 1.234H7c-1.994 0-3.561-.23-4.565-1.234C1.43 21.31 1.2 19.743 1.2 17.749v-2c0-1.994.23-3.561 1.235-4.566z',
+ }),
+ ],
+ }),
+ }),
+ s: true,
+ },
+ ],
+ [24, 25],
+)
export const MaskAvatar = /*#__PURE__*/ __createIcon('MaskAvatar', [
{
c: ['dark'],
diff --git a/packages/mask/shared-ui/locales/en-US.json b/packages/mask/shared-ui/locales/en-US.json
index 17276351719f..0b06e90c35ae 100644
--- a/packages/mask/shared-ui/locales/en-US.json
+++ b/packages/mask/shared-ui/locales/en-US.json
@@ -261,7 +261,7 @@
"export": "Export",
"confirm_swap_risk": "Confirm swap risk",
"wallet_load_retry": "Failed to load {{symbol}}. Click to retry.",
- "wallet_name": "Wallet Name",
+ "name": "Name",
"wallet_rename": "Rename Wallet",
"wallet_loading_nft_contract": "Loading NFT contract...",
"wallet_search_contract_no_result": "No results or contract address does not meet the query criteria.",
@@ -1157,7 +1157,7 @@
"wallet_edit_contact_successfully": "Edit contact successfully.",
"wallet_delete_contact": "Delete Contact",
"wallet_delete_contact_successfully": "Delete contact successfully.",
- "wallet_name_wallet": "Name your wallet",
+ "wallet_name": "Name your wallet",
"wallet_account": "Wallet Account",
"wallet_imported": "Imported",
"scan_address_to_payment": "Scan QR code to receive payment",
diff --git a/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx b/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx
index d96d3a75ae46..f10a38c65fe2 100644
--- a/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx
+++ b/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx
@@ -22,7 +22,7 @@ export interface PostDialogHintUIProps extends withClasses<'buttonTransform' | '
const useStyles = makeStyles()((theme) => ({
button: {
// TODO: is it correct? (what about twitter?)
- padding: isMobileFacebook ? 0 : '7px',
+ padding: isMobileFacebook ? 0 : 'var(--icon-padding, 10px)',
},
text: {
color: theme.palette.grey[300],
@@ -39,15 +39,23 @@ const useStyles = makeStyles()((theme) => ({
const ICON_MAP: Record = {
minds: ,
- default: ,
+ default: (
+
+ ),
}
-const EntryIconButton = memo((props: PostDialogHintUIProps) => {
+const EntryIconButton = memo(function EntryIconButton(props: PostDialogHintUIProps) {
const { t } = useI18N()
const { tooltip, disableGuideTip } = props
const { classes, cx } = useStyles(undefined, { props })
- const getEntry = () => (
+ const Entry = (
{
)
return disableGuideTip ? (
- getEntry()
+ Entry
) : (
- {getEntry()}
+ {Entry}
)
})
diff --git a/packages/mask/src/components/InjectedComponents/ProfileTabContent.tsx b/packages/mask/src/components/InjectedComponents/ProfileTabContent.tsx
index 701d2208c5ca..608da0844157 100644
--- a/packages/mask/src/components/InjectedComponents/ProfileTabContent.tsx
+++ b/packages/mask/src/components/InjectedComponents/ProfileTabContent.tsx
@@ -57,6 +57,7 @@ import Services from '#services'
const useStyles = makeStyles()((theme) => ({
root: {
width: Sniffings.is_facebook_page ? 876 : 'auto',
+ color: theme.palette.maskColor.main,
},
container: {
background:
diff --git a/packages/mask/src/extension/popups/modals/AddContactModal/index.tsx b/packages/mask/src/extension/popups/modals/AddContactModal/index.tsx
index 1a3f64f5374d..4c79bcb7c339 100644
--- a/packages/mask/src/extension/popups/modals/AddContactModal/index.tsx
+++ b/packages/mask/src/extension/popups/modals/AddContactModal/index.tsx
@@ -97,7 +97,7 @@ function AddContactDrawer({ onConfirm, address, name, setName, setAddress, ...re
{
diff --git a/packages/mask/src/extension/popups/modals/EditContactModal/index.tsx b/packages/mask/src/extension/popups/modals/EditContactModal/index.tsx
index e843c547d2eb..4af97f445a3c 100644
--- a/packages/mask/src/extension/popups/modals/EditContactModal/index.tsx
+++ b/packages/mask/src/extension/popups/modals/EditContactModal/index.tsx
@@ -134,7 +134,7 @@ function EditContactDrawer({ onConfirm, address, name, setName, type, ...rest }:
inputProps={{ style: { textAlign: 'center' } }}
classes={{ root: classes.inputRoot }}
spellCheck={false}
- placeholder={t('wallet_name_wallet')}
+ placeholder={t('name')}
className={classes.input}
value={name}
onChange={(ev) => {
diff --git a/packages/mask/src/extension/popups/pages/Settings/index.tsx b/packages/mask/src/extension/popups/pages/Settings/index.tsx
index 35a63a82b7cb..c8a6bf24f6f5 100644
--- a/packages/mask/src/extension/popups/pages/Settings/index.tsx
+++ b/packages/mask/src/extension/popups/pages/Settings/index.tsx
@@ -1,24 +1,24 @@
+import Services from '#services'
+import { env } from '@masknet/flags'
+import { Icons } from '@masknet/icons'
+import { Appearance, LanguageOptions } from '@masknet/public-api'
+import { DashboardRoutes, PopupModalRoutes, Sniffings } from '@masknet/shared-base'
+import { openWindow } from '@masknet/shared-base-ui'
+import { makeStyles } from '@masknet/theme'
+import { Box, List, ListItem, ListItemText, Typography, useTheme } from '@mui/material'
import { memo, useCallback, useMemo } from 'react'
import { Trans } from 'react-i18next'
-import { Box, List, ListItem, ListItemText, Typography, useTheme } from '@mui/material'
+import { UserContext, useAppearance, useLanguage } from '../../../../../shared-ui/index.js'
import { useI18N } from '../../../../utils/i18n-next-ui.js'
-import { useTitle } from '../../hooks/useTitle.js'
-import { makeStyles } from '@masknet/theme'
-import { Icons } from '@masknet/icons'
import { NormalHeader, useModalNavigate } from '../../components/index.js'
-import { env } from '@masknet/flags'
-import { UserContext, useAppearance, useLanguage } from '../../../../../shared-ui/index.js'
-import { Appearance, LanguageOptions } from '@masknet/public-api'
-import { openWindow } from '@masknet/shared-base-ui'
-import { DashboardRoutes, PopupModalRoutes, Sniffings } from '@masknet/shared-base'
import { useSupportedSites } from '../../hooks/useSupportedSites.js'
-import Services from '#services'
+import { useTitle } from '../../hooks/useTitle.js'
const useStyles = makeStyles()((theme) => ({
container: {
padding: theme.spacing(2),
flex: 1,
- maxHeight: 474,
+ paddingBottom: 80,
overflow: 'auto',
display: 'flex',
flexDirection: 'column',
diff --git a/packages/mask/src/site-adaptors/twitter.com/injection/PostDialogHint.tsx b/packages/mask/src/site-adaptors/twitter.com/injection/PostDialogHint.tsx
index 2e6b46d19108..0f1f47a00862 100644
--- a/packages/mask/src/site-adaptors/twitter.com/injection/PostDialogHint.tsx
+++ b/packages/mask/src/site-adaptors/twitter.com/injection/PostDialogHint.tsx
@@ -1,16 +1,17 @@
-import { useCallback } from 'react'
-import { alpha } from '@mui/material'
-import { makeStyles, MaskColorVar } from '@masknet/theme'
-import { makeTypedMessageText } from '@masknet/typed-message'
import { MutationObserverWatcher, type LiveSelector } from '@dimensiondev/holoflows-kit'
import { CrossIsolationMessages, sayHelloShowed } from '@masknet/shared-base'
-import { isReplyPageSelector, postEditorInPopupSelector, searchReplyToolbarSelector } from '../utils/selector.js'
-import { startWatch, type WatchOptions } from '../../../utils/startWatch.js'
-import { attachReactTreeWithContainer } from '../../../utils/shadow-root/renderInShadowRoot.js'
+import { makeStyles, MaskColorVar } from '@masknet/theme'
+import { makeTypedMessageText } from '@masknet/typed-message'
+import { alpha } from '@mui/material'
+import { clamp } from 'lodash-es'
+import { useCallback } from 'react'
import { PostDialogHint } from '../../../components/InjectedComponents/PostDialogHint.js'
-import { twitterBase } from '../base.js'
import { useI18N } from '../../../utils/index.js'
+import { attachReactTreeWithContainer } from '../../../utils/shadow-root/renderInShadowRoot.js'
+import { startWatch, type WatchOptions } from '../../../utils/startWatch.js'
+import { twitterBase } from '../base.js'
import { hasEditor, isCompose } from '../utils/postBox.js'
+import { isReplyPageSelector, postEditorInPopupSelector, searchReplyToolbarSelector } from '../utils/selector.js'
const useStyles = makeStyles()((theme) => ({
iconButton: {
@@ -48,13 +49,34 @@ export function injectPostDialogHintAtTwitter(signal: AbortSignal) {
)
}
-function renderPostDialogHintTo(reason: 'timeline' | 'popup', ls: LiveSelector, options: WatchOptions) {
+function renderPostDialogHintTo(
+ reason: 'timeline' | 'popup',
+ ls: LiveSelector,
+ options: WatchOptions,
+) {
const watcher = new MutationObserverWatcher(ls)
startWatch(watcher, options)
- attachReactTreeWithContainer(watcher.firstDOMProxy.afterShadow, { signal: options.signal }).render(
- ,
- )
+ attachReactTreeWithContainer(watcher.firstDOMProxy.afterShadow, {
+ signal: options.signal,
+ tag: () => {
+ // Vertical center the button when font size of Twitter is set to `large` or `very large`
+ const tag = document.createElement('span')
+ Object.assign(tag.style, {
+ display: 'inline-flex',
+ alignItems: 'center',
+ height: '100%',
+ })
+ const svgIcon = document.querySelector('[data-testid="geoButton"] svg')
+ const size = svgIcon ? clamp(svgIcon.getBoundingClientRect().width, 18, 24) : undefined
+ const geoButton = document.querySelector('[data-testid="geoButton"]')
+ const padding = geoButton && size ? (geoButton.getBoundingClientRect().width - size) / 2 : undefined
+ if (padding) tag.style.setProperty('--icon-padding', `${padding}px`)
+ if (size) tag.style.setProperty('--icon-size', `${size}px`)
+
+ return tag
+ },
+ }).render()
}
function PostDialogHintAtTwitter({ reason }: { reason: 'timeline' | 'popup' }) {
diff --git a/packages/mask/src/site-adaptors/twitter.com/utils/selector.ts b/packages/mask/src/site-adaptors/twitter.com/utils/selector.ts
index edcb7d2b1e78..4e37edafc27d 100644
--- a/packages/mask/src/site-adaptors/twitter.com/utils/selector.ts
+++ b/packages/mask/src/site-adaptors/twitter.com/utils/selector.ts
@@ -90,7 +90,9 @@ export const postEditorContentInPopupSelector: () => LiveSelector = ()
'[aria-labelledby="modal-header"] > div:first-child > div:first-child > div:first-child > div:nth-child(3)',
)
export const postEditorInPopupSelector: () => LiveSelector = () =>
- querySelector('[aria-labelledby="modal-header"] div[data-testid="toolBar"] div[data-testid="geoButton"]')
+ querySelector(
+ '[aria-labelledby="modal-header"] div[data-testid="toolBar"] [role="presentation"]:has(> div[data-testid="geoButton"])',
+ )
export const sideBarProfileSelector: () => LiveSelector = () =>
querySelector('[role="banner"] [role="navigation"] [data-testid="AppTabBar_Profile_Link"] > div')
export const postEditorInTimelineSelector: () => LiveSelector = () =>
@@ -163,8 +165,8 @@ export const postsContentSelector = () =>
querySelectorAll(
[
// tweets on timeline page
- '[data-testid="tweet"] div + div div[lang]',
- '[data-testid="tweet"] div + div div[data-testid="card.wrapper"]',
+ '[data-testid="tweet"] [data-testid="tweetText"]',
+ '[data-testid="tweet"]:not(:has([data-testid="tweetText"])) [data-testid="tweetPhoto"]', // tweets with only image.
// tweets on detailed page
'[data-testid="tweet"] + div > div:first-child div[lang]',
@@ -174,9 +176,6 @@ export const postsContentSelector = () =>
'[data-testid="tweet"] [aria-labelledby] div[role="link"] div[lang]',
// quoted tweets in detail page
'[data-testid="tweet"] > div:last-child div[role="link"] div[lang]',
-
- // reply-tweets
- '[data-testid="tweet"] + div div div[lang][dir]',
].join(','),
)
@@ -279,7 +278,7 @@ export const searchTwitterAvatarNFTLinkSelector = () => querySelector('a[href
export const searchReplyToolbarSelector = () =>
querySelector('div[data-testid="primaryColumn"] div[data-testid="toolBar"]').querySelector(
- 'div[data-testid="geoButton"]',
+ '[role="presentation"]:has(> div[data-testid="geoButton"])',
)
// nameTag dom
diff --git a/packages/plugins/NextID/src/components/Actions/index.tsx b/packages/plugins/NextID/src/components/Actions/index.tsx
index 31543ac52b74..c2b9a6158f65 100644
--- a/packages/plugins/NextID/src/components/Actions/index.tsx
+++ b/packages/plugins/NextID/src/components/Actions/index.tsx
@@ -1,6 +1,6 @@
import { memo } from 'react'
import { makeStyles } from '@masknet/theme'
-import { Button, Stack, Typography } from '@mui/material'
+import { Button, Stack, Typography, useTheme } from '@mui/material'
import { Icons } from '@masknet/icons'
import { useI18N } from '../../locales/index.js'
import { PersonaSelectPanel } from '@masknet/shared'
@@ -64,11 +64,11 @@ interface AddWalletPersonaActionProps {
export const AddWalletPersonaAction = memo(({ onAddWallet }) => {
const t = useI18N()
- const { classes } = useStyles()
+ const { classes, theme } = useStyles()
return (
<>
-
+
{t.add_wallet_intro()}
@@ -84,9 +84,10 @@ export const AddWalletPersonaAction = memo(({ onAdd
export const OtherLackWalletAction = memo(() => {
const t = useI18N()
+ const theme = useTheme()
return (
-
+
{t.others_lack_wallet()}
diff --git a/packages/plugins/NextID/src/components/NextIdPage.tsx b/packages/plugins/NextID/src/components/NextIdPage.tsx
index 71d5b3679e33..387273d0abd6 100644
--- a/packages/plugins/NextID/src/components/NextIdPage.tsx
+++ b/packages/plugins/NextID/src/components/NextIdPage.tsx
@@ -82,11 +82,11 @@ export const NextIdPage = memo(function NextIdPage() {
return (
<>
-
-
+
+
{ActionComponent}
-
-
+
+
{openBindDialog && currentPersona && isOwn ? (
{
return {
@@ -101,57 +108,63 @@ export function Snapshot() {
-
-
-
+
+
+
+ {proposal.space.name}
+
+ }
+ placement="top"
+ classes={{ tooltip: classes.tooltip, arrow: classes.arrow }}
+ arrow>
+
+ {proposal.space.name}
+
+
+
+
+ by
+
+
+ {proposal.space.id}
+
+
+
+
+
- {proposal.space.name}
-
- }
+ title={{proposal.title}}
placement="top"
classes={{ tooltip: classes.tooltip, arrow: classes.arrow }}
arrow>
-
- {proposal.space.name}
-
-
-
- by
-
-
- {proposal.space.id}
+ fontWeight="700"
+ color={theme.palette.maskColor.publicSecond}
+ sx={{ width: 300, whiteSpace: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden' }}>
+ {proposal.title}
-
+
-
- {proposal.title}}
- placement="top"
- classes={{ tooltip: classes.tooltip, arrow: classes.arrow }}
- arrow>
-
- {proposal.title}
-
-
-
+
}>
- {votes.map(function voteItemIter(v) {
+ {votes?.map(function voteItemIter(v) {
const isAverageWeight = v.choices?.every((c) => c.weight === 1)
const fullChoiceText =
v.totalWeight && v.choices
diff --git a/packages/plugins/Tips/src/components/TipsButton/index.tsx b/packages/plugins/Tips/src/components/TipsButton/index.tsx
index 45c2bf6bfb30..6fe6ef0fa92a 100644
--- a/packages/plugins/Tips/src/components/TipsButton/index.tsx
+++ b/packages/plugins/Tips/src/components/TipsButton/index.tsx
@@ -1,4 +1,9 @@
import { Icons } from '@masknet/icons'
+import {
+ PostInfoContext,
+ useCurrentVisitingIdentity,
+ useSocialIdentityByUserId,
+} from '@masknet/plugin-infra/content-script'
import {
EMPTY_LIST,
NetworkPluginID,
@@ -9,15 +14,11 @@ import {
import { makeStyles } from '@masknet/theme'
import type { Web3Helper } from '@masknet/web3-helpers'
import { useNetworkContext } from '@masknet/web3-hooks-base'
-import { useCallback, useEffect, useMemo, type HTMLProps, type MouseEventHandler, useContext } from 'react'
+import { useCallback, useContext, useEffect, useMemo, type HTMLProps, type MouseEventHandler } from 'react'
+import { useLocation } from 'react-use'
import { useProfilePublicKey } from '../../hooks/useProfilePublicKey.js'
import { PluginTipsMessages } from '../../messages.js'
import { useTipsAccounts } from './useTipsAccounts.js'
-import {
- PostInfoContext,
- useCurrentVisitingIdentity,
- useSocialIdentityByUserId,
-} from '@masknet/plugin-infra/content-script'
interface Props extends HTMLProps {
// This is workaround solution, link issue mf-2536 and pr #7576.
@@ -121,10 +122,11 @@ export function TipButton(props: Props) {
})
}, [recipient, receiverUserId, accounts])
+ const location = useLocation()
useEffect(() => {
if (disabled || !info?.actionsElement?.realCurrent) return
info.actionsElement.realCurrent.style.flex = '1'
- }, [disabled, info])
+ }, [disabled, info?.actionsElement?.realCurrent, location.pathname])
if (disabled) return null
diff --git a/packages/shared/src/UI/components/PluginCardFrame/index.tsx b/packages/shared/src/UI/components/PluginCardFrame/index.tsx
index fe6b91d88a4c..1176181a6fd5 100644
--- a/packages/shared/src/UI/components/PluginCardFrame/index.tsx
+++ b/packages/shared/src/UI/components/PluginCardFrame/index.tsx
@@ -10,6 +10,7 @@ const useStyles = makeStyles()((theme) => ({
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
+ color: theme.palette.maskColor.main,
},
container: {
background:
@@ -47,7 +48,7 @@ export interface PluginCardFrameMiniProps {
export function PluginCardFrameMini({ icon, title, provider, providerLink, children }: PluginCardFrameMiniProps) {
const t = useSharedI18N()
- const { classes } = useStyles()
+ const { classes, theme } = useStyles()
const PluginName = useMemo(() => {
return (
@@ -83,7 +84,11 @@ export function PluginCardFrameMini({ icon, title, provider, providerLink, child
- {children ?? {t.plugin_card_frame_loading()}}
+ {children ?? (
+
+ {t.plugin_card_frame_loading()}
+
+ )}
)
diff --git a/packages/shared/src/UI/components/ProfileTabContent/ProfileTab/WalletSettingEntry.tsx b/packages/shared/src/UI/components/ProfileTabContent/ProfileTab/WalletSettingEntry.tsx
index 475a54037525..2987fd8b5c9a 100644
--- a/packages/shared/src/UI/components/ProfileTabContent/ProfileTab/WalletSettingEntry.tsx
+++ b/packages/shared/src/UI/components/ProfileTabContent/ProfileTab/WalletSettingEntry.tsx
@@ -1,8 +1,8 @@
+import { memo } from 'react'
import { Icons } from '@masknet/icons'
import { CrossIsolationMessages } from '@masknet/shared-base'
import { makeStyles } from '@masknet/theme'
import { Button, Stack, Typography } from '@mui/material'
-import { memo } from 'react'
import { useSharedI18N } from '../../../../locales/index.js'
const useStyles = makeStyles()((theme) => ({
@@ -22,12 +22,12 @@ function openWeb3ProfileSettingDialog() {
}
export const WalletSettingEntry = memo(function WalletSettingEntry() {
const t = useSharedI18N()
- const { classes } = useStyles()
+ const { classes, theme } = useStyles()
return (
<>
-
+
{t.show_wallet_setting_intro()}
diff --git a/packages/web3-shared/evm/src/constants/chains.json b/packages/web3-shared/evm/src/constants/chains.json
index c26390da4f41..5865d29bb507 100644
--- a/packages/web3-shared/evm/src/constants/chains.json
+++ b/packages/web3-shared/evm/src/constants/chains.json
@@ -476,11 +476,11 @@
"decimals": 18,
"logoURL": "https://imagedelivery.net/PCnTHRkdRhGodr0AWBAvMA/Assets/blockchains/avalanchec/info/logo.png/quality=85"
},
- "infoURL": "https://snowtrace.io/",
+ "infoURL": "https://snowtrace.dev/",
"explorers": [
{
"name": "snowtrace",
- "url": "https://snowtrace.io/",
+ "url": "https://snowtrace.dev/",
"standard": "EIP3091"
}
]