npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@velocitylabs-org/turtle-widget

v0.1.0

Published

Turtle Widget – Seamless, trustless cross-chain transfers made easy.

Readme

🐢 About

Turtle is your go-to app for cross-chain transfers leveraging fully trustless infrastructure.
We aim to provide a unified experience for transferring tokens anywhere.

📦 Installation

Note - Turtle Widget is currently in alpha and subject to breaking changes as development continues. You may be using the latest alpha version, which can differ from the coming stable release. Supported React versions >= 19.0.0

pnpm install @velocitylabs-org/turtle-widget

Usage

React/Vite

import Widget from '@velocitylabs-org/turtle-widget'

function Home() {
  return (
    <div className="flex h-screen w-screen items-center justify-center">
      <Widget />
    </div>
  )
}

export default Home

🐛 Troubleshooting (Vite/React)

The Turtle widget internally uses WebAssembly (WASM), which may require additional configuration in your Vite project. If you're seeing errors related to WebAssembly (e.g., "Top-level await is not available"), make sure to:

  1. Install the vite-plugin-wasm
pnpm add -D vite-plugin-wasm
  1. Update your vite.config.ts to include the plugin
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import wasm from 'vite-plugin-wasm'

export default defineConfig({
  plugins: [wasm(), react()],
})
  1. Optional: Build Configuration

If you encounter build errors, make sure your vite.config.ts includes the following build configuration to support modern JS features, WASM and allow top-level await:

export default defineConfig({
  plugins: [wasm(), react()],
  ...
  build: {
    target: "esnext",
    rollupOptions: {
      output: {
        format: "es",
      },
    },
  }
})

You may also need to set your target in tsconfig.json

Next.js (With SSR Handling)

'use client'

import dynamic from 'next/dynamic'

const Widget = dynamic(() => import('@velocitylabs-org/turtle-widget'), {
  loading: () => <div>Loading Turtle Widget...</div>,
  ssr: false,
})

function Home() {
  return (
    <div className="flex h-screen w-screen items-center justify-center">
      <Widget />
    </div>
  )
}

export default Home

⛓️ Chain and Token Configuration

You can customize the Chains and Tokens you want to show in your widget instance. It works by passing the registry configuration. It defaults to using all chains & tokens supported by the Turtle App otherwise.

Here’s how to configure it:

import type { ConfigRegistryType } from '@velocitylabs-org/turtle-widget'

const registry = {
  chains: ['polkadot', 'hydration'],
  tokens: ['dot', 'usdc', 'usdt'],
} satisfies ConfigRegistryType

Pass it as a prop to the <Widget /> component:

<Widget registry={registry} />

If you leave the chains or tokens arrays empty, all chains and tokens will be shown by default.

✅ Available Values:

Chains ids

ethereum // Ethereum
polkadot-assethub // Asset Hub
polkadot // Relay Chain
polkadot-bridgehub // BridgeHub
bifrost // Bifrost
hydration // Hydration
phala // Phala
moonbeam // Moonbeam
interlay // Interlay
acala // Acala
polimec // Polimec
centrifuge // Centrifuge
astar // Astar
mythos // Mythos

Tokens ids

eth // Ethereum
usdc.e // USD Coin (bridged)
dai.e // DAI (bridged)
usdt.e // Tether (bridged)
weth.e // Wrapped Ether (bridged)
veth.e // vEther
wbtc.e // Wrapped Bitcoin (bridged)
myth.e // Mythos (bridged)
shib.e // Shiba Inu (bridged)
pepe.e // Pepe (bridged)
ton.e // Toncoin (bridged)
wsteth.e // Wrapped Staked Ether (bridged)
tbtc.e // tBTC (bridged)
aca // Acala
astr // Astar
bnc // Bifrost Native Coin
cfg // Centrifuge
hdx // HydraDX
usdc // USD Coin
usdt // Tether
glmr // Moonbeam (GLMR)
pha // Phala
intr // Interlay
dot // Polkadot
vdot // Voucher DOT
ibtc // InterBTC
plmc // Polimec
myth.p // Mythos (native or parachain)

🎨 Theme configuration

The Turtle widget supports full theme customization. You can pass a theme prop to <Widget /> to override default styles like colors, background, overlay opacity, and more.

⚠️ Note: The Turtle Widget bundles its own Tailwind CSS, but it's not sandboxed. Global styles from your app (e.g., .your-wrapper p { ... }) may still affect it. This allows for advanced customization, but be cautious with aggressive global CSS.

🧩 Type

import type { WidgetTheme } from '@velocitylabs-org/turtle-widget'

🧑‍💻 Custom configuration usage with Next.js

'use client'

import dynamic from 'next/dynamic'
import type { WidgetTheme, ConfigRegistryType } from '@velocitylabs-org/turtle-widget'

const Widget = dynamic<{ theme?: WidgetTheme; registry?: ConfigRegistryType }>(
  () => import('@velocitylabs-org/turtle-widget'),
  {
    loading: () => <div>Loading Turtle Widget...</div>,
    ssr: false,
  },
)

const theme = {
  primary: '#DBB3B1', // HexColor
  dialogOverlayRgb: '219, 179, 177', // RGBColor
  dialogOverlayOpacity: 0.5, // number
  //...
} satisfies WidgetTheme

const registry = {
  chains: ['polkadot', 'hydration'],
  tokens: ['dot', 'usdc', 'usdt'],
} satisfies ConfigRegistryType

function Home() {
  return (
    <div className="flex h-screen w-screen items-center justify-center">
      <Widget theme={theme} registry={registry} />
    </div>
  )
}

export default Home

✅ Available theme keys:

  • primary, primaryDark, primaryLight
  • secondary, secondaryDark, secondaryLight, secondary50, secondaryTransparent (...)
  • tertiary, tertiaryDark, tertiaryLight, tertiary70 (...)
  • background, foreground
  • level1 to level6
  • success, warning, error (+ dark/light variants, ...)
  • dialogOverlayRgb, dialogOverlayOpacity
  • noteWarn

Integration Support

If you're planning to integrate our widget, please contact the Velocity team first, we offer personalized support to ensure a smooth setup.

Email: [email protected] Twitter/X: @TurtlecoolApp Telegram: t.me/velocitylabs/137