@storybook/addon-docs 8.6.0-alpha.5 → 8.6.0-beta.0

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.
@@ -0,0 +1,5 @@
1
+ import { __export } from './chunk-H6MOWX77.mjs';
2
+
3
+ var preview_exports={};__export(preview_exports,{parameters:()=>parameters});var excludeTags=Object.entries(globalThis.TAGS_OPTIONS??{}).reduce((acc,entry)=>{let[tag,option]=entry;return option.excludeFromDocsStories&&(acc[tag]=!0),acc},{}),parameters={docs:{renderer:async()=>{let{DocsRenderer}=await import('./DocsRenderer-CFRXHY34.mjs');return new DocsRenderer},stories:{filter:story=>(story.tags||[]).filter(tag=>excludeTags[tag]).length===0&&!story.parameters.docs?.disable}}};
4
+
5
+ export { parameters, preview_exports };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import * as core_dist_types from 'storybook/internal/types';
2
+ import * as core_dist_csf from 'storybook/internal/csf';
1
3
  export * from '@storybook/blocks';
2
- import { Renderer, DocsRenderFunction } from 'storybook/internal/types';
4
+ import { Renderer, DocsRenderFunction, ModuleExports, ModuleExport } from 'storybook/internal/types';
3
5
 
4
6
  declare class DocsRenderer<TRenderer extends Renderer> {
5
7
  render: DocsRenderFunction<TRenderer>;
@@ -7,4 +9,191 @@ declare class DocsRenderer<TRenderer extends Renderer> {
7
9
  constructor();
8
10
  }
9
11
 
10
- export { DocsRenderer };
12
+ type StoryBlockParameters = {
13
+ /** Whether a story's play function runs when shown in docs page */
14
+ autoplay?: boolean;
15
+ /**
16
+ * Set a minimum height (note for an iframe this is the actual height) when rendering a story in
17
+ * an iframe or inline. This overrides `parameters.docs.story.iframeHeight` for iframes.
18
+ */
19
+ height?: string;
20
+ /** IFrame configuration */
21
+ iframeHeight?: string;
22
+ /**
23
+ * Whether the story is rendered inline (in the same browser frame as the other docs content) or
24
+ * in an iframe
25
+ */
26
+ inline?: boolean;
27
+ /** Specifies the CSF file to which the story is associated */
28
+ meta: ModuleExports;
29
+ /**
30
+ * Specifies which story is rendered by the Story block. If no `of` is defined and the MDX file is
31
+ * attached, the primary (first) story will be rendered.
32
+ */
33
+ of: ModuleExport;
34
+ };
35
+ type ControlsBlockParameters = {
36
+ /** Exclude specific properties from the Controls panel */
37
+ exclude?: string[] | RegExp;
38
+ /** Exclude only specific properties in the Controls panel */
39
+ include?: string[] | RegExp;
40
+ /** Controls sorting order */
41
+ sort?: 'none' | 'alpha' | 'requiredFirst';
42
+ };
43
+ type ArgTypesBlockParameters = {
44
+ /** Exclude specific arg types from the args table */
45
+ exclude?: string[] | RegExp;
46
+ /** Exclude only specific arg types from the args table */
47
+ include?: string[] | RegExp;
48
+ /**
49
+ * Specifies which story to get the arg types from. If a CSF file exports is provided, it will use
50
+ * the primary (first) story in the file.
51
+ */
52
+ of: ModuleExport | ModuleExports;
53
+ /**
54
+ * Controls arg types order
55
+ *
56
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-argtypes#sort
57
+ */
58
+ sort?: 'none' | 'alpha' | 'requiredFirst';
59
+ };
60
+ type CanvasBlockParameters = {
61
+ /**
62
+ * Provides any additional custom actions to show in the bottom right corner. These are simple
63
+ * buttons that do anything you specify in the onClick function.
64
+ */
65
+ additionalActions?: {
66
+ className?: string;
67
+ disabled?: boolean;
68
+ onClick: () => void;
69
+ title: string | JSX.Element;
70
+ }[];
71
+ /** Provide HTML class(es) to the preview element, for custom styling. */
72
+ className?: string;
73
+ /**
74
+ * Specify how the canvas should layout the story.
75
+ *
76
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-canvas#layout
77
+ */
78
+ layout?: 'centered' | 'fullscreen' | 'padded';
79
+ /** Specifies which story is rendered */
80
+ of: ModuleExport;
81
+ /** Show story source code */
82
+ sourceState?: 'hidden' | 'shown';
83
+ /**
84
+ * Story configuration
85
+ *
86
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-canvas#story
87
+ */
88
+ story?: StoryBlockParameters;
89
+ /** Disable story source code */
90
+ withSource?: 'open' | 'closed' | 'none';
91
+ /** Whether to render a toolbar containing tools to interact with the story. */
92
+ withToolbar?: 'open' | 'closed' | 'none';
93
+ };
94
+ type DescriptionBlockParameters = {
95
+ /** Component description */
96
+ component?: string;
97
+ /** Story description */
98
+ story?: string;
99
+ };
100
+ type SourceBlockParameters = {
101
+ /** The source code to be rendered. Will be inferred if not passed */
102
+ code?: string;
103
+ /** Whether to render the code in dark mode */
104
+ dark?: boolean;
105
+ /** Determines if decorators are rendered in the source code snippet. */
106
+ excludeDecorators?: boolean;
107
+ /**
108
+ * The formatting used on source code. Both true and 'dedent' have the same effect of removing any
109
+ * extraneous indentation. Supports all valid prettier parser names.
110
+ *
111
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-source#format
112
+ */
113
+ format?: boolean | 'dedent' | string;
114
+ /** Source code language */
115
+ language?: 'bash' | 'css' | 'graphql' | 'html' | 'json' | 'jsextra' | 'jsx' | 'md' | 'text' | 'tsx' | 'typescript' | 'yml';
116
+ /**
117
+ * Specifies which story is rendered by the Source block. If no of is defined and the MDX file is
118
+ * attached, the primary (first) story will be rendered.
119
+ */
120
+ of: ModuleExport;
121
+ /** Source code transformations */
122
+ transform?: (code: string, storyContext: any) => string;
123
+ /**
124
+ * Specifies how the source code is rendered.
125
+ *
126
+ * @default 'auto'
127
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-source#type
128
+ */
129
+ type?: 'auto' | 'code' | 'dynamic';
130
+ };
131
+ interface DocsParameters {
132
+ /**
133
+ * Docs configuration
134
+ *
135
+ * @see https://storybook.js.org/docs/writing-docs
136
+ */
137
+ docs?: {
138
+ /**
139
+ * The subtitle displayed when shown in docs page
140
+ *
141
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-argtypes
142
+ */
143
+ argTypes?: ArgTypesBlockParameters;
144
+ /**
145
+ * Canvas configuration when shown in docs page
146
+ *
147
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-canvas
148
+ */
149
+ canvas?: CanvasBlockParameters;
150
+ /**
151
+ * Controls block configuration
152
+ *
153
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-controls
154
+ */
155
+ controls?: ControlsBlockParameters;
156
+ /**
157
+ * Component/story description when shown in docs page
158
+ *
159
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-description#writing-descriptions
160
+ */
161
+ description?: DescriptionBlockParameters;
162
+ /** Remove the addon panel and disable the addon's behavior */
163
+ disable?: boolean;
164
+ /**
165
+ * Replace the default documentation template used by Storybook with your own
166
+ *
167
+ * @see https://storybook.js.org/docs/writing-docs/autodocs#write-a-custom-template
168
+ */
169
+ page?: unknown;
170
+ /**
171
+ * Source code configuration when shown in docs page
172
+ *
173
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-source
174
+ */
175
+ source?: SourceBlockParameters;
176
+ /**
177
+ * Story configuration
178
+ *
179
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-story
180
+ */
181
+ story?: StoryBlockParameters;
182
+ /**
183
+ * The subtitle displayed when shown in docs page
184
+ *
185
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-subtitle
186
+ */
187
+ subtitle?: string;
188
+ /**
189
+ * The title displayed when shown in docs page
190
+ *
191
+ * @see https://storybook.js.org/docs/api/doc-blocks/doc-block-title
192
+ */
193
+ title?: string;
194
+ };
195
+ }
196
+
197
+ declare const _default: () => core_dist_types.ProjectAnnotations<core_dist_csf.Renderer>;
198
+
199
+ export { DocsParameters, DocsRenderer, _default as default };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default")),__toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{DocsRenderer:()=>DocsRenderer});module.exports=__toCommonJS(src_exports);__reExport(src_exports,require("@storybook/blocks"),module.exports);var import_react=__toESM(require("react")),import_blocks=require("@storybook/blocks"),import_react_dom_shim=require("@storybook/react-dom-shim"),defaultComponents={code:import_blocks.CodeOrSourceMdx,a:import_blocks.AnchorMdx,...import_blocks.HeadersMdx},ErrorBoundary=class extends import_react.Component{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(err){let{showException}=this.props;showException(err)}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:import_react.default.createElement(import_react.default.Fragment,null,children)}},DocsRenderer=class{constructor(){this.render=async(context,docsParameter,element)=>{let components={...defaultComponents,...docsParameter?.components},TDocs=import_blocks.Docs;return new Promise((resolve,reject)=>{import("@mdx-js/react").then(({MDXProvider})=>(0,import_react_dom_shim.renderElement)(import_react.default.createElement(ErrorBoundary,{showException:reject,key:Math.random()},import_react.default.createElement(MDXProvider,{components},import_react.default.createElement(TDocs,{context,docsParameter}))),element)).then(()=>resolve())})},this.unmount=element=>{(0,import_react_dom_shim.unmountElement)(element)}}};0&&(module.exports={DocsRenderer,...require("@storybook/blocks")});
1
+ "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default")),__toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var DocsRenderer_exports={};__export(DocsRenderer_exports,{DocsRenderer:()=>DocsRenderer,defaultComponents:()=>defaultComponents});var import_react,import_blocks,import_react_dom_shim,defaultComponents,ErrorBoundary,DocsRenderer,init_DocsRenderer=__esm({"src/DocsRenderer.tsx"(){"use strict";import_react=__toESM(require("react")),import_blocks=require("@storybook/blocks"),import_react_dom_shim=require("@storybook/react-dom-shim"),defaultComponents={code:import_blocks.CodeOrSourceMdx,a:import_blocks.AnchorMdx,...import_blocks.HeadersMdx},ErrorBoundary=class extends import_react.Component{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(err){let{showException}=this.props;showException(err)}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:import_react.default.createElement(import_react.default.Fragment,null,children)}},DocsRenderer=class{constructor(){this.render=async(context,docsParameter,element)=>{let components={...defaultComponents,...docsParameter?.components},TDocs=import_blocks.Docs;return new Promise((resolve,reject)=>{import("@mdx-js/react").then(({MDXProvider})=>(0,import_react_dom_shim.renderElement)(import_react.default.createElement(ErrorBoundary,{showException:reject,key:Math.random()},import_react.default.createElement(MDXProvider,{components},import_react.default.createElement(TDocs,{context,docsParameter}))),element)).then(()=>resolve())})},this.unmount=element=>{(0,import_react_dom_shim.unmountElement)(element)}}}}});var src_exports={};__export(src_exports,{DocsRenderer:()=>DocsRenderer,default:()=>src_default});module.exports=__toCommonJS(src_exports);var import_preview_api=require("storybook/internal/preview-api");var preview_exports={};__export(preview_exports,{parameters:()=>parameters});var excludeTags=Object.entries(globalThis.TAGS_OPTIONS??{}).reduce((acc,entry)=>{let[tag,option]=entry;return option.excludeFromDocsStories&&(acc[tag]=!0),acc},{}),parameters={docs:{renderer:async()=>{let{DocsRenderer:DocsRenderer2}=await Promise.resolve().then(()=>(init_DocsRenderer(),DocsRenderer_exports));return new DocsRenderer2},stories:{filter:story=>(story.tags||[]).filter(tag=>excludeTags[tag]).length===0&&!story.parameters.docs?.disable}}};__reExport(src_exports,require("@storybook/blocks"),module.exports);init_DocsRenderer();var src_default=()=>(0,import_preview_api.definePreview)(preview_exports);0&&(module.exports={DocsRenderer,...require("@storybook/blocks")});
package/dist/index.mjs CHANGED
@@ -1,3 +1,9 @@
1
+ import { preview_exports } from './chunk-PRSJUHPQ.mjs';
1
2
  export { DocsRenderer } from './chunk-NUUEMKO5.mjs';
