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

@fudge-me/design-system

v0.1.0

Published

Visual language and UI primitives for the fudge ecosystem

Readme

fudge-design-system

Visual language and UI primitives for the fudge ecosystem. Product-agnostic — no application logic, no backend assumptions, no domain semantics.

Status: v0.1.0-rc.1 — foundation complete.

Consumers

  • fudge-client (Tauri v2 + Svelte 5, desktop)
  • Future web clients
  • Future mobile clients

Stack

Svelte 5 component library. Product repos depend on this; never the reverse.

Shell Model

The target UI is canvas-first:

| Slot | Position | |---|---| | Command bar | Top | | Sidebar | Left | | Canvas | Center | | AI panel | Right | | Status bar | Bottom |

Layout primitives in this repo map directly to these slots.

What It Provides

  • Tokens — three-tier system (raw → semantic → component), exported as --fds-* CSS custom properties. Covers color, spacing, typography, radii, shadows
  • Layout primitives — AppShell, CommandBar, Sidebar, Canvas, AIPanel, StatusBar, Panel
  • Core components — Button, Input, Tooltip, Modal, Command Palette
  • Themes — light/dark switching via ThemeProvider

See ROADMAP.md for future plans (icons, motion, custom themes, platform variants).

What It Excludes

  • Product logic
  • API calls or backend assumptions
  • Workspace, comms, or any domain semantics

Local Development

Run pnpm run package:watch in this repo while developing with fudge-client. See docs/ai/local-dev-fast-path.md for the full workflow and failure modes.

Consumer Import Pattern

Root layout in fudge-client:

<!-- 1. Tokens — import once at app root, establishes all --fds-* custom properties -->
<script>
  import '@fudge-me/design-system/tokens';

  // 2. Theme CSS — both files needed so switching works
  import '@fudge-me/design-system/themes/light.css';
  import '@fudge-me/design-system/themes/dark.css';

  // 3. Components — ThemeProvider, layout, UI primitives
  import { ThemeProvider } from '@fudge-me/design-system/themes';
  import { AppShell, Sidebar, Canvas, AIPanel, CommandBar, StatusBar } from '@fudge-me/design-system/layout';
  import { Button } from '@fudge-me/design-system/components';
</script>

<!-- 4. ThemeProvider sets data-theme on root; consumer handles persistence -->
<ThemeProvider theme="system">
  <AppShell>
    {#snippet commandbar()}<CommandBar>...</CommandBar>{/snippet}
    {#snippet sidebar()}<Sidebar>...</Sidebar>{/snippet}
    {#snippet canvas()}<Canvas>...</Canvas>{/snippet}
    {#snippet aipanel()}<AIPanel>...</AIPanel>{/snippet}
    {#snippet statusbar()}<StatusBar>...</StatusBar>{/snippet}
  </AppShell>
</ThemeProvider>

Per-layer examples

Token cherry-pick (individual CSS file):

<script>
  import '@fudge-me/design-system/tokens/color.css';
</script>

Component import:

<script>
  import { Button } from '@fudge-me/design-system/components';
  import { Modal } from '@fudge-me/design-system/components';
</script>

<Button variant="primary" size="md" onclick={save}>Save</Button>
<Modal open={showDialog} onclose={() => showDialog = false}>
  <p>Content here</p>
</Modal>

Theme usage:

<script>
  import { ThemeProvider } from '@fudge-me/design-system/themes';
</script>

<!-- "system" follows prefers-color-scheme; "light"/"dark" force a theme -->
<ThemeProvider theme="system">
  <slot />
</ThemeProvider>

Consumer Responsibilities

  1. Import tokens once at the app root
  2. Import both theme CSS files so switching works
  3. Wrap app in ThemeProvider — consumer handles persistence
  4. Do not override component tokens with raw tokens
  5. Use subpath exports only — do not import internal DS paths
  6. Use layered entrypoints when CSS is needed (root re-export excludes tokens)
  7. Component token overrides use direct child combinators (>) to prevent leaking

Docs

| File | Purpose | |---|---| | docs/ai/contracts.md | Repo boundaries and responsibilities | | docs/ai/prd.json | Task definitions | | docs/ai/decisions.md | Architectural decisions | | ARCHITECTURE.md | Technical architecture and design decisions | | ROADMAP.md | Versioned delivery plan | | docs/ai/css-variable-scoping.md | CSS selector-tier scoping rules and per-zone token table | | docs/ai/component-theming-boundaries.md | Component theming contract with allowed/forbidden patterns | | docs/ai/local-dev-fast-path.md | Dev workflow: package:watch, Vite config, failure modes | | Ecosystem contract | Cross-repo consumption contract and public API surface |