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

@materialwebunofficial/md3e-web

v1.0.2

Published

Unofficial Web Adaptation of Material Design 3 Expressive (M3 Expressive) - Web Components, Design Tokens, Spring Physics, and HCT Dynamic Theme Engine

Readme

MD3E Web (Unofficial) — Material Design 3 Expressive for Web

Unofficial Hobby Project & Disclaimer: This project is an independent open-source hobby implementation and is not affiliated with, sponsored by, or endorsed by Google LLC. Vibe coded with Hermes Hy3 and Antigravity Gemini 3.7 Flash.

It is provided "as-is" without any warranty or commitment to ongoing support or maintenance. Use at your own discretion.


🌟 Overview

MD3E Web (Unofficial) (@materialwebunofficial/md3e-web) is a zero-dependency, production-ready web implementation of Google's Material Design 3 Expressive (M3 Expressive) design system.

Built strictly on native W3C web standards (Custom Elements v1, Shadow DOM v1, CSS Custom Properties, and ES Modules), it brings Android Jetpack Compose 1.4+ expressive spring physics, 8-shape morphing vector loading indicators, CAM16-based dynamic HCT tonal color schemes, and 36 expressive components to any web project or framework with zero runtime overhead.

Live Demo


⚡ Integration Guide

Whether you are building a simple HTML landing page, WordPress/PHP site, or a modern React/Vue/Next.js application, integrating MD3E Web is straightforward:


1. Direct CDN Drop-in (Zero-Build CDN)

No build tools, bundlers, or Node.js required. Just add these 2 lines into the <head> of any HTML file:

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

  <!-- 1. CSS Design Tokens & Material Symbols (CDN) -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@materialwebunofficial/md3e-web/dist/tokens.min.css">

  <!-- 2. Web Components Suite (Registers all 36 Custom Elements automatically) -->
  <script type="module" src="https://cdn.jsdelivr.net/npm/@materialwebunofficial/md3e-web/dist/md3-expressive.esm.js"></script>
</head>
<body>

  <!-- Ready to use immediately! -->
  <md-button variant="filled">Filled Button</md-button>
  <md-button variant="tonal">Tonal Button</md-button>
  <md-slider value="75" labeled></md-slider>
  <md-loading-indicator shape="morph" size="48"></md-loading-indicator>

</body>
</html>

