# @uniswap-widget/vue [![npm version](https://img.shields.io/npm/v/@uniswap-widget/vue.svg)](https://www.npmjs.com/package/@uniswap-widget/vue) [![npm downloads](https://img.shields.io/npm/dm/@uniswap-widget/vue.svg)](https://www.npmjs.com/package/@uniswap-widget/vue) [![license](https://img.shields.io/npm/l/@uniswap-widget/vue.svg)](https://github.com/houtanrocky/uniswap-widget/blob/main/LICENSE) A Vue 3 Uniswap swap widget, built on [`@uniswap-widget/core`](https://github.com/houtanrocky/uniswap-widget/tree/main/packages/core). The same trading logic that powers [`@uniswap-widget/react`](https://github.com/houtanrocky/uniswap-widget/tree/main/packages/react-uniswap) exposed as Vue components and composables. ```vue ``` ## What's in the box - **``** the swap UI (a port of the React widget). - **``** the default provider: wagmi config + AppKit instance, with the Reown wallet adapter wired in. - **``** + adapters the wallet plugin (see below): `useReownWalletAdapter` (default), `useInjectedWalletAdapter`. - **Composables** `useWallet`, `useQuote`, `useSwap`, `createWidgetState` for building your own UI on the core. ## Wallet adapters (plugin) The widget is **wallet-agnostic** — it reads the connected account and an ethers `Signer` from a small adapter (a Vue composable), so Reown AppKit is just the default. Plug in any wallet library: - **Default (Reown AppKit):** use `` as shown above. - **Another wallet library:** pass `walletAdapter` to ``, or skip it and wrap `` in ``. A `WalletAdapter` is a composable returning a `WalletConnection`: ```ts interface WalletConnection { isConnected: Ref; address: Ref; getSigner: () => Promise; // what the core needs connect: () => void | Promise; disconnect?: () => void | Promise; AccountButton?: Component; // optional account UI } type WalletAdapter = () => WalletConnection; ``` ### Built-in: injected wallet (no Reown, no wagmi) `useInjectedWalletAdapter` talks to `window.ethereum` using only `ethers`: ```vue ``` The default adapter still talks to `@wagmi/core` directly (no `@wagmi/vue` or `@tanstack/vue-query` required). ## Peer dependencies Provided by the host app: `vue`, `@wagmi/core`, `viem`, `ethers`, and the `@uniswap/*` SDKs. `@reown/appkit` + `@reown/appkit-adapter-wagmi` are **optional** (only for the default Reown adapter). ## Host requirements The widget's network calls expect the host to proxy `/api/base-rpc` and `/api/uniswap/v2/...` (see `examples/vue/vite.config.ts`).