Skip to content

Commit

Permalink
feat: gets BulkGiftTotal story to render
Browse files Browse the repository at this point in the history
- updates BulkGiftTotal stories to CSF3
- integrates i18next translations in storybook
- installs support packages for i18next/storybook integration
- updates types for BulkGiftTotalProps
  • Loading branch information
mohitb35 committed Jan 11, 2024
1 parent 6b2a3fb commit 9a98d3a
Show file tree
Hide file tree
Showing 7 changed files with 183 additions and 38 deletions.
18 changes: 18 additions & 0 deletions .storybook/i18n.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import i18n from 'i18next';
import Backend from 'i18next-http-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
import { initReactI18next } from 'react-i18next';

i18n
.use(Backend)
.use(LanguageDetector)
.use(initReactI18next)
.init({
fallbackLng: 'en',
debug: true,
backend: {
loadPath: '/static/locales/{{lng}}/{{ns}}.json',
},
});

export default i18n;
13 changes: 9 additions & 4 deletions .storybook/main.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
module.exports = {
stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-interactions'],
addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
'@storybook/addon-interactions',
],

framework: {
name: '@storybook/nextjs',
options: {}
options: {},
},

webpackFinal: async (config, { configType }) => {
Expand All @@ -13,6 +17,7 @@ module.exports = {
fallback: {
...(config.resolve || {}).fallback,
fs: false,
path: require.resolve('path-browserify'),
},
};

Expand All @@ -27,6 +32,6 @@ module.exports = {
staticDirs: ['../public'],

docs: {
autodocs: true
}
autodocs: true,
},
};
43 changes: 36 additions & 7 deletions .storybook/preview.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import './storybook.scss';
import { ThemeProvider as MUIThemeProvider } from '@mui/material';
import materialTheme from '../src/theme/themeStyles';
import { ThemeProvider } from '@storybook/theming';
import { I18nextProvider } from 'react-i18next';
import i18n from './i18n';
import { useEffect } from 'react';

// import { ThemeProvider } from 'emotion-theming';

/*
Expand All @@ -11,13 +15,23 @@ import { ThemeProvider } from '@storybook/theming';
* https://storybook.js.org/docs/react/writing-stories/decorators#global-decorators
*/
export const decorators = [
(Story) => (
<MUIThemeProvider theme={materialTheme}>
<ThemeProvider theme={materialTheme}>
<Story />
</ThemeProvider>
</MUIThemeProvider>
),
(Story, context) => {
const { locale } = context.globals;

useEffect(() => {
i18n.changeLanguage(locale);
}, [locale]);

return (
<I18nextProvider i18n={i18n}>
<MUIThemeProvider theme={materialTheme}>
<ThemeProvider theme={materialTheme}>
<Story />
</ThemeProvider>
</MUIThemeProvider>
</I18nextProvider>
);
},
];

export const parameters = {
Expand All @@ -29,3 +43,18 @@ export const parameters = {
},
},
};

export const globalTypes = {
locale: {
name: 'Locale',
description: 'Internationalization locale',
toolbar: {
icon: 'globe',
items: [
{ value: 'en', title: 'English' },
{ value: 'de', title: 'Deutsch' },
],
showName: true,
},
},
};
Loading

0 comments on commit 9a98d3a

Please sign in to comment.