@storybook/blocks 7.0.0-beta.3 → 7.0.0-beta.30

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 @@
1
+ import{getControlId}from"./chunk-GWAJ4KRU.mjs";import React,{useCallback,useEffect,useMemo,useState}from"react";import{HexColorPicker,HslaStringColorPicker,RgbaStringColorPicker}from"react-colorful";import convert from"color-convert";import throttle from"lodash/throttle.js";import{styled}from"@storybook/theming";import{TooltipNote,WithTooltip,Form,Icons}from"@storybook/components";var Wrapper=styled.div({position:"relative",maxWidth:250}),PickerTooltip=styled(WithTooltip)({position:"absolute",zIndex:1,top:4,left:4}),TooltipContent=styled.div({width:200,margin:5,".react-colorful__saturation":{borderRadius:"4px 4px 0 0"},".react-colorful__hue":{boxShadow:"inset 0 0 0 1px rgb(0 0 0 / 5%)"},".react-colorful__last-control":{borderRadius:"0 0 4px 4px"}}),Note=styled(TooltipNote)(({theme})=>({fontFamily:theme.typography.fonts.base})),Swatches=styled.div({display:"grid",gridTemplateColumns:"repeat(9, 16px)",gap:6,padding:3,marginTop:5,width:200}),SwatchColor=styled.div(({theme,active})=>({width:16,height:16,boxShadow:active?`${theme.appBorderColor} 0 0 0 1px inset, ${theme.textMutedColor}50 0 0 0 4px`:`${theme.appBorderColor} 0 0 0 1px inset`,borderRadius:theme.appBorderRadius})),swatchBackground=`url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')`,Swatch=({value,active,onClick,style,...props})=>{let backgroundImage=`linear-gradient(${value}, ${value}), ${swatchBackground}, linear-gradient(#fff, #fff)`;return React.createElement(SwatchColor,{...props,active,onClick,style:{...style,backgroundImage}})},Input=styled(Form.Input)(({theme})=>({width:"100%",paddingLeft:30,paddingRight:30,boxSizing:"border-box",fontFamily:theme.typography.fonts.base})),ToggleIcon=styled(Icons)(({theme})=>({position:"absolute",zIndex:1,top:6,right:7,width:20,height:20,padding:4,boxSizing:"border-box",cursor:"pointer",color:theme.input.color})),ColorSpace=(ColorSpace2=>(ColorSpace2.RGB="rgb",ColorSpace2.HSL="hsl",ColorSpace2.HEX="hex",ColorSpace2))(ColorSpace||{}),COLOR_SPACES=Object.values(ColorSpace),COLOR_REGEXP=/\(([0-9]+),\s*([0-9]+)%?,\s*([0-9]+)%?,?\s*([0-9.]+)?\)/,RGB_REGEXP=/^\s*rgba?\(([0-9]+),\s*([0-9]+),\s*([0-9]+),?\s*([0-9.]+)?\)\s*$/i,HSL_REGEXP=/^\s*hsla?\(([0-9]+),\s*([0-9]+)%,\s*([0-9]+)%,?\s*([0-9.]+)?\)\s*$/i,HEX_REGEXP=/^\s*#?([0-9a-f]{3}|[0-9a-f]{6})\s*$/i,SHORTHEX_REGEXP=/^\s*#?([0-9a-f]{3})\s*$/i,ColorPicker={["hex"]:HexColorPicker,["rgb"]:RgbaStringColorPicker,["hsl"]:HslaStringColorPicker},fallbackColor={["hex"]:"transparent",["rgb"]:"rgba(0, 0, 0, 0)",["hsl"]:"hsla(0, 0%, 0%, 0)"},stringToArgs=value=>{let match=value?.match(COLOR_REGEXP);if(!match)return[0,0,0,1];let[,x,y,z,a=1]=match;return[x,y,z,a].map(Number)},parseValue=value=>{if(!value)return;let valid=!0;if(RGB_REGEXP.test(value)){let[r,g,b,a]=stringToArgs(value),[h,s,l]=convert.rgb.hsl([r,g,b])||[0,0,0];return{valid,value,keyword:convert.rgb.keyword([r,g,b]),colorSpace:"rgb",["rgb"]:value,["hsl"]:`hsla(${h}, ${s}%, ${l}%, ${a})`,["hex"]:`#${convert.rgb.hex([r,g,b]).toLowerCase()}`}}if(HSL_REGEXP.test(value)){let[h,s,l,a]=stringToArgs(value),[r,g,b]=convert.hsl.rgb([h,s,l])||[0,0,0];return{valid,value,keyword:convert.hsl.keyword([h,s,l]),colorSpace:"hsl",["rgb"]:`rgba(${r}, ${g}, ${b}, ${a})`,["hsl"]:value,["hex"]:`#${convert.hsl.hex([h,s,l]).toLowerCase()}`}}let plain=value.replace("#",""),rgb=convert.keyword.rgb(plain)||convert.hex.rgb(plain),hsl=convert.rgb.hsl(rgb),mapped=value;if(/[^#a-f0-9]/i.test(value)?mapped=plain:HEX_REGEXP.test(value)&&(mapped=`#${plain}`),mapped.startsWith("#"))valid=HEX_REGEXP.test(mapped);else try{convert.keyword.hex(mapped)}catch{valid=!1}return{valid,value:mapped,keyword:convert.rgb.keyword(rgb),colorSpace:"hex",["rgb"]:`rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, 1)`,["hsl"]:`hsla(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%, 1)`,["hex"]:mapped}},getRealValue=(value,color,colorSpace)=>{if(!value||!color?.valid)return fallbackColor[colorSpace];if(colorSpace!=="hex")return color?.[colorSpace]||fallbackColor[colorSpace];if(!color.hex.startsWith("#"))try{return`#${convert.keyword.hex(color.hex)}`}catch{return fallbackColor.hex}let short=color.hex.match(SHORTHEX_REGEXP);if(!short)return HEX_REGEXP.test(color.hex)?color.hex:fallbackColor.hex;let[r,g,b]=short[1].split("");return`#${r}${r}${g}${g}${b}${b}`},useColorInput=(initialValue,onChange)=>{let[value,setValue]=useState(initialValue||""),[color,setColor]=useState(()=>parseValue(value)),[colorSpace,setColorSpace]=useState(color?.colorSpace||"hex");useEffect(()=>{let nextValue=initialValue||"",nextColor=parseValue(nextValue);setValue(nextValue),setColor(nextColor),setColorSpace(nextColor?.colorSpace||"hex")},[initialValue]);let realValue=useMemo(()=>getRealValue(value,color,colorSpace).toLowerCase(),[value,color,colorSpace]),updateValue=useCallback(update=>{let parsed=parseValue(update),v=parsed?.value||update||"";setValue(v),v===""&&(setColor(void 0),onChange(void 0)),parsed&&(setColor(parsed),setColorSpace(parsed.colorSpace),onChange(parsed.value))},[onChange]),cycleColorSpace=useCallback(()=>{let next=COLOR_SPACES.indexOf(colorSpace)+1;next>=COLOR_SPACES.length&&(next=0),setColorSpace(COLOR_SPACES[next]);let update=color?.[COLOR_SPACES[next]]||"";setValue(update),onChange(update)},[color,colorSpace,onChange]);return{value,realValue,updateValue,color,colorSpace,cycleColorSpace}},id=value=>value.replace(/\s*/,"").toLowerCase(),usePresets=(presetColors,currentColor,colorSpace)=>{let[selectedColors,setSelectedColors]=useState(currentColor?.valid?[currentColor]:[]);useEffect(()=>{currentColor===void 0&&setSelectedColors([])},[currentColor]);let presets=useMemo(()=>(presetColors||[]).map(preset=>typeof preset=="string"?parseValue(preset):preset.title?{...parseValue(preset.color),keyword:preset.title}:parseValue(preset.color)).concat(selectedColors).filter(Boolean).slice(-27),[presetColors,selectedColors]),addPreset=useCallback(color=>{color?.valid&&(presets.some(preset=>id(preset[colorSpace])===id(color[colorSpace]))||setSelectedColors(arr=>arr.concat(color)))},[colorSpace,presets]);return{presets,addPreset}},ColorControl=({name,value:initialValue,onChange,onFocus,onBlur,presetColors,startOpen=!1})=>{let throttledOnChange=useCallback(throttle(onChange,200),[onChange]),{value,realValue,updateValue,color,colorSpace,cycleColorSpace}=useColorInput(initialValue,throttledOnChange),{presets,addPreset}=usePresets(presetColors,color,colorSpace),Picker=ColorPicker[colorSpace];return React.createElement(Wrapper,null,React.createElement(PickerTooltip,{trigger:"click",startOpen,closeOnClick:!0,onVisibilityChange:()=>addPreset(color),tooltip:React.createElement(TooltipContent,null,React.createElement(Picker,{color:realValue==="transparent"?"#000000":realValue,onChange:updateValue,onFocus,onBlur}),presets.length>0&&React.createElement(Swatches,null,presets.map((preset,index)=>React.createElement(WithTooltip,{key:`${preset.value}-${index}`,hasChrome:!1,tooltip:React.createElement(Note,{note:preset.keyword||preset.value})},React.createElement(Swatch,{value:preset[colorSpace],active:color&&id(preset[colorSpace])===id(color[colorSpace]),onClick:()=>updateValue(preset.value)})))))},React.createElement(Swatch,{value:realValue,style:{margin:4}})),React.createElement(Input,{id:getControlId(name),value,onChange:e=>updateValue(e.target.value),onFocus:e=>e.target.select(),placeholder:"Choose color..."}),value?React.createElement(ToggleIcon,{icon:"markup",onClick:cycleColorSpace}):null)},Color_default=ColorControl;export{ColorControl,Color_default as default};
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { Conditional, Parameters, DocsContextProps, Renderer, StrictArgTypes, StoryId, ProjectAnnotations, BaseAnnotations, ModuleExports, PreparedStory, StoryAnnotations, ModuleExport, ComponentTitle } from '@storybook/types';
1
+ import * as _storybook_types from '@storybook/types';
2
+ import { Conditional, DocsContextProps, PreparedStory, Renderer, StrictArgTypes, StoryId, ResolvedModuleExport, Parameters as Parameters$1, ProjectAnnotations, BaseAnnotations, ModuleExports, StoryAnnotations, ModuleExport, ComponentTitle } from '@storybook/types';
2
3
  export { DocsContextProps } from '@storybook/types';
