Skip to content

Commit c39e555

Browse files
steidatimneutkens
authored andcommitted
Improve Fela example (vercel#2330)
* Improve Fela example - add webPreset - cleaner code - add key for style - demonstrate Fela composition * Fix standard lint
1 parent 3be175b commit c39e555

File tree

6 files changed

+48
-29
lines changed

6 files changed

+48
-29
lines changed

examples/with-fela/fela-renderer.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { createRenderer } from 'fela'
2+
import webPreset from 'fela-preset-web'
3+
4+
const felaRenderer = createRenderer({
5+
plugins: [...webPreset]
6+
})
7+
8+
export default felaRenderer

examples/with-fela/fela.js

-8
This file was deleted.

examples/with-fela/layout.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { Provider } from 'react-fela'
2-
import getRenderer from './fela'
2+
import felaRenderer from './fela-renderer'
33

4-
export default ({ children }) => (
5-
<Provider renderer={getRenderer()}>
4+
export default ({ children }) =>
5+
<Provider renderer={felaRenderer}>
66
{children}
77
</Provider>
8-
)

examples/with-fela/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"dependencies": {
1010
"fela": "^5.0.1",
1111
"fela-dom": "5.0.2",
12+
"fela-preset-web": "^5.0.2",
1213
"next": "latest",
1314
"react": "^15.4.2",
1415
"react-dom": "^15.4.2",

examples/with-fela/pages/_document.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import Document, { Head, Main, NextScript } from 'next/document'
22
import { renderToSheetList } from 'fela-dom'
3-
import getRenderer from '../fela'
3+
import felaRenderer from '../fela-renderer'
44

55
export default class MyDocument extends Document {
66
static getInitialProps ({ renderPage }) {
77
const page = renderPage()
8-
const renderer = getRenderer()
9-
10-
const sheetList = renderToSheetList(renderer)
11-
renderer.clear()
8+
const sheetList = renderToSheetList(felaRenderer)
9+
felaRenderer.clear()
1210

1311
return {
1412
...page,
@@ -17,9 +15,14 @@ export default class MyDocument extends Document {
1715
}
1816

1917
render () {
20-
const styleNodes = this.props.sheetList.map(({ type, media, css }) => (
21-
<style data-fela-type={type} media={media} dangerouslySetInnerHTML={{ __html: css }} />
22-
))
18+
const styleNodes = this.props.sheetList.map(({ type, media, css }) =>
19+
<style
20+
dangerouslySetInnerHTML={{ __html: css }}
21+
data-fela-type={type}
22+
key={`${type}-${media}`}
23+
media={media}
24+
/>,
25+
)
2326

2427
return (
2528
<html>

examples/with-fela/pages/index.js

+25-9
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,32 @@
11
import { createComponent } from 'react-fela'
22
import Page from '../layout'
33

4-
const title = ({ size }) => ({
5-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
6-
fontSize: size + 'px',
7-
color: 'red'
8-
})
4+
const Container = createComponent(() => ({
5+
maxWidth: 700,
6+
marginLeft: 'auto',
7+
marginRight: 'auto',
8+
lineHeight: 1.5
9+
}))
910

10-
const Title = createComponent(title, 'h1')
11+
const Text = createComponent(({ size = 16 }) => ({
12+
fontFamily:
13+
'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
14+
fontSize: size,
15+
color: '#333'
16+
}))
1117

12-
export default () => (
18+
const Title = createComponent(
19+
({ size = 24 }) => ({
20+
fontSize: size,
21+
color: '#555'
22+
}),
23+
Text,
24+
)
25+
26+
export default () =>
1327
<Page>
14-
<Title size={50}>My Title</Title>
28+
<Container>
29+
<Title size={50}>My Title</Title>
30+
<Text>Hi, I am Fela.</Text>
31+
</Container>
1532
</Page>
16-
)

0 commit comments

Comments
 (0)