GithubHelp home page GithubHelp logo

jpwallace22 / quarks Goto Github PK

View Code? Open in Web Editor NEW

This project forked from quarks-css/quarks

0.0 0.0 0.0 918 KB

A CSS-in-JS library for applying styles to React components via props

License: MIT License

Shell 0.61% TypeScript 99.39%

quarks's Introduction

WIP

This project is in active development

Quarks

What are quarks?

Quarks are React components, but with all valid CSS properties available as props. They use Goober to inject styles either statically or dynamically as needed.

Why quarks?

1. Enforce syntax and types via Typescript ๐Ÿค“

  • Many CSS-in-JS libraries rely on tagged template literals to create component styles, sometimes offering object syntax as an alternative. However, template literals forego the benefits of Typescript since the contents of template literals are not evaluated. This allows for mistakes to go unchecked. With Quarks type-safety is always enforced.

2. Directly referenced theme values

  • Most CSS-in-JS libraries provide access to a theme via a prop argument in a callback. But lazy or inexperienced developers usually don't take advantage of that and instead either import theme values or hard-code style values because it's easier ๐Ÿ˜ฑ. One of quarks' main goals is to make referencing theme values easier than hard-coding styles, ensuring that your application's theme is consistently followed and easy to change.

3. Easily apply conditional styling

  • Nearly all CSS-in-JS libraries allow for conditional styling via custom props. Having to name and keep track of all of these props is a needless hassle that leads to poor naming and confusing code ๐Ÿ. Since your components' state, props, or other variables are already available to quarks via props, this is never a problem.

4. Avoid convoluted component names

  • Most CSS-in-JS libraries require each styled element to be declared as a separate React component. That means having to come up with (yet another) descriptive name for every element. This wastes time and can lead to confusion when elements inevitably have similar or convoluted names. Since each quark is only unique in its element tag name, it's always clear what each quark represents and there's never a need to spend time trying to uniquely name them.

Why "quarks"?

It's a reference to Brad Frost's Atomic Design Methodology. If atoms are your smallest design element that make up buttons, icons, text, etc., then what make up atoms? Quarks of course!

Authors

quarks's People

Contributors

dslovinsky avatar dependabot[bot] avatar jpwallace22 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.