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

@designtools/cascade

v0.1.4

Published

CSS layout property icons. 15x15 SVG, React components, tree-shakeable.

Readme

@designtools/cascade

Hand-crafted icons for 29 CSS properties and their values. Made for design tools that speak code.

React components and raw SVGs. Every icon fits a 15x15 pixel grid with crisp edges at 1x resolution.

Brought to you by flett.cc

Install

npm install @designtools/cascade

Usage

import { DisplayFlex, PaddingTop, FlexDirectionRow } from "@designtools/cascade";

function App() {
  return (
    <div>
      <DisplayFlex />
      <PaddingTop />
      <FlexDirectionRow />
    </div>
  );
}

Props

Every icon component accepts the following props along with all standard SVG attributes (SVGAttributes<SVGSVGElement>):

| Prop | Type | Default | Description | |------|------|---------|-------------| | color | string | currentColor | Icon colour. Inherits from parent text colour by default. | | solid | boolean | false | Render at full opacity (strips duotone fading). No effect on non-duotone icons. | | width | number \| string | 15 | Icon width. Use multiples of 15 for pixel-perfect rendering. | | height | number \| string | 15 | Icon height. Use multiples of 15 for pixel-perfect rendering. |

<DisplayFlex color="#6366f1" />
<DisplayFlex solid />
<DisplayFlex width={30} height={30} />

Any standard SVG attribute (e.g. className, style, aria-hidden) can also be passed directly.

Accessibility

Icons ship without aria-hidden so consumers can decide per use case.

Decorative (most common) — add aria-hidden="true":

<label>
  <DisplayFlex aria-hidden="true" />
  Flex
</label>

Standalone/meaningful — use aria-label:

<button aria-label="Set display to flex">
  <DisplayFlex aria-hidden="true" />
</button>

Raw SVGs

Static .svg files are included in the svg/ directory for use outside React.

Metadata

The package exports a metadata array mapping CSS properties/values to icon names:

import { metadata } from "@designtools/cascade";

// Each entry: { property: string, value: string | null, icon: string }
metadata.forEach((entry) => {
  console.log(`${entry.property}: ${entry.value} → ${entry.icon}`);
});

Use this to build icon pickers, documentation, or editor integrations programmatically.

Categories

| Category | Icons | Examples | |----------|-------|---------| | Display | 8 | DisplayBlock, DisplayFlex, DisplayGrid, DisplayNone | | Flex direction | 4 | FlexDirectionRow, FlexDirectionColumn | | Flex wrap | 3 | FlexWrapWrap, FlexWrapNowrap | | Flex grow/shrink | 2 | FlexGrow, FlexShrink | | Justify content | 6 | JustifyContentCenter, JustifyContentSpaceBetween | | Align items | 7 | AlignItemsCenter, AlignItemsStretch | | Align self | 8 | AlignSelfCenter, AlignSelfStretch | | Align content | 9 | AlignContentCenter, AlignContentSpaceBetween | | Position | 5 | PositionAbsolute, PositionSticky | | Padding | 5 | PaddingAll, PaddingTop | | Margin | 5 | MarginAll, MarginTop | | Gap | 2 | GapColumn, GapRow | | Size | 2 | SizeHorizontal, SizeVertical | | Axis | 2 | AxisX, AxisY | | Border radius | 5 | BorderRadiusAll, BorderRadiusTopLeft | | Border style/width | 2 | BorderStyle, BorderWidth | | Overflow | 4 | OverflowVisible, OverflowScroll | | Text align | 4 | TextAlignLeft, TextAlignCenter | | Text decoration | 3 | TextDecorationUnderline, TextDecorationNone | | Text transform | 3 | TextTransformUppercase, TextTransformCapitalize | | Typography | 5 | FontFamily, FontSize, FontWeight, LineHeight, LetterSpacing | | Opacity | 1 | Opacity | | Box shadow | 1 | BoxShadow |

Compatibility

The package ships both ESM (.mjs) and CJS (.cjs) bundles with full TypeScript declarations. It works out of the box with any modern bundler or runtime:

| Format | Entry point | Used by | |--------|-------------|---------| | ESM | dist/index.mjs | Vite, Next.js, webpack 5+, esbuild | | CJS | dist/index.cjs | Node.js require(), older bundlers | | Types | dist/index.d.ts | TypeScript |

The exports map in package.json ensures the correct format is resolved automatically. The package is marked sideEffects: false, so importing a single icon will not bundle the rest.

Requires React 18+ as a peer dependency.

Licence

MIT. Glyph paths derived from Inter (OFL-1.1).