Writing Docs
How to author LVGL documentation in MDX — formatting rules, sidebar ordering, and the full component catalog.
LVGL documentation is authored in MDX (Markdown + JSX). Pages live under docs/src/ and the directory structure drives the URL. This page is the full reference for authors; the top-level docs/README.md is the quick start.
Page Basics
Every page is a .mdx file with YAML frontmatter:
---
title: Animations
description: Animate widget properties over time with the LVGL animation engine.
---
# Animations
Animations change a property's value over a period of time...
<LvglExample name="lv_example_anim_1" path="anim/lv_example_anim_1" />title— appears in the sidebar, the browser tab, and as the page's default heading.description— short summary used in cards, search results, and social previews.
Formatting
-
Headings use standard Markdown (
#,##,###). -
Emphasis is
*italic*/**bold**. Markdown tables and GFM (task lists, strikethrough) are enabled. -
Unicode is supported directly — type
°,→,µ, etc. -
Internal links are plain relative Markdown links, e.g.
[Flex](../layouts/flex). -
API references use the
<ApiLink>component instead of raw Markdown links. -
Images go under
docs/src/_static/images/and are referenced via<Figure src="/_static/images/..." />. -
Code blocks are triple-backtick fenced with a language tag:
mdx ```c lv_obj_t * btn = lv_button_create(lv_screen_active()); ```
Sidebar Ordering with meta.json
Each directory may contain a meta.json file that sets the sidebar title and the order of its pages. Without it, pages are listed alphabetically.
{
"title": "Getting Started",
"pages": [
"introduction",
"quick-overview",
"platforms",
"micropython"
]
}title— the label shown for the directory in the sidebar.pages— file/folder names (no extension) in the order they should appear. Any page not listed is appended after the listed ones.
Components You Can Use in MDX
These components are registered globally by the docs site — you do not import them in .mdx, just use the JSX tag.
Structure / layout
| Component | Purpose |
|---|---|
<Card>, <Cards> | Grid of navigation cards. Used on index pages. |
<Step>, <Steps> | Numbered walkthroughs / tutorials. |
<Tab>, <Tabs> | Tabbed content (e.g. platform-specific instructions). |
<Callout type="info|warn|error" title="..."> | Admonitions / notes / warnings. |
<Collapsible title="...">...</Collapsible> | Disclosure block for long optional content. |
<DirectoryIndex /> | Auto-generated list of child pages for the current directory. |
<IndexCards items={[{ title, href, description }]} /> | Card grid generated from a data array. |
<ConceptCard>, <ConceptCards> | Cards for conceptual overview sections. |
<SmartCard> | Richer link card with icon + description. |
<Figure src="..." alt="..." caption="..." border={false} /> | Image with caption and sizing. |
<Kbd>, <KbdGroup> | Keyboard-key styling (e.g. <Kbd>Ctrl</Kbd>+<Kbd>K</Kbd>). |
<CustomIcon name="..." /> | Renders an LVGL-specific icon from the shared icon set. |
LVGL examples
| Component | Purpose |
|---|---|
<LvglExample name="..." path="..." /> | Embeds a runnable example: live simulator (when available), the .c source, and a GitHub link. The primary way to showcase code. |
<LvglExampleBrief>...</LvglExampleBrief> | One-line summary placed above the detailed description of an example. |
API references
| Component | Purpose |
|---|---|
<ApiLink name="lv_label_create" display="lv_label_create(parent)" /> | In-line link to an API symbol (function, type, macro, enum). display is optional. |
<ApiLinkList items={["lv_label", "lv_obj_property_names"]} /> | Placed at the end of a page to link out to the full API pages for related headers. |
<ApiMember>, <ApiSummary>, <ApiTabs>, <ApiTab> | Render function/type members on generated API pages. Rarely hand-authored. |
<CallbackSignature> | Formats a callback function signature block. |
<TypeUsedBy> | Lists callers/users of a given type on API pages. |
<ModuleOverview>...</ModuleOverview> | Wraps the "Header / Functions / Types" summary table at the top of a module page. |
<FileIncludes> | Shows the list of headers / source files that contribute to a module. |
<RelatedHeaders> | Inline list of sibling headers on API pages. |
<SourceLink> | "View source on GitHub" link for the current page / symbol. |
Widgets & styles
| Component | Purpose |
|---|---|
<StyleProperty name="width" default="..." inherited="..." layout="yes/no" ext_draw="..."> | The standardized "style property" info box used across widget style docs. |
<FAQSection> | Renders Q&A blocks on FAQ pages. |
Icons
Only a limited set of icons is available for inline use. Use any of the following as a JSX tag — anything outside this list will not render:
FileCodeCodeCloudTerminalPaletteDownloadKeyboardLayoutInfoFileTextBookOpenSparklesBoxBlocksEyeHashZapMonitorImageCpuServerLinkTestTubeGlobeFigma
How is this guide?
Last updated on