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

walls-io-storybook-components

v0.0.82

Published

Web Components built with [Lit](https://lit.dev/). No framework required — drop them into any HTML page or JS project.

Readme

Walls.io Storybook Components

Web Components built with Lit. No framework required — drop them into any HTML page or JS project.

Installation

npm install walls-io-storybook-components

Import the CSS (once, globally):

import "walls-io-storybook-components/dist/index.css";

Import the components you need:

import "walls-io-storybook-components/dist/Button";
import "walls-io-storybook-components/dist/CountryCodeSelect";
import "walls-io-storybook-components/dist/ProgressBar";

Development

npm install
npm run storybook
# → http://localhost:6006/

Components

<walls-button-component>

A versatile button supporting four visual types, multiple color schemes, icons, social icons, and link mode.

Props

| Prop | Type | Default | Description | |---|---|---|---| | button_type | string | — | Required. primary | secondary | alternative | simple | | color_scheme | string | yellow | See color options per type below | | label | string | — | Button text | | label_short | string | — | Replaces label on screens narrower than 400px | | size | string | normal | normal | large | small | | type | string | button | HTML button type: button | submit | reset. When submit, finds the closest <form> and calls requestSubmit() | | disabled | boolean | false | Disables the button | | icon_before | string | — | Icon rendered before the label. See icon list below | | icon_after | string | — | Icon rendered after the label. See icon list below | | social | string | — | Renders a social network icon and applies its brand color. See social list below | | link | string | — | Renders as an <a> tag with this href | | target | string | _self | Link target (used when link is set) | | rel | string | — | Link rel attribute, e.g. nofollow | | aria_label | string | — | Aria label for screen readers | | vertical_on_small_screen | boolean | false | Stacks icon and label vertically on small screens | | icons_hidden_on_small_screen | boolean | false | Hides icons on small screens | | on_click | function | — | Click callback |

Color schemes by type

| button_type | Available color_scheme values | |---|---| | primary | yellow black green blue pink white | | secondary | red blue black white | | alternative | red blue black white | | simple | blue red black |

Icons (icon_before / icon_after)

check outsideLink plus xmark write none trashcan arrowLeft gear arrowRight pencil info floppy heart heartFull arrowUp ticket calendar forward powerOff link rotate rotateAnimate puzzle rocket headset play coinBlank grid2 grid2empty arrowDownToLine sparkles eye fingerprint mask

Social networks (social)

facebook twitter x instagram linkedin youtube tiktok pinterest rss mastodon flickr vimeo reddit tumblr vkontakte bluesky

Examples

<!-- Primary yellow button -->
<walls-button-component
  button_type="primary"
  color_scheme="yellow"
  label="Show wall"
  icon_before="outsideLink"
></walls-button-component>

<!-- Secondary destructive button -->
<walls-button-component
  button_type="secondary"
  color_scheme="red"
  label="Delete"
  icon_after="trashcan"
></walls-button-component>

<!-- Submit button inside a form -->
<walls-button-component
  button_type="primary"
  color_scheme="green"
  label="Save"
  icon_before="floppy"
  type="submit"
></walls-button-component>

<!-- Link button -->
<walls-button-component
  button_type="simple"
  color_scheme="blue"
  label="Learn more"
  link="https://walls.io"
  target="_blank"
></walls-button-component>

<walls-country-code-select>

A searchable country code dropdown with flag emojis. Outputs a hidden input for form submission.

Props

| Prop | Type | Default | Description | |---|---|---|---| | value | string | '' | Selected country code (e.g. AT, US) | | height | number | 32 | Height of the toggle button in px | | full_width | boolean | false | Stretches the component to full container width | | label | string | '' | Label text rendered above the dropdown | | input_id | string | '' | id on the hidden input and for on the label | | input_name | string | '' | name on the hidden input for form submission | | input_classes | string | '' | Extra CSS classes on the hidden input | | label_classes | string | '' | Extra CSS classes on the label element | | toggle_button_classes | string | '' | Extra CSS classes on the toggle button | | search_input_classes | string | '' | Extra CSS classes on the search input inside the dropdown | | on_change | function | — | Callback fired with the selected code string when selection changes |

Examples

<!-- Basic usage -->
<walls-country-code-select
  input_name="country_code"
  label="Country code"
></walls-country-code-select>

<!-- Pre-selected value, full width -->
<walls-country-code-select
  value="AT"
  full_width
  height="40"
></walls-country-code-select>
// With on_change callback
const el = document.querySelector('walls-country-code-select');
el.on_change = (code) => console.log('Selected:', code);

<walls-progress-bar-component>

A progress bar with flexible value/max, color schemes, optional label and percentage, rounded ends, and customizable track background.

Props

| Prop | Type | Default | Description | |---|---|---|---| | value | number | 0 | Current progress value | | max | number | 100 | Maximum value. Set to e.g. 4 and value to 1–4 for step-based progress | | color_scheme | string | blue | Fill color. See options below | | height | number | 8 | Bar height in px | | rounded | boolean | false | Pill-style rounded ends | | label | string | '' | Text label rendered above the bar | | show_percentage | boolean | false | Shows value% (or value / max when max ≠ 100) above the bar | | track_color | string | default | Track background: default (tint of fill color) | gray | transparent | | inline | string | false | Inline single-row layout: false (stacked) | label-percent-bar | label-bar-percent | | step_sign | string | / | Separator used in the step label when max ≠ 100 (e.g. of, aus) | | step_sign_color | string | '' | Color of the percentage/step label. Defaults to color_scheme if not set. See color options below | | show_min_progress | boolean | false | When true, renders a 14px wide fill even when value is 0 to indicate the bar has started |

Color schemes

blue green red yellow pink black white gray

Examples

<!-- Simple 60% bar -->
<walls-progress-bar-component
  value="60"
></walls-progress-bar-component>

<!-- Labeled bar with percentage -->
<walls-progress-bar-component
  value="75"
  color_scheme="green"
  label="Upload progress"
  show_percentage
></walls-progress-bar-component>

<!-- Step-based (step 2 of 4) -->
<walls-progress-bar-component
  value="2"
  max="4"
  color_scheme="blue"
  label="Step"
  show_percentage
  rounded
></walls-progress-bar-component>

<!-- Gray track, thick, rounded -->
<walls-progress-bar-component
  value="80"
  color_scheme="pink"
  height="16"
  rounded
  track_color="gray"
></walls-progress-bar-component>

<!-- Step-based with custom separator and label color -->
<walls-progress-bar-component
  value="1"
  max="3"
  label="Steps"
  show_percentage
  step_sign="of"
  step_sign_color="black"
  rounded
  track_color="gray"
  inline="label-percent-bar"
></walls-progress-bar-component>

<!-- Show a smidge of fill even at zero -->
<walls-progress-bar-component
  value="0"
  label="Getting started"
  show_min_progress
></walls-progress-bar-component>