1.0.3 • Published 9 months ago

@alinea/styler v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

spring-easing's badge

@alinea/styler

Class name composer. Fully typed in your IDE when paired with typescript-plugin-css-modules.

// Some.module.scss
.root {
  color: blue;
  &-sub {
    color: red;
  }
}
.link {
  color: yellow;
  &.is-active {
    color: orange;
  }
  &.is-small {
    font-size: 2em;
  }
  &.is-large {
    font-size: 2em;
  }
}
import styler from '@alinea/styler'
import css from './Some.module.scss'

const styles = styler(css)

<div className={styles.root()} />
// => <div class="root_zr2ux" /> (generated class name will vary)

You can reach subclasses, separated in css by dashes, with dot access

<div className={styles.root.sub()} />
// => <div class="root-sub_zr2ux" />

Reflect state by passing objects with boolean properties or strings

<a className={styles.link({active: true})} />
// => <a class="is-active_zr2ux link_zr2ux" />

<a className={styles.link('large')} />
// => <a class="is-large_zr2ux link_zr2ux" />

<a className={styles.link({active: false}, 'small')} />
// => <a class="is-small_zr2ux link_zr2ux" />

Use styler.global to add a global classname

<div className={styles.root(styler.global('some-external-class'))} />
// => <div class="some-external-class root_zr2ux" />

Use styler.merge to add in props with a className

<div className={styles.root(styler.merge({className: 'some-external-class'}))} />
// => <div class="some-external-class root_zr2ux" />
1.0.2

9 months ago

1.0.1

9 months ago

1.0.3

9 months ago

1.0.0

11 months ago

0.0.0

3 years ago