@dxos/storybook-utils 0.8.3 → 0.8.4-main.f9ba587
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +55 -89
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +55 -89
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/DocsContainer.d.ts +4 -0
- package/dist/types/src/components/DocsContainer.d.ts.map +1 -0
- package/dist/types/src/components/ThemeEditor.d.ts +5 -0
- package/dist/types/src/components/ThemeEditor.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -0
- package/dist/types/src/decorators/index.d.ts +1 -1
- package/dist/types/src/decorators/index.d.ts.map +1 -1
- package/dist/types/src/decorators/withLayout.d.ts +5 -4
- package/dist/types/src/decorators/withLayout.d.ts.map +1 -1
- package/dist/types/src/decorators/withTheme.d.ts +1 -2
- package/dist/types/src/decorators/withTheme.d.ts.map +1 -1
- package/dist/types/src/decorators/withThemeEditor.d.ts +6 -0
- package/dist/types/src/decorators/withThemeEditor.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/stories/test/Test.d.ts +6 -0
- package/dist/types/src/stories/test/Test.d.ts.map +1 -0
- package/dist/types/src/stories/test/Test.stories.d.ts +12 -0
- package/dist/types/src/stories/test/Test.stories.d.ts.map +1 -0
- package/dist/types/src/stories/test/Test.test.d.ts +2 -0
- package/dist/types/src/stories/test/Test.test.d.ts.map +1 -0
- package/dist/types/src/vitest-setup.d.ts +2 -0
- package/dist/types/src/vitest-setup.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -14
- package/src/components/DocsContainer.tsx +18 -0
- package/src/components/ThemeEditor.tsx +18 -0
- package/src/components/index.ts +6 -0
- package/src/decorators/index.ts +1 -1
- package/src/decorators/withLayout.tsx +9 -6
- package/src/decorators/withTheme.tsx +9 -63
- package/src/decorators/withThemeEditor.tsx +28 -0
- package/src/index.ts +1 -0
- package/src/stories/test/Test.stories.tsx +62 -0
- package/src/stories/test/Test.test.tsx +40 -0
- package/src/stories/test/Test.tsx +15 -0
- package/src/stories/test/__snapshots__/Test.test.tsx.snap +3 -0
- package/src/stories/test/index.mdx +14 -0
- package/src/vitest-setup.ts +11 -0
- package/README.yml +0 -1
- package/dist/lib/node/index.cjs +0 -170
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/types/src/decorators/withSignals.d.ts +0 -6
- package/dist/types/src/decorators/withSignals.d.ts.map +0 -1
- package/src/decorators/withSignals.tsx +0 -16
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
//
|
|
2
|
-
import { registerSignalsRuntime
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import { registerSignalsRuntime } from "@dxos/echo-signals/react";
|
|
3
|
+
|
|
4
|
+
// src/components/ThemeEditor.tsx
|
|
5
|
+
import React, { memo } from "react";
|
|
6
|
+
import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
|
|
7
|
+
import { createComponent } from "@dxos/lit-ui/react";
|
|
8
|
+
import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
|
|
9
|
+
var DxThemeEditor = createComponent({
|
|
10
|
+
tagName: "dx-theme-editor",
|
|
11
|
+
elementClass: NaturalDxThemeEditor,
|
|
12
|
+
react: React
|
|
13
|
+
});
|
|
14
|
+
var ThemeEditor = /* @__PURE__ */ memo(DxThemeEditor);
|
|
3
15
|
|
|
4
|
-
//
|
|
16
|
+
// src/decorators/withLayout.tsx
|
|
5
17
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
6
|
-
import
|
|
18
|
+
import React2 from "react";
|
|
7
19
|
import { DensityProvider } from "@dxos/react-ui";
|
|
8
20
|
import { mx } from "@dxos/react-ui-theme";
|
|
9
21
|
var defaultOptions = {
|
|
@@ -11,131 +23,85 @@ var defaultOptions = {
|
|
|
11
23
|
};
|
|
12
24
|
var providers = [
|
|
13
25
|
(children, options) => {
|
|
14
|
-
return options?.density ? /* @__PURE__ */
|
|
26
|
+
return options?.density ? /* @__PURE__ */ React2.createElement(DensityProvider, {
|
|
15
27
|
density: options.density
|
|
16
28
|
}, children) : children;
|
|
17
29
|
}
|
|
18
30
|
];
|
|
19
|
-
var withLayout = ({ classNames, fullscreen, Container = fullscreen ?
|
|
31
|
+
var withLayout = ({ classNames, fullscreen, Container = fullscreen ? FullscreenContainer : DefaultContainer, ...providedOptions } = {}) => {
|
|
20
32
|
return (Story, _context) => {
|
|
21
|
-
const children = /* @__PURE__ */
|
|
33
|
+
const children = /* @__PURE__ */ React2.createElement(Container, {
|
|
22
34
|
classNames,
|
|
23
35
|
fullscreen
|
|
24
|
-
}, /* @__PURE__ */
|
|
36
|
+
}, /* @__PURE__ */ React2.createElement(Story, null));
|
|
25
37
|
const options = defaultsDeep({}, providedOptions, defaultOptions);
|
|
26
38
|
return providers.reduceRight((acc, provider) => provider(acc, options), children);
|
|
27
39
|
};
|
|
28
40
|
};
|
|
41
|
+
var layoutCentered = "bg-deckSurface justify-center overflow-y-auto";
|
|
29
42
|
var DefaultContainer = ({ children, classNames }) => {
|
|
30
|
-
return /* @__PURE__ */
|
|
43
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
31
44
|
role: "none",
|
|
32
45
|
className: mx(classNames)
|
|
33
46
|
}, children);
|
|
34
47
|
};
|
|
35
|
-
var
|
|
36
|
-
return /* @__PURE__ */
|
|
48
|
+
var FullscreenContainer = ({ children, classNames }) => {
|
|
49
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
37
50
|
role: "none",
|
|
38
51
|
className: mx("fixed inset-0 flex overflow-hidden", classNames)
|
|
39
52
|
}, children);
|
|
40
53
|
};
|
|
41
54
|
var ColumnContainer = ({ children, classNames = "w-[30rem]", ...props }) => {
|
|
42
|
-
return /* @__PURE__ */
|
|
55
|
+
return /* @__PURE__ */ React2.createElement(FullscreenContainer, {
|
|
43
56
|
classNames: "justify-center bg-modalSurface",
|
|
44
57
|
...props
|
|
45
|
-
}, /* @__PURE__ */
|
|
58
|
+
}, /* @__PURE__ */ React2.createElement("div", {
|
|
46
59
|
role: "none",
|
|
47
60
|
className: mx("flex flex-col h-full overflow-y-auto bg-baseSurface", classNames)
|
|
48
61
|
}, children));
|
|
49
62
|
};
|
|
50
63
|
|
|
51
|
-
//
|
|
52
|
-
import
|
|
53
|
-
import {
|
|
54
|
-
var withSignals = (Story) => {
|
|
55
|
-
registerSignalsRuntime();
|
|
56
|
-
return /* @__PURE__ */ React2.createElement(Story, null);
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// packages/common/storybook-utils/src/decorators/withTheme.tsx
|
|
60
|
-
import { addons } from "@storybook/preview-api";
|
|
61
|
-
import React3, { memo, useCallback, useEffect, useState } from "react";
|
|
62
|
-
import { DARK_MODE_EVENT_NAME } from "storybook-dark-mode";
|
|
63
|
-
import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
|
|
64
|
-
import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
|
|
65
|
-
import { createComponent } from "@dxos/lit-ui/react";
|
|
66
|
-
import { ThemeProvider, Tooltip, Dialog, IconButton } from "@dxos/react-ui";
|
|
64
|
+
// src/decorators/withTheme.tsx
|
|
65
|
+
import React3, { memo as memo2 } from "react";
|
|
66
|
+
import { ThemeProvider, Tooltip } from "@dxos/react-ui";
|
|
67
67
|
import { defaultTx } from "@dxos/react-ui-theme";
|
|
68
|
-
import { PARAM_KEY } from "@dxos/theme-editor-addon";
|
|
69
|
-
var DxThemeEditor = createComponent({
|
|
70
|
-
tagName: "dx-theme-editor",
|
|
71
|
-
elementClass: NaturalDxThemeEditor,
|
|
72
|
-
react: React3
|
|
73
|
-
});
|
|
74
68
|
var withTheme = (Story, context) => {
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
const [editorOpen, setEditorOpen] = useState(false);
|
|
78
|
-
const handleOpenChange = useCallback((nextOpen) => {
|
|
79
|
-
setEditorOpen(nextOpen);
|
|
80
|
-
}, []);
|
|
81
|
-
useEffect(() => {
|
|
82
|
-
const handleDarkModeUpdate = (darkMode) => setThemeMode(darkMode ? "dark" : "light");
|
|
83
|
-
addons.getChannel().on(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);
|
|
84
|
-
return () => addons.getChannel().off(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);
|
|
85
|
-
}, []);
|
|
86
|
-
useEffect(() => {
|
|
87
|
-
const openEditor = () => {
|
|
88
|
-
handleOpenChange(true);
|
|
89
|
-
};
|
|
90
|
-
addons.getChannel().on(PARAM_KEY, openEditor);
|
|
91
|
-
return () => addons.getChannel().off(PARAM_KEY, openEditor);
|
|
92
|
-
}, []);
|
|
69
|
+
const { globals: { theme }, parameters: { translations } } = context;
|
|
70
|
+
const MemoizedStory = /* @__PURE__ */ memo2(Story);
|
|
93
71
|
return /* @__PURE__ */ React3.createElement(ThemeProvider, {
|
|
94
72
|
tx: defaultTx,
|
|
95
|
-
themeMode,
|
|
96
|
-
resourceExtensions:
|
|
73
|
+
themeMode: theme,
|
|
74
|
+
resourceExtensions: translations,
|
|
97
75
|
noCache: true
|
|
98
|
-
}, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(MemoizedStory, null)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
style: {
|
|
111
|
-
maxBlockSize: "50dvh"
|
|
112
|
-
},
|
|
113
|
-
onInteractOutside: (event) => event.preventDefault()
|
|
114
|
-
}, /* @__PURE__ */ React3.createElement(Dialog.Title, {
|
|
115
|
-
srOnly: true
|
|
116
|
-
}, "Theme Editor"), editorOpen && /* @__PURE__ */ React3.createElement(DxThemeEditor, null), /* @__PURE__ */ React3.createElement(Dialog.Close, {
|
|
117
|
-
asChild: true
|
|
118
|
-
}, /* @__PURE__ */ React3.createElement(IconButton, {
|
|
119
|
-
iconOnly: true,
|
|
120
|
-
icon: "ph--x--regular",
|
|
121
|
-
label: "Close",
|
|
122
|
-
classNames: "absolute block-start-2 inline-end-2"
|
|
123
|
-
})))))));
|
|
76
|
+
}, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(MemoizedStory, null)));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// src/decorators/withThemeEditor.tsx
|
|
80
|
+
import React4, { memo as memo3 } from "react";
|
|
81
|
+
var withThemeEditor = (Story, context) => {
|
|
82
|
+
const MemoizedStory = /* @__PURE__ */ memo3(Story);
|
|
83
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(MemoizedStory, null), /* @__PURE__ */ React4.createElement("div", {
|
|
84
|
+
className: "absolute top-4 bottom-4 right-4 z-10"
|
|
85
|
+
}, /* @__PURE__ */ React4.createElement("div", {
|
|
86
|
+
className: "h-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded"
|
|
87
|
+
}, /* @__PURE__ */ React4.createElement(ThemeEditor, null))));
|
|
124
88
|
};
|
|
125
89
|
|
|
126
|
-
//
|
|
127
|
-
import
|
|
128
|
-
var render = (r) => (args) => /* @__PURE__ */
|
|
90
|
+
// src/util.tsx
|
|
91
|
+
import React5 from "react";
|
|
92
|
+
var render = (r) => (args) => /* @__PURE__ */ React5.createElement(React5.Fragment, null, r(args) ?? /* @__PURE__ */ React5.createElement("div", null));
|
|
129
93
|
|
|
130
|
-
//
|
|
131
|
-
|
|
94
|
+
// src/index.ts
|
|
95
|
+
registerSignalsRuntime();
|
|
132
96
|
export {
|
|
133
97
|
ColumnContainer,
|
|
134
98
|
DefaultContainer,
|
|
135
|
-
|
|
99
|
+
FullscreenContainer,
|
|
100
|
+
ThemeEditor,
|
|
101
|
+
layoutCentered,
|
|
136
102
|
render,
|
|
137
103
|
withLayout,
|
|
138
|
-
|
|
139
|
-
|
|
104
|
+
withTheme,
|
|
105
|
+
withThemeEditor
|
|
140
106
|
};
|
|
141
107
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/index.ts", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\n\nexport { type Meta } from '@storybook/react';\n\nexport * from './decorators';\nexport * from './util';\n\nregisterSignalsRuntime();\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport React, { type PropsWithChildren, type JSX, type FC } from 'react';\n\nimport { type Density, DensityProvider, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\ntype ProviderOptions = {\n fullscreen?: boolean;\n density?: Density;\n};\n\nconst defaultOptions: ProviderOptions = {\n density: 'fine',\n};\n\ntype Provider = (children: JSX.Element, options: ProviderOptions) => JSX.Element;\n\nconst providers: Provider[] = [\n (children, options) => {\n return options?.density ? <DensityProvider density={options.density}>{children}</DensityProvider> : children;\n },\n];\n\nexport type ContainerProps = ThemedClassName<PropsWithChildren<Pick<ProviderOptions, 'fullscreen'>>>;\n\nexport type WithLayoutProps = ThemedClassName<ProviderOptions & { Container?: FC<ContainerProps> }>;\n\n/**\n * Decorator to layout the story container, adding optional providers.\n */\nexport const withLayout = ({\n classNames,\n fullscreen,\n Container = fullscreen ?
|
|
5
|
-
"mappings": ";AAIA,SAASA,
|
|
6
|
-
"names": ["registerSignalsRuntime", "
|
|
3
|
+
"sources": ["../../../src/index.ts", "../../../src/components/ThemeEditor.tsx", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/withTheme.tsx", "../../../src/decorators/withThemeEditor.tsx", "../../../src/util.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\n\nexport { type Meta } from '@storybook/react';\n\nexport * from './components';\nexport * from './decorators';\nexport * from './util';\n\nregisterSignalsRuntime();\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { memo } from 'react';\n\nimport { DxThemeEditor as NaturalDxThemeEditor } from '@dxos/lit-theme-editor';\nimport { createComponent } from '@dxos/lit-ui/react';\n\nimport '@dxos/lit-theme-editor/dx-theme-editor.pcss';\n\nconst DxThemeEditor = createComponent({\n tagName: 'dx-theme-editor',\n elementClass: NaturalDxThemeEditor,\n react: React,\n});\n\nexport const ThemeEditor = memo(DxThemeEditor);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport React, { type PropsWithChildren, type JSX, type FC } from 'react';\n\nimport { type Density, DensityProvider, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\ntype ProviderOptions = {\n fullscreen?: boolean;\n density?: Density;\n};\n\nconst defaultOptions: ProviderOptions = {\n density: 'fine',\n};\n\ntype Provider = (children: JSX.Element, options: ProviderOptions) => JSX.Element;\n\nconst providers: Provider[] = [\n (children, options) => {\n return options?.density ? <DensityProvider density={options.density}>{children}</DensityProvider> : children;\n },\n];\n\nexport type ContainerProps = ThemedClassName<PropsWithChildren<Pick<ProviderOptions, 'fullscreen'>>>;\n\nexport type WithLayoutProps = ThemedClassName<ProviderOptions & { Container?: FC<ContainerProps> }>;\n\n/**\n * Decorator to layout the story container, adding optional providers.\n */\nexport const withLayout = ({\n classNames,\n fullscreen,\n Container = fullscreen ? FullscreenContainer : DefaultContainer,\n ...providedOptions\n}: WithLayoutProps = {}): Decorator => {\n // TODO(burdon): Inspect \"fullscreen\" parameter in context.\n return (Story, _context) => {\n const children = (\n <Container classNames={classNames} fullscreen={fullscreen}>\n <Story />\n </Container>\n );\n\n const options = defaultsDeep({}, providedOptions, defaultOptions);\n return providers.reduceRight((acc, provider) => provider(acc, options), children);\n };\n};\n\n// TODO(burdon): Use consistently.\nexport const layoutCentered = 'bg-deckSurface justify-center overflow-y-auto';\n\nexport const DefaultContainer = ({ children, classNames }: ContainerProps) => {\n return (\n <div role='none' className={mx(classNames)}>\n {children}\n </div>\n );\n};\n\nexport const FullscreenContainer = ({ children, classNames }: ContainerProps) => {\n return (\n <div role='none' className={mx('fixed inset-0 flex overflow-hidden', classNames)}>\n {children}\n </div>\n );\n};\n\nexport const ColumnContainer = ({ children, classNames = 'w-[30rem]', ...props }: ContainerProps) => {\n return (\n <FullscreenContainer classNames='justify-center bg-modalSurface' {...props}>\n <div role='none' className={mx('flex flex-col h-full overflow-y-auto bg-baseSurface', classNames)}>\n {children}\n </div>\n </FullscreenContainer>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { memo } from 'react';\n\nimport { type ThemeMode, ThemeProvider, Tooltip } from '@dxos/react-ui';\nimport { defaultTx } from '@dxos/react-ui-theme';\n\n/**\n * Adds theme decorator.\n */\nexport const withTheme: Decorator = (Story, context) => {\n const {\n globals: { theme },\n parameters: { translations },\n } = context;\n\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <ThemeProvider tx={defaultTx} themeMode={theme as ThemeMode} resourceExtensions={translations} noCache>\n <Tooltip.Provider>\n <MemoizedStory />\n </Tooltip.Provider>\n </ThemeProvider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { memo } from 'react';\n\nimport { ThemeEditor } from '../components';\n\n/**\n * Show theme editor.\n */\n// TODO(burdon): Ideally move to storybook-addon-theme, but this has a build issue since the addon would depend on the vite theme plugin.\nexport const withThemeEditor: Decorator = (Story, context) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <>\n <MemoizedStory />\n <div className='absolute top-4 bottom-4 right-4 z-10'>\n <div className='h-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded'>\n <ThemeEditor />\n </div>\n </div>\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\n/**\n * Story renderer wrapper.\n */\nexport const render =\n <T,>(r: FC<T>) =>\n (args: T) => <>{r(args) ?? <div />}</>;\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,8BAA8B;;;ACAvC,OAAOC,SAASC,YAAY;AAE5B,SAASC,iBAAiBC,4BAA4B;AACtD,SAASC,uBAAuB;AAEhC,OAAO;AAEP,IAAMC,gBAAgBC,gBAAgB;EACpCC,SAAS;EACTC,cAAcC;EACdC,OAAOC;AACT,CAAA;AAEO,IAAMC,cAAcC,qBAAKR,aAAAA;;;ACZhC,OAAOS,kBAAkB;AACzB,OAAOC,YAA0D;AAEjE,SAAuBC,uBAA6C;AACpE,SAASC,UAAU;AAOnB,IAAMC,iBAAkC;EACtCC,SAAS;AACX;AAIA,IAAMC,YAAwB;EAC5B,CAACC,UAAUC,YAAAA;AACT,WAAOA,SAASH,UAAU,gBAAAI,OAAA,cAACC,iBAAAA;MAAgBL,SAASG,QAAQH;OAAUE,QAAAA,IAA8BA;EACtG;;AAUK,IAAMI,aAAa,CAAC,EACzBC,YACAC,YACAC,YAAYD,aAAaE,sBAAsBC,kBAC/C,GAAGC,gBAAAA,IACgB,CAAC,MAAC;AAErB,SAAO,CAACC,OAAOC,aAAAA;AACb,UAAMZ,WACJ,gBAAAE,OAAA,cAACK,WAAAA;MAAUF;MAAwBC;OACjC,gBAAAJ,OAAA,cAACS,OAAAA,IAAAA,CAAAA;AAIL,UAAMV,UAAUY,aAAa,CAAC,GAAGH,iBAAiBb,cAAAA;AAClD,WAAOE,UAAUe,YAAY,CAACC,KAAKC,aAAaA,SAASD,KAAKd,OAAAA,GAAUD,QAAAA;EAC1E;AACF;AAGO,IAAMiB,iBAAiB;AAEvB,IAAMR,mBAAmB,CAAC,EAAET,UAAUK,WAAU,MAAkB;AACvE,SACE,gBAAAH,OAAA,cAACgB,OAAAA;IAAIC,MAAK;IAAOC,WAAWC,GAAGhB,UAAAA;KAC5BL,QAAAA;AAGP;AAEO,IAAMQ,sBAAsB,CAAC,EAAER,UAAUK,WAAU,MAAkB;AAC1E,SACE,gBAAAH,OAAA,cAACgB,OAAAA;IAAIC,MAAK;IAAOC,WAAWC,GAAG,sCAAsChB,UAAAA;KAClEL,QAAAA;AAGP;AAEO,IAAMsB,kBAAkB,CAAC,EAAEtB,UAAUK,aAAa,aAAa,GAAGkB,MAAAA,MAAuB;AAC9F,SACE,gBAAArB,OAAA,cAACM,qBAAAA;IAAoBH,YAAW;IAAkC,GAAGkB;KACnE,gBAAArB,OAAA,cAACgB,OAAAA;IAAIC,MAAK;IAAOC,WAAWC,GAAG,uDAAuDhB,UAAAA;KACnFL,QAAAA,CAAAA;AAIT;;;AC5EA,OAAOwB,UAASC,QAAAA,aAAY;AAE5B,SAAyBC,eAAeC,eAAe;AACvD,SAASC,iBAAiB;AAKnB,IAAMC,YAAuB,CAACC,OAAOC,YAAAA;AAC1C,QAAM,EACJC,SAAS,EAAEC,MAAK,GAChBC,YAAY,EAAEC,aAAY,EAAE,IAC1BJ;AAGJ,QAAMK,gBAAgBC,gBAAAA,MAAKP,KAAAA;AAE3B,SACE,gBAAAQ,OAAA,cAACC,eAAAA;IAAcC,IAAIC;IAAWC,WAAWT;IAAoBU,oBAAoBR;IAAcS,SAAAA;KAC7F,gBAAAN,OAAA,cAACO,QAAQC,UAAQ,MACf,gBAAAR,OAAA,cAACF,eAAAA,IAAAA,CAAAA,CAAAA;AAIT;;;ACxBA,OAAOW,UAASC,QAAAA,aAAY;AAQrB,IAAMC,kBAA6B,CAACC,OAAOC,YAAAA;AAEhD,QAAMC,gBAAgBC,gBAAAA,MAAKH,KAAAA;AAE3B,SACE,gBAAAI,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACF,eAAAA,IAAAA,GACD,gBAAAE,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACG,aAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAKX;;;ACvBA,OAAOC,YAAwB;AAKxB,IAAMC,SACX,CAAKC,MACL,CAACC,SAAY,gBAAAC,OAAA,cAAAA,OAAA,UAAA,MAAGF,EAAEC,IAAAA,KAAS,gBAAAC,OAAA,cAACC,OAAAA,IAAAA,CAAAA;;;ALC9BC,uBAAAA;",
|
|
6
|
+
"names": ["registerSignalsRuntime", "React", "memo", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "ThemeEditor", "memo", "defaultsDeep", "React", "DensityProvider", "mx", "defaultOptions", "density", "providers", "children", "options", "React", "DensityProvider", "withLayout", "classNames", "fullscreen", "Container", "FullscreenContainer", "DefaultContainer", "providedOptions", "Story", "_context", "defaultsDeep", "reduceRight", "acc", "provider", "layoutCentered", "div", "role", "className", "mx", "ColumnContainer", "props", "React", "memo", "ThemeProvider", "Tooltip", "defaultTx", "withTheme", "Story", "context", "globals", "theme", "parameters", "translations", "MemoizedStory", "memo", "React", "ThemeProvider", "tx", "defaultTx", "themeMode", "resourceExtensions", "noCache", "Tooltip", "Provider", "React", "memo", "withThemeEditor", "Story", "context", "MemoizedStory", "memo", "React", "div", "className", "ThemeEditor", "React", "render", "r", "args", "React", "div", "registerSignalsRuntime"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"
|
|
1
|
+
{"inputs":{"src/components/ThemeEditor.tsx":{"bytes":1828,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true}],"format":"esm"},"src/components/index.ts":{"bytes":584,"imports":[{"path":"src/components/ThemeEditor.tsx","kind":"import-statement","original":"./ThemeEditor"}],"format":"esm"},"src/decorators/withLayout.tsx":{"bytes":7744,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withTheme.tsx":{"bytes":2822,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withThemeEditor.tsx":{"bytes":2713,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/decorators/index.ts":{"bytes":671,"imports":[{"path":"src/decorators/withLayout.tsx","kind":"import-statement","original":"./withLayout"},{"path":"src/decorators/withTheme.tsx","kind":"import-statement","original":"./withTheme"},{"path":"src/decorators/withThemeEditor.tsx","kind":"import-statement","original":"./withThemeEditor"}],"format":"esm"},"src/util.tsx":{"bytes":999,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":1007,"imports":[{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/decorators/index.ts","kind":"import-statement","original":"./decorators"},{"path":"src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8694},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ColumnContainer","DefaultContainer","FullscreenContainer","ThemeEditor","layoutCentered","render","withLayout","withTheme","withThemeEditor"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":93},"src/components/ThemeEditor.tsx":{"bytesInOutput":405},"src/components/index.ts":{"bytesInOutput":0},"src/decorators/withLayout.tsx":{"bytesInOutput":1764},"src/decorators/index.ts":{"bytesInOutput":0},"src/decorators/withTheme.tsx":{"bytesInOutput":608},"src/decorators/withThemeEditor.tsx":{"bytesInOutput":588},"src/util.tsx":{"bytesInOutput":181}},"bytes":4027}}}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
|
|
3
|
-
//
|
|
4
|
-
import { registerSignalsRuntime
|
|
3
|
+
// src/index.ts
|
|
4
|
+
import { registerSignalsRuntime } from "@dxos/echo-signals/react";
|
|
5
|
+
|
|
6
|
+
// src/components/ThemeEditor.tsx
|
|
7
|
+
import React, { memo } from "react";
|
|
8
|
+
import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
|
|
9
|
+
import { createComponent } from "@dxos/lit-ui/react";
|
|
10
|
+
import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
|
|
11
|
+
var DxThemeEditor = createComponent({
|
|
12
|
+
tagName: "dx-theme-editor",
|
|
13
|
+
elementClass: NaturalDxThemeEditor,
|
|
14
|
+
react: React
|
|
15
|
+
});
|
|
16
|
+
var ThemeEditor = /* @__PURE__ */ memo(DxThemeEditor);
|
|
5
17
|
|
|
6
|
-
//
|
|
18
|
+
// src/decorators/withLayout.tsx
|
|
7
19
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
8
|
-
import
|
|
20
|
+
import React2 from "react";
|
|
9
21
|
import { DensityProvider } from "@dxos/react-ui";
|
|
10
22
|
import { mx } from "@dxos/react-ui-theme";
|
|
11
23
|
var defaultOptions = {
|
|
@@ -13,131 +25,85 @@ var defaultOptions = {
|
|
|
13
25
|
};
|
|
14
26
|
var providers = [
|
|
15
27
|
(children, options) => {
|
|
16
|
-
return options?.density ? /* @__PURE__ */
|
|
28
|
+
return options?.density ? /* @__PURE__ */ React2.createElement(DensityProvider, {
|
|
17
29
|
density: options.density
|
|
18
30
|
}, children) : children;
|
|
19
31
|
}
|
|
20
32
|
];
|
|
21
|
-
var withLayout = ({ classNames, fullscreen, Container = fullscreen ?
|
|
33
|
+
var withLayout = ({ classNames, fullscreen, Container = fullscreen ? FullscreenContainer : DefaultContainer, ...providedOptions } = {}) => {
|
|
22
34
|
return (Story, _context) => {
|
|
23
|
-
const children = /* @__PURE__ */
|
|
35
|
+
const children = /* @__PURE__ */ React2.createElement(Container, {
|
|
24
36
|
classNames,
|
|
25
37
|
fullscreen
|
|
26
|
-
}, /* @__PURE__ */
|
|
38
|
+
}, /* @__PURE__ */ React2.createElement(Story, null));
|
|
27
39
|
const options = defaultsDeep({}, providedOptions, defaultOptions);
|
|
28
40
|
return providers.reduceRight((acc, provider) => provider(acc, options), children);
|
|
29
41
|
};
|
|
30
42
|
};
|
|
43
|
+
var layoutCentered = "bg-deckSurface justify-center overflow-y-auto";
|
|
31
44
|
var DefaultContainer = ({ children, classNames }) => {
|
|
32
|
-
return /* @__PURE__ */
|
|
45
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
33
46
|
role: "none",
|
|
34
47
|
className: mx(classNames)
|
|
35
48
|
}, children);
|
|
36
49
|
};
|
|
37
|
-
var
|
|
38
|
-
return /* @__PURE__ */
|
|
50
|
+
var FullscreenContainer = ({ children, classNames }) => {
|
|
51
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
39
52
|
role: "none",
|
|
40
53
|
className: mx("fixed inset-0 flex overflow-hidden", classNames)
|
|
41
54
|
}, children);
|
|
42
55
|
};
|
|
43
56
|
var ColumnContainer = ({ children, classNames = "w-[30rem]", ...props }) => {
|
|
44
|
-
return /* @__PURE__ */
|
|
57
|
+
return /* @__PURE__ */ React2.createElement(FullscreenContainer, {
|
|
45
58
|
classNames: "justify-center bg-modalSurface",
|
|
46
59
|
...props
|
|
47
|
-
}, /* @__PURE__ */
|
|
60
|
+
}, /* @__PURE__ */ React2.createElement("div", {
|
|
48
61
|
role: "none",
|
|
49
62
|
className: mx("flex flex-col h-full overflow-y-auto bg-baseSurface", classNames)
|
|
50
63
|
}, children));
|
|
51
64
|
};
|
|
52
65
|
|
|
53
|
-
//
|
|
54
|
-
import
|
|
55
|
-
import {
|
|
56
|
-
var withSignals = (Story) => {
|
|
57
|
-
registerSignalsRuntime();
|
|
58
|
-
return /* @__PURE__ */ React2.createElement(Story, null);
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// packages/common/storybook-utils/src/decorators/withTheme.tsx
|
|
62
|
-
import { addons } from "@storybook/preview-api";
|
|
63
|
-
import React3, { memo, useCallback, useEffect, useState } from "react";
|
|
64
|
-
import { DARK_MODE_EVENT_NAME } from "storybook-dark-mode";
|
|
65
|
-
import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
|
|
66
|
-
import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
|
|
67
|
-
import { createComponent } from "@dxos/lit-ui/react";
|
|
68
|
-
import { ThemeProvider, Tooltip, Dialog, IconButton } from "@dxos/react-ui";
|
|
66
|
+
// src/decorators/withTheme.tsx
|
|
67
|
+
import React3, { memo as memo2 } from "react";
|
|
68
|
+
import { ThemeProvider, Tooltip } from "@dxos/react-ui";
|
|
69
69
|
import { defaultTx } from "@dxos/react-ui-theme";
|
|
70
|
-
import { PARAM_KEY } from "@dxos/theme-editor-addon";
|
|
71
|
-
var DxThemeEditor = createComponent({
|
|
72
|
-
tagName: "dx-theme-editor",
|
|
73
|
-
elementClass: NaturalDxThemeEditor,
|
|
74
|
-
react: React3
|
|
75
|
-
});
|
|
76
70
|
var withTheme = (Story, context) => {
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
const [editorOpen, setEditorOpen] = useState(false);
|
|
80
|
-
const handleOpenChange = useCallback((nextOpen) => {
|
|
81
|
-
setEditorOpen(nextOpen);
|
|
82
|
-
}, []);
|
|
83
|
-
useEffect(() => {
|
|
84
|
-
const handleDarkModeUpdate = (darkMode) => setThemeMode(darkMode ? "dark" : "light");
|
|
85
|
-
addons.getChannel().on(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);
|
|
86
|
-
return () => addons.getChannel().off(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);
|
|
87
|
-
}, []);
|
|
88
|
-
useEffect(() => {
|
|
89
|
-
const openEditor = () => {
|
|
90
|
-
handleOpenChange(true);
|
|
91
|
-
};
|
|
92
|
-
addons.getChannel().on(PARAM_KEY, openEditor);
|
|
93
|
-
return () => addons.getChannel().off(PARAM_KEY, openEditor);
|
|
94
|
-
}, []);
|
|
71
|
+
const { globals: { theme }, parameters: { translations } } = context;
|
|
72
|
+
const MemoizedStory = /* @__PURE__ */ memo2(Story);
|
|
95
73
|
return /* @__PURE__ */ React3.createElement(ThemeProvider, {
|
|
96
74
|
tx: defaultTx,
|
|
97
|
-
themeMode,
|
|
98
|
-
resourceExtensions:
|
|
75
|
+
themeMode: theme,
|
|
76
|
+
resourceExtensions: translations,
|
|
99
77
|
noCache: true
|
|
100
|
-
}, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(MemoizedStory, null)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
style: {
|
|
113
|
-
maxBlockSize: "50dvh"
|
|
114
|
-
},
|
|
115
|
-
onInteractOutside: (event) => event.preventDefault()
|
|
116
|
-
}, /* @__PURE__ */ React3.createElement(Dialog.Title, {
|
|
117
|
-
srOnly: true
|
|
118
|
-
}, "Theme Editor"), editorOpen && /* @__PURE__ */ React3.createElement(DxThemeEditor, null), /* @__PURE__ */ React3.createElement(Dialog.Close, {
|
|
119
|
-
asChild: true
|
|
120
|
-
}, /* @__PURE__ */ React3.createElement(IconButton, {
|
|
121
|
-
iconOnly: true,
|
|
122
|
-
icon: "ph--x--regular",
|
|
123
|
-
label: "Close",
|
|
124
|
-
classNames: "absolute block-start-2 inline-end-2"
|
|
125
|
-
})))))));
|
|
78
|
+
}, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(MemoizedStory, null)));
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/decorators/withThemeEditor.tsx
|
|
82
|
+
import React4, { memo as memo3 } from "react";
|
|
83
|
+
var withThemeEditor = (Story, context) => {
|
|
84
|
+
const MemoizedStory = /* @__PURE__ */ memo3(Story);
|
|
85
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(MemoizedStory, null), /* @__PURE__ */ React4.createElement("div", {
|
|
86
|
+
className: "absolute top-4 bottom-4 right-4 z-10"
|
|
87
|
+
}, /* @__PURE__ */ React4.createElement("div", {
|
|
88
|
+
className: "h-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded"
|
|
89
|
+
}, /* @__PURE__ */ React4.createElement(ThemeEditor, null))));
|
|
126
90
|
};
|
|
127
91
|
|
|
128
|
-
//
|
|
129
|
-
import
|
|
130
|
-
var render = (r) => (args) => /* @__PURE__ */
|
|
92
|
+
// src/util.tsx
|
|
93
|
+
import React5 from "react";
|
|
94
|
+
var render = (r) => (args) => /* @__PURE__ */ React5.createElement(React5.Fragment, null, r(args) ?? /* @__PURE__ */ React5.createElement("div", null));
|
|
131
95
|
|
|
132
|
-
//
|
|
133
|
-
|
|
96
|
+
// src/index.ts
|
|
97
|
+
registerSignalsRuntime();
|
|
134
98
|
export {
|
|
135
99
|
ColumnContainer,
|
|
136
100
|
DefaultContainer,
|
|
137
|
-
|
|
101
|
+
FullscreenContainer,
|
|
102
|
+
ThemeEditor,
|
|
103
|
+
layoutCentered,
|
|
138
104
|
render,
|
|
139
105
|
withLayout,
|
|
140
|
-
|
|
141
|
-
|
|
106
|
+
withTheme,
|
|
107
|
+
withThemeEditor
|
|
142
108
|
};
|
|
143
109
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/index.ts", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\n\nexport { type Meta } from '@storybook/react';\n\nexport * from './decorators';\nexport * from './util';\n\nregisterSignalsRuntime();\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport React, { type PropsWithChildren, type JSX, type FC } from 'react';\n\nimport { type Density, DensityProvider, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\ntype ProviderOptions = {\n fullscreen?: boolean;\n density?: Density;\n};\n\nconst defaultOptions: ProviderOptions = {\n density: 'fine',\n};\n\ntype Provider = (children: JSX.Element, options: ProviderOptions) => JSX.Element;\n\nconst providers: Provider[] = [\n (children, options) => {\n return options?.density ? <DensityProvider density={options.density}>{children}</DensityProvider> : children;\n },\n];\n\nexport type ContainerProps = ThemedClassName<PropsWithChildren<Pick<ProviderOptions, 'fullscreen'>>>;\n\nexport type WithLayoutProps = ThemedClassName<ProviderOptions & { Container?: FC<ContainerProps> }>;\n\n/**\n * Decorator to layout the story container, adding optional providers.\n */\nexport const withLayout = ({\n classNames,\n fullscreen,\n Container = fullscreen ?
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,
|
|
6
|
-
"names": ["registerSignalsRuntime", "
|
|
3
|
+
"sources": ["../../../src/index.ts", "../../../src/components/ThemeEditor.tsx", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/withTheme.tsx", "../../../src/decorators/withThemeEditor.tsx", "../../../src/util.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\n\nexport { type Meta } from '@storybook/react';\n\nexport * from './components';\nexport * from './decorators';\nexport * from './util';\n\nregisterSignalsRuntime();\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { memo } from 'react';\n\nimport { DxThemeEditor as NaturalDxThemeEditor } from '@dxos/lit-theme-editor';\nimport { createComponent } from '@dxos/lit-ui/react';\n\nimport '@dxos/lit-theme-editor/dx-theme-editor.pcss';\n\nconst DxThemeEditor = createComponent({\n tagName: 'dx-theme-editor',\n elementClass: NaturalDxThemeEditor,\n react: React,\n});\n\nexport const ThemeEditor = memo(DxThemeEditor);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport React, { type PropsWithChildren, type JSX, type FC } from 'react';\n\nimport { type Density, DensityProvider, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\ntype ProviderOptions = {\n fullscreen?: boolean;\n density?: Density;\n};\n\nconst defaultOptions: ProviderOptions = {\n density: 'fine',\n};\n\ntype Provider = (children: JSX.Element, options: ProviderOptions) => JSX.Element;\n\nconst providers: Provider[] = [\n (children, options) => {\n return options?.density ? <DensityProvider density={options.density}>{children}</DensityProvider> : children;\n },\n];\n\nexport type ContainerProps = ThemedClassName<PropsWithChildren<Pick<ProviderOptions, 'fullscreen'>>>;\n\nexport type WithLayoutProps = ThemedClassName<ProviderOptions & { Container?: FC<ContainerProps> }>;\n\n/**\n * Decorator to layout the story container, adding optional providers.\n */\nexport const withLayout = ({\n classNames,\n fullscreen,\n Container = fullscreen ? FullscreenContainer : DefaultContainer,\n ...providedOptions\n}: WithLayoutProps = {}): Decorator => {\n // TODO(burdon): Inspect \"fullscreen\" parameter in context.\n return (Story, _context) => {\n const children = (\n <Container classNames={classNames} fullscreen={fullscreen}>\n <Story />\n </Container>\n );\n\n const options = defaultsDeep({}, providedOptions, defaultOptions);\n return providers.reduceRight((acc, provider) => provider(acc, options), children);\n };\n};\n\n// TODO(burdon): Use consistently.\nexport const layoutCentered = 'bg-deckSurface justify-center overflow-y-auto';\n\nexport const DefaultContainer = ({ children, classNames }: ContainerProps) => {\n return (\n <div role='none' className={mx(classNames)}>\n {children}\n </div>\n );\n};\n\nexport const FullscreenContainer = ({ children, classNames }: ContainerProps) => {\n return (\n <div role='none' className={mx('fixed inset-0 flex overflow-hidden', classNames)}>\n {children}\n </div>\n );\n};\n\nexport const ColumnContainer = ({ children, classNames = 'w-[30rem]', ...props }: ContainerProps) => {\n return (\n <FullscreenContainer classNames='justify-center bg-modalSurface' {...props}>\n <div role='none' className={mx('flex flex-col h-full overflow-y-auto bg-baseSurface', classNames)}>\n {children}\n </div>\n </FullscreenContainer>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { memo } from 'react';\n\nimport { type ThemeMode, ThemeProvider, Tooltip } from '@dxos/react-ui';\nimport { defaultTx } from '@dxos/react-ui-theme';\n\n/**\n * Adds theme decorator.\n */\nexport const withTheme: Decorator = (Story, context) => {\n const {\n globals: { theme },\n parameters: { translations },\n } = context;\n\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <ThemeProvider tx={defaultTx} themeMode={theme as ThemeMode} resourceExtensions={translations} noCache>\n <Tooltip.Provider>\n <MemoizedStory />\n </Tooltip.Provider>\n </ThemeProvider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { memo } from 'react';\n\nimport { ThemeEditor } from '../components';\n\n/**\n * Show theme editor.\n */\n// TODO(burdon): Ideally move to storybook-addon-theme, but this has a build issue since the addon would depend on the vite theme plugin.\nexport const withThemeEditor: Decorator = (Story, context) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <>\n <MemoizedStory />\n <div className='absolute top-4 bottom-4 right-4 z-10'>\n <div className='h-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded'>\n <ThemeEditor />\n </div>\n </div>\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\n/**\n * Story renderer wrapper.\n */\nexport const render =\n <T,>(r: FC<T>) =>\n (args: T) => <>{r(args) ?? <div />}</>;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["registerSignalsRuntime", "React", "memo", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "ThemeEditor", "memo", "defaultsDeep", "React", "DensityProvider", "mx", "defaultOptions", "density", "providers", "children", "options", "React", "DensityProvider", "withLayout", "classNames", "fullscreen", "Container", "FullscreenContainer", "DefaultContainer", "providedOptions", "Story", "_context", "defaultsDeep", "reduceRight", "acc", "provider", "layoutCentered", "div", "role", "className", "mx", "ColumnContainer", "props", "React", "memo", "ThemeProvider", "Tooltip", "defaultTx", "withTheme", "Story", "context", "globals", "theme", "parameters", "translations", "MemoizedStory", "memo", "React", "ThemeProvider", "tx", "defaultTx", "themeMode", "resourceExtensions", "noCache", "Tooltip", "Provider", "React", "memo", "withThemeEditor", "Story", "context", "MemoizedStory", "memo", "React", "div", "className", "ThemeEditor", "React", "render", "r", "args", "React", "div", "registerSignalsRuntime"]
|
|
7
7
|
}
|