2
3
  import './chunk-H6MOWX77.mjs';
4
+ import { definePreview } from 'storybook/internal/preview-api';
3
5
  export * from '@storybook/blocks';
6
+
7
+ var src_default=()=>definePreview(preview_exports);
8
+
9
+ export { src_default as default };
package/dist/manager.js CHANGED
@@ -1 +1 @@
1
- "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var import_react=__toESM(require("react")),import_components=require("storybook/internal/components"),import_docs_tools=require("storybook/internal/docs-tools"),import_manager_api=require("storybook/internal/manager-api"),import_blocks=require("@storybook/blocks");import_manager_api.addons.register(import_docs_tools.ADDON_ID,api=>{import_manager_api.addons.add(import_docs_tools.PANEL_ID,{title:"Code",type:import_manager_api.types.PANEL,paramKey:import_docs_tools.PARAM_KEY,disabled:parameters=>!parameters?.docs?.codePanel,match:({viewMode})=>viewMode==="story",render:({active})=>{let[codeSnippet,setSourceCode]=(0,import_manager_api.useAddonState)(import_docs_tools.ADDON_ID,{source:"",format:"html"});return(0,import_manager_api.useChannel)({[import_docs_tools.SNIPPET_RENDERED]:({source,format})=>{setSourceCode({source,format})}}),import_react.default.createElement(import_components.AddonPanel,{active:!!active},import_react.default.createElement(import_blocks.Source,{code:codeSnippet.source,format:codeSnippet.format,dark:!0}))}})});
1
+ "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var import_react=__toESM(require("react")),import_components=require("storybook/internal/components"),import_docs_tools=require("storybook/internal/docs-tools"),import_manager_api=require("storybook/internal/manager-api"),import_theming=require("storybook/internal/theming"),import_blocks=require("@storybook/blocks");import_manager_api.addons.register(import_docs_tools.ADDON_ID,api=>{import_manager_api.addons.add(import_docs_tools.PANEL_ID,{title:"Code",type:import_manager_api.types.PANEL,paramKey:import_docs_tools.PARAM_KEY,disabled:parameters=>!parameters?.docs?.codePanel,match:({viewMode})=>viewMode==="story",render:({active})=>{let parameter=(0,import_manager_api.useParameter)(import_docs_tools.PARAM_KEY,{source:{code:""},theme:"dark"}),[codeSnippet,setSourceCode]=import_react.default.useState({});(0,import_manager_api.useChannel)({[import_docs_tools.SNIPPET_RENDERED]:({source,format})=>{setSourceCode({source,format})}});let isDark=(0,import_theming.useTheme)().base!=="light";return import_react.default.createElement(import_components.AddonPanel,{active:!!active},import_react.default.createElement(SourceStyles,null,import_react.default.createElement(import_blocks.Source,{...parameter.source,code:parameter.source.code||codeSnippet.source,format:parameter.source.format||codeSnippet.format,dark:isDark})))}})});var SourceStyles=import_theming.styled.div(()=>({height:"100%",[`> :first-child${import_theming.ignoreSsrWarning}`]:{margin:0,height:"100%",boxShadow:"none"}}));
package/dist/manager.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import { AddonPanel } from 'storybook/internal/components';
3
3
  import { ADDON_ID, PANEL_ID, PARAM_KEY, SNIPPET_RENDERED } from 'storybook/internal/docs-tools';