Alternative CDN: You can also use unpkg (https://unpkg.com/@materialwebunofficial/md3e-web/...) or esm.sh (https://esm.sh/@materialwebunofficial/md3e-web).


2. Modern Package Manager (NPM / Vite / Next.js / Astro / Vue / React)

Install via npm or yarn:

npm install @materialwebunofficial/md3e-web

Global Import (In your app's root / main.js / _app.tsx):

// 1. Import Design Tokens (Colors, Typography, Shapes, Motion, Icons)
import '@materialwebunofficial/md3e-web/tokens';

// 2. Import & Register All 36 Components
import '@materialwebunofficial/md3e-web';

Selective / Tree-shakeable Import:

import '@materialwebunofficial/md3e-web/tokens/colors';
import '@materialwebunofficial/md3e-web/tokens/shapes';
import { MdButton, MdSlider, MdDatePicker } from '@materialwebunofficial/md3e-web';

3. Framework Integration (React / Next.js, Vue 3, Svelte, Angular)

Because MD3E components are standard W3C Custom Elements, they work natively across all modern frontend frameworks:

React / Next.js:

import '@materialwebunofficial/md3e-web/tokens';
import '@materialwebunofficial/md3e-web';

export default function MyPage() {
  return (
    <div className="container">
      <md-button variant="filled" onClick={() => alert('Clicked!')}>
        Next.js + MD3E
      </md-button>
    </div>
  );
}

Vue 3:

<template>
  <md-button variant="elevated" @click="handleAction">Vue 3 Expressive</md-button>
  <md-slider v-model="sliderVal" labeled></md-slider>
</template>

<script setup>
import '@materialwebunofficial/md3e-web/tokens';
import '@materialwebunofficial/md3e-web';
import { ref } from 'vue';
const sliderVal = ref(50);
</script>

✨ Key Features & Architecture

  • 🚀 Zero Runtime Dependencies: No external framework required. 100% pure native browser Custom Elements.
  • 🛡️ Shadow DOM Encapsulation: Zero CSS style collision; completely isolated component scopes.
  • 🎨 Dynamic HCT (Hue-Chroma-Tone) Color Engine: Real-time CAM16 / CIELAB tonal palette generator with dynamic runtime CSS token injection.
  • Spring Physics Motion Engine: Damped harmonic oscillator differential solver ($m \cdot x'' + c \cdot x' + k \cdot x = 0$) matching Compose MotionScheme.expressive().
  • 📋 Form-Associated Custom Elements (FACE): Seamless integration with native HTML <form> submission, FormData, and validation.
  • Accessible & Secure: Built-in WAI-ARIA roles, full keyboard navigation (Enter/Space/Arrows), and strict XSS sanitization safeguards.
  • 📱 36 Expressive Components: Date/Time Pickers, Bottom/Side Sheets, Wavy Progress Bars, Morphing Loading Indicators, Segmented Buttons, FAB Menus, etc.

🎨 Dynamic HCT Theming (JavaScript API)

Generate harmonic Material You 3 tonal color palettes on the fly from any hex color:

import { applyDynamicTheme } from '@materialwebunofficial/md3e-web/theme';

// Generates 5 tonal palettes in real-time from any seed color and updates CSS variables
applyDynamicTheme('#6750A4', false, 'expressive'); // Seed Hex, isDark, schemeVariant

⚡ Spring Physics Animation (JavaScript API)

Generate smooth Compose-fidelity spring keyframes via Web Animations API:

import { SpringPhysics } from '@materialwebunofficial/md3e-web/motion';

const { keyframes, duration } = SpringPhysics.generateKeyframes({
  from: 1.0,
  to: 0.92,
  dampingRatio: 0.7,
  stiffness: 450
});

element.animate(keyframes, { duration, fill: 'forwards' });

🧩 Complete Component Suite (36 Web Components)

| Category | Elements | | :--- | :--- | | Actions | <md-button>, <md-split-button>, <md-icon-button>, <md-fab>, <md-fab-menu>, <md-segmented-button> | | Inputs & Selection | <md-checkbox>, <md-radio-button>, <md-switch>, <md-slider>, <md-text-field>, <md-search-bar> | | Pickers | <md-date-picker> (Docked / Modal / Range), <md-time-picker> (Dial / Input / 24h) | | Navigation | <md-top-app-bar>, <md-bottom-app-bar>, <md-navigation-bar>, <md-navigation-drawer>, <md-navigation-rail>, <md-tabs> | | Feedback | <md-progress-indicator> (Linear / Circular / Wavy), <md-loading-indicator> (8 Shapes + Morph), <md-snackbar>, <md-tooltip>, <md-badge>, <md-dialog> | | Containment | <md-card>, <md-carousel>, <md-bottom-sheet>, <md-side-sheet>, <md-list>, <md-menu>, <md-divider>, <md-chip> | | Layout & Theme | <md-toolbar>, <md-theme> |


🧪 Testing

Run the full automated test suite:

npm test

⚖️ Trademark, Disclaimer & License

"Material Design", "Material You", and "Material Design 3" are trademarks of Google LLC.
This project is an independent, unofficial hobby web adaptation. It is not affiliated with, endorsed by, or sponsored by Google LLC.

Disclaimer: This is a personal hobby project provided without warranty of any kind. The author assumes no liability for its use and does not guarantee ongoing maintenance, updates, or technical support.

This project is licensed under the Apache License 2.0.