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

dwayne-styles

v2.1.1

Published

### Why?

Readme

dwayne-styles

Why?

The plugin is needed for setting styles in a more convenient way than using Style mixin.

Installation

$ npm install --save dwayne-styles

Usage

<script>
  import { Styles } from 'dwayne-styles';
</script>
<!-- User/index.html -->

<!-- provide usual string in the value -->
<div class="user" Styles="visible">
  <span class="name" Styles="common.bigCaption, user.name">
    {globals.user.name}
  </span>
  <!-- you may also provide args instead of value -->
  <span class="birthday" Styles(common.date,user.birthday)>
    {globals.user.birthday}
  </span>
</div>
// User/index.js

import { Block } from 'dwayne';
import html from './index.html';

class User extends Block {
  static html = html;
  static styles = {
    user: {
      name: {
        fontWeight: 'bold',
        fontStyle: 'italic'
      },
      birthday: {
        textTransform: 'uppercase'
      }
    },
    visible: {
      display: js`args.visible ? undefined : 'none'`
    }
  };
}

export default User;
// app/plugins.js

import { Styles } from 'dwayne-styles';

// you can add default values to the mixin
Styles.addCommonStyles({
  common: {
    bigCaption: {
      fontSize: '20px'
    },
    date: {
      textTransform: 'uppercase'
    }
  }
});

API

You may use the mixin in two ways: providing a string as a value which contains styles separated by a comma, spaces or both OR providing mixin args. Note that the value is not watched.

Example:

<div Styles="styles1, prefix1.prefix2.styles2, prefix.styles"/>
<div Styles="styles1  prefix1.prefix2.styles2  prefix.styles"/>
<div Styles(styles1,prefix1.prefix2.styles2,prefix.styles)/>

Each style may be a common style (set by Styles.addCommonStyles) or a style which is set in a static styles property in the block class (which uses the styles mixin). Each style is a path to a styles object. All styles from the mixin are then merged from left to right and applied to the element. If the style value is undefined it's skipped.

Note that you can use js expressions as values (you may use dwayne babel preset or set a pure function which excepts the block as the only parameter). They are watched and each time the result is changed the styles are applied again.

Styles.addCommonStyles(commonStyles)

Deep merges the previous common styles with the new ones.