1
0
mirror of https://github.com/storybookjs/storybook.git synced 2025-03-23 05:02:10 +08:00
2018-10-20 01:39:21 -07:00

72 lines
2.0 KiB
JavaScript

import React from 'react';
import ThemeProvider from '@emotion/provider';
import { configure, addDecorator } from '@storybook/react';
import { themes } from '@storybook/components';
import { withOptions } from '@storybook/addon-options';
import { configureViewport, INITIAL_VIEWPORTS } from '@storybook/addon-viewport';
import { withResources } from '@storybook/addon-resources';
import 'react-chromatic/storybook-addon';
import addHeadWarning from './head-warning';
import extraViewports from './extra-viewports.json';
addHeadWarning('Preview head not loaded', 'preview-head-not-loaded');
addHeadWarning('Dotenv file not loaded', 'dotenv-file-not-loaded');
addDecorator(
withOptions({
hierarchySeparator: /\/|\./,
hierarchyRootSeparator: /\|/,
theme: themes.dark,
})
);
addDecorator(
withResources({
resources: `<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"></link>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"></link>
<script type="text/javascript">
try {
jQuery( "button" ).click(function() {
alert( "Handler for .click() called." );
});
} catch(e){ }
</script>`,
})
);
addDecorator(
(story, { kind }) =>
kind === 'Core|Errors' ? (
story()
) : (
<ThemeProvider theme={themes.normal}>{story()}</ThemeProvider>
)
);
configureViewport({
viewports: {
...INITIAL_VIEWPORTS,
...extraViewports,
},
});
function importAll(req) {
req.keys().forEach(filename => req(filename));
}
function loadStories() {
let req;
req = require.context('../../lib/ui/src', true, /\.stories\.js$/);
importAll(req);
req = require.context('../../lib/components/src', true, /\.stories\.js$/);
importAll(req);
req = require.context('./stories', true, /\.stories\.js$/);
importAll(req);
}
configure(loadStories, module);