Skip to content

Commit fb43ee3

Browse files
committed
now listens for prefered-color-scheme changes
1 parent dc1193c commit fb43ee3

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

storyhelpers/storybook-readme/register.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,14 @@ const PANEL_ID = `${ADDON_ID}/panel`;
2020

2121
const Readme = props => {
2222
const [markdown, setMarkdown] = useState();
23+
const [useDarkMode, setUseDarkMode] = useState();
24+
2325
useEffect(() => {
26+
setUseDarkMode(window.matchMedia('(prefers-color-scheme: dark)').matches);
27+
window
28+
.matchMedia('(prefers-color-scheme: dark)')
29+
.addEventListener('change', updateUseDarkMode);
30+
2431
const api = props.api;
2532
api.on(STORY_RENDERED, () => {
2633
setMarkdown('');
@@ -49,10 +56,16 @@ const Readme = props => {
4956
}
5057
}
5158
});
59+
60+
return function cleanup() {
61+
window
62+
.matchMedia('(prefers-color-scheme: dark)')
63+
.removeEventListener('change', updateUseDarkMode);
64+
};
5265
}, []);
5366

54-
const shouldUseDarkTheme = () => {
55-
return window.matchMedia('(prefers-color-scheme: dark)');
67+
const updateUseDarkMode = event => {
68+
setUseDarkMode(event.matches);
5669
};
5770

5871
const renderReadme = () => (
@@ -67,7 +80,7 @@ const Readme = props => {
6780
className="storybook-readme-syntax-highlighter"
6881
children={String(children).replace(/\n$/, '')}
6982
style={{
70-
...(shouldUseDarkTheme() ? vscDarkPlus : vs),
83+
...(useDarkMode ? vscDarkPlus : vs),
7184
'pre[class*="language-"]': { display: 'none' },
7285
}}
7386
language={match[1]}

0 commit comments

Comments
 (0)