Skip to content

Commit e37603b

Browse files
authored
docs: storybook add dark mode and lang (#1077)
1 parent 28408d1 commit e37603b

File tree

2 files changed

+67
-23
lines changed

2 files changed

+67
-23
lines changed

.storybook/preview.tsx

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Preview } from '@storybook/react'
2-
import React from 'react'
2+
import { Suspense, useEffect } from 'react'
3+
import { ThemeProvider, useTheme } from 'src/layout/ThemeContext'
34
import i18n from 'src/locale/allTranslations'
45

56
const preview: Preview = {
@@ -13,15 +14,73 @@ const preview: Preview = {
1314
},
1415
},
1516
decorators: [
16-
(Story) => {
17-
i18n
17+
(Story, context) => {
18+
const { locale, darkMode } = context.globals
19+
1820
return (
19-
<div style={{ direction: 'rtl' }}>
20-
<Story />
21-
</div>
21+
<Suspense>
22+
<ThemeProvider>
23+
<StoryBookWrapper locale={locale} darkMode={darkMode}>
24+
<Story />
25+
</StoryBookWrapper>
26+
</ThemeProvider>
27+
</Suspense>
2228
)
2329
},
2430
],
2531
}
2632

33+
export const globalTypes = {
34+
locale: {
35+
name: 'Locale',
36+
description: 'Internationalization locale',
37+
defaultValue: 'he',
38+
toolbar: {
39+
icon: 'globe',
40+
items: [
41+
{ value: 'he', title: 'עברית' },
42+
{ value: 'en', title: 'English' },
43+
],
44+
showName: true,
45+
},
46+
},
47+
darkMode: {
48+
name: 'Dark Mode',
49+
description: 'Enable dark mode',
50+
defaultValue: false,
51+
toolbar: {
52+
icon: 'paintbrush',
53+
items: [
54+
{ value: false, title: 'Light' },
55+
{ value: true, title: 'Dark' },
56+
],
57+
showName: true,
58+
},
59+
},
60+
}
61+
2762
export default preview
63+
64+
const StoryBookWrapper = ({
65+
darkMode,
66+
locale,
67+
children,
68+
}: {
69+
darkMode?: boolean
70+
locale?: string
71+
children: React.ReactNode
72+
}) => {
73+
const { isDarkTheme, toggleTheme } = useTheme()
74+
75+
useEffect(() => {
76+
if (isDarkTheme !== darkMode) {
77+
toggleTheme()
78+
}
79+
}, [darkMode, isDarkTheme, toggleTheme])
80+
81+
useEffect(() => {
82+
i18n.changeLanguage(locale)
83+
}, [locale])
84+
85+
return children
86+
}

package-lock.json

Lines changed: 2 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)