@dxos/storybook-utils 0.8.3 → 0.8.4-main.1068cf700f

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.
Files changed (59) hide show
  1. package/dist/lib/browser/index.mjs +48 -127
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +48 -127
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/DocsContainer.d.ts +4 -0
  8. package/dist/types/src/components/DocsContainer.d.ts.map +1 -0
  9. package/dist/types/src/components/ThemeEditor.d.ts +5 -0
  10. package/dist/types/src/components/ThemeEditor.d.ts.map +1 -0
  11. package/dist/types/src/components/index.d.ts +2 -0
  12. package/dist/types/src/components/index.d.ts.map +1 -0
  13. package/dist/types/src/decorators/index.d.ts +2 -2
  14. package/dist/types/src/decorators/index.d.ts.map +1 -1
  15. package/dist/types/src/decorators/withLayout.d.ts +1 -18
  16. package/dist/types/src/decorators/withLayout.d.ts.map +1 -1
  17. package/dist/types/src/decorators/withRegistry.d.ts +6 -0
  18. package/dist/types/src/decorators/withRegistry.d.ts.map +1 -0
  19. package/dist/types/src/decorators/withThemeEditor.d.ts +6 -0
  20. package/dist/types/src/decorators/withThemeEditor.d.ts.map +1 -0
  21. package/dist/types/src/index.d.ts +1 -1
  22. package/dist/types/src/index.d.ts.map +1 -1
  23. package/dist/types/src/stories/test/Test.d.ts +6 -0
  24. package/dist/types/src/stories/test/Test.d.ts.map +1 -0
  25. package/dist/types/src/stories/test/Test.stories.d.ts +11 -0
  26. package/dist/types/src/stories/test/Test.stories.d.ts.map +1 -0
  27. package/dist/types/src/stories/test/Test.test.d.ts +2 -0
  28. package/dist/types/src/stories/test/Test.test.d.ts.map +1 -0
  29. package/dist/types/src/util.d.ts +1 -1
  30. package/dist/types/src/util.d.ts.map +1 -1
  31. package/dist/types/src/vitest-setup.d.ts +2 -0
  32. package/dist/types/src/vitest-setup.d.ts.map +1 -0
  33. package/dist/types/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +25 -20
  35. package/src/components/DocsContainer.tsx +18 -0
  36. package/src/components/ThemeEditor.tsx +18 -0
  37. package/src/components/index.ts +5 -0
  38. package/src/decorators/index.ts +2 -2
  39. package/src/decorators/withLayout.tsx +15 -74
  40. package/src/decorators/withRegistry.tsx +23 -0
  41. package/src/decorators/withThemeEditor.tsx +28 -0
  42. package/src/index.ts +1 -6
  43. package/src/stories/test/Test.stories.tsx +61 -0
  44. package/src/stories/test/Test.test.tsx +30 -0
  45. package/src/stories/test/Test.tsx +15 -0
  46. package/src/stories/test/__snapshots__/Test.test.tsx.snap +3 -0
  47. package/src/stories/test/index.mdx__ +17 -0
  48. package/src/util.tsx +5 -2
  49. package/src/vitest-setup.ts +11 -0
  50. package/README.yml +0 -1
  51. package/dist/lib/node/index.cjs +0 -170
  52. package/dist/lib/node/index.cjs.map +0 -7
  53. package/dist/lib/node/meta.json +0 -1
  54. package/dist/types/src/decorators/withSignals.d.ts +0 -6
  55. package/dist/types/src/decorators/withSignals.d.ts.map +0 -1
  56. package/dist/types/src/decorators/withTheme.d.ts +0 -7
  57. package/dist/types/src/decorators/withTheme.d.ts.map +0 -1
  58. package/src/decorators/withSignals.tsx +0 -16
  59. package/src/decorators/withTheme.tsx +0 -84
@@ -1,141 +1,62 @@
1
- // packages/common/storybook-utils/src/index.ts
2
- import { registerSignalsRuntime as registerSignalsRuntime2 } from "@dxos/echo-signals/react";
3
-
4
- // packages/common/storybook-utils/src/decorators/withLayout.tsx
5
- import defaultsDeep from "lodash.defaultsdeep";
6
- import React from "react";
7
- import { DensityProvider } from "@dxos/react-ui";
8
- import { mx } from "@dxos/react-ui-theme";
9
- var defaultOptions = {
10
- density: "fine"
11
- };
12
- var providers = [
13
- (children, options) => {
14
- return options?.density ? /* @__PURE__ */ React.createElement(DensityProvider, {
15
- density: options.density
16
- }, children) : children;
17
- }
18
- ];
19
- var withLayout = ({ classNames, fullscreen, Container = fullscreen ? FixedContainer : DefaultContainer, ...providedOptions } = {}) => {
20
- return (Story, _context) => {
21
- const children = /* @__PURE__ */ React.createElement(Container, {
22
- classNames,
23
- fullscreen
24
- }, /* @__PURE__ */ React.createElement(Story, null));
25
- const options = defaultsDeep({}, providedOptions, defaultOptions);
26
- return providers.reduceRight((acc, provider) => provider(acc, options), children);
27
- };
28
- };
29
- var DefaultContainer = ({ children, classNames }) => {
30
- return /* @__PURE__ */ React.createElement("div", {
31
- role: "none",
32
- className: mx(classNames)
33
- }, children);
34
- };
35
- var FixedContainer = ({ children, classNames }) => {
36
- return /* @__PURE__ */ React.createElement("div", {
37
- role: "none",
38
- className: mx("fixed inset-0 flex overflow-hidden", classNames)
39
- }, children);
40
- };
41
- var ColumnContainer = ({ children, classNames = "w-[30rem]", ...props }) => {
42
- return /* @__PURE__ */ React.createElement(FixedContainer, {
43
- classNames: "justify-center bg-modalSurface",
44
- ...props
45
- }, /* @__PURE__ */ React.createElement("div", {
46
- role: "none",
47
- className: mx("flex flex-col h-full overflow-y-auto bg-baseSurface", classNames)
48
- }, children));
49
- };
50
-
51
- // packages/common/storybook-utils/src/decorators/withSignals.tsx
52
- import React2 from "react";
53
- import { registerSignalsRuntime } from "@dxos/echo-signals/react";
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";
1
+ // src/components/ThemeEditor.tsx
2
+ import React, { memo } from "react";
63
3
  import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
