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

vcss

v0.1.1

Published

virtual css

Downloads

16

Readme

x-css

Enables programmatic and expressive declaration of stylesheets.

How to use

import Sheet from 'x-css';

let css = new Sheet();
let width = 120;
let fade = css.anim({
  from: { opacity: 0 },
  to: { opacity: 1 }
})

css.add('div > p', {
  'width': width, // casted to '10px'
  'font-weight': 'bold',
  'animation': `${fade} 1s ease-in`
});

API

The main module exports the following:

  • Sheet (default)
  • Block
  • Scope
  • Media
  • Animation
  • Ruleset

Sheet()

Initializes a new Sheet, which is the main scope under which other scopes and ruleset blocks are inserted.

Extends Scope.

Sheet.anim(String name, Object frames[, Boolean withPrefixes])

Creates a new Animation scope with the given frames, and appends it to the current scope.

By default, when the Animation object is serialized, it'll include -o, -webkit and -moz prefixes. Passing false to withPrefixes will disable this.

Returns the Animation object.

Sheet.media(String params)

Creates a new Media scope with the given frames, and appends it to the current scope.

Returns the Media object.

Media(String params)

Accepts params which is a string like only screen and (orientation: portrait).

Extends Scope.

Scope()

Initializes a new Scope object.

Extends Block.

Scope.add(Block blk)

Appends the Block identified by blk to the scope. Valid Block objects are for example Ruleset or another Scope.

Scope.add(String sel, Object decs)

Creates and appends a Ruleset for the selector sel and declarations decs.

scope.add('img', {
  border: 'none'
});

Scope.remove(Block block)

Removes the child of the main scope identified by the given block.

Ruleset(String sel, Object decs)

Creates a ruleset identified by selector sel and declaration pairs decs.

Extends Block.

Animation(String name[, Boolean withPrefixes])

Creates an Animation with the given name.

By default, when the object is serialized, it'll include -o, -webkit and -moz prefixes. Passing false to withPrefixes will disable this.

Block

Abstract interface to represent any node within the style hierarchy.

Ruleset and Scope inherit from Block.

Block.serialize()

Abstract method. All blocks must be serializable as a String.

This method is implemented on Ruleset, Scope, Media and Animation.

License

MIT