Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/pshev/preact-fela-simple

Super simple preact-fela bindings
https://github.com/pshev/preact-fela-simple

bindings fela preact preact-fela

Last synced: 19 days ago
JSON representation

Super simple preact-fela bindings

Awesome Lists containing this project

README

        

# preact-fela-simple


Fela



Simple and tiny preact bindings for fela




npm
gzipped size
npm downloads

### Motivation

Why not use preact-fela official bindings?

First of all official bindings are about 2.5KB while this package is about 300B.

At the same time I think it has a simpler and more straight-forward API.

### Usage

If you are already familiar with preact-fela you can take a look at the following gists:

[preact-fela basic usage](https://gist.github.com/pshev/888b8a7c33f2850fe67516f7aac2337d) and
[preact-fela-simple basic usage](https://gist.github.com/pshev/e1fd6d5e2be6fd29308252a8f24c74c4).


#### API
The API has two parts: `Provider` to put fela's renderer and your custom theme on the context
and `style` higher-order component (HOC) to style Preact components.

##### Provider

Wrap your root component in a `Provider` to put fela's `renderer` on the context.

You can also give it a `theme` property to make it available for the components styled with the `style` HOC.

```js
import Preact, {h} from 'preact'
import createRenderer from 'fela'
import {Provider} from 'preact-fela-simple'

const htmlRenderer = Preact.render
const styleRenderer = createRenderer()

const theme = {
mainColor: 'peachpuff',
fontFamily: 'Comic Sans MS'
}

htmlRenderer((



), document.getElementById('root'))
```

##### style

`style` is a HOC that is used to add styling to Preact components.

It takes either a styles object or a function that returns a styles object given the current component's `props`.

What that means is that if the rules don't need `props` or `theme`, you don't have to bother creating them as functions.

###### basic use

```js
import {h} from 'preact'
import {style} from 'preact-fela-simple'

const Button = ({styles}) =>

Hello world

export default style({
button: {
padding: '10px',
color: 'red'
}
})(Button)
```

###### using a theme

```js
import {h} from 'preact'
import {style} from 'preact-fela-simple'

const Button = ({styles}) =>

Hello world

export default style(({theme}) => ({
button: {
padding: '10px',
color: theme.mainColor
}
}))(Button)
```

###### accessing props

```js
import {h} from 'preact'
import {style} from 'preact-fela-simple'

const Button = ({styles}) =>

Hello world

export default style(({primary}) => ({
button: {
fontSize: primary ? '15px' : '12px',
padding: '10px',
color: 'cornsilk'
}
}))(Button)
```