diff --git a/packages/apps-config/src/links/commonwealth.ts b/packages/apps-config/src/links/commonwealth.ts index 92c82dfeca..26381af334 100644 --- a/packages/apps-config/src/links/commonwealth.ts +++ b/packages/apps-config/src/links/commonwealth.ts @@ -4,6 +4,8 @@ import BN from 'bn.js'; +import { externalLogos } from '../ui/logos'; + const HASH_PATHS = ['proposal/councilmotion']; export default { @@ -15,6 +17,7 @@ export default { create: (chain: string, path: string, data: BN | number | string, hash?: string): string => `https://commonwealth.im/${chain}/${path}/${HASH_PATHS.includes(path) ? (hash || '') : data.toString()}`, isActive: true, + logo: externalLogos.commonwealth as string, paths: { council: 'proposal/councilmotion', proposal: 'proposal/democracyproposal', diff --git a/packages/apps-config/src/links/polkascan.ts b/packages/apps-config/src/links/polkascan.ts index d2b4c1d866..2d8902002c 100644 --- a/packages/apps-config/src/links/polkascan.ts +++ b/packages/apps-config/src/links/polkascan.ts @@ -4,6 +4,8 @@ import BN from 'bn.js'; +import { externalLogos } from '../ui/logos'; + export default { chains: { // 'Centrifuge Mainnet': 'centrifuge', @@ -16,6 +18,7 @@ export default { create: (chain: string, path: string, data: BN | number | string): string => `https://polkascan.io/${chain}/${path}/${data.toString()}`, isActive: true, + logo: externalLogos.polkascan as string, paths: { address: 'account', block: 'block', diff --git a/packages/apps-config/src/links/polkassembly.ts b/packages/apps-config/src/links/polkassembly.ts index 2b2e38c417..da8409af9f 100644 --- a/packages/apps-config/src/links/polkassembly.ts +++ b/packages/apps-config/src/links/polkassembly.ts @@ -4,6 +4,8 @@ import BN from 'bn.js'; +import { externalLogos } from '../ui/logos'; + export default { chains: { Kusama: 'kusama', @@ -13,6 +15,7 @@ export default { create: (chain: string, path: string, data: BN | number | string): string => `https://${chain}.polkassembly.io/${path}/${data.toString()}`, isActive: true, + logo: externalLogos.polkassembly as string, paths: { council: 'motion', proposal: 'proposal', diff --git a/packages/apps-config/src/links/polkastats.ts b/packages/apps-config/src/links/polkastats.ts index edc0a8b848..6b4f6745c4 100644 --- a/packages/apps-config/src/links/polkastats.ts +++ b/packages/apps-config/src/links/polkastats.ts @@ -4,6 +4,8 @@ import BN from 'bn.js'; +import { externalLogos } from '../ui/logos'; + export default { chains: { Kusama: 'kusama', @@ -13,6 +15,7 @@ export default { create: (chain: string, path: string, data: BN | number | string): string => `https://${chain}.polkastats.io/${path}/${data.toString()}`, isActive: true, + logo: externalLogos.polkastats as string, paths: { address: 'account', block: 'block', diff --git a/packages/apps-config/src/links/subscan.ts b/packages/apps-config/src/links/subscan.ts index f12d061292..416615b48e 100644 --- a/packages/apps-config/src/links/subscan.ts +++ b/packages/apps-config/src/links/subscan.ts @@ -4,6 +4,8 @@ import BN from 'bn.js'; +import { externalLogos } from '../ui/logos'; + export default { chains: { Edgeware: 'edgeware', @@ -17,6 +19,7 @@ export default { create: (chain: string, path: string, data: BN | number | string): string => `https://${chain}.subscan.io/${path}/${data.toString()}`, isActive: true, + logo: externalLogos.subscan as string, paths: { address: 'account', block: 'block', diff --git a/packages/apps-config/src/links/types.ts b/packages/apps-config/src/links/types.ts index 27e116798f..8a889ca31a 100644 --- a/packages/apps-config/src/links/types.ts +++ b/packages/apps-config/src/links/types.ts @@ -9,6 +9,7 @@ export type LinkTypes = 'address' | 'block' | 'council' | 'extrinsic' | 'proposa export interface ExternalDef { chains: Record; isActive: boolean; + logo: string; paths: Partial>; url: string; create: (chain: string, path: string, data: BN | number | string, hash?: string) => string; diff --git a/packages/apps-config/src/ui/logos/external/commonwealth.png b/packages/apps-config/src/ui/logos/external/commonwealth.png new file mode 100644 index 0000000000..df0929d628 Binary files /dev/null and b/packages/apps-config/src/ui/logos/external/commonwealth.png differ diff --git a/packages/apps-config/src/ui/logos/external/polkascan.png b/packages/apps-config/src/ui/logos/external/polkascan.png new file mode 100644 index 0000000000..83cd59627d Binary files /dev/null and b/packages/apps-config/src/ui/logos/external/polkascan.png differ diff --git a/packages/apps-config/src/ui/logos/external/polkassembly.png b/packages/apps-config/src/ui/logos/external/polkassembly.png new file mode 100644 index 0000000000..6e2429e31d Binary files /dev/null and b/packages/apps-config/src/ui/logos/external/polkassembly.png differ diff --git a/packages/apps-config/src/ui/logos/external/polkastats.png b/packages/apps-config/src/ui/logos/external/polkastats.png new file mode 100644 index 0000000000..aefaef28d9 Binary files /dev/null and b/packages/apps-config/src/ui/logos/external/polkastats.png differ diff --git a/packages/apps-config/src/ui/logos/external/subscan.png b/packages/apps-config/src/ui/logos/external/subscan.png new file mode 100644 index 0000000000..c721286c83 Binary files /dev/null and b/packages/apps-config/src/ui/logos/external/subscan.png differ diff --git a/packages/apps-config/src/ui/logos/index.ts b/packages/apps-config/src/ui/logos/index.ts index 8d9ccb6a05..a3470baf0c 100644 --- a/packages/apps-config/src/ui/logos/index.ts +++ b/packages/apps-config/src/ui/logos/index.ts @@ -31,6 +31,13 @@ import nodeLaminar from './nodes/laminar-circle.svg'; // extensions import extensionPolkadotJs from './extensions/polkadot-js.svg'; +// external links +import externalCommonwealth from './external/commonwealth.png'; +import externalPolkascan from './external/polkascan.png'; +import externalPolkassembly from './external/polkassembly.png'; +import externalPolkastats from './external/polkastats.png'; +import externalSubscan from './external/subscan.png'; + // last-resort fallback, just something empty import emptyLogo from './empty.svg'; @@ -103,10 +110,32 @@ const extensionLogos: Record = { 'polkadot-js': extensionPolkadotJs }; +// external logos +const externalLogos: Record = { + commonwealth: externalCommonwealth, + polkascan: externalPolkascan, + polkassembly: externalPolkassembly, + polkastats: externalPolkastats, + subscan: externalSubscan +}; + +// empty logos +const emptyLogos: Record = { + empty: emptyLogo +}; + +// preload all +[chainLogos, extensionLogos, externalLogos, namedLogos, nodeLogos, emptyLogos].map((imageSet): void => { + Object.values(imageSet).forEach((src): void => { + new Image().src = src as string; + }); +}); + export { chainLogos, emptyLogo, extensionLogos, + externalLogos, namedLogos, nodeLogos }; diff --git a/packages/page-accounts/src/Accounts/Account.tsx b/packages/page-accounts/src/Accounts/Account.tsx index 2096cc2023..391e52bfce 100644 --- a/packages/page-accounts/src/Accounts/Account.tsx +++ b/packages/page-accounts/src/Accounts/Account.tsx @@ -576,12 +576,12 @@ function Account ({ account: { address, meta }, className = '', delegation, filt - + diff --git a/packages/page-accounts/src/Accounts/index.tsx b/packages/page-accounts/src/Accounts/index.tsx index 7ed106d15e..493c1215df 100644 --- a/packages/page-accounts/src/Accounts/index.tsx +++ b/packages/page-accounts/src/Accounts/index.tsx @@ -91,7 +91,7 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen [t('transactions'), 'media--1500'], [t('balances')], [], - [undefined, 'mini media--1400'] + [undefined, 'media--1400'] ]); useEffect((): void => { diff --git a/packages/page-addresses/src/Contacts/Address.tsx b/packages/page-addresses/src/Contacts/Address.tsx index b9e2b8d74a..a6c380a1f4 100644 --- a/packages/page-addresses/src/Contacts/Address.tsx +++ b/packages/page-addresses/src/Contacts/Address.tsx @@ -235,12 +235,12 @@ function Address ({ address, className = '', filter, isFavorite, toggleFavorite - + diff --git a/packages/page-addresses/src/Contacts/index.tsx b/packages/page-addresses/src/Contacts/index.tsx index 57a68e4d0a..82cd68c85a 100644 --- a/packages/page-addresses/src/Contacts/index.tsx +++ b/packages/page-addresses/src/Contacts/index.tsx @@ -32,7 +32,7 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen [t('transactions'), 'media--1500'], [t('balances')], [], - [undefined, 'mini media--1400'] + [undefined, 'media--1400'] ]); useEffect((): void => { diff --git a/packages/page-council/src/Motions/Motion.tsx b/packages/page-council/src/Motions/Motion.tsx index 6e6d7bb9a8..bedf1ae708 100644 --- a/packages/page-council/src/Motions/Motion.tsx +++ b/packages/page-council/src/Motions/Motion.tsx @@ -112,12 +112,12 @@ function Motion ({ className = '', isMember, members, motion: { hash, proposal, /> )} - + diff --git a/packages/page-council/src/Motions/index.tsx b/packages/page-council/src/Motions/index.tsx index cb940cf601..9bb4a8d8c1 100644 --- a/packages/page-council/src/Motions/index.tsx +++ b/packages/page-council/src/Motions/index.tsx @@ -32,7 +32,7 @@ function Proposals ({ className = '', motions, prime }: Props): React.ReactEleme [t('votes'), 'start'], [], [undefined, 'badge'], - [undefined, 'mini'] + [] ]); return ( diff --git a/packages/page-democracy/src/Execute/DispatchEntry.tsx b/packages/page-democracy/src/Execute/DispatchEntry.tsx index f79c728448..8218de6644 100644 --- a/packages/page-democracy/src/Execute/DispatchEntry.tsx +++ b/packages/page-democracy/src/Execute/DispatchEntry.tsx @@ -45,11 +45,11 @@ function DispatchEntry ({ value: { at, image, imageHash, index } }: Props): Reac /> )} - + diff --git a/packages/page-democracy/src/Execute/DispatchQueue.tsx b/packages/page-democracy/src/Execute/DispatchQueue.tsx index 2cb301b8a5..8f89449c0b 100644 --- a/packages/page-democracy/src/Execute/DispatchQueue.tsx +++ b/packages/page-democracy/src/Execute/DispatchQueue.tsx @@ -24,7 +24,7 @@ function DispatchQueue ({ className }: Props): React.ReactElement | null [t('dispatch queue'), 'start', 2], [t('enact')], [], - [undefined, 'mini media--1000'] + [undefined, 'media--1000'] ]); return ( diff --git a/packages/page-democracy/src/Overview/Proposal.tsx b/packages/page-democracy/src/Overview/Proposal.tsx index cc2119b6ef..1504347e33 100644 --- a/packages/page-democracy/src/Overview/Proposal.tsx +++ b/packages/page-democracy/src/Overview/Proposal.tsx @@ -64,11 +64,11 @@ function Proposal ({ className = '', value: { balance, image, imageHash, index, )} - + diff --git a/packages/page-democracy/src/Overview/Proposals.tsx b/packages/page-democracy/src/Overview/Proposals.tsx index dc87a009eb..f4f21e2237 100644 --- a/packages/page-democracy/src/Overview/Proposals.tsx +++ b/packages/page-democracy/src/Overview/Proposals.tsx @@ -25,7 +25,7 @@ function Proposals ({ className }: Props): React.ReactElement { [t('proposer'), 'address'], [t('locked'), 'media--1200'], [undefined, undefined, 2], - [undefined, 'mini media--1000'] + [undefined, 'media--1000'] ]); return ( diff --git a/packages/page-democracy/src/Overview/Referendum.tsx b/packages/page-democracy/src/Overview/Referendum.tsx index af56a53598..5e97072f70 100644 --- a/packages/page-democracy/src/Overview/Referendum.tsx +++ b/packages/page-democracy/src/Overview/Referendum.tsx @@ -159,11 +159,11 @@ function Referendum ({ className = '', value: { allAye, allNay, image, imageHash icon='asterisk' /> - + diff --git a/packages/page-democracy/src/Overview/Referendums.tsx b/packages/page-democracy/src/Overview/Referendums.tsx index 752a0f7614..22ba3eca3c 100644 --- a/packages/page-democracy/src/Overview/Referendums.tsx +++ b/packages/page-democracy/src/Overview/Referendums.tsx @@ -26,7 +26,7 @@ function Referendums ({ className = '', referendums }: Props): React.ReactElemen [undefined, 'badge'], [t('votes'), 'start'], [undefined, undefined, 2], - [undefined, 'mini media--1000'] + [undefined, 'media--1000'] ]); return ( diff --git a/packages/page-society/src/Overview/Members.tsx b/packages/page-society/src/Overview/Members.tsx index db52a79da6..8ea9a58d45 100644 --- a/packages/page-society/src/Overview/Members.tsx +++ b/packages/page-society/src/Overview/Members.tsx @@ -24,7 +24,7 @@ function Members ({ className = '', info }: Props): React.ReactElement { const headerRef = useRef([ [t('members'), 'start', 3], [t('strikes')], - [undefined, 'mini'] + [] ]); const filtered = useMemo( diff --git a/packages/page-staking/src/Overview/Address/index.tsx b/packages/page-staking/src/Overview/Address/index.tsx index a39179e13f..ab9304ae0b 100644 --- a/packages/page-staking/src/Overview/Address/index.tsx +++ b/packages/page-staking/src/Overview/Address/index.tsx @@ -168,11 +168,11 @@ function Address ({ address, className = '', filterName, hasQueries, isElected, /> )} - + diff --git a/packages/page-treasury/src/Overview/Proposal.tsx b/packages/page-treasury/src/Overview/Proposal.tsx index 162012270a..9a6b1e4667 100644 --- a/packages/page-treasury/src/Overview/Proposal.tsx +++ b/packages/page-treasury/src/Overview/Proposal.tsx @@ -61,11 +61,11 @@ function ProposalDisplay ({ className = '', isMember, members, proposal: { counc ) } - + diff --git a/packages/page-treasury/src/Overview/Proposals.tsx b/packages/page-treasury/src/Overview/Proposals.tsx index 0d1d68bcfa..cee57ceee3 100644 --- a/packages/page-treasury/src/Overview/Proposals.tsx +++ b/packages/page-treasury/src/Overview/Proposals.tsx @@ -36,7 +36,7 @@ function ProposalsBase ({ className = '', isApprovals, isMember, members, propos [t('payment')], [t('bond')], [], - [undefined, 'mini'] + [] ], [isApprovals, t]); return ( diff --git a/packages/page-treasury/src/Tips/Tip.tsx b/packages/page-treasury/src/Tips/Tip.tsx index ee76d886ec..50510a615e 100644 --- a/packages/page-treasury/src/Tips/Tip.tsx +++ b/packages/page-treasury/src/Tips/Tip.tsx @@ -102,7 +102,7 @@ function Tip ({ bestNumber, className = '', defaultId, hash, isMember, members, - + {finder && ( )} @@ -136,6 +136,7 @@ function Tip ({ bestNumber, className = '', defaultId, hash, isMember, members, : finder && ( - + diff --git a/packages/page-treasury/src/Tips/Tips.tsx b/packages/page-treasury/src/Tips/Tips.tsx index e89e25e560..f4c81aa48b 100644 --- a/packages/page-treasury/src/Tips/Tips.tsx +++ b/packages/page-treasury/src/Tips/Tips.tsx @@ -56,13 +56,13 @@ function Tips ({ className = '', defaultId, hashes, isMember, members, onSelectT const headerRef = useRef([ [t('tips'), 'start'], - [t('finder'), 'address'], + [t('finder'), 'address media--1400'], [t('reason'), 'start'], [], [], [undefined, 'badge media--1700'], [], - [undefined, 'mini media--1700'] + [undefined, 'media--1700'] ]); return ( diff --git a/packages/react-components/src/ChainImg.tsx b/packages/react-components/src/ChainImg.tsx index ee48eaf2d2..e212beb222 100644 --- a/packages/react-components/src/ChainImg.tsx +++ b/packages/react-components/src/ChainImg.tsx @@ -13,21 +13,10 @@ interface Props { onClick?: () => any; } -function preloadSet (images: Record): void { - Object.values(images).forEach((src): void => { - new Image().src = src as string; - }); -} - function sanitize (value?: string): string { return value?.toLowerCase().replace('-', ' ') || ''; } -// preload on app init -preloadSet(chainLogos); -preloadSet(namedLogos); -preloadSet(nodeLogos); - function ChainImg ({ className = '', logo, onClick }: Props): React.ReactElement { const { systemChain, systemName } = useApi(); const [isEmpty, img] = useMemo((): [boolean, string] => { diff --git a/packages/react-components/src/LinkExternal.tsx b/packages/react-components/src/LinkExternal.tsx index 19b4fb43d4..48fcd4e815 100644 --- a/packages/react-components/src/LinkExternal.tsx +++ b/packages/react-components/src/LinkExternal.tsx @@ -16,15 +16,15 @@ interface Props { className?: string; data: BN | number | string; hash?: string; + isSmall?: boolean; type: LinkTypes; - withShort?: boolean; } -function shortName (name: string): string { - return `${name[0]}${name[name.length - 1]}`; -} +// function shortName (name: string): string { +// return `${name[0]}${name[name.length - 1]}`; +// } -function genLinks (systemChain: string, { data, hash, type, withShort }: Props): React.ReactNode[] { +function genLinks (systemChain: string, { data, hash, type }: Props): React.ReactNode[] { return Object .entries(linked) .map(([name, { chains, create, isActive, paths, url }]): React.ReactNode | null => { @@ -43,22 +43,19 @@ function genLinks (systemChain: string, { data, hash, type, withShort }: Props): target='_blank' title={`${name}, ${url}`} > - {withShort - ? shortName(name) - : name - } + {name} ); }) .filter((node): node is React.ReactNode => !!node); } -function LinkExternal ({ className = '', data, hash, type, withShort }: Props): React.ReactElement | null { +function LinkExternal ({ className = '', data, hash, isSmall, type }: Props): React.ReactElement | null { const { t } = useTranslation(); const { systemChain } = useApi(); const links = useMemo( - () => genLinks(systemChain, { data, hash, type, withShort }), - [systemChain, data, hash, type, withShort] + () => genLinks(systemChain, { data, hash, type }), + [systemChain, data, hash, type] ); if (!links.length) { @@ -66,8 +63,8 @@ function LinkExternal ({ className = '', data, hash, type, withShort }: Props): } return ( -
- {!withShort &&
{t('View this externally')}
} +
+ {!isSmall &&
{t('View this externally')}
}
{links.map((link, index) => {link})}
); @@ -76,6 +73,12 @@ function LinkExternal ({ className = '', data, hash, type, withShort }: Props): export default React.memo(styled(LinkExternal)` text-align: right; + &.isSmall { + font-size: 0.85rem; + line-height: 1.35; + text-align: center; + } + .links { span { word-wrap: normal; diff --git a/packages/react-components/src/Table/Body.tsx b/packages/react-components/src/Table/Body.tsx index 7fc172685a..ed9f75eae4 100644 --- a/packages/react-components/src/Table/Body.tsx +++ b/packages/react-components/src/Table/Body.tsx @@ -96,6 +96,12 @@ export default React.memo(styled(Body)` font-family: monospace; } + &.links { + padding: 0.5rem 0.75rem; + text-align: center; + width: 0; + } + &.number { text-align: right; }