Skip to content

Scrollytelling design space

Design Space

A visual atlas for the thesis-backed patterns inside scrollytale-starter.

StructureLayoutTextTransition

Advanced/internal page. For everyday authoring, start with story-format.md. This page helps the runtime and AI reason about stories more deeply.

Overview

Scrollytelling design space

The source vocabulary comes from the thesis chapter on the scrollytelling design space and is organized into four dimensions:

  • Structure
  • Layout
  • Transition
  • Action

The copied icons live at:

  • public/design-space/icons/
  • docs/public/design-space/icons/

The runtime taxonomy lives in src/runtime/designSpace.js.

Why this page exists

To keep the academic model inside the starter without forcing ordinary authors to learn the whole taxonomy first.

What it powers

Docs, icon assets, normalized story metadata, AI prompting, and future runtime planning.

How It Maps To story.md

The starter keeps the same Markdown-first authoring model, but it now accepts richer design-space metadata.

Global Structure

You can still use the simple form:

yaml
structure: linear

You can also use the richer academic form:

yaml
structure:
  family: linear
  pattern: burger

Today the runtime still renders a linear DOM flow, but the extra pattern metadata is preserved for planning, AI prompting, and future runtime features.

Section Layout

You can still use the simple preset:

yaml
layout: scrolly-right

You can also attach design-space fields:

yaml
layout:
  preset: scrolly-right
  axis: vertical
  binding: float-to-text
  container: vis-container

This lets story.md describe both the starter preset and the academic layout language at the same time.

Scene, Segue, and Action

The thesis transition and action language now maps like this:

  • scene: focus, guide, granularity, observation
  • transition.segue: point-to-line, line-to-area, morph, division-merge, pack-unpack
  • action.trigger: enter, exit, step, scroll
  • action.affordance: header, in-line, tooltip

Example:

md
---
title: "Rental pressure across Melbourne"
structure:
  family: linear
  pattern: burger
data:
  sources:
    - id: rents
      path: ./data/rents.csv
---

---
id: widening-gap
layout:
  preset: scrolly-right
  axis: vertical
  binding: float-to-text
  container: vis-container
scene: granularity
transition:
  type: step
  segue: morph
action:
  trigger: step
  affordance:
    - tooltip
---

## The gap becomes visible at suburb level

::vis{type="line" data="rents" x="year" y="value" series="region"}
::

::step
The metro average hides the largest gaps.
::

::step
At suburb level, the spread becomes much wider.
::

Current Support Matrix

This page distinguishes three levels:

  • Supported: runtime behavior exists now
  • : accepted and normalized, but not yet rendered as first-class behavior
  • Still developing: not yet implemented in the runtime

Still Developing Highlights

Header icon Header navigation

Still developing

Needed for non-linear story entry points and chapter jumps.

Tooltip icon Tooltip system

Still developing

Best implemented as a shared runtime component instead of one-off chart code.

In-line icon In-line controls

Still developing

Useful for lightweight toggles and local exploration inside narrative paragraphs.

Morph icon Segue transitions

Still developing

`morph`, `point-to-line`, and `pack-unpack` still need reusable visual transition primitives.

Structure

PatternStatusNotes
linearsupportedDefault starter flow
parallel, bypass, branch, mergemetadataUseful for authoring plans and future navigation work

Layout

Preset / PatternStatusNotes
chaptersupportedDefault Markdown-first narrative section
herosupportedApproximates an editorial opening
scrolly-leftsupportedSticky figure + text steps
scrolly-rightsupportedSticky figure + text steps
full-widthsupportedFlow section without sticky scrolly
scrolly-overlaysupportedFirst-class overlay layout for text-over-vis scrolly sections
axis, binding, container, overlap metadatametadataStored in normalized story objects

Transition

PatternStatusNotes
focussupportedScene label available now
guidesupportedScene label available now
granularitymetadataAccepted in syntax and normalization
observationsupportedScene label available now
point-to-linemetadataNeeds reusable vis transition primitives
line-to-areametadataSame as above
morphmetadataSame as above
division-mergemetadataSame as above
pack-unpackmetadataSame as above

Action

PatternStatusNotes
entermetadataAccepted in syntax, lifecycle hooks still thin
exitmetadataSame as above
stepsupportedAlready wired via ::step + Scrollama
scrollsupportedDefault scrolly motion model
headerStill developingNeeded for non-linear navigation
in-lineStill developingBest added as embedded controls or toggles
tooltipStill developingGood candidate for shared runtime component

Why This Matters

This gives the project a shared language across:

  • thesis writing
  • case-study analysis
  • story.md authoring
  • AI prompting
  • future runtime planning

The starter no longer has to choose between being academic or practical. The design space now acts as a bridge between the two.

  1. Add scrolly-overlay as the next layout preset.
  2. Turn transition.segue into reusable vis controllers instead of metadata only.
  3. Add shared tooltip and header components so non-linear structures can become real runtime features.

Built with VitePress for humans and AI agents.