Content
Works with both .md and .mdx.
- GitHub Flavoured Markdown, admonitions (note / tip / warning boxes), step-by-step lists, and colour-highlighted code blocks
[[wikilinks]], including[[Page|label]]and[[Page#Heading]]. Use these to link pages without getting relative paths right- Relative
.mdlinks resolve to working links automatically - Mermaid and D2 diagrams, both rendered live in the browser straight from a
```mermaidor```d2code fence - Sibling images inlined as hashed assets with click-to-zoom, sibling PDFs open in the browser's own viewer
- Frontmatter keys are validated
Code blocks
Shiki highlights code fences at build time, in the theme's own colours.
Settings go on the code fence line, after the language:
```ts title="server.ts" lineNumbers
const port = 4040;
```| On the code fence | Effect |
|---|---|
title="server.ts" | Filename bar above the block |
lineNumbers | Numbers down the side. lineNumbers=5 starts the count at 5 |
noCopy | No copy button on this one block |
Comments mark individual lines and never reach the page. The block below uses all five:
const marked = 1;
const added = 2;
const removed = 3;
const focused = 4;
const found = 'needle'; | In the code | Effect |
|---|---|
[!code highlight] | Marks the line |
[!code ++], [!code --] | Diff lines: green with a +, red with a - |
[!code focus] | Blurs every other line until the pointer is over the block |
[!code word:needle] | Marks that word everywhere it appears in the block |
The marker follows the language's own comment syntax, so # [!code highlight] in Python and <!-- [!code highlight] --> in HTML.
The copy button is on by default. noCopy drops it from one block. 'content.code.copy': false drops it from every block on the site.
Components
An .mdx file can use these without importing anything:
| Component | What it is |
|---|---|
<Callout type="warn" title="…"> | The box :::note produces. type is info, warn, error, success or idea |
<Card>, <Cards> | The link cards the generated index page is built from |
<CodeBlockTabs> | One code block per tab: npm, pnpm, yarn, bun |
<Mermaid>, <D2> | What a ```mermaid or ```d2 code fence compiles to. You can also use it directly |
<Pdf> | The viewer a linked PDF opens in |
This set stays small on purpose. Markdown has no imports, so seemore ships every component to every site, whether a page uses it or not. Each one pairs with something Markdown already expresses. Any other component (fumadocs' <Tabs>, <Accordions> and <Files> among them) fails the build. The error names the file and the component. In a plain .md file a tag is HTML, not JSX: <Callout> renders as an unknown element with its text inside, rather than as the component. Components need the .mdx extension for that reason.
Code tabs need a defaultValue, or the block opens with no tab selected and nothing under it. Leave a blank line around each code fence:
<CodeBlockTabs defaultValue="npm">
<CodeBlockTabsList>
<CodeBlockTabsTrigger value="npm">npm</CodeBlockTabsTrigger>
<CodeBlockTabsTrigger value="pnpm">pnpm</CodeBlockTabsTrigger>
</CodeBlockTabsList>
<CodeBlockTab value="npm">
```bash
npm i seemore
```
</CodeBlockTab>
<CodeBlockTab value="pnpm">
```bash
pnpm add seemore
```
</CodeBlockTab>
</CodeBlockTabs>Steps
Numbered headings become a numbered sequence, with the rule and the marker drawn for you:
## 1. Install it
## 2. Point it at a folderPage addresses
| File | Address |
|---|---|
index.md | / |
README.md (root) | / |
getting-started.md | /getting-started |
guide/index.md | /guide |
guide/Deep Dive.md | /guide/deep-dive |
Both /guide and /guide/ work on every host. If nothing claims /, with no root index.md and no root README.md, seemore generates the home page for you: a card grid of every page in the site. In any one directory, index.md wins over README.md. seemore warns and names the file it ignored. Two different files that slugify to the same address cause a build error naming both.
Ordering
Pages are ordered by:
-
meta.jsonin the directory, an explicit list, with...standing in for anything you did not name:{ "pages": ["getting-started", "installation", "..."] } -
Frontmatter
order, lower numbers first:--- title: Getting Started order: 1 --- -
Alphabetical by title, for anything left unordered by the two above