Compare commits

...

No commits in common. "master" and "v2-finial" have entirely different histories.

903 changed files with 171958 additions and 21869 deletions

4
.prettierignore Normal file
View File

@ -0,0 +1,4 @@
dist
dev/assets/vendor
node_modules
src/node_modules

2
.browserslistrc Normal file
View File

@ -0,0 +1,2 @@
> 1%
last 2 versions

1
.eslintignore Normal file
View File

@ -0,0 +1 @@
charting_library

48
.eslintrc.js Normal file
View File

@ -0,0 +1,48 @@
module.exports = {
root: true,
env: {
node: true,
},
extends: [
'@vue/airbnb',
'plugin:vue/recommended',
'plugin:import/typescript',
// 'prettier/@typescript-eslint',
'plugin:@typescript-eslint/recommended',
// "plugin:prettier/recommended",
],
parser: 'vue-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser',
ecmaVersion: 6,
sourceType: 'module',
ecmaFeatures: {
jsx: false,
modules: true,
experimentalObjectRestSpread: true,
},
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
semi: ['error', 'never'],
'max-len': 'off',
'linebreak-style': 'off',
// camelcase: ['error', { properties: 'never', ignoreDestructuring: true, ignoreImports: true }],
'arrow-parens': ['error', 'as-needed'],
'vue/new-line-between-multi-line-property': 0,
'vue/multiline-html-element-content-newline': 0,
'vue/multi-word-component-names': 0,
'vue/no-mutating-props': 0,
'vue/v-slot-style': 0,
'@typescript-eslint/no-empty-function': 1,
camelcase: 0,
'vuejs-accessibility/click-events-have-key-events': 'off',
'vuejs-accessibility/mouse-events-have-key-events': 'off',
'vuejs-accessibility/anchor-has-content': 'off',
'no-unsafe-optional-chaining': 1,
'vuejs-accessibility/label-has-for': 1,
'import/extensions': 'off',
},
}

2
.github/FUNDING.yml vendored
View File

@ -1,5 +1,5 @@
# These are supported funding model platforms # These are supported funding model platforms
github: ping-pub # github: liangping
issuehunt: ping-pub # Replace with a single IssueHunt username issuehunt: ping-pub # Replace with a single IssueHunt username

View File

@ -7,8 +7,8 @@ on:
pull_request: pull_request:
# branches: [ master ] # branches: [ master ]
paths: paths:
- 'chains/mainnet/**' - 'src/chains/mainnet/**'
- 'chains/testnet/**' - 'src/chains/testnet/**'
jobs: jobs:
deploy: deploy:

View File

