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

@lmvz-ds/components

v0.16.0

Published

The components of the design system

Readme

Built With Stencil

Stencil is a compiler for building web apps using Web Components.

LMVZ Component Library

This is the component library of the LMVZ Design System

About

This package uses Stencil to create web components—for browser-native usage—and framework-specific wrapper utils for angular and react (which are wrapped using their dedicated sibling packages). It also uses Effect (aka. effect-ts) for improved type-safety error handling

General Guidelines for Consuming This Package (in your project)

Always consider the Integration chapter in the Design Guide. In the context of a UI framework, consider using the specific wrapper packages: @lmvz-ds/angular, @lmvz-ds/react, @lmvz-ds/vue.

NPM Integration

Installation

npm i @lmvz-ds/components

Usage

In a web app, import components directly (import LmvzCard from '.../components/lmvz-card.js') or the loader (e.g., import { defineCustomElements } from '.../loader';) and call defineCustomElements(window) to register all components globally. Use the CDN version (cdn.js) for direct browser inclusion via tags. The loader is essential when integrating Stencil components into non-Stencil projects (React, Angular, plain HTML) to ensure custom elements are defined and polyfills loaded.

Runtime ARIA Validation (Opt-in)

ARIA validation is disabled by default and can be enabled on demand with a separate runtime import:

import '@lmvz-ds/components/ariaValidation';

This import enables validation globally for all LMVZ components, independent of integration mode.

To disable it again at runtime:

import { disableAriaValidation } from '@lmvz-ds/components/ariaValidation';

disableAriaValidation();

Components

Components are built in standalone mode, using dist-custom-elements. This way, you can import the components individually, wherever they are needed.

For example, given you'd like to use <my-component /> as part of your application, you can import the component directly via:

import '@lmvz-ds/components/my-component';

function App() {
  return (
    <>
      <div>
        <my-component first="Stencil" middle="'Don't call me a framework'" last="JS"></my-component>
      </div>
    </>
  );
}

export default App;

⚠️ The components' bundled styles will not affect native HTML elements, so you still need to import style packages you want to use globally.

Making changes to this package

Getting Started

npm install

Workflow

See the parent project's readme for the overarching process' description.

Guidelines

  • Components must each be provided as stand-alone bundles.
  • Components must bring their own, ds-aligned, default styles. This increases flexibility (as components are usable stand-alone) and is achieved by build-time injection of defaults (based on base- and light-theme-variables). There is no need for importing any variables definitions. Instead, add base variables to the plugin config's list (stencil.base.config.ts).
    • Font file contents are exempt from bundling, to allow for browser-caching!
  • To prevent styles from leaking out of your Components (into the global scope), wrap your own styles and @imports in :host.
  • Components depending on Fragments must import them into their :host selector, for proper encapsulation.
    • This use of CSS' @import syntax is invalid, but properly handled by postcss.
    • Consider using custom-property abstractions instead of importing whole fragments!

Configuration

Different Stencil configs are necessary, since we need the following constellations (which are not possible with a single config):

  • local Stencil dev-server: classic dev build
  • Storybook integration: prod build + source maps (dev build does not generate source files in dist/)
  • release build: prod build without source maps

package.json exports should be generated along with the Stencil build (for new components).

Development

Use the start:dev script to start Stencil's dev server.
(start will be called from the Storybook sibling package and will only run a (watching) production build).

Building

To build the components (and styles) for production, run the build script. This will also sync changes to the wrapper projects.

pnpm run build

Creating New Components

Always use the lmvz- prefix when creating new components!

pnpm run @stencil/core generate lmvz-[component name]

Testing

To run the unit tests for the components, run:

npm test

Integration Testing

Since components can be integrated in various ways, always test integrations:

  • Stencil dev mode and preview (see package scripts).
  • With the Storybook package.
  • Angular, React, ... wrappers

E2E

TODOs

  • Current Playwright integration is broken or will break Jest integration.
  • Vitest-Browser + Stencil is bleeding edge and needs eval.