Skip to content

Commit ec3b97d

Browse files
committed
fix(component): replace storybook-dark-mode with globalTypes toolbar impl (#8066)
1 parent 7dde509 commit ec3b97d

File tree

4 files changed

+24
-63
lines changed

4 files changed

+24
-63
lines changed

packages/frontend/component/.storybook/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ export default {
1313
getAbsolutePath('@storybook/addon-essentials'),
1414
getAbsolutePath('@storybook/addon-interactions'),
1515
getAbsolutePath('@storybook/addon-mdx-gfm'),
16-
getAbsolutePath('storybook-dark-mode'),
1716
'@chromatic-com/storybook',
1817
],
1918

@@ -60,6 +59,7 @@ export default {
6059
mode: 'development',
6160
channel: 'canary',
6261
coverage: false,
62+
static: false,
6363
}),
6464
},
6565
});

packages/frontend/component/.storybook/preview.tsx

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import './polyfill';
22
import '../src/theme/global.css';
33
import './preview.css';
4-
import { ThemeProvider, useTheme } from 'next-themes';
4+
import { ThemeProvider } from 'next-themes';
55
import type { ComponentType } from 'react';
6-
import { useEffect } from 'react';
7-
import { useDarkMode } from 'storybook-dark-mode';
86

97
import type { Preview } from '@storybook/react';
10-
import React from 'react';
8+
import React, { useEffect } from 'react';
119
import { ConfirmModalProvider } from '../src/ui/modal/confirm-modal';
1210
import { setupGlobal } from '@affine/env/global';
1311

@@ -19,47 +17,37 @@ export const parameters: Preview = {
1917
table: { category: 'Group' },
2018
},
2119
},
22-
globalTypes: {
23-
theme: {
24-
description: 'Global theme for components',
25-
defaultValue: 'light',
26-
toolbar: {
27-
title: 'Theme',
28-
icon: 'circlehollow',
29-
items: ['light', 'dark'],
30-
dynamicTitle: true,
31-
},
20+
};
21+
export const globalTypes = {
22+
theme: {
23+
description: 'Global theme for components',
24+
defaultValue: 'light',
25+
toolbar: {
26+
title: 'theme',
27+
icon: 'circlehollow',
28+
dynamic: true,
29+
items: [
30+
{ value: 'light', title: 'Light', icon: 'sun' },
31+
{ value: 'dark', title: 'Dark', icon: 'moon' },
32+
],
3233
},
3334
},
3435
};
3536

36-
const ThemeChange = () => {
37-
const isDark = useDarkMode();
38-
const theme = useTheme();
39-
if (theme.resolvedTheme === 'dark' && !isDark) {
40-
theme.setTheme('light');
41-
} else if (theme.resolvedTheme === 'light' && isDark) {
42-
theme.setTheme('dark');
43-
}
44-
return null;
45-
};
37+
const useTheme = context => {
38+
const { theme } = context.globals;
4639

47-
const Component = () => {
48-
const isDark = useDarkMode();
49-
const theme = useTheme();
5040
useEffect(() => {
51-
theme.setTheme(isDark ? 'dark' : 'light');
52-
}, [isDark]);
53-
return null;
41+
document.documentElement.setAttribute('data-theme', theme);
42+
}, [theme]);
5443
};
5544

