# Everything a Page Can Hold

A tour of every component you can put in a Nimbalyst Wiki page, with an example of each: callouts, columns, tabs, Mermaid diagrams, charts, 2x2s, decision blocks, decision and question marks, embedded drawings, mind maps, mockups and HTML pages, live views of your types, code excerpts, link cards, and buttons.

A wiki page is markdown, so anything you or your agent writes as plain text works everywhere. On top of that, a page can hold components: diagrams, charts, 2x2s, decisions, drawings, mockups, and live tables of your data. Each one is a short block of text in the page's markdown, which is how your agent writes them and how they stay readable in git.

This page shows each component with an example and the markdown behind it. You rarely type these yourself: ask your agent for "a 2x2 of our competitors" or "a chart of recovered payments by week," or type `/` in the app to insert one.

### Where each component works

You can read a page in the Nimbalyst app, in the team wiki at console.nimbalyst.com, or, for a local wiki, in your browser with `nim wiki serve`.

| Component | App | Team wiki in the browser | Local wiki in the browser |
| --- | --- | --- | --- |
| Callouts, columns, tabs, table of contents | Yes | Yes | Yes |
| Mermaid diagrams, charts, 2x2s, code excerpts | Yes | Yes | Yes |
| Decision blocks, decision and question marks, mentions | Yes | Yes | Yes |
| Embedded drawings, mind maps, mockups, and other editor pages | Yes | Preview not available yet | Yes |
| Embedded interactive HTML pages | Yes | Yes | Yes |
| Live views of a type, decisions and open questions lists | Yes | Yes | Shows a note |
| Link preview cards | Yes | Yes | Yes |
| Buttons that start a session or create a page | Yes | Shown, not clickable | Shown, not clickable |
| Transclusion of another page | Yes | Shows a link | Shows a link |

---

## Text and structure

### Callouts

A callout holds the one thing a reader must not miss. The type is `NOTE`, `TIP`, `IMPORTANT`, `WARNING`, or `CAUTION`.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-callout.png" alt="A yellow warning callout titled Never retry a hard decline, under the heading Before you change the retry schedule"><figcaption><p>A warning callout.</p></figcaption></figure>

```markdown
> [!WARNING] Never retry a hard decline
> Codes 04, 07 and 41 mean the card is lost or stolen. Retrying them counts against our network score.
```

### Columns

Columns put two short, related things side by side, like before and after, or a picture and its legend. Pages are read on phones too, so keep columns for pairs.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-columns.png" alt="Two side-by-side columns comparing retry timing before and after smart retries"><figcaption><p>Before and after, side by side.</p></figcaption></figure>

```markdown
<div data-columns="1fr 1fr">
<div data-column>

**Before**

- Retry at 1, 3 and 7 days
- 31% of soft declines recovered

</div>
<div data-column>

**After**

- Retry after the customer's usual payday
- 44% of soft declines recovered

</div>
</div>
```

### Tabs

Tabs hold alternatives where a reader picks one, such as a platform or a plan.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-tabs.png" alt="A tab strip with macOS, Windows and Linux, with the macOS install command showing"><figcaption><p>One tab per platform.</p></figcaption></figure>

```markdown
<div data-tabs>
<details data-tab>
<summary>macOS</summary>

Install with Homebrew: `brew install northwind/tap/retry-sim`

</details>
<details data-tab>
<summary>Windows</summary>

Install with winget: `winget install Northwind.RetrySim`

</details>
</div>
```

### Table of contents

A table of contents lists the headings of a long page. `depth` sets how many heading levels it shows. Most pages are short enough not to need one.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-toc.png" alt="A table of contents at the top of a page listing its four sections"><figcaption><p>A table of contents for a four-section page.</p></figcaption></figure>

````markdown
```toc
depth: 2
```
````

---

## Diagrams, charts, and 2x2s

### Mermaid diagrams

A Mermaid block draws a flowchart, sequence, or state diagram from text. Use it for a flow that reads top to bottom.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-mermaid.png" alt="A Mermaid sequence diagram of a charge going from client to API, back as a soft decline, then through the retry worker"><figcaption><p>A sequence diagram of a retried charge.</p></figcaption></figure>

````markdown
```mermaid
sequenceDiagram
  Client->>API: POST /charges
  API-->>Client: 402 soft decline
  API->>Retry worker: enqueue charge
  Retry worker->>API: retry after payday
  API-->>Client: webhook charge.succeeded
```
````

### Charts

