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

wacss

v0.0.102

Published

A Generic CSS Stylesheet that encourages conformity to standardized HTML, ARIA and Schema practices thereby creating improved Usability/Accessibility for a greater number of people. The Japanese word "和" which can be translated as "teamwork" or "harmony"

Downloads

16

Readme

WaCss (和Css)

Standardized, Semantic, Classless, Css

[DISCLAIMER: nothing here actually works.]

[WHY ARE PEOPLE DOWNLOADING THIS IT IS NOT READY ??!?!?]

Sakura - Cherry Blossom

Introduction

WaCSS is a CSS stylesheet designed to work on bare (Classless) Semantic HTML5, which enhances accessibility, and uses standards based components, primarily in CSS.

Design Goals

  • International
    • Utilizing global standards.
    • Language tagging with translation hooks
    • Quite easy to learn. And that learning is mostly improving HTML knowledge and Schema, so skills are more transferable.
  • Accessible.
    • Colorblind users
    • Blind users
    • Keyboard users
    • Robot users
    • Poorly connected users("developing world")
  • Standardized
  • Fast
    • Less Javascript. Javascript may be used sometimes to improve the fluidity of animations or enhance accessibility.
    • Pure CSS where possible
  • Traditional Modular HTML / CSS structure.
    • HTML - represents State
    • CSS - is used for display
    • Javascript (and/or following hyperlinks) - is used to change state.

Motivation

Motivated by the things I hate about the web.

  • Too much Javascript. (lags my old laptops and phones)
  • Ugly HTML
  • Non Standard HTML5
  • Hardly anybody uses Semantic Markup which makes usability and web scraping harder.
  • Too many trackers
  • Webpages are too heavy
  • "Web Apps" instead of "Webpages". I want to read a blog, not download an app. Actually, I would rather read this with lynx. I don't want to sign up to your emailing list or hookup with local singles 5 miles from my location. Why do you even know my location? This is sketchy! I'm out of here!
  • These issues lead to huge financial failures in interoperability and in the medical field, even death which most likely result in trillions per year

Basically, the idea behind this CSS is that a webpage is an HTML document, which describes some information that somebody wants to publicize. I wish the Server would justsend that information, and let the client decide how to render it. This is often a preferred usecase for myself and many others, and it already is the case for blind and some other access impaired users. This library is designed to be the kind of generic CSS that can style an HTML document client side without accepting any CSS from the server. This will only really work if people use proper HTML! I don't really expect this way of doing things to become the primary way to use the web any time soon, but I think it is preferable for many users, who will often have their own stylesheets or nightmode, or print the document because it's easier to read off screen.

Desired Usability

I intend this library to be able to display many of the modern looking components that are common on the web today. However because I intend this to be generic and usable on a client without any display clues from the server, it is necessary to use very standard HTML5 and Schema markup without classes, as only these can be expected to be generic. Class names are never generic, but this is precisely the intent of HTML5 and Schema.

It is easy to find a standard way to represent the most common HTML elements, just use the correct HTML5 elements like input, button, form etc( still designers and libraries seem to not use these!). However more complex components, such as image galleries, do not have standardized HTML representations. For these components, we have tried to find HTML/Schema interpretations that are consistent with standards, and when these are followed, the CSS interprets the HTML as being this component and the markup is applied.

More than likely, to understand you probably just need to see how it is used.

Contents and Roadmap

  1. Design Tokens
  • [x] Typography
  • [x] Color
  • [ ] Media
  • [ ] Effects
  1. Elements
  • [x] Button
  • [ ] Code
  • [ ] Input. Should be able to pass it a JSON Schema and an input field is created.
    • [ ] Text
    • [ ] Various Types
    • [ ] Combo box (select, multiple)
    • [ ] Checkbox
    • [ ] File
    • [ ] Search
    • [ ] Select (with optgroup)
    • [ ] Slider
  • [ ] Link
  • [ ] List
  • [ ] Tag
  • [ ] Title
  1. Components
  • [ ] Accordion
  • [ ] Breadcrumb
  • [ ] Card(Tile)
  • [ ] Form. Should be able to pass it a JSON Schema and an input field is created.
  • [ ] Notification
  • [ ] Pagination
  • [ ] Table
  • [ ] Tabs
  • [ ] Tooltip(Can be seen as a more advanced "title" attribute). Should probably be inline, for accessibility reasons
  • [ ] Various Schema.org or other Objects
  1. Patterns
  • [ ] Footer
  • [ ] Grid
  • [ ] Modal
  • [ ] Header
  • [ ] Hero
  • [ ] Navbar

Dimensionality and UX

We seek to create interfaces which are as much as possible globally accessible with high usability by creating interfaces which mimic the real multidimensional world in aspects such as motion to represent state change, shadows, lighting to represent page depth, and color to present meaning, interact with shadows, and show page depth, provide easy use with sufficient contrast. In order to meet these goals we seek to understand well the science and mathematics of color, lighting, movement, etc. We raise the concept of an n-dimensional data space with spatial, time, and data dimensions.

A piece of paper is 2-dimensional. The Material Design specs draw an important point to our attention however. That is, that depth on a page is important, and they offer built-in classes for an easier presentation of depth and shadow. This spec treats html documents as essentially 3dimensional. However, the aspect of time can also be thought of as a dimension in a dynamic web page, as elements might change and slide shows might switch elements in and out. Thus, it is helpful to be aware that we actually already think of a dynamic, material design web page as varying along the four coordinates x,y,z,t. With dynamic data or various interaction methods, we can think of a web page having more than 4 dimensions.

When html/css/javascript is written, it is written along these four dimensions. A javascript array of n-depth can represent n dimensional data. When applied to a certain element. It increases the dimension of that element by n dimensions.

A text document at any point of time is only 2 dimensions, there is no depth to pure text files, and they only change in time as we edit them. We represent the 4+dimensions on a page by including tags within tags and with multidimensional arrays. Below is what a typical abstraction of an html page might be. A letter is added for each element subsetted from its parent, and a letter is changed between siblings.

  • A
    • AA
      • AAA
      • AAB
    • AB
      • ABA
      • ABB
  • B
    • BA
      • BAA
      • BAB
    • BB
      • BBA
      • BBB

This can also be represented by the following array, which looks very similar to a JSON document.

(A(AA(AAA,AAB),AB(ABA,ABB)),B(BA(BAA,BAB),BB(BBA,BBB)))

The structured nature of this hopefully also demonstrates how an abstract data structure of arbitrary depth could be turned into a visual component. :smile:

References

Design Systems

Accessibility

Motivation