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

@lilydesignsystem/react-picker-bar

v0.4.0

Published

Lily Design System React picker bar: composes link-picker (optional), search-picker, theme-picker, locale-picker, text-size-picker, and share-picker into one page-header row. Headless, SSR-safe, no CSS.

Downloads

484

Readme

Lily Design System™ — React PickerBar

Link picker (0.3.0). Pass links (and labels.link) to add a link-picker — a home icon opening the page links your app defines — as the leftmost icon. It renders only when both are given.

A single page-header row that composes five of the Lily *-picker helpers — search, theme, locale, text size, and share, in that order — with two catalog-wide defaults pre-wired, so you can drop one component into a header instead of assembling and configuring five.

motion-picker and date-time-picker are not part of the bar: motion has no natural spot next to the other three header preferences, and date-time-picker is a form control, not a header control.

Install

npm install @lilydesignsystem/react-picker-bar

@lilydesignsystem/react-search-picker, -theme-picker, -locale-picker, -text-size-picker, and -share-picker install automatically as regular dependencies — PickerBar is a thin wrapper around them, not a reimplementation.

Usage

import PickerBar from "@lilydesignsystem/react-picker-bar";

function Header() {
  return (
    <PickerBar
      labels={{
        search: "Search this site",
        searchInput: "Search terms",
        searchSubmit: "Search",
        theme: "Theme",
        locale: "Language",
        textSize: "Text size",
        share: "Share",
      }}
      themesUrl="/assets/themes/"
      locales={["en", "cy", "gd", "ga"]}
      shareTargets={[
        {
          id: "email",
          label: "Email",
          href: (url, title) => `mailto:?subject=${title}&body=${url}`,
        },
      ]}
    />
  );
}

That's a complete, working header row: site search (a search for foo goes to /?foo), 45 themes, four locales, the seven-step text-size scale, and one share destination plus copy-to-URL if you add shareProps={{ copyLabel: "Copy link" }}.

Defaults

  • themes defaults to DEFAULT_THEMES — all 45 Lily reference theme slugs, alphabetical, with the 8 United Kingdom / United States government themes moved to their own alphabetical group at the bottom. Pass your own themes array to override.
  • sizes defaults to DEFAULT_SIZES — the seven-step scale largest, larger, large, normal, small, smaller, smallest — and the text-size picker starts on normal. Pass your own sizes array (and textSizeProps={{ defaultValue: "…" }} if you want a different starting point) to override.

Both are exported as named constants:

import { DEFAULT_THEMES, DEFAULT_SIZES } from "@lilydesignsystem/react-picker-bar";

Passing extra props to one picker

Each wrapped picker takes a *Props bag for anything beyond what PickerBar lifts to the top level — persistence, initial value, detection, a *Labels override map, a custom glyph render prop:

<PickerBar
  labels={{
    search: "Search this site", searchInput: "Search terms", searchSubmit: "Search",
    theme: "Theme", locale: "Language", textSize: "Text size", share: "Share",
  }}
  searchProps={{ action: "/search", placeholder: "Search…" }}
  themesUrl="/assets/themes/"
  locales={["en", "cy"]}
  themeProps={{ storageKey: "lily-theme", detectFromSystem: true }}
  localeProps={{ storageKey: "lily-locale", detectFromNavigator: true }}
  textSizeProps={{ storageKey: "lily-text-size" }}
  shareProps={{ copyLabel: "Copy link", copiedLabel: "Copied" }}
/>

Anything in a *Props bag wins over PickerBar's own default for that picker — including overriding themes, locales, or sizes per-picker if you ever needed to (you'd normally just use the top-level prop instead).

Styling

PickerBar renders no CSS of its own class beyond the picker-bar root wrapper — style each child through its own package's class hooks (search-picker, theme-picker, locale-picker, text-size-picker, share-picker; see each package's own index.md). A typical header layout:

.picker-bar {
  display: flex;
  gap: var(--theme-space-sm, 0.5rem);
  align-items: center;
}

Accessibility

Every accessible name comes from labels — there is no English default, because a set of names this catalog invented is exactly the case the rest of Lily's i18n rule exists for. Each wrapped picker keeps its own WAI-ARIA APG contract unchanged; see that picker's own index.md.

Full contract

See spec/index.md.


Lily™ and Lily Design System™ are trademarks.