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

@uxfront/ui

v0.5.0

Published

Vue components for the uxfront.com family of homepages: a scroll-driven WebGL scene with pinned chapters, a HUD, a header and a finale, in one look.

Readme

@uxfront/ui

Vue components for the uxfront.com family of homepages. With them, a product site gets the same look and feel as uxfront.com. That includes the scroll-driven WebGL scene of @uxfront/scene, chapters that step through their details as they scroll by, the HUD, the header, the finale and the error page.

In a Nuxt app, extend @uxfront/layer-ui instead of installing this package: the layer registers the components and composables, self-hosts the fonts and keeps the first paint free of scripts.

Install

pnpm add @uxfront/ui @uxfront/scene

The package ships Vue single-file components as source, so each component's styles compile with the app and can be inlined into the server-rendered HTML. It needs a Vite build with @vitejs/plugin-vue. Outside Nuxt (VitePress, plain Vite), let Vite compile it:

// vite.config.ts
export default defineConfig({
  optimizeDeps: { exclude: ["@uxfront/ui"] },
  ssr: { noExternal: ["@uxfront/ui"] },
});

A page

<script setup lang="ts">
import { corridor, ink, monolith } from "@uxfront/scene/formations";

// One formation per section: the hero, each chapter, the finale.
const scene = [
  monolith({ label: "Foundation" }),
  ink({ label: "Inkline" }),
  corridor({ label: "Build" }),
];
</script>

<template>
  <UxSite :scene="scene" skip-to="#inkline">
    <template #header>
      <UxHeader brand="Inkline" :nav="[{ href: '#inkline', label: 'Library', index: '01' }]" />
    </template>

    <UxHero kicker="Inkline" title="The UI library for every framework" scroll-href="#inkline">
      <template #lines>
        <UxHeroLine>The UI library</UxHeroLine>
        <UxHeroLine>for <em class="ux-serif">every</em> framework</UxHeroLine>
      </template>
      <template #lead>Perfectly designed components, in all seven frameworks.</template>
    </UxHero>

    <UxChapter
      id="inkline"
      index="01"
      role="Library"
      title="Inkline"
      href="https://inkline.io"
      :steps="2"
    >
      <template #lead>Built on the foundation.</template>
      <UxSpec
        :items="[
          { term: 'Built with', detail: 'Unframework' },
          { term: 'Ships to', detail: 'Seven frameworks' },
        ]"
      />
    </UxChapter>

    <UxFinale
      kicker="Inkline"
      :cards="[{ href: 'https://inkline.io', name: 'Inkline', meta: '01 · UI library' }]"
    >
      <template #title>Build on the <em class="ux-serif">foundation</em>.</template>
      <template #footer><span>© 2026 Inkline</span></template>
    </UxFinale>
  </UxSite>
</template>

apps/web/app/pages/index.vue is the full uxfront.com homepage.

Components

| Component | Role | | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | UxSite | The page root. Takes the scene (one formation per section), starts it on mount and brings the base styles. Slots: header, hud (defaults to UxHud), anchors, controls, fallback and the sections. | | UxHero | The first section: kicker (with an optional badge, like "New"), a title in UxHeroLines (with title for assistive technology), a lead, an index of sections for small screens and a scroll cue. | | UxChapter | A full-screen section: eyebrow (index, role), title, lead slot, details and a link. align="end" puts the copy on the right, valign="end" at the bottom, steps highlights details one by one. | | UxFinale | The closing section: a large mark slot, kicker, title, lead, an actions slot (buttons), a grid of link cards and a footer. | | UxPillars, UxChips, UxTraits, UxSpec | Chapter details that light up one after another (set steps on the chapter to their count). | | UxHeader | Brand (mark slot, UxFrontMark by default, empty for none; brand slot to style the name), a byline slot beside it for links like "by UXFront", section nav (marks the one held), an actions slot for extra links and a GitHub link (with an optional githubStars count). | | UxHud | Particle count and fps, the chapter counter and progress, and the Motion toggle. | | UxAnchor | A label pinned to a formation anchor, like plates:0: callout, tag or button (put buttons in the controls slot). | | UxPillLink, UxErrorPage, icons | The scrambled pill link, a full error page, and UxArrowIcon, UxGithubIcon, UxStarIcon, UxFrameworkLogo, UxFrontMark. |

Also exported: useExperience() (the scene's reactive state inside a UxSite), the v-scramble directive, FRAMEWORKS and their logos, and uxRenderHookKey.

Styles

Everything is scoped to pages that render a UxSite (or UxErrorPage), so the components can share an app with other pages. Tokens and the page base sit on :root:has(.ux-site). Utilities are prefixed (.ux-mono, .ux-serif, .ux-sr-only), and component styles are scoped.

The tokens are the shared look, so sites shouldn't need to change them. If one must, override it with the same selector:

:root:has(.ux-site) {
  --ux-fg: #f2f2f5;
  --ux-spectrum-0: #ff4a5a; /* …to 6: the prism's rails and the chips' tones */
}

Keep --ux-bg at #050507: the scene's canvas paints that colour itself.

The typefaces are Geist, Geist Mono and Instrument Serif (--font-ux-sans, --font-ux-mono, --font-ux-serif). Without Nuxt, load them yourself.