5645
export const decorators = [
5746
(Story: ComponentType, context) => {
47+
useTheme(context);
5848
return (
5949
<ThemeProvider themes={['dark', 'light']} enableSystem={true}>
6050
<ConfirmModalProvider>
61-
<ThemeChange />
62-
<Component />
6351
<Story {...context} />
6452
</ConfirmModalProvider>
6553
</ThemeProvider>

packages/frontend/component/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@
105105
"@vanilla-extract/css": "^1.14.2",
106106
"fake-indexeddb": "^6.0.0",
107107
"storybook": "^8.2.9",
108-
"storybook-dark-mode": "4.0.2",
109108
"typescript": "^5.4.5",
110109
"unplugin-swc": "^1.5.1",
111110
"vite": "^5.2.8",

yarn.lock

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,6 @@ __metadata:
384384
rxjs: "npm:^7.8.1"
385385
sonner: "npm:^1.4.41"
386386
storybook: "npm:^8.2.9"
387-
storybook-dark-mode: "npm:4.0.2"
388387
swr: "npm:^2.2.5"
389388
typescript: "npm:^5.4.5"
390389
unplugin-swc: "npm:^1.5.1"
@@ -13685,7 +13684,7 @@ __metadata:
1368513684
languageName: node
1368613685
linkType: hard
1368713686

13688-
"@storybook/components@npm:^8.0.0, @storybook/components@npm:^8.2.9":
13687+
"@storybook/components@npm:^8.2.9":
1368913688
version: 8.2.9
1369013689
resolution: "@storybook/components@npm:8.2.9"
1369113690
peerDependencies:
@@ -13694,15 +13693,6 @@ __metadata:
1369413693
languageName: node
1369513694
linkType: hard
1369613695

13697-
"@storybook/core-events@npm:^8.0.0":
13698-
version: 8.2.9
13699-
resolution: "@storybook/core-events@npm:8.2.9"
13700-
peerDependencies:
13701-
storybook: ^8.2.9
13702-
checksum: 10/6ac658a75702c645695d82fbd69da5cf4d559050ffa1f0023729ad34c0d84965b2abeeb65efd168b0cdb049314de002c00267eaf692064e3efeae1337cc3ba52
13703-
languageName: node
13704-
linkType: hard
13705-
1370613696
"@storybook/core@npm:8.2.9":
1370713697
version: 8.2.9
1370813698
resolution: "@storybook/core@npm:8.2.9"
@@ -13772,7 +13762,7 @@ __metadata:
1377213762
languageName: node
1377313763
linkType: hard
1377413764

13775-
"@storybook/manager-api@npm:^8.0.0, @storybook/manager-api@npm:^8.2.9":
13765+
"@storybook/manager-api@npm:^8.2.9":
1377613766
version: 8.2.9
1377713767
resolution: "@storybook/manager-api@npm:8.2.9"
1377813768
peerDependencies:
@@ -13892,7 +13882,7 @@ __metadata:
1389213882
languageName: node
1389313883
linkType: hard
1389413884

13895-
"@storybook/theming@npm:^8.0.0, @storybook/theming@npm:^8.2.9":
13885+
"@storybook/theming@npm:^8.2.9":
1389613886
version: 8.2.9
1389713887
resolution: "@storybook/theming@npm:8.2.9"
1389813888
peerDependencies:
@@ -33298,22 +33288,6 @@ __metadata:
3329833288
languageName: node
3329933289
linkType: hard
3330033290

33301-
"storybook-dark-mode@npm:4.0.2":
33302-
version: 4.0.2
33303-
resolution: "storybook-dark-mode@npm:4.0.2"
33304-
dependencies:
33305-
"@storybook/components": "npm:^8.0.0"
33306-
"@storybook/core-events": "npm:^8.0.0"
33307-
"@storybook/global": "npm:^5.0.0"
33308-
"@storybook/icons": "npm:^1.2.5"
33309-
"@storybook/manager-api": "npm:^8.0.0"
33310-
"@storybook/theming": "npm:^8.0.0"
33311-
fast-deep-equal: "npm:^3.1.3"
33312-
memoizerific: "npm:^1.11.3"
33313-
checksum: 10/c9ef7bc6734df7486ff763c9da3c69505269eaf5fd7b5b489553f023b363ea892862241e6d701ad647ca5d1e64fd9a2646b8985c7ea8ac97a3bca87891db6fe5
33314-
languageName: node
33315-
linkType: hard
33316-
3331733291
"storybook@npm:^8.2.9":
3331833292
version: 8.2.9
3331933293
resolution: "storybook@npm:8.2.9"

0 commit comments

Comments
 (0)