@ -3,7 +3,7 @@ name: Deploy to ping.pub
on: on:
push: push:
branches: [ master2 ] branches: [ master ]
# pull_request: # pull_request:
# branches: [ master ] # branches: [ master ]
@ -22,7 +22,7 @@ jobs:
run: yarn install --ignore-engines run: yarn install --ignore-engines
- name: Build - name: Build
run: yarn build run: yarn run vue-cli-service build
- name: Deploy - name: Deploy
run: cp -rf ./dist/* /var/www/html/ run: cp -rf ./dist/* /var/www/html/

39
.gitignore vendored
View File

@ -1,5 +1,36 @@
node_modules/ .DS_Store
**/.vscode node_modules
yarn-error.log /dist
dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea .idea
.vscode/*
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
!.vscode/*.code-snippets
# script
/vuexy-scripts
# Docs
/docs/.temp
# Yarn
.yarn/
.yarnrc.yml
package-lock.json
yarn.lock
pkg/

View File

@ -1,9 +0,0 @@
{
"tabWidth": 2,
"singleQuote": true,
"semi": true,
"endOfLine": "auto",
"bracketSpacing": true,
"TrailingCooma": true,
"arrowParens": "always"
}

45
.yarnclean Normal file
View File

@ -0,0 +1,45 @@
# test directories
__tests__
test
tests
powered-test
# asset directories
docs
doc
website
images
assets
# examples
example
examples
# code coverage directories
coverage
.nyc_output
# build scripts
Makefile
Gulpfile.js
Gruntfile.js
# configs
appveyor.yml
circle.yml
codeship-services.yml
codeship-steps.yml
wercker.yml
.tern-project
.gitattributes
.editorconfig
.*ignore
.eslintrc
.jshintrc
.flowconfig
.documentup.json
.yarn-metadata.json
.travis.yml
# misc
*.md

3
Dockerfile Normal file
View File

@ -0,0 +1,3 @@
FROM nginx:alpine
COPY ping.conf /etc/nginx/conf.d/default.conf
COPY dist /usr/share/nginx/html

View File

@ -8,6 +8,7 @@
[![version](https://img.shields.io/github/tag/ping-pub/explorer.svg)](https://github.com/ping-pub/explorer/releases/latest) [![version](https://img.shields.io/github/tag/ping-pub/explorer.svg)](https://github.com/ping-pub/explorer/releases/latest)
[![GitHub](https://img.shields.io/github/license/ping-pub/explorer.svg)](https://github.com/ping-pub/explorer/blob/master/LICENSE) [![GitHub](https://img.shields.io/github/license/ping-pub/explorer.svg)](https://github.com/ping-pub/explorer/blob/master/LICENSE)
[![Ping Deploy](https://github.com/ping-pub/explorer/actions/workflows/mainnet-deploy.yaml/badge.svg)](https://github.com/ping-pub/explorer/actions/workflows/mainnet-deploy.yaml)
[![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/bukotsunikki.svg?style=social&label=Follow%20%40ping_pub)](https://twitter.com/ping_pub) [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/bukotsunikki.svg?style=social&label=Follow%20%40ping_pub)](https://twitter.com/ping_pub)
[![https://discord.gg/CmjYVSr6GW](https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat)](https://discord.gg/CmjYVSr6GW) [![https://discord.gg/CmjYVSr6GW](https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat)](https://discord.gg/CmjYVSr6GW)
@ -16,19 +17,23 @@
`Ping Dashboard` is a light explorer for Cosmos-based Blockchains. https://ping.pub . `Ping Dashboard` is a light explorer for Cosmos-based Blockchains. https://ping.pub .
## What sets Ping Dashboard apart from other explorers? ## What is the difference between Ping explorer and other explorers?
**Ping Dashboard** stands out by providing a real-time exploration of blockchain data without relying on caching or pre-processing. It exclusively fetches data from the Cosmos full node via LCD/RPC endpoints, ensuring a truly authentic experience. This approach is referred to as the "Light Explorer."
## Are you interested in listing your blockchain on https://ping.pub? `Ping Dashboard` is designed to explore blockchain data as real as possible, therefore there is no cache, no pre-processing. `Ping Dashboard` only fetch data from Cosmos full node via LCD/RPC endpoints. We call it "Light Explorer".
To make this repository clean, please submit your request to https://github.com/ping-pub/ping.pub.git ## Do you want to list your blockchain on ping.pub?
Submit your pull request [here](./src/chains), We will add your chains as soon as possible. It is **FREE** (You must have 10+ independent validators on your chain).
## Why does Ping Dashboard rely on official/trusted third-party public LCD/RPC servers? We remain neutral to all chains, and we do not comment on their market prospects, technical risks, or investment risks. The only condition we list on ping.pub is if there are ten validators, and we cannot determine if these validators are controlled by the same entity.
There are two primary reasons for this choice:
## Why Ping explorer use official/trusted third party public LCD/rpc server?
There are two main reasons:
- Trust, in a decentralized system, anything controlled by one entity cannot be trusted. So we decided to build with the community.
- Limited resources: `Ping Dashboard` will list hundreds of cosmos-based blockchains in the future, and it is impossible for our team to run validators or full nodes for all of them.
- Trust: In a decentralized system, it is crucial to avoid relying solely on a single entity. By utilizing official/trusted third-party public LCD/RPC servers, Ping Dashboard ensures that the data is sourced from a network of trusted participants.
- Limited Resources: As Ping Dashboard plans to list hundreds of Cosmos-based blockchains in the future, it is impractical for the Ping team to operate validators or full nodes for all of them. Leveraging trusted third-party servers allows for more efficient resource allocation.
## Donation ## Donation
@ -39,6 +44,10 @@ Your donation will help us make better products. Thanks in advance.
0x88BFec573Dd3E4b7d2E6BfD4D0D6B11F843F8aa1 0x88BFec573Dd3E4b7d2E6BfD4D0D6B11F843F8aa1
``` ```
- You can donate any token in the Cosmos ecosystem: [here](https://ping.pub/coffee)
> If you are an individual please do not donate more than $10, a cup of coffee means a lot to us.
#### Donations from project #### Donations from project
- Point Network: 1000USDC and $1000 worth of POINT - Point Network: 1000USDC and $1000 worth of POINT
@ -47,7 +56,7 @@ Your donation will help us make better products. Thanks in advance.
## Hire us ## Hire us
You can hire us by submitting an issue and fund the issue on [IssueHunter](https://issuehunt.io/r/ping-pub/explorer) You can hire us by submiting an issue and fund the issue on [IssueHunter](https://issuehunt.io/r/ping-pub/explorer)
## Contributors ## Contributors

606
auto-imports.d.ts vendored
View File

@ -1,606 +0,0 @@
// Generated by 'unplugin-auto-import'
export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
const computed: typeof import('vue')['computed']
const computedAsync: typeof import('@vueuse/core')['computedAsync']
const computedEager: typeof import('@vueuse/core')['computedEager']
const computedInject: typeof import('@vueuse/core')['computedInject']
const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
const controlledRef: typeof import('@vueuse/core')['controlledRef']
const createApp: typeof import('vue')['createApp']
const createEventHook: typeof import('@vueuse/core')['createEventHook']
const createGenericProjection: typeof import('@vueuse/math')['createGenericProjection']
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
const createPinia: typeof import('pinia')['createPinia']
const createProjection: typeof import('@vueuse/math')['createProjection']
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
const customRef: typeof import('vue')['customRef']
const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const defineStore: typeof import('pinia')['defineStore']
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
const effectScope: typeof import('vue')['effectScope']
const extendRef: typeof import('@vueuse/core')['extendRef']
const getActivePinia: typeof import('pinia')['getActivePinia']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
const inject: typeof import('vue')['inject']
const isDefined: typeof import('@vueuse/core')['isDefined']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const logicAnd: typeof import('@vueuse/math')['logicAnd']
const logicNot: typeof import('@vueuse/math')['logicNot']
const logicOr: typeof import('@vueuse/math')['logicOr']
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
const mapActions: typeof import('pinia')['mapActions']
const mapGetters: typeof import('pinia')['mapGetters']
const mapState: typeof import('pinia')['mapState']
const mapStores: typeof import('pinia')['mapStores']
const mapWritableState: typeof import('pinia')['mapWritableState']
const markRaw: typeof import('vue')['markRaw']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
const onLongPress: typeof import('@vueuse/core')['onLongPress']
const onMounted: typeof import('vue')['onMounted']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
const provide: typeof import('vue')['provide']
const reactify: typeof import('@vueuse/core')['reactify']
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
const reactive: typeof import('vue')['reactive']
const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
const reactivePick: typeof import('@vueuse/core')['reactivePick']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
const refDebounced: typeof import('@vueuse/core')['refDebounced']
const refDefault: typeof import('@vueuse/core')['refDefault']
const refThrottled: typeof import('@vueuse/core')['refThrottled']
const refWithControl: typeof import('@vueuse/core')['refWithControl']
const resolveComponent: typeof import('vue')['resolveComponent']
const resolveDirective: typeof import('vue')['resolveDirective']
const resolveRef: typeof import('@vueuse/core')['resolveRef']
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
const setActivePinia: typeof import('pinia')['setActivePinia']
const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const storeToRefs: typeof import('pinia')['storeToRefs']
const syncRef: typeof import('@vueuse/core')['syncRef']
const syncRefs: typeof import('@vueuse/core')['syncRefs']
const templateRef: typeof import('@vueuse/core')['templateRef']
const throttledRef: typeof import('@vueuse/core')['throttledRef']
const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
const toRaw: typeof import('vue')['toRaw']
const toReactive: typeof import('@vueuse/core')['toReactive']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const triggerRef: typeof import('vue')['triggerRef']
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
const unref: typeof import('vue')['unref']
const unrefElement: typeof import('@vueuse/core')['unrefElement']
const until: typeof import('@vueuse/core')['until']
const useAbs: typeof import('@vueuse/math')['useAbs']
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
const useArraySome: typeof import('@vueuse/core')['useArraySome']
const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
const useAttrs: typeof import('vue')['useAttrs']
const useAverage: typeof import('@vueuse/math')['useAverage']
const useBase64: typeof import('@vueuse/core')['useBase64']
const useBattery: typeof import('@vueuse/core')['useBattery']
const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
const useCached: typeof import('@vueuse/core')['useCached']
const useCeil: typeof import('@vueuse/math')['useCeil']
const useClamp: typeof import('@vueuse/math')['useClamp']
const useClipboard: typeof import('@vueuse/core')['useClipboard']
const useCloned: typeof import('@vueuse/core')['useCloned']
const useColorMode: typeof import('@vueuse/core')['useColorMode']
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
const useCounter: typeof import('@vueuse/core')['useCounter']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVar: typeof import('@vueuse/core')['useCssVar']
const useCssVars: typeof import('vue')['useCssVars']
const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
const useCycleList: typeof import('@vueuse/core')['useCycleList']
const useDark: typeof import('@vueuse/core')['useDark']
const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
const useDebounce: typeof import('@vueuse/core')['useDebounce']
const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
const useDraggable: typeof import('@vueuse/core')['useDraggable']
const useDropZone: typeof import('@vueuse/core')['useDropZone']
const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
const useElementHover: typeof import('@vueuse/core')['useElementHover']
const useElementSize: typeof import('@vueuse/core')['useElementSize']
const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
const useEventBus: typeof import('@vueuse/core')['useEventBus']
const useEventListener: typeof import('@vueuse/core')['useEventListener']
const useEventSource: typeof import('@vueuse/core')['useEventSource']
const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
const useFavicon: typeof import('@vueuse/core')['useFavicon']
const useFetch: typeof import('@vueuse/core')['useFetch']
const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
const useFloor: typeof import('@vueuse/math')['useFloor']
const useFocus: typeof import('@vueuse/core')['useFocus']
const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
const useFps: typeof import('@vueuse/core')['useFps']
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
const useGamepad: typeof import('@vueuse/core')['useGamepad']
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
const useI18n: typeof import('vue-i18n')['useI18n']
const useIdle: typeof import('@vueuse/core')['useIdle']
const useImage: typeof import('@vueuse/core')['useImage']
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
const useInterval: typeof import('@vueuse/core')['useInterval']
const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
const useLink: typeof import('vue-router')['useLink']
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
const useMath: typeof import('@vueuse/math')['useMath']
const useMax: typeof import('@vueuse/math')['useMax']
const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
const useMemoize: typeof import('@vueuse/core')['useMemoize']
const useMemory: typeof import('@vueuse/core')['useMemory']
const useMin: typeof import('@vueuse/math')['useMin']
const useMounted: typeof import('@vueuse/core')['useMounted']
const useMouse: typeof import('@vueuse/core')['useMouse']
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
const useNetwork: typeof import('@vueuse/core')['useNetwork']
const useNow: typeof import('@vueuse/core')['useNow']
const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
const useOnline: typeof import('@vueuse/core')['useOnline']
const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
const useParallax: typeof import('@vueuse/core')['useParallax']
const usePermission: typeof import('@vueuse/core')['usePermission']
const usePointer: typeof import('@vueuse/core')['usePointer']
const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
const usePrecision: typeof import('@vueuse/math')['usePrecision']
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
const usePrevious: typeof import('@vueuse/core')['usePrevious']
const useProjection: typeof import('@vueuse/math')['useProjection']
const useRafFn: typeof import('@vueuse/core')['useRafFn']
const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
const useRound: typeof import('@vueuse/math')['useRound']
const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter']
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
const useScroll: typeof import('@vueuse/core')['useScroll']
const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
const useShare: typeof import('@vueuse/core')['useShare']
const useSlots: typeof import('vue')['useSlots']
const useSorted: typeof import('@vueuse/core')['useSorted']
const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
const useStepper: typeof import('@vueuse/core')['useStepper']
const useStorage: typeof import('@vueuse/core')['useStorage']
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
const useSum: typeof import('@vueuse/math')['useSum']
const useSupported: typeof import('@vueuse/core')['useSupported']
const useSwipe: typeof import('@vueuse/core')['useSwipe']
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
const useThrottle: typeof import('@vueuse/core')['useThrottle']
const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
const useTimeout: typeof import('@vueuse/core')['useTimeout']
const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
const useTitle: typeof import('@vueuse/core')['useTitle']
const useToFixed: typeof import('@vueuse/math')['useToFixed']
const useToNumber: typeof import('@vueuse/core')['useToNumber']
const useToString: typeof import('@vueuse/core')['useToString']
const useToggle: typeof import('@vueuse/core')['useToggle']
const useTransition: typeof import('@vueuse/core')['useTransition']
const useTrunc: typeof import('@vueuse/math')['useTrunc']
const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
const useVModel: typeof import('@vueuse/core')['useVModel']
const useVModels: typeof import('@vueuse/core')['useVModels']
const useVibrate: typeof import('@vueuse/core')['useVibrate']
const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
const watch: typeof import('vue')['watch']
const watchArray: typeof import('@vueuse/core')['watchArray']
const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
const watchEffect: typeof import('vue')['watchEffect']
const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
const watchOnce: typeof import('@vueuse/core')['watchOnce']
const watchPausable: typeof import('@vueuse/core')['watchPausable']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
const whenever: typeof import('@vueuse/core')['whenever']
}
// for vue template auto import
import { UnwrapRef } from 'vue'
declare module 'vue' {
interface ComponentCustomProperties {
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
readonly acceptHMRUpdate: UnwrapRef<typeof import('pinia')['acceptHMRUpdate']>
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
readonly computed: UnwrapRef<typeof import('vue')['computed']>
readonly computedAsync: UnwrapRef<typeof import('@vueuse/core')['computedAsync']>
readonly computedEager: UnwrapRef<typeof import('@vueuse/core')['computedEager']>
readonly computedInject: UnwrapRef<typeof import('@vueuse/core')['computedInject']>
readonly computedWithControl: UnwrapRef<typeof import('@vueuse/core')['computedWithControl']>
readonly controlledComputed: UnwrapRef<typeof import('@vueuse/core')['controlledComputed']>
readonly controlledRef: UnwrapRef<typeof import('@vueuse/core')['controlledRef']>
readonly createApp: UnwrapRef<typeof import('vue')['createApp']>
readonly createEventHook: UnwrapRef<typeof import('@vueuse/core')['createEventHook']>
readonly createGenericProjection: UnwrapRef<typeof import('@vueuse/math')['createGenericProjection']>
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
readonly createPinia: UnwrapRef<typeof import('pinia')['createPinia']>
readonly createProjection: UnwrapRef<typeof import('@vueuse/math')['createProjection']>
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']>
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
readonly defineStore: UnwrapRef<typeof import('pinia')['defineStore']>
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
readonly getActivePinia: UnwrapRef<typeof import('pinia')['getActivePinia']>
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
readonly h: UnwrapRef<typeof import('vue')['h']>
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
readonly inject: UnwrapRef<typeof import('vue')['inject']>
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
readonly logicAnd: UnwrapRef<typeof import('@vueuse/math')['logicAnd']>
readonly logicNot: UnwrapRef<typeof import('@vueuse/math')['logicNot']>
readonly logicOr: UnwrapRef<typeof import('@vueuse/math')['logicOr']>
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
readonly mapActions: UnwrapRef<typeof import('pinia')['mapActions']>
readonly mapGetters: UnwrapRef<typeof import('pinia')['mapGetters']>
readonly mapState: UnwrapRef<typeof import('pinia')['mapState']>
readonly mapStores: UnwrapRef<typeof import('pinia')['mapStores']>
readonly mapWritableState: UnwrapRef<typeof import('pinia')['mapWritableState']>
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
readonly onBeforeRouteLeave: UnwrapRef<typeof import('vue-router')['onBeforeRouteLeave']>
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('vue-router')['onBeforeRouteUpdate']>
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
readonly provide: UnwrapRef<typeof import('vue')['provide']>
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
readonly reactiveComputed: UnwrapRef<typeof import('@vueuse/core')['reactiveComputed']>
readonly reactiveOmit: UnwrapRef<typeof import('@vueuse/core')['reactiveOmit']>
readonly reactivePick: UnwrapRef<typeof import('@vueuse/core')['reactivePick']>
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
readonly ref: UnwrapRef<typeof import('vue')['ref']>
readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']>
readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']>
readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']>
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
readonly resolveDirective: UnwrapRef<typeof import('vue')['resolveDirective']>
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
readonly setActivePinia: UnwrapRef<typeof import('pinia')['setActivePinia']>
readonly setMapStoreSuffix: UnwrapRef<typeof import('pinia')['setMapStoreSuffix']>
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
readonly storeToRefs: UnwrapRef<typeof import('pinia')['storeToRefs']>
readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']>
readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']>
readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']>
readonly throttledRef: UnwrapRef<typeof import('@vueuse/core')['throttledRef']>
readonly throttledWatch: UnwrapRef<typeof import('@vueuse/core')['throttledWatch']>
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']>
readonly tryOnMounted: UnwrapRef<typeof import('@vueuse/core')['tryOnMounted']>
readonly tryOnScopeDispose: UnwrapRef<typeof import('@vueuse/core')['tryOnScopeDispose']>
readonly tryOnUnmounted: UnwrapRef<typeof import('@vueuse/core')['tryOnUnmounted']>
readonly unref: UnwrapRef<typeof import('vue')['unref']>
readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']>
readonly until: UnwrapRef<typeof import('@vueuse/core')['until']>
readonly useAbs: UnwrapRef<typeof import('@vueuse/math')['useAbs']>
readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']>
readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']>
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']>
readonly useArrayUnique: UnwrapRef<typeof import('@vueuse/core')['useArrayUnique']>
readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']>
readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']>
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
readonly useAverage: UnwrapRef<typeof import('@vueuse/math')['useAverage']>
readonly useBase64: UnwrapRef<typeof import('@vueuse/core')['useBase64']>
readonly useBattery: UnwrapRef<typeof import('@vueuse/core')['useBattery']>
readonly useBluetooth: UnwrapRef<typeof import('@vueuse/core')['useBluetooth']>
readonly useBreakpoints: UnwrapRef<typeof import('@vueuse/core')['useBreakpoints']>
readonly useBroadcastChannel: UnwrapRef<typeof import('@vueuse/core')['useBroadcastChannel']>
readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']>
readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']>
readonly useCeil: UnwrapRef<typeof import('@vueuse/math')['useCeil']>
readonly useClamp: UnwrapRef<typeof import('@vueuse/math')['useClamp']>
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']>
readonly useCycleList: UnwrapRef<typeof import('@vueuse/core')['useCycleList']>
readonly useDark: UnwrapRef<typeof import('@vueuse/core')['useDark']>
readonly useDateFormat: UnwrapRef<typeof import('@vueuse/core')['useDateFormat']>
readonly useDebounce: UnwrapRef<typeof import('@vueuse/core')['useDebounce']>
readonly useDebounceFn: UnwrapRef<typeof import('@vueuse/core')['useDebounceFn']>
readonly useDebouncedRefHistory: UnwrapRef<typeof import('@vueuse/core')['useDebouncedRefHistory']>
readonly useDeviceMotion: UnwrapRef<typeof import('@vueuse/core')['useDeviceMotion']>
readonly useDeviceOrientation: UnwrapRef<typeof import('@vueuse/core')['useDeviceOrientation']>
readonly useDevicePixelRatio: UnwrapRef<typeof import('@vueuse/core')['useDevicePixelRatio']>
readonly useDevicesList: UnwrapRef<typeof import('@vueuse/core')['useDevicesList']>
readonly useDisplayMedia: UnwrapRef<typeof import('@vueuse/core')['useDisplayMedia']>
readonly useDocumentVisibility: UnwrapRef<typeof import('@vueuse/core')['useDocumentVisibility']>
readonly useDraggable: UnwrapRef<typeof import('@vueuse/core')['useDraggable']>
readonly useDropZone: UnwrapRef<typeof import('@vueuse/core')['useDropZone']>
readonly useElementBounding: UnwrapRef<typeof import('@vueuse/core')['useElementBounding']>
readonly useElementByPoint: UnwrapRef<typeof import('@vueuse/core')['useElementByPoint']>
readonly useElementHover: UnwrapRef<typeof import('@vueuse/core')['useElementHover']>
readonly useElementSize: UnwrapRef<typeof import('@vueuse/core')['useElementSize']>
readonly useElementVisibility: UnwrapRef<typeof import('@vueuse/core')['useElementVisibility']>
readonly useEventBus: UnwrapRef<typeof import('@vueuse/core')['useEventBus']>
readonly useEventListener: UnwrapRef<typeof import('@vueuse/core')['useEventListener']>
readonly useEventSource: UnwrapRef<typeof import('@vueuse/core')['useEventSource']>
readonly useEyeDropper: UnwrapRef<typeof import('@vueuse/core')['useEyeDropper']>
readonly useFavicon: UnwrapRef<typeof import('@vueuse/core')['useFavicon']>
readonly useFetch: UnwrapRef<typeof import('@vueuse/core')['useFetch']>
readonly useFileDialog: UnwrapRef<typeof import('@vueuse/core')['useFileDialog']>
readonly useFileSystemAccess: UnwrapRef<typeof import('@vueuse/core')['useFileSystemAccess']>
readonly useFloor: UnwrapRef<typeof import('@vueuse/math')['useFloor']>
readonly useFocus: UnwrapRef<typeof import('@vueuse/core')['useFocus']>
readonly useFocusWithin: UnwrapRef<typeof import('@vueuse/core')['useFocusWithin']>
readonly useFps: UnwrapRef<typeof import('@vueuse/core')['useFps']>
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
readonly useIntersectionObserver: UnwrapRef<typeof import('@vueuse/core')['useIntersectionObserver']>
readonly useInterval: UnwrapRef<typeof import('@vueuse/core')['useInterval']>
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
readonly useMath: UnwrapRef<typeof import('@vueuse/math')['useMath']>
readonly useMax: UnwrapRef<typeof import('@vueuse/math')['useMax']>
readonly useMediaControls: UnwrapRef<typeof import('@vueuse/core')['useMediaControls']>
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
readonly useMin: UnwrapRef<typeof import('@vueuse/math')['useMin']>
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
readonly useMousePressed: UnwrapRef<typeof import('@vueuse/core')['useMousePressed']>
readonly useMutationObserver: UnwrapRef<typeof import('@vueuse/core')['useMutationObserver']>
readonly useNavigatorLanguage: UnwrapRef<typeof import('@vueuse/core')['useNavigatorLanguage']>
readonly useNetwork: UnwrapRef<typeof import('@vueuse/core')['useNetwork']>
readonly useNow: UnwrapRef<typeof import('@vueuse/core')['useNow']>
readonly useObjectUrl: UnwrapRef<typeof import('@vueuse/core')['useObjectUrl']>
readonly useOffsetPagination: UnwrapRef<typeof import('@vueuse/core')['useOffsetPagination']>
readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']>
readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']>
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']>
readonly usePrecision: UnwrapRef<typeof import('@vueuse/math')['usePrecision']>
readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']>
readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']>
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
readonly useProjection: UnwrapRef<typeof import('@vueuse/math')['useProjection']>
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
readonly useRound: UnwrapRef<typeof import('@vueuse/math')['useRound']>
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']>
readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']>
readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']>
readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']>
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
readonly useSorted: UnwrapRef<typeof import('@vueuse/core')['useSorted']>
readonly useSpeechRecognition: UnwrapRef<typeof import('@vueuse/core')['useSpeechRecognition']>
readonly useSpeechSynthesis: UnwrapRef<typeof import('@vueuse/core')['useSpeechSynthesis']>
readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']>
readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']>
readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']>
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
readonly useSum: UnwrapRef<typeof import('@vueuse/math')['useSum']>
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
readonly useTextareaAutosize: UnwrapRef<typeof import('@vueuse/core')['useTextareaAutosize']>
readonly useThrottle: UnwrapRef<typeof import('@vueuse/core')['useThrottle']>
readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']>
readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']>
readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']>
readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']>
readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']>
readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']>
readonly useTimestamp: UnwrapRef<typeof import('@vueuse/core')['useTimestamp']>
readonly useTitle: UnwrapRef<typeof import('@vueuse/core')['useTitle']>
readonly useToFixed: UnwrapRef<typeof import('@vueuse/math')['useToFixed']>
readonly useToNumber: UnwrapRef<typeof import('@vueuse/core')['useToNumber']>
readonly useToString: UnwrapRef<typeof import('@vueuse/core')['useToString']>
readonly useToggle: UnwrapRef<typeof import('@vueuse/core')['useToggle']>
readonly useTransition: UnwrapRef<typeof import('@vueuse/core')['useTransition']>
readonly useTrunc: UnwrapRef<typeof import('@vueuse/math')['useTrunc']>
readonly useUrlSearchParams: UnwrapRef<typeof import('@vueuse/core')['useUrlSearchParams']>
readonly useUserMedia: UnwrapRef<typeof import('@vueuse/core')['useUserMedia']>
readonly useVModel: UnwrapRef<typeof import('@vueuse/core')['useVModel']>
readonly useVModels: UnwrapRef<typeof import('@vueuse/core')['useVModels']>
readonly useVibrate: UnwrapRef<typeof import('@vueuse/core')['useVibrate']>
readonly useVirtualList: UnwrapRef<typeof import('@vueuse/core')['useVirtualList']>
readonly useWakeLock: UnwrapRef<typeof import('@vueuse/core')['useWakeLock']>
readonly useWebNotification: UnwrapRef<typeof import('@vueuse/core')['useWebNotification']>
readonly useWebSocket: UnwrapRef<typeof import('@vueuse/core')['useWebSocket']>
readonly useWebWorker: UnwrapRef<typeof import('@vueuse/core')['useWebWorker']>
readonly useWebWorkerFn: UnwrapRef<typeof import('@vueuse/core')['useWebWorkerFn']>
readonly useWindowFocus: UnwrapRef<typeof import('@vueuse/core')['useWindowFocus']>
readonly useWindowScroll: UnwrapRef<typeof import('@vueuse/core')['useWindowScroll']>
readonly useWindowSize: UnwrapRef<typeof import('@vueuse/core')['useWindowSize']>
readonly watch: UnwrapRef<typeof import('vue')['watch']>
readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']>
readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']>
readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']>
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']>
readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']>
readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']>
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
readonly watchThrottled: UnwrapRef<typeof import('@vueuse/core')['watchThrottled']>
readonly watchTriggerable: UnwrapRef<typeof import('@vueuse/core')['watchTriggerable']>
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
}
}

5
babel.config.js Normal file
View File

@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset',
],
}

View File

@ -1,108 +0,0 @@
# Directory Layout
Note: the host name used in the user's browser (displayed in the address bar) to load the explorer app determines which of the chain configuration directories is used.
If the host name contains the substring "testnet" (for example: "https://mytestnetwork.example.com") then chain configuration files in the `testnet` directory (only) are loaded. Conversely if the host name does not contain that substring then chain configuration files in the `mainnet` directory (only) are loaded.
Remember to bear this behavior in mind when selecting a DNS host name for self hosting the explorer.
** if you want to list your blockchain on ping.pub, please submit your configuration on https://github.com/ping-pub/ping.pub.git **
- Submit configs for mainnet, go to https://github.com/ping-pub/explorer/tree/master/chains/mainnet
- Submit configs for testnet, go to https://github.com/ping-pub/explorer/tree/master/chains/testnet, these configs will be enabled when you visit the domain that starts with `testnet.*`, for example `https://testnet.ping.pub`
# Sample of Config
```json
{
"chain_name": "cosmos",
"api": [
{
"address": "https://cosmos.api.ping.pub",
"provider": "Ping"
}
],
"rpc": [
{
"address": "https://cosmos.api.ping.pub",
"provider": "Ping"
}
],
"sdk_version": "0.42.6",
"coin_type": "118",
"min_tx_fee": "800",
"assets": [{
"base": "uatom",
"symbol": "ATOM",
"exponent": "6",
"coingecko_id": "cosmos",
"logo": "https://dl.airtable.com/.attachments/e54f814bba8c0f9af8a3056020210de0/2d1155fb/cosmos-hub.svg"
}],
"addr_prefix": "cosmos",
"theme_color": "#ce4747",
"logo": "https://dl.airtable.com/.attachments/e54f814bba8c0f9af8a3056020210de0/2d1155fb/cosmos-hub.svg"
}
```
- **chain_name** the name to identify the chain on ping.pub, would be better to use the same one as registry
- **api** the rest api endpoint.(make sure that CORS is enabled: `Allow-Control-Allow-Origin: *`)
- **rpc** the rpc endpoint, make sure that the port is added. rpc endpoint is only used for state sync. it's optional.
- **assets** Native Assets on blockchain.
Endpoint providers will be listed in the "Popular" tab of the staking.
# Token Unit conversion
We have two methods to load token metadata for token unit conversion:
## Loading from a REST endpoint (recommended).
you can define the metadata in the `bank` -> `metadata` section of the blockchain's genesis file. if you don't define, the `[]` will return.
```json
{
"name": "atom",
"description": "The native staking token of the Cosmos Hub.",
"denom_units": [
{
"denom": "uatom",
"exponent": 0,
"aliases": [
"microatom"
],
},
{
"denom": "matom",
"exponent": 3,
"aliases": [
"milliatom"
]
},
{
"denom": "atom",
"exponent": 6,
}
],
"base": "uatom",
"display": "atom",
}
```
you can see more details here:
https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-024-coin-metadata.md
## Loading from Cosmos Registry:
https://github.com/cosmos/chain-registry
# Test
please add these check points in comments with your PR, and adding your test result by clicking the checkbox of each line
```
Test Result:
- [ ] Connect wallet, check if address is correct?
- [ ] Transfer
- [ ] Delegate
- [ ] Redelegate
- [ ] Unbond
- [ ] withdraw Validator's Commission
- [ ] withdraw Rewards
```
Test is very important for us and our users.

View File

@ -1,74 +0,0 @@
{
"chain_name": "axelar",
"api": [
"https://rest.axelar.lava.build/lava-referer-97409c72-1a82-4861-8651-119c15151cbe"
],
"rpc": [
"https://tm.axelar.lava.build/lava-referer-97409c72-1a82-4861-8651-119c15151cbe"
],
"snapshot_provider": "",
"sdk_version": "0.45.6",
"coin_type": "118",
"min_tx_fee": "800",
"addr_prefix": "axelar",
"logo": "/logos/axelar.svg",
"theme_color": "#161723",
"assets": [
{
"base": "uaxl",
"symbol": "AXL",
"exponent": "6",
"coingecko_id": "axelar",
"logo": "/logos/axelar.svg"
},
{
"base": "uusdc",
"symbol": "axlUSDC",
"exponent": "6",
"coingecko_id": "usd-coin",
"logo": "/logos/usdc.svg"
},
{
"base": "uusdt",
"symbol": "axlUSDT",
"exponent": "6",
"coingecko_id": "tether",
"logo": "/logos/usdt.svg"
},
{
"base": "dai-wei",
"symbol": "axlDAI",
"exponent": "18",
"coingecko_id": "dai",
"logo": "/logos/dai.svg"
},
{
"base": "weth-wei",
"symbol": "axlWETH",
"exponent": "18",
"coingecko_id": "ethereum",
"logo": "/logos/weth.svg"
},
{
"base": "wmatic-wei",
"symbol": "axlWMATIC",
"exponent": "18",
"coingecko_id": "matic-network",
"logo": "/logos/wmatic.svg"
},
{
"base": "wavax-wei",
"symbol": "axlWAVAX",
"exponent": "18",
"coingecko_id": "avalanche-2",
"logo": "/logos/wavax.svg"
},
{
"base": "dot-planck",
"symbol": "axlDOT",
"exponent": "10",
"coingecko_id": "polkadot",
"logo": "/logos/dot.svg"
}
]
}

View File

@ -1,31 +0,0 @@
{
"chain_name": "cosmos",
"registry_name": "cosmoshub",
"api": [
{"provider": "notional", "address": "https://api-cosmoshub-ia.cosmosia.notional.ventures"},
{"provider": "blockapsis", "address": "https://lcd-cosmoshub.blockapsis.com:443"},
{"provider": "WhisperNode🤐", "address": "https://lcd-cosmoshub.whispernode.com:443"},
{"provider": "pupmos", "address": "https://api-cosmoshub.pupmos.network"},
{"provider": "publicnode", "address": "https://cosmos-rest.publicnode.com"},
{"provider": "staketab", "address": "https://cosmos-rest.staketab.org"},
{"provider": "nodestake", "address": "https://api.cosmos.nodestake.top"},
{"provider": "Golden Ratio Staking", "address": "https://rest-cosmoshub.goldenratiostaking.net"}
],
"rpc": [
{"provider": "icycro", "address": "https://cosmos-rpc.icycro.org"},
{"provider": "dragonstake", "address": "https://rpc.cosmos.dragonstake.io"},
{"provider": "Golden Ratio Staking", "address": "https://rpc-cosmoshub.goldenratiostaking.net"}
],
"sdk_version": "0.45.1",
"coin_type": "118",
"min_tx_fee": "800",
"addr_prefix": "cosmos",
"logo": "/logos/cosmos.svg",
"assets": [{
"base": "uatom",
"symbol": "ATOM",
"exponent": "6",
"coingecko_id": "cosmos",
"logo": "/logos/cosmos.svg"
}]
}

View File

@ -1,30 +0,0 @@
{
"chain_name": "neutron",
"api": [
{"provider": "Polkachu", "address": "https://neutron-api.polkachu.com"},
{"provider": "NodeStake", "address": "https://api.neutron.nodestake.top"},
{"provider": "Allnodes", "address": "https://neutron-rest.publicnode.com"}
],
"rpc": [
{"provider": "Polkachu", "address": "https://neutron-rpc.polkachu.com"},
{"provider": "NodeStake", "address": "https://rpc.neutron.nodestake.top"},
{"provider": "Allnodes", "address": "https://neutron-rpc.publicnode.com:443"}
],
"provider_chain": {
"api": ["https://api-cosmoshub-ia.cosmosia.notional.ventures"]
},
"features": ["dashboard", "blocks", "ibc", "cosmwasm", "uptime", "parameters", "state-sync", "consensus", "supply", "widget"],
"sdk_version": "0.45.1",
"coin_type": "118",
"min_tx_fee": "8000",
"assets": [{
"base": "untrn",
"symbol": "NTRN",
"exponent": "6",
"coingecko_id": "neutron",
"logo": "/logos/neutron.svg"
}],
"addr_prefix": "neutron",
"theme_color": "#161723",
"logo": "/logos/neutron.svg"
}

View File

@ -1,27 +0,0 @@
{
"chain_name": "nolus",
"coingecko": "nolus",
"api": [
{"provider": "Nolus", "address": "https://pirin-cl.nolus.network:1317"},
{"provider": "LavenderFive", "address": "https://nolus-api.lavenderfive.com:443"},
{"provider": "Allnodes", "address": "https://nolus-rest.publicnode.com"}
],
"rpc": [
{"provider": "Nolus", "address": "https://pirin-cl.nolus.network:26657"},
{"provider": "LavenderFive", "address": "https://nolus-rpc.lavenderfive.com:443"},
{"provider": "Allnodes", "address": "https://nolus-rpc.publicnode.com:443"}
],
"snapshot_provider": "",
"sdk_version": "v0.47.6",
"coin_type": "118",
"min_tx_fee": "0",
"addr_prefix": "nolus",
"logo": "/logos/nolus.svg",
"assets": [{
"base": "unls",
"symbol": "NLS",
"exponent": "6",
"coingecko_id": "nolus",
"logo": "/logos/nolus.svg"
}]
}

View File

@ -1,11 +0,0 @@
{
"chain_name": "crossfi-testnet-1",
"api": ["https://crossfi-testnet-api.forpeaky.xyz"],
"rpc": ["https://crossfi-testnet-rpc.forpeaky.xyz"],
"coingecko": "",
"snapshot_provider": "",
"sdk_version": "0.47.1",
"coin_type": "118",
"min_tx_fee": "500",
"addr_prefix": "crossfi"
}

13
components.d.ts vendored
View File

@ -1,13 +0,0 @@
// generated by unplugin-vue-components
// We suggest you to commit this file into source control
// Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core';
export {};
declare module '@vue/runtime-core' {
export interface GlobalComponents {
RouterLink: typeof import('vue-router')['RouterLink'];
RouterView: typeof import('vue-router')['RouterView'];
}
}

7
docker.sh Executable file
View File

@ -0,0 +1,7 @@
# chmod 755 docker.sh
yarn --ignore-engines add
yarn --ignore-engines build
docker build -t "ping.pub/dashboard" .
# then you can run "docker run -d -p 8080:80 ping.pub/dashboard"

3
env.d.ts vendored
View File

@ -1,3 +0,0 @@
/// <reference types="vite/client" />
declare module '@personaxyz/ad-sdk';

View File

@ -1,44 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Laconic Blockchain Explorer And Web Wallet</title>
<meta name="description" content="Laconic Explorer is a block explorer/web wallet for blockchains built on Cosmos SDK, Cosmoshub, Osmosis, Juno, Evmos, Injective, Canto and 70+ blockchains listed on ping.pub" />
<link rel="stylesheet" type="text/css" href="/loader.css" />
</head>
<body>
<div id="app">
<div id="loading-bg">
<div class="loading-logo">
<img src="/logo.svg" alt="Logo" />
</div>
<div class="pre-loading">
<div class="effect-1 effects"></div>
<div class="effect-2 effects"></div>
<div class="effect-3 effects"></div>
</div>
</div>
</div>
<script type="module" src="/src/main.ts"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SSBKVF3GMX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
// Set default consent to 'denied' as a placeholder
// Determine actual values based on your own requirements
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
gtag('config', 'G-SSBKVF3GMX');
</script>
<script type="module" src="https://cdn.jsdelivr.net/npm/ping-widget@v0.3.8/dist/ping-widget.min.js"></script>
</body>
</html>

View File

@ -1,25 +1,6 @@
# Prerequisites # Prerequisite
1. Node, https://nodejs.org
1. Node and Yarn - Acquired using Node Version Manager (https://github.com/nvm-sh/nvm) 2. Yarn, https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable
# Quick Install for Prerequisites
1. Install Node Version Manager
```sh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
```
2. Install the latest version of NodeJS
```sh
nvm install node # "node" is an alias for the latest version
```
3. Install the latest version of NPM for Node
```sh
nvm install-latest-npm # get the latest supported npm version on the current node version
```
4. Install Yarn
```sh
npm install --global yarn
```
# Installation: # Installation:

9
jsconfig.json Normal file
View File

@ -0,0 +1,9 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"@core/*": ["src/@core/*"],
}
}
}

View File

@ -1,79 +1,127 @@
{ {
"name": "ping.pub", "name": "ping-wallet",
"version": "3.0.0", "license": "GPL-2.0",
"private": true, "version": "0.1.0",
"target": "", "author": {
"name": "ping.pub"
},
"scripts": { "scripts": {
"dev": "vite", "serve": "vue-cli-service serve",
"serve": "vite", "build": "vue-cli-service build",
"build": "run-p type-check build-only", "lint": "vue-cli-service lint",
"preview": "vite preview", "analyz": "vue-cli-service build --report"
"build-only": "vite build",
"type-check": "vue-tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@chenfengyuan/vue-countdown": "2", "@casl/ability": "4.1.6",
"@cosmjs/crypto": "^0.32.3", "@casl/vue": "1.1.1",
"@cosmjs/amino": "^0.32.3", "@cosmjs/amino": "^0.28.4",
"@cosmjs/encoding": "^0.32.3", "@cosmjs/crypto": "^0.28.4",
"@cosmjs/stargate": "^0.32.3", "@cosmjs/encoding": "^0.28.4",
"@iconify/vue": "^4.1.0", "@cosmjs/launchpad": "^0.27.1",
"@intlify/unplugin-vue-i18n": "^0.8.2", "@cosmjs/ledger-amino": "^0.28.4",
"@leapwallet/cosmos-snap-provider": "^0.1.20", "@cosmjs/math": "^0.28.4",
"@leapwallet/name-matcha": "^1.1.0", "@cosmjs/proto-signing": "^0.28.4",
"@osmonauts/lcd": "^0.8.0", "@cosmjs/stargate": "0.28.4",
"@personaxyz/ad-sdk": "0.0.25", "@hanchon/signature-to-pubkey": "^1.0.0",
"@ping-pub/chain-registry-client": "^0.0.25", "@intlify/vue-i18n-loader": "^2.1.2",
"@vitejs/plugin-vue-jsx": "^3.0.0", "@ledgerhq/hw-app-eth": "^6.28.2",
"@vueuse/core": "^9.12.0", "@ledgerhq/hw-transport": "6.27.2",
"@vueuse/integrations": "^10.1.2", "@ledgerhq/hw-transport-web-ble": "^6.27.1",
"@vueuse/math": "^9.12.0", "@ledgerhq/hw-transport-webusb": "^6.27.1",
"apexcharts": "^3.37.1", "@metamask/eth-sig-util": "^4.0.1",
"autoprefixer": "^10.4.14", "@tharsis/address-converter": "^0.1.8",
"axios": "^1.3.2", "@tharsis/eip712": "0.2.4",
"buffer": "^6.0.3", "@tharsis/proto": "0.1.19",
"build": "^0.1.4", "@tharsis/transactions": "^0.2.5",
"cross-fetch": "^3.1.5", "@vue/composition-api": "^1.4.9",
"daisyui": "^3.1.0", "@vueuse/core": "4.0.0",
"dayjs": "^1.11.7", "animate.css": "4.1.1",
"lazy-load-vue3": "^1.3.0", "apexcharts": "3.2.0",
"long": "^5.2.1", "babel-runtime": "^6.26.0",
"md-editor-v3": "^2.8.1", "bootstrap": "4.6.0",
"numeral": "^2.0.6", "bootstrap-vue": "2.21.1",
"osmojs": "^14.0.0-rc.0", "chart.js": "2.9.4",
"pinia": "^2.0.28", "compare-versions": "^3.6.0",
"postcss": "^8.4.23", "core-js": "^3.22.5",
"qrcode": "^1.5.3", "cosmjs-types": "^0.2.0",
"tailwindcss": "^3.3.1", "dayjs": "^1.10.6",
"theme-change": "^2.5.0", "echarts": "5.3.0",
"vite-plugin-vue-layouts": "^0.7.0", "eth-crypto": "^2.3.0",
"vue": "^3.2.45", "ethers": "^5.6.8",
"vue-i18n": "^9.2.2", "ibc-domains-sdk": "^1.1.0",
"vue-prism-component": "^2.0.0", "leaflet": "1.6.0",
"vue-router": "^4.1.6", "ledger-cosmos-js": "2.1.8",
"vue3-apexcharts": "^1.4.1", "long": "^5.2.0",
"vue3-json-viewer": "^2.2.2", "node-fetch": "^2.6.5",
"vue3-perfect-scrollbar": "^1.6.1" "node-polyfill-webpack-plugin": "^1.1.4",
"pako": "^1.0.11",
"portal-vue": "2.1.7",
"prismjs": "1.25.0",
"protobufjs-cli-dbx": "^7.0.7",
"protobufjs-dbx": "^7.0.0",
"ripemd160": "^2.0.2",
"swiper": "6.5.1",
"trading-vue-js": "^1.0.2",
"uuid": "8.3.2",
"vee-validate": "3.4.5",
"vue": "2.x",
"vue-apexcharts": "1.6.0",
"vue-autosuggest": "2.2.0",
"vue-awesome-swiper": "4.1.1",
"vue-chartjs": "3.5.0",
"vue-cleave-component": "2.1.3",
"vue-clipboard2": "0.3.1",
"vue-context": "6.0.0",
"vue-echarts": "^6.0.2",
"vue-feather-icons": "5.1.0",
"vue-flatpickr-component": "8.1.6",
"vue-flex-waterfall": "^1.0.7",
"vue-form-wizard": "0.8.4",
"vue-i18n": "8.22.2",
"vue-json-excel": "^0.3.0",
"vue-loader": "^15.9.6",
"vue-markdown": "^2.2.4",
"vue-observe-visibility": "^1.0.0",
"vue-perfect-scrollbar": "0.2.1",
"vue-prism-component": "1.1.1",
"vue-qr": "^2.5.0",
"vue-ripple-directive": "2.0.1",
"vue-router": "3.4.9",
"vue-select": "3.11.2",
"vue-slider-component": "3.2.11",
"vue-sweetalert2": "4.1.1",
"vue-toastification": "1.7.8",
"vue-tour": "1.5.0",
"vue-tree-halower": "1.8.3",
"vue2-flip-countdown": "^0.12.1",
"vue2-leaflet": "2.5.2",
"vuedraggable": "2.24.3",
"vuex": "3.6.0"
}, },
"devDependencies": { "devDependencies": {
"@osmonauts/telescope": "^0.88.2", "@babel/eslint-parser": "^7.5.4",
"@types/marked": "^4.0.8", "@protobufs/osmosis": "^0.0.8",
"@types/node": "^18.11.12", "@typescript-eslint/eslint-plugin": "^5.25.0",
"@types/numeral": "^2.0.2", "@typescript-eslint/parser": "^5.25.0",
"@types/semver": "7.5.0", "@vue/cli-plugin-babel": "~5.0.4",
"@vitejs/plugin-vue": "^4.0.0", "@vue/cli-plugin-eslint": "~5.0.4",
"@vue/tsconfig": "^0.1.3", "@vue/cli-plugin-router": "~5.0.4",
"npm-run-all": "^4.1.5", "@vue/cli-plugin-vuex": "~5.0.4",
"prettier": "^2.7.1", "@vue/cli-service": "~5.0.4",
"sass": "^1.58.0", "@vue/eslint-config-airbnb": "^6.0.0",
"shiki": "^1.0.0-beta.0", "@vue/eslint-config-standard": "6.1.0",
"typescript": "~4.9.5", "@vue/eslint-config-typescript": "11.0.0",
"unplugin-auto-import": "^0.13.0", "@vuepress/plugin-medium-zoom": "^1.7.1",
"unplugin-vue-components": "^0.23.0", "compression-webpack-plugin": "6.1.1",
"unplugin-vue-define-options": "1.1.4", "eslint": "^8.15.0",
"vite": "^4.4.9", "eslint-plugin-import": "^2.26.0",
"vite-plugin-pages": "^0.28.0", "eslint-plugin-vue": "9.0.1",
"vue-json-viewer": "3", "eslint-plugin-vuejs-accessibility": "^1.1.1",
"vue-tsc": "^1.0.12" "sass": "1.32.*",
"sass-loader": "^10.1.0",
"ts-loader": "8.2.0",
"typescript": "^4.6.4",
"vue-template-compiler": "2.x",
"webpack-bundle-analyzer": "^4.7.0"
} }
} }

32
ping.conf Normal file
View File

@ -0,0 +1,32 @@
server {
listen 80;
listen [::]:80;
server_name _;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
gzip on;
gzip_proxied any;
gzip_static on;
gzip_min_length 1024;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
}

View File

@ -1,6 +0,0 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

47
public/index.html Normal file
View File

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1" />
<!-- Splash Screen/Loader Styles -->
<link rel="stylesheet" type="text/css" href="/loader.css" />
<link rel="icon" href="/favicon.ico" />
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap"
rel="stylesheet"
/>
<title>Ping Dashboard</title>
</head>
<body>
<noscript>
<strong
>We're sorry but Ping Dashboard doesn't work properly without JavaScript enabled. Please
enable it to continue.</strong
>
</noscript>
<div id="loading-bg">
<div class="loading-logo">
<img src="/logo.svg" alt="Logo" width="80"/>
</div>
<div class="loading">
<div class="effect-1 effects"></div>
<div class="effect-2 effects"></div>
<div class="effect-3 effects"></div>
</div>
</div>
<div id="app"></div>
<!-- built files will be auto injected -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-238887-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-238887-1');
</script>
</body>
</html>

View File

@ -1,70 +1,84 @@
#loading-bg { body {
background: var(--initial-loader-bg, #fff); margin: 0;
} }
#loading-bg {
width: 100%;
height: 100%;
background: #fff;
display: block;
position: absolute;
}
.loading-logo { .loading-logo {
position: absolute; position: absolute;
inset-block-start: 40%; left: calc(50% - 45px);
inset-inline-start: calc(50% - 75px); top: 40%;
} }
.loading {
.pre-loading {
position: absolute; position: absolute;
left: calc(50% - 35px);
top: 50%;
width: 55px;
height: 55px;
border-radius: 50%;
-webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
border: 3px solid transparent; border: 3px solid transparent;
block-size: 55px;
border-radius: 50%;
inline-size: 55px;
inset-block-start: calc(40% + 35px);
inset-inline-start: calc(50% - 27.5px);
} }
.loading .effect-1,
.pre-loading .effect-1, .loading .effect-2 {
.pre-loading .effect-2,
.pre-loading .effect-3 {
position: absolute; position: absolute;
box-sizing: border-box; width: 100%;
height: 100%;
border: 3px solid transparent; border: 3px solid transparent;
block-size: 100%; border-left: 3px solid rgba(121, 97, 249, 1);
border-inline-start: 3px solid var(--initial-loader-color, #eee);
border-radius: 50%; border-radius: 50%;
inline-size: 100%; -webkit-box-sizing: border-box;
box-sizing: border-box;
} }
.pre-loading .effect-1 { .loading .effect-1 {
animation: rotate 1s ease infinite; animation: rotate 1s ease infinite;
} }
.loading .effect-2 {
.pre-loading .effect-2 { animation: rotateOpacity 1s ease infinite 0.1s;
animation: rotate-opacity 1s ease infinite 0.1s; }
.loading .effect-3 {
position: absolute;
width: 100%;
height: 100%;
border: 3px solid transparent;
border-left: 3px solid rgba(121, 97, 249, 1);
-webkit-animation: rotateOpacity 1s ease infinite 0.2s;
animation: rotateOpacity 1s ease infinite 0.2s;
border-radius: 50%;
-webkit-box-sizing: border-box;
box-sizing: border-box;
} }
.pre-loading .effect-3 { .loading .effects {
animation: rotate-opacity 1s ease infinite 0.2s;
}
.pre-loading .effects {
transition: all 0.3s ease; transition: all 0.3s ease;
} }
@keyframes rotate { @keyframes rotate {
0% { 0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); transform: rotate(0deg);
} }
100% { 100% {
-webkit-transform: rotate(1turn);
transform: rotate(1turn); transform: rotate(1turn);
} }
} }
@keyframes rotateOpacity {
@keyframes rotate-opacity {
0% { 0% {
opacity: 0.1; -webkit-transform: rotate(0deg);
transform: rotate(0deg); transform: rotate(0deg);
opacity: 0.1;
} }
100% { 100% {
opacity: 1; -webkit-transform: rotate(1turn);
transform: rotate(1turn); transform: rotate(1turn);
opacity: 1;
} }
} }

BIN
public/logo.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
public/logos/8ball.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
public/logos/DWS.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

BIN
public/logos/VDL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#EE2F51;}
.st1{fill:#C32942;}
.st2{fill:#7D1729;}
</style>
<g>
<polygon class="st0" points="17.28,52.24 100,100 182.72,52.24 100,4.48 "/>
<polygon class="st1" points="17.28,52.24 100,100 100,195.52 17.28,147.76 "/>
<polygon class="st2" points="182.72,52.24 100,100 100,195.52 182.72,147.76 "/>
<polygon class="st0" points="44.87,131.84 72.44,115.92 72.44,147.76 "/>
<polygon class="st2" points="72.43,115.92 44.85,100 44.85,131.84 "/>
<polygon class="st0" points="155.13,131.84 127.56,115.92 127.56,147.76 "/>
<polygon class="st1" points="127.57,115.92 155.15,100 155.15,131.84 "/>
<polygon class="st2" points="72.43,52.24 100,36.32 100,68.16 "/>
<polygon class="st1" points="127.57,52.24 100,36.32 100,68.16 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
public/logos/agoric.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
public/logos/androma.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
public/logos/aura.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

15
public/logos/axelar.svg Normal file
View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="141.596" height="140.816" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 141.596 140.816">
<defs>
<filter id="d" data-name="drop-shadow-1" filterUnits="userSpaceOnUse">
<feOffset dx="0" dy="0"/>
<feGaussianBlur result="e" stdDeviation="1.491"/>
<feFlood flood-color="#000" flood-opacity=".13"/>
<feComposite in2="e" operator="in"/>
<feComposite in="SourceGraphic"/>
</filter>
</defs>
<g id="c" data-name="Layer 1">
<path d="M79.026,59.29L122.249,16.306,105.851,0l-35.023,34.83L35.805,0,19.408,16.306,62.63,59.29c2.264,2.251,5.231,3.377,8.198,3.377s5.934-1.125,8.198-3.377Zm62.57,45.919l-35.023-34.83,35.023-34.831-16.397-16.306-43.221,42.984c-4.527,4.503-4.527,11.803,0,16.306l43.221,42.984,16.397-16.306h0Zm-70.828,.777l35.023,34.83,16.396-16.306-43.221-42.984c-4.529-4.503-11.868-4.503-16.397,0L19.348,124.51l16.397,16.306,35.023-34.83h0Zm-11.15-27.395c2.175-2.163,3.396-5.095,3.396-8.153s-1.221-5.991-3.396-8.153L16.397,19.301,0,35.608l35.023,34.83L0,105.269l16.397,16.306,43.222-42.984h0Z" filter="url(#d)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="172px" height="172px" viewBox="0 0 172 172" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>D09EECB6-251A-416B-B21C-25832F33D878</title>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="BandWebsite_Desktop_UI_BrandAsset" transform="translate(-634.000000, -915.000000)">
<g id="Logo2-Copy" transform="translate(634.000000, 915.000000)">
<path d="M10,171.866248 L161.866248,171.866248 C167.389095,171.866248 171.866248,167.389095 171.866248,161.866248 L171.866248,10 C171.866248,4.4771525 167.389095,-1.01453063e-15 161.866248,0 L10,0 C4.4771525,1.01453063e-15 -6.76353751e-16,4.4771525 0,10 L0,161.866248 C-1.40394681e-14,167.389095 4.4771525,171.866248 10,171.866248 Z" id="Fill-1" fill="#4520E6"></path>
<path d="M108.602889,100.635307 C108.602889,107.35148 103.139711,112.814658 96.4235377,112.814658 L73.0720578,112.814658 L97.3402044,88.5473925 C103.622093,89.0257223 108.602889,94.2329105 108.602889,100.635307 L108.602889,100.635307 Z M69.6284355,87.4487315 L69.6284355,59.22463 L96.4235377,59.22463 C96.8812544,59.22463 97.332981,59.2498238 97.7776603,59.2996829 L69.6284355,87.4487315 Z M113.472868,71.4053911 C113.472868,65.7198732 110.676357,60.6763566 106.386716,57.5769908 L117.963707,46 L111.037879,46.0394644 L101.840204,55.2369626 C100.137773,54.665081 98.3162438,54.3550035 96.4235377,54.3550035 L64.7586328,54.3550035 L64.7586328,99.205074 L102.881783,61.0817477 C106.315363,63.2385483 108.602889,67.0599013 108.602889,71.4053911 C108.602889,78.1215645 103.139711,83.5847428 96.4235377,83.5847428 L95.4152572,83.5847428 L53,126 L59.8863636,126 L68.2020789,117.684461 L96.4235377,117.684461 C105.824348,117.684461 113.472868,110.036117 113.472868,100.635307 C113.472868,94.4353418 110.135835,89.0142706 105.174947,86.0299507 C110.141121,83.0463354 113.472868,77.608351 113.472868,71.4053911 L113.472868,71.4053911 Z" id="Fill-2" fill="#FFFFFF"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
public/logos/beezee.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 1000 1000" xml:space="preserve" style="enable-background:new 0 0 1000 1000"><style type="text/css">.st0{fill:#3cc194}.st1{fill:#fff}</style><g><circle cx="500.5" cy="499.5" r="479.5" class="st0"/></g><g id="Group_5" transform="translate(-91.385 -97.772)"><g id="Group_4" transform="translate(91.385 97.772)"><g id="Group_3"><g id="Laag_1"><g id="Group_2"><g id="Group_1"><path id="Path_1" d="M724.8,589.4l-1.4,1.5c-8.6,8.7-19,15.6-30.4,20.1h-0.6c-10.5,4.1-21.7,6.2-32.9,6.2 c-16.5,0.3-32.8-3.2-47.7-10.3h-0.9l-2.2-1.1l-0.6-0.3c-13.8-7.4-25.1-18.7-32.6-32.5l-1.4-2.5l-30.5,32.7 c0,0-6.1,31.3-8.8,46.6v1l0.7,0.7l0,0l0.4,0.5c31,34,74.9,53.3,120.9,53.3l2.5,0.1l2,0.1c30.1,0,59.7-7.7,86-22.3l0.8-0.4 c14.5-8.2,27.8-18.4,39.4-30.3l1.4-1.5L724.8,589.4z" class="st1"/><path id="Path_2" d="M294.4,438v0.6l12.4,46.5l2.5-4c13.4-19.4,33.8-32.9,56.9-37.4h1c8.1-1.7,16.4-2.3,24.7-1.9 c12.5,0.8,24.6,4.4,35.6,10.4l0.9,0.5c15.1,8.5,28.5,19.8,39.4,33.3l1.8,2.3l29.2-41.1l0,0l9.3-43.4l-1-0.8l-3.3-2.9 c-19.1-17.6-41.7-30.8-66.4-38.9c-13.3-4-27.1-6.2-40.9-6.4h-0.6c-31.3,0.1-62,8-89.5,22.9l-0.9,0.5l-12.3,55.1L294.4,438z" class="st1"/><path id="Path_3" d="M567.7,556.5v-0.8c0.2-3.4-0.6-16.8-0.8-24.6l0.2-2.1c-0.4-20.7,6.3-40.9,19.2-57.1l0.4-0.6 c1.9-2.4,3.8-4.6,5.9-6.8c16.8-17.3,39.8-27.1,63.9-27.1c3.8,0,7.7,0.2,11.5,0.6h0.6c19.8,2.6,38.2,11.6,52.5,25.5l1.5,1.5 l61.7-62.2l-1.5-1.5c-31.2-30.3-72.2-48.3-115.6-51h-0.6l-11.7-0.6c-26.1-0.2-51.9,4.8-76,14.7c-15.9,6.8-30.6,16.3-43.2,28.1 l-0.7,0.6h-0.8v0.4l-0.5,0.4l0,0l-0.7,0.6c-4.4,4.3-8.5,8.9-12.2,13.8v0.4l-10,43.5l-32.9,45.4v31.7 c-0.3,35.1-20.5,66.9-52.2,82l-0.6,0.3c-11.6,5.2-24.1,7.9-36.8,8c-50,0.4-91.1-39.2-92.5-89.2l-0.4-29.6l0.1-1.9l-16.2-63.5 l13.7-58.9l-1.5-92.5l-89.4-31.6l3.4,204.6v0.9l1.2,72.8c0,2.5,0.1,5,0.3,7.5c-0.1,0.4-0.1,0.9-0.1,1.3 c3.5,50,28,96.2,67.4,127.2l0.6,0.5c32.5,25.8,72.9,39.7,114.4,39.5l6.5-0.1l1.4,0.1c41.6-0.1,81.6-15.7,112.3-43.8l0.5-0.5 c4.2-4,8.2-8.3,12.1-12.8l0.3-0.4l9.6-51.1l35.3-40.5L567.7,556.5z" class="st1"/></g></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

20
public/logos/bitsong.svg Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="BACKGROUND" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#FC1D31;}
</style>
<ellipse class="st0" cx="256" cy="256" rx="254.8" ry="251.9"/>
<g id="g24">
<g id="g22">
<path id="path20" class="st1" d="M255.5,4.1c-19.1,0-38.2,1.9-57.4,6.7c0,1,0,1.9,0,2.9v310.7c0,6.7-5.7,11.5-11.5,11.5h-22.9
c-4.8,0-8.6-3.8-8.6-8.6V24.2C64.3,62.4,1.2,152.3,1.2,255.5c0,139.6,113.8,252.4,255.3,252.4s254.3-112.8,254.3-251.4
S396.1,4.1,255.5,4.1z M250.7,360.7c0,5.7-4.8,10.5-10.5,10.5h-22.9c-5.7,0-10.5-4.8-10.5-10.5V201c0-5.7,4.8-10.5,10.5-10.5h22.9
c5.7,0,10.5,4.8,10.5,10.5V360.7z M302.4,376c0,5.7-4.8,10.5-10.5,10.5h-22.9c-5.7,0-10.5-4.8-10.5-10.5V185.7
c0-5.7,4.8-10.5,10.5-10.5h22.9c5.7,0,10.5,4.8,10.5,10.5V376z M354,347.3c0,5.7-4.8,10.5-10.5,10.5h-22.9
c-5.7,0-10.5-4.8-10.5-10.5v-131c0-5.7,4.8-10.5,10.5-10.5h22.9c5.7,0,10.5,4.8,10.5,10.5L354,347.3z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
public/logos/bostrom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
public/logos/c4e.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
public/logos/canto.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

91
public/logos/carbon.svg Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 400 400" style="enable-background:new 0 0 400 400;" xml:space="preserve">
<circle style="fill:#161515;" cx="200" cy="200" r="200"/>
<circle style="fill:#063C4F;" cx="200" cy="200" r="200"/>
<radialGradient id="SVGID_SWTH_1_" cx="-105.0925" cy="597.0593" r="1" gradientTransform="matrix(-1132.6895 1.028 2.9871 3291.1685 -120471.2891 -1964605.625)" gradientUnits="userSpaceOnUse">
<stop offset="0.1042" style="stop-color:#24537E"/>
<stop offset="0.5203" style="stop-color:#4FC1C0"/>
<stop offset="1" style="stop-color:#DAFFF4"/>
</radialGradient>
<path style="fill:url(#SVGID_SWTH_1_);" d="M50.6,230.9c1.5,0,3,0.1,4.4,0.1c30.5,0,59-8.8,83-23.9c9.8,50.7,54.4,88.9,108,88.9
c43.8,0,81.6-25.6,99.3-62.7c1.4-0.7,2.7-1.5,4.1-2.3C330.1,295.2,270.5,342,200,342C129.5,342,69.9,295.2,50.6,230.9z"/>
<path style="fill:#04171E;fill-opacity:0.88;" d="M50.6,230.9c1.5,0,3,0.1,4.4,0.1c30.5,0,59-8.8,83-23.9
c9.8,50.7,54.4,88.9,108,88.9c43.8,0,81.6-25.6,99.3-62.7c1.4-0.7,2.7-1.5,4.1-2.3C330.1,295.2,270.5,342,200,342
C129.5,342,69.9,295.2,50.6,230.9z"/>
<radialGradient id="SVGID_SWTH_2_" cx="-105.0925" cy="597.0593" r="1" gradientTransform="matrix(-1132.6895 1.028 2.9871 3291.1685 -120471.2891 -1964605.625)" gradientUnits="userSpaceOnUse">
<stop offset="0.1042" style="stop-color:#24537E"/>
<stop offset="0.5203" style="stop-color:#4FC1C0"/>
<stop offset="1" style="stop-color:#DAFFF4"/>
</radialGradient>
<path style="fill:url(#SVGID_SWTH_2_);" d="M51.3,233.4c1.2,0,2.5,0,3.7,0c30.7,0,59.3-8.9,83.5-24.2C149.1,258.8,193.2,296,246,296
c43.8,0,81.6-25.6,99.3-62.7c1.4-0.7,2.7-1.5,4.1-2.3C330.1,295.2,270.5,342,200,342C130.3,342,71.4,296.4,51.3,233.4z"/>
<path style="fill:#04171E;fill-opacity:0.4;" d="M51.3,233.4c1.2,0,2.5,0,3.7,0c30.7,0,59.3-8.9,83.5-24.2
C149.1,258.8,193.2,296,246,296c43.8,0,81.6-25.6,99.3-62.7c1.4-0.7,2.7-1.5,4.1-2.3C330.1,295.2,270.5,342,200,342
C130.3,342,71.4,296.4,51.3,233.4z"/>
<linearGradient id="SVGID_SWTH_3_" gradientUnits="userSpaceOnUse" x1="190.2592" y1="43.1118" x2="138.7952" y2="310.7999" gradientTransform="matrix(1 0 0 -1 0 402)">
<stop offset="0" style="stop-color:#04171E"/>
<stop offset="1" style="stop-color:#04171E;stop-opacity:0"/>
</linearGradient>
<path style="fill:url(#SVGID_SWTH_3_);fill-opacity:0.64;" d="M273.8,292.5C251.6,310.9,223.1,322,192,322c-58.1,0-107.1-38.7-122.8-91.6
c25.1-2.3,48.5-10.5,68.8-23.3c9.8,50.7,54.4,88.9,108,88.9C255.6,296,264.9,294.8,273.8,292.5z"/>
<radialGradient id="SVGID_SWTH_4_" cx="-105.4798" cy="596.9409" r="1" gradientTransform="matrix(121.0179 -190.2545 -2756.8948 -1753.6176 1658574.375 1027024)" gradientUnits="userSpaceOnUse">
<stop offset="0.1042" style="stop-color:#3A78B1"/>
<stop offset="0.5203" style="stop-color:#4FC1C0"/>
<stop offset="1" style="stop-color:#8CF2FD"/>
</radialGradient>
<path style="fill:url(#SVGID_SWTH_4_);" d="M328,186c0,70.7-57.3,128-128,128S72,256.7,72,186S129.3,58,200,58S328,115.3,328,186z"/>
<radialGradient id="SVGID_SWTH_5_" cx="-104.8708" cy="597.9974" r="1" gradientTransform="matrix(-180.0001 129.5005 128.5812 178.7224 -95449.0078 -93222.7266)" gradientUnits="userSpaceOnUse">
<stop offset="0.2165" style="stop-color:#FFFFFF"/>
<stop offset="0.9063" style="stop-color:#FFFFFF;stop-opacity:0"/>
</radialGradient>
<path style="fill:url(#SVGID_SWTH_5_);fill-opacity:0.6;" d="M319.5,162c0,49.7-40.3,90-90,90s-90-40.3-90-90c0-49.7,40.3-90,90-90
S319.5,112.3,319.5,162z"/>
<linearGradient id="SVGID_SWTH_6_" gradientUnits="userSpaceOnUse" x1="250.7183" y1="349.5163" x2="118.7183" y2="292.0163" gradientTransform="matrix(1 0 0 -1 0 402)">
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="0.7324" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path style="fill:url(#SVGID_SWTH_6_);fill-opacity:0.64;" d="M208.4,72.1c-2-0.1-4-0.2-6.1-0.2c-19.1,0-37.2,4.8-52.9,13.3
c8.4-1.9,17.2-2.8,26.2-2.8c9.2,0,18.1,1,26.6,2.9L208.4,72.1z"/>
<linearGradient id="SVGID_SWTH_7_" gradientUnits="userSpaceOnUse" x1="293.3822" y1="251.5749" x2="161.3822" y2="194.0749" gradientTransform="matrix(1 0 0 -1 0 402)">
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="0.7324" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path style="fill:url(#SVGID_SWTH_7_);fill-opacity:0.64;" d="M215.8,89.3c47.1,16.6,80.8,61.4,80.8,114.2c0,21.7-5.7,42-15.7,59.6
c20.5-20.2,33.1-48.3,33.1-79.4C314,129,274.8,83.6,223,73.9L215.8,89.3z"/>
<linearGradient id="SVGID_SWTH_8_" gradientUnits="userSpaceOnUse" x1="598.7853" y1="466.1639" x2="58.9142" y2="16.378" gradientTransform="matrix(1 0 0 -1 0 402)">
<stop offset="0" style="stop-color:#04171E"/>
<stop offset="1" style="stop-color:#04171E;stop-opacity:0"/>
</linearGradient>
<path style="fill:url(#SVGID_SWTH_8_);fill-opacity:0.64;" d="M268.4,294.2C248.6,306.7,225.2,314,200,314c-39.9,0-75.5-18.2-99-46.8
c6.5,1.2,13.1,1.8,20,1.8c49.5,0,91.3-32.7,105.2-77.6c4.6,0.4,9.2,0.6,13.8,0.6c32,0,61.7-9.6,86.4-26.1c1,6.6,1.6,13.3,1.6,20.1
c0,4.2-0.2,8.4-0.6,12.6C320.2,237.4,298.6,271.2,268.4,294.2z"/>
<linearGradient id="SVGID_SWTH_9_" gradientUnits="userSpaceOnUse" x1="306.3591" y1="174.6578" x2="103.8583" y2="103.1578" gradientTransform="matrix(1 0 0 -1 0 402)">
<stop offset="0" style="stop-color:#0E6585"/>
<stop offset="1" style="stop-color:#04171E"/>
</linearGradient>
<path style="fill:url(#SVGID_SWTH_9_);" d="M50.6,231.1c19.3,64.2,78.9,111,149.4,111c85.8,0,155.5-69.3,156-155
c-8.6-0.1-17-0.8-25.1-2.2c-19.2,8.5-40.5,13.2-62.9,13.2c-7.8,0-15.4-0.6-22.8-1.7c-13.8,45-55.7,77.7-105.2,77.7
c-34.5,0-65.3-15.9-85.5-40.8C53.2,232.5,51.9,231.8,50.6,231.1z"/>
<radialGradient id="SVGID_SWTH_10_" cx="-105.2137" cy="596.9243" r="1" gradientTransform="matrix(144.3669 -115.0948 -1795.1154 -2251.6665 1086829 1332290)" gradientUnits="userSpaceOnUse">
<stop offset="0.1042" style="stop-color:#3A78B1"/>
<stop offset="0.5203" style="stop-color:#4FC1C0"/>
<stop offset="1" style="stop-color:#8CF2FD"/>
</radialGradient>
<path style="fill:url(#SVGID_SWTH_10_);" d="M356,187.1c-22.9,13.3-49.6,20.9-78,20.9c-5.4,0-10.8-0.3-16-0.8
c-9.9,50.6-54.5,88.8-108,88.8c-43.8,0-81.6-25.6-99.3-62.7c-1.4-0.7-2.7-1.5-4.1-2.3C69.9,295.2,129.5,342,200,342
C285.8,342,355.4,272.8,356,187.1z"/>
<linearGradient id="SVGID_SWTH_11_" gradientUnits="userSpaceOnUse" x1="342.7867" y1="210.4602" x2="264.9107" y2="92.4192" gradientTransform="matrix(1 0 0 -1 0 402)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.64"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path style="display:none;fill:url(#SVGID_SWTH_11_);fill-opacity:0.64;" d="M344.6,193.1c-9.4,4.4-19.3,8-29.6,10.5
c-1.3,11.4-3.9,22.8-7.8,34.1c-9.5,27.5-25.6,50.9-46,68.8c34.8-16.8,63.2-46.9,76.8-86.3C341.1,211.2,343.3,202.2,344.6,193.1z"/>
<linearGradient id="SVGID_SWTH_12_" gradientUnits="userSpaceOnUse" x1="262.7789" y1="193.9802" x2="237.4619" y2="209.6302" gradientTransform="matrix(1 0 0 -1 0 402)">
<stop offset="0" style="stop-color:#8CF2FD"/>
<stop offset="1" style="stop-color:#8CF2FD;stop-opacity:0"/>
</linearGradient>
<path style="opacity:0.2;fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_SWTH_12_);enable-background:new ;" d="M245.1,196.6
c0.2-0.2,0.5-0.3,0.7-0.1c5.2,4.1,10.8,7.8,16.9,10.9c0.3,0.1,0.4,0.5,0.2,0.7s-0.4,0.4-0.7,0.2c-6.1-3.1-11.8-6.8-17-11
C245,197.2,244.9,196.8,245.1,196.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
public/logos/ccc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
public/logos/celestia.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
public/logos/cerberus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

BIN
public/logos/cheqd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
public/logos/chihuahua.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

1527
public/logos/com.png Normal file

File diff suppressed because one or more lines are too long

BIN
public/logos/comdex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

1
public/logos/cosmos.svg Normal file
View File

@ -0,0 +1 @@
<svg fill="none" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="256" x2="256.28" y1="32" y2="480"><stop offset=".0479894" stop-color="#c01aea"/><stop offset="1" stop-color="#4251fa"/></linearGradient><g fill="url(#a)"><path clip-rule="evenodd" d="m255.867 118.278c-23.771 0-43.108-19.351-43.108-43.139 0-23.787 19.337-43.139 43.108-43.139s43.11 19.352 43.11 43.139c0 23.788-19.339 43.139-43.11 43.139zm0-62.7731c-10.819 0-19.62 8.808-19.62 19.6341 0 10.8262 8.801 19.6341 19.62 19.6341s19.622-8.8079 19.622-19.6341c0-10.8261-8.803-19.6341-19.622-19.6341z" fill-rule="evenodd"/><path d="m244.759 125.414c3.704.854 7.56 1.306 11.519 1.306 3.961 0 7.817-.452 11.521-1.307v80.694c-3.704-.855-7.561-1.307-11.521-1.307-3.959 0-7.815.452-11.519 1.306z"/><path d="m218.856 221.092-69.908-40.362c-1.112 3.635-2.649 7.201-4.629 10.631-1.98 3.429-4.299 6.542-6.891 9.322l69.883 40.347c2.306-7.527 6.302-14.321 11.545-19.938z"/><path d="m207.311 270.97-69.883 40.347c2.593 2.78 4.912 5.894 6.892 9.324 1.98 3.429 3.517 6.994 4.628 10.629l69.908-40.361c-5.243-5.618-9.24-12.412-11.545-19.939z"/><path d="m244.759 305.894v80.693c3.705-.855 7.561-1.307 11.522-1.307 3.959 0 7.815.452 11.518 1.306v-80.693c-3.704.855-7.561 1.307-11.521 1.307-3.959 0-7.815-.452-11.519-1.306z"/><path d="m293.702 290.908 69.909 40.362c1.112-3.635 2.649-7.201 4.629-10.631 1.98-3.429 4.299-6.542 6.891-9.322l-69.883-40.347c-2.306 7.526-6.303 14.321-11.546 19.938z"/><path d="m305.248 241.031 69.883-40.348c-2.592-2.78-4.912-5.894-6.892-9.324-1.98-3.429-3.517-6.994-4.628-10.629l-69.909 40.362c5.243 5.617 9.24 12.412 11.546 19.939z"/><g clip-rule="evenodd" fill-rule="evenodd"><path d="m136.802 187.496c-11.885 20.586-38.3117 27.657-58.9127 15.763-20.6001-11.894-27.6911-38.316-15.8058-58.902 11.8854-20.586 38.3145-27.658 58.9145-15.764 20.601 11.894 27.69 38.317 15.804 58.903zm-54.3626-31.386c-5.4097 9.369-2.182 21.395 7.1938 26.808 9.3757 5.413 21.4038 2.196 26.8138-7.174 5.409-9.37 2.183-21.397-7.193-26.81-9.3758-5.413-21.405-2.194-26.8146 7.176z"/><path d="m137.215 325.218c11.885 20.586 4.795 47.008-15.806 58.902-20.6 11.893-47.0276 4.823-58.9129-15.763s-4.7954-47.01 15.8047-58.903c20.601-11.894 47.0292-4.822 58.9142 15.764zm-54.363 31.387c5.4096 9.37 17.438 12.587 26.813 7.174 9.376-5.413 12.604-17.439 7.194-26.808-5.409-9.37-17.4386-12.589-26.8143-7.176-9.3758 5.413-12.6024 17.44-7.1927 26.81z"/><path d="m256.692 393.722c23.771 0 43.107 19.351 43.107 43.139 0 23.787-19.336 43.139-43.107 43.139s-43.11-19.352-43.11-43.139c0-23.788 19.339-43.139 43.11-43.139zm0 62.773c10.819 0 19.62-8.808 19.62-19.634s-8.801-19.634-19.62-19.634-19.622 8.808-19.622 19.634 8.803 19.634 19.622 19.634z"/><path d="m375.757 324.504c11.885-20.586 38.312-27.657 58.913-15.763 20.6 11.894 27.691 38.316 15.805 58.902-11.885 20.586-38.314 27.658-58.914 15.764-20.601-11.894-27.69-38.317-15.804-58.903zm54.363 31.386c5.409-9.369 2.182-21.395-7.194-26.808s-21.404-2.196-26.814 7.174c-5.409 9.37-2.183 21.397 7.193 26.81s21.405 2.194 26.815-7.176z"/><path d="m375.344 186.782c-11.885-20.586-4.795-47.008 15.806-58.902 20.6-11.893 47.028-4.823 58.913 15.763s4.795 47.01-15.805 58.903c-20.601 11.894-47.029 4.822-58.914-15.764zm54.363-31.387c-5.41-9.37-17.438-12.587-26.813-7.174-9.376 5.413-12.604 17.439-7.194 26.808 5.409 9.37 17.439 12.589 26.814 7.176 9.376-5.413 12.603-17.44 7.193-26.81z"/><path d="m255.867 235.985c-10.819 0-19.62 8.808-19.62 19.634s8.801 19.634 19.62 19.634 19.622-8.808 19.622-19.634-8.803-19.634-19.622-19.634zm0 62.773c-23.771 0-43.108-19.351-43.108-43.139 0-23.787 19.337-43.139 43.108-43.139s43.109 19.352 43.109 43.139c0 23.788-19.338 43.139-43.109 43.139z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
public/logos/craft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
public/logos/cre.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/logos/cronos.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

11
public/logos/dai.svg Normal file
View File

@ -0,0 +1,11 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_438_970)">
<path d="M14.8247 0C23.0129 0 29.6493 6.71632 29.6493 15C29.6493 23.285 23.0129 30 14.8247 30C6.63781 30 0 23.2844 0 15C0 6.71632 6.63781 0 14.8247 0Z" fill="#F5AC37"/>
<path d="M15.3709 16.0591H21.0041C21.1241 16.0591 21.1809 16.0591 21.1895 15.8998C21.2356 15.32 21.2356 14.7367 21.1895 14.1562C21.1895 14.0435 21.1342 13.9969 21.0134 13.9969H9.80251C9.66375 13.9969 9.62639 14.0435 9.62639 14.1751V15.8438C9.62639 16.0591 9.62639 16.0591 9.84854 16.0591H15.3709ZM20.5604 12.0468C20.5764 12.0043 20.5764 11.9577 20.5604 11.9159C20.4664 11.7087 20.355 11.5109 20.2255 11.3253C20.0307 11.008 19.8013 10.7157 19.5397 10.4532C19.4163 10.2945 19.2736 10.1521 19.1135 10.0313C18.3116 9.34074 17.3583 8.85204 16.3336 8.60634C15.8166 8.48889 15.2882 8.43286 14.7585 8.43759H9.78316C9.6444 8.43759 9.62573 8.49361 9.62573 8.61579V11.9436C9.62573 12.084 9.62573 12.1218 9.80184 12.1218H20.4937C20.4937 12.1218 20.5864 12.1029 20.6051 12.0468H20.5598H20.5604ZM20.5604 18.0092C20.403 17.9916 20.2442 17.9916 20.0868 18.0092H9.81185C9.67309 18.0092 9.62639 18.0092 9.62639 18.1968V21.4504C9.62639 21.6002 9.62639 21.638 9.81185 21.638H14.5557C14.7825 21.6556 15.0094 21.6394 15.2315 21.5914C15.92 21.5415 16.5971 21.3903 17.2429 21.1412C17.4777 21.0589 17.7045 20.9515 17.9187 20.8226H17.9834C19.0954 20.2374 19.9987 19.318 20.5684 18.1894C20.5684 18.1894 20.6331 18.0477 20.5604 18.0105V18.0092ZM7.76447 23.3249V23.2688V21.0845V20.344V18.1408C7.76447 18.0186 7.76447 18.0004 7.61637 18.0004H5.60568C5.49427 18.0004 5.44824 18.0004 5.44824 17.8506V16.0692H7.59769C7.71777 16.0692 7.76447 16.0692 7.76447 15.9099V14.1475C7.76447 14.0347 7.76447 14.0071 7.61637 14.0071H5.60568C5.49427 14.0071 5.44824 14.0071 5.44824 13.8572V12.2075C5.44824 12.1042 5.44824 12.0765 5.59634 12.0765H7.58835C7.72711 12.0765 7.76447 12.0765 7.76447 11.8983V6.84525C7.76447 6.69539 7.76447 6.65759 7.94993 6.65759H14.8986C15.403 6.67784 15.904 6.73387 16.3996 6.82634C17.421 7.01737 18.4023 7.3866 19.2996 7.91378C19.8946 8.26816 20.4424 8.69611 20.93 9.18887C21.2969 9.5743 21.6278 9.99145 21.9214 10.4356C22.2129 10.8858 22.455 11.3671 22.6452 11.87C22.6685 12.0009 22.7926 12.0894 22.922 12.0671H24.5805C24.7933 12.0671 24.7933 12.0671 24.8026 12.2736V13.8113C24.8026 13.9612 24.7473 13.999 24.5985 13.999H23.3196C23.1902 13.999 23.1528 13.999 23.1622 14.1677C23.2129 14.7388 23.2129 15.3119 23.1622 15.8829C23.1622 16.0422 23.1622 16.0611 23.339 16.0611H24.802C24.8667 16.1455 24.802 16.2299 24.802 16.3149C24.8113 16.4236 24.8113 16.5336 24.802 16.6423V17.777C24.802 17.9363 24.7559 17.9835 24.6165 17.9835H22.8653C22.7432 17.9599 22.6245 18.0389 22.5965 18.1617C22.1795 19.2586 21.5124 20.2421 20.6505 21.0305C20.3356 21.3174 20.0047 21.5874 19.6592 21.8365C19.2882 22.0525 18.9273 22.2773 18.5471 22.4555C17.8473 22.7741 17.1134 23.009 16.3603 23.1581C15.6451 23.2877 14.92 23.3465 14.1921 23.3363H7.7618V23.3269L7.76447 23.3249Z" fill="#FEFEFD"/>
</g>
<defs>
<clipPath id="clip0_438_970">
<rect width="29.6493" height="30" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
public/logos/decentr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 KiB

BIN
public/logos/desmos.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

BIN
public/logos/dig1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

15
public/logos/dot.svg Normal file
View File

@ -0,0 +1,15 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_438_968)">
<path d="M14.8236 6.29228C17.7762 6.29228 20.1698 4.8837 20.1698 3.14614C20.1698 1.40857 17.7762 0 14.8236 0C11.8709 0 9.47729 1.40857 9.47729 3.14614C9.47729 4.8837 11.8709 6.29228 14.8236 6.29228Z" fill="#E6007A"/>
<path d="M14.8236 29.9978C17.7762 29.9978 20.1698 28.5893 20.1698 26.8517C20.1698 25.1141 17.7762 23.7056 14.8236 23.7056C11.8709 23.7056 9.47729 25.1141 9.47729 26.8517C9.47729 28.5893 11.8709 29.9978 14.8236 29.9978Z" fill="#E6007A"/>
<path d="M7.37322 10.6473C8.84955 8.06006 8.83997 5.25793 7.35182 4.38856C5.86367 3.51919 3.46049 4.9118 1.98416 7.49904C0.507835 10.0863 0.517417 12.8884 2.00556 13.7578C3.49371 14.6272 5.89689 13.2345 7.37322 10.6473Z" fill="#E6007A"/>
<path d="M27.6608 22.4986C29.1372 19.9114 29.1284 17.1097 27.6413 16.2409C26.1541 15.3722 23.7518 16.7653 22.2754 19.3525C20.7991 21.9397 20.8079 24.7414 22.295 25.6102C23.7821 26.479 26.1845 25.0859 27.6608 22.4986Z" fill="#E6007A"/>
<path d="M7.35255 25.6095C8.8407 24.7401 8.85028 21.938 7.37395 19.3507C5.89763 16.7635 3.49444 15.3709 2.0063 16.2403C0.51815 17.1096 0.508568 19.9118 1.9849 22.499C3.46122 25.0863 5.86441 26.4789 7.35255 25.6095Z" fill="#E6007A"/>
<path d="M27.6425 13.7584C29.1296 12.8897 29.1384 10.088 27.6621 7.50076C26.1857 4.91352 23.7834 3.52043 22.2962 4.38921C20.8091 5.25799 20.8003 8.05965 22.2766 10.6469C23.753 13.2341 26.1553 14.6272 27.6425 13.7584Z" fill="#E6007A"/>
</g>
<defs>
<clipPath id="clip0_438_968">
<rect width="29.6493" height="30" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/logos/e-money.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
public/logos/echelon.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

BIN
public/logos/empower.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

BIN
public/logos/ethereum.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
public/logos/evmos.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
public/logos/evmos.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
public/logos/fetchhub.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
public/logos/genesisl1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
public/logos/gitopia.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/logos/haqq.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

14
public/logos/haqq.svg Normal file
View File

@ -0,0 +1,14 @@
<svg
width="52"
height="52"
viewBox="0 0 52 52"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M7.494 18.6773L0 26.4139L7.73637 33.9078L7.90782 44.6775L18.677 44.506L26.4138 52L33.9073 44.2636L44.6778 44.0922L44.5065 33.3227L52 25.5864L44.2632 18.0922L44.0919 7.32266L33.323 7.49404L25.5862 0L18.0927 7.73639L7.32271 7.90778L7.494 18.6773Z"
fill="#5BABCD"
/>
</svg>

After

Width:  |  Height:  |  Size: 447 B

BIN
public/logos/injective.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="BACKGROUND" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{fill:url(#SVGID_2_);}
.st2{fill:url(#SVGID_3_);}
.st3{fill:url(#SVGID_4_);}
.st4{fill:url(#SVGID_5_);}
.st5{fill:url(#SVGID_6_);}
.st6{fill:url(#SVGID_7_);}
</style>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="66.6866" y1="286.9367" x2="432.2715" y2="-78.6481" gradientTransform="matrix(1 0 0 1 0 158.1102)">
<stop offset="0" style="stop-color:#009DDE"/>
<stop offset="0.5" style="stop-color:#694D9F"/>
<stop offset="1" style="stop-color:#ED3554"/>
</linearGradient>
<path class="st0" d="M163.9,361.7L56.4,373.8l63.1-145.7L54.9,140L212,122.1l42.7-98.2l93.6,127.2L455.8,139l-62.9,145l64.2,87.5
l-156.4,17.8l-43.4,99.6L163.9,361.7z M208.6,352.1c-4.1,2-8.5,3.7-13.1,5l-4.1,1.1l60.6,82.4l21.5-49.5l-3.9-0.5
c-21.2-2.7-40.4-14.1-52.9-31.3l-6-8.3L208.6,352.1z M187.5,277.3l48.9,67.6c9.9,13.7,26,21.9,43,21.9c2,0,3.9-0.1,5.9-0.3
l127.6-14.5L362,282.7c-2.5-3.4-5.4-6.5-8.7-9.2l-3-2.5l-36.4,82.2l-63.3-83.8L187.5,277.3z M189.6,195c-18.9,2-35.4,14.2-43,31.7
L95.3,344.9l85.1-9.6c4.2-0.5,8.3-1.5,12.3-2.9l3.7-1.4l-52.7-72.7l103.9-13.2l24.7-59L189.6,195z M270,254.7l38.5,50.9l23.5-53
l10.3-23.3c7.7-17.5,5.5-37.9-5.8-53.2L260.2,72.2l-34.3,78.8c-1.7,3.9-2.9,8-3.7,12.2l-0.7,3.8l89-9.4L270,254.7z M363.5,173.8
l1.5,3.6c8.2,19.7,8.1,42.2-0.6,61.7l-4.2,9.4l2,1.4c3.8,2.6,7.5,5.6,10.8,8.9l3,3l40.7-94L363.5,173.8z M99.2,159.4l32.4,44.2
l2.4-3.1c12.9-16.7,32.2-27.6,53-29.8l10.2-1.1l0.2-2.5c0.3-5.1,1.2-10.2,2.6-15.2l1.2-4.2L99.2,159.4z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="106.5738" y1="326.8241" x2="472.1588" y2="-38.7609" gradientTransform="matrix(1 0 0 1 0 158.1102)">
<stop offset="0" style="stop-color:#009DDE"/>
<stop offset="0.5" style="stop-color:#694D9F"/>
<stop offset="1" style="stop-color:#ED3554"/>
</linearGradient>
<path class="st1" d="M233.3,490.7c-67.5-6.5-128.1-41.6-167.8-97.3l27.2-3c4.5,5.5,9.3,10.8,14.2,15.8
c29.5,29.6,66.4,49.6,106.8,57.8L233.3,490.7z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="210.8757" y1="431.1259" x2="576.4606" y2="65.541" gradientTransform="matrix(1 0 0 1 0 158.1102)">
<stop offset="0" style="stop-color:#009DDE"/>
<stop offset="0.5" style="stop-color:#694D9F"/>
<stop offset="1" style="stop-color:#ED3554"/>
</linearGradient>
<path class="st2" d="M289.9,465.6c43.8-7.1,83.6-27.6,115.2-59.3c2.8-2.9,5.7-5.9,8.5-9.1l33-3.7C407.1,449,346.5,484.1,279,490.7
L289.9,465.6z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="173.7284" y1="393.9785" x2="539.3133" y2="28.3937" gradientTransform="matrix(1 0 0 1 0 158.1102)">
<stop offset="0" style="stop-color:#009DDE"/>
<stop offset="0.5" style="stop-color:#694D9F"/>
<stop offset="1" style="stop-color:#ED3554"/>
</linearGradient>
<path class="st3" d="M453.3,331.5c9-24,13.6-49.2,13.6-75.1c0-22.9-3.6-45.4-10.7-66.8l13.2-30.5c13.9,30.6,20.9,63.3,20.9,97.3
c0,33.9-7,66.6-20.9,97.2L453.3,331.5z"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-39.7225" y1="180.5277" x2="325.8625" y2="-185.0571" gradientTransform="matrix(1 0 0 1 0 158.1102)">
<stop offset="0" style="stop-color:#009DDE"/>
<stop offset="0.5" style="stop-color:#694D9F"/>
<stop offset="1" style="stop-color:#ED3554"/>
</linearGradient>
<path class="st4" d="M42.6,353.9c-13.9-30.7-21-63.5-21-97.5c0-34.3,7.1-67.2,21.2-98l16.1,22c-9.2,24.2-13.9,49.7-13.9,76
c0,23,3.6,45.5,10.7,67.1L42.6,353.9z"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-76.7926" y1="143.4576" x2="288.7922" y2="-222.1274" gradientTransform="matrix(1 0 0 1 0 158.1102)">
<stop offset="0" style="stop-color:#009DDE"/>
<stop offset="0.5" style="stop-color:#694D9F"/>
<stop offset="1" style="stop-color:#ED3554"/>
</linearGradient>
<path class="st5" d="M66.5,117.9c39.7-54.7,99.8-89.4,166.7-95.9l-10.9,25.1c-43.8,7-83.7,27.6-115.4,59.4c-2.4,2.4-4.8,5-7.2,7.6
L66.5,117.9z"/>
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="27.5023" y1="247.7525" x2="393.0872" y2="-117.8323" gradientTransform="matrix(1 0 0 1 0 158.1102)">
<stop offset="0" style="stop-color:#009DDE"/>
<stop offset="0.5" style="stop-color:#694D9F"/>
<stop offset="1" style="stop-color:#ED3554"/>
</linearGradient>
<path class="st6" d="M419.4,122.3c-4.5-5.5-9.3-10.8-14.2-15.8C375.7,77,338.9,57,298.5,48.8L278.9,22
c67.4,6.6,128,41.7,167.7,97.3L419.4,122.3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/logos/islm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

14
public/logos/islm.svg Normal file
View File

@ -0,0 +1,14 @@
<svg
width="34"
height="34"
viewBox="0 0 34 34"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M16.9999 0C21.6942 0 25.9445 1.90288 29.0208 4.97915C32.0607 8.01904 33.9545 12.2051 33.9989 16.8328V16.8425L33.9995 16.9056L34 16.9992L33.9989 17.1558V17.1661C33.9545 21.7938 32.0607 25.9793 29.0208 29.0192C25.9445 32.0955 21.6947 33.9983 16.9999 33.9983C12.3058 33.9983 8.05556 32.0955 4.97923 29.0192C1.90291 25.9429 0 21.6927 0 16.9986C0 12.3046 1.90291 8.05488 4.97923 4.97862C8.05556 1.90235 12.3058 0 16.9999 0ZM26.7707 9.77002C27.4152 9.77002 28.0404 9.85509 28.6357 10.0129C26.8825 8.31159 24.4918 7.26389 21.8557 7.26389C19.1671 7.26389 16.7331 8.35331 14.9719 10.115C13.2102 11.8766 12.1208 14.3107 12.1208 16.9992C12.1208 19.6877 13.2102 22.1217 14.9719 23.8828C16.7337 25.6445 19.1676 26.7339 21.8557 26.7339C24.4918 26.7339 26.883 25.6862 28.6357 23.9849C28.041 24.1432 27.4158 24.2278 26.7712 24.2278C24.7753 24.2278 22.9676 23.4186 21.6599 22.1104C20.3517 20.8022 19.5426 18.9946 19.5426 16.9986C19.5426 15.0027 20.3517 13.195 21.6599 11.8869C22.9671 10.5797 24.7742 9.77002 26.7707 9.77002ZM30.1786 13.5913C29.3063 12.7195 28.1014 12.1799 26.7702 12.1799C25.439 12.1799 24.2341 12.7195 23.3618 13.5913C22.4895 14.4636 21.9503 15.6685 21.9503 16.9997C21.9503 18.3309 22.49 19.5358 23.3618 20.4081C24.2341 21.2799 25.439 21.8194 26.7702 21.8194C28.1014 21.8194 29.3063 21.2799 30.1786 20.4081C31.0504 19.5358 31.5901 18.3309 31.5901 16.9997L31.5895 16.9377C31.5735 15.6305 31.037 14.4497 30.1786 13.5913ZM21.8552 4.85454C23.3692 4.85454 24.8181 5.13157 26.1551 5.63805C23.6516 3.61858 20.4668 2.40935 16.9999 2.40935C12.9712 2.40935 9.32307 4.04269 6.68266 6.68254C4.04275 9.3224 2.40939 12.9704 2.40939 16.9992C2.40939 21.0285 4.04221 24.6759 6.68266 27.3163C9.32307 29.9562 12.9706 31.5896 16.9999 31.5896C20.4673 31.5896 23.6516 30.3803 26.1551 28.3603C24.8181 28.8668 23.3692 29.1438 21.8552 29.1438C18.5017 29.1438 15.465 27.7843 13.2679 25.5867C11.0704 23.3891 9.71085 20.353 9.71085 16.9997C9.71085 13.6464 11.0704 10.6097 13.2679 8.41214C15.465 6.21405 18.5017 4.85454 21.8552 4.85454Z"
fill="#04D484"
/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

24
public/logos/ixo.svg Normal file
View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="BACKGROUND" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#00D2FF;}
</style>
<path d="M369.3,459.5H142.7c-49.6,0-90.2-40.6-90.2-90.2V142.7c0-49.6,40.6-90.2,90.2-90.2h226.5c49.6,0,90.2,40.6,90.2,90.2v226.5
C459.5,418.9,418.9,459.5,369.3,459.5z"/>
<g id="Symbols">
<g id="Header-Singed-In-Final" transform="translate(-27.000000, -14.000000)">
<g id="ixo-logo" transform="translate(27.000000, 14.000000)">
<path id="Fill-2" class="st0" d="M361.3,305.8c-12.4,0-22.5-10.1-22.5-22.5s10.1-22.5,22.5-22.5c12.4,0,22.5,10.1,22.5,22.5
S373.7,305.8,361.3,305.8 M361.3,219.6c-35.2,0-63.7,28.5-63.7,63.7c0,35.2,28.5,63.7,63.7,63.7s63.7-28.5,63.7-63.7
C425,248.1,396.5,219.6,361.3,219.6"/>
<polygon id="Fill-4" class="st0" points="111,219.6 111,347 156.5,347 156.5,219.6 156.4,219.6 "/>
<polygon id="Fill-6" class="st0" points="229.3,251.4 197.5,219.6 165.6,219.6 165.6,251.4 197.5,283.3 165.6,315.2 165.6,347
197.5,347 229.3,315.2 261.2,347 261.2,347 261.2,347 293,347 293,315.2 261.2,283.3 293,251.4 293,219.6 261.2,219.6 "/>
<path id="Fill-8" class="st0" d="M133.8,210.5c-12.6,0-22.8-10.2-22.8-22.8c0-12.6,10.2-22.8,22.8-22.8s22.8,10.2,22.8,22.8
C156.5,200.3,146.3,210.5,133.8,210.5"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/logos/jackal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

BIN
public/logos/juno.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
public/logos/juno.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
public/logos/kava.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

BIN
public/logos/kichain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
public/logos/kujira.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

41
public/logos/kyve.svg Normal file
View File

@ -0,0 +1,41 @@
<svg width="440" height="440" viewBox="0 0 440 440" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_7293_9714)">
<rect width="440" height="440" fill="white"/>
<g filter="url(#filter0_d_7293_9714)">
<rect width="440" height="440" fill="#141C1B"/>
<mask id="mask0_7293_9714" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="440" height="440">
<rect width="440" height="440" fill="#141C1B"/>
</mask>
<g mask="url(#mask0_7293_9714)">
<g filter="url(#filter1_f_7293_9714)">
<ellipse cx="219.5" cy="414.5" rx="338.5" ry="244.5" fill="url(#paint0_linear_7293_9714)" fill-opacity="0.5"/>
</g>
</g>
<path d="M159.423 338H115L165.144 103H209.567L189.038 199.35H197.115L273.173 103H325V107.029L235.481 218.486V224.529L292.019 335.986V338H242.885L193.75 241.65H179.615L159.423 338Z" fill="white"/>
</g>
</g>
<defs>
<filter id="filter0_d_7293_9714" x="-50" y="-46" width="540" height="540" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="25"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_7293_9714"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_7293_9714" result="shape"/>
</filter>
<filter id="filter1_f_7293_9714" x="-319" y="-30" width="1077" height="889" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="100" result="effect1_foregroundBlur_7293_9714"/>
</filter>
<linearGradient id="paint0_linear_7293_9714" x1="219.5" y1="170" x2="219.5" y2="659" gradientUnits="userSpaceOnUse">
<stop stop-color="#58C6B2"/>
<stop offset="1" stop-color="#106757"/>
</linearGradient>
<clipPath id="clip0_7293_9714">
<rect width="440" height="440" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
public/logos/lambda.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
public/logos/likecoin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
public/logos/lumen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Some files were not shown because too many files have changed in this diff Show More