An open API service indexing awesome lists of open source software.

https://github.com/tobua/stylesnames

Util to Conditionally Apply Styles for React and React-Native.
https://github.com/tobua/stylesnames

Last synced: 3 months ago
JSON representation

Util to Conditionally Apply Styles for React and React-Native.

Awesome Lists containing this project

README

        

# stylesnames

style**s**names conditionally applies style objects for react and react-native
similar to how classes can be combinded in react with [classnames](https://github.com/JedWatson/classnames).

## Installation

```
npm i stylesnames
```

## Usage

```js
import stylesnames from 'stylesnames'

const styles = stylesnames.bind({
// Any object with style objects inside.
})

const result = styles(
'title',
'paragraph',
{
disabled,
},
{
highlight: true,
focus: value === 5,
}
)

// result will be an array with all the style objects that apply. If disabled is
// false it won't be in the resulting array. highlight will always be added,
// while focus is only present if value is equal to 5.
```

### React

```jsx
import React, { Component } from 'react'
import stylesnames from 'stylesnames'

const styles = stylesnames.bind({
button: {
backgroundColor: 'red',
},
disabled: {
opacity: 0.5,
},
})

export default class FakeButton extends Component {
render() {
const { disabled, label } = this.props

return

{label}

}
}
```

This will result in the following styles being applied:

``

```
backgroundColor: red;
```

``

```
backgroundColor: red;
opacity: 0.5;
```

### React Native

```jsx
import React, { Component } from 'react'
import { View, Text, StyleSheet } from 'react-native'
import stylesnames from 'stylesnames'

const styles = stylesnames.bind(
StyleSheet.create({
button: {
backgroundColor: 'red',
},
disabled: {
opacity: 0.5,
},
})
)

export default class FakeButton extends Component {
render() {
const { disabled, label } = this.props

return (

{label}

)
}
}
```

The result will be the same as for the `react` example.

## License

MIT