64
- import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
65
4
  import { createComponent } from "@dxos/lit-ui/react";
66
- import { ThemeProvider, Tooltip, Dialog, IconButton } from "@dxos/react-ui";
67
- import { defaultTx } from "@dxos/react-ui-theme";
68
- import { PARAM_KEY } from "@dxos/theme-editor-addon";
5
+ import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
69
6
  var DxThemeEditor = createComponent({
70
7
  tagName: "dx-theme-editor",
71
8
  elementClass: NaturalDxThemeEditor,
72
- react: React3
9
+ react: React
73
10
  });
74
- var withTheme = (Story, context) => {
75
- const MemoizedStory = /* @__PURE__ */ memo(Story);
76
- const [themeMode, setThemeMode] = useState("dark");
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
- }, []);
93
- return /* @__PURE__ */ React3.createElement(ThemeProvider, {
94
- tx: defaultTx,
95
- themeMode,
96
- resourceExtensions: context?.parameters?.translations,
97
- noCache: true
98
- }, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(MemoizedStory, null), /* @__PURE__ */ React3.createElement(Dialog.Root, {
99
- open: editorOpen,
100
- onOpenChange: handleOpenChange,
101
- modal: false
102
- }, /* @__PURE__ */ React3.createElement("div", {
103
- role: "none",
104
- className: "dx-dialog__overlay bg-transparent pointer-events-none",
105
- style: {
106
- placeContent: "end"
107
- }
108
- }, /* @__PURE__ */ React3.createElement(Dialog.Content, {
109
- classNames: "relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-y-auto layout-contain pointer-events-auto",
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
- })))))));
11
+ var ThemeEditor = /* @__PURE__ */ memo(DxThemeEditor);
12
+
13
+ // src/decorators/withLayout.tsx
14
+ import React2 from "react";
15
+ var withLayout = (Story, context) => {
16
+ switch (context.parameters.layout) {
17
+ case "fullscreen":
18
+ return /* @__PURE__ */ React2.createElement("div", {
19
+ role: "none",
20
+ className: "fixed inset-0 flex flex-col overflow-hidden bg-baseSurface"
21
+ }, /* @__PURE__ */ React2.createElement(Story, null));
22
+ default:
23
+ return /* @__PURE__ */ React2.createElement(Story, null);
24
+ }
124
25
  };
125
26
 
126
- // packages/common/storybook-utils/src/util.tsx
127
- import React4 from "react";
128
- var render = (r) => (args) => /* @__PURE__ */ React4.createElement(React4.Fragment, null, r(args) ?? /* @__PURE__ */ React4.createElement("div", null));
27
+ // src/decorators/withRegistry.tsx
28
+ import { Registry, RegistryContext } from "@effect-atom/atom-react";
29
+ import React3, { memo as memo2, useMemo } from "react";
30
+ var withRegistry = (Story) => {
31
+ const registry = useMemo(() => Registry.make(), []);
32
+ const MemoizedStory = /* @__PURE__ */ memo2(Story);
33
+ return /* @__PURE__ */ React3.createElement(RegistryContext.Provider, {
34
+ value: registry
35
+ }, /* @__PURE__ */ React3.createElement(MemoizedStory, null));
36
+ };
129
37
 
130
- // packages/common/storybook-utils/src/index.ts
131
- registerSignalsRuntime2();
38
+ // src/decorators/withThemeEditor.tsx
39
+ import React4, { memo as memo3 } from "react";
40
+ var withThemeEditor = (Story, context) => {
41
+ const MemoizedStory = /* @__PURE__ */ memo3(Story);
42
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(MemoizedStory, null), /* @__PURE__ */ React4.createElement("div", {
43
+ className: "absolute top-4 bottom-4 right-4 z-10"
44
+ }, /* @__PURE__ */ React4.createElement("div", {
45
+ className: "bs-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded"
46
+ }, /* @__PURE__ */ React4.createElement(ThemeEditor, null))));
47
+ };
48
+
49
+ // src/util.tsx
50
+ import React5 from "react";
51
+ var render = (Story) => (args) => {
52
+ const result = /* @__PURE__ */ React5.createElement(Story, args);
53
+ return result ?? /* @__PURE__ */ React5.createElement("div", null);
54
+ };
132
55
  export {
133
- ColumnContainer,
134
- DefaultContainer,
135
- FixedContainer,
56
+ ThemeEditor,
136
57
  render,
137
58
  withLayout,
138
- withSignals,
139
- withTheme
59
+ withRegistry,
60
+ withThemeEditor
140
61
  };
