Settings
Main settings interface for the application
Properties
themeTheme
Theme configuration for the applicationname"poetry" | "cosmo" | "opener" | "picasso" | "gusto" | "solar" | "terrarium" | stringRequired
A theme name.logo
Path to logo image or object with path to "light" and "dark" mode logo images, and where the logo links to.LogoLogo
Logo configuration interfacelightstring
Path to the logo in light mode. For example:
/path/to/logo.svgdarkstring
Path to the logo in dark mode. For example:
/path/to/logo.svgaltstring
Alternative text for the logo image. The logo is the only content of the link to the home page, so this doubles as that link's accessible name. Defaults to
seo.metatags["og:site_name"], then to"Home".hrefstring
External href to when clicking on the logopagestring
The page to link to when clicking on the logo
stringstring
React.JSX.ElementReact.JSX.Element
fontsThemeFont
Font configuration for the theme.FontFont
familystring
The font family to use.weightstring
The font weight to use.srcstring
The font src to use.format"woff2" | "woff" | "ttf"
The font format to use.
Font[]Font[]
faviconstring
Path to the favicon image. For example: /path/to/favicon.svgiconsIcons
The iconify library setup.library
The iconify libraryIconLibraryIconLibrary
namestringRequired
The iconify library nameversionstring
The iconify library versiondefaultboolean
The default iconify icon namenoprefixboolean
Merge icons from the library into the default iconify library
stringstring
IconLibrary[]IconLibrary[]
appearanceAppearance
Appearance configuration for the theme.colorScheme"light" | "dark" | "os"
The default color scheme to use.colorSchemeButton
If
falsethen the color scheme button will not be displayed.colorsColors
Colors configuration for the theme.primarystringRequired
The primary color of the theme.lightstring
The light color of the theme.darkstring
The dark color of the theme.
cssTokens
CSS tokens for the theme.presetsstring[]
Presets for the theme.logoAppearanceLogo
Logo appearance for the theme.sidebarboolean | "mobile" | "desktop"
If
truethen the logo will be displayed on the sidebar.headerboolean | "mobile" | "desktop"
If
truethen the logo will be displayed on the header.
searchAppearanceSearch
Search appearance for the theme.fullWidthboolean
If
truethen the search bar will be displayed as a full width.sidebarboolean | "mobile" | "desktop"
If
truethen the search bar will be displayed on the sidebar.middleboolean | "mobile" | "desktop"
If
truethen the search bar will be displayed in the middle of the header.rightboolean | "mobile" | "desktop"
If
truethen the search bar will be displayed on the right side of the header.
headerAppearanceHeader
Header appearance for the theme.externalArrowboolean
If
truethen the header external links will display an external arrow.separator"right"
If
rightthen separator will be displayed on the right side of the header.type"classic" | "pad"
The type of the header.buttonSize"sm" | "md" | "lg"
The button size of the header.
tabsAppearanceTabs
Tabs appearance for the theme.surface"center" | "sidebar"
The tabs to display in the header.
sidebarAppearanceSidebar
Sidebar appearance for the theme.externalArrowboolean
If
truethen the sidebar will display a scroll shadow.scrollShadowboolean
If
truethen the sidebar will display a scroll shadow.scrollbar"secondary"
The color of the sidebar scrollbar.scrollbarColorstring
The color of the sidebar scrollbar.scrollTransition"smooth" | "instant"
The transition behaviour of the sidebar scroll when navigating to a new page.groupCase"none" | "uppercase"
Letter-casing of sidebar group headers. Defaults to
"uppercase"; set"none"to render group labels exactly as authored.scroll"sidebar" | "list"
Which element scrolls.
"list"(default): only the item list scrolls, below the fixed (pinned) region."sidebar": the WHOLE sidebar scrolls — the scrollbar spans its full height — and the fixed region sticks to the top while items scroll beneath it.
buttonsAppearanceButtons
Buttons appearance for the theme.roundedboolean | "sm" | "md" | "lg"
tablesAppearanceTables
Table appearance for the theme.kind"secondary"
The kind of the table.
bannerAppearanceBanner
Banner appearance for the theme.fixedboolean
If
truethen the banner will have fixed position (always visible).
contentAppearanceContent
Content appearance for the theme.contentDecorator"secondary"
Content decorator for the theme.breadcrumbs
Controls the breadcrumbs.
true/falsetoggles them; an object ( AppearanceBreadcrumbs ) additionally configureslinksandrootLevel(both defaulttrue).AppearanceBreadcrumbsAppearanceBreadcrumbs
Fine-grained breadcrumbs options (the object form of AppearanceContent.breadcrumbs ).linksboolean
If
true(default) breadcrumb items that resolve to a real route render as clickable links; iffalseevery crumb is plain text.rootLevelboolean
If
true(default) the top-level segment (the tab/route the page belongs to, e.g. "Guides") is included; iffalseit is omitted.
booleanboolean
sectionSeparatorboolean
If
truethen the section separator will be displayed.
footerAppearanceFooter
Footer appearance for the theme.surface"page"
The footer surface.
navigationDropdownAppearanceNavigationDropdown
Navigation dropdown appearance (header anchors & tabs
dropdownMenu).chevron"rotate" | "static"
Trigger chevron behavior when the menu is open.
"rotate"(default) flips the chevron;"static"leaves it unchanged.items"padded" | "flush"
Menu item layout.
"flush"makes the hovered item background touch all four edges of the popover (no surrounding padding);"padded"(default) keeps a small inset with rounded item corners.
writerWriter
Writer configuration for the theme.maxTocDepthnumber
The maximum number of table of conten§ts levels.copyPageboolean
Copy page button
coderCoder
Coder configuration for the theme, including options like syntax highlighting.linesboolean
If
truethen code blocks will have line numbers by default.scrollboolean
If
truethen code blocks will have a scrollbar by default.syntaxHighlightTheme
Syntax highlighting configuration.
headarray of HeadConfig [string, Record<string, string | boolean>, ]
Configuration type for head elements that can be added to the HTML head. Format: [tagName, attributes, content] @example: ['script', { src: 'https://example.com/script.js', defer: true }]scriptsstring[]
Custom scripts to be added to the head of the every page. Paths are relative to the root of the project or absolute.
navigationNavigation
Navigation configurationsidebararray of SidebarNavigation
Sidebar navigation typeSidebarRouteSidebarRoute
Sidebar route configurationroutestringRequired
Route for this sidebargroupstring
The group of the routeidstring
The id of the routepagesRequired
Sidebar pages within this route or sub routes
SidebarSidebar
Sidebar configurationgroupstring
The name of the grouppagestring
Makes the group itself a real page (the "Group Page" feature). When set, the group resolves to this route — so it becomes a clickable breadcrumb automatically. (Clickable group headers in the sidebar are still Coming Soon.)titlestring
Label for a `{ page, title }` entry — a page reference with no `group` and no `pages` . It overrides the page's frontmatter title, and is the only way to label a route that has no markdown behind it, such as a generated API reference: without it the sidebar row renders blank.pagesarray of PageURL
Page URL typeSourcePageSourcePage
A page whose URL differs from its markdown file path. Sugar for the VirtualPage object form — normalized at boot ( `{ page, source }` → `{ virtual: source, page }` ), so the whole engine only ever sees the virtual shape. Use it when several files should share a URL scheme, e.g. per-framework variants: ```json { "page": "docs/angular/logs", "source": "docs/logs.angular" } { "page": "docs/bun/logs", "source": "docs/logs.bun" } ```pagestringRequired
The URL the page serves at.sourcestringRequired
The markdown file path, extension-less — like a string page entry ( `docs/logs.angular` → `docs/logs.angular.md` / `.mdx` ).titlestring
Optional sidebar label override.contextControlsContextControls
Page context controls for THIS page (replaces the global set).
SidebarSidebar
Sidebar configurationgroupstring
The name of the grouppagestring
Makes the group itself a real page (the "Group Page" feature). When set, the group resolves to this route — so it becomes a clickable breadcrumb automatically. (Clickable group headers in the sidebar are still Coming Soon.)titlestring
Label for a `{ page, title }` entry — a page reference with no `group` and no `pages` . It overrides the page's frontmatter title, and is the only way to label a route that has no markdown behind it, such as a generated API reference: without it the sidebar row renders blank.pagesarray of PageURL
The relative paths to the markdown files that will serve as pages. Note: groups are recursive, so to add a sub-folder add another group object in the page array.iconstring
The icon of the group.expandedboolean
Open this group on load, even when the reader is on a page outside it. Sets the INITIAL state only — it is a default, not a lock: the group still opens by itself when it holds the active page, and a reader who collapses it keeps it collapsed for as long as they stay on the page (like the rest of the sidebar's open state, it starts over on the next one). Only meaningful for a nested group — top-level groups are always open.orderOrder
The order of the group.asToc
Treat this group's pages as a table of contents instead of real pages. Their markdown files are NOT routable (no routes, no prerender) — the content of every page is injected as a section into the enclosing route's index page, sidebar items scroll to those sections (with scroll-spy active marking), and the right-hand TOC is hidden on that composed page. `true` enables it with defaults; the object form tunes behaviors (all default to enabled).SidebarAsTocOptionsSidebarAsTocOptions
Behavior options for an `asToc` sidebar group (the object form). Every option defaults to `true` — `asToc: true` ≡ `asToc: {}` .indicatorboolean
TOC-style visual indicator on the group's sidebar items (the vertical track line the right-hand TOC uses). Default `true` .breadcrumbsboolean
Breadcrumbs on the composed host page that follow the section being read (group name / section title, updated by scroll). Default `true` .
booleanboolean
ComponentPageComponentPage
A custom React component rendered AS a sidebar item. `component` is a path (relative to the docs project, e.g. `"./components/TryNewVersion"` ) to a module whose DEFAULT export is a function component. It renders inside the framework context, so it may use `@xyd-js/framework/react` hooks; `props` are passed to it. `fixed: true` pins it in the sidebar's fixed region (above the scrollable list).fixedboolean
Pin this item in the sidebar's fixed region (stays visible on scroll).componentRequired
A path to a default-export React component (relative to the docs project), or an object with that path under `import` plus `props` for the component.ComponentPageImportComponentPageImport
Object form of `ComponentPage.component` : an import path plus optional props.importstringRequired
Path to a default-export React component, relative to the docs project.propsRecord<string, any>
Props passed to the component.
stringstring
stringstring
VirtualPageVirtualPage
iconstring
The icon of the group.expandedboolean
Open this group on load, even when the reader is on a page outside it. Sets the INITIAL state only — it is a default, not a lock: the group still opens by itself when it holds the active page, and a reader who collapses it keeps it collapsed for as long as they stay on the page (like the rest of the sidebar's open state, it starts over on the next one). Only meaningful for a nested group — top-level groups are always open.orderOrder
The order of the group.asToc
Treat this group's pages as a table of contents instead of real pages. Their markdown files are NOT routable (no routes, no prerender) — the content of every page is injected as a section into the enclosing route's index page, sidebar items scroll to those sections (with scroll-spy active marking), and the right-hand TOC is hidden on that composed page. `true` enables it with defaults; the object form tunes behaviors (all default to enabled).SidebarAsTocOptionsSidebarAsTocOptions
Behavior options for an `asToc` sidebar group (the object form). Every option defaults to `true` — `asToc: true` ≡ `asToc: {}` .indicatorboolean
TOC-style visual indicator on the group's sidebar items (the vertical track line the right-hand TOC uses). Default `true` .breadcrumbsboolean
Breadcrumbs on the composed host page that follow the section being read (group name / section title, updated by scroll). Default `true` .
booleanboolean
stringstring
tabsarray of Tabs NavigationItem
Tabs configurationtitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
sidebarDropdownarray of SidebarDropdown NavigationItem
Sidebar dropdown navigation - navigation through dropdown in the sidebar.titlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
segmentsarray of Segment
Segment configurationroutestring
Route this segment is scoped to. When a **string**, the segment only shows under that route prefix (route-scoped). When **omitted or `false` **, the segment is GLOBAL — always visible (e.g. a top-level product switcher). The globalness comes from the absence of a route, NOT from the `appearance` .titlestring
Title of this segmentappearance
Appearance of this segment — a SegmentAppearance string, or the object form SegmentAppearanceConfig carrying kind-specific options (e.g. `{ kind: "sidebarDropdown", options: { fixed: true } }` ).SegmentAppearanceSegmentAppearance "sidebarDropdown" | "logoTrailing" | "tabs"
How a matched Segment is presented. - `"sidebarDropdown"` — a click dropdown at the top of the sidebar. - `"logoTrailing"` — a hover product-switcher rendered right after the logo (wherever the active theme places its logo — header or sidebar). The trigger shows the active page's title (falling back to the segment `title` ), and the menu is the segment `pages` with a check on the active one. - `"tabs"` — a horizontal tab bar in the sub-navigation, scoped to the segment's `route` . Each `page` is a section: its `page` (a route prefix) decides which tab is active, and its `href` is the landing page the tab links to. Use one route-scoped `tabs` segment per product to get per-product tab bars (e.g. Documentation / API / CLI).SegmentAppearanceConfigSegmentAppearanceSidebarDropdown
`appearance: { kind: "sidebarDropdown", options }`kind"sidebarDropdown"Required
options
fixedboolean
Render the section switcher in the sidebar's FIXED (pinned) region — it stays visible while the item list scrolls. Defaults to `false` (rendered at the top of the scrollable list).
trigger"hover" | "click"
How a `logoTrailing` segment's dropdown opens. Defaults to `"hover"` .iconOnlyboolean
`logoTrailing` only: render the trigger ICON-ONLY — show the active item's icon at a larger size and hide the trigger title label. Use when the icon is a full wordmark image (logo + product name) so a text label is redundant. Defaults to `false` .component
`logoTrailing` only: a custom component rendered AS this segment's dropdown PANEL (e.g. a rich multi-column product mega-menu), instead of the default `pages` list. A path to a default-export React component (relative to the docs project), or `{ import, props }` . Resolved through the same user-components registry as sidebar `ComponentPage` components, so it may use `@xyd-js/framework/react` hooks; the framework also passes it the active item, the segment, and the resolved `items` .ComponentPageImportComponentPageImport
Object form of `ComponentPage.component` : an import path plus optional props.importstringRequired
Path to a default-export React component, relative to the docs project.propsRecord<string, any>
Props passed to the component.
stringstring
pagesarray of NavigationItemRequired
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
anchorsAnchors
Anchors navigation - fixed navigation, for anchor-like elements.headerarray of AnchorHeader
Header anchorsNavigationItemNavigationItem
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
NavigationItemButtonNavigationItem
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
NavigationItemSocialNavigationItem
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
sidebar
Sidebar anchorstoparray of NavigationItem
bottomarray of NavigationItem
languagesarray of LanguageNavigation
Per-locale navigation block. Same shape as `Navigation` plus locale fields.languagestringRequired
ISO 639-1 code for this locale. Used in URLs ( `/{language}/...` ).namestring
Native display name shown in the locale switcher ( `Polski` , not `Polish` ).defaultboolean
Marks this entry as the default locale (URLs unprefixed). Ignored when `i18n.defaultLocale` is set explicitly. If neither is set, the first entry wins.dir"ltr" | "rtl"
Text direction. Sets `<html dir>` on pages of this locale. Defaults to `"ltr"` .overridesPartial<Settings>
Per-locale overrides for top-level `Settings` keys (e.g. `components.footer` , `theme.head` , `seo` ). Shallow-merged on top of root settings when serving this locale. If you override `components.footer` , the whole footer config is replaced for this locale.sidebararray of SidebarNavigation
Sidebar navigation typeSidebarRouteSidebarRoute
Sidebar route configurationroutestringRequired
Route for this sidebargroupstring
The group of the routeidstring
The id of the routepagesRequired
Sidebar pages within this route or sub routes
SidebarSidebar
Sidebar configurationgroupstring
The name of the grouppagestring
Makes the group itself a real page (the "Group Page" feature). When set, the group resolves to this route — so it becomes a clickable breadcrumb automatically. (Clickable group headers in the sidebar are still Coming Soon.)titlestring
Label for a `{ page, title }` entry — a page reference with no `group` and no `pages` . It overrides the page's frontmatter title, and is the only way to label a route that has no markdown behind it, such as a generated API reference: without it the sidebar row renders blank.pagesarray of PageURL
Page URL typeSourcePageSourcePage
A page whose URL differs from its markdown file path. Sugar for the VirtualPage object form — normalized at boot ( `{ page, source }` → `{ virtual: source, page }` ), so the whole engine only ever sees the virtual shape. Use it when several files should share a URL scheme, e.g. per-framework variants: ```json { "page": "docs/angular/logs", "source": "docs/logs.angular" } { "page": "docs/bun/logs", "source": "docs/logs.bun" } ```pagestringRequired
The URL the page serves at.sourcestringRequired
The markdown file path, extension-less — like a string page entry ( `docs/logs.angular` → `docs/logs.angular.md` / `.mdx` ).titlestring
Optional sidebar label override.contextControlsContextControls
Page context controls for THIS page (replaces the global set).
SidebarSidebar
Sidebar configurationgroupstring
The name of the grouppagestring
Makes the group itself a real page (the "Group Page" feature). When set, the group resolves to this route — so it becomes a clickable breadcrumb automatically. (Clickable group headers in the sidebar are still Coming Soon.)titlestring
Label for a `{ page, title }` entry — a page reference with no `group` and no `pages` . It overrides the page's frontmatter title, and is the only way to label a route that has no markdown behind it, such as a generated API reference: without it the sidebar row renders blank.pagesarray of PageURL
The relative paths to the markdown files that will serve as pages. Note: groups are recursive, so to add a sub-folder add another group object in the page array.iconstring
The icon of the group.expandedboolean
Open this group on load, even when the reader is on a page outside it. Sets the INITIAL state only — it is a default, not a lock: the group still opens by itself when it holds the active page, and a reader who collapses it keeps it collapsed for as long as they stay on the page (like the rest of the sidebar's open state, it starts over on the next one). Only meaningful for a nested group — top-level groups are always open.orderOrder
The order of the group.asToc
Treat this group's pages as a table of contents instead of real pages. Their markdown files are NOT routable (no routes, no prerender) — the content of every page is injected as a section into the enclosing route's index page, sidebar items scroll to those sections (with scroll-spy active marking), and the right-hand TOC is hidden on that composed page. `true` enables it with defaults; the object form tunes behaviors (all default to enabled).SidebarAsTocOptionsSidebarAsTocOptions
Behavior options for an `asToc` sidebar group (the object form). Every option defaults to `true` — `asToc: true` ≡ `asToc: {}` .indicatorboolean
TOC-style visual indicator on the group's sidebar items (the vertical track line the right-hand TOC uses). Default `true` .breadcrumbsboolean
Breadcrumbs on the composed host page that follow the section being read (group name / section title, updated by scroll). Default `true` .
booleanboolean
ComponentPageComponentPage
A custom React component rendered AS a sidebar item. `component` is a path (relative to the docs project, e.g. `"./components/TryNewVersion"` ) to a module whose DEFAULT export is a function component. It renders inside the framework context, so it may use `@xyd-js/framework/react` hooks; `props` are passed to it. `fixed: true` pins it in the sidebar's fixed region (above the scrollable list).fixedboolean
Pin this item in the sidebar's fixed region (stays visible on scroll).componentRequired
A path to a default-export React component (relative to the docs project), or an object with that path under `import` plus `props` for the component.ComponentPageImportComponentPageImport
Object form of `ComponentPage.component` : an import path plus optional props.importstringRequired
Path to a default-export React component, relative to the docs project.propsRecord<string, any>
Props passed to the component.
stringstring
stringstring
VirtualPageVirtualPage
iconstring
The icon of the group.expandedboolean
Open this group on load, even when the reader is on a page outside it. Sets the INITIAL state only — it is a default, not a lock: the group still opens by itself when it holds the active page, and a reader who collapses it keeps it collapsed for as long as they stay on the page (like the rest of the sidebar's open state, it starts over on the next one). Only meaningful for a nested group — top-level groups are always open.orderOrder
The order of the group.asToc
Treat this group's pages as a table of contents instead of real pages. Their markdown files are NOT routable (no routes, no prerender) — the content of every page is injected as a section into the enclosing route's index page, sidebar items scroll to those sections (with scroll-spy active marking), and the right-hand TOC is hidden on that composed page. `true` enables it with defaults; the object form tunes behaviors (all default to enabled).SidebarAsTocOptionsSidebarAsTocOptions
Behavior options for an `asToc` sidebar group (the object form). Every option defaults to `true` — `asToc: true` ≡ `asToc: {}` .indicatorboolean
TOC-style visual indicator on the group's sidebar items (the vertical track line the right-hand TOC uses). Default `true` .breadcrumbsboolean
Breadcrumbs on the composed host page that follow the section being read (group name / section title, updated by scroll). Default `true` .
booleanboolean
stringstring
tabsarray of Tabs NavigationItem
Tabs configurationtitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
sidebarDropdownarray of SidebarDropdown NavigationItem
Sidebar dropdown for this locale.titlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
segmentsarray of Segment
Segment configurationroutestring
Route this segment is scoped to. When a **string**, the segment only shows under that route prefix (route-scoped). When **omitted or `false` **, the segment is GLOBAL — always visible (e.g. a top-level product switcher). The globalness comes from the absence of a route, NOT from the `appearance` .titlestring
Title of this segmentappearance
Appearance of this segment — a SegmentAppearance string, or the object form SegmentAppearanceConfig carrying kind-specific options (e.g. `{ kind: "sidebarDropdown", options: { fixed: true } }` ).SegmentAppearanceSegmentAppearance "sidebarDropdown" | "logoTrailing" | "tabs"
How a matched Segment is presented. - `"sidebarDropdown"` — a click dropdown at the top of the sidebar. - `"logoTrailing"` — a hover product-switcher rendered right after the logo (wherever the active theme places its logo — header or sidebar). The trigger shows the active page's title (falling back to the segment `title` ), and the menu is the segment `pages` with a check on the active one. - `"tabs"` — a horizontal tab bar in the sub-navigation, scoped to the segment's `route` . Each `page` is a section: its `page` (a route prefix) decides which tab is active, and its `href` is the landing page the tab links to. Use one route-scoped `tabs` segment per product to get per-product tab bars (e.g. Documentation / API / CLI).SegmentAppearanceConfigSegmentAppearanceSidebarDropdown
`appearance: { kind: "sidebarDropdown", options }`kind"sidebarDropdown"Required
options
fixedboolean
Render the section switcher in the sidebar's FIXED (pinned) region — it stays visible while the item list scrolls. Defaults to `false` (rendered at the top of the scrollable list).
trigger"hover" | "click"
How a `logoTrailing` segment's dropdown opens. Defaults to `"hover"` .iconOnlyboolean
`logoTrailing` only: render the trigger ICON-ONLY — show the active item's icon at a larger size and hide the trigger title label. Use when the icon is a full wordmark image (logo + product name) so a text label is redundant. Defaults to `false` .component
`logoTrailing` only: a custom component rendered AS this segment's dropdown PANEL (e.g. a rich multi-column product mega-menu), instead of the default `pages` list. A path to a default-export React component (relative to the docs project), or `{ import, props }` . Resolved through the same user-components registry as sidebar `ComponentPage` components, so it may use `@xyd-js/framework/react` hooks; the framework also passes it the active item, the segment, and the resolved `items` .ComponentPageImportComponentPageImport
Object form of `ComponentPage.component` : an import path plus optional props.importstringRequired
Path to a default-export React component, relative to the docs project.propsRecord<string, any>
Props passed to the component.
stringstring
pagesarray of NavigationItemRequired
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
anchorsAnchors
Anchors for this locale.headerarray of AnchorHeader
Header anchorsNavigationItemNavigationItem
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
NavigationItemButtonNavigationItem
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
NavigationItemSocialNavigationItem
Core interface for navigation itemstitlestring
The navigation item titledescriptionstring
The navigation item descriptionpagestring
The navigation page, if set it redirects to the page + matches based on routinghrefstring
The navigation href, if set it redirects but does not match based on routingiconReact.ReactNode
The navigation item iconcolorstring
Accent color (any CSS color) for this item. Used by `logoTrailing` product switchers and accent-aware themes (e.g. `terrarium` ) to recolor the UI per product — the active item's `color` is applied as `--theme-color-primary` .dropdownMenu
Nested navigation rendered as a dropdown menu under this item. Recursive — a child may itself declare `dropdownMenu` to create submenus (e.g. `api → [Browser SDK, REST API, GraphQL]` ). Supported on header anchors and tabs. Accepts a plain item array, or the object form DropdownMenu carrying menu-level options (e.g. `{ itemsPerColumn: 7, items: [...] }` ).DropdownMenuDropdownMenu
Object form of NavigationItem.dropdownMenu : the menu items plus menu-level options.itemsarray of NavigationItemRequired
The menu items.itemsPerColumnnumber
Maximum items rendered in ONE COLUMN — overflowing items wrap into additional columns (e.g. `7` renders a 12-item menu as two columns of 7 + 5). Omit for a single column.
NavigationItem[]NavigationItem[]
float"center" | "right"
Render this item on the RIGHT of the header rather than with its siblings, before the search box — for a tab that is a reference you look things up in rather than a stop in the reading order (e.g. an API reference). Honored only by the `tabs` appearance, and there only for `"right"` — the union matches WebEditorHeader , which intersects this type and already carries both values. The item keeps everything a centered tab has, including `dropdownMenu` and route-prefix active highlighting.pagesarray of NavigationItem
Nested navigation items — recursive. Honored ONLY by sidebar-dropdown surfaces ( `navigation.sidebarDropdown` and `appearance: "sidebarDropdown"` segments): an entry with `pages` (typically without `page` / `href` ) renders as an inline-expandable GROUP row inside the dropdown popover — clicking it expands its children (indented) within the same popover. `title` , `icon` , and `description` apply to the group row. Other appearances (tabs, logoTrailing) ignore nesting.trigger"hover" | "click"
How the `dropdownMenu` opens. Defaults to `"hover"` .
sidebar
Sidebar anchorstoparray of NavigationItem
bottomarray of NavigationItem
apiAPI
API Docs configurationopenapiAPIFile
API file configuration. Can be a path, an array of paths, a map of paths, or an advanced configurationAPIFileMap
API file map typeAPIFileAdvancedAPIFileAdvanced
API file advanced typesourcestringRequired
Source configurationroutestring
Route configurationinfoAPIInfo
API information configurationbaseUrlstring
The base url for all API endpoints. If baseUrl is an array, it will enable for multiple base url options that the user can toggle.authAPIAuth
Authentication informationmethod"bearer" | "basic" | "key"Required
The authentication strategy used for all API endpoints
namestring
The name of the authentication parameter used in the API playground. If method is basic, the format should be [usernameName]:[passwordName]inputPrefixstring
The default value that's designed to be a prefisx for the authentication input field. E.g. If an inputPrefix of AuthKey would inherit the default input result of the authentication field as AuthKey.requestAPIInfoRequest
Request configurationexample
Configurations for the auto-generated API request exampleslanguagesstring[]
An array of strings that determine the order of the languages of the auto-generated request examples. You can either define custom languages utilizing x-codeSamples or use our default languages which include bash, python, javascript, php, go, java
optionsAPIFileOptions
Preset-specific rendering options (e.g. CLI).globalOptionsPerCommandboolean
(CLI) Render the CLI's global options on every command page. When `false` (the default), the global options are rendered once as a dedicated "Global options" page in the sidebar instead of repeated on each command.
sdk"go" | "python" | "typescript" | "ruby" | "java" | "csharp" | boolean
SDK-native reference docs (OpenAPI sources only). Generates per-language SDK types, method signatures, and usage samples at BUILD time via the OpenSDK toolchain, with the raw-HTTP (cURL) view kept as a first-class entry in the page-wide language switcher. `true` enables all languages; the object form restricts them. Ignored for graphql/cli/mcp sources.
stringstring
string[]string[]
graphqlAPIFile
API file configuration. Can be a path, an array of paths, a map of paths, or an advanced configurationAPIFileMap
API file map typeAPIFileAdvancedAPIFileAdvanced
API file advanced typesourcestringRequired
Source configurationroutestring
Route configurationinfoAPIInfo
API information configurationbaseUrlstring
The base url for all API endpoints. If baseUrl is an array, it will enable for multiple base url options that the user can toggle.authAPIAuth
Authentication informationmethod"bearer" | "basic" | "key"Required
The authentication strategy used for all API endpoints
namestring
The name of the authentication parameter used in the API playground. If method is basic, the format should be [usernameName]:[passwordName]inputPrefixstring
The default value that's designed to be a prefisx for the authentication input field. E.g. If an inputPrefix of AuthKey would inherit the default input result of the authentication field as AuthKey.requestAPIInfoRequest
Request configurationexample
Configurations for the auto-generated API request exampleslanguagesstring[]
An array of strings that determine the order of the languages of the auto-generated request examples. You can either define custom languages utilizing x-codeSamples or use our default languages which include bash, python, javascript, php, go, java
optionsAPIFileOptions
Preset-specific rendering options (e.g. CLI).globalOptionsPerCommandboolean
(CLI) Render the CLI's global options on every command page. When `false` (the default), the global options are rendered once as a dedicated "Global options" page in the sidebar instead of repeated on each command.
sdk"go" | "python" | "typescript" | "ruby" | "java" | "csharp" | boolean
SDK-native reference docs (OpenAPI sources only). Generates per-language SDK types, method signatures, and usage samples at BUILD time via the OpenSDK toolchain, with the raw-HTTP (cURL) view kept as a first-class entry in the page-wide language switcher. `true` enables all languages; the object form restricts them. Ignored for graphql/cli/mcp sources.
stringstring
string[]string[]
sourcesAPIFile
API file configuration. Can be a path, an array of paths, a map of paths, or an advanced configurationAPIFileMap
API file map typeAPIFileAdvancedAPIFileAdvanced
API file advanced typesourcestringRequired
Source configurationroutestring
Route configurationinfoAPIInfo
API information configurationbaseUrlstring
The base url for all API endpoints. If baseUrl is an array, it will enable for multiple base url options that the user can toggle.authAPIAuth
Authentication informationmethod"bearer" | "basic" | "key"Required
The authentication strategy used for all API endpoints
namestring
The name of the authentication parameter used in the API playground. If method is basic, the format should be [usernameName]:[passwordName]inputPrefixstring
The default value that's designed to be a prefisx for the authentication input field. E.g. If an inputPrefix of AuthKey would inherit the default input result of the authentication field as AuthKey.requestAPIInfoRequest
Request configurationexample
Configurations for the auto-generated API request exampleslanguagesstring[]
An array of strings that determine the order of the languages of the auto-generated request examples. You can either define custom languages utilizing x-codeSamples or use our default languages which include bash, python, javascript, php, go, java
optionsAPIFileOptions
Preset-specific rendering options (e.g. CLI).globalOptionsPerCommandboolean
(CLI) Render the CLI's global options on every command page. When `false` (the default), the global options are rendered once as a dedicated "Global options" page in the sidebar instead of repeated on each command.
sdk"go" | "python" | "typescript" | "ruby" | "java" | "csharp" | boolean
SDK-native reference docs (OpenAPI sources only). Generates per-language SDK types, method signatures, and usage samples at BUILD time via the OpenSDK toolchain, with the raw-HTTP (cURL) view kept as a first-class entry in the page-wide language switcher. `true` enables all languages; the object form restricts them. Ignored for graphql/cli/mcp sources.
stringstring
string[]string[]
mcpMCPAPIFile
MCP API file configuration. URL shorthand, advanced, or named map.MCPAPIFileAdvancedMCPAPIFileAdvanced
sourcestringRequired
MCP server URL (http/https/sse).routestring
Sidebar route prefix to nest the generated pages under.infoMCPAPIInfo
Per-source options.namestring
Display name for the server in the docs.tokenstring
Bearer token sent as `Authorization: Bearer <token>` . Supports `$ENV_VAR` substitution via the standard settings env replacement.headersRecord<string, string>
Additional request headers (e.g. cookies, custom API keys).
stringstring
MCPAPIFileAdvanced[]MCPAPIFileAdvanced[]
$$union
cliAPIFile
API file configuration. Can be a path, an array of paths, a map of paths, or an advanced configurationAPIFileMap
API file map typeAPIFileAdvancedAPIFileAdvanced
API file advanced typesourcestringRequired
Source configurationroutestring
Route configurationinfoAPIInfo
API information configurationbaseUrlstring
The base url for all API endpoints. If baseUrl is an array, it will enable for multiple base url options that the user can toggle.authAPIAuth
Authentication informationmethod"bearer" | "basic" | "key"Required
The authentication strategy used for all API endpoints
namestring
The name of the authentication parameter used in the API playground. If method is basic, the format should be [usernameName]:[passwordName]inputPrefixstring
The default value that's designed to be a prefisx for the authentication input field. E.g. If an inputPrefix of AuthKey would inherit the default input result of the authentication field as AuthKey.requestAPIInfoRequest
Request configurationexample
Configurations for the auto-generated API request exampleslanguagesstring[]
An array of strings that determine the order of the languages of the auto-generated request examples. You can either define custom languages utilizing x-codeSamples or use our default languages which include bash, python, javascript, php, go, java
optionsAPIFileOptions
Preset-specific rendering options (e.g. CLI).globalOptionsPerCommandboolean
(CLI) Render the CLI's global options on every command page. When `false` (the default), the global options are rendered once as a dedicated "Global options" page in the sidebar instead of repeated on each command.
sdk"go" | "python" | "typescript" | "ruby" | "java" | "csharp" | boolean
SDK-native reference docs (OpenAPI sources only). Generates per-language SDK types, method signatures, and usage samples at BUILD time via the OpenSDK toolchain, with the raw-HTTP (cURL) view kept as a first-class entry in the page-wide language switcher. `true` enables all languages; the object form restricts them. Ignored for graphql/cli/mcp sources.
stringstring
string[]string[]
integrationsIntegrations
Integrations configurationanalyticsIntegrationAnalytics
Configurations to add third-party analytics integrations. See full list of supported analytics here.livesessionIntegrationAnalyticsLiveSession
LiveSession analytics configurationtrackIdstringRequired
LiveSession's TrackID
supportIntegrationSupport
Configurations to add third-party support integrations.chatwootIntegrationSupportChatwoot
Chatwoot support configurationwebsiteTokenstringRequired
Chatwoot website tokenbaseURLstring
Chatwoot base URLchatwootSettingsJSON
Chatwoot settings
intercomIntegrationSupportIntercom
Intercom support configurationappIdstringRequired
Intercom app IDapiBasestring
Intercom API base
livechatIntegrationSupportLivechat
Livechat support configurationlicenseIdstringRequired
Livechat license ID
searchIntegrationSearch
Configurations to add third-party search integrations. See full list of supported search here.algolia
Algolia search configurationappIdstringRequired
Algolia application IDapiKeystringRequired
Algolia API key
oramaboolean
abtestingIntegrationABTesting
A/B testing configurationcontextMaxAgenumber
Context max age in millisecondscontextStorageKeystring
Context storage key used to store the context in the browser storageprovidersIntegrationABTestingProviders
Providers configurationgrowthbookIntegrationABTestingGrowthBook
GrowthBook configurationapiHoststringRequired
GrowthBook API hostclientKeystringRequired
GrowthBook client key
launchdarklyIntegrationABTestingLaunchDarkly
LaunchDarkly configurationenvstringRequired
LaunchDarkly environment key
diagrams
Diagrams configurationDiagramsConfigDiagramsConfig
Diagrams configuration objectmermaid"img-png" | "img-svg" | "inline-svg" | "pre-mermaid" | boolean
Mermaid diagram configuration
true: Enable with default settings: Enable with custom settingsgraphviz
Graphviz diagram configuration
true: Enable with default settings: Enable with custom settings.config
Detailed diagram config, useful for e.g setting diagram's interactive.interactiveboolean
booleanboolean
DiagramType[]DiagramType[]
editLinkEditLink
Edit link configurationbaseUrlstringRequired
The base URL for the edit linktitlestring
The title for the edit linkiconstring
The icon for the edit link
.appsAppsDirectory
Custom apps directory.githubStarIntegrationAppGithubStar
Github star app configuration.titlestringRequired
The title of the Github buttonlabelstring
The label of the Github ButtonhrefstringRequired
The href of the Github projectdataShowCountboolean
The data-show-count of the Github projectdataIconstring
The data-icon of the Github buttondataSizestring
The data-size of the Github buttonariaLabelstring
The aria-label of the Github button
supademoIntegrationAppSupademo
Supademo app configuration.apiKeystringRequired
The Supademo API key
pluginsarray of Plugins
Plugin configurationPluginConfig[PluginName, PluginArgs[]]
stringstring
seoSEO
SEO configurationdomainstring
Domain namemetatags
Meta tags
aiAI
AI configurationllmsTxt
LLMs txt configurationLLMsTxtLLMsTxt
LLMs txt configurationtitlestringRequired
Title of the LLMs txtbaseUrlstringRequired
Base URL of the LLMs txtsummarystring
Description of the LLMs txtsections
Sections of the LLMs txt
stringstring
advancedAdvanced
Advanced configurationbasenamestring
Mount the site under a URL prefix, e.g.
"/docs"or"/docs".Every route, raw file (
llms.txt, the.mdtwins) and asset URL carries the prefix, andxyd buildwrites the whole site under.xyd/build/client/<basename>/— a self-contained tree to serve at that path. The Vitebasedefaults to<basename>/; setadvanced.vite.baseto serve the assets from somewhere else.
viteUserConfig
Custom Vite configuration overrides. Merged with xyd's internal Vite config.
componentsComponents
Components configurationbannerWebEditorBanner
WebEditor banner configurationcontentComponentLikeRequired
A type that can be used to represent a component-like structure.JSONComponentJSONComponent
JSON representation of a component.componentstringRequired
The component type, e.g. "Button", "Card", etc.propsRecord<string, any>
The component's children, which can be a string, an array of strings, or an array of JSONComponent objects.
React.JSX.ElementReact.JSX.Element
stringstring
labelstring
Banner label.kind"secondary"
Banner kind.hrefstring
Banner href.iconstring
Banner icon.
contextControlsContextControls
Global page context controls — contextual page actions (copy page, view markdown, ChatGPT/Claude, MCP), a content-version switcher, dropdown grouping, or custom components — rendered on every page at their
appearanceslot (header|toc-top|toc-bottom). A page can override or opt out via frontmattercontextControls:or its sidebar entry ().footerWebEditorFooter
WebEditor footer configurationkind"minimal"
logo
ComponentLikeComponentLike
A type that can be used to represent a component-like structure.JSONComponentJSONComponent
JSON representation of a component.componentstringRequired
The component type, e.g. "Button", "Card", etc.propsRecord<string, any>
The component's children, which can be a string, an array of strings, or an array of JSONComponent objects.
React.JSX.ElementReact.JSX.Element
stringstring
booleanboolean
social
Footer socialsxstring
facebookstring
youtubestring
discordstring
slackstring
githubstring
linkedinstring
instagramstring
hackernewsstring
mediumstring
telegramstring
blueskystring
redditstring
linksWebEditorFooterLinks
Footer linksfootnoteComponentLike
A type that can be used to represent a component-like structure.JSONComponentJSONComponent
JSON representation of a component.componentstringRequired
The component type, e.g. "Button", "Card", etc.propsRecord<string, any>
The component's children, which can be a string, an array of strings, or an array of JSONComponent objects.
React.JSX.ElementReact.JSX.Element
stringstring
filterSidebar
Built-in "filter sidebar" input that narrows the sidebar tree to matching items. It renders in the sidebar's fixed (pinned) region.
trueuses the default placeholder; pass a FilterSidebar object to customize the placeholder and scope it to specific routes.FilterSidebarFilterSidebar
Configuration for the built-in sidebar filter input (
components.filterSidebar).placeholderstring
Placeholder text for the filter input. Defaults to
"Filter sidebar".routesstring[]
Render the filter ONLY on pages whose route is under one of these prefixes (e.g.
["terraform/language"]). A page matches when its slug starts with a listed prefix. Omit (or leave empty) to show the filter on every page.
booleanboolean
engineEngine
Engine configuration - advanced engine-like configurationpaths
Path aliases for imports. Avoid long relative paths by creating shortcuts.uniformEngineUniform
Uniform configurationstoreboolean
If
truethen virtual pages will not created and generated content will be stored on disk
accessControlAccessControl
Access control configuration. Enables page-level access control on documentation sites. Protected page content is never included in HTML source -- it is code-split into separate JS chunks loaded only after authentication.providerRequired
Authentication provider configurationAccessControlProviderOAuthAccessControlProviderOAuth
type"oauth"Required
authorizationUrlstringRequired
OAuth 2.0 authorization URLtokenUrlstringRequired
OAuth 2.0 token endpoint URLclientIdstringRequired
OAuth 2.0 client ID. Use $ENV_VAR syntax for secrets.scopesstring[]
OAuth 2.0 scopes to requestcallbackPathstring
Callback path for OAuth redirect.userInfoUrlstring
URL to fetch user info after auth (provides groups)groupsClaimstring
Field in user info response containing groups/roles
AccessControlProviderJWTAccessControlProviderJWT
type"jwt"Required
loginUrlstringRequired
URL to redirect unauthenticated users for logincallbackPathstring
Callback path where JWT is delivered via hash fragment.algorithm"EdDSA" | "RS256" | "HS256"
JWT signing algorithm.jwksUrlstring
JWKS URL for key verification (EdDSA/RS256)secretstring
Shared secret for HS256 verification. Use $ENV_VAR syntax.groupsClaimstring
JWT claim name containing user groups/roles
AccessControlProviderCustomAccessControlProviderCustom
type"custom"Required
handlerstringRequired
Path to custom auth handler module
defaultAccess"public" | "protected"
Default access level for all pages. "protected" = all pages require auth unless marked public. "public" = all pages are public unless marked protected.rulesarray of AccessControlRule
Pattern-based access rules, evaluated in order. First match wins.matchstringRequired
Glob pattern matching page pathsaccess"public" | "protected"Required
Access level for matched pagesgroupsstring[]
Groups allowed access (only for "protected" access)
login
Login page configuration.
- String: path to a custom component (e.g., "./my-login.tsx"). The component receives useAccessControl() context automatically.
- Object: configuration for the built-in login page.
AccessControlLoginConfigAccessControlLoginConfig
pagestring
Custom login page (path to mdx file)logostring
Logo to display on the default login pagetitlestring
Title text on the login pagedescriptionstring
Description text on the login pagebackgroundImagestring
Background image URL for the login page
stringstring
unauthorizedBehavior"redirect" | "404"
Behavior when user is unauthorized. "redirect" sends to login page. "404" shows not-found page (hides existence of protected page).deployAccessControlDeployConfig
Deployment platform for server-side content protectionplatform"netlify-edge" | "vercel-edge" | "cloudflare-edge" | "node-edge"Required
Target deployment platform
sessionAccessControlSessionConfig
Session/token configurationmaxAgenumber
Session duration in seconds.cookieNamestring
Cookie/storage key name.
i18nI18nConfig
Internationalization (i18n) configuration.
The required source of truth for i18n is
navigation.languages[]. Thisi18nblock is OPTIONAL and carries only site-wide flags (explicitdefaultLocaleoverride, browser detection, translation catalogs).If
navigation.languages[]is absent, this block has no effect.defaultLocalestring
Explicit default locale. Overrides any
default: trueshorthand onnavigation.languages[]entries when set. Must match alanguagedeclared innavigation.languages[].detectLanguageboolean
When
true, redirect/based onnavigator.language/xyd-localecookie. Default
false.catalogsRecord<string, string | TranslationCatalog>
Translation catalogs for
"i18n: <key>"references in component config. Either a path to a JSON file, or an inline catalog object, keyed by locale code. If omitted, the framework auto-discoversi18n/.jsonfiles at the project root.
Show your support! Star us on GitHub ⭐️