File tree 2 files changed +59
-2
lines changed
2 files changed +59
-2
lines changed Original file line number Diff line number Diff line change
1
+ import { upperFirst } from 'lodash' ;
2
+ import React from 'react' ;
3
+ import styled , { ThemeProvider } from 'styled-components' ;
4
+ import theme , { prop } from '../client/theme' ;
5
+
6
+ const PreviewArea = styled . div `
7
+ background: ${ prop ( 'backgroundColor' ) } ;
8
+ flex-grow: 1;
9
+ padding: 2rem;
10
+ & > h4 {
11
+ margin-top: 0;
12
+ color: ${ prop ( 'primaryTextColor' ) } ;
13
+ }
14
+ ` ;
15
+
16
+ const themeKeys = Object . keys ( theme ) ;
17
+
18
+ export const withThemeProvider = ( Story , context ) => {
19
+ const setting = context . globals . theme ;
20
+ if ( setting === 'all' ) {
21
+ return (
22
+ < div style = { { display : 'flex' , flexWrap : 'wrap' } } >
23
+ { Object . keys ( theme ) . map ( ( themeName ) => (
24
+ < ThemeProvider theme = { theme [ themeName ] } key = { themeName } >
25
+ < PreviewArea className = { themeName } >
26
+ < h4 > { upperFirst ( themeName ) } </ h4 >
27
+ < Story />
28
+ </ PreviewArea >
29
+ </ ThemeProvider >
30
+ ) ) }
31
+ </ div >
32
+ ) ;
33
+ } else {
34
+ const themeName = setting ;
35
+ return (
36
+ < ThemeProvider theme = { theme [ themeName ] } >
37
+ < PreviewArea className = { themeName } >
38
+ < Story />
39
+ </ PreviewArea >
40
+ </ ThemeProvider >
41
+ ) ;
42
+ }
43
+ } ;
44
+
45
+ export const themeToolbarItem = {
46
+ description : 'Global theme for components' ,
47
+ defaultValue : 'all' ,
48
+ toolbar : {
49
+ title : 'Theme' ,
50
+ icon : 'mirror' ,
51
+ items : [ ...themeKeys , 'all' ]
52
+ }
53
+ } ;
Original file line number Diff line number Diff line change @@ -2,10 +2,10 @@ import React from 'react';
2
2
import { Provider } from 'react-redux' ;
3
3
import { MemoryRouter } from 'react-router' ;
4
4
5
- import ThemeProvider from '../client/modules/App/components/ThemeProvider' ;
6
5
import configureStore from '../client/store' ;
7
6
import '../client/i18n-test' ;
8
7
import '../client/styles/storybook.css'
8
+ import { withThemeProvider , themeToolbarItem } from './decorator-theme' ;
9
9
10
10
const initialState = window . __INITIAL_STATE__ ;
11
11
@@ -21,5 +21,9 @@ export const decorators = [
21
21
</ MemoryRouter >
22
22
</ Provider >
23
23
) ,
24
- ]
24
+ withThemeProvider
25
+ ] ;
25
26
27
+ export const globalTypes = {
28
+ theme : themeToolbarItem
29
+ } ;
You can’t perform that action at this time.
0 commit comments