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

@bradleyhodges/swiss

v5.1.3

Published

Powerful utility functions for Next.js, Vercel, and React - your Swiss Army Knife for Next development.

Readme

TailwindCSS Utilities

This package provides a set of utilities for working with TailwindCSS.

cn (Class Names)

This utility function is used to concatenate class names together. The utility will clean up the class names, order them per TailwindCSS guidelines, and automatically resolve conflicting classes. It can accept an array of class names or a string of class names, and will resolve them accordingly without fuss.

import { cn } from '@advena/swiss/tailwind';

return (
    <div className={cn('text-center text-blue-500 text-center text-red-500')}>
        Hello World
    </div>
);

// Output: <div className="text-red-500 text-center">Hello World</div>

return (
    <div className={cn('text-center text-blue-500 text-center text-red-500', 'text-left font-bold')}>
        Hello World
    </div>
);

// Output: <div className="font-bold text-red-500 text-center">Hello World</div>

hexToRgb

This utility function is used to convert a hex color to an RGB color. It can accept a hex color string with or without the # symbol.

import { hexToRgb } from '@advena/swiss/tailwind';

hexToRgb('#ff0000'); // { r: 255, g: 0, b: 0 }

String Utilities

This package provides a set of utilities for working with strings.

Capitalize

Capitalizes all characters in a string.

import { capitalize } from '@advena/swiss/string';

capitalize('hello world'); // HELLO WORLD

Lowercase

Converts all characters in a string to lowercase.

import { lowercase } from '@advena/swiss/string';

lowercase('HELLO WORLD'); // hello world

Proper Case

Converts the first character of each word in a string to uppercase.

import { properCase } from '@advena/swiss/string';

properCase('hello world'); // Hello World

Capitalize First

Converts the first character of a string to uppercase.

import { capitalizeFirst } from '@advena/swiss/string';

capitalizeFirst('hello world'); // Hello world

DateTime Utilities

This package provides a set of utilities for working with dates and times.

dayjs

This utility is a wrapper around the dayjs library. It provides a set of functions for working with dates and times.

The dayjs export initializes and configures a dayjs instance with automatic localization and timezone support. Extensive documentation is available on the dayjs website.

import { dayjs } from '@advena/swiss/datetime';

dayjs().format('YYYY-MM-DD'); // 2022-01-01

HIBP (Have I Been Pwned) Utilities

This package provides a set of utilities for working with the Have I Been Pwned API.

checkPassword

This utility securely checks if a password has been compromised in a data breach. It uses the Have I Been Pwned API to check the password against a database of known breaches.

[!IMPORTANT] This utility uses swr. It can only be imported on the client - it will not work with Next.js SSR/SSG and will generate errors.

import { checkPassword } from '@advena/swiss/hibp';

checkPassword('password123').then((result) => {
    console.log(result); // { count: 123456, isCompromised: true }
});

[!NOTE] This utility does not send the password to the API. Instead, it sends the first 5 characters of a SHA-1 hash of the password (k-anonymity) to the API. The API then returns a list of hashes that match the prefix, and the client checks if the full hash is in the list. No portion of the plaintext password ever leaves the client.