3
- import React, { FunctionComponent, ComponentProps, ReactNode, FC, ElementType, Context } from 'react';
4
+ import React, { FunctionComponent, ComponentProps, ReactNode, FC, Context } from 'react';
4
5
  import { PropDescriptor } from '@storybook/preview-api';
5
6
  import { SyntaxHighlighter, ActionItem, SyntaxHighlighterFormatTypes } from '@storybook/components';
6
7
  import { Channel } from '@storybook/channels';
@@ -26,10 +27,6 @@ type SourceProps$1 = SourceErrorProps & SourceCodeProps;
26
27
  */
27
28
  declare const Source$1: FunctionComponent<SourceProps$1>;
28
29
 
29
- interface DescriptionProps$1 {
30
- markdown: string;
31
- }
32
-
33
30
  interface PreviewProps {
34
31
  isLoading?: true;
35
32
  isColumn?: boolean;
@@ -94,29 +91,26 @@ declare const ArgsTable$1: FC<ArgsTableProps$1>;
94
91
 
95
92
  declare const NoControlsWarning: () => JSX.Element;
96
93
 
97
- declare enum StoryError {
98
- NO_STORY = "No component or story to display"
94
+ interface CommonProps$1 {
95
+ story: PreparedStory;
96
+ inline: boolean;
99
97
  }
100
- interface CommonProps$2 {
101
- title?: string;
98
+ interface InlineStoryProps extends CommonProps$1 {
99
+ inline: true;
102
100
  height?: string;
103
- id: string;
101
+ autoplay: boolean;
102
+ renderStoryToElement: DocsContextProps['renderStoryToElement'];
104
103
  }
105
- interface InlineStoryProps extends CommonProps$2 {
106
- parameters: Parameters;
107
- storyFn: ElementType;
104
+ interface IFrameStoryProps extends CommonProps$1 {
105
+ inline: false;
106
+ height: string;
108
107
  }
109
- type IFrameStoryProps = CommonProps$2;
110
108
  type StoryProps$2 = InlineStoryProps | IFrameStoryProps;
111
109
  /**
112
110
  * A story element, either rendered inline or in an iframe,
113
111
  * with configurable height.
114
112
  */
115
- declare const Story$1: FunctionComponent<StoryProps$2 & {
116
- inline?: boolean;
117
- error?: StoryError;
118
- children?: React.ReactNode;
119
- }>;
113
+ declare const Story$1: FunctionComponent<StoryProps$2>;
120
114
 
121
115
  interface TypesetProps {
122
116
  fontFamily?: string;
@@ -235,7 +229,7 @@ declare enum SourceState {
235
229
  CLOSED = "closed",
236
230
  NONE = "none"
237
231
  }
238
- interface CommonProps$1 {
232
+ interface CommonProps {
239
233
  language?: string;
240
234
  dark?: boolean;
241
235
  format?: PureSourceProps['format'];
@@ -243,14 +237,14 @@ interface CommonProps$1 {
243
237
  }
244
238
  type SingleSourceProps = {
245
239
  id: string;
246
- } & CommonProps$1;
240
+ } & CommonProps;
247
241
  type MultiSourceProps = {
248
242
  ids: string[];
249
- } & CommonProps$1;
243
+ } & CommonProps;
250
244
  type CodeProps = {
251
245
  code: string;
252
- } & CommonProps$1;
253
- type NoneProps = CommonProps$1;
246
+ } & CommonProps;
247
+ type NoneProps = CommonProps;
254
248
  type SourceProps = SingleSourceProps | MultiSourceProps | CodeProps | NoneProps;
255
249
  type SourceStateProps = {
256
250
  state: SourceState;
@@ -267,9 +261,30 @@ declare const Source: FC<PureSourceProps>;
267
261
  type CanvasProps = Omit<PreviewProps, 'isExpanded' | 'isLoading'> & {
268
262
  withSource?: SourceState;
269
263
  mdxSource?: string;
264
+ children?: ReactNode;
270
265
  };
271
266
  declare const Canvas: FC<CanvasProps>;
272
267
 
268
+ type Of = Parameters<DocsContextProps['resolveModuleExport']>[0];
269
+ /**
270
+ * A hook to resolve the `of` prop passed to a block.
271
+ * will return the resolved module
272
+ * if the resolved module is a meta it will include a preparedMeta property similar to a preparedStory
273
+ * if the resolved module is a component it will include the project annotations
274
+ */
275
+ declare const useOf: (of: Of, validTypes?: ResolvedModuleExport['type'][]) => {
276
+ type: "story";
277
+ story: _storybook_types.PreparedStory<_storybook_types.Renderer>;
278
+ } | {
279
+ projectAnnotations: _storybook_types.NormalizedProjectAnnotations<_storybook_types.Renderer>;
280
+ type: "component";
281
+ component: unknown;
282
+ } | {
283
+ preparedMeta: _storybook_types.PreparedMeta<_storybook_types.Renderer>;
284
+ type: "meta";
285
+ csfFile: _storybook_types.CSFFile<_storybook_types.Renderer>;
286
+ };
287
+
273
288
  declare enum DescriptionType {
274
289
  INFO = "info",
275
290
  NOTES = "notes",
@@ -277,25 +292,28 @@ declare enum DescriptionType {
277
292
  AUTO = "auto"
278
293
  }
279
294
  interface DescriptionProps {
280
- of?: '.' | Component;
281
295
  /**
282
- * @deprecated Manually specifying description type is deprecated. In the future all descriptions will be extracted from JSDocs on the meta, story or component.
296
+ * Specify where to get the description from. Can be a component, a CSF file or a story.
297
+ * If not specified, the description will be extracted from the meta of the attached CSF file.
298
+ */
299
+ of?: Of;
300
+ /**
301
+ * @deprecated Manually specifying description type is deprecated. See https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#description-block-parametersnotes-and-parametersinfo
283
302
  */
284
303
  type?: DescriptionType;
285
304
  /**
286
- * @deprecated The 'markdown' prop on the Description block is deprecated. Write the markdown directly in the .mdx file instead
305
+ * @deprecated The 'markdown' prop on the Description block is deprecated. See https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#description-block-parametersnotes-and-parametersinfo
287
306
  */
288
307
  markdown?: string;
289
308
  /**
290
- * @deprecated The 'children' prop on the Description block is deprecated. Write the markdown directly in the .mdx file instead
309
+ * @deprecated The 'children' prop on the Description block is deprecated. See https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#description-block-parametersnotes-and-parametersinfo
291
310
  */
292
311
  children?: string;
293
312
  }
294
- declare const useDescriptionProps: ({ of, type, markdown, children }: DescriptionProps, { storyById }: DocsContextProps<any>) => DescriptionProps$1;
295
313
  declare const DescriptionContainer: FC<DescriptionProps>;
296
314
 
297
315
  type DocsProps<TFramework extends Renderer = Renderer> = {
298
- docsParameter: Parameters;
316
+ docsParameter: Parameters$1;
299
317
  context: DocsContextProps<TFramework>;
300
318
  };
301
319
  declare const Docs: FunctionComponent<DocsProps>;
@@ -348,24 +366,61 @@ declare const Stories: FC<StoriesProps>;
348
366
 
349
367
  declare const storyBlockIdFromId: (storyId: string) => string;
350
368
  type PureStoryProps = ComponentProps<typeof Story$1>;
351
- type CommonProps = StoryAnnotations & {
352
- height?: string;
353
- inline?: boolean;
354
- };
355
- type StoryDefProps = {
356
- name: string;
357
- };
369
+ /**
370
+ * Props to define a story
371
+ *
372
+ * @deprecated Define stories in CSF files
373
+ */
374
+ type StoryDefProps = StoryAnnotations;
375
+ /**
376
+ * Props to reference another story
377
+ */
358
378
  type StoryRefProps = {
379
+ /**
380
+ * @deprecated Use of={storyExport} instead
381
+ */
359
382
  id?: string;
383
+ /**
384
+ * Pass the export defining a story to render that story
385
+ *
386
+ * ```jsx
387
+ * import { Meta, Story } from '@storybook/blocks';
388
+ * import * as ButtonStories from './Button.stories';
389
+ *
390
+ * <Meta of={ButtonStories} />
391
+ * <Story of={ButtonStories.Primary} />
392
+ * ```
393
+ */
360
394
  of?: ModuleExport;
395
+ /**
396
+ * Pass all exports of the CSF file if this MDX file is unattached
397
+ *
398
+ * ```jsx
399
+ * import { Story } from '@storybook/blocks';
400
+ * import * as ButtonStories from './Button.stories';
401
+ *
402
+ * <Story of={ButtonStories.Primary} meta={ButtonStories} />
403
+ * ```
404
+ */
361
405
  meta?: ModuleExports;
362
406
  };
363
- type StoryImportProps = {
364
- name: string;
407
+ type StoryParameters = {
408
+ /**
409
+ * Render the story inline or in an iframe
410
+ */
411
+ inline?: boolean;
412
+ /**
413
+ * When rendering in an iframe (`inline={false}`), set the story height
414
+ */
415
+ height?: string;
416
+ /**
417
+ * Whether to run the story's play function
418
+ */
419
+ autoplay?: boolean;
365
420
  };
366
- type StoryProps = (StoryDefProps | StoryRefProps | StoryImportProps) & CommonProps;
421
+ type StoryProps = (StoryDefProps | StoryRefProps) & StoryParameters;
367
422
  declare const getStoryId: (props: StoryProps, context: DocsContextProps) => StoryId;
368
- declare const getStoryProps: <TFramework extends Renderer>({ height, inline }: StoryProps, story: PreparedStory<TFramework>) => PureStoryProps;
423
+ declare const getStoryProps: <TFramework extends Renderer>(props: StoryParameters, story: PreparedStory<TFramework>, context: DocsContextProps<TFramework>) => PureStoryProps;
369
424
  declare const Story: FC<StoryProps>;
370
425
 
371
426
  declare const Subheading: FC<HeadingProps>;
@@ -381,6 +436,8 @@ interface TitleProps {
381
436
  declare const extractTitle: (title: ComponentTitle) => string;
382
437
  declare const Title: FunctionComponent<TitleProps>;
383
438
 
439
+ declare const Unstyled: React.FC;
440
+
384
441
  declare const Wrapper: FC;
385
442
 
386
443
  declare const assertIsFn: (val: any) => any;
@@ -524,4 +581,4 @@ type ColorProps = ColorControlProps;
524
581
  declare const LazyColorControl: React.LazyExoticComponent<React.FC<ColorControlProps>>;
525
582
  declare const ColorControl: (props: ComponentProps<typeof LazyColorControl>) => JSX.Element;
526
583
 
527
- export { AddContext, Anchor, AnchorMdx, AnchorProps, ArgsTable, BooleanConfig, BooleanControl, BooleanProps, BooleanValue, Canvas, CodeOrSourceMdx, ColorConfig, ColorControl, ColorItem, ColorPalette, ColorProps, ColorValue, Component, ComponentsTable, Control, ControlProps, ControlType, Controls, DateConfig, DateControl, DateProps, DateValue, DescriptionContainer as Description, DescriptionType, Docs, DocsContainer, DocsContainerProps, DocsContext, DocsPage, DocsProps, DocsStory, DocsStoryProps, ExternalDocs, ExternalDocsContainer, ExternalDocsProps, FilesControl, FilesControlProps, HeaderMdx, HeadersMdx, Heading, HeadingProps, IconGallery, IconItem, Meta, NoControlsWarning, NormalizedOptionsConfig, NumberConfig, NumberControl, NumberValue, ObjectConfig, ObjectControl, ObjectProps, ObjectValue, Options, OptionsArray, OptionsConfig, OptionsControl, OptionsControlType, OptionsMultiSelection, OptionsObject, OptionsProps, OptionsSelection, OptionsSingleSelection, PRIMARY_STORY, PresetColor, Primary, ArgsTable$1 as PureArgsTable, RangeConfig, RangeControl, SortType, Source, SourceContainer, SourceContext, SourceContextProps, SourceItem, SourceState, Stories, Story, StoryData, StoryProps, StorySources, StoryTable, Subheading, Subtitle, TextConfig, TextControl, TextProps, TextValue, Title, Typeset, Wrapper, anchorBlockIdFromId, assertIsFn, extractComponentArgTypes, extractTitle, format, formatDate, formatTime, getComponent, getStoryId, getStoryProps, parse, parseDate, parseTime, storyBlockIdFromId, useDescriptionProps, useSourceProps };
584
+ export { AddContext, Anchor, AnchorMdx, AnchorProps, ArgsTable, BooleanConfig, BooleanControl, BooleanProps, BooleanValue, Canvas, CodeOrSourceMdx, ColorConfig, ColorControl, ColorItem, ColorPalette, ColorProps, ColorValue, Component, ComponentsTable, Control, ControlProps, ControlType, Controls, DateConfig, DateControl, DateProps, DateValue, DescriptionContainer as Description, DescriptionType, Docs, DocsContainer, DocsContainerProps, DocsContext, DocsPage, DocsProps, DocsStory, DocsStoryProps, ExternalDocs, ExternalDocsContainer, ExternalDocsProps, FilesControl, FilesControlProps, HeaderMdx, HeadersMdx, Heading, HeadingProps, IconGallery, IconItem, Meta, NoControlsWarning, NormalizedOptionsConfig, NumberConfig, NumberControl, NumberValue, ObjectConfig, ObjectControl, ObjectProps, ObjectValue, Of, Options, OptionsArray, OptionsConfig, OptionsControl, OptionsControlType, OptionsMultiSelection, OptionsObject, OptionsProps, OptionsSelection, OptionsSingleSelection, PRIMARY_STORY, PresetColor, Primary, ArgsTable$1 as PureArgsTable, RangeConfig, RangeControl, SortType, Source, SourceContainer, SourceContext, SourceContextProps, SourceItem, SourceState, Stories, Story, StoryData, StoryProps, StorySources, StoryTable, Subheading, Subtitle, TextConfig, TextControl, TextProps, TextValue, Title, Typeset, Unstyled, Wrapper, anchorBlockIdFromId, assertIsFn, extractComponentArgTypes, extractTitle, format, formatDate, formatTime, getComponent, getStoryId, getStoryProps, parse, parseDate, parseTime, storyBlockIdFromId, useOf, useSourceProps };