141
62
  //# 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/withSignals.tsx", "../../../src/decorators/withTheme.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 './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 ? FixedContainer : 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\nexport const DefaultContainer: FC<ContainerProps> = ({ children, classNames }) => {\n return (\n <div role='none' className={mx(classNames)}>\n {children}\n </div>\n );\n};\n\nexport const FixedContainer: FC<ContainerProps> = ({ children, classNames }) => {\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: FC<ContainerProps> = ({ children, classNames = 'w-[30rem]', ...props }) => {\n return (\n <FixedContainer 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 </FixedContainer>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React from 'react';\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\n\n/**\n * Make objects created using @dxos/echo-schema `create` reactive.\n */\nexport const withSignals: Decorator = (Story) => {\n registerSignalsRuntime();\n return <Story />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { addons } from '@storybook/preview-api';\nimport { type Decorator } from '@storybook/react';\nimport React, { memo, useCallback, useEffect, useState } from 'react';\nimport { DARK_MODE_EVENT_NAME } from 'storybook-dark-mode';\n\nimport { DxThemeEditor as NaturalDxThemeEditor } from '@dxos/lit-theme-editor';\nimport '@dxos/lit-theme-editor/dx-theme-editor.pcss';\nimport { createComponent } from '@dxos/lit-ui/react';\nimport { type ThemeMode, ThemeProvider, Tooltip, Dialog, IconButton } from '@dxos/react-ui';\nimport { defaultTx } from '@dxos/react-ui-theme';\nimport { PARAM_KEY } from '@dxos/theme-editor-addon';\n\nconst DxThemeEditor = createComponent({\n tagName: 'dx-theme-editor',\n elementClass: NaturalDxThemeEditor,\n react: React,\n});\n\n/**\n * Changes theme based on storybook toolbar toggle.\n */\nexport const withTheme: Decorator = (Story, context) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n const [themeMode, setThemeMode] = useState<ThemeMode>('dark');\n const [editorOpen, setEditorOpen] = useState(false);\n\n const handleOpenChange = useCallback((nextOpen: boolean) => {\n setEditorOpen(nextOpen);\n }, []);\n\n // https://www.npmjs.com/package/storybook-dark-mode\n // NOTE: The `useDarkMode` hook causes the story to continually re-render.\n // NOTE: Changing the theme will cause the story to remount.\n useEffect(() => {\n const handleDarkModeUpdate = (darkMode: boolean) => setThemeMode(darkMode ? 'dark' : 'light');\n addons.getChannel().on(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);\n return () => addons.getChannel().off(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);\n }, []);\n\n useEffect(() => {\n const openEditor = () => {\n handleOpenChange(true);\n };\n addons.getChannel().on(PARAM_KEY, openEditor);\n return () => addons.getChannel().off(PARAM_KEY, openEditor);\n }, []);\n\n return (\n <ThemeProvider tx={defaultTx} themeMode={themeMode} resourceExtensions={context?.parameters?.translations} noCache>\n <Tooltip.Provider>\n <MemoizedStory />\n <Dialog.Root open={editorOpen} onOpenChange={handleOpenChange} modal={false}>\n <div\n role='none'\n className='dx-dialog__overlay bg-transparent pointer-events-none'\n style={{ placeContent: 'end' }}\n >\n <Dialog.Content\n classNames='relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-y-auto layout-contain pointer-events-auto'\n style={{ maxBlockSize: '50dvh' }}\n onInteractOutside={(event) => event.preventDefault()}\n >\n <Dialog.Title srOnly>Theme Editor</Dialog.Title>\n {editorOpen && <DxThemeEditor />}\n <Dialog.Close asChild>\n <IconButton\n iconOnly\n icon='ph--x--regular'\n label='Close'\n classNames='absolute block-start-2 inline-end-2'\n />\n </Dialog.Close>\n </Dialog.Content>\n </div>\n </Dialog.Root>\n </Tooltip.Provider>\n </ThemeProvider>\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", "defaultsDeep", "React", "DensityProvider", "mx", "defaultOptions", "density", "providers", "children", "options", "DensityProvider", "withLayout", "classNames", "fullscreen", "Container", "FixedContainer", "DefaultContainer", "providedOptions", "Story", "_context", "defaultsDeep", "reduceRight", "acc", "provider", "div", "role", "className", "mx", "ColumnContainer", "props", "React", "registerSignalsRuntime", "withSignals", "Story", "registerSignalsRuntime", "React", "addons", "React", "memo", "useCallback", "useEffect", "useState", "DARK_MODE_EVENT_NAME", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "ThemeProvider", "Tooltip", "Dialog", "IconButton", "defaultTx", "PARAM_KEY", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "withTheme", "Story", "context", "MemoizedStory", "memo", "themeMode", "setThemeMode", "useState", "editorOpen", "setEditorOpen", "handleOpenChange", "useCallback", "nextOpen", "useEffect", "handleDarkModeUpdate", "darkMode", "addons", "getChannel", "on", "DARK_MODE_EVENT_NAME", "off", "openEditor", "PARAM_KEY", "ThemeProvider", "tx", "defaultTx", "resourceExtensions", "parameters", "translations", "noCache", "Tooltip", "Provider", "Dialog", "Root", "open", "onOpenChange", "modal", "div", "role", "className", "style", "placeContent", "Content", "classNames", "maxBlockSize", "onInteractOutside", "event", "preventDefault", "Title", "srOnly", "Close", "asChild", "IconButton", "iconOnly", "icon", "label", "React", "render", "r", "args", "React", "div", "registerSignalsRuntime"]
