import * as React from 'react'; import Screener from 'screener-storybook/src/screener'; import { storiesOf } from '@storybook/react'; import { loadTheme, createTheme, Customizer } from 'office-ui-fabric-react'; import { PrimaryButton } from 'office-ui-fabric-react/lib/Button'; import { ThemeProvider } from '@fluentui/react-theme-provider'; import { FabricDecorator } from '../utilities'; storiesOf('ThemeProvider', module) .addDecorator(FabricDecorator) .addDecorator(story => ( {story()} )) .addStory('Default theme', () => Default theme) .addStory('Customized theme', () => ( Customized theme )) .addStory('Customized theme - nested ThemeProvider', () => ( Customized theme 1 Customized theme 2 )) .addStory('Customized styles', () => ( Customized styles )); const LoadThemeTestButton: React.FunctionComponent<{}> = props => { const [isThemeCustomized, setIsThemeCustomized] = React.useState(false); // toggle between default theme and customized theme const onClick = () => { if (isThemeCustomized) { loadTheme(createTheme({})); setIsThemeCustomized(false); } else { loadTheme({ semanticColors: { primaryButtonBackground: '#000', primaryButtonBackgroundHovered: '#000' }, }); setIsThemeCustomized(true); } }; return ( {props.children} ); }; storiesOf('ThemeProvider with loadTheme', module) .addDecorator(FabricDecorator) .addDecorator(story => ( {story()} )) .addStory('Use contextual theme over global theme if defined', () => ( Customized contextual theme 1 Customized contextual theme 2 Customized contextual theme 3 )) .addStory('Use updated global theme', () => ( Customized global theme )); storiesOf('ThemeProvider with Customizer', module) .addDecorator(FabricDecorator) .addDecorator(story => ( {story()} )) .addStory('Customizer wraps ThemeProvider', () => ( Customized by Customizer Customized by ThemeProvider )) .addStory('ThemeProvider wraps Customizer', () => ( Customized by ThemeProvider Customized by Customizer ));