From 9f4071963ba5a3a52e7428e3fa40b1b59142a86b Mon Sep 17 00:00:00 2001 From: Darren Kelly <107671032+darrenvechain@users.noreply.github.com> Date: Mon, 6 Nov 2023 19:50:41 +0000 Subject: [PATCH] Using vanilla components in Vue (#52) * refactor: changing vanilla config to single function * refactor: changing vanilla config to single function * refactor: change wallet kit options * fix: vanilla imports * feat: vue using common components --- README.md | 11 +- apps/sample-react-app/package.json | 3 +- apps/sample-vanilla-app/index.js | 9 +- apps/sample-vanilla-app/package.json | 2 + apps/sample-vue-app/package.json | 6 +- apps/sample-vue-app/src/App.vue | 9 +- .../src/components/ConnectWalletModal.vue | 224 ------------------ .../src/connex/ConnexProvider.vue | 3 + apps/sample-vue-app/src/main.ts | 1 + apps/sample-vue-app/vue.config.js | 12 + package.json | 3 +- packages/react-wallet-kit/package.json | 5 +- packages/vanilla-wallet-kit/package.json | 3 +- packages/vanilla-wallet-kit/src/client.ts | 43 ++-- .../src/components/base/index.ts | 2 +- .../components/base/vwk-base-modal/index.ts | 93 +++++++- .../base/vwk-base-modal/vwk-base-modal.ts | 95 -------- .../src/components/index.ts | 11 +- .../vwk-connect-button-with-modal/index.ts | 58 ++++- .../vwk-connect-button-with-modal.ts | 57 ----- .../components/vwk-connect-button/index.ts | 60 ++++- .../vwk-connect-button/vwk-connect-button.ts | 57 ----- .../src/components/vwk-connect-modal/index.ts | 88 ++++++- .../vwk-connect-modal/vwk-connect-modal.ts | 86 ------- .../src/components/vwk-fonts.ts | 25 -- .../src/components/vwk-fonts/index.ts | 57 +++++ .../index.ts} | 8 +- packages/vanilla-wallet-kit/src/index.ts | 1 - packages/wallet-connect/package.json | 5 +- packages/wallet-kit/package.json | 3 +- turbo.json | 3 + 31 files changed, 433 insertions(+), 610 deletions(-) delete mode 100644 apps/sample-vue-app/src/components/ConnectWalletModal.vue delete mode 100644 packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/vwk-base-modal.ts delete mode 100644 packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/vwk-connect-button-with-modal.ts delete mode 100644 packages/vanilla-wallet-kit/src/components/vwk-connect-button/vwk-connect-button.ts delete mode 100644 packages/vanilla-wallet-kit/src/components/vwk-connect-modal/vwk-connect-modal.ts delete mode 100644 packages/vanilla-wallet-kit/src/components/vwk-fonts.ts create mode 100644 packages/vanilla-wallet-kit/src/components/vwk-fonts/index.ts rename packages/vanilla-wallet-kit/src/components/{vwk-connect-modal/vwk-source-card.ts => vwk-source-card/index.ts} (92%) diff --git a/README.md b/README.md index 81d95be3..0c9bf5e1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # vechain-dapp-kit -VeWorld WalletKit is a typescript library that facilitates seamless interaction between VeChain wallets (veworld, sync 2) and dApps, enhancing user experience and developer convenience. +VeWorld WalletKit is a typescript library that facilitates seamless interaction between VeChain wallets (veworld, sync2) +and dApps, enhancing user experience and developer convenience. ## Why ? @@ -50,6 +51,14 @@ yarn dev yarn clean ``` +### Purge project + +- Runs yarn clean and removes all node_modules + +```bash +yarn purge +``` + ### Install yarn packages ```bash diff --git a/apps/sample-react-app/package.json b/apps/sample-react-app/package.json index 1d6789cb..c5692e0b 100644 --- a/apps/sample-react-app/package.json +++ b/apps/sample-react-app/package.json @@ -6,12 +6,13 @@ "main": "src/index.js", "scripts": { "build": "yarn compile && react-app-rewired build", - "clean": "rm -rf build node_modules .turbo cache artifacts src/hardhat", + "clean": "rm -rf build .turbo cache artifacts src/hardhat", "compile": "yarn hardhat compile", "dev": "react-app-rewired start", "eject": "react-app-rewired eject", "postinstall": "yarn compile", "lint": "eslint src --ext .js,.jsx,.ts,.tsx", + "purge": "yarn clean && rm -rf node_modules", "start": "HTTPS=true react-app-rewired start", "test": "echo 'Not yet testing'" }, diff --git a/apps/sample-vanilla-app/index.js b/apps/sample-vanilla-app/index.js index d868a018..f7071248 100644 --- a/apps/sample-vanilla-app/index.js +++ b/apps/sample-vanilla-app/index.js @@ -1,9 +1,6 @@ // eslint-disable-next-line eslint-comments/disable-enable-pair /* eslint-disable no-undef */ -import { - VechainWalletKit, - VechainWalletKitModal, -} from '@vechain/vanilla-wallet-kit'; +import { configureThorModal } from '@vechain/vanilla-wallet-kit'; const walletConnectOptions = { projectId: 'a0b855ceaf109dbc8426479a4c3d38d8', @@ -21,6 +18,4 @@ const vechainWalletKitOptions = { walletConnectOptions, }; -const walletKit = new VechainWalletKit(vechainWalletKitOptions); -const vechainWalletKit = new VechainWalletKitModal(walletKit); -vechainWalletKit.initModalListeners(); +configureThorModal(vechainWalletKitOptions); diff --git a/apps/sample-vanilla-app/package.json b/apps/sample-vanilla-app/package.json index 6f4fffc1..3b58a404 100644 --- a/apps/sample-vanilla-app/package.json +++ b/apps/sample-vanilla-app/package.json @@ -6,7 +6,9 @@ "author": "", "type": "module", "scripts": { + "clean": "rm -rf dist", "dev": "parcel index.html --open", + "purge": "yarn clean && rm -rf node_modules", "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { diff --git a/apps/sample-vue-app/package.json b/apps/sample-vue-app/package.json index 8fce2a1d..a08417c0 100644 --- a/apps/sample-vue-app/package.json +++ b/apps/sample-vue-app/package.json @@ -4,9 +4,10 @@ "private": true, "scripts": { "build": "vue-cli-service build", - "clean": "rm -rf dist node_modules .turbo", + "clean": "rm -rf dist .turbo", "dev": "vue-cli-service serve", - "lint": "vue-cli-service lint" + "lint": "vue-cli-service lint", + "purge": "yarn clean && rm -rf node_modules" }, "browserslist": [ "> 1%", @@ -30,6 +31,7 @@ "root": true }, "dependencies": { + "@vechain/vanilla-wallet-kit": "*", "@vechain/wallet-kit": "*", "core-js": "^3.8.3", "node-polyfill-webpack-plugin": "^2.0.1", diff --git a/apps/sample-vue-app/src/App.vue b/apps/sample-vue-app/src/App.vue index 9d51d2e9..e2e69e10 100644 --- a/apps/sample-vue-app/src/App.vue +++ b/apps/sample-vue-app/src/App.vue @@ -2,24 +2,21 @@ Vue logo
- - +
- - diff --git a/apps/sample-vue-app/src/connex/ConnexProvider.vue b/apps/sample-vue-app/src/connex/ConnexProvider.vue index 818dcfea..bf1d5d6b 100644 --- a/apps/sample-vue-app/src/connex/ConnexProvider.vue +++ b/apps/sample-vue-app/src/connex/ConnexProvider.vue @@ -13,6 +13,7 @@ import { } from '@/connex/keys'; import { WalletActions, WalletState } from '@/connex/types'; import { WalletConnectOptions } from '@vechain/wallet-connect'; +import { configureThorModal } from '@vechain/vanilla-wallet-kit'; const initWallets = (hasWcOptions: boolean) => { const wallets: WalletSource[] = ['sync2']; @@ -62,6 +63,8 @@ export default defineComponent({ walletConnectOptions, }); + configureThorModal(connex); + const updateAccount = (addr: string) => { walletState.account = addr; }; diff --git a/apps/sample-vue-app/src/main.ts b/apps/sample-vue-app/src/main.ts index 684d0421..a9434a40 100644 --- a/apps/sample-vue-app/src/main.ts +++ b/apps/sample-vue-app/src/main.ts @@ -1,4 +1,5 @@ import { createApp } from 'vue'; import App from './App.vue'; +import '@vechain/vanilla-wallet-kit'; createApp(App).mount('#app'); diff --git a/apps/sample-vue-app/vue.config.js b/apps/sample-vue-app/vue.config.js index ca20ec40..317e97fc 100644 --- a/apps/sample-vue-app/vue.config.js +++ b/apps/sample-vue-app/vue.config.js @@ -12,4 +12,16 @@ module.exports = defineConfig({ }, }, }, + chainWebpack: (config) => { + config.module + .rule('vue') + .use('vue-loader') + .tap((options) => { + options.compilerOptions = { + ...options.compilerOptions, + isCustomElement: (tag) => tag.startsWith('vwk-'), + }; + return options; + }); + }, }); diff --git a/package.json b/package.json index d774a7fe..4061e474 100755 --- a/package.json +++ b/package.json @@ -8,12 +8,13 @@ "build": "turbo run build", "build-react-kit": "turbo run build --filter='@vechain/react-wallet-kit'", "build:deps": "turbo build --no-daemon --filter='@vechain/*'", - "clean": "npx turbo@latest run clean && rm -rf node_modules .turbo .parcel-cache", + "clean": "rm -rf .turbo .parcel-cache build && npx turbo@latest run clean", "dev": "turbo run dev --no-daemon", "format": "prettier --write \"**/*.{ts,tsx,md,json,js,jsx}\"", "install:all": "yarn && yarn run build:deps", "lint": "turbo run lint", "prepare": "husky install", + "purge": "npx turbo@latest run purge && rm -rf node_modules", "reinstall": "yarn clean && yarn && yarn run build:deps", "test": "turbo run test" }, diff --git a/packages/react-wallet-kit/package.json b/packages/react-wallet-kit/package.json index b54de5fa..d1a89024 100644 --- a/packages/react-wallet-kit/package.json +++ b/packages/react-wallet-kit/package.json @@ -8,9 +8,10 @@ "types": "./dist/index.d.ts", "scripts": { "build": "tsup src/index.tsx --format cjs --dts --external react", - "clean": "rm -rf dist node_modules .turbo", + "clean": "rm -rf dist .turbo", "dev": "tsup src/index.tsx --format cjs --watch --dts --external react", - "lint": "eslint src --ext .js,.jsx,.ts,.tsx" + "lint": "eslint src --ext .js,.jsx,.ts,.tsx", + "purge": "yarn clean && rm -rf node_modules" }, "dependencies": { "@chakra-ui/react": "^2.8.1", diff --git a/packages/vanilla-wallet-kit/package.json b/packages/vanilla-wallet-kit/package.json index 621d98c3..3f1e7fa2 100644 --- a/packages/vanilla-wallet-kit/package.json +++ b/packages/vanilla-wallet-kit/package.json @@ -16,10 +16,11 @@ "types": "dist/index.d.ts", "scripts": { "build": "tsup", - "clean": "rm -rf dist && rm -rf node_modules", + "clean": "rm -rf dist .turbo", "dev": "parcel index.html --open", "format": "prettier \"**/*.{cjs,html,js,json,md,ts}\" --ignore-path ./.eslintignore --write", "lint": "eslint 'src/**/*.ts'", + "purge": "yarn clean && rm -rf node_modules", "watch": "tsup --watch" }, "dependencies": { diff --git a/packages/vanilla-wallet-kit/src/client.ts b/packages/vanilla-wallet-kit/src/client.ts index 35e1f548..09e67d00 100644 --- a/packages/vanilla-wallet-kit/src/client.ts +++ b/packages/vanilla-wallet-kit/src/client.ts @@ -1,38 +1,20 @@ import type { WalletSource } from '@vechain/wallet-kit'; import { MultiWalletConnex } from '@vechain/wallet-kit'; +import type { ConnexOptions } from '@vechain/wallet-kit/src'; import type { SourceInfo } from './constants'; +import './components'; -export interface VechainWalletKitOptions { - connex?: MultiWalletConnex; - nodeUrl: string; - network: string; // TODO: add a type for this - walletConnectOptions: { - projectId: string; - metadata: { - name: string; - description: string; - url: string; - icons: string[]; - }; - }; - onDisconnected: () => void; -} +export type VechainWalletKitOptions = MultiWalletConnex | ConnexOptions; -export class VechainWalletKit { +class VechainWalletKit { connex: MultiWalletConnex; account: string | null = null; constructor(options: VechainWalletKitOptions) { - if (options.connex) { - this.connex = options.connex; + if ('thor' in options) { + this.connex = options; } else { - this.connex = new MultiWalletConnex({ - nodeUrl: options.nodeUrl, - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - genesis: options.network as any, - walletConnectOptions: options.walletConnectOptions, - onDisconnected: options.onDisconnected, - }); + this.connex = new MultiWalletConnex(options); } } @@ -41,8 +23,9 @@ export class VechainWalletKit { }; } -export class VechainWalletKitModal { +class VechainWalletKitModal { public walletKit: VechainWalletKit; + constructor(walletKit: VechainWalletKit) { this.walletKit = walletKit; } @@ -65,3 +48,11 @@ export class VechainWalletKitModal { }); } } + +export const configureThorModal = ( + walletKit: VechainWalletKitOptions, +): void => { + const vechainWalletKit = new VechainWalletKit(walletKit); + const vechainWalletKitModal = new VechainWalletKitModal(vechainWalletKit); + vechainWalletKitModal.initModalListeners(); +}; diff --git a/packages/vanilla-wallet-kit/src/components/base/index.ts b/packages/vanilla-wallet-kit/src/components/base/index.ts index a9facc92..caffbf64 100644 --- a/packages/vanilla-wallet-kit/src/components/base/index.ts +++ b/packages/vanilla-wallet-kit/src/components/base/index.ts @@ -1 +1 @@ -export * from './vwk-base-modal'; +import './vwk-base-modal'; diff --git a/packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/index.ts b/packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/index.ts index a9facc92..72712b62 100644 --- a/packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/index.ts +++ b/packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/index.ts @@ -1 +1,92 @@ -export * from './vwk-base-modal'; +import type { TemplateResult } from 'lit'; +import { css, html, LitElement } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { Theme, ThemeMode } from '@vechain/wallet-kit'; +import { Colors } from '../../../constants'; + +@customElement('vwk-base-modal') +export class Modal extends LitElement { + static override styles = css` + .modal-container { + display: block; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + } + + .modal { + position: absolute; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + box-sizing: border-box; + } + + .modal.LIGHT { + background-color: ${Colors.White}; + color: ${Colors.Dark}; + } + + .modal.DARK { + background-color: ${Colors.Dark}; + color: ${Colors.LightGray}; + } + + @media (max-width: 600px) { + .modal { + width: 100%; + border-top-left-radius: 16px; + border-top-right-radius: 16px; + bottom: 0; + left: 0; + right: 0; + } + } + + @media (min-width: 600px) { + .modal { + width: 350px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + border-radius: 16px; + } + } + `; + @property({ type: Boolean }) + open = false; + @property() + mode = ThemeMode.Light; + @property() + theme = Theme.Default; + + @property({ type: Function }) + onClose = (): null => null; + + stopPropagation = (event: Event): void => { + event.stopPropagation(); + }; + + override render(): TemplateResult { + if (!this.open) return html``; + return html` + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'vwk-base-modal': Modal; + } +} diff --git a/packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/vwk-base-modal.ts b/packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/vwk-base-modal.ts deleted file mode 100644 index e5de9980..00000000 --- a/packages/vanilla-wallet-kit/src/components/base/vwk-base-modal/vwk-base-modal.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { LitElement, html, css } from 'lit'; -import type { TemplateResult } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; -import { Theme, ThemeMode } from '@vechain/wallet-kit'; -import { Colors } from '../../../constants'; - -@customElement('vwk-base-modal') -class Modal extends LitElement { - @property({ type: Boolean }) - open = false; - - static override styles = css` - .modal-container { - display: block; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - } - - .modal { - position: absolute; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); - box-sizing: border-box; - } - - .modal.LIGHT { - background-color: ${Colors.White}; - color: ${Colors.Dark}; - } - - .modal.DARK { - background-color: ${Colors.Dark}; - color: ${Colors.LightGray}; - } - - @media (max-width: 600px) { - .modal { - width: 100%; - border-top-left-radius: 16px; - border-top-right-radius: 16px; - bottom: 0; - left: 0; - right: 0; - } - } - - @media (min-width: 600px) { - .modal { - width: 350px; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - border-radius: 16px; - } - } - `; - - @property({ type: Function }) - onClose = (): null => null; - - stopPropagation = (event: Event): void => { - event.stopPropagation(); - }; - - @property() - mode = ThemeMode.Light; - - @property() - theme = Theme.Default; - - override render(): TemplateResult { - if (!this.open) return html``; - return html` - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - 'vwk-base-modal': Modal; - } -} diff --git a/packages/vanilla-wallet-kit/src/components/index.ts b/packages/vanilla-wallet-kit/src/components/index.ts index faa4bf4f..8101163d 100644 --- a/packages/vanilla-wallet-kit/src/components/index.ts +++ b/packages/vanilla-wallet-kit/src/components/index.ts @@ -1,5 +1,6 @@ -export * from './base'; -export * from './vwk-connect-modal'; -export * from './vwk-connect-button'; -export * from './vwk-connect-button-with-modal'; -export * from './vwk-fonts'; +import './base'; +import './vwk-connect-modal'; +import './vwk-connect-button'; +import './vwk-connect-button-with-modal'; +import './vwk-source-card'; +import './vwk-fonts'; diff --git a/packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/index.ts b/packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/index.ts index d969f8c4..0367155d 100644 --- a/packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/index.ts +++ b/packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/index.ts @@ -1 +1,57 @@ -export * from './vwk-connect-button-with-modal'; +import type { TemplateResult } from 'lit'; +import { html, LitElement } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { Theme, ThemeMode } from '@vechain/wallet-kit'; + +@customElement('vwk-connect-button-with-modal') +export class ConnectButtonWithModal extends LitElement { + @property() + override title = 'Connect Wallet'; + + @property({ type: ThemeMode }) + mode = ThemeMode.Light; + + @property({ type: Theme }) + theme = Theme.Default; + + @property({ type: Boolean }) + open = false; + + @property({ type: Function }) + onSourceClick?: undefined; + + override render(): TemplateResult { + return html` +
+ + + +
+ `; + } + + private handleOpen = (): void => { + this.open = true; + }; + + private handleClose = (): void => { + this.open = false; + }; +} + +declare global { + interface HTMLElementTagNameMap { + 'vwk-connect-button-with-modal': ConnectButtonWithModal; + } +} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/vwk-connect-button-with-modal.ts b/packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/vwk-connect-button-with-modal.ts deleted file mode 100644 index 3b502c83..00000000 --- a/packages/vanilla-wallet-kit/src/components/vwk-connect-button-with-modal/vwk-connect-button-with-modal.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { LitElement, html } from 'lit'; -import type { TemplateResult } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; -import { ThemeMode, Theme } from '@vechain/wallet-kit'; - -@customElement('vwk-connect-button-with-modal') -class ConnectButtonWithModal extends LitElement { - @property() - override title = 'Connect Wallet'; - - @property({ type: ThemeMode }) - mode = ThemeMode.Light; - - @property({ type: Theme }) - theme = Theme.Default; - - @property({ type: Boolean }) - open = false; - - @property({ type: Function }) - onSourceClick?: undefined; - - private handleOpen = (): void => { - this.open = true; - }; - - private handleClose = (): void => { - this.open = false; - }; - - override render(): TemplateResult { - return html` -
- - - -
- `; - } -} - -declare global { - interface HTMLElementTagNameMap { - 'vwk-connect-button-with-modal': ConnectButtonWithModal; - } -} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-connect-button/index.ts b/packages/vanilla-wallet-kit/src/components/vwk-connect-button/index.ts index ac280114..7a4bea13 100644 --- a/packages/vanilla-wallet-kit/src/components/vwk-connect-button/index.ts +++ b/packages/vanilla-wallet-kit/src/components/vwk-connect-button/index.ts @@ -1 +1,59 @@ -export * from './vwk-connect-button'; +import type { TemplateResult } from 'lit'; +import { css, html, LitElement } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { Theme, ThemeMode } from '@vechain/wallet-kit'; +import { Colors } from '../../constants'; + +@customElement('vwk-connect-button') +export class ConnectButton extends LitElement { + static override styles = css` + button { + cursor: pointer; + display: block; + border: none; + border-radius: 12px; + padding: 8px 12px; + font-family: 'Inter', sans-serif; + } + + button:hover { + opacity: 0.9; + } + + button.LIGHT { + background-color: ${Colors.LightGray}; + color: ${Colors.Dark}; + } + + button.DARK { + background-color: ${Colors.Dark}; + color: ${Colors.LightGray}; + } + `; + + @property() + override title = 'Connect Wallet'; + + @property() + mode = ThemeMode.Light; + + @property() + theme = Theme.Default; + + @property({ type: Function }) + onClick? = undefined; + + override render(): TemplateResult { + return html` + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'vwk-connect-button': ConnectButton; + } +} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-connect-button/vwk-connect-button.ts b/packages/vanilla-wallet-kit/src/components/vwk-connect-button/vwk-connect-button.ts deleted file mode 100644 index 50dce6fb..00000000 --- a/packages/vanilla-wallet-kit/src/components/vwk-connect-button/vwk-connect-button.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { LitElement, html, css } from 'lit'; -import type { TemplateResult } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; -import { ThemeMode, Theme } from '@vechain/wallet-kit'; -import { Colors } from '../../constants'; - -@customElement('vwk-connect-button') -class ConnectButton extends LitElement { - static override styles = css` - button { - cursor: pointer; - display: block; - border: none; - border-radius: 12px; - padding: 8px 12px; - font-family: 'Inter', sans-serif; - } - button:hover { - opacity: 0.9; - } - - button.LIGHT { - background-color: ${Colors.LightGray}; - color: ${Colors.Dark}; - } - button.DARK { - background-color: ${Colors.Dark}; - color: ${Colors.LightGray}; - } - `; - - @property() - override title = 'Connect Wallet'; - - @property() - mode = ThemeMode.Light; - - @property() - theme = Theme.Default; - - @property({ type: Function }) - onClick? = undefined; - - override render(): TemplateResult { - return html` - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - 'vwk-connect-button': ConnectButton; - } -} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/index.ts b/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/index.ts index 4374faf6..8a5b5c3a 100644 --- a/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/index.ts +++ b/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/index.ts @@ -1,2 +1,86 @@ -export * from './vwk-connect-modal'; -export * from './vwk-source-card'; +import type { TemplateResult } from 'lit'; +import { css, html, LitElement, nothing } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { Theme, ThemeMode } from '@vechain/wallet-kit'; +import { DarkCloseSvg, LightCloseSvg } from '../../assets'; +import type { SourceInfo } from '../../constants'; +import { WalletSources } from '../../constants'; + +@customElement('vwk-connect-modal') +export class ConnectModal extends LitElement { + static override styles = css` + .modal-container { + padding: 20px; + } + + .modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding-bottom: 10px; + font-family: 'Inter', sans-serif; + } + + .modal-body { + flex-direction: column; + } + + .close-icon { + cursor: pointer; + width: 20px; + height: 20px; + } + `; + + @property({ type: Boolean }) + open = false; + @property({ type: Function }) + onSourceClick?: (source?: SourceInfo) => void = undefined; + @property() + mode = ThemeMode.Light; + @property() + theme = Theme.Default; + + @property({ type: Function }) + onClose: () => void = () => nothing; + + override render(): TemplateResult { + return html` + + + + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'vwk-connect-modal': ConnectModal; + } +} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/vwk-connect-modal.ts b/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/vwk-connect-modal.ts deleted file mode 100644 index 78f737aa..00000000 --- a/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/vwk-connect-modal.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { LitElement, html, css, nothing } from 'lit'; -import type { TemplateResult } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; -import { ThemeMode, Theme } from '@vechain/wallet-kit'; -import { DarkCloseSvg, LightCloseSvg } from '../../assets'; -import { WalletSources } from '../../constants'; -import type { SourceInfo } from '../../constants'; - -@customElement('vwk-connect-modal') -class ConnectModal extends LitElement { - static override styles = css` - .modal-container { - padding: 20px; - } - .modal-header { - display: flex; - justify-content: space-between; - align-items: center; - padding-bottom: 10px; - font-family: 'Inter', sans-serif; - } - .modal-body { - flex-direction: column; - } - .close-icon { - cursor: pointer; - width: 20px; - height: 20px; - } - `; - - @property({ type: Boolean }) - open = false; - - @property({ type: Function }) - onClose: () => void = () => nothing; - - @property({ type: Function }) - onSourceClick?: (source?: SourceInfo) => void = undefined; - - @property() - mode = ThemeMode.Light; - - @property() - theme = Theme.Default; - - override render(): TemplateResult { - return html` - - - - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - 'vwk-connect-modal': ConnectModal; - } -} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-fonts.ts b/packages/vanilla-wallet-kit/src/components/vwk-fonts.ts deleted file mode 100644 index 147b2f17..00000000 --- a/packages/vanilla-wallet-kit/src/components/vwk-fonts.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { LitElement, html } from 'lit'; -import type { TemplateResult } from 'lit'; -import { customElement } from 'lit/decorators.js'; - -@customElement('vwk-fonts') -class Fonts extends LitElement { - override render(): TemplateResult { - return html` - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - 'vwk-fonts': Fonts; - } -} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-fonts/index.ts b/packages/vanilla-wallet-kit/src/components/vwk-fonts/index.ts new file mode 100644 index 00000000..ae3c931f --- /dev/null +++ b/packages/vanilla-wallet-kit/src/components/vwk-fonts/index.ts @@ -0,0 +1,57 @@ +import type { TemplateResult } from 'lit'; +import { html, LitElement } from 'lit'; +import { customElement } from 'lit/decorators.js'; + +@customElement('vwk-fonts') +export class Fonts extends LitElement { + override render(): TemplateResult { + return html` + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'vwk-fonts': Fonts; + } +} diff --git a/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/vwk-source-card.ts b/packages/vanilla-wallet-kit/src/components/vwk-source-card/index.ts similarity index 92% rename from packages/vanilla-wallet-kit/src/components/vwk-connect-modal/vwk-source-card.ts rename to packages/vanilla-wallet-kit/src/components/vwk-source-card/index.ts index b3fcd811..a5cf923b 100644 --- a/packages/vanilla-wallet-kit/src/components/vwk-connect-modal/vwk-source-card.ts +++ b/packages/vanilla-wallet-kit/src/components/vwk-source-card/index.ts @@ -1,12 +1,12 @@ -import { LitElement, html, css } from 'lit'; import type { TemplateResult } from 'lit'; +import { css, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ThemeMode, Theme } from '@vechain/wallet-kit'; -import { Colors } from '../../constants'; +import { Theme, ThemeMode } from '@vechain/wallet-kit'; import type { SourceInfo } from '../../constants'; +import { Colors } from '../../constants'; @customElement('vwk-source-card') -class SourceCard extends LitElement { +export class SourceCard extends LitElement { static override styles = css` .card { padding: 16px; diff --git a/packages/vanilla-wallet-kit/src/index.ts b/packages/vanilla-wallet-kit/src/index.ts index 836ec15c..4f1cce44 100644 --- a/packages/vanilla-wallet-kit/src/index.ts +++ b/packages/vanilla-wallet-kit/src/index.ts @@ -1,2 +1 @@ -export * from './components'; export * from './client'; diff --git a/packages/wallet-connect/package.json b/packages/wallet-connect/package.json index f2db09f1..537bb748 100644 --- a/packages/wallet-connect/package.json +++ b/packages/wallet-connect/package.json @@ -7,9 +7,10 @@ "types": "./dist/index.d.ts", "scripts": { "build": "tsup src/index.ts --format cjs --dts", - "clean": "rm -rf dist node_modules .turbo", + "clean": "rm -rf dist .turbo", "dev": "tsup src/index.ts --format cjs --watch --dts", - "lint": "eslint src --ext .js,.jsx,.ts,.tsx" + "lint": "eslint src --ext .js,.jsx,.ts,.tsx", + "purge": "yarn clean && rm -rf node_modules" }, "dependencies": { "@walletconnect/modal": "2.6.2", diff --git a/packages/wallet-kit/package.json b/packages/wallet-kit/package.json index c57e5487..f3619693 100644 --- a/packages/wallet-kit/package.json +++ b/packages/wallet-kit/package.json @@ -10,8 +10,9 @@ "types": "./dist/index.d.ts", "scripts": { "build": "tsup src/index.ts --format cjs,esm --dts", - "clean": "rm -rf dist node_modules .turbo", + "clean": "rm -rf dist .turbo", "lint": "eslint src --ext .js,.jsx,.ts,.tsx", + "purge": "yarn clean && rm -rf node_modules", "watch": "tsup src/index.ts --format cjs,esm --watch --dts" }, "dependencies": { diff --git a/turbo.json b/turbo.json index beada213..71149fb5 100644 --- a/turbo.json +++ b/turbo.json @@ -5,6 +5,9 @@ "outputs": ["build/**", "dist/**"], "dependsOn": ["^build"] }, + "purge": { + "cache": false + }, "test": { "outputs": ["coverage/**"], "dependsOn": ["build"]