Skip to content

Commit 7289e99

Browse files
authored
Merge pull request #47 from diegohaz/feature/arc-theme
Add arc-theme
2 parents 957e747 + 513b783 commit 7289e99

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+189
-1240
lines changed

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"webpack-dev-server": "^1.16.2"
5656
},
5757
"dependencies": {
58+
"arc-theme": "^0.2.1",
5859
"history": "3.0.0",
5960
"lodash": "^4.16.4",
6061
"react": "^15.3.2",
@@ -63,6 +64,6 @@
6364
"react-modal": "^1.6.4",
6465
"react-router": "^3.0.0",
6566
"react-router-scroll": "^0.4.1",
66-
"styled-components": "1.1.1"
67+
"styled-components": "^1.2.1"
6768
}
6869
}

src-clean/components/globals.js

-20
This file was deleted.

src/components/App.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { PropTypes, Component } from 'react'
22
import { injectGlobal, ThemeProvider } from 'styled-components'
33

4-
import theme from './theme'
4+
import theme from './themes/default'
55

66
injectGlobal`
77
body {

src/components/atoms/Atom/index.js

+4-19
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
import { PropTypes } from 'react'
22
import styled from 'styled-components'
3-
4-
export const fontFamily = ({ theme }) => theme.fonts.primary
5-
6-
export const color = ({ theme, reverse, color }) =>
7-
theme[reverse ? 'reverseColors' : 'colors'][color][color === 'grayscale' ? 0 : 1]
3+
import { font, color } from 'arc-theme'
84

95
const Atom = styled.span`
10-
font-family: ${fontFamily};
11-
color: ${color};
6+
font-family: ${font('primary')};
7+
color: ${color({ grayscale: 0 }, 1)};
128
`
139

1410
Atom.propTypes = {
@@ -17,18 +13,7 @@ Atom.propTypes = {
1713
}
1814

1915
Atom.defaultProps = {
20-
color: 'grayscale',
21-
theme: {
22-
fonts: {
23-
primary: 'sans-serif'
24-
},
25-
colors: {
26-
grayscale: { 0: '#222' }
27-
},
28-
reverseColors: {
29-
grayscale: { 0: '#fff' }
30-
}
31-
}
16+
color: 'grayscale'
3217
}
3318

3419
export default Atom
+1-32
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react'
22
import { shallow } from 'enzyme'
3-
import Atom, * as styles from '.'
3+
import Atom from '.'
44

55
const wrap = (props = {}) => shallow(<Atom {...props} />)
66

@@ -13,34 +13,3 @@ it('renders props when passed in', () => {
1313
const wrapper = wrap({ id: 'foo' })
1414
expect(wrapper.find({ id: 'foo' })).toHaveLength(1)
1515
})
16-
17-
describe('styles', () => {
18-
const theme = {
19-
fonts: {
20-
primary: 'sans-serif'
21-
},
22-
colors: {
23-
grayscale: { 0: '#222' },
24-
primary: { 1: 'red' }
25-
},
26-
reverseColors: {
27-
grayscale: { 0: '#fff' },
28-
primary: { 1: 'blue' }
29-
}
30-
}
31-
32-
test('fontFamily', () => {
33-
expect(styles.fontFamily({ theme })).toBe(theme.fonts.primary)
34-
})
35-
36-
test('color', () => {
37-
const props = {
38-
color: 'grayscale',
39-
reverse: false,
40-
theme
41-
}
42-
expect(styles.color(props)).toBe(theme.colors.grayscale[0])
43-
expect(styles.color({ ...props, reverse: true })).toBe(theme.reverseColors.grayscale[0])
44-
expect(styles.color({ ...props, color: 'primary' })).toBe(theme.colors.primary[1])
45-
})
46-
})

src/components/atoms/Badge/index.js

+5-25
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,14 @@
11
import { PropTypes } from 'react'
22
import styled from 'styled-components'
3-
4-
export const fontFamily = ({ theme }) => theme.fonts.primary
5-
6-
export const color = ({ reverse, theme }) =>
7-
reverse ? theme.colors.grayscale[0] : theme.reverseColors.grayscale[0]
8-
9-
export const backgroundColor = ({ reverse, theme, color }) =>
10-
theme[reverse ? 'reverseColors' : 'colors'][color][1]
3+
import { font, color, reverseColor } from 'arc-theme'
114

125
const Badge = styled.span`
13-
font-family: ${fontFamily};
6+
font-family: ${font('primary')};
147
font-size: 0.75rem;
158
line-height: 1.5em;
169
padding: 0 0.3em;
17-
color: ${color};
18-
background-color: ${backgroundColor};
10+
color: ${reverseColor('grayscale', 0)};
11+
background-color: ${color(1)};
1912
border-radius: 0.16667em;
2013
`
2114

@@ -25,20 +18,7 @@ Badge.propTypes = {
2518
}
2619

2720
Badge.defaultProps = {
28-
color: 'primary',
29-
theme: {
30-
fonts: {
31-
primary: 'sans-serif'
32-
},
33-
colors: {
34-
grayscale: { 0: '#222', 1: '#555' },
35-
primary: { 1: '#2196f3' }
36-
},
37-
reverseColors: {
38-
grayscale: { 0: '#fff', 1: '#bbb' },
39-
primary: { 1: '#71bcf7' }
40-
}
41-
}
21+
color: 'primary'
4222
}
4323

4424
export default Badge
+1-36
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react'
22
import { shallow } from 'enzyme'
3-
import Badge, * as styles from '.'
3+
import Badge from '.'
44

55
const wrap = (props = {}) => shallow(<Badge {...props} />)
66

@@ -13,38 +13,3 @@ it('renders props when passed in', () => {
1313
const wrapper = wrap({ id: 'foo' })
1414
expect(wrapper.find({ id: 'foo' })).toHaveLength(1)
1515
})
16-
17-
describe('styles', () => {
18-
const theme = {
19-
fonts: {
20-
primary: 'sans-serif'
21-
},
22-
colors: {
23-
grayscale: { 0: '#222', 1: '#555' },
24-
primary: { 1: '#2196f3' }
25-
},
26-
reverseColors: {
27-
grayscale: { 0: '#fff', 1: '#bbb' },
28-
primary: { 1: '#71bcf7' }
29-
}
30-
}
31-
32-
test('fontFamily', () => {
33-
expect(styles.fontFamily({ theme })).toBe(theme.fonts.primary)
34-
})
35-
36-
test('color', () => {
37-
expect(styles.color({ theme, reverse: false })).toBe(theme.reverseColors.grayscale[0])
38-
expect(styles.color({ theme, reverse: true })).toBe(theme.colors.grayscale[0])
39-
})
40-
41-
test('backgroundColor', () => {
42-
const props = {
43-
color: 'primary',
44-
reverse: false,
45-
theme
46-
}
47-
expect(styles.backgroundColor(props)).toBe(theme.colors.primary[1])
48-
expect(styles.backgroundColor({ ...props, reverse: true })).toBe(theme.reverseColors.primary[1])
49-
})
50-
})

src/components/atoms/Block/index.js

+5-23
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
import { PropTypes } from 'react'
22
import styled from 'styled-components'
3-
4-
export const fontFamily = ({ theme }) => theme.fonts.primary
5-
6-
export const backgroundColor = ({ theme, reverse, color, transparent }) =>
7-
transparent ? 'transparent' : theme[reverse ? 'colors' : 'reverseColors'][color][0]
8-
9-
export const color = ({ theme, reverse, color }) =>
10-
theme[reverse ? 'reverseColors' : 'colors'][color][color === 'grayscale' ? 0 : 1]
3+
import { font, color, reverseColor, ifProps } from 'arc-theme'
114

125
const Block = styled.div`
13-
font-family: ${fontFamily};
14-
background-color: ${backgroundColor};
15-
color: ${color};
6+
font-family: ${font('primary')};
7+
background-color: ${ifProps('transparent', 'transparent', reverseColor(0))};
8+
color: ${color({ grayscale: 0 }, 1)};
169
`
1710

1811
Block.propTypes = {
@@ -21,18 +14,7 @@ Block.propTypes = {
2114
}
2215

2316
Block.defaultProps = {
24-
color: 'grayscale',
25-
theme: {
26-
fonts: {
27-
primary: 'sans-serif'
28-
},
29-
colors: {
30-
grayscale: { 0: '#222' }
31-
},
32-
reverseColors: {
33-
grayscale: { 0: '#fff' }
34-
}
35-
}
17+
color: 'grayscale'
3618
}
3719

3820
export default Block
+1-45
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react'
22
import { shallow } from 'enzyme'
3-
import Block, * as styles from '.'
3+
import Block from '.'
44

55
const wrap = (props = {}) => shallow(<Block {...props} />)
66

@@ -13,47 +13,3 @@ it('renders props when passed in', () => {
1313
const wrapper = wrap({ id: 'foo' })
1414
expect(wrapper.find({ id: 'foo' })).toHaveLength(1)
1515
})
16-
17-
describe('styles', () => {
18-
const theme = {
19-
fonts: {
20-
primary: 'sans-serif'
21-
},
22-
colors: {
23-
grayscale: { 0: '#222' },
24-
primary: { 0: 'darkred', 1: 'red' }
25-
},
26-
reverseColors: {
27-
grayscale: { 0: '#fff' },
28-
primary: { 0: 'lightblue', 1: 'blue' }
29-
}
30-
}
31-
32-
test('fontFamily', () => {
33-
expect(styles.fontFamily({ theme })).toBe(theme.fonts.primary)
34-
})
35-
36-
test('backgroundColor', () => {
37-
const props = {
38-
color: 'grayscale',
39-
reverse: false,
40-
theme
41-
}
42-
expect(styles.backgroundColor(props)).toBe(theme.reverseColors.grayscale[0])
43-
expect(styles.backgroundColor({ ...props, transparent: true })).toBe('transparent')
44-
expect(styles.backgroundColor({ ...props, reverse: true })).toBe(theme.colors.grayscale[0])
45-
expect(styles.backgroundColor({ ...props, color: 'primary' }))
46-
.toBe(theme.reverseColors.primary[0])
47-
})
48-
49-
test('color', () => {
50-
const props = {
51-
color: 'grayscale',
52-
reverse: false,
53-
theme
54-
}
55-
expect(styles.color(props)).toBe(theme.colors.grayscale[0])
56-
expect(styles.color({ ...props, reverse: true })).toBe(theme.reverseColors.grayscale[0])
57-
expect(styles.color({ ...props, color: 'primary' })).toBe(theme.colors.primary[1])
58-
})
59-
})

0 commit comments

Comments
 (0)