Content Blocks

Beyond plain Markdown, a few containers give in-page content its own structure: tabbed panels, side-by-side code comparisons, and a set-apart summary aside. Unlike the landing-page sections in Landing Pages, which render as boxed or full-width bands, these sit inline in the article column like the Markdown around them.

Everything Codocation adds that is not a container - code-block options, image options, footnotes, <ui> paths, list presentation - is in Markdown Extensions.

tabs

A set of tabbed panels. The outer :::tabs container holds one :::tab per panel, and needs at least one; a tab's body is its panel content.

:::tabs
:::tab {title="Windows"}
Run `install.bat` from an elevated prompt.
:::
:::tab {title="macOS"}
Run `./install.sh` from a terminal.
:::
:::

tabs takes no attributes.

tab:

AttributeRequiredDescription
titleyesThe tab's visible label.
keynoSyncs same-keyed tabs across the page.

A tab's key links it to every same-keyed tab in every other :::tabs group on the page: activating one activates them all, the choice persists across visits, and ?tabs=key1,key2 in the URL preselects it. A key must match [a-z0-9][a-z0-9-]*, and repeating one within the same :::tabs group is an error, same as a malformed one.

compare

Two fenced code blocks side by side. The body must be exactly two fences - nothing else, no other content, no other count.

:::compare
```java {title="Java"}
System.out.println("Hi");
```

```kotlin {title="Kotlin"}
println("Hi")
```
:::

Each pane's title comes from the fence's own title attribute, falling back to src, then the language, then nothing. compare:

AttributeRequiredDescription
layoutno"columns" (default) or "rows" to stack the panes.

tldr

A set-apart quick-summary aside. It renders identically no matter where it is written - placement never changes the output. Where within a section it sits is only advised, not enforced (see below); but a tldr must be a root container - never nested inside a tab, card, step, hero, cta, or compare - and SEM_008 reports that as a build-blocking error, not a warning.

## Deploying to production

:::tldr
Run `codocation build` then `codocation deploy prod`. Rollback with `--rollback`.
:::

The rest of this section walks through each flag in detail.

Where it sits within a section is about usefulness, not function: directly under its heading, a tldr gives the reader something to act on before they read the section; lower down, it is just a set-apart aside rather than a summary. Two warnings point at this - SEM_034 when a tldr is not the first content in its section, SEM_035 when a second tldr appears in the same section - and both are warnings, not build-blocking errors. A section with two tldr containers renders both; the first is the one that answers "what is this section about".

tldr takes no attributes.