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

@usdh-kit/widget

v0.1.0

Published

Embeddable React widget for swapping stablecoins into USDH on Hyperliquid

Downloads

64

Readme

@usdh-kit/widget

Embeddable React widget for swapping stablecoins into USDH on Hyperliquid.

Install

pnpm add @usdh-kit/widget @usdh-kit/sdk wagmi viem @tanstack/react-query react react-dom

Usage

The widget reads the connected wallet from wagmi. Wrap your tree in WagmiProvider and QueryClientProvider (e.g. via ConnectKit or RainbowKit) before rendering it.

import { USDHSwap } from '@usdh-kit/widget'
import '@usdh-kit/widget/styles.css'

export default function Page() {
  return <USDHSwap network="mainnet" />
}

The full widget manages a short-lived Hyperliquid agent wallet session before swapping. For custom UIs, prefer the SDK primitives (approveAgent, accountAddress, and createUsdhKit) so reads use the master wallet while L1 orders are signed by an approved agent.

For HyperEVM-funded swaps, users should expect:

  1. one wallet signature to enable the trading session on first use
  2. one USDC approval transaction if allowance is not already sufficient
  3. one USDC deposit transaction into HyperCore
  4. no wallet popup for the final USDH order; the approved session agent signs it

Styling

Pick one of the two paths depending on whether your app already runs Tailwind.

Already using Tailwind v3

Spread the widget's content paths into your Tailwind config so its utility classes are scanned and emitted alongside your own:

// tailwind.config.ts
import widgetContent from '@usdh-kit/widget/tailwind-content'
import type { Config } from 'tailwindcss'

const config: Config = {
  content: ['./src/**/*.{ts,tsx}', ...widgetContent],
}

export default config

Tailwind v3 does not deep-merge content arrays from presets, which is why we ship paths as a plain array instead of a preset object.

Not using Tailwind

Import the pre-compiled stylesheet once at your app entry. It's about 3 KB and contains only the utility classes the widget renders.

import '@usdh-kit/widget/styles.css'

Props

type USDHSwapProps = {
  network: 'mainnet' | 'testnet'
  hideNetworkToggle?: boolean
  hideAttribution?: boolean
  theme?: 'dark' | 'light' | 'auto'
  defaultSlippageBps?: number
  defaultAmount?: string
  onSwapComplete?: (result: {
    orderId: string
    receivedUsdh: bigint
    txHash?: `0x${string}`
  }) => void
}

network is required. Pass 'mainnet' for production swaps and 'testnet' for the Hyperliquid testnet.

License

MIT