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

@typecad/ui

v1.0.0-alpha.22

Published

TypeCAD UI authoring library — HTML/CSS-driven graphics for microcontrollers

Readme

@typecad/ui

Build hardware interfaces in HTML and CSS. Ship them as C++.

@typecad/ui is the display toolkit of typeCAD/hal: write your microcontroller's screen the way you'd write a web page, and the toolchain compiles it to C++ that renders directly on the display — no browser, no DOM, no CSS engine on the device. Everything is resolved at build time.

Why

Graphics firmware usually means hand-positioned draw calls and pixel math, rebuilt from scratch for every panel. But you already know a layout language: HTML and CSS. Write markup and styles, get live data on screen with plain bindings, and see it all in your browser before flashing — the same markup then runs on the real display.

Quick start

Inside a typeCAD/hal project, wire up a display with the integration wizard:

npx @typecad/ui --config

It asks which panel you have, how it's wired, and whether there's touch — then writes the display setup into your config for you.

Create src/app.ui:

<script>
  import { ui } from '@typecad/ui';

  ui.mount(screen, { display: 'ili9341', bus: 'SPI', cs: 5, dc: 21, rst: 22 });

  export const count = ui.signal(0);

  export function incrementTaps() {
    count.set(count() + 1);
  }
</script>

<style>
  #tapBtn {
    background: #3399ff;
    border: 2px solid #1a73e8;
    border-radius: 8;
  }
</style>

<screen id="counter" style="background: #ffffff">
  <text id="label">taps: {count}</text>
  <button id="tapBtn" on:click={incrementTaps}>tap me</button>
</screen>

Preview it in your browser while you iterate:

typecad-hal preview

Then build and flash like any typeCAD/hal firmware:

npm run upload

What you get

  • HTML and CSS, compiled. A substantial subset of CSS — layout, flex, colors, borders, shadows, transitions — resolved at build time into retained-mode rendering. Nothing is interpreted on the device.
  • Reactive bindings. {count} in markup stays live: signals update the screen when they change, and user input writes back through bind:.
  • Touch and input. Buttons, sliders, checkboxes, text input — with resistive and capacitive touch controllers supported out of the box.
  • Browser preview. The same UI runs in a local preview server, so most iteration happens with no hardware attached.
  • Themes and a component kit. Pick a theme, or start from a shadcn-style component gallery and own the code.
  • Real panels. ILI9341 and ST7796S SPI TFTs, SSD1309 OLED, custom drivers, and a desktop SDL target — wired with the wizard.

Learn more

  • typeCAD — documentation, CSS support details, and element reference
  • @typecad/hal — the product this plugs into
  • GitHub — source and demos

License

Apache-2.0