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
));