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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@haus-storefront-react/currency-chooser

v0.1.0

Published

A headless component for managing currency selection in the storefront. This component allows users to view and change the active currency for their shopping experience.

Readme

Currency Chooser

A headless component for managing currency selection in the storefront. This component allows users to view and change the active currency for their shopping experience.

Features

  • Display available currencies
  • Change active currency
  • Persist currency selection in localStorage
  • Refresh the page to apply currency changes
  • Automatically select the default currency based on the active channel

Installation

yarn add @haus-storefront-react/currency-chooser

Basic Usage

import { CurrencyChooser } from '@haus-storefront-react/currency-chooser';

export default function App() {
  return (
    <CurrencyChooser.Root>
      <CurrencyChooser.Trigger />
      <CurrencyChooser.Options />
    </CurrencyChooser.Root>
  );
}

Advanced Usage

import { CurrencyChooser } from '@haus-storefront-react/currency-chooser';

export default function CustomCurrencySelector() {
  return (
    <CurrencyChooser.Root>
      {({ selectedCurrency, availableCurrencyCodes, isLoading, handleValueChangeAndReload }) => (
        <div className="currency-selector">
          {isLoading ? (
            <p>Loading currencies...</p>
          ) : (
            <>
              <span>Current currency: {selectedCurrency}</span>
              <select 
                value={selectedCurrency} 
                onChange={(e) => handleValueChangeAndReload(e.target.value)}
              >
                {availableCurrencyCodes.map((code) => (
                  <option key={code} value={code}>
                    {code}
                  </option>
                ))}
              </select>
            </>
          )}
        </div>
      )}
    </CurrencyChooser.Root>
  );
}

Component API

CurrencyChooser.Root

The root component that provides context to all other components.

<CurrencyChooser.Root>
  {/* Other CurrencyChooser components */}
</CurrencyChooser.Root>

CurrencyChooser.Select

A component that renders a complete select element for choosing a currency.

<CurrencyChooser.Select />

CurrencyChooser.Trigger

A button component that displays the current currency.

<CurrencyChooser.Trigger />

CurrencyChooser.Options

A container for currency options.

<CurrencyChooser.Options />

CurrencyChooser.Option

An individual currency option.

<CurrencyChooser.Option value="USD" />

CurrencyChooser.Value

A component that displays the currently selected currency.

<CurrencyChooser.Value />

Using with Custom UI Components

You can use the asChild prop to compose with your own UI components:

import { Button } from './your-ui-library';

function CustomCurrencyChooser() {
  return (
    <CurrencyChooser.Root>
      <CurrencyChooser.Trigger asChild>
        <Button variant="outline">
          <CurrencyChooser.Value /> ▼
        </Button>
      </CurrencyChooser.Trigger>
      {/* Rest of your implementation */}
    </CurrencyChooser.Root>
  );
}