storybook-react-intl
Version:
Add react-intl support to Storybook
45 lines (41 loc) • 1.26 kB
JavaScript
import i18n from 'storybook-i18n/preview';
import React from 'react';
import { IntlProvider } from 'react-intl';
import { useGlobals } from 'storybook/preview-api';
// src/preview.ts
var withReactIntl = (StoryFn, context) => {
const [{ locale }] = useGlobals();
const {
parameters: { reactIntl, locale: defaultLocale }
} = context;
const currentLocale = locale || defaultLocale;
if (currentLocale && reactIntl) {
const { formats, messages, defaultRichTextElements, timeZone } = reactIntl;
const safeFormats = formats ? formats[currentLocale] : void 0;
if (messages) {
return /* @__PURE__ */ React.createElement(
IntlProvider,
{
timeZone,
key: locale,
formats: safeFormats,
messages: messages[currentLocale],
locale: currentLocale,
defaultLocale,
defaultRichTextElements
},
/* @__PURE__ */ React.createElement(React.Fragment, null, StoryFn(context))
);
}
}
return StoryFn(context);
};
// src/preview.ts
var i18nDecorators = i18n?.decorators || [];
var preview = {
...i18n,
// @ts-ignore
decorators: [...i18nDecorators, withReactIntl]
};
var preview_default = preview;
export { preview_default as default };