3
+ "sources": ["../../../src/components/ThemeEditor.tsx", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/withRegistry.tsx", "../../../src/decorators/withThemeEditor.tsx", "../../../src/util.tsx"],
4
+ "sourcesContent": ["//\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 2025 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React from 'react';\n\nexport const withLayout: Decorator = (Story, context) => {\n switch (context.parameters.layout) {\n case 'fullscreen':\n return (\n <div role='none' className='fixed inset-0 flex flex-col overflow-hidden bg-baseSurface'>\n <Story />\n </div>\n );\n\n default:\n return <Story />;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { type Decorator } from '@storybook/react';\nimport React, { memo, useMemo } from 'react';\n\n/**\n * Adds Effect Atom registry context for storybook.\n */\nexport const withRegistry: Decorator = (Story) => {\n const registry = useMemo(() => Registry.make(), []);\n\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <RegistryContext.Provider value={registry}>\n <MemoizedStory />\n </RegistryContext.Provider>\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/ThemeEditor';\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='bs-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 extends Record<string, any>>(Story: FC<T>) =>\n (args: unknown) => {\n const result = <Story {...(args as T)} />;\n return result ?? <div />;\n };\n"],
5
+ "mappings": ";AAIA,OAAOA,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,YAAW;AAEX,IAAMC,aAAwB,CAACC,OAAOC,YAAAA;AAC3C,UAAQA,QAAQC,WAAWC,QAAM;IAC/B,KAAK;AACH,aACE,gBAAAC,OAAA,cAACC,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,gBAAAH,OAAA,cAACJ,OAAAA,IAAAA,CAAAA;IAIP;AACE,aAAO,gBAAAI,OAAA,cAACJ,OAAAA,IAAAA;EACZ;AACF;;;ACfA,SAASQ,UAAUC,uBAAuB;AAE1C,OAAOC,UAASC,QAAAA,OAAMC,eAAe;AAK9B,IAAMC,eAA0B,CAACC,UAAAA;AACtC,QAAMC,WAAWC,QAAQ,MAAMC,SAASC,KAAI,GAAI,CAAA,CAAE;AAGlD,QAAMC,gBAAgBC,gBAAAA,MAAKN,KAAAA;AAE3B,SACE,gBAAAO,OAAA,cAACC,gBAAgBC,UAAQ;IAACC,OAAOT;KAC/B,gBAAAM,OAAA,cAACF,eAAAA,IAAAA,CAAAA;AAGP;;;ACjBA,OAAOM,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,CAAgCC,UAChC,CAACC,SAAAA;AACC,QAAMC,SAAS,gBAAAC,OAAA,cAACH,OAAWC,IAAAA;AAC3B,SAAOC,UAAU,gBAAAC,OAAA,cAACC,OAAAA,IAAAA;AACpB;",
6
+ "names": ["React", "memo", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "ThemeEditor", "memo", "React", "withLayout", "Story", "context", "parameters", "layout", "React", "div", "role", "className", "Registry", "RegistryContext", "React", "memo", "useMemo", "withRegistry", "Story", "registry", "useMemo", "Registry", "make", "MemoizedStory", "memo", "React", "RegistryContext", "Provider", "value", "React", "memo", "withThemeEditor", "Story", "context", "MemoizedStory", "memo", "React", "div", "className", "ThemeEditor", "React", "render", "Story", "args", "result", "React", "div"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/common/storybook-utils/src/decorators/withLayout.tsx":{"bytes":7364,"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"},"packages/common/storybook-utils/src/decorators/withSignals.tsx":{"bytes":1400,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true}],"format":"esm"},"packages/common/storybook-utils/src/decorators/withTheme.tsx":{"bytes":10989,"imports":[{"path":"@storybook/preview-api","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"storybook-dark-mode","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/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":"@dxos/theme-editor-addon","kind":"import-statement","external":true}],"format":"esm"},"packages/common/storybook-utils/src/decorators/index.ts":{"bytes":676,"imports":[{"path":"packages/common/storybook-utils/src/decorators/withLayout.tsx","kind":"import-statement","original":"./withLayout"},{"path":"packages/common/storybook-utils/src/decorators/withSignals.tsx","kind":"import-statement","original":"./withSignals"},{"path":"packages/common/storybook-utils/src/decorators/withTheme.tsx","kind":"import-statement","original":"./withTheme"}],"format":"esm"},"packages/common/storybook-utils/src/util.tsx":{"bytes":1012,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/common/storybook-utils/src/index.ts":{"bytes":930,"imports":[{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"packages/common/storybook-utils/src/decorators/index.ts","kind":"import-statement","original":"./decorators"},{"path":"packages/common/storybook-utils/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/common/storybook-utils/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11326},"packages/common/storybook-utils/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/echo-signals/react","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/echo-signals/react","kind":"import-statement","external":true},{"path":"@storybook/preview-api","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"storybook-dark-mode","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/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":"@dxos/theme-editor-addon","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ColumnContainer","DefaultContainer","FixedContainer","render","withLayout","withSignals","withTheme"],"entryPoint":"packages/common/storybook-utils/src/index.ts","inputs":{"packages/common/storybook-utils/src/index.ts":{"bytesInOutput":121},"packages/common/storybook-utils/src/decorators/withLayout.tsx":{"bytesInOutput":1671},"packages/common/storybook-utils/src/decorators/index.ts":{"bytesInOutput":0},"packages/common/storybook-utils/src/decorators/withSignals.tsx":{"bytesInOutput":217},"packages/common/storybook-utils/src/decorators/withTheme.tsx":{"bytesInOutput":2803},"packages/common/storybook-utils/src/util.tsx":{"bytesInOutput":181}},"bytes":5492}}}
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":480,"imports":[{"path":"src/components/ThemeEditor.tsx","kind":"import-statement","original":"./ThemeEditor"}],"format":"esm"},"src/decorators/withLayout.tsx":{"bytes":1803,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withRegistry.tsx":{"bytes":2217,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withThemeEditor.tsx":{"bytes":2746,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/ThemeEditor.tsx","kind":"import-statement","original":"../components/ThemeEditor"}],"format":"esm"},"src/decorators/index.ts":{"bytes":682,"imports":[{"path":"src/decorators/withLayout.tsx","kind":"import-statement","original":"./withLayout"},{"path":"src/decorators/withRegistry.tsx","kind":"import-statement","original":"./withRegistry"},{"path":"src/decorators/withThemeEditor.tsx","kind":"import-statement","original":"./withThemeEditor"}],"format":"esm"},"src/util.tsx":{"bytes":1228,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":634,"imports":[{"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":4806},"dist/lib/browser/index.mjs":{"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},{"path":"react","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ThemeEditor","render","withLayout","withRegistry","withThemeEditor"],"entryPoint":"src/index.ts","inputs":{"src/components/ThemeEditor.tsx":{"bytesInOutput":405},"src/components/index.ts":{"bytesInOutput":0},"src/index.ts":{"bytesInOutput":0},"src/decorators/withLayout.tsx":{"bytesInOutput":435},"src/decorators/index.ts":{"bytesInOutput":0},"src/decorators/withRegistry.tsx":{"bytesInOutput":428},"src/decorators/withThemeEditor.tsx":{"bytesInOutput":589},"src/util.tsx":{"bytesInOutput":205}},"bytes":2342}}}
@@ -1,143 +1,64 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
- // packages/common/storybook-utils/src/index.ts
4
- import { registerSignalsRuntime as registerSignalsRuntime2 } from "@dxos/echo-signals/react";
5
-
6
- // packages/common/storybook-utils/src/decorators/withLayout.tsx
7
- import defaultsDeep from "lodash.defaultsdeep";
8
- import React from "react";
9
- import { DensityProvider } from "@dxos/react-ui";
10
- import { mx } from "@dxos/react-ui-theme";
11
- var defaultOptions = {
12
- density: "fine"
13
- };
14
- var providers = [
15
- (children, options) => {
16
- return options?.density ? /* @__PURE__ */ React.createElement(DensityProvider, {
17
- density: options.density
18
- }, children) : children;
19
- }
20
- ];
21
- var withLayout = ({ classNames, fullscreen, Container = fullscreen ? FixedContainer : DefaultContainer, ...providedOptions } = {}) => {
22
- return (Story, _context) => {
23
- const children = /* @__PURE__ */ React.createElement(Container, {
24
- classNames,
25
- fullscreen
26
- }, /* @__PURE__ */ React.createElement(Story, null));
27
- const options = defaultsDeep({}, providedOptions, defaultOptions);
28
- return providers.reduceRight((acc, provider) => provider(acc, options), children);
29
- };
30
- };
31
- var DefaultContainer = ({ children, classNames }) => {
32
- return /* @__PURE__ */ React.createElement("div", {
33
- role: "none",
34
- className: mx(classNames)
35
- }, children);
36
- };
37
- var FixedContainer = ({ children, classNames }) => {
38
- return /* @__PURE__ */ React.createElement("div", {
39
- role: "none",
40
- className: mx("fixed inset-0 flex overflow-hidden", classNames)
41
- }, children);
42
- };
43
- var ColumnContainer = ({ children, classNames = "w-[30rem]", ...props }) => {
44
- return /* @__PURE__ */ React.createElement(FixedContainer, {
45
- classNames: "justify-center bg-modalSurface",
46
- ...props
47
- }, /* @__PURE__ */ React.createElement("div", {
48
- role: "none",
49
- className: mx("flex flex-col h-full overflow-y-auto bg-baseSurface", classNames)
50
- }, children));
51
- };
52
-
53
- // packages/common/storybook-utils/src/decorators/withSignals.tsx
54
- import React2 from "react";
55
- import { registerSignalsRuntime } from "@dxos/echo-signals/react";
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";
3
+ // src/components/ThemeEditor.tsx
4
+ import React, { memo } from "react";
65
5
  import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
