arc-theme
ARc theming utilities and resources
Install
$ npm install --save arc-theme
Usage
Basic
get
and getColor
use lodash's get
to reach the theme path.
import theme, { get, getColor } from 'arc-theme'
console.log(theme)
get('colors')
get('colors.primary')
get('reverseColors.primary')
get('colors.primary[0]')
get('fonts')
get('fonts.primary')
getColor('primary')
getColor('primary[0]', true)
Overriding theme
You can also provide your theme as the last argument.
import { get, getColor, reverse } from 'arc-theme'
const myTheme = {}
myTheme.colors = {
grayscale: ['#222', '#555', '#888', '#bbb', '#fff']
}
myTheme.reverseColors = reverse(myTheme.colors)
get('colors', myTheme)
get('colors.primary', myTheme)
get('fonts.primary', myTheme)
getColor('grayscale', false, myTheme)
getColor('grayscale[0]', true, myTheme)
getColor('primary[0]', true, myTheme)
import styled from 'components'
import { font, color, reverseColor } from 'arc-theme'
const Div = styled.div`
font-family: ${font('primary')};
color: ${color(0)};
background-color: ${reverseColor('grayscale', 0)}
`
<Div color="primary" />
<Div color="primary" reverse />
import styled from 'components'
import { font, color, reverseColor } from 'arc-theme'
const Div = styled.div`
font-family: ${font('primary')};
color: ${color({ grayscale: 0 }, 1)};
`
<Div color="primary" />
<Div color="grayscale" />
API
get(path: String|Array, [anotherTheme: Object])
Returns the value from anotherTheme[path]
or theme[path]
getColor(path: String|Array, [reverse: Boolean], [anotherTheme: Object])
Returns the value from anotherTheme.colors[path]
or theme.colors[path]
. colors
will be reverseColors
if reverse
is true
.
reverse(colors: Object)
Returns a new object with reverse colors.
colors
must be an object with the following structure:
const colors = {
foo: ['bar', 'baz'],
a: ['b', 'c']
}
reverse(colors)
key(path: String)(props: Object)
Returns the key in props.theme[path]
or theme[path]
.
This is the same as get(path, props.theme)
.
font(path: String)(props: Object)
Returns the font in props.theme.fonts[path]
or theme.fonts[path]
.
This is the same as get(['fonts', path], props.theme)
.
color(index: Number, [path: String], [exceptions: Object])(props: Object)
Returns the color in props.theme.colors[path][index]
or theme.colors[path][index]
. colors
will be reverseColors
if props.reverse
is true
.
This is the same as getColor([path || props.path][index], props.reverse, props.theme)
.
Arguments could be passed in any order.
reverseColor(index: Number, [path: String], [exceptions: Object])(props: Object)
Returns the color in props.theme.reverseColors[path][index]
or theme.reverseColors[path][index]
. reverseColors
will be colors
if props.reverse
is true
.
This is the same as getColor([path || props.path][index], !props.reverse, props.theme)
.
Arguments could be passed in any order.
ifProps(needle: Array|String|Object, pass: Any, fail: Any)(props: Object)
Returns pass
or fail
according to needle
result. needle
can be some of these:
'foo'
['foo', 'bar']
'foo.bar'
['foo.bar', 'baz']
{ foo: 'bar' }
{ 'foo.bar': 'baz' }
{ foo: 'bar', baz: true }
License
MIT © Diego Haz