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 11import React from 'react' ;
22import { Provider } from 'react-redux' ;
33
4- import ThemeProvider from '../client/modules/App/components/ThemeProvider' ;
54import configureStore from '../client/store' ;
65import '../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' ;
88
99const initialState = window . __INITIAL_STATE__ ;
1010
@@ -13,10 +13,12 @@ const store = configureStore(initialState);
1313export const decorators = [
1414 ( Story ) => (
1515 < Provider store = { store } >
16- < ThemeProvider >
17- < Story />
18- </ ThemeProvider >
16+ < Story />
1917 </ Provider >
2018 ) ,
21- ]
19+ withThemeProvider
20+ ] ;
2221
22+ export const globalTypes = {
23+ theme : themeToolbarItem
24+ } ;
You can’t perform that action at this time.
0 commit comments