66
- import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
67
6
  import { createComponent } from "@dxos/lit-ui/react";
68
- import { ThemeProvider, Tooltip, Dialog, IconButton } from "@dxos/react-ui";
69
- import { defaultTx } from "@dxos/react-ui-theme";
70
- import { PARAM_KEY } from "@dxos/theme-editor-addon";
7
+ import "@dxos/lit-theme-editor/dx-theme-editor.pcss";
71
8
  var DxThemeEditor = createComponent({
72
9
  tagName: "dx-theme-editor",
73
10
  elementClass: NaturalDxThemeEditor,
74
- react: React3
11
+ react: React
75
12
  });
76
- var withTheme = (Story, context) => {
77
- const MemoizedStory = /* @__PURE__ */ memo(Story);
78
- const [themeMode, setThemeMode] = useState("dark");
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
- }, []);
95
- return /* @__PURE__ */ React3.createElement(ThemeProvider, {
96
- tx: defaultTx,
97
- themeMode,
98
- resourceExtensions: context?.parameters?.translations,
99
- noCache: true
100
- }, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(MemoizedStory, null), /* @__PURE__ */ React3.createElement(Dialog.Root, {
101
- open: editorOpen,
102
- onOpenChange: handleOpenChange,
103
- modal: false
104
- }, /* @__PURE__ */ React3.createElement("div", {
105
- role: "none",
106
- className: "dx-dialog__overlay bg-transparent pointer-events-none",
107
- style: {
108
- placeContent: "end"
109
- }
110
- }, /* @__PURE__ */ React3.createElement(Dialog.Content, {
111
- classNames: "relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-y-auto layout-contain pointer-events-auto",
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
- })))))));
13
+ var ThemeEditor = /* @__PURE__ */ memo(DxThemeEditor);
14
+
15
+ // src/decorators/withLayout.tsx
16
+ import React2 from "react";
17
+ var withLayout = (Story, context) => {
18
+ switch (context.parameters.layout) {
19
+ case "fullscreen":
20
+ return /* @__PURE__ */ React2.createElement("div", {
21
+ role: "none",
22
+ className: "fixed inset-0 flex flex-col overflow-hidden bg-baseSurface"
23
+ }, /* @__PURE__ */ React2.createElement(Story, null));
24
+ default:
25
+ return /* @__PURE__ */ React2.createElement(Story, null);
26
+ }
126
27
  };
