tuil
ReferencePackages

@mwillbanks/tuil-story

Portable tuil stories, browser bridges, snapshots, documentation, and Storybook adapters.

View rawEdit

Overview

Portable tuil stories, browser bridges, snapshots, documentation, and Storybook adapters.

@mwillbanks/tuil-story is independently installable and also participates in the umbrella @mwillbanks/tuil runtime where applicable.

Installation

npm install @mwillbanks/tuil-story

How it operates

Portable stories combine component args with terminal capabilities, themes, semantic nodes, focus state, events, ANSI output, and an action history. Adapters expose the same story to tests, browsers, static docs, and Storybook. Dynamic and static HTTP adapters stream untrusted bodies through a byte limit, validate their complete schema, bound recursive args, controls, dimensions, and simulated input, and apply a server-side timeout before render-lock acquisition.

Documentation flow diagram. register story; open session; render; interact/update; close; S0 leads to S1; S1 leads to S2; S2 leads to S3
Documentation flow diagram. register story; open session; render; interact/update; close; S0 leads to S1; S1 leads to S2; S2 leads to S3

API

APISignatureDescription
ansiFrameToHtmlfunction ansiFrameToHtmlPublic function ansiFrameToHtml.
browserStoriesfunction browserStoriesPublic function browserStories.
BrowserStorySetinterface BrowserStorySetPublic interface BrowserStorySet.
componentArgsFromAdapterArgsfunction componentArgsFromAdapterArgsPublic function componentArgsFromAdapterArgs.
createFumadocsStoryAdapterfunction createFumadocsStoryAdapterPublic function createFumadocsStoryAdapter.
createStaticStoryHttpHandlerfunction createStaticStoryHttpHandlerPublic function createStaticStoryHttpHandler.
createStorybookAdapterfunction createStorybookAdapterPublic function createStorybookAdapter.
createStoryHttpHandlerfunction createStoryHttpHandlerPublic function createStoryHttpHandler.
createTerminalStoryFrameEffectfunction createTerminalStoryFrameEffectPublic function createTerminalStoryFrameEffect.
defaultTerminalStoryControlsexport defaultTerminalStoryControlsPublic export defaultTerminalStoryControls.
defineTuilStoriesexport defineTuilStoriesPublic export defineTuilStories.
FumadocsStoryConfiginterface FumadocsStoryConfigPublic interface FumadocsStoryConfig.
FumadocsStoryPropstype FumadocsStoryPropsPublic type FumadocsStoryProps.
generateStoryCatalogDocumentationfunction generateStoryCatalogDocumentationPublic function generateStoryCatalogDocumentation.
generateStoryCatalogSnapshotsfunction generateStoryCatalogSnapshotsPublic function generateStoryCatalogSnapshots.
handleStoryHttpRequestfunction handleStoryHttpRequestPublic function handleStoryHttpRequest.
OpenStoryOptionsinterface OpenStoryOptionsPublic interface OpenStoryOptions.
renderStaticStoryRequestfunction renderStaticStoryRequestPublic function renderStaticStoryRequest.
renderStoryRequestfunction renderStoryRequestPublic function renderStoryRequest.
StaticStoryCatalogclass StaticStoryCatalogPublic class StaticStoryCatalog.
StaticStoryFrametype StaticStoryFramePublic type StaticStoryFrame.
StaticStoryRequestinterface StaticStoryRequestPublic interface StaticStoryRequest.
StoryActioninterface StoryActionPublic interface StoryAction.
StorybookAdapterinterface StorybookAdapterPublic interface StorybookAdapter.
StoryBridgeRequestinterface StoryBridgeRequestPublic interface StoryBridgeRequest.
StoryCatalogSnapshotstype StoryCatalogSnapshotsPublic type StoryCatalogSnapshots.
StoryFrameinterface StoryFramePublic interface StoryFrame.
storyFrameToMarkdownfunction storyFrameToMarkdownPublic function storyFrameToMarkdown.
StoryHttpHandlerOptionsinterface StoryHttpHandlerOptionsPublic interface StoryHttpHandlerOptions.
storyHttpLimitsconstant storyHttpLimitsPublic constant storyHttpLimits.
StorySnapshotinterface StorySnapshotPublic interface StorySnapshot.
terminalControlArgNamesconstant terminalControlArgNamesPublic constant terminalControlArgNames.
terminalControlsFromArgsfunction terminalControlsFromArgsPublic function terminalControlsFromArgs.
terminalControlsToArgsfunction terminalControlsToArgsPublic function terminalControlsToArgs.
TerminalStoryControlsexport TerminalStoryControlsPublic export TerminalStoryControls.
TerminalStoryFramefunction TerminalStoryFramePublic function TerminalStoryFrame.
TerminalStoryFrameEffectOptionsinterface TerminalStoryFrameEffectOptionsPublic interface TerminalStoryFrameEffectOptions.
TerminalStoryFramePropsinterface TerminalStoryFramePropsPublic interface TerminalStoryFrameProps.
TerminalStoryFrameViewfunction TerminalStoryFrameViewPublic function TerminalStoryFrameView.
TerminalStoryFrameViewPropsinterface TerminalStoryFrameViewPropsPublic interface TerminalStoryFrameViewProps.
TuilStoryexport TuilStoryPublic export TuilStory.
TuilStoryCatalogclass TuilStoryCatalogPublic class TuilStoryCatalog.
TuilStoryDefinitionexport TuilStoryDefinitionPublic export TuilStoryDefinition.
TuilStorySessionclass TuilStorySessionPublic class TuilStorySession.
TuilStorySetinterface TuilStorySetPublic interface TuilStorySet.
validateStoryBridgeRequestfunction validateStoryBridgeRequestPublic function validateStoryBridgeRequest.

Events and lifecycle

Every rendered frame captures the runtime's observed event history and story action timeline. HTTP request failures return 400, client disconnects return 499, and render timeouts return 504.

All subscriptions and registrations return a disposer or belong to an owning runtime that disposes them in reverse order.

Example

import { defineTuilStories } from "@mwillbanks/tuil-story";

export const stories = defineTuilStories({ component: Button, stories: { Default: { args: { children: "Run" } } } });

On this page