File tree Expand file tree Collapse file tree 2 files changed +59
-2
lines changed Expand file tree Collapse file tree 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';
22import { Provider } from 'react-redux' ;
33import { MemoryRouter } from 'react-router' ;
44
5- import ThemeProvider from '../client/modules/App/components/ThemeProvider' ;
65import configureStore from '../client/store' ;
76import '../client/i18n-test' ;
87import '../client/styles/storybook.css'
8+ import { withThemeProvider , themeToolbarItem } from './decorator-theme' ;
99
1010const initialState = window . __INITIAL_STATE__ ;
1111
@@ -21,5 +21,9 @@ export const decorators = [
2121 </ MemoryRouter >
2222 </ Provider >
2323 ) ,
24- ]
24+ withThemeProvider
25+ ] ;
2526
27+ export const globalTypes = {
28+ theme : themeToolbarItem
29+ } ;
You can’t perform that action at this time.
0 commit comments