Skip to main content

Type Alias: StoryHelpers

StoryHelpers = CommonHelpers & object

Defined in: packages/core/src/passages/story/helpers.ts:81

Toolbox handed to the content callback of defineStory.

Every helper builds a plain Component object, so helper calls and hand-written component literals can be mixed freely in the same array.

Type Declaration

actions()

actions: (content, options?) => ActionsComponent

Creates a group of action buttons. Falsy entries are dropped.

Parameters

content

ReadonlyArray<Conditional<ActionType>>

options?

StoryActionsOptions

Returns

ActionsComponent

Example

h.actions([
{ content: 'Go north', action: h.jump('north-room') },
player.hasKey && { content: 'Unlock', action: h.jump('vault') }
], { direction: 'vertical' })

conversation()

conversation: (content, options?) => ConversationComponent

Creates a conversation component. Falsy bubbles are dropped.

Parameters

content

ReadonlyArray<Conditional<ConversationBubble>>

options?

StoryConversationOptions

Returns

ConversationComponent

Example

h.conversation([
{ content: 'Hello!', who: { name: 'NPC' }, side: 'left' },
{ content: 'Hi there!', side: 'right' }
], { appearance: 'byClick', variant: 'messenger' })

header: (content, options?) => HeaderComponent

Creates a header component.

Parameters

content

string

options?

StoryHeaderOptions

Returns

HeaderComponent

Example

h.header('Chapter 1', { level: 1, className: 'text-center' })

image()

image: (content, options?) => ImageComponent

Creates an image component.

Parameters

content

string

options?

StoryImageOptions

Returns

ImageComponent

Example

h.image('/scene.jpg', { alt: 'A dark forest', disableModal: true })

include()

include: (storyId, options?) => AnotherStoryComponent

Embeds another registered story passage.

Parameters

storyId

string

options?

StoryIncludeOptions

Returns

AnotherStoryComponent

Example

h.include('common-intro')

text()

text: (content, options?) => TextComponent

Creates a text component.

Parameters

content

ReactNode

options?

StoryTextOptions

Returns

TextComponent

Example

h.text('Once upon a time...', { className: 'text-lg' })
h.text('<strong>Bold</strong>', { isHTML: true })

video()

video: (content, options?) => VideoComponent

Creates a video component.

Parameters

content

string

options?

StoryVideoOptions

Returns

VideoComponent

Example

h.video('/cutscene.mp4', { controls: true, loop: false })

Remarks

Each helper takes the component's content first and a single flat options bag second. Fields that live under props in the raw component type are hoisted into that bag, so there is only ever one level to fill in.