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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@cloudey/storm

v0.9.2

Published

Design system and component library for use with Next.js/React. Includes theme primitives, a colour system, base components (Box, Flex), and some useful utilities.

Downloads

59

Readme

Storm

Storm is a design system and component library for use with Next.js. It includes theme primitives, a colour system, base components (Box, Flex), and some useful utilities.

Use with plain React or other frameworks is possible, but not supported.

Built using Emotion, Styled System and TypeScript.

A Storybook of the included components with a full list of exposed props is available at storm.cloudey.dev.

This package is under active development and should not be used in production (yet). Any part of the package can be changed or removed at any time, with no guarantee of backwards compatibility.

Usage with Next.js

This guide assumes that your project is using Next.js, Typescript, has the peer dependencies required by this package installed, and that you have a basic knowledge of React and Next.js.

Basic setup

This package includes a theme specification, and some global styles to normalise behaviour across browsers (normalize.css).
To set up the theme and include the global styles for your application, create or modify your pages/_app.tsx file to look something like this:

import { AppProps } from 'next/app'
import * as React from 'react'
import { ThemeProvider } from 'emotion-theming'
import { theme, global } from '@cloudey/storm'
import { Global } from '@emotion/core'

export default function App ({Component, pageProps}: AppProps) {
    return (
        <ThemeProvider theme={theme}>
            <Global styles={global}/>
            <Component {...pageProps}/>
        </ThemeProvider>
    )
}

Using the Box component

The Box components is the basic building block for other, more complex components, inspired by superbox and reflexbox.
You can use the Box component to quickl y create reusable or one-time styled components with Emotion and/or Styled System props.
By default, Box is a div element. You can specify the as prop to use any other element instead.

Example:

import React from 'react'
import { Box } from '@cloudey/storm'

export default function Home () {
    return (
        <Box bg={'red'} p={4}>
            <Box bg={'blue'} p={4} m={2} fontWeight={'bold'}>
                This div has a blue background, a scale 4 (16px) padding, a scale 2 (8px) margin, and bold text.
            </Box>
            <Box as={'p'} fontSize={'xl'}>
                This is an HTML 'p' element with extra large text.
            </Box>
        </Box>
    )
}

Using the Flex component

The Flex component is a simple Box component with a display: flex attribute. It exposes the same props and is used exactly like a Box, including the as prop.

Using the Grid component

The Grid component is a simple Box component with a display: grid attribute. It exposes the same props and is used exactly like a Box, including the as prop. You can specify the grid layout with the usual props (gridTemplateRows, etc.).
Variants for predefined grid layouts and shorthand props will be added in the future.

Extending components

To extend the Box component to create your own components, use the styled function provided by @emotion/styled. Read more here.

Using a custom theme

You can easily override specific theme keys and even replace the entire included theme. Simply provide your own theme to the ThemeProvider in pages/_app.ts. All components will automatically use the provided theme.
Make sure your custom theme follows the Styled System theme specification.

Examples

An example boilerplate project using Next.js and this library is available here: next-base.

Legal stuff

Licensed under MIT, provided in the LICENSE file.
Created by Cloudey.
Cloudey® is a registered trademark of Cloudey IT Ltd.