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

@viasat/beam-web-components

v2.1.1

Published

Framework-agnostic web components for the Beam Design System built with Lit, compatible with Angular, Vue, Svelte, and vanilla JavaScript

Readme

🎨 Beam Web Component

Beam web components is a library of web components for the Beam Design System. These components are built using Lit (a web components library created by Google) and are designed to be used in any web project. 🌎

Our library includes support for various formats and stacks to suit different needs, such as:

Frameworks

  • Vanilla JS support: Incorporate our components in Vanilla JS projects, providing a versatile and adaptable solution for your project.
  • Angular support: Utilize our components in Angular projects, ensuring compatibility with your existing stack.

Importing

  • Importing from NPM: Easily import and utilize our package directly from NPM, ensuring a seamless integration into your project.
  • Importing locally: Download and use our package locally, providing a flexible and customizable approach for your project.

🔖 Table of Contents

  1. ⬇️ Installation
  2. 🧠 VS Code IntelliSense Setup
  3. 🛠️ Usage
  4. 📚 Documentation

⬇️ Installation

📦 NPM

The easiest and most straightforward way to install @viasat/beam-web-components is via NPM.

1. Install the package

npm install @viasat/beam-web-components
yarn add @viasat/beam-web-components
pnpm add @viasat/beam-web-components

2. Import and use the components

ℹ️ Import the fonts and tokens at the root of your application and import each component per page to ensure bundlers like webpack and rollup can optimally code split and tree shake the components.

// index.js
import '@viasat/beam-tokens/styles.css';
import '@viasat/beam-fonts/styles.css';

// my-page.js
import '@viasat/beam-web-components/Alert';

💻 Local Installation (Without npm)

For airgapped (no internet access) environments or when you need to vendor the files directly without a package manager, you can use the pre-bundled web components build.

⚠️ Note: This approach is for special scenarios only. If you have npm/artifactory access, use the NPM installation method instead - it's simpler and handles dependencies automatically.

1. Download the bundled package

Contact your Beam administrator or download directly from npm registry:

npm pack @viasat/beam-web-components

This downloads the package as beam-web-components-[VERSION].tgz. The bundled version includes all dependencies (lit, floating-ui, etc.) pre-compiled into the output.

2. Extract web-components to your project

mkdir -p vendor/@viasat/beam-web-components
tar -xvf beam-web-components-[VERSION].tgz -C vendor/@viasat/beam-web-components/ --strip-components=1

The bundled components are in the local/ directory.

3. Download and extract tokens and fonts

# Download and extract tokens
npm pack @viasat/beam-tokens
mkdir -p vendor/@viasat/beam-tokens
tar -xvf beam-tokens-[VERSION].tgz -C vendor/@viasat/beam-tokens/ --strip-components=1

# Download and extract fonts
npm pack @viasat/beam-fonts
mkdir -p vendor/@viasat/beam-fonts
tar -xvf beam-fonts-[VERSION].tgz -C vendor/@viasat/beam-fonts/ --strip-components=1

Expected Directory Structure:

vendor/
└── @viasat/
    ├── beam-web-components/
    │   ├── local/          # Bundled components (use these)
    │   │   ├── Alert/
    │   │   │   └── Alert.js
    │   │   ├── Button/
    │   │   ├── Badge/
    │   │   ├── chunks/     # Shared code chunks
    │   │   └── ...
    │   └── package.json
    ├── tokens/
    │   └── tokens.css      # Design tokens CSS
    └── fonts/
        └── styles.css      # Font styles

4. Use in your HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Web Page</title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <!-- Import Tokens -->
    <link rel="stylesheet" href="vendor/@viasat/beam-tokens/tokens.css" />

    <!-- Import Fonts -->
    <link rel="stylesheet" href="vendor/@viasat/beam-fonts/styles.css" />
  </head>
  <body>
    <!-- Use the component -->
    <bm-alert body="My alert message" header="Alert Title" dismissible></bm-alert>

    <!-- Import component from local build (place at end of body) -->
    <script
      type="module"
      src="vendor/@viasat/beam-web-components/local/Alert/Alert.js"
    ></script>
  </body>
</html>

Dependencies

The bundled local build includes all JavaScript dependencies pre-compiled:

Bundled Dependencies (included in the local build):

  • lit - Web components framework
  • @lit/context - Context API for Lit
  • @floating-ui/dom & @floating-ui/utils - Positioning utilities
  • clsx - Class name utility
  • @viasat/beam-shared, @viasat/beam-styles, @viasat/beam-icons - Beam internal packages