127
28
 
128
- // packages/common/storybook-utils/src/util.tsx
129
- import React4 from "react";
130
- var render = (r) => (args) => /* @__PURE__ */ React4.createElement(React4.Fragment, null, r(args) ?? /* @__PURE__ */ React4.createElement("div", null));
29
+ // src/decorators/withRegistry.tsx
30
+ import { Registry, RegistryContext } from "@effect-atom/atom-react";
31
+ import React3, { memo as memo2, useMemo } from "react";
32
+ var withRegistry = (Story) => {
33
+ const registry = useMemo(() => Registry.make(), []);
34
+ const MemoizedStory = /* @__PURE__ */ memo2(Story);
35
+ return /* @__PURE__ */ React3.createElement(RegistryContext.Provider, {
36
+ value: registry
37
+ }, /* @__PURE__ */ React3.createElement(MemoizedStory, null));
38
+ };
131
39
 
132
- // packages/common/storybook-utils/src/index.ts
133
- registerSignalsRuntime2();
40
+ // src/decorators/withThemeEditor.tsx
41
+ import React4, { memo as memo3 } from "react";
42
+ var withThemeEditor = (Story, context) => {
43
+ const MemoizedStory = /* @__PURE__ */ memo3(Story);
44
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(MemoizedStory, null), /* @__PURE__ */ React4.createElement("div", {
45
+ className: "absolute top-4 bottom-4 right-4 z-10"
46
+ }, /* @__PURE__ */ React4.createElement("div", {
47
+ className: "bs-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded"
48
+ }, /* @__PURE__ */ React4.createElement(ThemeEditor, null))));
49
+ };
50
+
51
+ // src/util.tsx
52
+ import React5 from "react";
53
+ var render = (Story) => (args) => {
54
+ const result = /* @__PURE__ */ React5.createElement(Story, args);
55
+ return result ?? /* @__PURE__ */ React5.createElement("div", null);
56
+ };
134
57
  export {
135
- ColumnContainer,
136
- DefaultContainer,
137
- FixedContainer,
58
+ ThemeEditor,
138
59
  render,
139
60
  withLayout,
140
- withSignals,
141
- withTheme
61
+ withRegistry,
62
+ withThemeEditor
142
63
  };
