Code Blocks
Code blocks render syntax-highlighted snippets with a copy button and an optional title. In Markdown they're written as standard fenced code blocks — Scalar reads extra options from the info string after the language name. In MDX, the same fenced syntax works directly.
Properties
Properties are passed through the info string on the opening fence. The first space-separated token (before any name="value" pair) is the title.
| Prop | Type | Default | Description |
|---|---|---|---|
lang |
string |
required | The language identifier directly after the opening fence (e.g. js, python). |
title |
string |
— | A filename or label shown in the code block header. The first bare token after lang is treated as the title. |
lineNumbers |
boolean |
false |
Show line numbers. Also accepted as line-numbers or lines. |
lineNumberStart |
number |
1 |
First line number when lineNumbers is enabled. |
highlight |
string |
— | Comma-separated line numbers or ranges to highlight (e.g. 1,3-5). |
focus |
string |
— | Lines to focus while dimming the rest. |
added |
string |
— | Lines marked as added (diff-style green). |
removed |
string |
— | Lines marked as removed (diff-style red). |
Examples
Basic Code Block
function greet(name) {
return `Hello, ${name}!`
}
```javascript
function greet(name) {
return `Hello, ${name}!`
}
```
With a Title
function greet(name) {
return `Hello, ${name}!`
}
```javascript greet.js
function greet(name) {
return `Hello, ${name}!`
}
```
Line Numbers and Highlighting
function greet(name: string): string {
const greeting = `Hello, ${name}!`
return greeting
}
```typescript example.ts lineNumbers highlight="2-3"
function greet(name: string): string {
const greeting = `Hello, ${name}!`
return greeting
}
```
Diff Style (Added and Removed Lines)
{
"version": "1.0.0",
"version": "2.0.0",
"name": "scalar"
}
```diff config.json added="3" removed="2"
{
"version": "1.0.0",
"version": "2.0.0",
"name": "scalar"
}
```