File tree Expand file tree Collapse file tree 2 files changed +61
-6
lines changed Expand file tree Collapse file tree 2 files changed +61
-6
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 1
1
import React from 'react' ;
2
2
import { Provider } from 'react-redux' ;
3
3
4
- import ThemeProvider from '../client/modules/App/components/ThemeProvider' ;
5
4
import configureStore from '../client/store' ;
6
5
import '../client/i18n-test' ;
7
- import '../client/styles/build/css/main.css'
6
+ import '../client/styles/build/css/main.css' ;
7
+ import { withThemeProvider , themeToolbarItem } from './decorator-theme' ;
8
8
9
9
const initialState = window . __INITIAL_STATE__ ;
10
10
@@ -13,10 +13,12 @@ const store = configureStore(initialState);
13
13
export const decorators = [
14
14
( Story ) => (
15
15
< Provider store = { store } >
16
- < ThemeProvider >
17
- < Story />
18
- </ ThemeProvider >
16
+ < Story />
19
17
</ Provider >
20
18
) ,
21
- ]
19
+ withThemeProvider
20
+ ] ;
22
21
22
+ export const globalTypes = {
23
+ theme : themeToolbarItem
24
+ } ;
You can’t perform that action at this time.
0 commit comments