143
64
  //# 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/withSignals.tsx", "../../../src/decorators/withTheme.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 './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 ? FixedContainer : 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\nexport const DefaultContainer: FC<ContainerProps> = ({ children, classNames }) => {\n return (\n <div role='none' className={mx(classNames)}>\n {children}\n </div>\n );\n};\n\nexport const FixedContainer: FC<ContainerProps> = ({ children, classNames }) => {\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: FC<ContainerProps> = ({ children, classNames = 'w-[30rem]', ...props }) => {\n return (\n <FixedContainer 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 </FixedContainer>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React from 'react';\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\n\n/**\n * Make objects created using @dxos/echo-schema `create` reactive.\n */\nexport const withSignals: Decorator = (Story) => {\n registerSignalsRuntime();\n return <Story />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { addons } from '@storybook/preview-api';\nimport { type Decorator } from '@storybook/react';\nimport React, { memo, useCallback, useEffect, useState } from 'react';\nimport { DARK_MODE_EVENT_NAME } from 'storybook-dark-mode';\n\nimport { DxThemeEditor as NaturalDxThemeEditor } from '@dxos/lit-theme-editor';\nimport '@dxos/lit-theme-editor/dx-theme-editor.pcss';\nimport { createComponent } from '@dxos/lit-ui/react';\nimport { type ThemeMode, ThemeProvider, Tooltip, Dialog, IconButton } from '@dxos/react-ui';\nimport { defaultTx } from '@dxos/react-ui-theme';\nimport { PARAM_KEY } from '@dxos/theme-editor-addon';\n\nconst DxThemeEditor = createComponent({\n tagName: 'dx-theme-editor',\n elementClass: NaturalDxThemeEditor,\n react: React,\n});\n\n/**\n * Changes theme based on storybook toolbar toggle.\n */\nexport const withTheme: Decorator = (Story, context) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n const [themeMode, setThemeMode] = useState<ThemeMode>('dark');\n const [editorOpen, setEditorOpen] = useState(false);\n\n const handleOpenChange = useCallback((nextOpen: boolean) => {\n setEditorOpen(nextOpen);\n }, []);\n\n // https://www.npmjs.com/package/storybook-dark-mode\n // NOTE: The `useDarkMode` hook causes the story to continually re-render.\n // NOTE: Changing the theme will cause the story to remount.\n useEffect(() => {\n const handleDarkModeUpdate = (darkMode: boolean) => setThemeMode(darkMode ? 'dark' : 'light');\n addons.getChannel().on(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);\n return () => addons.getChannel().off(DARK_MODE_EVENT_NAME, handleDarkModeUpdate);\n }, []);\n\n useEffect(() => {\n const openEditor = () => {\n handleOpenChange(true);\n };\n addons.getChannel().on(PARAM_KEY, openEditor);\n return () => addons.getChannel().off(PARAM_KEY, openEditor);\n }, []);\n\n return (\n <ThemeProvider tx={defaultTx} themeMode={themeMode} resourceExtensions={context?.parameters?.translations} noCache>\n <Tooltip.Provider>\n <MemoizedStory />\n <Dialog.Root open={editorOpen} onOpenChange={handleOpenChange} modal={false}>\n <div\n role='none'\n className='dx-dialog__overlay bg-transparent pointer-events-none'\n style={{ placeContent: 'end' }}\n >\n <Dialog.Content\n classNames='relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-y-auto layout-contain pointer-events-auto'\n style={{ maxBlockSize: '50dvh' }}\n onInteractOutside={(event) => event.preventDefault()}\n >\n <Dialog.Title srOnly>Theme Editor</Dialog.Title>\n {editorOpen && <DxThemeEditor />}\n <Dialog.Close asChild>\n <IconButton\n iconOnly\n icon='ph--x--regular'\n label='Close'\n classNames='absolute block-start-2 inline-end-2'\n />\n </Dialog.Close>\n </Dialog.Content>\n </div>\n </Dialog.Root>\n </Tooltip.Provider>\n </ThemeProvider>\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", "defaultsDeep", "React", "DensityProvider", "mx", "defaultOptions", "density", "providers", "children", "options", "DensityProvider", "withLayout", "classNames", "fullscreen", "Container", "FixedContainer", "DefaultContainer", "providedOptions", "Story", "_context", "defaultsDeep", "reduceRight", "acc", "provider", "div", "role", "className", "mx", "ColumnContainer", "props", "React", "registerSignalsRuntime", "withSignals", "Story", "registerSignalsRuntime", "React", "addons", "React", "memo", "useCallback", "useEffect", "useState", "DARK_MODE_EVENT_NAME", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "ThemeProvider", "Tooltip", "Dialog", "IconButton", "defaultTx", "PARAM_KEY", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "withTheme", "Story", "context", "MemoizedStory", "memo", "themeMode", "setThemeMode", "useState", "editorOpen", "setEditorOpen", "handleOpenChange", "useCallback", "nextOpen", "useEffect", "handleDarkModeUpdate", "darkMode", "addons", "getChannel", "on", "DARK_MODE_EVENT_NAME", "off", "openEditor", "PARAM_KEY", "ThemeProvider", "tx", "defaultTx", "resourceExtensions", "parameters", "translations", "noCache", "Tooltip", "Provider", "Dialog", "Root", "open", "onOpenChange", "modal", "div", "role", "className", "style", "placeContent", "Content", "classNames", "maxBlockSize", "onInteractOutside", "event", "preventDefault", "Title", "srOnly", "Close", "asChild", "IconButton", "iconOnly", "icon", "label", "React", "render", "r", "args", "React", "div", "registerSignalsRuntime"]
