diff --git a/css.md b/css.md new file mode 100644 index 0000000..12ffc7c --- /dev/null +++ b/css.md @@ -0,0 +1,90 @@ +# CSS + +A simple module for generating CSS from JS and a helper for custom properties +aka. CSS variables. + +## Interfaces + +```js +import {css} from 'css.js' + +// CamelCase will be turned into kebab-case +css({div: {backgroundColor: "red"}}) +// will produce: +// div {background-color: red} + +css({div: { + transition: ["border 1s", ["color", "2s"]] +}}) +// will produce: +// div {transition: border 1s, color 12} + +// Nesting will be resolved +css({ + ".foo": { + color: "purple", + ".bar": { + color: "red", + }, + ".baz": { + color: "blue", + }, + }, +}) +// will produce: +// .foo {color: purple} +// .foo .bar {color: red} +// .foo .baz {color: blue} + +// Nested lists will be resolved too +css({ + ".foo": { + color: "purple", + ".bar, .baz": { + color: "red", + }, + }, +}) +// will produce: +// .foo {color: purple} +// .foo .bar, .foo .baz {color: red} + +// A leading _ will remove the space when nesting +css({ + ".foo": { + color: "black", + "_bar": { color: "red" } + } +}) +// will produce: +// .foo {color: black} +// .foobar {color: red} + +// $ will be replaced with . for convenience +// This can be combined with _ for to avoid quoting keys +css({ + $foo: { + _$bar$baz: { + color: 'red' + } + } +}) +// will produce: +// .foo.bar.baz {color: red} +``` + +Variables helper: + +```js +import {variable as v} from 'css.js' + +// Index for automatic hyphenation +v.fooBar.toString() // var(--foo-bar) +v.fooBar("Hello") // var(--foo-bar, Hello) + +// Call for unchanged variable names +v("fooBar") // var(--fooBar) +v("fooBar", "Hello") // var(--fooBar, Hello) +``` + +## Examples