Lotus
Type to search documentation.

Getting Started

Sidebars

Configure docs sections, subnav items, sidebar groups, and generated entries.

sidebars defines the documentation information architecture. Each top-level sidebar becomes a docs subnav item, and its items define the sidebar shown for that section.

sidebars: [
{
slug: 'guide',
label: 'Guides',
icon: 'lucide:rocket',
items: [
'overview',
'installation',
{
label: 'Configuration',
items: [{ autogenerate: { directory: 'configuration' } }],
},
'deployment',
],
},
{
label: 'Components',
icon: 'lucide:blocks',
items: [{ autogenerate: { directory: 'components' } }],
},
]

Sections

Top-level sidebar objects support label, optional slug, optional icon, optional translations, and items.

{
slug: 'guide',
label: 'Guides',
translations: {
'zh-cn': '指南',
},
icon: 'lucide:rocket',
items: [],
}

slug is optional. If omitted, Lotus derives it from the label. Add a slug when the visible label and stable section id should differ.

String Items

String items reference content collection entry IDs. With the default docsLoader() base, those IDs are relative to src/content/docs.

items: ['overview', 'installation', 'deployment']

'installation' resolves to src/content/docs/installation.mdx in a monolingual site, or to the current locale’s installation.mdx in an i18n site. For this example site, root English content lives in src/content/docs/en/, but the sidebar still references it as installation.

Use link items for internal or external links that are not generated from docs content. Link items support icons and badges for status labels, API methods, or other compact metadata.

{
label: 'GitHub',
link: 'https://github.com/prosefly/astro-theme-lotus',
external: true,
icon: 'simple-icons:github',
}

Use a trailing badge for status labels such as beta or new.

{
label: 'Webhooks',
link: 'references/webhooks',
badge: {
label: 'Beta',
color: 'warning',
variant: 'soft',
},
}

Use a leading badge for API endpoints where the badge is part of the scanned label.

{
label: '/users',
link: 'api/users',
badge: {
label: 'GET',
position: 'leading',
color: 'success',
variant: 'soft',
},
}

String badges render as trailing neutral badges.

{
label: 'Search',
link: 'configuration/search',
badge: 'New',
}

Badges support position: 'leading' | 'trailing', variant: 'solid' | 'soft' | 'subtle' | 'outline', and color: 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger'.

Groups

Groups create nested sidebar sections. They can be collapsed by default.

{
label: 'Getting Started',
translations: {
'zh-cn': '入门',
},
items: [
'overview',
'installation',
{
label: 'Configuration',
collapsed: false,
items: [{ autogenerate: { directory: 'configuration' } }],
},
],
}

Localized Labels

Use translations for labels owned by theme.config.ts. This includes top-level sidebar labels, group labels, and link item labels.

sidebars: [
{
slug: 'guide',
label: 'Guides',
translations: {
'zh-cn': '指南',
},
items: [
{
label: 'Getting Started',
translations: {
'zh-cn': '入门',
},
items: ['overview', 'installation'],
},
{
label: 'GitHub',
link: 'https://github.com/prosefly/astro-theme-lotus',
external: true,
translations: {
'zh-cn': 'GitHub',
},
},
],
},
]

String items and autogenerated entries use the localized page’s frontmatter instead. For example, overview displays the Chinese page title when src/content/docs/zh-cn/overview.mdx exists.

Autogenerated Directories

Use autogenerate to include entries from a directory.

{ autogenerate: { directory: 'components' } }

The directory value follows the same locale-neutral rule. In this example site, components matches src/content/docs/en/components for root English pages and src/content/docs/zh-cn/components for Simplified Chinese pages.

Autogenerated entries are sorted by sidebar.order frontmatter, then by title.

By default, Lotus renders autogenerated entries as a flat list and includes all descendants under the directory. Add options when a directory needs tighter control.

{
autogenerate: {
directory: 'guides',
structure: 'tree',
depth: 2,
exclude: ['drafts/**', '**/internal-*'],
},
}
OptionDefaultDescription
directoryrequiredLocale-neutral docs directory to read from.
structure'flat'Use 'tree' to preserve nested folders as collapsible sidebar groups.
depthall descendantsMaximum depth to include relative to directory. For directory: '', the default is direct children only.
excludenoneGlob pattern or array of patterns matched against both the full slug and the slug relative to directory. Supports * and **.

Page Ownership

Lotus determines a page’s active docs section from sidebars. A page belongs to the first top-level sidebar that lists it directly or includes it through an autogenerated directory.

Last updated Jul 18, 2026

Contributors