Required Packages (must be downloaded separately - see step 3):

  • @viasat/beam-tokens - Design tokens (CSS variables)
  • @viasat/beam-fonts - Typography assets

🧠 VS Code IntelliSense Setup

Enable intelligent autocomplete in VS Code for Beam web components, including component names, attributes, and their valid values.

1. Configure VS Code Settings

Add the custom data files to your workspace settings (.vscode/settings.json):

For NPM installations:

{
  "html.customData": [
    "node_modules/@viasat/beam-web-components/vscode.html-custom-data.json"
  ],
  "css.customData": [
    "node_modules/@viasat/beam-web-components/vscode.css-custom-data.json"
  ]
}

For local/vendored installations:

{
  "html.customData": [
    "vendor/@viasat/beam-web-components/vscode.html-custom-data.json"
  ],
  "css.customData": [
    "vendor/@viasat/beam-web-components/vscode.css-custom-data.json"
  ]
}

2. Reload VS Code

Reload your VS Code window to activate IntelliSense:

  • Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)
  • Type "Reload Window" and press Enter

What You Get

Component Autocomplete:

  • Type <bm- to see all available Beam components
  • See component descriptions while typing

Attribute Suggestions:

  • Get autocomplete for all component attributes
  • See valid values for each attribute (e.g., appearance="infoPrimary | infoSecondary | positive | warning | negative")
  • View attribute descriptions and types

Updating IntelliSense

When you upgrade @viasat/beam-web-components, the custom data files are automatically updated in node_modules. Simply reload VS Code to pick up the latest component definitions:

  • Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)
  • Type "Reload Window" and press Enter

🛠️ Usage

Explore our component library with live examples and API documentation in our Storybook.

Component Attributes & Properties

Web components accept attributes in HTML and properties via JavaScript:

<!-- Using attributes -->
<bm-button appearance="primary" size="lg" disabled>Button Text</bm-button>

<script type="module">
  import '@viasat/beam-web-components/Button';

  // Using properties
  const button = document.querySelector('bm-button');
  button.appearance = 'secondary';
  button.disabled = false;
</script>

Component Events

Listen for custom events using standard DOM event listeners:

import '@viasat/beam-web-components/Alert';

const alert = document.querySelector('bm-alert');
alert.addEventListener('bm-dismiss', event => {
  console.log('Alert was dismissed');
});

Component Slots

Many components support content slots for flexible composition:

<bm-alert appearance="infoPrimary" dismissible>
  <div slot="header">Custom Alert Header</div>
  <div slot="body">
    <p>This is custom alert content using slots.</p>
    <p>You can add any HTML content here!</p>
  </div>
</bm-alert>

Tree-shaking & Optimization

Import only the components you need for optimal bundle size:

// ✅ Recommended: Import individual components
import '@viasat/beam-web-components/Alert';
import '@viasat/beam-web-components/Button';

// ⚠️ Avoid: Importing the entire library loads ALL components
import '@viasat/beam-web-components';

Framework Integration

Angular

// In your component
import '@viasat/beam-web-components/Button';

// In your template
<bm-button appearance="primary" (click)="handleClick()">
  Angular Button
</bm-button>

ℹ️ For advanced Angular integration including wrappers, two-way binding, and best practices, see the Angular Guide.

Theming

Apply themes using CSS classes on your root element:

<!-- Light theme -->
<div class="bm-light">
  <bm-button>Light Theme Button</bm-button>
</div>

<!-- Dark theme -->
<div class="bm-dark">
  <bm-button>Dark Theme Button</bm-button>
</div>

<!-- Accent theme -->
<div class="bm-light bm-blue">
  <bm-button>Blue Accent Button</bm-button>
</div>

ℹ️ For advanced theming documentation and use cases, see the Theming Guide.

Accessibility

All components are built with accessibility in mind:

  • ARIA Support - Proper ARIA labels and roles
  • Keyboard Navigation - Full keyboard support
  • Screen Reader Support - Semantic markup and announcements
  • Focus Management - Proper focus handling and trapping

Documentation

Storybook

Explore our comprehensive component library with live examples and API documentation:

📖 Beam Web Components Storybook

Component API

Each component includes:

  • Props Documentation - Complete TypeScript definitions
  • Usage Examples - Common patterns and configurations
  • Accessibility Notes - ARIA labels, keyboard navigation, screen reader support
  • Theming Options - Available variants and customization points

Additional Resources