Code
Mastering codes in your MDX files
opendocs
uses the rehype-pretty-code
library
to handle the codes in MDX files. This allows you to greatly customize the way codes are displayed!
For more information, see the official documentation and examples!
Titles
Example:
import { App } from './App';
Code:
```js title="apps/web/src/index.tsx"
import { App } from './App';
```
Code highlighting
Example:
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
Code:
```js
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
```
Inline code highlighting
Example:
The result of [1, 2, 3].join('-')
is '1-2-3'
.
Code:
The result of `[1, 2, 3].join('-'){:js}` is `'1-2-3'{:js}`.
Context-aware inline code highlighting
For example, if you had the following block of code:
function getStringLength(str) {
return str.length;
}
When we refer to getStringLength
as a function,
we can color it as such. Same with function
, or
str
vs. str
, etc. This allows
semantically link inline code to the nearest block of code it refers to.
Code:
When we refer to `getStringLength{:.entity.name.function}` as a function,
we can color it as such. Same with `function{:.keyword}`, or
`str{:.variable.parameter}` vs. `str{:.variable.other.object}`, etc. This allows
semantically link inline code to the nearest block of code it refers to.
Word highlighting
Example:
relative w-full pl-12 rounded-lg border
Code:
```css /pl-12/ /border/
relative w-full pl-12 rounded-lg border
```
Line highlighting
Example:
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
Code:
```js {2-4,6}
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
```
Line numbering
Example:
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
Code:
```js showLineNumbers
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
```
Diff
Example:
const alertVariants = cva(
- "relative w-full rounded-lg border",
+ "relative w-full pl-12 rounded-lg border"
)
Code:
```diff
const alertVariants = cva(
- "relative w-full rounded-lg border",
+ "relative w-full pl-12 rounded-lg border"
)
```
ANSI Highlight
Example:
vite v5.0.0 dev server running at:
> Local: http://localhost:3000/
> Network: use `--host` to expose
ready in 125ms.
8:38:02 PM [vite] hmr update /src/App.jsx
Inline ANSI: > Local: http://localhost:3000/
Code:
```ansi
[0;36m vite v5.0.0[0;32m dev server running at:[0m
> Local: [0;36mhttp://localhost:[0;36;1m3000[0;36m/[0m
> Network: [0;2muse `--host` to expose[0m
[0;36mready in 125ms.[0m
[0;2m8:38:02 PM[0m [0;36;1m[vite][0m [0;32mhmr update [0;2m/src/App.jsx
```
Inline ANSI: `> Local: [0;36mhttp://localhost:[0;36;1m3000[0;36m/[0m{:ansi}`
Word group highlighting by id
Put an id after #
after the words.
This allows you to color characters differently based on the given id.
Example:
const [age, setAge] = useState(50);
const [name, setName] = useState("Taylor");
Code:
```js /age/#v /name/#v /setAge/#s /setName/#s /50/#i /"Taylor"/#i
const [age, setAge] = useState(50);
const [name, setName] = useState("Taylor");
```
To change or add new styles:
[data-chars-id='v'] {
@apply !text-pink-300 bg-rose-800/50 font-bold;
}