A chart block draws a bar, line, area, pie, or scatter chart from a few rows of data. Cite where the numbers came from next to it. To chart the pages of a type so the chart stays current, place a [live view](#live-views-of-your-types) in chart mode instead.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-chart.png" alt="A line chart of payments recovered per week, with smart retries climbing above the flat fixed schedule"><figcaption><p>Recovered payments per week, fixed schedule against smart retries.</p></figcaption></figure>

````markdown
```chart
type: line
title: Payments recovered per week
x: week
y: [fixed, smart]
data: |
  week,fixed,smart
  Aug 31,212,208
  Sep 7,219,251
  Sep 14,224,288
  Sep 21,217,312
  Sep 28,221,334
  Oct 5,226,349
```
````

### 2x2s

A 2x2 places a handful of named things on two axes, with a name for each quadrant. Values run from 0 to 1, and a trailing `!` highlights a point.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-2x2.png" alt="A 2x2 positioning chart of Paylane, Ledgerly, Tillpoint and Cartwell, with Northwind highlighted in the Our target quadrant"><figcaption><p>Competitors placed by retry approach and market, with Northwind highlighted.</p></figcaption></figure>

````markdown
```2x2
x: Fixed schedule -> Smart retries
y: SMB -> Enterprise
quadrants: Legacy enterprise | Our target | Simple tools | Self-serve smart
- Paylane: 0.25, 0.8
- Ledgerly: 0.7, 0.35
- Tillpoint: 0.15, 0.2
- Cartwell: 0.45, 0.6
- Northwind: 0.85, 0.75 !
```
````

When the points are pages of one type with two number fields, place a [live 2x2 view](#live-views-of-your-types) instead, so it moves when the pages change.

---

## Decisions and questions

### Decision and open question marks

Mark the sentence where a decision lives, with who decided, when, and what it was chosen over. Mark an open question with its owner. Both show as badges, and lists of them across the wiki show what is settled and what still needs someone. See [Decisions, Questions, Links, and Views](https://nimbalyst.com/docs/wiki/decisions-questions-links-and-views/).

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-page-marks.png" alt="A page with a DECIDED badge on 'Retries are capped at five attempts by default', attributed to Karl Wirth on Sep 24 over retrying until the card expires, and an OPEN question below it"><figcaption><p>A decision with who, when, and what it was chosen over, and an open question with its owner.</p></figcaption></figure>

```markdown
[Retries are capped at five attempts by default.]{decided by="Karl Wirth" email=karl@example.com on=2026-09-24 over="retrying until the card expires"}

[Should merchants be able to raise the cap to ten?]{open by="Dana Okafor" email=dana@example.com}
```

### Decision blocks

A decision block puts a question to named people, who answer it in the page. It can ask them to pick one option, pick several, rank, edit a draft, confirm, or rate. The page records each answer, who gave it, and when. Once it is settled, the outcome becomes a decision mark in the page it affects. See [Decision Blocks in Documents](https://nimbalyst.com/docs/team-collaboration/decisions/).

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-decision-block.png" alt="A decision block asking whether the retry worker should run on weekends, with three options and 0 of 2 answered"><figcaption><p>A question put to two people, waiting for their answers.</p></figcaption></figure>

````markdown
```decision
ask: Should the retry worker run on weekends?
type: singleSelect
asked: dana, karl
options:
  - id: always
    label: Always retry on weekends
  - id: consumer
    label: Consumer cards only
  - id: never
    label: Never retry on weekends
```
````

### Mentions and dates

Mention a teammate with `[@Dana Okafor](mailto:dana@example.com)` and write a date as `@2026-10-01`. In a team wiki, a mention reaches that person's inbox.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-marks.png" alt="A DECIDED sentence attributed to Dana Okafor, a mention of Priya, a date chip, and an OPEN question owned by Karl Wirth"><figcaption><p>A decision, a mention, a date, and an open question in one paragraph.</p></figcaption></figure>

```markdown
The schedule review with [@Priya](mailto:priya@northwind.example) is on @2026-10-21.
```

---

## Drawings, mockups, and other editor pages

Any editor page in the wiki shows live inside another page when you link to it on its own line: Excalidraw drawings, mind maps, mockups, spreadsheets, data models, canvases, and interactive HTML pages. Each one opens in its own editor when you click it. See [Pages, Types, and Fields](https://nimbalyst.com/docs/wiki/pages-types-and-fields/#rich-pages).

```markdown
[Retry architecture](Retry%20architecture.excalidraw "width=900 height=420")
```

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-embedded-drawing.png" alt="An Excalidraw drawing of the retry architecture embedded in a page: Checkout, Payments API, Retry queue, Retry worker and Card network"><figcaption><p>An Excalidraw drawing embedded in a page, editable in place.</p></figcaption></figure>

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-page-mockup.png" alt="A Hosted checkout page with a decision, an editable checkout mockup embedded in the page, and an open question below it"><figcaption><p>A checkout mockup embedded in the page it belongs to.</p></figcaption></figure>

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-browser-mindmap.png" alt="The local wiki in a web browser with Open questions and risks.mindmap open in the mind map editor: a central Payment retries node branching to Risks, Open questions and Not built yet"><figcaption><p>A mind map of risks and open questions.</p></figcaption></figure>

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-browser-html.png" alt="An Architecture map HTML page open in the local wiki browser view, with boxes for merchants, checkout, payment intents, payment retries, the event log, Adyen and the card networks, each linking to a wiki page"><figcaption><p>An interactive HTML page whose boxes open other wiki pages.</p></figcaption></figure>

---

## Live views of your types

A live view places a table of one [type](https://nimbalyst.com/docs/wiki/pages-types-and-fields/#types-typed-databases-inside-your-wiki) in any page, and stays current as its pages change. It can show as a table, board, list, timeline, 2x2, or chart, with its own columns, sort, filter, and grouping. In the app, type `/` and pick **Table**, **Board**, or **2x2** for a type.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-typed-table.png" alt="A live Competitors table with Title, Threat, Segment and Overlap columns for Tillpoint, Paylane, Ledgerly and Cartwell"><figcaption><p>A live table of the Competitors type, placed in a page.</p></figcaption></figure>

The settings live in the link, so everyone sees the same view:

```markdown
[Competitors](.../view/type/competitor "cols=title,threat,segment sort=threat:desc")

[Landscape](.../view/type/competitor "mode=2x2 x=setupSpeed y=recovery")

[Revenue by tier](.../view/type/customer "mode=chart by=tier sum=arr chart=pie")
```

A **Decisions list** or **Open questions list** gathers every marked sentence across the wiki into one place, which is what makes a Home page useful. See [Place live views](https://nimbalyst.com/docs/wiki/decisions-questions-links-and-views/#place-live-views).

---

## Sources and references

### Code excerpts

An excerpt quotes exact lines from a file in your repository, with the path, lines, and commit, so a reader sees the code a decision rests on.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-excerpt.png" alt="A code excerpt from services/retry-worker/src/schedule.ts, lines 18 to 22, pinned to a commit"><figcaption><p>Five lines of the retry worker, pinned to a commit.</p></figcaption></figure>

````markdown
```excerpt
path: services/retry-worker/src/schedule.ts
lines: 18-22
commit: 4e1c9a2
---
const HARD_DECLINES = new Set(['04', '07', '41', '43']);

if (HARD_DECLINES.has(charge.declineCode)) {
  return { action: 'fail', reason: 'hard_decline' };
}
```
````

### Link preview cards

A web link on its own line with `preview=card` shows a card with the page's title and site. `preview=embed` plays a video or design file in the page for sites that allow it.

<figure><img loading="lazy" decoding="async" src="https://nimbalyst.com/docs/assets/wiki-component-link-card.png" alt="A link preview card for Visa merchant retry rules showing usa.visa.com"><figcaption><p>A link card for a source.</p></figcaption></figure>

```markdown
[Visa merchant retry rules](https://usa.visa.com/support/small-business/regulations-fees.html "preview=card")
```

### Transclusion

A link to a team page with the title `transclude` shows that page's body, or one section of it, inside this page. Use it sparingly, for a short section that must read the same in two places.

```markdown
[Retry policy](.../page/retry-policy#the-policy "transclude")
```

---

## Buttons

Two buttons work in the desktop app. An **action** button starts an agent session with a prompt you wrote. A **new item** button creates a page of a type, optionally from a template. Put them on pages people start work from, such as a team Home page or a type's page.

````markdown
```new-item
label: New competitor
type: competitor
```
````

````markdown
```action
label: Refresh the competitor table
prompt: Check each competitor's pricing page and update their fields.
```
````

### What not to put in a page

Math (`$x$`), `<details>` collapsibles, and `board-table` blocks stay as plain text in a wiki page. Use tabs for content a reader should be able to fold away, and a live board view for a board of items.