3
+ "sources": ["../../../src/components/ThemeEditor.tsx", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/withRegistry.tsx", "../../../src/decorators/withThemeEditor.tsx", "../../../src/util.tsx"],
4
+ "sourcesContent": ["//\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 2025 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React from 'react';\n\nexport const withLayout: Decorator = (Story, context) => {\n switch (context.parameters.layout) {\n case 'fullscreen':\n return (\n <div role='none' className='fixed inset-0 flex flex-col overflow-hidden bg-baseSurface'>\n <Story />\n </div>\n );\n\n default:\n return <Story />;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { type Decorator } from '@storybook/react';\nimport React, { memo, useMemo } from 'react';\n\n/**\n * Adds Effect Atom registry context for storybook.\n */\nexport const withRegistry: Decorator = (Story) => {\n const registry = useMemo(() => Registry.make(), []);\n\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <RegistryContext.Provider value={registry}>\n <MemoizedStory />\n </RegistryContext.Provider>\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/ThemeEditor';\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='bs-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 extends Record<string, any>>(Story: FC<T>) =>\n (args: unknown) => {\n const result = <Story {...(args as T)} />;\n return result ?? <div />;\n };\n"],
5
+ "mappings": ";;;AAIA,OAAOA,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,YAAW;AAEX,IAAMC,aAAwB,CAACC,OAAOC,YAAAA;AAC3C,UAAQA,QAAQC,WAAWC,QAAM;IAC/B,KAAK;AACH,aACE,gBAAAC,OAAA,cAACC,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,gBAAAH,OAAA,cAACJ,OAAAA,IAAAA,CAAAA;IAIP;AACE,aAAO,gBAAAI,OAAA,cAACJ,OAAAA,IAAAA;EACZ;AACF;;;ACfA,SAASQ,UAAUC,uBAAuB;AAE1C,OAAOC,UAASC,QAAAA,OAAMC,eAAe;AAK9B,IAAMC,eAA0B,CAACC,UAAAA;AACtC,QAAMC,WAAWC,QAAQ,MAAMC,SAASC,KAAI,GAAI,CAAA,CAAE;AAGlD,QAAMC,gBAAgBC,gBAAAA,MAAKN,KAAAA;AAE3B,SACE,gBAAAO,OAAA,cAACC,gBAAgBC,UAAQ;IAACC,OAAOT;KAC/B,gBAAAM,OAAA,cAACF,eAAAA,IAAAA,CAAAA;AAGP;;;ACjBA,OAAOM,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,CAAgCC,UAChC,CAACC,SAAAA;AACC,QAAMC,SAAS,gBAAAC,OAAA,cAACH,OAAWC,IAAAA;AAC3B,SAAOC,UAAU,gBAAAC,OAAA,cAACC,OAAAA,IAAAA;AACpB;",
6
+ "names": ["React", "memo", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "ThemeEditor", "memo", "React", "withLayout", "Story", "context", "parameters", "layout", "React", "div", "role", "className", "Registry", "RegistryContext", "React", "memo", "useMemo", "withRegistry", "Story", "registry", "useMemo", "Registry", "make", "MemoizedStory", "memo", "React", "RegistryContext", "Provider", "value", "React", "memo", "withThemeEditor", "Story", "context", "MemoizedStory", "memo", "React", "div", "className", "ThemeEditor", "React", "render", "Story", "args", "result", "React", "div"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/common/storybook-utils/src/decorators/withLayout.tsx":{"bytes":7364,"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"},"packages/common/storybook-utils/src/decorators/withSignals.tsx":{"bytes":1400,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true}],"format":"esm"},"packages/common/storybook-utils/src/decorators/withTheme.tsx":{"bytes":10989,"imports":[{"path":"@storybook/preview-api","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"storybook-dark-mode","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/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":"@dxos/theme-editor-addon","kind":"import-statement","external":true}],"format":"esm"},"packages/common/storybook-utils/src/decorators/index.ts":{"bytes":676,"imports":[{"path":"packages/common/storybook-utils/src/decorators/withLayout.tsx","kind":"import-statement","original":"./withLayout"},{"path":"packages/common/storybook-utils/src/decorators/withSignals.tsx","kind":"import-statement","original":"./withSignals"},{"path":"packages/common/storybook-utils/src/decorators/withTheme.tsx","kind":"import-statement","original":"./withTheme"}],"format":"esm"},"packages/common/storybook-utils/src/util.tsx":{"bytes":1012,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/common/storybook-utils/src/index.ts":{"bytes":930,"imports":[{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"packages/common/storybook-utils/src/decorators/index.ts","kind":"import-statement","original":"./decorators"},{"path":"packages/common/storybook-utils/src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/common/storybook-utils/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11328},"packages/common/storybook-utils/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@dxos/echo-signals/react","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/echo-signals/react","kind":"import-statement","external":true},{"path":"@storybook/preview-api","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"storybook-dark-mode","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/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":"@dxos/theme-editor-addon","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ColumnContainer","DefaultContainer","FixedContainer","render","withLayout","withSignals","withTheme"],"entryPoint":"packages/common/storybook-utils/src/index.ts","inputs":{"packages/common/storybook-utils/src/index.ts":{"bytesInOutput":121},"packages/common/storybook-utils/src/decorators/withLayout.tsx":{"bytesInOutput":1671},"packages/common/storybook-utils/src/decorators/index.ts":{"bytesInOutput":0},"packages/common/storybook-utils/src/decorators/withSignals.tsx":{"bytesInOutput":217},"packages/common/storybook-utils/src/decorators/withTheme.tsx":{"bytesInOutput":2803},"packages/common/storybook-utils/src/util.tsx":{"bytesInOutput":181}},"bytes":5585}}}
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":480,"imports":[{"path":"src/components/ThemeEditor.tsx","kind":"import-statement","original":"./ThemeEditor"}],"format":"esm"},"src/decorators/withLayout.tsx":{"bytes":1803,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withRegistry.tsx":{"bytes":2217,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withThemeEditor.tsx":{"bytes":2746,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/ThemeEditor.tsx","kind":"import-statement","original":"../components/ThemeEditor"}],"format":"esm"},"src/decorators/index.ts":{"bytes":682,"imports":[{"path":"src/decorators/withLayout.tsx","kind":"import-statement","original":"./withLayout"},{"path":"src/decorators/withRegistry.tsx","kind":"import-statement","original":"./withRegistry"},{"path":"src/decorators/withThemeEditor.tsx","kind":"import-statement","original":"./withThemeEditor"}],"format":"esm"},"src/util.tsx":{"bytes":1228,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":634,"imports":[{"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/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4808},"dist/lib/node-esm/index.mjs":{"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},{"path":"react","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ThemeEditor","render","withLayout","withRegistry","withThemeEditor"],"entryPoint":"src/index.ts","inputs":{"src/components/ThemeEditor.tsx":{"bytesInOutput":405},"src/components/index.ts":{"bytesInOutput":0},"src/index.ts":{"bytesInOutput":0},"src/decorators/withLayout.tsx":{"bytesInOutput":435},"src/decorators/index.ts":{"bytesInOutput":0},"src/decorators/withRegistry.tsx":{"bytesInOutput":428},"src/decorators/withThemeEditor.tsx":{"bytesInOutput":589},"src/util.tsx":{"bytesInOutput":205}},"bytes":2435}}}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * https://storybook.js.org/docs/writing-docs/doc-blocks
3
+ */
4
+ //# sourceMappingURL=DocsContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/DocsContainer.tsx"],"names":[],"mappings":"AAQA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { DxThemeEditor as NaturalDxThemeEditor } from '@dxos/lit-theme-editor';
3
+ import '@dxos/lit-theme-editor/dx-theme-editor.pcss';
4
+ export declare const ThemeEditor: React.NamedExoticComponent<Omit<React.HTMLAttributes<NaturalDxThemeEditor>, "connectedCallback" | "disconnectedCallback" | "render" | "createRenderRoot" | "renderOptions" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "attributeChangedCallback" | "requestUpdate" | "updateComplete"> & {} & Partial<Omit<NaturalDxThemeEditor, keyof HTMLElement>> & React.RefAttributes<NaturalDxThemeEditor>>;
5
+ //# sourceMappingURL=ThemeEditor.d.ts.map