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

@tuwaio/nova-core

v0.5.1

Published

Layer 6 (L6) of the TUWA Ecosystem. Foundational package with styling primitives, CSS variables, base React components, and helper utilities.

Readme

@tuwaio/nova-core

NPM Version License

@tuwaio/nova-core is the UI Core (L6) package of the TUWA Ecosystem design system. It acts as the shared foundation for styling primitives, CSS variable definitions, base React elements, and helper utilities. Fully independent of Web3 logic, it provides the common design boundaries consumed by visual modules like @tuwaio/nova-connect and @tuwaio/nova-transactions to maintain visual consistency across all TUWA interfaces.


🏛️ Core Capabilities

  • 🎨 Design Token System: Declares variables for colors, typography, borders, animations, and spacing, with built-in switching for light and dark modes.
  • 🛠️ Style Merger (cn): An optimized composition utility blending clsx and tailwind-merge to resolve style overrides dynamically without class conflicts.
  • ⚡ Tailwind CSS v4 Native: Configured to map variables into Tailwind's modern engine, allowing arbitrary class declarations.
  • ♿ Base Components & Primitives: Shared layout modules, dialog nodes, overlays, and common utility indicators.
  • 📱 Shared React Hooks: Reusable, performance-optimized hooks for clipboards (useCopyToClipboard) and responsive layouts (useMediaQuery).

💾 Installation

pnpm add @tuwaio/nova-core

CSS Setup

Import the core CSS styles into the entrypoint of your application (e.g., main.css or globals.css):

@import '@tuwaio/nova-core/dist/index.css';

🚀 Usage Guide

1. Tailwind Arbitrary Tokens

Use Nova custom variables directly in components for consistent styling:

export function AccentCard() {
  return (
    <div className="p-6 bg-[var(--tuwa-bg-secondary)] border border-[var(--tuwa-border-primary)] rounded-[var(--tuwa-rounded-corners)]">
      <h3 className="text-[var(--tuwa-text-primary)] font-medium">Core Primitive Card</h3>
      <p className="mt-2 text-[var(--tuwa-text-secondary)] text-sm">Styled using central ecosystem design tokens.</p>
      <button className="mt-4 px-4 py-2 bg-[var(--tuwa-text-accent)] text-[var(--tuwa-text-on-accent)]">Action</button>
    </div>
  );
}

2. Styling Composition (cn)

Blend default styles with external prop overrides cleanly:

import { cn } from '@tuwaio/nova-core';

interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: 'primary' | 'secondary';
}

export function Button({ variant = 'primary', className, ...props }: ButtonProps) {
  return (
    <button
      className={cn(
        'px-4 py-2 font-medium rounded transition-colors',
        variant === 'primary'
          ? 'bg-[var(--tuwa-text-accent)] text-[var(--tuwa-text-on-accent)]'
          : 'bg-[var(--tuwa-standart-button-bg)] text-[var(--tuwa-text-primary)] hover:bg-[var(--tuwa-standart-button-hover)]',
        className,
      )}
      {...props}
    />
  );
}

3. Clipboard copy with useCopyToClipboard

Easily build wallet address display nodes with copying feedback:

import { useCopyToClipboard } from '@tuwaio/nova-core';

export function AddressDisplay({ address }: { address: string }) {
  const [copied, copy] = useCopyToClipboard();

  return (
    <button
      onClick={() => copy(address)}
      className="font-mono text-xs text-[var(--tuwa-text-secondary)] hover:text-[var(--tuwa-text-accent)]"
    >
      {address.slice(0, 6)}...{address.slice(-4)}
      {copied ? ' (Copied ✓)' : ' (Copy)'}
    </button>
  );
}

🎨 Theme Customization

Override default tokens in your global CSS stylesheet to match your brand:

:root {
  /* Customize Brand Accent Colors */
  --tuwa-text-accent: #10b981; /* Emerald-500 */
  --tuwa-text-on-accent: #ffffff;
  --tuwa-rounded-corners: 8px;
}

/* Customize Dark Mode styling */
.dark {
  --tuwa-bg-primary: #050505;
  --tuwa-bg-secondary: #121212;
  --tuwa-border-primary: #222222;
}

🔧 API & Module Architecture

@tuwaio/nova-core exports the following modules and functions:

  • Style Composition: cn.
  • React Hooks: useCopyToClipboard, useMediaQuery.
  • UI Dialog Primitives: Dialog, DialogOverlay, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter.
  • Utility Indicators: StarsBackground, FallbackIcon, GithubFallbackIcon, ChevronArrowWithAnim, ToastCloseButton, ToastValidationError, NetworkIcon, WalletIcon.
  • Formatters: deepMerge, svgToBase64, isTouchDevice, textCenterEllipsis, resolveCssVariable.

📄 License

Licensed under the Apache-2.0 License. See the LICENSE file for details.