4
- import { addons, types, useAddonState, useChannel } from 'storybook/internal/manager-api';
4
+ import { addons, types, useParameter, useChannel } from 'storybook/internal/manager-api';
5
+ import { useTheme, styled, ignoreSsrWarning } from 'storybook/internal/theming';
5
6
  import { Source } from '@storybook/blocks';
6
7
 
7
- addons.register(ADDON_ID,api=>{addons.add(PANEL_ID,{title:"Code",type:types.PANEL,paramKey:PARAM_KEY,disabled:parameters=>!parameters?.docs?.codePanel,match:({viewMode})=>viewMode==="story",render:({active})=>{let[codeSnippet,setSourceCode]=useAddonState(ADDON_ID,{source:"",format:"html"});return useChannel({[SNIPPET_RENDERED]:({source,format})=>{setSourceCode({source,format});}}),React.createElement(AddonPanel,{active:!!active},React.createElement(Source,{code:codeSnippet.source,format:codeSnippet.format,dark:!0}))}});});
8
+ addons.register(ADDON_ID,api=>{addons.add(PANEL_ID,{title:"Code",type:types.PANEL,paramKey:PARAM_KEY,disabled:parameters=>!parameters?.docs?.codePanel,match:({viewMode})=>viewMode==="story",render:({active})=>{let parameter=useParameter(PARAM_KEY,{source:{code:""},theme:"dark"}),[codeSnippet,setSourceCode]=React.useState({});useChannel({[SNIPPET_RENDERED]:({source,format})=>{setSourceCode({source,format});}});let isDark=useTheme().base!=="light";return React.createElement(AddonPanel,{active:!!active},React.createElement(SourceStyles,null,React.createElement(Source,{...parameter.source,code:parameter.source.code||codeSnippet.source,format:parameter.source.format||codeSnippet.format,dark:isDark})))}});});var SourceStyles=styled.div(()=>({height:"100%",[`> :first-child${ignoreSsrWarning}`]:{margin:0,height:"100%",boxShadow:"none"}}));