Skip to content

vu3th/vue-dapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Vue Dapp Logo

Vue Dapp

Empower dapp developers with Vue integration for crypto wallets

MIT License Telegram Website

Packages ๐Ÿ“ฆ

Name Description Version Size
@vue-dapp/core useVueDapp & VueDappProvider Version Size
@vue-dapp/nuxt Vue Dapp Nuxt module Version Size
@vue-dapp/modal VueDappModal for a wallet modal Version Size
@vue-dapp/walletconnect WalletConnect integration Version Size
@vue-dapp/coinbase Coinbase Wallet integration Version Size

Overview

Vue Dapp Overview

Installation

Minimum

npm install pinia @vue-dapp/core

With the wallet modal

npm install pinia @vue-dapp/core @vue-dapp/modal

Maximum

npm install pinia @vue-dapp/core @vue-dapp/modal @vue-dapp/walletconnect @vue-dapp/coinbase

Example

<script lang="ts" setup>
import {
	useVueDapp,
	BrowserWalletConnector,
	VueDappProvider,
	type ConnWallet,
} from '@vue-dapp/core'
import { VueDappModal } from '@vue-dapp/modal'
import '@vue-dapp/modal/dist/style.css' // make sure to add css for the modal

const { status, isConnected, address, chainId, error, disconnect, addConnector } = useVueDapp()

const isModalOpen = ref(false)

function onClickConnectBtn() {
	if (isConnected.value) disconnect()
	else isModalOpen.value = true
}

if (process.client) { // only when using Nuxt 3
	addConnector(new BrowserWalletConnector())
}

function handleConnect(wallet: ConnWallet) {
	console.log('handleConnect', wallet)
	
	// example with ethers v6
	const ethersProvider = new ethers.providers.Web3Provider(provider)
	const signer = await ethersProvider.getSigner()

	dappStore.setUser({
		address,
		signer: markRaw(signer),
		chainId,
	})
}

function handleDisconnect() {
	console.log('handleDisconnect')

	// example
	dappStore.resetUser()
}
</script>

<template>
	<div>
		<VueDappProvider @connect="handleConnect" @disconnect="handleDisconnect">
			<button @click="onClickConnectBtn">{{ isConnected ? 'Disconnect' : 'Connect' }}</button>

			<div>status: {{ status }}</div>
			<div>isConnected: {{ isConnected }}</div>
			<div>error: {{ error }}</div>

			<div v-if="isConnected">
				<div>chainId: {{ chainId }}</div>
				<div>address: {{ address }}</div>
			</div>

			<VueDappModal v-model="isModalOpen" dark auto-connect />
		</VueDappProvider>
	</div>
</template>

Examples

Development

pnpm build
pnpm dev
pnpm -F core watch

Support ๐Ÿ™

0x9D75F4EbcB8e7669E59dcc27CBadC698E0F77187

Credits