Contents

  1. Typography
  2. Callout Blocks
  3. Lists
  4. Visual Content
  5. Code & Table
  6. Action Box & Utility

Typography & Rich Text

The rich-paragraph block supports inline Markdown. Use it for body copy that needs emphasis without dedicated block styling.

Bold text draws attention to key terms. Italic adds nuance or introduces foreign words. Bold and italic together signal the highest inline emphasis.

Strikethrough marks deprecated or removed content. inline code displays short snippets, commands, or variable names inside prose.

Links are written as display text. They render as styled anchors — useful for referencing external resources or citations.

Alternative Markdown syntax also works: bold with underscores, italic with underscores. Both styles are equivalent to their asterisk counterparts (via remark-gfm).

Escape characters when you need a literal symbol: *not italic*, `not code`, [not a link]. The backslash prevents Markdown parsing.

Heading Level 1

Level 1 is the main section title. Use it once per section, at the very top.

Heading Level 2

Level 2 introduces a subsection within a section. It may appear multiple times per page.

Heading Level 3

Level 3 is the finest subdivision — useful for named concepts, examples, or grouped items inside a subsection.

Callout Blocks

Callout blocks interrupt the reading flow to signal additional context (note) or risk (warning). Both accept an optional label that appears as an uppercase tag above the message.

A note without a label. Use it for supplementary information, tips, or observations that enrich the main text without being critical.

Pro tip

A note with a label. The label appears as a small uppercase tag above the body. It can contain inline Markdown just like a rich-paragraph.

Did you know?

Labels are optional but recommended when the note has a distinct role — e.g. "Pro tip", "Definition", "Context", "Good to know". Keep labels short: 1–3 words.

A warning without a label. Use it for potential pitfalls, destructive actions, or anything the reader must not overlook.

Breaking change

A warning with a label. Visually stronger than a note — reserved for genuinely critical information. Avoid overusing warnings or readers will start ignoring them.

Lists

Bullet List

The list block renders a classic bulleted list. Each item supports inline Markdown (bold, italic, code, links, strikethrough). Use this for unordered enumerations where sequence does not matter.

  • First item in the list
  • Second item — a bit longer to show line wrapping behaviour inside the bullet
  • Third item
  • Fourth item with bold and italic — inline Markdown works inside list items
  • Fifth item — last in the set

Item List (Grid)

The item-list block renders items in a two-column grid with a small accent dot. Both the label and each item support inline Markdown. Use it for dense, scannable sets of facts, features, or attributes where each item is short.

Key features

  • Two-column grid layout
  • Accent dot per item
  • Optional label above
  • Best for short entries
  • Handles odd counts gracefully
  • Great for feature lists
  • Works well for specs
  • Clean visual rhythm

Numbered Steps

The steps block renders a numbered sequence with large, accent-coloured numerals. Both the label and each step support inline Markdown. Use it when order matters — installation instructions, workflows, recipes, or any sequential process.

How to add a new ebook

  1. Create a new folder under 'ebooks/your-ebook-id/'.
  2. Add 'ebook.ts' exporting your 'Ebook' object and 'theme.ts' exporting your 'EbookTheme'.
  3. Register the entry in 'ebooks/index.ts' inside 'ebookRegistry'.
  4. Open '/preview/your-ebook-id' in the browser to see the result.
  5. Run 'npm run export:pdf your-ebook-id' to export a PDF.

Visual Content Blocks

Highlight

The highlight block is a large pull-quote styled element — typically used for key takeaways, statistics, or short phrases that should stand out from the surrounding body text.

A single, compelling sentence that summarises the most important idea on this page.

Highlights work best with 10–30 words. Longer content loses the visual impact that makes this block effective.

Quote

The quote block renders a left-bordered, italicised block quote. Use it for attributable quotes from authors, researchers, or personas.

Any sufficiently advanced technology is indistinguishable from magic. — Arthur C. Clarke

First, solve the problem. Then, write the code. — John Johnson

Image with Caption

The image-with-caption block renders a full-width image with an optional italic caption below. The block is treated as an atomic unit — it will never be split across pages.

A landscape photograph used as content illustration
Caption text appears below the image in a muted, italic style. It is optional.

Code & Table

Code Block

The code block renders a monospaced, pre-formatted block with a subtle background. Use it for multi-line code samples, configuration files, or shell commands.

// Minimal ebook definition
import type { Ebook } from "@/ebook-engine/types/ebook";

export const myEbook: Ebook = {
  id: "my-ebook",
  title: "My First Ebook",
  author: "Your Name",
  cover: {
    layout: "centered",
    background: { variant: "wave-cover" },
    textColor: "#ffffff",
  },
  sections: [
    {
      id: "intro",
      title: "Introduction",
      blocks: [
        { type: "heading", level: 1, content: "Hello, World!" },
        { type: "rich-paragraph", content: "Your content goes here." },
      ],
    },
  ],
};

Table

The table block renders structured tabular data with a styled header row, zebra-striped rows, and an optional caption. All values are plain strings.

Block typeCategoryMarkdown supportNotes
rich-paragraphContentYes (full)Main body text
headingStructureInlineLevels 1–3
highlightContentYes (full)Pull-quote style
quoteContentYes (full)Left-bordered blockquote
noteCalloutYes (full)Optional label (inline)
warningCalloutYes (full)Optional label (inline)
action-boxContentYes (full)Optional label (inline)
listStructureInlineBulleted list
item-listStructureInline2-col grid with dots
stepsStructureInlineNumbered sequence
image-with-captionMediaInlineCaption only
codeStructureNoMonospaced pre
tableStructureInlineHeaders and cells
dividerUtility—Horizontal rule
page-breakUtility—Forces a new page
All block types available in the ebook engine, grouped by category.

Action Box & Utility Blocks

Action Box

The action-box block is a dark, centered message card used to highlight an action or suggestion — such as a next step, a share prompt, or a key takeaway. It supports an optional label above the main message.

Start building your first ebook today.

Next step

Copy the components-reference ebook as your starting template and replace the content.

Share this

If this reference helped you, share it with someone who is building content tools.

Divider

The divider block renders a subtle horizontal rule. Use it to visually separate unrelated groups of blocks within the same section.


Content below the divider continues in the same section but signals a thematic break to the reader.


Page Break

The page-break block forces the pagination engine to start a new page at that exact point, regardless of how much space remains. The content below continues on the next page.

This paragraph is on the current page. The next paragraph will appear on a new page because a page-break follows.