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

@texturehq/edges

v2.4.6

Published

A shared component library for Texture

Readme

Edges

A shared component library for Texture

Installation

yarn add @texturehq/edges

Usage

CSS Imports (Required)

Important: Import the CSS files in this exact order for proper functionality:

@import "@texturehq/edges/theme.css";
@import "@texturehq/edges/styles.css";
@import "tailwindcss";

This order is crucial because:

  1. The theme CSS defines custom color variables and design tokens
  2. The styles CSS provides component-specific styles
  3. Tailwind CSS needs to be imported last to properly process the custom theme

Font loading

Edges ships font-family variables and typography role tokens, but it does not fetch webfonts for consumers. Load the font files at your app boundary, then map those loaded faces into the Edges variables.

Canonical font-family variables:

--font-family-brand: "Rethink Sans", -apple-system, BlinkMacSystemFont, sans-serif;
--font-family-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
--font-family-mono: "Geist Mono", "JetBrains Mono", "SF Mono", "Menlo", monospace;
--font-family-agent: "Source Serif 4", Charter, Georgia, serif;

For Next apps, prefer next/font/google and wire the generated variables into Edges:

import { Geist_Mono, Inter, Rethink_Sans, Source_Serif_4 } from "next/font/google";

const inter = Inter({ subsets: ["latin"], variable: "--font-inter", display: "swap" });
const rethinkSans = Rethink_Sans({ subsets: ["latin"], variable: "--font-rethink-sans", display: "swap" });
const geistMono = Geist_Mono({ subsets: ["latin"], variable: "--font-geist-mono", display: "swap" });
const sourceSerif = Source_Serif_4({
  subsets: ["latin"],
  weight: "variable",
  variable: "--font-source-serif-4",
  display: "swap",
  axes: ["opsz"],
});

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html className={`${inter.variable} ${rethinkSans.variable} ${geistMono.variable} ${sourceSerif.variable}`}>
      <body>{children}</body>
    </html>
  );
}
:root {
  --font-family-brand: var(--font-rethink-sans), "Rethink Sans", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-family-sans: var(--font-inter), "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-family-mono: var(--font-geist-mono), "Geist Mono", "JetBrains Mono", "SF Mono", Menlo, monospace;
  --font-family-agent: var(--font-source-serif-4), "Source Serif 4", Charter, Georgia, serif;
}

Components

Import and use components as needed:

import { Button, TextField, Card } from '@texturehq/edges';

function MyComponent() {
  return (
    <Card>
      <TextField label="Name" />
      <Button>Submit</Button>
    </Card>
  );
}

Color System

The package includes a comprehensive color system from @texturehq/edges-tokens, exposed through src/theme.css. All custom colors are automatically available as utility classes.

Using Custom Colors

Your custom colors are available as utility classes:

// Brand colors
<div className="bg-brand-primary text-text-inverse">Brand content</div>

// Font colors
<div className="text-text-primary">Primary editorial text</div>
<div className="text-text-secondary">Supporting text, descriptions, and metadata</div>
<div className="text-text-disabled">Disabled or placeholder text</div>

// Device state colors
<div className="bg-device-charging-background border-device-charging-border">
  Charging device
</div>

// Feedback colors
<div className="bg-feedback-success-background text-feedback-success-text">
  Success message
</div>

Available Color Categories

  • Text colors: text-primary, text-secondary, text-inverse, text-disabled
  • Brand/action colors: action-brand-*, action-default-*
  • Device states: device-charging-*, device-heat-*, device-cool-*, etc.
  • Feedback colors: feedback-success-*, feedback-error-*, feedback-warning-*, feedback-info-*
  • Standard color scales: All Tailwind color scales (red, blue, green, etc.)

Development

Build

yarn build

Development Server

yarn dev