- Essay
- #sample
- #notion
Block showcase
Sample post that exercises every block type the renderer supports. Safe to delete.
This is a sample paragraph with bold, italic, strikethrough, underline, inline code and a link to the home page. A second sentence keeps the line long enough to wrap on a phone.
Heading one
Text under the first heading.
Heading two
Text under the second heading.
Heading three
Text under the third heading.
- First bullet
- Second bullet
- Nested bullet
- Another nested bullet
- Third bullet
- First step
- Second step
- Third step
- Done item
- Open item
A quote block. Keep it short and let it carry the point.
A callout with an emoji icon and a link inside.
type Post = { slug: string; title: string };
export async function getPost(slug: string): Promise<Post | null> {
const res = await fetch(`/api/posts/${slug}`);
return res.ok ? res.json() : null;
}pnpm install && pnpm devToggle summary
Hidden content inside the toggle.
| Property | Type | Notes |
|---|---|---|
| Slug | text | Unique |
| Status | select | Draft or Published |
| Tags | multi-select | Optional |
Left column text.
Right column text.
Next.jsnextjs.org
The last paragraph, after the divider.
More blocks
Heading four
Text under the fourth heading.
Toggle heading two
Content hidden inside a toggle heading.
- It can hold lists
- And other blocks
- Parent step
- Nested bullet under a numbered item
- Another nested bullet
- Second parent step
- Nested numbered item
- Another nested numbered item
A quote with children.A second line inside the same quote.
A callout with children
A paragraph inside the callout.
- A bullet inside the callout
- Another bullet
Tables
| Block | Renders as | Notes |
|---|---|---|
| Image | figure | Notion-hosted only |
| Video | link | Third-party frames are blocked by the CSP |
| Code | highlighted block | Shiki, github-light |
| Name | Role | Location | Since | Stack | Notes |
|---|---|---|---|---|---|
| Wide table | Many columns | Forces horizontal scrolling | 2026 | TypeScript, React, Next.js | Scrolls inside its own wrapper on narrow screens |
| No header | Plain | Table |
|---|---|---|
| a | b | c |
Code
{ "name": "ttsalpha-site", "private": true, "scripts": { "dev": "next dev" } }.card {
display: grid;
gap: 16px;
color: #0d0d0d;
}select slug, title from posts where status = 'Published' order by published_at desc;def slugify(title: str) -> str:
return "-".join(title.lower().split())A plain text block with no highlighting.Media

Layout
Column one.
- Item a
- Item b
Column two.
A quote in a column.
Column three.
echo "code in a column"Above this line is an empty paragraph, and below is a divider.
The very last paragraph.